1import{a as vt,b as xn,c as bn,d as vn,e as On,f as Pn,g as Ut,i as Yo,j as Xo}from"./chunk-LAFOH3P7.js";import{a as tr,b as nr,c as ir,d as or,e as rr,f as ar,h as yn}from"./chunk-PQFJ5ZAC.js";import{a as Ft,b as Mn,c as Wo,d as jt,e as zo,f as Ko,g as $o,h as jo,i as ei,j as ti,k as Qo,l as ni}from"./chunk-TFFQ5IL6.js";import{a as Vt}from"./chunk-PS7NFN72.js";import{a as Sn,b as wn,c as En,d as Ot,e as ii}from"./chunk-TTIYW36H.js";import{a as In}from"./chunk-EHAXWE3Z.js";import{d as fn,e as bt,g as qo,h as hn}from"./chunk-L3RGPDB2.js";import{a as Ho}from"./chunk-QXCBD2DY.js";import{a as de}from"./chunk-U4TFZA7F.js";import{a as Fo}from"./chunk-EPXBMACY.js";import{a as er}from"./chunk-5JMOGNTC.js";import{a as mt}from"./chunk-L4NCQXFK.js";import"./chunk-CVA527VR.js";import{a as un}from"./chunk-WTBWGDTK.js";import{c as Zo}from"./chunk-QHNGZZ54.js";import{a as Uo}from"./chunk-WYGQQUM7.js";import{a as Jo}from"./chunk-U7LV4IQY.js";import"./chunk-HI2DZW2Z.js";import{b as Go}from"./chunk-Y6HITWH2.js";import{a as Cn}from"./chunk-FQ3V5WJE.js";import{a as Vo}from"./chunk-PEBFQNYH.js";import{a as Zn}from"./chunk-O7KKKISO.js";import"./chunk-JZT7Y3KD.js";import{a as fe}from"./chunk-SBDGOVYZ.js";import"./chunk-2I3BN7FM.js";import"./chunk-R647OXX5.js";import{Hb as Po,La as ao,Lb as So,Mb as wo,Nb as Eo,Oa as so,Ob as Io,Pa as lo,Pb as yo,Qa as co,Ra as po,Sa as _o,Sb as ko,Ta as mo,Ua as go,bb as xo,gb as bo,hb as vo,ib as Oo,ic as _t,jb as Mo,jc as To,l as dt,m as no,nc as Ro,o as _n,oa as mn,oc as Do,rc as Bo,sc as Lo,tc as No,v as io}from"./chunk-HSMJGLSU.js";import"./chunk-BT2IHZ5F.js";import{a as oo}from"./chunk-RBAVWLH4.js";import"./chunk-G7EEAXHM.js";import"./chunk-7EM67EVO.js";import"./chunk-TRYQCKGX.js";import{d as uo,e as Co,g as fo,i as ho}from"./chunk-LJV5M5UI.js";import"./chunk-RLCBZGCP.js";import{a as gn}from"./chunk-GGZ6QZ2R.js";import"./chunk-VSZDJ4IR.js";import"./chunk-FTIA5TWO.js";import"./chunk-VRP5D4XP.js";import{a as Lt}from"./chunk-2Q66OONJ.js";import"./chunk-PK56UI3Y.js";import{h as pt,j as Ao}from"./chunk-EXPLEHHP.js";import{d as Nt}from"./chunk-ZJKZMXGE.js";import"./chunk-Q6K2GVFK.js";import{k as Yi}from"./chunk-M6UWE5KX.js";import{a as Rt}from"./chunk-4Y2QWWAL.js";import"./chunk-PK6IR3EO.js";import"./chunk-I2SOPRMQ.js";import{a as ji}from"./chunk-DU3ILAPT.js";import{b as to,q as ro}from"./chunk-XLVQZBLG.js";import{a as he}from"./chunk-R3HWQPKU.js";import"./chunk-QW6XMZUY.js";import"./chunk-A3DYXM7Z.js";import"./chunk-4DMNNEKJ.js";import"./chunk-RRQGMYC5.js";import{A as $t,B as nt,C as Bt,D as eo,b as Ke,c as ie,d as S,e as Y,f as $e,g as xt,h as Xi,j as oe,k as je,l as Ve,o as Ji,p as et,q as ct,r as Dt,s as tt,t as Ce,u as re,v as ae,w as dn,x as Qe,y as Zi,z as pn}from"./chunk-KJXX22HZ.js";import"./chunk-PT736NAU.js";import"./chunk-NOWHWIAE.js";import{a as We}from"./chunk-DIYOLB2L.js";import"./chunk-WRP6MC4L.js";import"./chunk-T4GEEMOJ.js";import"./chunk-KE5WUP3I.js";import{a as Fe}from"./chunk-LT5LDSCZ.js";import{b as ze,c as Qi,d as j,e as lt}from"./chunk-O2KCXV75.js";import{a as $i}from"./chunk-5SBYZ4N5.js";import{f as At,m as te,n as cn,o as ue,p as Tt,r as Jn}from"./chunk-7EHDGG7R.js";import{$b as Be,Ac as Yn,B as Ei,Bb as h,Cb as R,Cc as _,Cd as at,Db as p,Dc as m,Dd as Gi,Eb as Ne,Ec as B,Ed as yt,Fa as C,Fb as y,Fc as sn,Ga as f,Gd as qi,Ha as I,Hb as Ze,Hd as kt,Ia as F,Ic as ke,Id as Wi,Jd as ln,K as Kt,Kb as P,Kd as st,L as Ii,Lb as De,M as yi,Mb as $n,Md as zi,N as ki,Na as nn,Nb as z,Oa as Le,Ob as K,P as Kn,Pb as a,Qb as r,Rb as v,Rd as Ki,S as Ai,Sa as on,Sb as G,T as Pe,Tb as q,Ub as jn,Vb as M,Vd as Xn,Xb as x,Yb as d,ac as rn,c as Si,cc as _e,da as Ti,dc as me,eb as Ee,ec as ge,f as ve,fa as U,fb as le,fc as pe,gb as ft,gc as s,ha as Ri,hc as g,ib as Di,ic as b,jb as ht,jc as N,kc as qe,la as Pt,lb as o,lc as Et,ma as St,mb as w,n as wi,nc as It,o as it,oc as Bi,pc as k,qa as Xe,qc as A,rc as T,s as zn,sd as ce,tc as an,td as Q,ud as $,v as Oe,vc as Re,vd as Ni,wa as H,wc as D,wd as Vi,xa as wt,xc as Qn,xd as Fi,yc as ot,yd as Ui,zc as Li,zd as Hi}from"./chunk-73EIGSEX.js";
1import"./chunk-VJXTKYPE.js";import"./chunk-HYWUUJDL.js";import{a as W,b as Me,h as ye}from"./chunk-IYBX4JBV.js";var sr=(()=>{class t{static{this.\u0275fac=function(n){return new(n||t)}}static{this.\u0275cmp=H({type:t,selectors:[["app-cohorts"]],decls:1,vars:0,template:function(n,i){n&1&&v(0,"router-outlet")},dependencies:[cn],encapsulation:2})}}return t})();var Ra=["modalElement"];function Da(t,c){if(t&1&&(a(0,"div",22),s(1),r()),t&2){let e=d();o(),b(" ",e.errorMessage," ")}}function Ba(t,c){t&1&&v(0,"span",23)}var lr=(()=>{class t{constructor(e,n){this.cohortService=e,this.toast=n,this.cohortCreated=new Le,this.cityName="",this.teacherName="",this.isSubmitting=!1,this.errorMessage=""}canSubmit(){return this.cityName.trim().length>0&&!this.isSubmitting}onSubmit(){if(!this.canSubmit())return;this.isSubmitting=!0,this.errorMessage="";let e={cityName:this.cityName.trim()};this.teacherName.trim()&&(e.teacherName=this.teacherName.trim()),this.cohortService.createChildCohort(e).subscribe({next:n=>{n?.success?(this.toast.success("Child cohort created successfully!"),this.closeModal(),this.cohortCreated.emit()):this.errorMessage=n?.message||"Failed to create child cohort"},error:n=>{let i=n?.error?.message||n?.error?.error||"Failed to create child cohort";i.toLowerCase().includes("duplicate")||i.toLowerCase().includes("already exists")?this.errorMessage=`A cohort for "${this.cityName.trim()}" already exists. Please choose a different city name.`:this.errorMessage=i},complete:()=>{this.isSubmitting=!1}})}openModal(){this.modalElement&&(this.resetModal(),this.modalInstance=new bootstrap.Modal(this.modalElement.nativeElement,{backdrop:"static",keyboard:!1}),this.modalInstance.show())}closeModal(){this.modalInstance&&(this.modalInstance.hide(),setTimeout(()=>{this.resetModal()},300))}onModalHidden(){setTimeout(()=>{this.resetModal()},300)}resetModal(){this.cityName="",this.teacherName="",this.isSubmitting=!1,this.errorMessage=""}static{this.\u0275fac=function(n){return new(n||t)(w(de),w(he))}}static{this.\u0275cmp=H({type:t,selectors:[["app-create-child-cohort
1-modal"]],viewQuery:function(n,i){if(n&1&&_e(Ra,5),n&2){let l;me(l=ge())&&(i.modalElement=l.first)}},outputs:{cohortCreated:"cohortCreated"},decls:40,vars:32,consts:[["modalElement",""],["id","createChildCohortModal","tabindex","-1","aria-labelledby","createChildCohortModalLabel","aria-hidden","true",1,"modal","fade",3,"hidden.bs.modal"],[1,"modal-dialog","modal-dialog-centered"],[1,"modal-content"],[1,"modal-header"],["id","createChildCohortModalLabel",1,"modal-title"],["type","button","data-bs-dismiss","modal","aria-label","Close",1,"btn-close"],[1,"modal-body"],[1,"info-box"],[1,"info-icon"],["class","error-box",4,"ngIf"],[1,"form-section"],[1,"form-group"],["for","childCohortCity",1,"section-label"],[1,"required"],["type","text","id","childCohortCity",1,"form-control",3,"ngModelChange","ngModel","disabled","placeholder"],["for","childCohortTeacher",1,"section-label"],["type","text","id","childCohortTeacher",1,"form-control",3,"ngModelChange","ngModel","disabled","placeholder"],[1,"modal-footer"],["type","button",1,"btn","btn-cancel",3,"click","disabled"],["type","button",1,"btn","btn-submit",3,"click","disabled"],["class","spinner-border spinner-border-sm me-2","role","status","aria-hidden","true",4,"ngIf"],[1,"error-box"],["role","status","aria-hidden","true",1,"spinner-border","spinner-border-sm","me-2"]],template:function(n,i){if(n&1){let l=M();a(0,"div",1,0),x("hidden.bs.modal",function(){return C(l),f(i.onModalHidden())}),a(2,"div",2)(3,"div",3)(4,"div",4)(5,"h1",5),s(6),_(7,"translate"),r(),v(8,"button",6),r(),a(9,"div",7)(10,"div",8)(11,"div",9),s(12,"i"),r(),a(13,"p"),s(14),_(15,"translate"),r()(),h(16,Da,2,1,"div",10),a(17,"div",11)(18,"div",12)(19,"label",13),s(20),_(21,"translate"),a(22,"span",14),s(23,"*"),r()(),a(24,"input",15),_(25,"translate"),T("ngModelChange",function(O){return C(l),A(i.cityName,O)||(i.cityName=O),f(O)}),r()(),a(26,"div",12)(27,"label",16),s(28),_(29,"translate"),r(),a(30,"input",17),_(31,"translate"),T("ngModelChange",function(O){return C(l),A(i.teacherName,O)||(i.teacherName=O),f(O)}),r()()()(),a(32,"div",18)(33,"button",19),x("click",function(){return C(l),f(i.closeModal())}),s(34),_(35,"translate"),r(),a(36,"button",20),x("click",function(){return C(l),f(i.onSubmit())}),h(37,Ba,1,0,"span",21),s(38),_(39,"translate"),r()()()()()}n&2&&(o(6),b(" ",m(7,16,"FR_DASHBOARD.CREATE_CHILD_COHORT")," "),o(8),b(" ",m(15,18,"FR_DASHBOARD.CHILD_COHORT_INFO")," "),o(2),p("ngIf",i.errorMessage),o(4),b(" ",m(21,20,"FR_DASHBOARD.CITY_NAME")," "),o(4),Be("placeholder",m(25,22,"FR_DASHBOARD.CITY_NAME_PLACEHOLDER")),k("ngModel",i.cityName),p("disabled",i.isSubmitting),o(4),b(" ",m(29,24,"FR_DASHBOARD.TEACHER_NAME")," "),o(2),Be("placeholder",m(31,26,"FR_DASHBOARD.TEACHER_NAME_PLACEHOLDER")),k("ngModel",i.teacherName),p("disabled",i.isSubmitting),o(3),p("disabled",i.isSubmitting),o(),b(" ",m(35,28,"COMMON.CANCEL")," "),o(2),p("disabled",!i.canSubmit()),o(),p("ngIf",i.isSubmitting),o(),b(" ",m(39,30,"FR_DASHBOARD.CREATE")," "))},dependencies:[$,ie,Y,oe,j],styles:[".modal-header[_ngcontent-%COMP%]{border-bottom:1px solid #e5e7eb;padding:1.5rem}.modal-header[_ngcontent-%COMP%] .modal-title[_ngcontent-%COMP%]{font-size:20px;font-weight:700;color:#146d6d;margin:0}.modal-body[_ngcontent-%COMP%]{padding:1.5rem}.modal-footer[_ngcontent-%COMP%]{border-top:1px solid #e5e7eb;padding:1rem 1.5rem;gap:.75rem}.info-box[_ngcontent-%COMP%]{display:flex;align-items:flex-start;gap:.75rem;background-color:#f0fdfd;border:1px solid #99eded;border-radius:8px;padding:1rem;margin-bottom:1.5rem}.info-box[_ngcontent-%COMP%] .info-icon[_ngcontent-%COMP%]{width:24px;height:24px;min-width:24px;background-color:#29e4e4;color:#fff;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:700}.info-box[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{font-size:13px;color:#374151;line-height:1.5;margin:0}.error-box[_ngcontent-%COMP%]{background-color:#fef2f2;border:1px solid #fca5a5;border-radius:8px;padding:.75rem 1rem;margin-bottom:1.5rem;font-size:13px;color:#991b1b}.form-section[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:1.5rem}.form-group[_ngcontent-%COMP%] .section-label[_ngcontent-%COMP%]{display:block;font-size:14px;font-weight:600;color:#146d6d;margin-bottom:.75rem}.form-group[_ngcontent-%COMP%] .section-label[_ngcontent-%COMP%] .required[_ngcontent-%COMP%]{color:#be123c;margin-left:2px}.form-group[_ngcontent-%COMP%] .form-control[_ngcontent-%COMP%]{border:1px solid #d1d5db;border-radius:4px;padding:.5rem .75rem;font-size:14px;color:#111827;width:100%}.form-group[_ngcontent-%COMP%] .form-control[_ngcontent-%COMP%]:focus{border-color:#21b6b6;outline:none;box-shadow:0 0 0 3px #21b6b61a}.form-group[_ngcontent-%COMP%] .form-control[_ngcontent-%COMP%]:disabled{background-color:#f3f4f6;
1cursor:not-allowed}.form-group[_ngcontent-%COMP%] .form-control[_ngcontent-%COMP%]::placeholder{color:#9ca3af}.btn-cancel[_ngcontent-%COMP%]{padding:.5rem 1rem;border:1px solid #d1d5db;background-color:#fff;color:#374151;border-radius:4px;font-size:14px;font-weight:500;transition:all .2s}.btn-cancel[_ngcontent-%COMP%]:hover:not(:disabled){background-color:#f3f4f6;border-color:#9ca3af}.btn-cancel[_ngcontent-%COMP%]:disabled{opacity:.5;cursor:not-allowed}.btn-submit[_ngcontent-%COMP%]{padding:.5rem 1rem;background-color:#21b6b6;color:#fff;border:none;border-radius:4px;font-size:14px;font-weight:500;transition:all .2s}.btn-submit[_ngcontent-%COMP%]:hover:not(:disabled){background-color:#188888}.btn-submit[_ngcontent-%COMP%]:disabled{opacity:.5;cursor:not-allowed}@media screen and (max-width: 768px){.modal-dialog[_ngcontent-%COMP%]{margin:.5rem}}"]})}}return t})();var Na=["childCohortModal"],Va=t=>({"primary-row":t});function Fa(t,c){if(t&1){let e=M();a(0,"button",11),x("click",function(){C(e);let i=d();return f(i.openCreateChildCohortModal())}),s(1),_(2,"translate"),r()}t&2&&(o(),b(" ",m(2,1,"FR_DASHBOARD.CREATE_FROM_PRIMARY")," "))}function Ua(t,c){t&1&&(a(0,"div",12)(1,"p"),s(2),_(3,"translate"),r()()),t&2&&(o(2),g(m(3,1,"COMMON.LOADING")))}function Ha(t,c){t&1&&(a(0,"div",13)(1,"p"),s(2),_(3,"translate"),r()()),t&2&&(o(2),g(m(3,1,"FR_DASHBOARD.NO_BATCHES")))}function Ga(t,c){if(t&1){let e=M();a(0,"div",18),x("click",function(){let i=C(e).$implicit,l=d(2);return f(l.viewBatch(i))}),a(1,"div",19)(2,"div")(3,"h3"),s(4),r(),a(5,"span",20),s(6),_(7,"translate"),r()()(),a(8,"div",21)(9,"div",22)(10,"span",23),s(11),_(12,"translate"),r(),a(13,"span"),s(14),_(15,"translate"),r()()(),a(16,"div",24)(17,"button",25),x("click",function(i){let l=C(e).$implicit,u=d(2);return f(u.duplicateFromTemplate(l,i))}),s(18),_(19,"translate"),r()()()}if(t&2){let e=c.$implicit,n=d(2);o(4),g(n.getTitle(e)),o(2),g(m(7,7,"FR_DASHBOARD.TEMPLATE")),o(5),b("",m(12,9,"FR_DASHBOARD.TOTAL_SESSIONS"),":"),o(3),qe("",n.getTotalSessions(e)," (",e.totalLevels," ",m(15,11,"FR_DASHBOARD.LEVELS"),")"),o(4),b(" ",m(19,13,"FR_DASHBOARD.CREATE_FROM_TEMPLATE")," ")}}function qa(t,c){if(t&1&&(a(0,"div",14)(1,"h3",15),s(2),_(3,"translate"),r(),a(4,"div",16),h(5,Ga,20,15,"div",17),r()()),t&2){let e=d();o(2),g(m(3,3,"FR_DASHBOARD.TEMPLATES")),o(3),p("ngForOf",e.templates)("ngForTrackBy",e.trackByIndex)}}function Wa(t,c){t&1&&(a(0,"h3",15),s(1),_(2,"translate"),r()),t&2&&(o(),g(m(2,1,"FR_DASHBOARD.COHORTS")))}function za(t,c){t&1&&(a(0,"span",35),s(1,"Primary Template"),r())}function Ka(t,c){if(t&1&&(a(0,"div",22)(1,"span",23),s(2),_(3,"translate"),r(),a(4,"span"),s(5),r()()),t&2){let e=d().$implicit;o(2),b("",m(3,2,"FR_DASHBOARD.TEACHER"),":"),o(3),g(e.teacherName)}}function $a(t,c){if(t&1){let e=M();a(0,"button",36),x("click",function(i){C(e);let l=d().$implicit,u=d(2);return f(u.deleteBatch(l,i))}),s(1),_(2,"translate"),r()}t&2&&(o(),b(" ",m(2,1,"COMMON.DELETE")," "))}function ja(t,c){if(t&1){let e=M();a(0,"div",29),x("click",function(){let i=C(e).$implicit,l=d(2);return f(l.viewBatch(i))}),a(1,"div",19)(2,"div")(3,"h3"),s(4),r(),h(5,za,2,0,"span",30),a(6,"span",31),s(7),r()(),a(8,"span",32),s(9),_(10,"titlecase"),r()(),a(11,"div",21),h(12,Ka,6,4,"div",33),a(13,"div",22)(14,"span",23),s(15),_(16,"translate"),r(),a(17,"span"),s(18),r()(),a(19,"div",22)(20,"span",23),s(21),_(22,"translate"),r(),a(23,"span"),s(24),r()(),a(25,"div",22)(26,"span",23),s(27),_(28,"translate"),r(),a(29,"span"),s(30),r()(),a(31,"div",22)(32,"span",23),s(33),_(34,"translate"),r(),a(35,"span"),s(36),r()(),a(37,"div",22)(38,"span",23),s(39),_(40,"translate"),r(),a(41,"span"),s(42),_(43,"translate"),r()()(),a(44,"div",24),h(45,$a,3,3,"button",34),r()()}if(t&2){let e=c.$implicit,n=d(2);p("ngClass",D(35,Va,e.isPrimary)),o(4),g(e.cityName||n.getTitle(e)),o(),p("ngIf",e.isPrimary),o(2),g((e.language||"fr").toUpperCase()),o(),p("ngClass",n.getStatusClass(e.status)),o(),b(" ",m(10,21,e.status)," "),o(3),p("ngIf",e.teacherName),o(3),b("",m(16,23,"FR_DASHBOARD.INSTRUCTOR"),":"),o(3),g(e.instructorName),o(3),b("",m(22,25,"FR_DASHBOARD.START_DATE"),":"),o(3),g(n.formatDate(e.startDate)),o(3),b("",m(28,27,"FR_DASHBOARD.END_DATE"),":"),o(3),g(n.formatDate(e.endDate)),o(3),b("",m(34,29,"FR_DASHBOARD.ENROLLED"),":"),o(3),N("",e.currentEnrolled,"/",e.maxStudents,""),o(3),b("",m(40,31,"FR_DASHBOARD.TOTAL_SESSIONS"),":"),o(3),qe("",n.getTotalSessions(e)," (",e.totalLevels," ",m(43,33,"FR_DASHBOARD.LEVELS"),")"),o(3),p("ngIf",e.status==="draft"||e.status==="cancelled")}}function Qa(t,c){if(t&1&&(a(0,"div",26),h(1,Wa,3,3,"h3",27),a(2,"div",16),h(3,ja,46,37,"div",28),r()()),t&2){let e=d();o(),p("ngIf",e.templates.length>0),o(2),p("ngForOf",e.regularBatches)("ngForTrackBy",e.trackByIndex)}}var dr=(()=>{class t{constructor(e,n,i){this.cohortService=e,this.router=n,this.changeLangService=i,this.batches=[],this.templates=[],this.regularBatches=[],this.loading=!0,this.currentLang="en",this.hasPrimary=!1,this.currentLang=this.changeLangService.current_lang?.value||"en"}ngOnInit(){this.loadBatches()}loadBatches(){this.loading=!0,this.cohortService.getAllBatches().subscribe({next:e=>{e?.success&&(this.batches=e.data||[],this.templates=this.batches.filter(n=>n.isTemplate),this.regularBatches=this.batches.filter(n=>!n.isTemplate),this.hasPrimary=this.batches.some(n=>n.isPrimary)),this.loading=!1},error:()=>{this.loading=!1}})}getTitle(e){return e.title?typeof e.title=="string"?e.title:e.title[this.currentLang]||e.title.en||"":""}getStatusClass(e){switch(e){case"active":return"status-active";case"draft":return"status-draft";case"completed":return"status-completed";case"cancelled":return"status-cancelled";default:return""}}formatDate(e){return e?new Date(e).toLocaleDateString(this.currentLang==="fr"?"fr-CA":"en-CA"):""}getTotalSessions(e){let n=(e.levels||[]).reduce((i,l)=>i+(l.totalSessions||0),0);return Math.max(e.totalSessions||0,n)}createBatch(){this.router.navigate(["/main/dashboard/cohorts/batches/create"])}viewBatch(e){this.router.navigate(["/main/dashboard/cohorts/batches",e.batchId])}deleteBatch(e,n){n.stopPropagation(),confirm(`Delete batch "${this.getTitle(e)}"?`)&&this.cohortService.deleteBatch(e.batchId).subscribe({next:i=>{i?.success&&this.loadBatches()}})}duplicateFromTemplate(e,n){n.stopPropagation();
1let i=prompt("Enter start date for new cohort (YYYY-MM-DD):");i&&this.cohortService.duplicateBatch(e.batchId,{startDate:i}).subscribe({next:l=>{l?.success&&this.router.navigate(["/main/dashboard/cohorts/batches",l.data.newBatchId])}})}openCreateChildCohortModal(){this.childCohortModal&&this.childCohortModal.openModal()}onChildCohortCreated(){this.loadBatches()}trackByIndex(e){return e}static{this.\u0275fac=function(n){return new(n||t)(w(de),w(ue),w(Rt))}}static{this.\u0275cmp=H({type:t,selectors:[["app-batch-list"]],viewQuery:function(n,i){if(n&1&&_e(Na,5),n&2){let l;me(l=ge())&&(i.childCohortModal=l.first)}},decls:16,vars:11,consts:[["childCohortModal",""],[1,"batch-list-container"],[1,"header"],[1,"header-actions"],["class","btn-secondary",3,"click",4,"ngIf"],[1,"btn-primary",3,"click"],["class","loading-state",4,"ngIf"],["class","empty-state",4,"ngIf"],["class","templates-section",4,"ngIf"],["class","batches-section",4,"ngIf"],[3,"cohortCreated"],[1,"btn-secondary",3,"click"],[1,"loading-state"],[1,"empty-state"],[1,"templates-section"],[1,"section-title"],[1,"batch-grid"],["class","batch-card template-card",3,"click",4,"ngFor","ngForOf","ngForTrackBy"],[1,"batch-card","template-card",3,"click"],[1,"batch-card-header"],[1,"template-badge"],[1,"batch-card-body"],[1,"info-row"],[1,"label"],[1,"batch-card-footer"],[1,"btn-primary","btn-sm",3,"click"],[1,"batches-section"],["class","section-title",4,"ngIf"],["class","batch-card",3,"ngClass","click",4,"ngFor","ngForOf","ngForTrackBy"],[1,"batch-card",3,"click","ngClass"],["class","primary-badge",4,"ngIf"],[1,"lang-badge"],[1,"status-badge",3,"ngClass"],["class","info-row",4,"ngIf"],["class","btn-danger btn-sm",3,"click",4,"ngIf"],[1,"primary-badge"],[1,"btn-danger","btn-sm",3,"click"]],template:function(n,i){if(n&1){let l=M();a(0,"div",1)(1,"div",2)(2,"h2"),s(3),_(4,"translate"),r(),a(5,"div",3),h(6,Fa,3,3,"button",4),a(7,"button",5),x("click",function(){return C(l),f(i.createBatch())}),s(8),_(9,"translate"),r()()(),h(10,Ua,4,3,"div",6)(11,Ha,4,3,"div",7)(12,qa,6,5,"div",8)(13,Qa,4,3,"div",9),a(14,"app-create-child-cohort
1-modal",10,0),x("cohortCreated",function(){return C(l),f(i.onChildCohortCreated())}),r()()}n&2&&(o(3),g(m(4,7,"FR_DASHBOARD.BATCH_LIST_TITLE")),o(3),p("ngIf",i.hasPrimary),o(2),b(" + ",m(9,9,"FR_DASHBOARD.CREATE_BATCH")," "),o(2),p("ngIf",i.loading),o(),p("ngIf",!i.loading&&i.batches.length===0),o(),p("ngIf",!i.loading&&i.templates.length>0),o(),p("ngIf",!i.loading&&i.regularBatches.length>0))},dependencies:[ce,Q,$,lr,at,j],styles:[".batch-list-container[_ngcontent-%COMP%]{padding:24px}.batch-list-container[_ngcontent-%COMP%] .header[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px}.batch-list-container[_ngcontent-%COMP%] .header[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0;font-size:24px;font-weight:600}.batch-list-container[_ngcontent-%COMP%] .btn-primary[_ngcontent-%COMP%]{background:#4f46e5;color:#fff;border:none;padding:10px 20px;border-radius:8px;cursor:pointer;font-weight:500}.batch-list-container[_ngcontent-%COMP%] .btn-primary[_ngcontent-%COMP%]:hover{background:#4338ca}.batch-list-container[_ngcontent-%COMP%] .loading-state[_ngcontent-%COMP%], .batch-list-container[_ngcontent-%COMP%] .empty-state[_ngcontent-%COMP%]{text-align:center;padding:48px;color:#6b7280}.batch-list-container[_ngcontent-%COMP%] .batch-grid[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(auto-fill,minmax(360px,1fr));gap:20px}.batch-list-container[_ngcontent-%COMP%] .batch-card[_ngcontent-%COMP%]{background:#fff;border:1px solid #e5e7eb;border-radius:12px;padding:20px;cursor:pointer;transition:box-shadow .2s,transform .2s}.batch-list-container[_ngcontent-%COMP%] .batch-card[_ngcontent-%COMP%]:hover{box-shadow:0 4px 12px #0000001a;transform:translateY(-2px)}.batch-list-container[_ngcontent-%COMP%] .batch-card-header[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:16px}.batch-list-container[_ngcontent-%COMP%] .batch-card-header[_ngcontent-%COMP%] h3[_ngcontent-%COMP%]{margin:0;font-size:18px;font-weight:600}.batch-list-container[_ngcontent-%COMP%] .lang-badge[_ngcontent-%COMP%]{display:inline-block;padding:2px 8px;border-radius:4px;font-size:11px;font-weight:600;background:#ede9fe;color:#5b21b6;margin-top:4px}.batch-list-container[_ngcontent-%COMP%] .status-badge[_ngcontent-%COMP%]{padding:4px 12px;border-radius:20px;font-size:12px;font-weight:500;text-transform:uppercase}.batch-list-container[_ngcontent-%COMP%] .status-active[_ngcontent-%COMP%]{background:#dcfce7;color:#166534}.batch-list-container[_ngcontent-%COMP%] .status-draft[_ngcontent-%COMP%]{background:#fef3c7;color:#92400e}.batch-list-container[_ngcontent-%COMP%] .status-completed[_ngcontent-%COMP%]{background:#dbeafe;color:#1e40af}.batch-list-container[_ngcontent-%COMP%] .status-cancelled[_ngcontent-%COMP%]{background:#fee2e2;color:#991b1b}.batch-list-container[_ngcontent-%COMP%] .batch-card-body[_ngcontent-%COMP%] .info-row[_ngcontent-%COMP%]{display:flex;justify-content:space-between;padding:6px 0;font-size:14px}.batch-list-container[_ngcontent-%COMP%] .batch-card-body[_ngcontent-%COMP%] .info-row[_ngcontent-%COMP%] .label[_ngcontent-%COMP%]{color:#6b7280}.batch-list-container[_ngcontent-%COMP%] .batch-card-footer[_ngcontent-%COMP%]{margin-top:16px;display:flex;justify-content:flex-end;gap:8px}.batch-list-container[_ngcontent-%COMP%] .btn-danger[_ngcontent-%COMP%]{background:#ef4444;color:#fff;border:none;border-radius:6px;cursor:pointer}.batch-list-container[_ngcontent-%COMP%] .btn-danger[_ngcontent-%COMP%]:hover{background:#dc2626}.batch-list-container[_ngcontent-%COMP%] .btn-sm[_ngcontent-%COMP%]{padding:6px 12px;font-size:12px}.batch-list-container[_ngcontent-%COMP%] .section-title[_ngcontent-%COMP%]{font-size:18px;font-weight:600;margin:24px 0 12px;color:#374151}.batch-list-container[_ngcontent-%COMP%] .templates-section[_ngcontent-%COMP%]{margin-bottom:32px}.batch-list-container[_ngcontent-%COMP%] .template-card[_ngcontent-%COMP%]{border:2px dashed #a78bfa;background:#faf5ff}.batch-list-container[_ngcontent-%COMP%] .primary-badge[_ngcontent-%COMP%]{display:inline-block;background:#d97706;color:#fff;font-size:10px;padding:2px 10px;border-radius:10px;text-transform:uppercase;font-weight:700;letter-spacing:.5px;margin-top:4px;margin-right:4px}.batch-list-container[_ngcontent-%COMP%] .primary-row[_ngcontent-%COMP%]{background:linear-gradient(135deg,#fffbeb,#fef3c7);border:2px solid #D97706}.batch-list-container[_ngcontent-%COMP%] .header-actions[_ngcontent-%COMP%]{display:flex;gap:8px;align-items:center}.batch-list-container[_ngcontent-%COMP%] .btn-secondary[_ngcontent-%COMP%]{background:#d97706;color:#fff;border:none;padding:10px 20px;border-radius:8px;
1cursor:pointer;font-weight:500}.batch-list-container[_ngcontent-%COMP%] .btn-secondary[_ngcontent-%COMP%]:hover{background:#b45309}.batch-list-container[_ngcontent-%COMP%] .template-badge[_ngcontent-%COMP%]{display:inline-block;padding:2px 8px;border-radius:4px;font-size:11px;font-weight:600;background:#a78bfa;color:#fff;margin-top:4px}.batch-list-container[_ngcontent-%COMP%] .checkbox-group[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px;font-weight:500;cursor:pointer}.batch-list-container[_ngcontent-%COMP%] .checkbox-group[_ngcontent-%COMP%] input[type=checkbox][_ngcontent-%COMP%]{width:18px;height:18px}.batch-list-container[_ngcontent-%COMP%] .field-hint[_ngcontent-%COMP%]{margin:4px 0 0;font-size:13px;color:#6b7280}"]})}}return t})();var kn=[{level:"A1.1",sessions:14,months:1.5},{level:"A1.2",sessions:14,months:1.5},{level:"A2",sessions:18,months:2},{level:"B1",sessions:14,months:1.5},{level:"B2.1",sessions:14,months:1.5},{level:"B2.2",sessions:9,months:1}];function Ya(t,c){t&1&&(a(0,"div",5)(1,"p"),s(2),_(3,"translate"),r()()),t&2&&(o(2),g(m(3,1,"COMMON.LOADING")))}function Xa(t,c){t&1&&(a(0,"div",8)(1,"div",9)(2,"label"),v(3,"input",31),s(4),_(5,"translate"),r(),a(6,"p",11),s(7),_(8,"translate"),r()()()),t&2&&(o(4),b(" ",m(5,2,"FR_DASHBOARD.IS_TEMPLATE")," "),o(3),g(m(8,4,"FR_DASHBOARD.IS_TEMPLATE_HINT")))}function Ja(t,c){if(t&1&&(a(0,"option",34),s(1),r()),t&2){let e=c.$implicit;p("value",e.value),o(),g(e.label)}}function Za(t,c){if(t&1&&(a(0,"div",8)(1,"h3"),s(2),_(3,"translate"),r(),a(4,"div",13)(5,"label"),s(6),_(7,"translate"),r(),a(8,"select",32),h(9,Ja,2,2,"option",33),r()()()),t&2){let e=d(2);o(2),g(m(3,4,"FR_DASHBOARD.LANGUAGE")),o(4),g(m(7,6,"FR_DASHBOARD.BATCH_LANGUAGE")),o(3),p("ngForOf",e.languageOptions)("ngForTrackBy",e.trackByIndex)}}function es(t,c){t&1&&(a(0,"div",13)(1,"label"),s(2),_(3,"translate"),r(),v(4,"input",35),r()),t&2&&(o(2),g(m(3,1,"FR_DASHBOARD.START_DATE")))}function ts(t,c){if(t&1){let e=M();a(0,"button",36),x("click",function(){let i=C(e).$implicit,l=d(2);return f(l.toggleDay(i))}),s(1),r()}if(t&2){let e=c.$implicit,n=d(2);y("selected",n.isDaySelected(e)),o(),b(" ",e.substring(0,3)," ")}}function ns(t,c){if(t&1){let e=M();a(0,"div",37)(1,"label",38),s(2),r(),a(3,"input",39),x("input",function(i){let l=C(e).$implicit,u=d(2);return f(u.whatsappGroupUrls[l.level]=i.target.value)}),r()()}if(t&2){let e=c.$implicit,n=d(2);o(2),g(e.level),o(),p("value",n.whatsappGroupUrls[e.level]||"")}}function is(t,c){if(t&1&&(a(0,"tr")(1,"td")(2,"strong"),s(3),r()(),a(4,"td"),s(5),r(),a(6,"td"),s(7),_(8,"translate"),r()()),t&2){let e=c.$implicit;o(3),g(e.level),o(2),g(e.sessions),o(2),N("",e.months," ",m(8,4,"FR_DASHBOARD.MONTHS"),"")}}function os(t,c){if(t&1){let e=M();a(0,"button",56),x("click",function(){let i=C(e).$implicit,l=d().$implicit,u=d(4);return f(u.toggleLevelDay(l.level,i))}),s(1),r()}if(t&2){let e=c.$implicit,n=d().$implicit,i=d(4);y("selected",i.isLevelDaySelected(n.level,e)),o(),b(" ",e.substring(0,2)," ")}}function rs(t,c){if(t&1){let e=M();a(0,"div",48)(1,"div",49)(2,"strong"),s(3),r()(),a(4,"div",50)(5,"div",51)(6,"label"),s(7,"Days"),r(),a(8,"div",52),h(9,os,2,3,"button",53),r()(),a(10,"div",51)(11,"label"),s(12,"Time"),r(),a(13,"input",54),x("change",function(i){let l=C(e).$implicit,u=d(4);return f(u.levelScheduleOverrides[l.level].sessionTime=i.target.value)}),r()(),a(14,"div",51)(15,"label"),s(16,"Duration (min)"),r(),a(17,"input",55),x("change",function(i){let l=C(e).$implicit,u=d(4);return f(u.levelScheduleOverrides[l.level].sessionDuration=+i.target.value||void 0)}),r()()()()}if(t&2){let e=c.$implicit,n=d(4);o(3),g(e.level),o(6),p("ngForOf",n.daysOptions)("ngForTrackBy",n.trackByIndex),o(4),p("value",n.levelScheduleOverrides[e.level].sessionTime||""),o(4),p("value",n.levelScheduleOverrides[e.level].sessionDuration||"")}}function as(t,c){if(t&1&&(a(0,"div",46)(1,"p",11),s(2,"Override the default schedule for specific levels. Leave blank to use the batch default."),r(),h(3,rs,18,5,"div",47),r()),t&2){let e=d(3);o(3),p("ngForOf",e.levelsConfig)("ngForTrackBy",e.trackByIndex)}}function ss(t,c){if(t&1){let e=M();a(0,"div",8)(1,"h3"),s(2),_(3,"translate"),r(),a(4,"p",40),s(5),_(6,"translate"),r(),a(7,"table",41)(8,"thead")(9,"tr")(10,"th"),s(11),_(12,"translate"),r(),a(13,"th"),s(14),_(15,"translate"),r(),a(16,"th"),s(17),_(18,"translate"),r()()(),a(19,"tbody"),h(20,is,9,6,"tr",42),r(),a(21,"tfoot")(22,"tr")(23,"td")(24,"strong"),s(25),_(26,"translate"),r()(),a(27,"td")(28,"strong"),s(29,"72"),r()(),a(30,"td")(31,"strong"),s(32),_(33,"translate"),r()()()()(),a(34,"div",43)(35,"button",44),x("click",function(){C(e);let i=d(2);return f(i.toggleLevelSchedules())}),s(36),r()(),h(37,as,4,2,"div",45),r()}if(t&2){let e=d(2);o(2),g(m(3,11,"FR_DASHBOARD.LEVELS_PREVIEW")),o(3),g(m(6,13,"FR_DASHBOARD.LEVELS_PREVIEW_DESC")),o(6),g(m(12,15,"FR_DASHBOARD.LEVEL")),o(3),g(m(15,17,"FR_DASHBOARD.SESSIONS")),o(3),g(m(18,19,"FR_DASHBOARD.DURATION")),o(3),p("ngForOf",e.levelsConfig)("ngForTrackBy",e.trackByIndex),o(5),g(m(26,21,"FR_DASHBOARD.TOTAL")),o(7),b("9 ",m(33,23,"FR_DASHBOARD.MONTHS"),""),o(4),b(" ",e.showLevelSchedules?"Hide":"Customize"," per-level schedules "),o(),p("ngIf",e.showLevelSchedules)}}function ls(t,c){if(t&1){let e=M();a(0,"form",6),x("ngSubmit",function(){C(e);let i=d();return f(i.onSubmit())}),h(1,Xa,9,6,"div",7),a(2,"div",8)(3,"div",9)(4,"label"),v(5,"input",10),s(6),_(7,"translate"),r(),a(8,"p",11),s(9),_(10,"translate"),r()()(),h(11,Za,10,8,"div",7),a(12,"div",8)(13,"h3"),s(14),_(15,"translate"),r(),a(16,"div",12)(17,"div",13)(18,"label"),s(19),_(20,"translate"),r(),v(21,"input",14),r(),a(22,"div",13)(23,"label"),s(24),_(25,"translate"),r(),v(26,"input",15),r()()(),a(27,"div",8)(28,"h3"),s(29),_(30,"translate"),r(),a(31,"div",12)(32,"div",13)(33,"label"),s(34),_(35,"translate"),r(),v(36,"textarea",16),r(),a(37,"div",13)(38,"label"),s(39),_(40,"translate"),r(),v(41,"textarea",17),r()()(),a(42,"div",8)(43,"h3"),s(44),_(45,"translate"),r(),a(46,"div",12),h(47,es,5,3,"div",18),a(48,"div",13)(49,"label"),s(50),_(51,"translate"),r(),v(52,"input",19),r(),a(53,"div",13)(54,"label"),s(55),_(56,"translate"),r(),v(57,"input",20),r()(),a(58,"div",13)(59,"label"),s(60),_(61,"translate"),r(),a(62,"div",21),h(63,ts,2,3,"button",22),r()()(),a(64,"div",8)(65,"h3"),s(66),_(67,"translate"),r(),a(68,"div",12)(69,"div",13)(70,"label"),s(71),_(72,"translate"),r(),v(73,"input",23),r(),a(74,"div",13)(75,"label"),s(76),_(77,"translate"),r(),v(78,"input",24),r(),a(79,"div",13)(80,"label"),s(81),_(82,"translate"),r(),v(83,"input",25),r()()(),a(84,"div",8)(85,"h3"),s(86,"WhatsApp Group Links"),r(),a(87,"p",11),s(88,"Add a WhatsApp group invite link for each level. Students will see a join button on their dashboard."),r(),a(89,"div",26),h(90,ns,4,2,"div",27),r()(),h(91,ss,38,25,"div",7),a(92,"div",28)(93,"button",29),x("click",function(){C(e);let i=d();return f(i.goBack())}),s(94),_(95,"translate"),r(),a(96,"button",30),s(97),_(98,"translate"),_(99,"translate"),_(100,"translate"),r()()()}if(t&2){let e=d();p("formGroup",e.form),o(),p("ngIf",!e.isEditMode),o(5),b(" ",m(7,28,"FR_DASHBOARD.TCF_PREP_ENABLED")," "),o(3),g(m(10,30,"FR_DASHBOARD.TCF_PREP_HINT")),o(2),p("ngIf",!e.isEditMode),o(3),g(m(15,32,"FR_DASHBOARD.BATCH_TITLE")),o(5),g(m(20,34,"FR_DASHBOARD.TITLE_EN")),o(5),g(m(25,36,"FR_DASHBOARD.TITLE_FR")),o(5),g(m(30,38,"FR_DASHBOARD.DESCRIPTION")),o(5),g(m(35,40,"FR_DASHBOARD.DESC_EN")),o(5),g(m(40,42,"FR_DASHBOARD.DESC_FR")),o(5),g(m(45,44,"FR_DASHBOARD.SCHEDULE")),o(3),p("ngIf",!e.isEditMode),o(3),g(m(51,46,"FR_DASHBOARD.SESSION_TIME")),o(5),b("",m(56,48,"FR_DASHBOARD.SESSION_DURATION")," (min)"),o(5),g(m(61,50,"FR_DASHBOARD.DAYS_OF_COURSE")),o(3),p("ngForOf",e.daysOptions)("ngForTrackBy",e.trackByIndex),o(3),g(m(67,52,"FR_DASHBOARD.CAPACITY_PRICING")),o(5),g(m(72,54,"FR_DASHBOARD.MAX_STUDENTS")),o(5),g(m(77,56,"FR_DASHBOARD.PRICING_CAD")),o(5),g(m(82,58,"FR_DASHBOARD.PRICING_EGP")),o(9),p("ngForOf",e.levelsConfig)("ngForTrackBy",e.trackByIndex),o(),p("ngIf",!e.isEditMode),o(3),b(" ",m(95,60,"COMMON.CANCEL")," "),o(2),p("disabled",e.form.invali
1d||e.submitting),o(),b(" ",e.submitting?m(98,62,"COMMON.SAVING"):e.isEditMode?m(99,64,"COMMON.SAVE"):m(100,66,"FR_DASHBOARD.CREATE_BATCH")," ")}}var oi=(()=>{class t{constructor(e,n,i,l,u,O,E,V){this.fb=e,this.route=n,this.router=i,this.cohortService=l,this.localStorageService=u,this.encryptionService=O,this.programPricingService=E,this.navigationHistory=V,this.isEditMode=!1,this.batchId=null,this.loading=!1,this.submitting=!1,this.levelsConfig=kn,this.showLevelSchedules=!1,this.levelScheduleOverrides={},this.whatsappGroupUrls={},this.languageOptions=[{value:"fr",label:"French"},{value:"en",label:"English"}],this.daysOptions=["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"]}ngOnInit(){this.batchId=this.route.snapshot.paramMap.get("batchId"),this.isEditMode=!!this.batchId,this.form=this.fb.group({isTemplate:[!1],tcfPrepEnabled:[!1],language:["fr",S.required],titleEn:["",S.required],titleFr:["",S.required],descriptionEn:[""],descriptionFr:[""],startDate:["",S.required],maxStudents:[12,[S.required,S.min(1),S.max(20)]],pricingCAD:[2180],pricingEGP:[27500],daysOfCourse:[["Monday","Wednesday"],S.required],sessionTime:["18:00",S.required],sessionDuration:[90,[S.required,S.min(30)]]}),this.isEditMode?this.loadBatch():(this.programPricingService.getPricingSummary("CAD").pipe(Kn(1)).subscribe(e=>{e?.success&&e.data?.withTcf?.total&&this.form.patchValue({pricingCAD:e.data.withTcf.total})}),this.programPricingService.getPricingSummary("EGP").pipe(Kn(1)).subscribe(e=>{e?.success&&e.data?.withTcf?.total&&this.form.patchValue({pricingEGP:e.data.withTcf.total})}))}loadBatch(){this.batchId&&(this.loading=!0,this.cohortService.getBatchDetails(this.batchId).subscribe({next:e=>{if(e?.success&&e.data){let n=e.data;this.form.patchValue({tcfPrepEnabled:!!n.tcfPrepEnabled,language:n.language||"fr",titleEn:n.title?.en||"",titleFr:n.title?.fr||"",descriptionEn:n.description?.en||"",descriptionFr:n.description?.fr||"",startDate:n.startDate?n.startDate.substring(0,10):"",maxStudents:n.maxStudents,pricingCAD:n.pricingCAD,pricingEGP:n.pricingEGP,daysOfCourse:n.daysOfCourse||["Monday","Wednesday"],sessionTime:n.sessionTime||"18:00",sessionDuration:n.sessionDuration||90}),n.whatsappGroupUrls&&(this.whatsappGroupUrls=W({},n.whatsappGroupUrls))}this.loading=!1},error:()=>{this.loading=!1}}))}getCurrentInstructorId(){try{let e=this.localStorageService.getItem("uid");return e?this.encryptionService.decrypt(e):""}catch{return""}}onSubmit(){if(this.form.invalid||this.submitting)return;this.submitting=!0;let e=this.form.value;if(this.isEditMode&&this.batchId)this.cohortService.updateBatch(this.batchId,{title:{en:e.titleEn,fr:e.titleFr},description:{en:e.descriptionEn,fr:e.descriptionFr},maxStudents:e.maxStudents,pricingCAD:e.pricingCAD,pricingEGP:e.pricingEGP,tcfPrepEnabled:!!e.tcfPrepEnabled,daysOfCourse:e.daysOfCourse,sessionTime:e.sessionTime,sessionDuration:e.sessionDuration,whatsappGroupUrls:this.whatsappGroupUrls}).subscribe({next:n=>{this.submitting=!1,n?.success&&this.router.navigate(["/main/dashboard/cohorts/batches",this.batchId])},error:()=>{this.submitting=!1}});else{let n={language:e.language,title:{en:e.titleEn,fr:e.titleFr},description:{en:e.descriptionEn,fr:e.descriptionFr},instructorId:this.getCurrentInstructorId(),startDate:e.startDate,maxStudents:e.maxStudents,pricingCAD:e.pricingCAD,pricingEGP:e.pricingEGP,daysOfCourse:e.daysOfCourse,sessionTime:e.sessionTime,sessionDuration:e.sessionDuration};e.isTemplate&&(n.isTemplate=!0),e.tcfPrepEnabled&&(n.tcfPrepEnabled=!0);let i=this.buildLevelScheduleOverrides();Object.keys(i).length>0&&(n.levelScheduleOverrides=i),this.cohortService.createBatch(n).subscribe({next:l=>{this.submitting=!1,l?.success&&this.router.navigate(["/main/dashboard/cohorts/batches",l.data.batchId])},error:()=>{this.submitting=!1}})}}goBack(){let e=this.isEditMode&&this.batchId?["/main/dashboard/cohorts/batches",this.batchId]:["/main/dashboard/cohorts/batches"];this.navigationHistory.goBackOrFallback(e)}toggleDay(e){let n=this.form.value.daysOfCourse||[],i=n.indexOf(e);i>=0?n.splice(i,1):n.push(e),this.form.patchValue({daysOfCourse:[...n]})}isDaySelected(e){return(this.form.value.daysOfCourse||[]).includes(e)}toggleLevelSchedules(){if(this.showLevelSchedules=!this.showLevelSchedules,this.showLevelSchedules&&Object.keys(this.levelScheduleOverrides).length===0)for(let e of this.levelsConfig)this.levelScheduleOverrides[e.level]={}}getLevelOverrideDays(e){return this.levelScheduleOverrides[e]?.daysOfCourse||[]}toggleLevelDay(e,n){this.levelScheduleOverrides[e]||(this.levelScheduleOverrides[e]={});let i=this.levelScheduleOverrides[e].daysOfCourse||[],l=i.indexOf(n);l>=0?i.splice(l,1):i.push(n),this.levelScheduleOverrides[e].daysOfCourse=[...i]}isLevelDaySelected(e,n){return(this.levelScheduleOverrides[e]?.daysOfCourse||[]).includes(n)}buildLevelScheduleOverrides(){let e={};for(let[n,i]of Object.entries(this.levelScheduleOverrides)){let l={};i.daysOfCourse?.length&&(l.daysOfCourse=i.daysOfCourse),i.sessionTime&&(l.sessionTime=i.sessionTime),i.sessionDuration&&(l.sessionDuration=i.sessionDuration),Object.keys(l).length>0&&(e[n]=l)}return e}trackByIndex(e){return e}static{this.\u0275fac=function(n){return new(n||t)(w(nt),w(te),w(ue),w(de),w(We),w(ji),w(oo),w(fe))}}static{this.\u0275cmp=H({type:t,selectors:[["app-batch-form"]],decls:11,vars:10,consts:[[1,"batch-form-container"],[1,"header"],[1,"btn-back",3,"click"],["class","loading-state",4,"ngIf"],["class","form-content",3,"formGroup","ngSubmit",4,"ngIf"],[1,"loading-state"],[1,"form-content",3,"ngSubmit","formGroup"],["class","form-section",4,"ngIf"],[1,"form-section"],[1,"form-group","checkbox-group"],["type","checkbox","formControlName","tcfPrepEnabled"],[1,"field-hint"],[1,"form-row"],[1,"form-group"],["type","text","formControlName","titleEn","placeholder","e.g. French Batch - January 2026"],["type","text","formControlName","titleFr","placeholder","ex. Lot Fran\xE7ais - Janvier 2026"],["formControlName","descriptionEn","rows","3"],["formControlName","descriptionFr","rows","3"],["class","form-group",4,"ngIf"],["type","time","formControlName","sessionTime"],["type","number","formControlName","sessionDuration","min","30"],[1,"days-selector"],["type","button","class","day-chip",3,"selected","click",4,"ngFor","ngForOf","ngForTrackBy"],["type","number","formControlName","maxStudents","min","1","max","20"],["type","number","formControlName","pricingCAD"],["type","number","formControlName","pricingEGP"],[1,"whatsapp-levels"],["class","whatsapp-level-row",4,"ngFor","ngForOf","ngForTrackBy"],[1,"form-actions"],["type","button",1,"btn-secondary",3,"click"],["type","submit",1,"btn-primary",3,"disabled"],["type","checkbox","formControlName","isTemplate"],["formControlName","language"],[3,"value",4,"ngFor","ngForOf","ngForTrackBy"],[3,"value"],["type","date","formControlName","startDate"],["type","button",1,"day-chip",3,"click"],[1,"whatsapp-level-row"],[1,"whatsapp-label"],["type","url","placeholder","https://chat.whatsapp.com/...",1,"whatsapp-input",3,"input","value"],[1,"section-desc"],[1,"levels-table"],[4,"ngFor","ngForOf","ngForTrackBy"],[1,"level-schedules-toggle"],["type","button",1,"btn-link",3,"click"],["class","level-schedules",4,"ngIf"],[1,"level-schedules"],["class","level-schedule-row",4,"ngFor","ngForOf","ngForTrackBy"],[1,"level-schedule-row"],[1,"level-schedule-header"],[1,"level-schedule-fields"],[1,"form-group","compact"],[1,"days-selector","compact"],["type","button","class","day-chip small",3,"selected","click",4,"ngFor","ngForOf","ngForTrackBy"],["type","time",3,"change","value"],["type","number","min","30",3,"change","value"],["type","button",1,"day-chip","small",3,"click"]],template:function(n,i){n&1&&(a(0,"div",0)(1,"div",1)(2,"button",2),x("click",function(){return i.goBack()}),s(3),_(4,"translate"),r(),a(5,"h2"),s(6),_(7,"translate"),_(8,"translate"),r()(),h(9,Ya,4,3,"div",3)(10,ls,101,68,"form",4),r()),n&2&&(o(3),b("\u2190 ",m(4,4,"COMMON.BACK"),""),o(3),g(i.isEditMode?m(7,6,"FR_DASHBOARD.EDIT_BATCH"):m(8,8,"FR_DASHBOARD.CREATE_BATCH")),o(3),p("ngIf",i.loading),o(),p("ngIf",!i.loading))},dependencies:[Q,$,je,re,ae,ie,Ve,Ke,Ce,Y,$e,Qe,dn,et,tt,j],styles:[".batch-form-container[_ngcontent-%COMP%]{padding:24px;max-width:900px}.batch-form-container[_ngcontent-%COMP%] .header[_ngcontent-%COMP%]{margin-bottom:24px}.batch-form-container[_ngcontent-%COMP%] .header[_ngcontent-%COMP%] .btn-back[_ngcontent-%COMP%]{background:none;border:none;color:#6b7280;cursor:pointer;padding:0;margin-bottom:8px;font-size:14px}.batch-form-container[_ngcontent-%COMP%] .header[_ngcontent-%COMP%] .btn-back[_ngcontent-%COMP%]:hover{color:#374151}.batch-form-container[_ngcontent-%COMP%] .header[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0;font-size:24px;font-weight:600}.batch-form-container[_ngcontent-%COMP%] .form-section[_ngcontent-%COMP%]{background:#fff;border:1px solid #e5e7eb;border-radius:12px;padding:20px;margin-bottom:16px}.batch-form-container[_ngcontent-%COMP%] .form-section[_ngcontent-%COMP%] h3[_ngcontent-%COMP%]{margin:0 0 16px;font-size:16px;font-weight:600}.batch-form-container[_ngcontent-%COMP%] .form-section[_ngcontent-%COMP%] .section-desc[_ngcontent-%COMP%]{color:#6b7280;font-size:14px;margin-bottom:12px}.batch-form-container[_ngcontent-%COMP%] .form-row[_ngcontent-%COMP%]{display:flex;gap:16px;flex-wrap:wrap}.batch-form-container[_ngcontent-%COMP%] .form-row[_ngcontent-%COMP%] .form-group[_ngcontent-%COMP%]{flex:1;
1min-width:200px}.batch-form-container[_ngcontent-%COMP%] .form-group[_ngcontent-%COMP%]{margin-bottom:12px}.batch-form-container[_ngcontent-%COMP%] .form-group[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{display:block;font-size:14px;font-weight:500;color:#374151;margin-bottom:4px}.batch-form-container[_ngcontent-%COMP%] .form-group[_ngcontent-%COMP%] input[_ngcontent-%COMP%], .batch-form-container[_ngcontent-%COMP%] .form-group[_ngcontent-%COMP%] textarea[_ngcontent-%COMP%]{width:100%;padding:8px 12px;border:1px solid #d1d5db;border-radius:8px;font-size:14px;box-sizing:border-box}.batch-form-container[_ngcontent-%COMP%] .form-group[_ngcontent-%COMP%] input[_ngcontent-%COMP%]:focus, .batch-form-container[_ngcontent-%COMP%] .form-group[_ngcontent-%COMP%] textarea[_ngcontent-%COMP%]:focus{outline:none;border-color:#4f46e5;box-shadow:0 0 0 2px #4f46e51a}.batch-form-container[_ngcontent-%COMP%] .days-selector[_ngcontent-%COMP%]{display:flex;gap:8px;flex-wrap:wrap}.batch-form-container[_ngcontent-%COMP%] .days-selector[_ngcontent-%COMP%] .day-chip[_ngcontent-%COMP%]{padding:8px 16px;border:1px solid #d1d5db;border-radius:20px;background:#fff;cursor:pointer;font-size:13px}.batch-form-container[_ngcontent-%COMP%] .days-selector[_ngcontent-%COMP%] .day-chip.selected[_ngcontent-%COMP%]{background:#4f46e5;color:#fff;border-color:#4f46e5}.batch-form-container[_ngcontent-%COMP%] .days-selector[_ngcontent-%COMP%] .day-chip[_ngcontent-%COMP%]:hover:not(.selected){border-color:#4f46e5}.batch-form-container[_ngcontent-%COMP%] .levels-table[_ngcontent-%COMP%]{width:100%;border-collapse:collapse}.batch-form-container[_ngcontent-%COMP%] .levels-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%], .batch-form-container[_ngcontent-%COMP%] .levels-table[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{padding:10px 16px;text-align:left;border-bottom:1px solid #e5e7eb;font-size:14px}.batch-form-container[_ngcontent-%COMP%] .levels-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%]{color:#6b7280;font-weight:500}.batch-form-container[_ngcontent-%COMP%] .levels-table[_ngcontent-%COMP%] tfoot[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{border-top:2px solid #374151;font-weight:600}.batch-form-container[_ngcontent-%COMP%] .checkbox-group[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px;cursor:pointer}.batch-form-container[_ngcontent-%COMP%] .checkbox-group[_ngcontent-%COMP%] label[_ngcontent-%COMP%] input[type=checkbox][_ngcontent-%COMP%]{width:auto}.batch-form-container[_ngcontent-%COMP%] .checkbox-group[_ngcontent-%COMP%] .field-hint[_ngcontent-%COMP%]{color:#6b7280;font-size:13px;margin:4px 0 0 26px}.batch-form-container[_ngcontent-%COMP%] .level-schedules-toggle[_ngcontent-%COMP%]{margin-top:16px}.batch-form-container[_ngcontent-%COMP%] .level-schedules-toggle[_ngcontent-%COMP%] .btn-link[_ngcontent-%COMP%]{background:none;border:none;color:#4f46e5;cursor:pointer;padding:0;font-size:14px;font-weight:500}.batch-form-container[_ngcontent-%COMP%] .level-schedules-toggle[_ngcontent-%COMP%] .btn-link[_ngcontent-%COMP%]:hover{text-decoration:underline}.batch-form-container[_ngcontent-%COMP%] .level-schedules[_ngcontent-%COMP%]{margin-top:12px;border-top:1px solid #e5e7eb;padding-top:12px}.batch-form-container[_ngcontent-%COMP%] .level-schedules[_ngcontent-%COMP%] .level-schedule-row[_ngcontent-%COMP%]{display:flex;align-items:flex-start;gap:16px;padding:8px 0;border-bottom:1px solid #f3f4f6}.batch-form-container[_ngcontent-%COMP%] .level-schedules[_ngcontent-%COMP%] .level-schedule-row[_ngcontent-%COMP%] .level-schedule-header[_ngcontent-%COMP%]{min-width:50px;padding-top:4px}.batch-form-container[_ngcontent-%COMP%] .level-schedules[_ngcontent-%COMP%] .level-schedule-row[_ngcontent-%COMP%] .level-schedule-fields[_ngcontent-%COMP%]{display:flex;gap:12px;flex-wrap:wrap;flex:1}.batch-form-container[_ngcontent-%COMP%] .level-schedules[_ngcontent-%COMP%] .form-group.compact[_ngcontent-%COMP%]{margin-bottom:0}.batch-form-container[_ngcontent-%COMP%] .level-schedules[_ngcontent-%COMP%] .form-group.compact[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{font-size:12px;margin-bottom:2px}.batch-form-container[_ngcontent-%COMP%] .level-schedules[_ngcontent-%COMP%] .form-group.compact[_ngcontent-%COMP%] input[_ngcontent-%COMP%]{padding:4px 8px;font-size:13px;width:100px}.batch-form-container[_ngcontent-%COMP%] .level-schedules[_ngcontent-%COMP%] .days-selector.compact[_ngcontent-%COMP%]{gap:4px}.batch-form-container[_ngcontent-%COMP%] .level-schedules[_ngcontent-%COMP%] .days-selector.compact[_ngcontent-%COMP%] .day-chip.small[_ngcontent-%COMP%]{padding:4px 8px;font-size:11px}.batch-form-container[_ngcontent-%COMP%] .form-actions[_ngcontent-%COMP%]{display:flex;gap:12px;justify-content:flex-end;margin-top:24px}.batch-form-container[_ngcontent-%COMP%] .btn-primary[_ngcontent-%COMP%]{background:#4f46e5;color:#fff;border:none;padding:10px 24px;border-radius:8px;
1cursor:pointer;font-weight:500}.batch-form-container[_ngcontent-%COMP%] .btn-primary[_ngcontent-%COMP%]:hover:not(:disabled){background:#4338ca}.batch-form-container[_ngcontent-%COMP%] .btn-primary[_ngcontent-%COMP%]:disabled{opacity:.6;cursor:not-allowed}.batch-form-container[_ngcontent-%COMP%] .btn-secondary[_ngcontent-%COMP%]{background:#fff;color:#374151;border:1px solid #d1d5db;padding:10px 24px;border-radius:8px;cursor:pointer}.batch-form-container[_ngcontent-%COMP%] .btn-secondary[_ngcontent-%COMP%]:hover{background:#f3f4f6}.batch-form-container[_ngcontent-%COMP%] .whatsapp-levels[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:8px}.batch-form-container[_ngcontent-%COMP%] .whatsapp-level-row[_ngcontent-%COMP%]{display:flex;align-items:center;gap:12px}.batch-form-container[_ngcontent-%COMP%] .whatsapp-label[_ngcontent-%COMP%]{min-width:50px;font-size:14px;font-weight:600;color:#374151}.batch-form-container[_ngcontent-%COMP%] .whatsapp-input[_ngcontent-%COMP%]{flex:1;padding:8px 12px;border:1px solid #d1d5db;border-radius:8px;font-size:14px;box-sizing:border-box}.batch-form-container[_ngcontent-%COMP%] .whatsapp-input[_ngcontent-%COMP%]:focus{outline:none;border-color:#25d366;box-shadow:0 0 0 2px #25d3661a}.batch-form-container[_ngcontent-%COMP%] .loading-state[_ngcontent-%COMP%]{text-align:center;padding:48px;color:#6b7280}"]})}}return t})();var ds=["modalElement"],ri=(t,c)=>c.id;function ps(t,c){if(t&1){let e=M();a(0,"button",31),x("click",function(){C(e);let i=d().$implicit,l=d(2);return f(l.removeEmailInput(i.id))}),v(1,"img",32),r()}if(t&2){let e=d(3);p("disabled",e.isSubmitting)}}function _s(t,c){if(t&1){let e=M();a(0,"div",21)(1,"input",29),T("ngModelChange",function(i){let l=C(e).$implicit;return A(l.value,i)||(l.value=i),f(i)}),r(),h(2,ps,2,1,"button",30),r()}if(t&2){let e=c.$implicit,n=d(2);o(),k("ngModel",e.value),p("disabled",n.isSubmitting),o(),P(2,n.emailInputs.length>1?2:-1)}}function ms(t,c){t&1&&(a(0,"span",34),s(1),_(2,"translate"),r()),t&2&&(o(),b(" ",m(2,1,"GROUP_CLASSES_ADMIN.DRY_RUN")," "))}function gs(t,c){if(t&1&&(a(0,"span",45),s(1),r()),t&2){let e=c.$implicit;o(),g(e)}}function us(t,c){if(t&1&&(a(0,"div",41)(1,"h6"),v(2,"img",43),s(3),_(4,"translate"),r(),a(5,"div",44),z(6,gs,2,1,"span",45,De),r()()),t&2){let e=d(3);o(3),b(" ",m(4,1,"GROUP_CLASSES_ADMIN.SUCCESSFUL_REGISTRATIONS")," "),o(3),K(e.registrationResult.successful)}}function Cs(t,c){if(t&1&&(a(0,"div",48)(1,"span",49),s(2),r(),a(3,"span",50),s(4),r()()),t&2){let e=c.$implicit;o(2),g(e.email),o(2),g(e.reason)}}function fs(t,c){if(t&1&&(a(0,"div",42)(1,"h6"),v(2,"img",46),s(3),_(4,"translate"),r(),a(5,"div",47),z(6,Cs,5,2,"div",48,De),r()()),t&2){let e=d(3);o(3),b(" ",m(4,1,"GROUP_CLASSES_ADMIN.FAILED_REGISTRATIONS")," "),o(3),K(e.registrationResult.failed)}}function hs(t,c){if(t&1&&(a(0,"div",28)(1,"div",33)(2,"h5"),s(3),_(4,"translate"),r(),h(5,ms,3,3,"span",34),r(),a(6,"div",35)(7,"div",36)(8,"span",37),s(9),_(10,"translate"),r(),a(11,"span",38),s(12),r()(),a(13,"div",39)(14,"span",37),s(15),_(16,"translate"),r(),a(17,"span",38),s(18),r()(),a(19,"div",40)(20,"span",37),s(21),_(22,"translate"),r(),a(23,"span",38),s(24),r()()(),h(25,us,8,3,"div",41)(26,fs,8,3,"div",42),r()),t&2){let e=d(2);o(3),g(m(4,10,"GROUP_CLASSES_ADMIN.RESULTS")),o(2),P(5,e.registrationResult.dryRun?5:-1),o(4),g(m(10,12,"GROUP_CLASSES_ADMIN.TOTAL_PROCESSED")),o(3),g(e.registrationResult.totalProcessed),o(3),g(m(16,14,"GROUP_CLASSES_ADMIN.SUCCESSFUL")),o(3),g(e.registrationResult.successCount),o(3),g(m(22,16,"GROUP_CLASSES_ADMIN.FAILED")),o(3),g(e.registrationResult.failureCount),o(),P(25,e.registrationResult.successful&&e.registrationResult.successful.length>0?25:-1),o(),P(26,e.registrationResult.failed&&e.registrationResult.failed.length>0?26:-1)}}function xs(t,c){if(t&1){let e=M();a(0,"div",18)(1,"label",19),s(2),_(3,"translate"),r(),a(4,"div",20),z(5,_s,3,3,"div",21,ri),r(),a(7,"button",22),x("click",function(){C(e);let i=d();return f(i.addEmailInput())}),a(8,"span"),s(9,"+"),r(),s(10),_(11,"translate"),r()(),a(12,"div",23)(13,"div",24)(14,"input",25),x("change",function(){C(e);let i=d();return f(i.toggleDryRun())}),r(),a(15,"label",26),s(16),_(17,"translate"),r()(),a(18,"p",27),s(19),_(20,"translate"),r()(),h(21,hs,27,18,"div",28)}if(t&2){let e=d();o(2),b(" ",m(3,8,"GROUP_CLASSES_ADMIN.EMAIL_ADDRESSES")," "),o(3),K(e.emailInputs),o(2),p("disabled",e.isSubmitting),o(3),b(" ",m(11,10,"GROUP_CLASSES_ADMIN.ADD_ANOTHER_EMAIL")," "),o(4),p("checked",e.dryRun)("disabled",e.isSubmitting),o(2),b(" ",m(17,12,"GROUP_CLASSES_ADMIN.DRY_RUN")," "),o(3),b(" ",m(20,14,"GROUP_CLASSES_ADMIN.DRY_RUN_DESCRIPTION")," "),o(2),P(21,e.showResults&&e.registrationResult?21:-1)}}function bs(t,c){t&1&&(a(0,"div",51),v(1,"span",53),s(2),_(3,"translate"),r()),t&2&&(o(2),b(" ",m(3,1,"GROUP_CLASSES_ADMIN.LOADING_USERS")," "))}function vs(t,c){t&1&&(a(0,"div",52)(1,"p"),s(2),_(3,"translate"),r()()),t&2&&(o(2),g(m(3,1,"GROUP_CLASSES_ADMIN.NO_REGISTERED_USERS")))}
1function Os(t,c){if(t&1&&(a(0,"option",57),s(1),r()),t&2){let e=c.$implicit;p("value",e.id),o(),N(" ",e.userName," (",e.userEmail,") ")}}function Ms(t,c){if(t&1&&(a(0,"div",58)(1,"div",60)(2,"span",61),s(3),_(4,"translate"),r(),a(5,"span",62),s(6),r()(),a(7,"div",60)(8,"span",61),s(9),_(10,"translate"),r(),a(11,"span",62),s(12),r()(),a(13,"div",60)(14,"span",61),s(15),_(16,"translate"),r(),a(17,"span",63),s(18),r()()()),t&2){let e=d(3);o(3),b("",m(4,6,"GROUP_CLASSES_ADMIN.USER_NAME"),":"),o(3),g(e.selectedUser.userName),o(3),b("",m(10,8,"GROUP_CLASSES_ADMIN.USER_EMAIL"),":"),o(3),g(e.selectedUser.userEmail),o(3),b("",m(16,10,"GROUP_CLASSES_ADMIN.STATUS"),":"),o(3),g(e.selectedUser.status)}}function Ps(t,c){t&1&&v(0,"span",71)}function Ss(t,c){if(t&1){let e=M();a(0,"div",59)(1,"div",64),v(2,"img",65),r(),a(3,"h5"),s(4),_(5,"translate"),r(),a(6,"p",66),s(7),_(8,"translate"),r(),a(9,"div",67)(10,"div",60)(11,"span",61),s(12),_(13,"translate"),r(),a(14,"span",62),s(15),r()(),a(16,"div",60)(17,"span",61),s(18),_(19,"translate"),r(),a(20,"span",62),s(21),r()(),a(22,"div",60)(23,"span",61),s(24),_(25,"translate"),r(),a(26,"span",62),s(27),r()()(),a(28,"div",68)(29,"button",69),x("click",function(){C(e);let i=d(3);return f(i.cancelDelete())}),s(30),_(31,"translate"),r(),a(32,"button",70),x("click",function(){C(e);let i=d(3);return f(i.confirmDelete())}),h(33,Ps,1,0,"span",71),s(34),_(35,"translate"),r()()()}if(t&2){let e=d(3);o(4),g(m(5,13,"GROUP_CLASSES_ADMIN.CONFIRM_DELETE")),o(3),b(" ",m(8,15,"GROUP_CLASSES_ADMIN.CONFIRM_DELETE_MESSAGE")," "),o(5),b("",m(13,17,"GROUP_CLASSES_ADMIN.USER_NAME"),":"),o(3),g(e.selectedUser.userName),o(3),b("",m(19,19,"GROUP_CLASSES_ADMIN.USER_ID"),":"),o(3),g(e.selectedUser.id),o(3),b("",m(25,21,"GROUP_CLASSES_ADMIN.USER_EMAIL"),":"),o(3),g(e.selectedUser.userEmail),o(2),p("disabled",e.isDeleting),o(),b(" ",m(31,23,"GROUP_CLASSES_ADMIN.CANCEL")," "),o(2),p("disabled",e.isDeleting),o(),P(33,e.isDeleting?33:-1),o(),b(" ",m(35,25,"GROUP_CLASSES_ADMIN.CONFIRM")," ")}}function ws(t,c){if(t&1){let e=M();a(0,"div",54)(1,"select",55),x("change",function(i){C(e);let l=d(2);return f(l.onUserSelected(i))}),a(2,"option",56),s(3),_(4,"translate"),r(),z(5,Os,2,3,"option",57,ri),r()(),h(7,Ms,19,12,"div",58)(8,Ss,36,27,"div",59)}if(t&2){let e=d(2);o(),p("disabled",e.isDeleting),o(2),g(m(4,4,"GROUP_CLASSES_ADMIN.SELECT_USER")),o(2),K(e.registeredUsers),o(2),P(7,e.selectedUser&&!e.showDeleteConfirmation?7:-1),o(),P(8,e.showDeleteConfirmation&&e.selectedUser?8:-1)}}function Es(t,c){if(t&1&&(a(0,"div",14)(1,"label",19),s(2),_(3,"translate"),r(),h(4,bs,4,3,"div",51)(5,vs,4,3,"div",52)(6,ws,9,6),r()),t&2){let e=d();o(2),b(" ",m(3,4,"GROUP_CLASSES_ADMIN.SELECT_USER_TO_DELETE")," "),o(2),P(4,e.isLoadingUsers?4:-1),o(),P(5,!e.isLoadingUsers&&e.registeredUsers.length===0?5:-1),o(),P(6,!e.isLoadingUsers&&e.registeredUsers.length>0?6:-1)}}function Is(t,c){t&1&&(a(0,"div",51),v(1,"span",53),s(2),_(3,"translate"),r()),t&2&&(o(2),b(" ",m(3,1,"GROUP_CLASSES_ADMIN.LOADING_USERS")," "))}function ys(t,c){t&1&&(a(0,"div",52)(1,"p"),s(2),_(3,"translate"),r()()),t&2&&(o(2),g(m(3,1,"GROUP_CLASSES_ADMIN.NO_REGISTERED_USERS")))}function ks(t,c){if(t&1&&v(0,"img",76),t&2){let e=d().$implicit;p("src",e.photoUrl,le)("alt",e.userName)}}function As(t,c){if(t&1&&(a(0,"div",85),s(1),r()),t&2){let e=d().$implicit;o(),g(e.userName.charAt(0).toUpperCase())}}function Ts(t,c){if(t&1&&(a(0,"div",80),s(1),r()),t&2){let e=d().$implicit;o(),g(e.phoneNumber)}}function Rs(t,c){if(t&1&&(a(0,"span",86),s(1),r()),t&2){let e=d().$implicit;y("payment-completed",e.paymentStatus==="completed")("payment-pending",e.paymentStatus==="pending")("payment-failed",e.paymentStatus==="failed"),o(),b(" ",e.paymentStatus," ")}}function Ds(t,c){if(t&1&&(a(0,"span",84),s(1),r()),t&2){let e=d().$implicit,n=d(3);o(),g(n.formatDate(e.registrationDate))}}function Bs(t,c){if(t&1&&(a(0,"div",74)(1,"div",75),h(2,ks,1,2,"img",76)(3,As,2,1),r(),a(4,"div",77)(5,"div",78),s(6),r(),a(7,"div",79),s(8),r(),h(9,Ts,2,1,"div",80),r(),a(10,"div",81)(11,"span",82),s(12),r(),h(13,Rs,2,7,"span",83)(14,Ds,2,1,"span",84),r()()),t&2){let e=c.$implicit;o(2),P(2,e.photoUrl?2:3),o(4),g(e.userName),o(2),g(e.userEmail),o(),P(9,e.phoneNumber?9:-1),o(2),y("status-registered",e.status==="registered")("status-cancelled",e.status==="cancelled"),o(),b(" ",e.status," "),o(),P(13,e.paymentStatus?13:-1),o(),P(14,e.registrationDate?14:-1)}}function Ls(t,c){if(t&1&&(a(0,"div",72)(1,"span"),s(2),_(3,"translate"),r()(),a(4,"div",73),z(5,Bs,15,11,"div",74,ri),r()),t&2){let e=d(2);o(2),N("",e.registeredUsers.length," ",m(3,2,"GROUP_CLASSES_ADMIN.REGISTERED_USERS"),""),o(3),K(e.registeredUsers)}}function Ns(t,c){if(t&1&&(a(0,"div",15),h(1,Is,4,3,"div",51)(2,ys,4,3,"div",52)(3,Ls,7,4),r()),t&2){let e=d();o(),P(1,e.isLoadingUsers?1:-1),o(),P(2,!e.isLoadingUsers&&e.registeredUsers.length===0?2:-1),o(),P(3,!e.isLoadingUsers&&e.registeredUsers.length>0?3:-1)}}function Vs(t,c){t&1&&v(0,"span",71)}function Fs(t,c){if(t&1){let e=M();a(0,"button",87),x("click",function(){C(e);let i=d();return f(i.closeModal())}),s(1),_(2,"translate"),r(),a(3,"button",88),x("click",function(){C(e);let i=d();return f(i.onSubmit())}),h(4,Vs,1,0,"span",71),s(5),_(6,"translate"),r()}if(t&2){let e=d();p("disabled",e.isSubmitting),o(),b(" ",m(2,5,"GROUP_CLASSES_ADMIN.CLOSE")," "),o(2),p("disabled",!e.canSubmit()),o(),P(4,e.isSubmitting?4:-1),o(),b(" ",m(6,7,e.dryRun?"GROUP_CLASSES_ADMIN.TEST_REGISTRATION":"GROUP_CLASSES_ADMIN.REGISTER_USERS")," ")}}function Us(t,c){if(t&1){let e=M();a(0,"button",90),x("click",function(){C(e);let i=d(2);return f(i.showConfirmation())}),s(1),_(2,"translate"),r()}if(t&2){let e=d(2);p("disabled",!e.selectedUser||e.isDeleting),o(),b(" ",m(2,2,"GROUP_CLASSES_ADMIN.DELETE_USER")," ")}}function Hs(t,c){if(t&1){let e=M();a(0,"button",87),x("click",function(){C(e);let i=d();return f(i.closeModal())}),s(1),_(2,"translate"),r(),h(3,Us,3,4,"button",89)}if(t&2){let e=d();p("disabled",e.isDeleting),o(),b(" ",m(2,3,"GROUP_CLASSES_ADMIN.CLOSE")," "),o(2),P(3,e.showDeleteConfirmation?-1:3)}}function Gs(t,c){if(t&1){let e=M();a(0,"button",91),x("click",function(){C(e);let i=d();return f(i.closeModal())}),s(1),_(2,"translate"),r()}t&2&&(o(),b(" ",m(2,1,"GROUP_CLASSES_ADMIN.CLOSE")," "))}var An=(()=>{class t{constructor(e,n,i){this._http=e,this._toast=n,this._groupClassesService=i,this.modalId="cohortUserManagementModal",this.courseId="",this.courseTitle="",this.batchId="",this.registrationComplete=new Le,this.activeTab="add",this.emailInputs=[{id:1,value:""}],this.nextId=2,this.dryRun=!1,this.isSubmitting=!1,this.registrationResult=null,this.showResults=!1,this.registeredUsers=[],this.selectedUser=null,this.isLoadingUsers=!1,this.isDeleting=!1,this.showDeleteConfirmation=!1}addEmailInput(){this.emailInputs.push({id:this.nextId++,value:""})}removeEmailInput(e){this.emailInputs.length>1&&(this.emailInputs=this.emailInputs.filter(n=>n.id!==e))}toggleDryRun(){this.dryRun=!this.dryRun}isValidEmail(e){return/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(e)}
1getValidEmails(){return this.emailInputs.map(e=>e.value.trim()).filter(e=>e&&this.isValidEmail(e))}canSubmit(){return this.getValidEmails().length>0&&!this.isSubmitting}onSubmit(){let e=this.getValidEmails();if(e.length===0){this._toast.error("Please enter at least one valid email address");return}this.isSubmitting=!0,this.showResults=!1,this.registrationResult=null;let n={emails:e,dryRun:this.dryRun};this._http.postReq(`live-sessions-v2/admin/group-courses/${this.courseId}/bulk-manual-registration`,n).subscribe({next:i=>{console.log("API Response:",i),this.registrationResult={success:i.success,dryRun:i.dryRun,message:i.message,courseId:i.courseId,courseTitle:i.courseTitle,totalProcessed:i.totalProcessed,successCount:i.successCount,failureCount:i.failureCount,successful:i.successful?.map(l=>l.email||l)||[],failed:i.failed||[]},this.showResults=!0,console.log("Registration Result:",this.registrationResult),console.log("Show Results:",this.showResults),this.dryRun?this._toast.info(i.message):(i.successCount>0&&this._toast.success(`Successfully registered ${i.successCount} user(s)`,"Success"),i.failureCount>0&&this._toast.warn(`${i.failureCount} registration(s) failed`))},error:i=>{this.isSubmitting=!1,this._toast.error(i?.error?.message||"Registration failed")},complete:()=>{this.isSubmitting=!1,!this.dryRun&&this.registrationResult?.successCount>0&&this.registrationComplete.emit()}})}resetModal(){this.activeTab="add",this.emailInputs=[{id:1,value:""}],this.nextId=2,this.dryRun=!1,this.isSubmitting=!1,this.registrationResult=null,this.showResults=!1,this.registeredUsers=[],this.selectedUser=null,this.isLoadingUsers=!1,this.isDeleting=!1,this.showDeleteConfirmation=!1}openModal(){this.modalElement&&(this.modalInstance=new bootstrap.Modal(this.modalElement.nativeElement,{backdrop:"static",keyboard:!1}),this.modalInstance.show())}closeModal(){this.modalInstance&&(this.modalInstance.hide(),setTimeout(()=>{this.resetModal()},300))}onModalHidden(){setTimeout(()=>{this.resetModal()},300)}formatDate(e){return e?new Date(e._seconds*1e3).toLocaleDateString():"-"}switchTab(e){this.activeTab=e,(e==="delete"||e==="registered")&&this.loadRegisteredUsers()}loadRegisteredUsers(){this.courseId&&(this.isLoadingUsers=!0,this.registeredUsers=[],this.selectedUser=null,this._groupClassesService.getRegisteredUsers(this.courseId,this.batchId).subscribe({next:e=>{this.registeredUsers=e.data||[],this.isLoadingUsers=!1},error:e=>{this.isLoadingUsers=!1,this._toast.error(e?.error?.message||"Failed to load registered users")}}))}onUserSelected(e){let i=e.target.value;this.selectedUser=this.registeredUsers.find(l=>l.id===i)||null,this.showDeleteConfirmation=!1}showConfirmation(){this.selectedUser&&(this.showDeleteConfirmation=!0)}cancelDelete(){this.showDeleteConfirmation=!1}confirmDelete(){!this.selectedUser||!this.courseId||(this.isDeleting=!0,this._groupClassesService.deleteUserRegistration(this.courseId,this.selectedUser.id).subscribe({next:e=>{this._toast.success(e.message||"User removed successfully"),this.isDeleting=!1,this.showDeleteConfirmation=!1,this.selectedUser=null,this.loadRegisteredUsers(),this.registrationComplete.emit()},error:e=>{this.isDeleting=!1,this._toast.error(e?.error?.message||"Failed to remove user")}}))}static{this.\u0275fac=function(n){return new(n||t)(w(Fe),w(he),w(Zn))}}static{this.\u0275cmp=H({type:t,selectors:[["app-cohort-user-management-modal"]],viewQuery:function(n,i){if(n&1&&_e(ds,5),n&2){let l;me(l=ge())&&(i.modalElement=l.first)}},inputs:{modalId:"modalId",courseId:"courseId",courseTitle:"courseTitle",batchId:"batchId"},outputs:{registrationComplete:"registrationComplete"},decls:34,vars:28,consts:[["modalElement",""],["tabindex","-1","aria-hidden","true",1,"modal","fade",3,"hidden.bs.modal","id"],[1,"modal-dialog","modal
1-dialog-centered","modal-lg"],[1,"modal-content"],[1,"modal-header"],[1,"header-content"],[1,"modal-title",3,"id"],[1,"course-title"],["type","button","data-bs-dismiss","modal","aria-label","Close",1,"btn-close"],[1,"modal-tabs"],[1,"nav","nav-tabs"],[1,"nav-item"],[1,"nav-link",3,"click"],[1,"modal-body"],[1,"delete-user-section"],[1,"registered-users-section"],[1,"modal-footer"],["type","button",1,"btn","btn-cancel"],[1,"email-section"],[1,"section-label"],[1,"email-inputs"],[1,"email-input-row"],["type","button",1,"btn","btn-add-email",3,"click","disabled"],[1,"dry-run-section"],[1,"form-check","form-switch","dry-run-toggle"],["type","checkbox","id","dryRunToggle",1,"form-check-input",3,"change","checked","disabled"],["for","dryRunToggle",1,"form-check-label"],[1,"dry-run-description"],[1,"results-section"],["type","email","placeholder","[email protected]",1,"form-control","email-input",3,"ngModelChange","ngModel","disabled"],["type","button",1,"btn","btn-remove",3,"disabled"],["type","button",1,"btn","btn-remove",3,"click","disabled"],["loading","lazy","src","assets/images/mainPages/live-session/group-session/close.svg","alt","remove"],[1,"results-header"],[1,"dry-run-badge"],[1,"results-summary"],[1,"stat-item"],[1,"stat-label"],[1,"stat-value"],[1,"stat-item","success"],[1,"stat-item","failure"],[1,"results-list","success-list"],[1,"results-list","failed-list"],["loading","lazy","src","assets/images/mainPages/live-session/group-session/check.svg","alt","success"],[1,"email-list"],[1,"email-badge","success-badge"],["loading","lazy","src","assets/images/mainPages/live-session/group-session/close.svg","alt","failed"],[1,"failed-items"],[1,"failed-item"],[1,"email-badge","failed-badge"],[1,"reason"],[1,"loading-state"],[1,"no-users-state"],["role","status",1,"spinner-border","spinner-border-sm","me-2"],[1,"user-dropdown-container"],[1,"form-select","user-select",3,"change","disabled"],["value",""],[3,"value"],[1,"selected-user-info"],[1,"delete-confirmation"],[1,"user-detail"],[1,"label"],[1,"value"],[1,"value","status-badge"],[1,"confirmation-icon"],["loading","lazy","src","assets/images/mainPages/live-session/group-session/close.svg","alt","warning"],[1,"confirmation-message"],[1,"user-to-delete"],[1,"confirmation-actions"],["type","button",1,"btn","btn-cancel-delete",3,"click","disabled"],["type","button",1,"btn","btn-confirm-delete",3,"click","disabled"],["role","status","aria-hidden","true",1,"spinner-border","spinner-border-sm","me-2"],[1,"registered-users-count"],[1,"registered-users-list"],[1,"registered-user-card"],[1,"user-avatar"],["loading","lazy",1,"avatar-img",3,"src","alt"],[1,"user-info"],[1,"user-name"],[1,"user-email"],[1,"user-phone"],[1,"user-meta"],[1,"status-badge"],[1,"payment-badge",3,"payment-completed","payment-pending","payment-failed"],[1,"registration-date"],[1,"avatar-placeholder"],[1,"payment-badge"],["type","button",1,"btn","btn-cancel",3,"click","disabled"],["type","button",1,"btn","btn-submit",3,"click","disabled"],["type","button",1,"btn","btn-delete",3,"disabled"],["type","button",1,"btn","btn-delete",3,"click","disabled"],["type","button",1,"btn","btn-cancel",3,"click"]],template:function(n,i){if(n&1){let l=M();a(0,"div",1,0),x("hidden.bs.modal",function(){return C(l),f(i.onModalHidden())}),a(2,"div",2)(3,"div",3)(4,"div",4)(5,"div",5)(6,"h1",6),s(7),_(8,"translate"),r(),a(9,"p",7),s(10),r()(),v(11,"button",8),r(),a(12,"div",9)(13,"ul",10)(14,"li",11)(15,"a",12),x("click",function(){return C(l),f(i.switchTab("add"))}),s(16),_(17,"translate"),r()(),a(18,"li",11)(19,"a",12),x("click",function(){return C(l),f(i.switchTab("delete"))}),s(20),_(21,"translate"),r()(),a(22,"li",11)(23,"a",12),x("click",function(){return C(l),f(i.switchTab("registered"))}),s(24),_(25,"translate"),r()()()(),a(26,"div",13),h(27,xs,22,16)(28,Es,7,6,"div",14)(29,Ns,4,3,"div",15),r(),a(30,"div",16),h(31,Fs,7,9)(32,Hs,4,5)(33,Gs,3,3,"button",17),r()()()()}n&2&&(p("id",i.modalId),R("aria-labelledby",i.modalId+"Label"),o(6),p("id",i.modalId+"Label"),o(),b(" ",m(8,20,"GROUP_CLASSES_ADMIN.USER_MANAGEMENT")," "),o(3),g(i.courseTitle),o(5),y("active",i.activeTab==="add"),o(),b(" ",m(17,22,"GROUP_CLASSES_ADMIN.ADD_USER")," "),o(3),y("active",i.activeTab==="delete"),o(),b(" ",m(21,24,"GROUP_CLASSES_ADMIN.DELETE_USER")," "),o(3),y("active",i.activeTab==="registered"),o(),b(" ",m(25,26,"GROUP_CLASSES_ADMIN.REGISTERED_USERS")," "),o(3),P(27,i.activeTab==="add"?27:-1),o(),P(28,i.activeTab==="delete"?28:-1),o(),P(29,i.activeTab==="registered"?29:-1),o(2),P(31,i.activeTab==="add"?31:-1),o(),P(32,i.activeTab==="delete"?32:-1),o(),P(33,i.activeTab==="registered"?33:-1))},dependencies:[re,ae,ie,Y,oe,j],styles:[".modal-header[_ngcontent-%COMP%]{border-bottom:1px solid #e5e7eb;padding:1.5rem}.modal-header[_ngcontent-%COMP%] .header-content[_ngcontent-%COMP%]{flex:1}.modal-header[_ngcontent-%COMP%] .header-content[_ngcontent-%COMP%] .modal
1-title[_ngcontent-%COMP%]{font-size:20px;font-weight:700;color:#146d6d;margin-bottom:.5rem}.modal-header[_ngcontent-%COMP%] .header-content[_ngcontent-%COMP%] .course-title[_ngcontent-%COMP%]{font-size:14px;color:#6b7280;margin:0}.modal-tabs[_ngcontent-%COMP%]{padding:0 1.5rem;border-bottom:1px solid #e5e7eb}.modal-tabs[_ngcontent-%COMP%] .nav-tabs[_ngcontent-%COMP%]{border-bottom:none;gap:0}.modal-tabs[_ngcontent-%COMP%] .nav-tabs[_ngcontent-%COMP%] .nav-item[_ngcontent-%COMP%]{margin-bottom:0}.modal-tabs[_ngcontent-%COMP%] .nav-tabs[_ngcontent-%COMP%] .nav-link[_ngcontent-%COMP%]{border:none;border-bottom:2px solid transparent;color:#6b7280;font-size:14px;font-weight:500;padding:.75rem 1.25rem;cursor:pointer;transition:all .2s;background:transparent}.modal-tabs[_ngcontent-%COMP%] .nav-tabs[_ngcontent-%COMP%] .nav-link[_ngcontent-%COMP%]:hover{color:#146d6d;border-bottom-color:#b3f5f5}.modal-tabs[_ngcontent-%COMP%] .nav-tabs[_ngcontent-%COMP%] .nav-link.active[_ngcontent-%COMP%]{color:#146d6d;border-bottom-color:#21b6b6;font-weight:600}.modal-body[_ngcontent-%COMP%]{padding:1.5rem;max-height:70vh;overflow-y:auto}.modal-footer[_ngcontent-%COMP%]{border-top:1px solid #e5e7eb;padding:1rem 1.5rem;gap:.75rem}.email-section[_ngcontent-%COMP%]{margin-bottom:1.5rem}.email-section[_ngcontent-%COMP%] .section-label[_ngcontent-%COMP%]{display:block;font-size:14px;font-weight:600;color:#146d6d;margin-bottom:.75rem}.email-section[_ngcontent-%COMP%] .email-inputs[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.75rem;margin-bottom:.75rem}.email-section[_ngcontent-%COMP%] .email-input-row[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.5rem}.email-section[_ngcontent-%COMP%] .email-input-row[_ngcontent-%COMP%] .email-input[_ngcontent-%COMP%]{flex:1;border:1px solid #d1d5db;border-radius:4px;padding:.5rem .75rem;font-size:14px;color:#111827}.email-section[_ngcontent-%COMP%] .email-input-row[_ngcontent-%COMP%] .email-input[_ngcontent-%COMP%]:focus{border-color:#21b6b6;outline:none;box-shadow:0 0 0 3px #21b6b61a}.email-section[_ngcontent-%COMP%] .email-input-row[_ngcontent-%COMP%] .email-input[_ngcontent-%COMP%]::placeholder{color:#9ca3af}.email-section[_ngcontent-%COMP%] .email-input-row[_ngcontent-%COMP%] .email-input[_ngcontent-%COMP%]:disabled{background-color:#f3f4f6;cursor:not-allowed}.email-section[_ngcontent-%COMP%] .email-input-row[_ngcontent-%COMP%] .btn-remove[_ngcontent-%COMP%]{padding:.5rem;border:1px solid #fee2e2;background-color:#fee2e2;border-radius:4px;display:flex;align-items:center;justify-content:center;transition:all .2s}.email-section[_ngcontent-%COMP%] .email-input-row[_ngcontent-%COMP%] .btn-remove[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{width:16px;height:16px;filter:brightness(0) saturate(100%) invert(14%) sepia(72%) saturate(5358%) hue-rotate(338deg) brightness(86%) contrast(98%)}.email-section[_ngcontent-%COMP%] .email-input-row[_ngcontent-%COMP%] .btn-remove[_ngcontent-%COMP%]:hover:not(:disabled){background-color:#fecaca;border-color:#fecaca}.email-section[_ngcontent-%COMP%] .email-input-row[_ngcontent-%COMP%] .btn-remove[_ngcontent-%COMP%]:disabled{opacity:.5;cursor:not-allowed}.email-section[_ngcontent-%COMP%] .btn-add-email[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.5rem;padding:.5rem 1rem;background-color:#ddfbfb;color:#146d6d;border:1px solid #ddfbfb;border-radius:4px;font-size:14px;font-weight:500;transition:all .2s}.email-section[_ngcontent-%COMP%] .btn-add-email[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{font-size:18px;font-weight:600}.email-section[_ngcontent-%COMP%] .btn-add-email[_ngcontent-%COMP%]:hover:not(:disabled){background-color:#b3f5f5;border-color:#b3f5f5}.email-section[_ngcontent-%COMP%] .btn-add-email[_ngcontent-%COMP%]:disabled{opacity:.5;cursor:not-allowed}.dry-run-section[_ngcontent-%COMP%]{padding:1rem;background-color:#fef3c7;border-radius:8px;margin-bottom:1.5rem}.dry-run-section[_ngcontent-%COMP%] .dry-run-toggle[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.5rem;margin-bottom:.5rem}.dry-run-section[_ngcontent-%COMP%] .dry-run-toggle[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{font-size:14px;font-weight:600;color:#146d6d;
1cursor:pointer}.dry-run-section[_ngcontent-%COMP%] .dry-run-description[_ngcontent-%COMP%]{font-size:12px;color:#78350f;margin:0;padding-left:2.5rem}.form-switch[_ngcontent-%COMP%] .form-check-input[_ngcontent-%COMP%]{height:20px;width:40px;background-color:#d1d5db;border:none;box-shadow:none;cursor:pointer;background-image:none}.form-switch[_ngcontent-%COMP%] .form-check-input[_ngcontent-%COMP%]:focus{background-color:#d1d5db;border:none;box-shadow:none;background-image:none}.form-switch[_ngcontent-%COMP%] .form-check-input[_ngcontent-%COMP%]:checked{background-color:#21b6b6;border-color:#21b6b6;border:none;box-shadow:none}.form-switch[_ngcontent-%COMP%] .form-check-input[_ngcontent-%COMP%]:disabled{opacity:.5;cursor:not-allowed}.results-section[_ngcontent-%COMP%]{border:1px solid #e5e7eb;border-radius:8px;padding:1rem;background-color:#f9fafb}.results-section[_ngcontent-%COMP%] .results-header[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;margin-bottom:1rem}.results-section[_ngcontent-%COMP%] .results-header[_ngcontent-%COMP%] h5[_ngcontent-%COMP%]{font-size:16px;font-weight:700;color:#146d6d;margin:0}.results-section[_ngcontent-%COMP%] .results-header[_ngcontent-%COMP%] .dry-run-badge[_ngcontent-%COMP%]{background-color:#fef3c7;color:#78350f;padding:4px 8px;border-radius:4px;font-size:12px;font-weight:600}.results-section[_ngcontent-%COMP%] .results-summary[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:1rem;margin-bottom:1.5rem}.results-section[_ngcontent-%COMP%] .results-summary[_ngcontent-%COMP%] .stat-item[_ngcontent-%COMP%]{background-color:#fff;border:1px solid #e5e7eb;border-radius:6px;padding:.75rem;text-align:center}.results-section[_ngcontent-%COMP%] .results-summary[_ngcontent-%COMP%] .stat-item[_ngcontent-%COMP%] .stat-label[_ngcontent-%COMP%]{display:block;font-size:12px;color:#6b7280;margin-bottom:.25rem}.results-section[_ngcontent-%COMP%] .results-summary[_ngcontent-%COMP%] .stat-item[_ngcontent-%COMP%] .stat-value[_ngcontent-%COMP%]{display:block;font-size:24px;font-weight:700;color:#111827}.results-section[_ngcontent-%COMP%] .results-summary[_ngcontent-%COMP%] .stat-item.success[_ngcontent-%COMP%] .stat-value[_ngcontent-%COMP%]{color:#059669}.results-section[_ngcontent-%COMP%] .results-summary[_ngcontent-%COMP%] .stat-item.failure[_ngcontent-%COMP%] .stat-value[_ngcontent-%COMP%]{color:#be123c}.results-section[_ngcontent-%COMP%] .results-list[_ngcontent-%COMP%]{margin-bottom:1rem}.results-section[_ngcontent-%COMP%] .results-list[_ngcontent-%COMP%]:last-child{margin-bottom:0}.results-section[_ngcontent-%COMP%] .results-list[_ngcontent-%COMP%] h6[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.5rem;font-size:14px;font-weight:600;color:#374151;margin-bottom:.75rem}.results-section[_ngcontent-%COMP%] .results-list[_ngcontent-%COMP%] h6[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{width:16px;height:16px}.results-section[_ngcontent-%COMP%] .results-list[_ngcontent-%COMP%] .email-list[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;gap:.5rem}.results-section[_ngcontent-%COMP%] .results-list[_ngcontent-%COMP%] .email-badge[_ngcontent-%COMP%]{display:inline-block;padding:4px 8px;border-radius:4px;font-size:12px;font-weight:500}.results-section[_ngcontent-%COMP%] .results-list[_ngcontent-%COMP%] .success-badge[_ngcontent-%COMP%]{background-color:#dcfce7;color:#14532d}.results-section[_ngcontent-%COMP%] .results-list[_ngcontent-%COMP%] .failed-badge[_ngcontent-%COMP%]{background-color:#fee2e2;color:#881337}.results-section[_ngcontent-%COMP%] .results-list[_ngcontent-%COMP%] .failed-items[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.5rem}.results-section[_ngcontent-%COMP%] .results-list[_ngcontent-%COMP%] .failed-item[_ngcontent-%COMP%]{background-color:#fff;border:1px solid #fee2e2;border-radius:6px;padding:.75rem;display:flex;flex-direction:column;gap:.5rem}.results-section[_ngcontent-%COMP%] .results-list[_ngcontent-%COMP%] .failed-item[_ngcontent-%COMP%] .reason[_ngcontent-%COMP%]{font-size:12px;color:#6b7280}.delete-user-section[_ngcontent-%COMP%] .section-label[_ngcontent-%COMP%]{display:block;font-size:14px;font-weight:600;color:#146d6d;margin-bottom:.75rem}.delete-user-section[_ngcontent-%COMP%] .loading-state[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:center;padding:2rem;color:#6b7280;font-size:14px}.delete-user-section[_ngcontent-%COMP%] .no-users-state[_ngcontent-%COMP%]{text-align:center;padding:2rem}.delete-user-section[_ngcontent-%COMP%] .no-users-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{color:#6b7280;font-size:14px;margin:0}.delete-user-section[_ngcontent-%COMP%] .user-dropdown-container[_ngcontent-%COMP%]{margin-bottom:1rem}.delete-user-section[_ngcontent-%COMP%] .user-dropdown-container[_ngcontent-%COMP%] .user-select[_ngcontent-%COMP%]{width:100%;border:1px solid #d1d5db;border-radius:4px;padding:.5rem .75rem;font-size:14px;color:#111827;cursor:pointer}.delete-user-section[_ngcontent-%COMP%] .user-dropdown-container[_ngcontent-%COMP%] .user-select[_ngcontent-%COMP%]:focus{border-color:#21b6b6;outline:none;box-shadow:0 0 0 3px #21b6b61a}.delete-user-section[_ngcontent-%COMP%] .user-dropdown-container[_ngcontent-%COMP%] .user-select[_ngcontent-%COMP%]:disabled{background-color:#f3f4f6;
1cursor:not-allowed}.delete-user-section[_ngcontent-%COMP%] .selected-user-info[_ngcontent-%COMP%]{background-color:#f0fdfa;border:1px solid #99f6e4;border-radius:8px;padding:1rem;margin-top:1rem}.delete-user-section[_ngcontent-%COMP%] .selected-user-info[_ngcontent-%COMP%] .user-detail[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.5rem;margin-bottom:.5rem}.delete-user-section[_ngcontent-%COMP%] .selected-user-info[_ngcontent-%COMP%] .user-detail[_ngcontent-%COMP%]:last-child{margin-bottom:0}.delete-user-section[_ngcontent-%COMP%] .selected-user-info[_ngcontent-%COMP%] .user-detail[_ngcontent-%COMP%] .label[_ngcontent-%COMP%]{font-size:13px;font-weight:600;color:#146d6d;min-width:80px}.delete-user-section[_ngcontent-%COMP%] .selected-user-info[_ngcontent-%COMP%] .user-detail[_ngcontent-%COMP%] .value[_ngcontent-%COMP%]{font-size:13px;color:#374151}.delete-user-section[_ngcontent-%COMP%] .selected-user-info[_ngcontent-%COMP%] .user-detail[_ngcontent-%COMP%] .status-badge[_ngcontent-%COMP%]{background-color:#dcfce7;color:#14532d;padding:2px 8px;border-radius:4px;font-size:12px;font-weight:500;text-transform:capitalize}.delete-user-section[_ngcontent-%COMP%] .delete-confirmation[_ngcontent-%COMP%]{background-color:#fef2f2;border:1px solid #fecaca;border-radius:8px;padding:1.5rem;margin-top:1rem;text-align:center}.delete-user-section[_ngcontent-%COMP%] .delete-confirmation[_ngcontent-%COMP%] .confirmation-icon[_ngcontent-%COMP%]{margin-bottom:1rem}.delete-user-section[_ngcontent-%COMP%] .delete-confirmation[_ngcontent-%COMP%] .confirmation-icon[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{width:48px;height:48px;filter:brightness(0) saturate(100%) invert(14%) sepia(72%) saturate(5358%) hue-rotate(338deg) brightness(86%) contrast(98%)}.delete-user-section[_ngcontent-%COMP%] .delete-confirmation[_ngcontent-%COMP%] h5[_ngcontent-%COMP%]{font-size:16px;font-weight:700;color:#991b1b;margin-bottom:.5rem}.delete-user-section[_ngcontent-%COMP%] .delete-confirmation[_ngcontent-%COMP%] .confirmation-message[_ngcontent-%COMP%]{font-size:14px;color:#7f1d1d;margin-bottom:1rem}.delete-user-section[_ngcontent-%COMP%] .delete-confirmation[_ngcontent-%COMP%] .user-to-delete[_ngcontent-%COMP%]{background-color:#fff;border:1px solid #fecaca;border-radius:6px;padding:1rem;margin-bottom:1rem;text-align:left}.delete-user-section[_ngcontent-%COMP%] .delete-confirmation[_ngcontent-%COMP%] .user-to-delete[_ngcontent-%COMP%] .user-detail[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.5rem;margin-bottom:.5rem}.delete-user-section[_ngcontent-%COMP%] .delete-confirmation[_ngcontent-%COMP%] .user-to-delete[_ngcontent-%COMP%] .user-detail[_ngcontent-%COMP%]:last-child{margin-bottom:0}.delete-user-section[_ngcontent-%COMP%] .delete-confirmation[_ngcontent-%COMP%] .user-to-delete[_ngcontent-%COMP%] .user-detail[_ngcontent-%COMP%] .label[_ngcontent-%COMP%]{font-size:13px;font-weight:600;color:#991b1b;min-width:80px}.delete-user-section[_ngcontent-%COMP%] .delete-confirmation[_ngcontent-%COMP%] .user-to-delete[_ngcontent-%COMP%] .user-detail[_ngcontent-%COMP%] .value[_ngcontent-%COMP%]{font-size:13px;color:#374151;word-break:break-all}.delete-user-section[_ngcontent-%COMP%] .delete-confirmation[_ngcontent-%COMP%] .confirmation-actions[_ngcontent-%COMP%]{display:flex;justify-content:center;gap:.75rem}.btn-cancel-delete[_ngcontent-%COMP%]{padding:.5rem 1rem;border:1px solid #d1d5db;background-color:#fff;color:#374151;border-radius:4px;font-size:14px;font-weight:500;transition:all .2s}.btn-cancel-delete[_ngcontent-%COMP%]:hover:not(:disabled){background-color:#f3f4f6;border-color:#9ca3af}.btn-cancel-delete[_ngcontent-%COMP%]:disabled{opacity:.5;cursor:not-allowed}.btn-confirm-delete[_ngcontent-%COMP%]{padding:.5rem 1rem;background-color:#dc2626;color:#fff;border:none;border-radius:4px;font-size:14px;font-weight:500;transition:all .2s}.btn-confirm-delete[_ngcontent-%COMP%]:hover:not(:disabled){background-color:#b91c1c}.btn-confirm-delete[_ngcontent-%COMP%]:disabled{opacity:.5;cursor:not-allowed}
1.btn-delete[_ngcontent-%COMP%]{padding:.5rem 1rem;background-color:#dc2626;color:#fff;border:none;border-radius:4px;font-size:14px;font-weight:500;transition:all .2s}.btn-delete[_ngcontent-%COMP%]:hover:not(:disabled){background-color:#b91c1c}.btn-delete[_ngcontent-%COMP%]:disabled{opacity:.5;cursor:not-allowed}.registered-users-section[_ngcontent-%COMP%] .loading-state[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:center;padding:2rem;color:#6b7280;font-size:14px}.registered-users-section[_ngcontent-%COMP%] .no-users-state[_ngcontent-%COMP%]{text-align:center;padding:2rem}.registered-users-section[_ngcontent-%COMP%] .no-users-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{color:#6b7280;font-size:14px;margin:0}.registered-users-section[_ngcontent-%COMP%] .registered-users-count[_ngcontent-%COMP%]{margin-bottom:1rem}.registered-users-section[_ngcontent-%COMP%] .registered-users-count[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{font-size:14px;font-weight:600;color:#146d6d}.registered-users-section[_ngcontent-%COMP%] .registered-users-list[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.75rem}.registered-users-section[_ngcontent-%COMP%] .registered-user-card[_ngcontent-%COMP%]{display:flex;align-items:center;gap:1rem;padding:.75rem;background-color:#f9fafb;border:1px solid #e5e7eb;border-radius:8px}.registered-users-section[_ngcontent-%COMP%] .registered-user-card[_ngcontent-%COMP%] .user-avatar[_ngcontent-%COMP%]{flex-shrink:0}.registered-users-section[_ngcontent-%COMP%] .registered-user-card[_ngcontent-%COMP%] .user-avatar[_ngcontent-%COMP%] .avatar-img[_ngcontent-%COMP%]{width:40px;height:40px;border-radius:50%;object-fit:cover}.registered-users-section[_ngcontent-%COMP%] .registered-user-card[_ngcontent-%COMP%] .user-avatar[_ngcontent-%COMP%] .avatar-placeholder[_ngcontent-%COMP%]{width:40px;height:40px;border-radius:50%;background-color:#21b6b6;color:#fff;display:flex;align-items:center;justify-content:center;font-size:16px;font-weight:600}.registered-users-section[_ngcontent-%COMP%] .registered-user-card[_ngcontent-%COMP%] .user-info[_ngcontent-%COMP%]{flex:1;min-width:0}.registered-users-section[_ngcontent-%COMP%] .registered-user-card[_ngcontent-%COMP%] .user-info[_ngcontent-%COMP%] .user-name[_ngcontent-%COMP%]{font-size:14px;font-weight:600;color:#111827}.registered-users-section[_ngcontent-%COMP%] .registered-user-card[_ngcontent-%COMP%] .user-info[_ngcontent-%COMP%] .user-email[_ngcontent-%COMP%], .registered-users-section[_ngcontent-%COMP%] .registered-user-card[_ngcontent-%COMP%] .user-info[_ngcontent-%COMP%] .user-phone[_ngcontent-%COMP%]{font-size:12px;color:#6b7280}.registered-users-section[_ngcontent-%COMP%] .registered-user-card[_ngcontent-%COMP%] .user-meta[_ngcontent-%COMP%]{display:flex;flex-direction:column;align-items:flex-end;gap:4px}.registered-users-section[_ngcontent-%COMP%] .registered-user-card[_ngcontent-%COMP%] .user-meta[_ngcontent-%COMP%] .status-badge[_ngcontent-%COMP%], .registered-users-section[_ngcontent-%COMP%] .registered-user-card[_ngcontent-%COMP%] .user-meta[_ngcontent-%COMP%] .payment-badge[_ngcontent-%COMP%]{padding:2px 8px;border-radius:4px;font-size:11px;font-weight:500;text-transform:capitalize}.registered-users-section[_ngcontent-%COMP%] .registered-user-card[_ngcontent-%COMP%] .user-meta[_ngcontent-%COMP%] .status-registered[_ngcontent-%COMP%]{background-color:#dcfce7;color:#14532d}.registered-users-section[_ngcontent-%COMP%] .registered-user-card[_ngcontent-%COMP%] .user-meta[_ngcontent-%COMP%] .status-cancelled[_ngcontent-%COMP%]{background-color:#fee2e2;color:#881337}.registered-users-section[_ngcontent-%COMP%] .registered-user-card[_ngcontent-%COMP%] .user-meta[_ngcontent-%COMP%] .payment-completed[_ngcontent-%COMP%]{background-color:#dcfce7;color:#14532d}.registered-users-section[_ngcontent-%COMP%] .registered-user-card[_ngcontent-%COMP%] .user-meta[_ngcontent-%COMP%] .payment-pending[_ngcontent-%COMP%]{background-color:#fef3c7;color:#78350f}.registered-users-section[_ngcontent-%COMP%] .registered-user-card[_ngcontent-%COMP%] .user-meta[_ngcontent-%COMP%] .payment-failed[_ngcontent-%COMP%]{background-color:#fee2e2;color:#881337}.registered-users-section[_ngcontent-%COMP%] .registered-user-card[_ngcontent-%COMP%] .user-meta[_ngcontent-%COMP%] .registration-date[_ngcontent-%COMP%]{font-size:11px;color:#9ca3af}.btn-cancel[_ngcontent-%COMP%]{padding:.5rem 1rem;border:1px solid #d1d5db;background-color:#fff;color:#374151;border-radius:4px;font-size:14px;font-weight:500;transition:all .2s}.btn-cancel[_ngcontent-%COMP%]:hover:not(:disabled){background-color:#f3f4f6;border-color:#9ca3af}.btn-cancel[_ngcontent-%COMP%]:disabled{opacity:.5;cursor:not-allowed}.btn-submit[_ngcontent-%COMP%]{padding:.5rem 1rem;background-color:#21b6b6;color:#fff;border:none;border-radius:4px;font-size:14px;font-weight:500;transition:all .2s}.btn-submit[_ngcontent-%COMP%]:hover:not(:disabled){background-color:#188888}.btn-submit[_ngcontent-%COMP%]:disabled{opacity:.5;cursor:not-allowed}@media screen and (max-width: 768px){.modal-dialog[_ngcontent-%COMP%]{margin:.5rem}.modal-body[_ngcontent-%COMP%]{max-height:60vh}.results-summary[_ngcontent-%COMP%]{grid-template-columns:1fr}.email-input-row[_ngcontent-%COMP%]{flex-direction:column}.email-input-row[_ngcontent-%COMP%] .btn-remove[_ngcontent-%COMP%]{width:100%}}"]})}}return t})();var Ws=["modalElement"],zs=(t,c)=>c.key,Ks=(t,c)=>c.levelId;
1function $s(t,c){if(t&1&&(a(0,"option",28),s(1),r()),t&2){let e=c.$implicit;p("value",e.key),o(),g(e.label)}}function js(t,c){if(t&1){let e=M();a(0,"div",10)(1,"label",11),s(2," Preset "),a(3,"span",21),s(4,"(optional)"),r()(),a(5,"select",27),T("ngModelChange",function(i){C(e);let l=d();return A(l.selectedPreset,i)||(l.selectedPreset=i),f(i)}),x("ngModelChange",function(i){C(e);let l=d();return f(l.onPresetChange(i))}),z(6,$s,2,2,"option",28,zs),r()()}if(t&2){let e=d();o(5),k("ngModel",e.selectedPreset),p("disabled",e.isSubmitting),o(),K(e.holidayPresets)}}function Qs(t,c){if(t&1&&(a(0,"option",28),s(1),r()),t&2){let e=c.$implicit;p("value",e.levelId),o(),g(e.level)}}function Ys(t,c){if(t&1){let e=M();a(0,"div",10)(1,"label",11),s(2,"Level"),r(),a(3,"select",27),T("ngModelChange",function(i){C(e);let l=d();return A(l.selectedLevelId,i)||(l.selectedLevelId=i),f(i)}),a(4,"option",29),s(5,"Select a level"),r(),z(6,Qs,2,2,"option",28,Ks),r()()}if(t&2){let e=d();o(3),k("ngModel",e.selectedLevelId),p("disabled",e.isSubmitting),o(3),K(e.levels)}}function Xs(t,c){t&1&&v(0,"span",26)}var pr=[{label:"Custom dates",key:"custom"},{label:"Christmas Break (Dec 20 \u2013 Jan 3)",key:"christmas",month:11,day:20,endMonth:0,endDay:3,durationDays:14},{label:"New Year (Dec 31 \u2013 Jan 2)",key:"newyear",month:11,day:31,endMonth:0,endDay:2,durationDays:2},{label:"Spring Break (Mar 10 \u2013 Mar 14)",key:"spring",month:2,day:10,endMonth:2,endDay:14},{label:"Easter (variable \u2013 set dates manually)",key:"easter"}],gt=(()=>{class t{constructor(e,n){this.cohortService=e,this.toast=n,this.modalId="cohortScheduleBreakModal",this.batchId="",this.levels=[],this.breakAdded=new Le,this.scope="cohort",this.selectedLevelId="",this.startDate="",this.endDate="",this.reason="",this.breakType="break",this.selectedPreset="custom",this.holidayPresets=pr,this.isSubmitting=!1,this.prescopedLevelId=""}get modalTitle(){return this.breakType==="holiday"?"Schedule Holiday":"Schedule Break"}get modalSubtitle(){return this.breakType==="holiday"?"Add a holiday period to pause sessions":"Add a break period to pause sessions"}get submitLabel(){return this.breakType==="holiday"?"Schedule Holiday":"Schedule Break"}openModal(e){this.modalElement&&(this.resetModal(),e&&(this.prescopedLevelId=e,this.scope="level",this.selectedLevelId=e),this.modalInstance=new bootstrap.Modal(this.modalElement.nativeElement,{backdrop:"static",keyboard:!1}),this.modalInstance.show())}closeModal(){this.modalInstance&&(this.modalInstance.hide(),setTimeout(()=>{this.resetModal()},300))}onModalHidden(){setTimeout(()=>{this.resetModal()},300)}resetModal(){this.scope="cohort",this.selectedLevelId="",this.startDate="",this.endDate="",this.reason="",this.breakType="break",this.selectedPreset="custom",this.isSubmitting=!1,this.prescopedLevelId=""}onBreakTypeChange(e){this.breakType=e,this.selectedPreset="custom",this.startDate="",this.endDate=""}onPresetChange(e){if(this.selectedPreset=e,e==="custom"||e==="easter"){this.startDate="",this.endDate="";return}let n=pr.find(E=>E.key===e);if(!n||n.month===void 0||n.day===void 0)return;let i=new Date;i.setHours(0,0,0,0);let l=i.getFullYear(),u=new Date(l,n.month,n.day);u<i&&(l++,u=new Date(l,n.month,n.day));let O;if(n.endMonth!==void 0&&n.endDay!==void 0){let E=l;n.endMonth<n.month&&(E=l+1),O=new Date(E,n.endMonth,n.endDay)}else n.durationDays!==void 0?(O=new Date(u),O.setDate(O.getDate()+n.durationDays)):O=u;this.startDate=this.formatDate(u),this.endDate=this.formatDate(O)}onScopeChange(e){this.scope=e,e==="cohort"&&(this.selectedLevelId="")}canSubmit(){return!(!this.startDate||!this.endDate||this.scope==="level"&&!this.selectedLevelId||this.isSubmitting)}getTodayDate(){return new Date().toISOString().split("T")[0]}formatDate(e){let n=e.getFullYear(),i=String(e.getMonth()+1).padStart(2,"0"),l=String(e.getDate()).padStart(2,"0");return`${n}-${i}-${l}`}onSubmit(){if(!this.canSubmit()){this.toast.error("Please fill all required fields");return}this.isSubmitting=!0;let e={startDate:this.startDate,endDate:this.endDate,breakType:this.breakType};this.scope==="level"&&(e.levelId=this.selectedLevelId),this.reason.trim()&&(e.reason=this.reason.trim()),this.cohortService.addScheduleBreak(this.batchId,e).subscribe({next:n=>{this.toast.success(n?.message||`${this.breakType==="holiday"?"Holiday":"Break"} scheduled successfully`),this.breakAdded.emit(),this.closeModal()},error:n=>{this.isSubmitting=!1,this.toast.error(n?.error?.message||`Failed to schedule ${this.breakType}`)},complete:()=>{this.isSubmitting=!1}})}static{this.\u0275fac=function(n){return new(n||t)(w(de),w(he))}}static{this.\u0275cmp=H({type:t,selectors:[["app-cohort-schedule-break-modal"]],viewQuery:function(n,i){if
1(n&1&&_e(Ws,5),n&2){let l;me(l=ge())&&(i.modalElement=l.first)}},inputs:{modalId:"modalId",batchId:"batchId",levels:"levels"},outputs:{breakAdded:"breakAdded"},decls:58,vars:32,consts:[["modalElement",""],["tabindex","-1","aria-hidden","true",1,"modal","fade",3,"hidden.bs.modal","id"],[1,"modal-dialog","modal-dialog-centered"],[1,"modal-content"],[1,"modal-header"],[1,"header-content"],[1,"modal-title",3,"id"],[1,"modal-subtitle"],["type","button","data-bs-dismiss","modal","aria-label","Close",1,"btn-close"],[1,"modal-body"],[1,"form-section"],[1,"section-label"],[1,"type-toggle"],["type","button",1,"type-btn",3,"click","disabled"],[1,"type-icon"],[1,"radio-group"],[1,"radio-option"],["type","radio","name","scope","value","cohort",3,"change","checked","disabled"],[1,"radio-label"],["type","radio","name","scope","value","level",3,"change","checked","disabled"],["type","date",1,"form-control",3,"ngModelChange","ngModel","min","disabled"],[1,"optional-hint"],["rows","3",1,"form-control","reason-input",3,"ngModelChange","ngModel","placeholder","disabled"],[1,"modal-footer"],["type","button",1,"btn","btn-cancel",3,"click","disabled"],["type","button",1,"btn","btn-submit",3,"click","disabled"],["role","status","aria-hidden","true",1,"spinner-border","spinner-border-sm","me-2"],[1,"form-select",3,"ngModelChange","ngModel","disabled"],[3,"value"],["value",""]],template:function(n,i){if(n&1){let l=M();a(0,"div",1,0),x("hidden.bs.modal",function(){return C(l),f(i.onModalHidden())}),a(2,"div",2)(3,"div",3)(4,"div",4)(5,"div",5)(6,"h1",6),s(7),r(),a(8,"p",7),s(9),r()(),v(10,"button",8),r(),a(11,"div",9)(12,"div",10)(13,"label",11),s(14,"Type"),r(),a(15,"div",12)(16,"button",13),x("click",function(){return C(l),f(i.onBreakTypeChange("break"))}),a(17,"span",14),s(18,"\u23F8"),r(),s(19," Break "),r(),a(20,"button",13),x("click",function(){return C(l),f(i.onBreakTypeChange("holiday"))}),a(21,"span",14),s(22,"\u{1F389}"),r(),s(23," Holiday "),r()()(),h(24,js,8,2,"div",10),a(25,"div",10)(26,"label",11),s(27,"Scope"),r(),a(28,"div",15)(29,"label",16)(30,"input",17),x("change",function(){return C(l),f(i.onScopeChange("cohort"))}),r(),a(31,"span",18),s(32,"Entire cohort"),r()(),a(33,"label",16)(34,"input",19),x("change",function(){return C(l),f(i.onScopeChange("level"))}),r(),a(35,"span",18),s(36,"Specific level"),r()()()(),h(37,Ys,8,2,"div",10),a(38,"div",10)(39,"label",11),s(40,"Start Date"),r(),a(41,"input",20),T("ngModelChange",function(O){return C(l),A(i.startDate,O)||(i.startDate=O),f(O)}),r()(),a(42,"div",10)(43,"label",11),s(44,"End Date"),r(),a(45,"input",20),T("ngModelChange",function(O){return C(l),A(i.endDate,O)||(i.endDate=O),f(O)}),r()(),a(46,"div",10)(47,"label",11),s(48," Reason "),a(49,"span",21),s(50,"(optional)"),r()(),a(51,"textarea",22),T("ngModelChange",function(O){return C(l),A(i.reason,O)||(i.reason=O),f(O)}),r()()(),a(52,"div",23)(53,"button",24),x("click",function(){return C(l),f(i.closeModal())}),s(54," Cancel "),r(),a(55,"button",25),x("click",function(){return C(l),f(i.onSubmit())}),h(56,Xs,1,0,"span",26),s(57),r()()()()()}n&2&&(p("id",i.modalId),R("aria-labelledby",i.modalId+"Label"),o(6),p("id",i.modalId+"Label"),o(),g(i.modalTitle),o(2),g(i.modalSubtitle),o(7),y("active",i.breakType==="break"),p("disabled",i.isSubmitting),o(4),y("active",i.breakType==="holiday"),p("disabled",i.isSubmitting),o(4),P(24,i.breakType==="holiday"?24:-1),o(6),p("checked",i.scope==="cohort")("disabled",i.isSubmitting),o(4),p("checked",i.scope==="level")("disabled",i.isSubmitting),o(3),P(37,i.scope==="level"?37:-1),o(4),k("ngModel",i.startDate),p("min",i.getTodayDate())("disabled",i.isSubmitting),o(4),k("ngModel",i.endDate),p("min",i.startDate||i.getTodayDate())("disabled",i.isSubmitting),o(6),k("ngModel",i.reason),p("placeholder",i.breakType==="holiday"?"e.g. National holiday, school closure...":"e.g. Instructor unavailable, campus closed...")("disabled",i.isSubmitting),o(2),p("disabled",i.isSubmitting),o(2),y("btn-submit--holiday",i.breakType==="holiday"),p("disabled",!i.canSubmit()),o(),P(56,i.isSubmitting?56:-1),o(),b(" ",i.submitLabel," "))},dependencies:[re,ae,ie,Ce,Y,oe],styles:[".modal-header[_ngcontent-%COMP%]{border-bottom:1px solid #e5e7eb;padding:1.5rem}.modal-header[_ngcontent-%COMP%] .header-content[_ngcontent-%COMP%]{flex:1}.modal-header[_ngcontent-%COMP%] .header-content[_ngcontent-%COMP%] .modal
1-title[_ngcontent-%COMP%]{font-size:20px;font-weight:700;color:#146d6d;margin-bottom:.25rem}.modal-header[_ngcontent-%COMP%] .header-content[_ngcontent-%COMP%] .modal-subtitle[_ngcontent-%COMP%]{font-size:14px;color:#6b7280;margin:0}.modal-body[_ngcontent-%COMP%]{padding:1.5rem;max-height:70vh;overflow-y:auto}.modal-footer[_ngcontent-%COMP%]{border-top:1px solid #e5e7eb;padding:1rem 1.5rem;gap:.75rem}.form-section[_ngcontent-%COMP%]{margin-bottom:1.25rem}.form-section[_ngcontent-%COMP%] .section-label[_ngcontent-%COMP%]{display:block;font-size:14px;font-weight:600;color:#146d6d;margin-bottom:.5rem}.form-section[_ngcontent-%COMP%] .optional-hint[_ngcontent-%COMP%]{font-weight:400;color:#9ca3af;font-size:12px}.type-toggle[_ngcontent-%COMP%]{display:flex;gap:.5rem;background-color:#f3f4f6;border-radius:8px;padding:4px}.type-btn[_ngcontent-%COMP%]{flex:1;display:flex;align-items:center;justify-content:center;gap:.4rem;padding:.5rem 1rem;border:none;border-radius:6px;font-size:14px;font-weight:500;color:#6b7280;background-color:transparent;cursor:pointer;transition:all .2s ease}.type-btn[_ngcontent-%COMP%] .type-icon[_ngcontent-%COMP%]{font-size:16px;line-height:1}.type-btn[_ngcontent-%COMP%]:hover:not(:disabled):not(.active){background-color:#e5e7eb;color:#374151}.type-btn.active[_ngcontent-%COMP%]{background-color:#21b6b6;color:#fff;box-shadow:0 1px 3px #0000001a}.type-btn[_ngcontent-%COMP%]:disabled{opacity:.5;cursor:not-allowed}.radio-group[_ngcontent-%COMP%]{display:flex;gap:1.5rem}.radio-option[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.5rem;cursor:pointer}.radio-option[_ngcontent-%COMP%] input[type=radio][_ngcontent-%COMP%]{accent-color:#21b6b6;width:16px;height:16px;cursor:pointer}.radio-option[_ngcontent-%COMP%] input[type=radio][_ngcontent-%COMP%]:disabled{cursor:not-allowed}.radio-option[_ngcontent-%COMP%] .radio-label[_ngcontent-%COMP%]{font-size:14px;color:#374151}.form-control[_ngcontent-%COMP%], .form-select[_ngcontent-%COMP%]{border:1px solid #d1d5db;border-radius:4px;padding:.5rem .75rem;font-size:14px;color:#111827}.form-control[_ngcontent-%COMP%]:focus, .form-select[_ngcontent-%COMP%]:focus{border-color:#21b6b6;outline:none;box-shadow:0 0 0 3px #21b6b61a}.form-control[_ngcontent-%COMP%]:disabled, .form-select[_ngcontent-%COMP%]:disabled{background-color:#f3f4f6;cursor:not-allowed}.reason-input[_ngcontent-%COMP%]{resize:vertical}.reason-input[_ngcontent-%COMP%]::placeholder{color:#9ca3af}.btn-cancel[_ngcontent-%COMP%]{padding:.5rem 1rem;border:1px solid #d1d5db;background-color:#fff;color:#374151;border-radius:4px;font-size:14px;font-weight:500;transition:all .2s}.btn-cancel[_ngcontent-%COMP%]:hover:not(:disabled){background-color:#f3f4f6;border-color:#9ca3af}.btn-cancel[_ngcontent-%COMP%]:disabled{opacity:.5;cursor:not-allowed}.btn-submit[_ngcontent-%COMP%]{padding:.5rem 1rem;background-color:#21b6b6;color:#fff;border:none;border-radius:4px;font-size:14px;font-weight:500;transition:all .2s}.btn-submit[_ngcontent-%COMP%]:hover:not(:disabled){background-color:#188888}.btn-submit[_ngcontent-%COMP%]:disabled{opacity:.5;cursor:not-allowed}.btn-submit--holiday[_ngcontent-%COMP%]{background-color:#f59e0b}.btn-submit--holiday[_ngcontent-%COMP%]:hover:not(:disabled){background-color:#d97706}@media screen and (max-width: 768px){.modal-dialog[_ngcontent-%COMP%]{margin:.5rem}.modal-body[_ngcontent-%COMP%]{max-height:60vh}.radio-group[_ngcontent-%COMP%]{flex-direction:column;gap:.75rem}.type-toggle[_ngcontent-%COMP%]{flex-direction:column}}"]})}}return t})();var Js=["modalElement"],Zs=(t,c)=>c.levelId;function el(t,c){if(t&1&&(a(0,"option",28),s(1),r()),t&2){let e=c.$implicit;p("value",e.levelId),o(),g(e.level)}}function tl(t,c){if(t&1){let e=M();a(0,"div",10)(1,"label",11),s(2,"Level"),r(),a(3,"select",26),T("ngModelChange",function(i){C(e);let l=d();return A(l.selectedLevelId,i)||(l.selectedLevelId=i),f(i)}),a(4,"option",27),s(5,"Select a level"),r(),z(6,el,2,2,"option",28,Zs),r()()}if(t&2){let e=d();o(3),k("ngModel",e.selectedLevelId),p("disabled",e.isSubmitting),o(3),K(e.levels)}}function nl(t,c){t&1&&v(0,"span",25)}var ut=(()=>{class t{constructor(e,n){this.cohortService=e,this.toast=n,this.modalId="cohortAnnouncementMod
1al",this.batchId="",this.levels=[],this.prescopedLevelId="",this.announcementSent=new Le,this.scope="all",this.selectedLevelId="",this.title="",this.message="",this.isSubmitting=!1}openModal(e){if(this.modalElement){if(this.resetModal(),e||this.prescopedLevelId){let n=e||this.prescopedLevelId;this.scope="level",this.selectedLevelId=n}this.modalInstance=new bootstrap.Modal(this.modalElement.nativeElement,{backdrop:"static",keyboard:!1}),this.modalInstance.show()}}closeModal(){this.modalInstance&&(this.modalInstance.hide(),setTimeout(()=>{this.resetModal()},300))}onModalHidden(){setTimeout(()=>{this.resetModal()},300)}resetModal(){this.scope="all",this.selectedLevelId="",this.title="",this.message="",this.isSubmitting=!1}onScopeChange(e){this.scope=e,e==="all"&&(this.selectedLevelId="")}canSubmit(){return!(!this.title.trim()||!this.message.trim()||this.scope==="level"&&!this.selectedLevelId||this.isSubmitting)}onSubmit(){if(!this.canSubmit()){this.toast.error("Please fill all required fields");return}this.isSubmitting=!0;let e={title:this.title.trim(),message:this.message.trim(),scope:this.scope};this.scope==="level"&&(e.levelId=this.selectedLevelId),this.cohortService.createAnnouncement(this.batchId,e).subscribe({next:n=>{this.toast.success(n?.message||"Announcement sent successfully"),this.announcementSent.emit(),this.closeModal()},error:n=>{this.isSubmitting=!1,this.toast.error(n?.error?.message||"Failed to send announcement")},complete:()=>{this.isSubmitting=!1}})}static{this.\u0275fac=function(n){return new(n||t)(w(de),w(he))}}static{this.\u0275cmp=H({type:t,selectors:[["app-cohort-announcement-modal"]],viewQuery:function(n,i){if(n&1&&_e(Js,5),n&2){let l;me(l=ge())&&(i.modalElement=l.first)}},inputs:{modalId:"modalId",batchId:"batchId",levels:"levels",prescopedLevelId:"prescopedLevelId"},outputs:{announcementSent:"announcementSent"},decls:44,vars:15,consts:[["modalElement",""],["tabindex","-1","aria-hidden","true",1,"modal","fade",3,"hidden.bs.modal","id"],[1,"modal-dialog","modal
1-dialog-centered"],[1,"modal-content"],[1,"modal-header"],[1,"header-content"],[1,"modal-title",3,"id"],[1,"modal-subtitle"],["type","button","data-bs-dismiss","modal","aria-label","Close",1,"btn-close"],[1,"modal-body"],[1,"form-section"],[1,"section-label"],[1,"radio-group"],[1,"radio-option"],["type","radio","name","announcementScope","value","all",3,"change","checked","disabled"],[1,"radio-label"],["type","radio","name","announcementScope","value","level",3,"change","checked","disabled"],["type","text","placeholder","e.g. Schedule Change, Homework Reminder...","maxlength","200",1,"form-control",3,"ngModelChange","ngModel","disabled"],["placeholder","Write your announcement message here...","rows","4","maxlength","2000",1,"form-control","message-input",3,"ngModelChange","ngModel","disabled"],[1,"delivery-info"],[1,"delivery-icon"],[1,"delivery-text"],[1,"modal-footer"],["type","button",1,"btn","btn-cancel",3,"click","disabled"],["type","button",1,"btn","btn-submit",3,"click","disabled"],["role","status","aria-hidden","true",1,"spinner-border","spinner-border-sm","me-2"],[1,"form-select",3,"ngModelChange","ngModel","disabled"],["value",""],[3,"value"]],template:function(n,i){if(n&1){let l=M();a(0,"div",1,0),x("hidden.bs.modal",function(){return C(l),f(i.onModalHidden())}),a(2,"div",2)(3,"div",3)(4,"div",4)(5,"div",5)(6,"h1",6),s(7,"Send Announcement"),r(),a(8,"p",7),s(9,"Notify students with an in-app notification"),r()(),v(10,"button",8),r(),a(11,"div",9)(12,"div",10)(13,"label",11),s(14,"Audience"),r(),a(15,"div",12)(16,"label",13)(17,"input",14),x("change",function(){return C(l),f(i.onScopeChange("all"))}),r(),a(18,"span",15),s(19,"All students"),r()(),a(20,"label",13)(21,"input",16),x("change",function(){return C(l),f(i.onScopeChange("level"))}),r(),a(22,"span",15),s(23,"Level only"),r()()()(),h(24,tl,8,2,"div",10),a(25,"div",10)(26,"label",11),s(27,"Title"),r(),a(28,"input",17),T("ngModelChange",function(O){return C(l),A(i.title,O)||(i.title=O),f(O)}),r()(),a(29,"div",10)(30,"label",11),s(31,"Message"),r(),a(32,"textarea",18),T("ngModelChange",function(O){return C(l),A(i.message,O)||(i.message=O),f(O)}),r()(),a(33,"div",19)(34,"span",20),s(35,"\uF514"),r(),a(36,"span",21),s(37,"Will send: in-app notification"),r()()(),a(38,"div",22)(39,"button",23),x("click",function(){return C(l),f(i.closeModal())}),s(40," Cancel "),r(),a(41,"button",24),x("click",function(){return C(l),f(i.onSubmit())}),h(42,nl,1,0,"span",25),s(43," Send Announcement "),r()()()()()}n&2&&(p("id",i.modalId),R("aria-labelledby",i.modalId+"Label"),o(6),p("id",i.modalId+"Label"),o(11),p("checked",i.scope==="all")("disabled",i.isSubmitting),o(4),p("checked",i.scope==="level")("disabled",i.isSubmitting),o(3),P(24,i.scope==="level"?24:-1),o(4),k("ngModel",i.title),p("disabled",i.isSubmitting),o(4),k("ngModel",i.message),p("disabled",i.isSubmitting),o(7),p("disabled",i.isSubmitting),o(2),p("disabled",!i.canSubmit()),o(),P(42,i.isSubmitting?42:-1))},dependencies:[re,ae,ie,Ce,Y,pn,oe],styles:[".modal-header[_ngcontent-%COMP%]{border-bottom:1px solid #e5e7eb;padding:1.5rem}.modal-header[_ngcontent-%COMP%] .header-content[_ngcontent-%COMP%]{flex:1}.modal-header[_ngcontent-%COMP%] .header-content[_ngcontent-%COMP%] .modal-title[_ngcontent-%COMP%]{font-size:20px;font-weight:700;color:#146d6d;margin-bottom:.25rem}.modal-header[_ngcontent-%COMP%] .header-content[_ngcontent-%COMP%] .modal-subtitle[_ngcontent-%COMP%]{font-size:14px;color:#6b7280;margin:0}.modal-body[_ngcontent-%COMP%]{padding:1.5rem;max-height:70vh;overflow-y:auto}.modal-footer[_ngcontent-%COMP%]{border-top:1px solid #e5e7eb;padding:1rem 1.5rem;gap:.75rem}.form-section[_ngcontent-%COMP%]{margin-bottom:1.25rem}.form-section[_ngcontent-%COMP%] .section-label[_ngcontent-%COMP%]{display:block;font-size:14px;font-weight:600;color:#146d6d;margin-bottom:.5rem}.radio-group[_ngcontent-%COMP%]{display:flex;gap:1.5rem}.radio-option[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.5rem;cursor:pointer}.radio-option[_ngcontent-%COMP%] input[type=radio][_ngcontent-%COMP%]{accent-color:#21b6b6;width:16px;height:16px;cursor:pointer}.radio-option[_ngcontent-%COMP%] input[type=radio][_ngcontent-%COMP%]:disabled{cursor:not-allowed}.radio-option[_ngcontent-%COMP%] .radio-label[_ngcontent-%COMP%]{font-size:14px;color:#374151}.form-control[_ngcontent-%COMP%], .form-select[_ngcontent-%COMP%]{border:1px solid #d1d5db;border-radius:4px;padding:.5rem .75rem;font-size:14px;color:#111827}.form-control[_ngcontent-%COMP%]:focus, .form-select[_ngcontent-%COMP%]:focus{border-color:#21b6b6;outline:none;box-shadow:0 0 0 3px #21b6b61a}.form-control[_ngcontent-%COMP%]:disabled, .form-select[_ngcontent-%COMP%]:disabled{background-color:#f3f4f6;
1cursor:not-allowed}.message-input[_ngcontent-%COMP%]{resize:vertical}.message-input[_ngcontent-%COMP%]::placeholder{color:#9ca3af}.delivery-info[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.5rem;padding:.75rem 1rem;background-color:#f0fdfa;border:1px solid #ccfbf1;border-radius:4px;margin-top:.5rem}.delivery-info[_ngcontent-%COMP%] .delivery-icon[_ngcontent-%COMP%]{font-size:16px}.delivery-info[_ngcontent-%COMP%] .delivery-text[_ngcontent-%COMP%]{font-size:13px;color:#0f766e}.btn-cancel[_ngcontent-%COMP%]{padding:.5rem 1rem;border:1px solid #d1d5db;background-color:#fff;color:#374151;border-radius:4px;font-size:14px;font-weight:500;transition:all .2s}.btn-cancel[_ngcontent-%COMP%]:hover:not(:disabled){background-color:#f3f4f6;border-color:#9ca3af}.btn-cancel[_ngcontent-%COMP%]:disabled{opacity:.5;cursor:not-allowed}.btn-submit[_ngcontent-%COMP%]{padding:.5rem 1rem;background-color:#21b6b6;color:#fff;border:none;border-radius:4px;font-size:14px;font-weight:500;transition:all .2s}.btn-submit[_ngcontent-%COMP%]:hover:not(:disabled){background-color:#188888}.btn-submit[_ngcontent-%COMP%]:disabled{opacity:.5;cursor:not-allowed}@media screen and (max-width: 768px){.modal-dialog[_ngcontent-%COMP%]{margin:.5rem}.modal-body[_ngcontent-%COMP%]{max-height:60vh}.radio-group[_ngcontent-%COMP%]{flex-direction:column;gap:.75rem}}"]})}}return t})();var gr=()=>[];function il(t,c){t&1&&(a(0,"div",4)(1,"p"),s(2),_(3,"translate"),r()()),t&2&&(o(2),g(m(3,1,"COMMON.LOADING")))}function ol(t,c){if(t&1&&(a(0,"span",39),s(1),r()),t&2){let e=d(2);o(),b("\u2014 ",e.batch.cityName,"")}}function rl(t,c){t&1&&(a(0,"span",40),s(1,"Golden Template"),r())}function al(t,c){if(t&1&&(a(0,"span"),s(1),r()),t&2){let e=d(3);o(),b(" \xB7 Teacher: ",e.batch.teacherName,"")}}function sl(t,c){if(t&1&&(a(0,"p",41),s(1),h(2,al,2,1,"span",3),r()),t&2){let e=d(2);o(),b(" Child of ",e.batch.cityName||"Primary"," "),o(),p("ngIf",e.batch.teacherName)}}function ll(t,c){if(t&1){let e=M();a(0,"button",42),x("click",function(){C(e);let i=d(2);return f(i.activateBatch())}),s(1),_(2,"translate"),_(3,"translate"),r()}if(t&2){let e=d(2);p("disabled",e.activating),o(),b(" ",e.activating?m(2,2,"COMMON.LOADING"):m(3,4,"FR_DASHBOARD.ACTIVATE_BATCH")," ")}}function cl(t,c){if(t&1&&(a(0,"div",43),s(1),r()),t&2){let e=d(2);o(),b(" Content is managed from the primary cohort (",e.batch.cityName||"Paris","). Edit content there to update all cohorts. ")}}function dl(t,c){if(t&1&&(G(0),a(1,"div",44),s(2),r(),a(3,"div",20),s(4),r(),q()),t&2){let e=c.ngIf;o(2),g(e.date),o(2),b("Next Session (",e.level,")")}}function pl(t,c){t&1&&(a(0,"div",19),s(1,"\u2014"),r(),a(2,"div",20),s(3,"Next Session"),r())}function _l(t,c){if(t&1&&(a(0,"span",56),s(1),r()),t&2){let e=d().$implicit;o(),N(" \xB7 ",e.daysOfCourse.join(", ")," @ ",e.sessionTime||""," ")}}function ml(t,c){if(t&1){let e=M();a(0,"div",45),v(1,"div",46),a(2,"div",47),x("click",function(){let i=C(e).$implicit,l=d(2);return f(l.viewLevel(i))}),a(3,"div",48)(4,"span",49),s(5),r(),a(6,"span",50),s(7),_(8,"titlecase"),r()(),a(9,"div",51)(10,"span"),s(11),_(12,"translate"),r(),a(13,"span"),s(14,"\xB7"),r(),a(15,"span"),s(16),r(),h(17,_l,2,2,"span",52),r(),a(18,"div",53),v(19,"div",54),r(),a(20,"div",55),s(21),_(22,"translate"),r()()()}if(t&2){let e=c.$implicit,n=d(2);p("ngClass",n.getLevelStatusClass(e)),o(5),g(e.level),o(2),g(m(8,13,e.status)),o(4),N("",e.totalSessions," ",m(12,15,"FR_DASHBOARD.SESSIONS"),""),o(5),N("",n.formatDate(e.startDate)," \u2014 ",n.formatDate(e.endDate),""),o(),p("ngIf",e.daysOfCourse==null?null:e.daysOfCourse.length),o(2),Ne("width",n.getLevelProgress(e),"%"),o(2),qe(" ",e.completedSessions||0,"/",e.totalSessions," ",m(22,17,"FR_DASHBOARD.COMPLETED")," ")}}function gl(t,c){t&1&&(a(0,"div",57),v(1,"div",46),a(2,"div",58)(3,"div",48)(4,"span",49),s(5,"TCF Prep"),r(),a(6,"span",59),s(7,"Optional"),r()(),a(8,"div",51)(9,"span"),s(10,"Managed on tcf.passu.ca"),r()()()())}function ul(t,c){if(t&1){let e=M();a(0,"div",60),x("click",function(){let i=C(e).$implicit,l=d(2);return f(l.viewLevelSessions(i))}),a(1,"div",61)(2,"h4"),s(3),r(),a(4,"span",62),s(5),r()(),a(6,"div",63)(7,"p"),s(8),r(),a(9,"div",53),v(10,"div",54),r()(),a(11,"div",64)(12,"div",65)(13,"button",66),x("click",function(i){let l=C(e).$implicit,u=d(2);return f(u.openUserManagementModal(l,i))}),s(14," Users "),r(),a(15,"button",67),x("click",function(i){let l=C(e).$implicit,u=d(2);return f(u.navigateToLevelSessions(l,i))}),s(16," Sessions "),r()(),a(17,"button",68),x("click",function(i){let l=C(e).$implicit;return d(2).viewLevelSessions(l),f(i.stopPropagation())}),s(18),_(19,"translate"),r()()()}if(t&2){let e=c.$implicit,n=d(2);p("ngClass",n.getLevelStatusClass(e)),o(3),g(e.level),o(2),b("",e.totalSessions," sessions"),o(3),N("",n.formatDate(e.startDate)," \u2014 ",n.formatDate(e.endDate),""),o(2),Ne("width",n.getLevelProgress(e),"%"),o(8),b(" ",m(19,8,"FR_DASHBOARD.MANAGE_SESSIONS")," \u2192 ")}}
1function Cl(t,c){if(t&1&&(a(0,"span",69),s(1),r()),t&2){let e=d(2);o(),g(e.breaks.length)}}function fl(t,c){t&1&&(a(0,"div",70),s(1,"Loading\u2026"),r())}function hl(t,c){if(t&1){let e=M();a(0,"div",71)(1,"p"),s(2,"No breaks or holidays scheduled."),r(),a(3,"button",32),x("click",function(){C(e);let i=d(2);return f(i.addBreak())}),s(4,"+ Add Break / Holiday"),r()()}}function xl(t,c){if(t&1&&(a(0,"div",81),s(1),r()),t&2){let e=d().$implicit;o(),g(e.reason)}}function bl(t,c){if(t&1&&(a(0,"div",74)(1,"div",75)(2,"span",76),s(3),r(),a(4,"span",77),s(5),r(),a(6,"span",78),s(7),r(),a(8,"span",79),s(9),r()(),h(10,xl,2,1,"div",80),r()),t&2){let e=c.$implicit,n=d(3);p("ngClass",e.breakType==="holiday"?"break-card--holiday":"break-card--break"),o(2),p("ngClass",e.breakType==="holiday"?"badge-holiday":"badge-break"),o(),b(" ",e.breakType==="holiday"?"Holiday":"Break"," "),o(2),g(n.formatBreakDateRange(e.startDate,e.endDate)),o(2),N("",e.breakDurationDays," day",e.breakDurationDays!==1?"s":"",""),o(2),g(n.getLevelNameForBreak(e.levelId)),o(),p("ngIf",e.reason)}}function vl(t,c){if(t&1&&(a(0,"div",72),h(1,bl,11,8,"div",73),r()),t&2){let e=d(2);o(),p("ngForOf",e.breaks)("ngForTrackBy",e.trackByIndex)}}function Ol(t,c){if(t&1){let e=M();G(0),a(1,"div",5)(2,"button",6),x("click",function(){C(e);let i=d();return f(i.goBack())}),s(3),_(4,"translate"),r(),a(5,"div",7)(6,"div")(7,"h2"),s(8),h(9,ol,2,1,"span",8)(10,rl,2,0,"span",9),r(),h(11,sl,3,2,"p",10),a(12,"p",11),s(13),_(14,"translate"),_(15,"translate"),r()(),a(16,"div",12),h(17,ll,4,6,"button",13),a(18,"button",14),x("click",function(){C(e);let i=d();return f(i.viewStudents())}),s(19,"\u{1F465} Students"),r(),a(20,"button",15),x("click",function(){C(e);let i=d();return f(i.viewPayments())}),s(21,"Payments"),r(),a(22,"button",15),x("click",function(){C(e);let i=d();return f(i.viewBilling())}),s(23,"Billing Plans"),r(),a(24,"button",15),x("click",function(){C(e);let i=d();return f(i.editBatch())}),s(25),_(26,"translate"),r(),a(27,"button",15),x("click",function(){C(e);let i=d();return f(i.addBreak())}),s(28,"Add Break"),r(),a(29,"button",15),x("click",function(){C(e);let i=d();return f(i.announce())}),s(30,"Announce"),r()()()(),h(31,cl,2,1,"div",16),a(32,"div",17)(33,"div",18)(34,"div",19),s(35),r(),a(36,"div",20),s(37,"Enrolled Students"),r()(),a(38,"div",18)(39,"div",19),s(40),r(),a(41,"div",20),s(42,"Attendance Rate"),r()(),a(43,"div",18)(44,"div",19),s(45),r(),a(46,"div",20),s(47,"Pending Payments"),r()(),a(48,"div",18),h(49,dl,5,2,"ng-container",21)(50,pl,4,0,"ng-template",null,0,ke),r()(),a(52,"div",22)(53,"h3"),s(54),_(55,"translate"),r(),a(56,"div",23),h(57,ml,23,19,"div",24)(58,gl,11,0,"div",25),r()(),a(59,"div",26)(60,"h3"),s(61),_(62,"translate"),r(),a(63,"div",27),h(64,ul,20,10,"div",28),r()(),a(65,"div",29)(66,"div",30)(67,"h3"),s(68," Breaks & Holidays "),h(69,Cl,2,1,"span",31),r(),a(70,"button",32),x("click",function(){C(e);let i=d();return f(i.addBreak())}),s(71,"+ Add Break / Holiday"),r()(),h(72,fl,2,0,"div",33)(73,hl,5,0,"div",34)(74,vl,2,2,"div",35),r(),a(75,"app-cohort-user-management-modal",36),x("registrationComplete",function(){C(e);let i=d();return f(i.onRegistrationComplete())}),r(),a(76,"app-cohort-schedule-break-modal",37),x("breakAdded",function(){C(e);let i=d();return f(i.onBreakAdded())}),r(),a(77,"app-cohort-announcement-modal",38),x("announcementSent",function(){C(e);let i=d();return f(i.onAnnouncementSent())}),r(),q()}if(t&2){let e=pe(51),n=d();o(3),b("\u2190 ",m(4,38,"FR_DASHBOARD.ALL_BATCHES"),""),o(5),b(" ",n.getTitle(n.batch.title)," "),o(),p("ngIf",n.batch.cityName),o(),p("ngIf",n.batch.isPrimary),o(),p("ngIf",!n.batch.isPrimary&&n.batch.primaryBatchId),o(2),Bi(" ",n.formatDate(n.batch.startDate)," \u2014 ",n.formatDate(n.batch.endDate)," \xB7 ",n.batch.totalSessions," ",m(14,40,"FR_DASHBOARD.SESSIONS")," \xB7 ",n.batch.currentEnrolled,"/",n.batch.maxStudents," ",m(15,42,"FR_DASHBOARD.STUDENTS")," "),o(4),p("ngIf",n.batch.status==="draft"),o(8),b(" ",m(26,44,"COMMON.EDIT")," "),o(6),p("ngIf",!(n.batch!=null&&n.batch.isPrimary)&&(n.batch==null?null:n.batch.primaryBatchId)),o(4),g(n.batch.currentEnrolled),o(5),g(n.getAttendanceRate()),o(5),g(n.getPendingPaymentsCount()),o(4),p("ngIf",n.getNextUpcomingSession())("ngIfElse",e),o(5),g(m(55,46,"FR_DASHBOARD.BATCH_TIMELINE")),o(3),p("ngForOf",n.batch.levels)("ngForTrackBy",n.trackByIndex),o(),p("ngIf",n.batch.tcfPrepEnabled),o(3),g(m(62,48,"FR_DASHBOARD.LEVELS")),o(3),p("ngForOf",n.batch.levels)("ngForTrackBy",n.trackByIndex),o(5),p("ngIf",n.breaks.length),o(3),p("ngIf",n.loadingBreaks),o(),p("ngIf",!n.loadingBreaks&&n.breaks.length===0),o(),p("ngIf",!n.loadingBreaks&&n.breaks.length>0),o(),p("courseId",n.selectedCourseId)("courseTitle",n.selectedCourseTitle)("batchId",n.batchId),o(),p("batchId",n.batchId)("levels",n.batch.levels||Re(50,gr)),o(),p("batchId",n.batchId)("levels",n.batch.levels||Re(51,gr))}}var ur=(()=>{class t{constructor(e,n,i,l,u){this.route=e,this.router=n,this.cohortService=i,this.changeLangService=l,this.navigationHistory=u,this.batch=null,this.loading=!0,this.activating=!1,this.currentLang="en",this.attendanceRate="\u2014",this.loadingAttendance=!1,this.breaks=[],this.loadingBreaks=!1,this.selectedCourseId="",this.selectedCourseTitle="",this.currentLang=this.changeLangService.current_lang?.value||"en"}
1ngOnInit(){this.batchId=this.route.snapshot.paramMap.get("batchId")||"",this.loadBatch(),this.loadAttendanceSummary(),this.loadBreaks()}loadBatch(){this.loading=!0,this.cohortService.getBatchDetails(this.batchId).subscribe({next:e=>{e?.success&&(this.batch=e.data),this.loading=!1},error:()=>{this.loading=!1}})}getTitle(e){return e?typeof e=="string"?e:e[this.currentLang]||e.en||"":""}formatDate(e){return e?new Date(e).toLocaleDateString(this.currentLang==="fr"?"fr-CA":"en-CA"):""}getLevelStatusClass(e){switch(e.status){case"in_progress":return"level-active";case"completed":return"level-completed";default:return"level-upcoming"}}getLevelProgress(e){return e.totalSessions?Math.round((e.completedSessions||0)/e.totalSessions*100):0}activateBatch(){!this.batch||this.activating||confirm("Activate this batch? This will confirm all underlying courses.")&&(this.activating=!0,this.cohortService.activateBatch(this.batchId).subscribe({next:e=>{this.activating=!1,e?.success&&this.loadBatch()},error:()=>{this.activating=!1}}))}editBatch(){this.router.navigate(["/main/dashboard/cohorts/batches/edit",this.batchId])}viewStudents(){this.router.navigate(["/main/dashboard/cohorts/batches",this.batchId,"enrollments"])}viewPayments(){this.router.navigate(["/main/dashboard/cohorts/batches",this.batchId,"payments"])}viewBilling(){this.router.navigate(["/main/dashboard/cohorts/batches",this.batchId,"billing"])}viewLevel(e){this.router.navigate(["/main/dashboard/cohorts/batches",this.batchId,"levels",e.levelId])}viewLevelSessions(e){e.levelId&&this.router.navigate(["/main/dashboard/cohorts/batches",this.batchId,"levels",e.levelId,"sessions"])}goBack(){this.navigationHistory.goBackOrFallback(["/main/dashboard/cohorts/batches"])}loadAttendanceSummary(){this.loadingAttendance=!0,this.cohortService.getAttendanceSummary(this.batchId).subscribe({next:e=>{e?.success&&e.data?.averageAttendanceRate!=null&&(this.attendanceRate=e.data.averageAttendanceRate+"%"),this.loadingAttendance=!1},error:()=>{this.loadingAttendance=!1}})}getAttendanceRate(){return this.attendanceRate}getPendingPaymentsCount(){return"\u2014"}getNextUpcomingSession(){if(!this.batch?.levels)return null;let e=new Date,n=null;for(let i of this.batch.levels){if(i.status==="completed"||!i.startDate)continue;let l=new Date(i.startDate);l>e&&(!n||l<n.date)&&(n={date:l,level:i.level})}return n?{date:n.date.toLocaleDateString(this.currentLang==="fr"?"fr-CA":"en-CA"),level:n.level}:null}openUserManagementModal(e,n){n.stopPropagation(),e.courseId&&(this.selectedCourseId=e.courseId,this.selectedCourseTitle=e.level,setTimeout(()=>{this.userManagementModal&&this.userManagementModal.openModal()},0))}onRegistrationComplete(){this.loadBatch()}navigateToLevelSessions(e,n){n.stopPropagation(),e.courseId&&this.router.navigate(["/main/dashboard/cohorts/batches",this.batchId,"levels",e.levelId,"sessions"])}addBreak(){this.scheduleBreakModal&&this.scheduleBreakModal.openModal()}loadBreaks(){this.loadingBreaks=!0,this.cohortService.listBreaks(this.batchId).subscribe({next:e=>{e?.success&&(this.breaks=e.breaks||[]),this.loadingBreaks=!1},error:()=>{this.loadingBreaks=!1}})}formatBreakDateRange(e,n){if(!e||!n)return"";let i=this.currentLang==="fr"?"fr-CA":"en-CA",l={month:"short",day:"numeric",year:"numeric"},u=new Date(e).toLocaleDateString(i,l),O=new Date(n).toLocaleDateString(i,l);return`${u} \u2013 ${O}`}getLevelNameForBreak(e){if(!e||!this.batch?.levels)return"All levels";let n=this.batch.levels.find(i=>i.levelId===e);return n?n.level:"All levels"}onBreakAdded(){this.loadBatch(),this.loadBreaks()}announce(){this.announcementModal&&this.announcementModal.openModal()}onAnnouncementSent(){}trackByIndex(e){return e}static{this.\u0275fac=function(n){return new(n||t)(w(te),w(ue),w(de),w(Rt),w(fe))}}static{this.\u0275cmp=H({type:t,selectors:[["app-batch-detail"]],viewQuery:function(n,i){if(n&1&&(_e(An,5),_e(gt,5),_e(ut,5)),n&2){let l;me(l=ge())&&(i.userManagementModal=l.first),me(l=ge())&&(i.scheduleBreakModal=l.first),me(l=ge())&&(i.announcementModal=l.first)}},decls:3,vars:2,consts:[["noUpcoming",""],[1,"batch-detail-container"],["class","loading-state",4,"ngIf"],[4,"ngIf"],[1,"loading-state"],[1,"header"],[1,"btn-back",3,"click"],[1,"header-row"],["class","city-label",4,"ngIf"],["class","primary-badge",4,"ngIf"],["class","child-indicator",4,"ngIf"],[1,"subtitle"],[1,"header-actions"],["class","btn-primary",3,"disabled","click",4,"ngIf"],[1,"btn-primary",3,"click"],[1,"btn-secondary",3,"click"],["class","info-banner",4,"ngIf"],[1,"stats-row"],[1,"stat-card"],[1,"stat-value"],[1,"stat-label"],[4,"ngIf","ngIfElse"],[1,"timeline-section"],[1,"timeline"],["class","timeline-item",3,"ngClass",4,"ngFor","ngForOf","ngForTrackBy"],["class","timeline-item level-optional",4,"ngIf"],[1,"levels-section"],[1,"levels-grid"],["class","level-card",3,"ngClass","click",4,"ngFor","ngForOf","ngForTrackBy"],[1,"breaks-section"],[1,"breaks-header"],["class","breaks-count",4,"ngIf"],[1,"btn-secondary","btn-sm",3,"click"],["class","breaks-loading",4,"ngIf"],["class","breaks-empty",4,"ngIf"],["class","breaks-list",4,"ngIf"],["modalId","batchDetailUserManagementModal",3,"registrationComplete","courseId","courseTitle","batchId"],["modalId","batchDetailScheduleBreakModal",3,"breakAdded","batchId","levels"],["modalId","batchDetailAnnouncementMod
1al",3,"announcementSent","batchId","levels"],[1,"city-label"],[1,"primary-badge"],[1,"child-indicator"],[1,"btn-primary",3,"click","disabled"],[1,"info-banner"],[1,"stat-value","stat-value-sm"],[1,"timeline-item",3,"ngClass"],[1,"timeline-dot"],[1,"timeline-content",3,"click"],[1,"level-header"],[1,"level-name"],[1,"level-status"],[1,"level-info"],["class","level-schedule-hint",4,"ngIf"],[1,"progress-bar"],[1,"progress-fill"],[1,"progress-text"],[1,"level-schedule-hint"],[1,"timeline-item","level-optional"],[1,"timeline-content"],[1,"level-status","optional-badge"],[1,"level-card",3,"click","ngClass"],[1,"level-card-header"],[1,"sessions-badge"],[1,"level-card-body"],[1,"level-card-footer"],[1,"level-card-actions"],[1,"btn-action","btn-action-users",3,"click"],[1,"btn-action","btn-action-sessions",3,"click"],[1,"btn-link",3,"click"],[1,"breaks-count"],[1,"breaks-loading"],[1,"breaks-empty"],[1,"breaks-list"],["class","break-card",3,"ngClass",4,"ngFor","ngForOf","ngForTrackBy"],[1,"break-card",3,"ngClass"],[1,"break-card-main"],[1,"break-type-badge",3,"ngClass"],[1,"break-dates"],[1,"break-duration"],[1,"break-scope"],["class","break-reason",4,"ngIf"],[1,"break-reason"]],template:function(n,i){n&1&&(a(0,"div",1),h(1,il,4,3,"div",2)(2,Ol,78,52,"ng-container",3),r()),n&2&&(o(),p("ngIf",i.loading),o(),p("ngIf",!i.loading&&i.batch))},dependencies:[ce,Q,$,An,gt,ut,at,j],styles:['.batch-detail-container[_ngcontent-%COMP%]{padding:24px}.batch-detail-container[_ngcontent-%COMP%] .header[_ngcontent-%COMP%]{margin-bottom:32px}.batch-detail-container[_ngcontent-%COMP%] .header[_ngcontent-%COMP%] .btn-back[_ngcontent-%COMP%]{background:none;border:none;color:#6b7280;cursor:pointer;padding:0;margin-bottom:8px;font-size:14px}.batch-detail-container[_ngcontent-%COMP%] .header[_ngcontent-%COMP%] .btn-back[_ngcontent-%COMP%]:hover{color:#374151}.batch-detail-container[_ngcontent-%COMP%] .header[_ngcontent-%COMP%] .header-row[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:flex-start}.batch-detail-container[_ngcontent-%COMP%] .header[_ngcontent-%COMP%] .header-row[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0;font-size:24px;font-weight:600}.batch-detail-container[_ngcontent-%COMP%] .header[_ngcontent-%COMP%] .header-row[_ngcontent-%COMP%] .subtitle[_ngcontent-%COMP%]{color:#6b7280;margin:4px 0 0;font-size:14px}.batch-detail-container[_ngcontent-%COMP%] .header[_ngcontent-%COMP%] .header-row[_ngcontent-%COMP%] .city-label[_ngcontent-%COMP%]{font-size:18px;font-weight:400;color:#6b7280}.batch-detail-container[_ngcontent-%COMP%] .header[_ngcontent-%COMP%] .header-row[_ngcontent-%COMP%] .child-indicator[_ngcontent-%COMP%]{font-size:13px;color:#6b7280;margin:4px 0 0}.batch-detail-container[_ngcontent-%COMP%] .header[_ngcontent-%COMP%] .header-actions[_ngcontent-%COMP%]{display:flex;gap:8px}.batch-detail-container[_ngcontent-%COMP%] .primary-badge[_ngcontent-%COMP%]{background:#d97706;color:#fff;font-size:10px;padding:2px 10px;border-radius:10px;text-transform:uppercase;font-weight:700;letter-spacing:.5px;vertical-align:middle;margin-left:8px}.batch-detail-container[_ngcontent-%COMP%] .info-banner[_ngcontent-%COMP%]{background:#eff6ff;border:1px solid #BFDBFE;border-radius:8px;padding:12px 16px;color:#1e40af;font-size:13px;margin-bottom:16px}.batch-detail-container[_ngcontent-%COMP%] .btn-primary[_ngcontent-%COMP%]{background:#4f46e5;color:#fff;border:none;padding:10px 20px;border-radius:8px;cursor:pointer;font-weight:500}.batch-detail-container[_ngcontent-%COMP%] .btn-primary[_ngcontent-%COMP%]:hover:not(:disabled){background:#4338ca}.batch-detail-container[_ngcontent-%COMP%] .btn-primary[_ngcontent-%COMP%]:disabled{opacity:.6;cursor:not-allowed}.batch-detail-container[_ngcontent-%COMP%] .btn-secondary[_ngcontent-%COMP%]{background:#fff;color:#374151;border:1px solid #d1d5db;padding:10px 20px;border-radius:8px;cursor:pointer}.batch-detail-container[_ngcontent-%COMP%] .btn-secondary[_ngcontent-%COMP%]:hover{background:#f3f4f6}.batch-detail-container[_ngcontent-%COMP%] .stats-row[_ngcontent-%COMP%]{display:flex;gap:16px;margin-bottom:24px}.batch-detail-container[_ngcontent-%COMP%] .stats-row[_ngcontent-%COMP%] .stat-card[_ngcontent-%COMP%]{flex:1;background:#fff;border:1px solid #e5e7eb;border-radius:12px;padding:20px;text-align:center}.batch-detail-container[_ngcontent-%COMP%] .stats-row[_ngcontent-%COMP%] .stat-card[_ngcontent-%COMP%] .stat-value[_ngcontent-%COMP%]{font-size:28px;font-weight:700;color:#111827;line-height:1.2}.batch-detail-container[_ngcontent-%COMP%] .stats-row[_ngcontent-%COMP%] .stat-card[_ngcontent-%COMP%] .stat-value.stat-value-sm[_ngcontent-%COMP%]{font-size:18px;font-weight:600}.batch-detail-container[_ngcontent-%COMP%] .stats-row[_ngcontent-%COMP%] .stat-card[_ngcontent-%COMP%] .stat-label[_ngcontent-%COMP%]{font-size:13px;color:#6b7280;margin-top:4px}@media (max-width: 768px){.batch-detail-container[_ngcontent-%COMP%] .stats-row[_ngcontent-%COMP%]{flex-wrap:wrap}.batch-detail-container[_ngcontent-%COMP%] .stats-row[_ngcontent-%COMP%] .stat-card[_ngcontent-%COMP%]{flex:1 1 calc(50% - 8px);min-width:0}}.batch-detail-container[_ngcontent-%COMP%] .timeline-section[_ngcontent-%COMP%]{background:#fff;border:1px solid #e5e7eb;border-radius:12px;padding:24px;margin-bottom:24px}.batch-detail-container[_ngcontent-%COMP%] .timeline-section[_ngcontent-%COMP%] h3[_ngcontent-%COMP%]{margin:0 0 20px;font-size:18px}.batch-detail-container[_ngcontent-%COMP%] .timeline[_ngcontent-%COMP%]{position:relative;padding-left:24px}.batch-detail-container[_ngcontent-%COMP%] .timeline[_ngcontent-%COMP%]:before{content:"";position:absolute;
1left:8px;top:0;bottom:0;width:2px;background:#e5e7eb}.batch-detail-container[_ngcontent-%COMP%] .timeline-item[_ngcontent-%COMP%]{position:relative;margin-bottom:20px}.batch-detail-container[_ngcontent-%COMP%] .timeline-item[_ngcontent-%COMP%] .timeline-dot[_ngcontent-%COMP%]{position:absolute;left:-20px;top:4px;width:12px;height:12px;border-radius:50%;background:#d1d5db}.batch-detail-container[_ngcontent-%COMP%] .timeline-item.level-active[_ngcontent-%COMP%] .timeline-dot[_ngcontent-%COMP%]{background:#4f46e5}.batch-detail-container[_ngcontent-%COMP%] .timeline-item.level-completed[_ngcontent-%COMP%] .timeline-dot[_ngcontent-%COMP%]{background:#10b981}.batch-detail-container[_ngcontent-%COMP%] .timeline-item.level-optional[_ngcontent-%COMP%] .timeline-dot[_ngcontent-%COMP%]{background:#f59e0b;border:2px dashed #d97706}.batch-detail-container[_ngcontent-%COMP%] .timeline-item.level-optional[_ngcontent-%COMP%] .timeline-content[_ngcontent-%COMP%]{border-style:dashed;border-color:#f59e0b}.batch-detail-container[_ngcontent-%COMP%] .timeline-item[_ngcontent-%COMP%] .optional-badge[_ngcontent-%COMP%]{background:#fef3c7;color:#92400e;padding:2px 8px;border-radius:8px;font-size:11px;font-weight:600}.batch-detail-container[_ngcontent-%COMP%] .timeline-item[_ngcontent-%COMP%] .level-schedule-hint[_ngcontent-%COMP%]{font-style:italic}.batch-detail-container[_ngcontent-%COMP%] .timeline-item[_ngcontent-%COMP%] .timeline-content[_ngcontent-%COMP%]{cursor:pointer;padding:12px 16px;border-radius:8px;border:1px solid #e5e7eb;transition:background .2s}.batch-detail-container[_ngcontent-%COMP%] .timeline-item[_ngcontent-%COMP%] .timeline-content[_ngcontent-%COMP%]:hover{background:#f9fafb}.batch-detail-container[_ngcontent-%COMP%] .timeline-item[_ngcontent-%COMP%] .level-header[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:center;margin-bottom:4px}.batch-detail-container[_ngcontent-%COMP%] .timeline-item[_ngcontent-%COMP%] .level-header[_ngcontent-%COMP%] .level-name[_ng
1content-%COMP%]{font-weight:600;font-size:16px}.batch-detail-container[_ngcontent-%COMP%] .timeline-item[_ngcontent-%COMP%] .level-header[_ngcontent-%COMP%] .level-status[_ngcontent-%COMP%]{font-size:12px;color:#6b7280;text-transform:uppercase}.batch-detail-container[_ngcontent-%COMP%] .timeline-item[_ngcontent-%COMP%] .level-info[_ngcontent-%COMP%]{font-size:13px;color:#6b7280;margin-bottom:8px;display:flex;gap:6px}.batch-detail-container[_ngcontent-%COMP%] .progress-bar[_ngcontent-%COMP%]{width:100%;height:6px;background:#e5e7eb;border-radius:3px;overflow:hidden;margin-bottom:4px}.batch-detail-container[_ngcontent-%COMP%] .progress-bar[_ngcontent-%COMP%] .progress-fill[_ngcontent-%COMP%]{height:100%;background:#4f46e5;border-radius:3px;transition:width .3s}.batch-detail-container[_ngcontent-%COMP%] .progress-text[_ngcontent-%COMP%]{font-size:12px;color:#6b7280}.batch-detail-container[_ngcontent-%COMP%] .levels-section[_ngcontent-%COMP%] h3[_ngcontent-%COMP%]{font-size:18px;margin-bottom:16px}.batch-detail-container[_ngcontent-%COMP%] .levels-grid[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px}.batch-detail-container[_ngcontent-%COMP%] .level-card[_ngcontent-%COMP%]{background:#fff;border:1px solid #e5e7eb;border-radius:12px;padding:16px;cursor:pointer;transition:box-shadow .2s}.batch-detail-container[_ngcontent-%COMP%] .level-card[_ngcontent-%COMP%]:hover{box-shadow:0 4px 12px #00000014}.batch-detail-container[_ngcontent-%COMP%] .level-card.level-active[_ngcontent-%COMP%]{border-left:4px solid #4f46e5}.batch-detail-container[_ngcontent-%COMP%] .level-card.level-completed[_ngcontent-%COMP%]{border-left:4px solid #10b981}.batch-detail-container[_ngcontent-%COMP%] .level-card[_ngcontent-%COMP%] .level-card-header[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.batch-detail-container[_ngcontent-%COMP%] .level-card[_ngcontent-%COMP%] .level-card-header[_ngcontent-%COMP%] h4[_ngcontent-%COMP%]{margin:0;font-size:18px}.batch-detail-container[_ngcontent-%COMP%] .level-card[_ngcontent-%COMP%] .level-card-header[_ngcontent-%COMP%] .sessions-badge[_ngcontent-%COMP%]{background:#f3f4f6;padding:4px 10px;border-radius:12px;font-size:12px;color:#6b7280}.batch-detail-container[_ngcontent-%COMP%] .level-card[_ngcontent-%COMP%] .level-card-body[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{font-size:13px;color:#6b7280;margin:0 0 8px}.batch-detail-container[_ngcontent-%COMP%] .level-card[_ngcontent-%COMP%] .level-card-footer[_ngcontent-%COMP%]{margin-top:12px}.batch-detail-container[_ngcontent-%COMP%] .level-card[_ngcontent-%COMP%] .level-card-footer[_ngcontent-%COMP%] .level-card-actions[_ngcontent-%COMP%]{display:flex;gap:8px;margin-bottom:8px}.batch-detail-container[_ngcontent-%COMP%] .level-card[_ngcontent-%COMP%] .level-card-footer[_ngcontent-%COMP%] .level-card-actions[_ngcontent-%COMP%] .btn-action[_ngcontent-%COMP%]{flex:1;padding:6px 12px;border-radius:6px;font-size:12px;font-weight:500;cursor:pointer;border:1px solid #d1d5db;background:#f9fafb;color:#374151;transition:background .2s,border-color .2s}.batch-detail-container[_ngcontent-%COMP%] .level-card[_ngcontent-%COMP%] .level-card-footer[_ngcontent-%COMP%] .level-card-actions[_ngcontent-%COMP%] .btn-action[_ngcontent-%COMP%]:hover{background:#f3f4f6;border-color:#9ca3af}.batch-detail-container[_ngcontent-%COMP%] .level-card[_ngcontent-%COMP%] .level-card-footer[_ngcontent-%COMP%] .level-card-actions[_ngcontent-%COMP%] .btn-action.btn-action-users[_ngcontent-%COMP%]{border-color:#c7d2fe;color:#4f46e5;background:#eef2ff}.batch-detail-container[_ngcontent-%COMP%] .level-card[_ngcontent-%COMP%] .level-card-footer[_ngcontent-%COMP%] .level-card-actions[_ngcontent-%COMP%] .btn-action.btn-action-users[_ngcontent-%COMP%]:hover{background:#e0e7ff;border-color:#a5b4fc}.batch-detail-container[_ngcontent-%COMP%] .level-card[_ngcontent-%COMP%] .level-card-footer[_ngcontent-%COMP%] .level-card-actions[_ngcontent-%COMP%] .btn-action.btn-action-se
1ssions[_ngcontent-%COMP%]{border-color:#a7f3d0;color:#059669;background:#ecfdf5}.batch-detail-container[_ngcontent-%COMP%] .level-card[_ngcontent-%COMP%] .level-card-footer[_ngcontent-%COMP%] .level-card-actions[_ngcontent-%COMP%] .btn-action.btn-action-sessions[_ngcontent-%COMP%]:hover{background:#d1fae5;border-color:#6ee7b7}.batch-detail-container[_ngcontent-%COMP%] .level-card[_ngcontent-%COMP%] .level-card-footer[_ngcontent-%COMP%] .btn-link[_ngcontent-%COMP%]{background:none;border:none;color:#4f46e5;cursor:pointer;padding:0;font-size:13px;font-weight:500}.batch-detail-container[_ngcontent-%COMP%] .level-card[_ngcontent-%COMP%] .level-card-footer[_ngcontent-%COMP%] .btn-link[_ngcontent-%COMP%]:hover{text-decoration:underline}.batch-detail-container[_ngcontent-%COMP%] .loading-state[_ngcontent-%COMP%]{text-align:center;padding:48px;color:#6b7280}.batch-detail-container[_ngcontent-%COMP%] .breaks-section[_ngcontent-%COMP%]{margin-top:32px}.batch-detail-container[_ngcontent-%COMP%] .breaks-section[_ngcontent-%COMP%] .breaks-header[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.batch-detail-container[_ngcontent-%COMP%] .breaks-section[_ngcontent-%COMP%] .breaks-header[_ngcontent-%COMP%] h3[_ngcontent-%COMP%]{margin:0;font-size:18px;display:flex;align-items:center;gap:8px}.batch-detail-container[_ngcontent-%COMP%] .breaks-section[_ngcontent-%COMP%] .breaks-header[_ngcontent-%COMP%] .breaks-count[_ngcontent-%COMP%]{background:#f3f4f6;color:#374151;border-radius:12px;font-size:13px;font-weight:600;padding:2px 10px}.batch-detail-container[_ngcontent-%COMP%] .breaks-section[_ngcontent-%COMP%] .btn-sm[_ngcontent-%COMP%]{padding:6px 14px;font-size:13px}.batch-detail-container[_ngcontent-%COMP%] .breaks-section[_ngcontent-%COMP%] .breaks-loading[_ngcontent-%COMP%]{color:#6b7280;font-size:14px;padding:16px 0}.batch-detail-container[_ngcontent-%COMP%] .breaks-section[_ngcontent-%COMP%] .breaks-empty[_ngcontent-%COMP%]{background:#fff;border:1px dashed #d1d5db;border-radius:12px;padding:32px;text-align:center;color:#6b7280;font-size:14px}.batch-detail-container[_ngcontent-%COMP%] .breaks-section[_ngcontent-%COMP%] .breaks-empty[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{margin:0 0 12px}.batch-detail-container[_ngcontent-%COMP%] .breaks-section[_ngcontent-%COMP%] .breaks-list[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:12px}.batch-detail-container[_ngcontent-%COMP%] .breaks-section[_ngcontent-%COMP%] .break-card[_ngcontent-%COMP%]{background:#fff;border:1px solid #e5e7eb;border-radius:10px;padding:14px 16px;box-shadow:0 1px 4px #0000000d;border-left-width:4px}.batch-detail-container[_ngcontent-%COMP%] .breaks-section[_ngcontent-%COMP%] .break-card.break-card--break[_ngcontent-%COMP%]{border-left-color:#29e4e4}.batch-detail-container[_ngcontent-%COMP%] .breaks-section[_ngcontent-%COMP%] .break-card.break-card--holiday[_ngcontent-%COMP%]{border-left-color:#f59e0b}.batch-detail-container[_ngcontent-%COMP%] .breaks-section[_ngcontent-%COMP%] .break-card[_ngcontent-%COMP%] .break-card-main[_ngcontent-%COMP%]{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.batch-detail-container[_ngcontent-%COMP%] .breaks-section[_ngcontent-%COMP%] .break-card[_ngcontent-%COMP%] .break-type-badge[_ngcontent-%COMP%]{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;padding:3px 10px;border-radius:10px}.batch-detail-container[_ngcontent-%COMP%] .breaks-section[_ngcontent-%COMP%] .break-card[_ngcontent-%COMP%] .break-type-badge.badge-break[_ngcontent-%COMP%]{background:#e0fafa;color:#0e7490}.batch-detail-container[_ngcontent-%COMP%] .breaks-section[_ngcontent-%COMP%] .break-card[_ngcontent-%COMP%] .break-type-badge.badge-holiday[_ngcontent-%COMP%]{background:#fef3c7;color:#92400e}.batch-detail-container[_ngcontent-%COMP%] .breaks-section[_ngcontent-%COMP%] .break-card[_ngcontent-%COMP%] .break-dates[_ngcontent-%COMP%]{font-size:14px;font-weight:500;color:#111827}.batch-detail-container[_ngcontent-%COMP%] .breaks-section[_ngcontent-%COMP%] .break-card[_ngcontent-%COMP%] .break-duration[_ngcontent-%COMP%]{font-size:13px;color:#6b7280;background:#f3f4f6;padding:2px 8px;border-radius:8px}.batch-detail-container[_ngcontent-%COMP%] .breaks-section[_ngcontent-%COMP%] .break-card[_ngcontent-%COMP%] .break-scope[_ngcontent-%COMP%]{font-size:13px;color:#6b7280;margin-left:auto}.batch-detail-container[_ngcontent-%COMP%] .breaks-section[_ngcontent-%COMP%] .break-card[_ngcontent-%COMP%] .break-reason[_ngcontent-%COMP%]{margin-top:8px;font-size:13px;color:#6b7280;font-style:italic}']})}}return t})();function Ml(t,c){t&1&&(a(0,"div",4)(1,"p"),s(2),_(3,"translate"),r()()),t&2&&(o(2),g(m(3,1,"COMMON.LOADING")))}function Pl(t,c){if(t&1){let e=M();a(0,"button",32),x("click",function(){C(e);let i=d(4);return f(i.navigateToExamCorrections(i.midExam.assessmentId))}),s(1,"Correct"),r()}}function Sl(t,c){if(t&1){let e=M();a(0,"div",25)(1,"div",26)(2,"span",27),s(3,"Mid-term Exam"),r(),a(4,"span",28),s(5),r()(),a(6,"div",29)(7,"button",30),x("click",function(){C(e);let i=d(3);return f(i.navigateToExamEditor(i.midExam.assessmentId))}),s(8,"Edit"),r(),h(9,Pl,2,0,"button",31),r()()}if(t&2){let e=d(3);o(5),b("",e.getSubmissionCount(e.midExam)," submissions"),o(4),p("ngIf",e.getSubmissionCount(e.midExam)>0)}}function wl(t,c){if(t&1){let e=M();a(0,"button",32),x("click",function(){C(e);let i=d(4);return f(i.navigateToExamCorrections(i.finalExam.assessmentId))}),s(1,"Correct"),r()}}function El(t,c){if(t&1){let e=M();a(0,"div",25)(1,"div",26)(2,"span",27),s(3,"Final Exam"),r(),a(4,"span",28),s(5),r()(),a(6,"div",29)(7,"button",30),x("click",function(){C(e);let i=d(3);return f(i.navigateToExamEditor(i.finalExam.assessmentId))}),s(8,"Edit"),r(),h(9,wl,2,0,"button",31),r()()}if(t&2){let e=d(3);o(5),b("",e.getSubmissionCount(e.finalExam)," submissions"),o(4),p("ngIf",e.getSubmissionCount(e.finalExam)>0)}}function Il(t,c){if(t&1&&(a(0,"div",21)(1,"h3",22),s(2,"Mid/Final Exams"),r(),a(3,"div",23),h(4,Sl,10,2,"div",24)(5,El,10,2,"div",24),r()()),t&2){let e=d(2);o(4),p("ngIf",e.midExam),o(),p("ngIf",e.finalExam)}}function yl(t,c){if(t&1){let e=M();G(0),a(1,"div",5)(2,"button",6),x("click",function(){C(e);let i=d();return f(i.goBack())}),s(3),r(),a(4,"div",7)(5,"div")(6,"h2"),s(7),r(),a(8,"p",8),s(9),_(10,"translate"),_(11,"translate"),r()(),a(12,"div",9)(13,"button",10),x("click",function(){C(e);let i=d();return f(i.addBreak())}),s(14,"Add Break"),r(),a(15,"button",10),x("click",function(){C(e);let i=d();return f(i.announce())}),s(16,"Announce"),r()()()(),a(17,"div",11)(18,"div",12),v(19,"div",13),r(),a(20,"p",14),s(21),_(22,"translate"),r()(),a(23,"div",15)(24,"div",16),x("click",function(){C(e);let i=d();
1return f(i.navigateToSessions())}),a(25,"div",17),s(26,"\uF4D6"),r(),a(27,"h4"),s(28),_(29,"translate"),r(),a(30,"p"),s(31),_(32,"translate"),r()(),a(33,"div",16),x("click",function(){C(e);let i=d();return f(i.navigateToAssessments())}),a(34,"div",17),s(35,"\uF4DD"),r(),a(36,"h4"),s(37),_(38,"translate"),r(),a(39,"p"),s(40),_(41,"translate"),r()()(),h(42,Il,6,2,"div",18),a(43,"app-cohort-schedule-break-modal",19),x("breakAdded",function(){C(e);let i=d();return f(i.onBreakAdded())}),r(),a(44,"app-cohort-announcement-modal",20),x("announcementSent",function(){C(e);let i=d();return f(i.onAnnouncementSent())}),r(),q()}if(t&2){let e=d();o(3),b("\u2190 ",e.batchTitle,""),o(4),g(e.level.level),o(2),It(" ",e.formatDate(e.level.startDate)," \u2014 ",e.formatDate(e.level.endDate)," \xB7 ",e.getLevelTotalSessions()," ",m(10,23,"FR_DASHBOARD.SESSIONS")," \xB7 ",e.level.durationMonths," ",m(11,25,"FR_DASHBOARD.MONTHS")," "),o(10),Ne("width",e.getLevelProgress(),"%"),o(2),Et(" ",e.level.completedSessions||0,"/",e.getLevelTotalSessions()," ",m(22,27,"FR_DASHBOARD.SESSIONS_COMPLETED")," (",e.getLevelProgress(),"%) "),o(7),g(m(29,29,"FR_DASHBOARD.MANAGE_SESSIONS")),o(3),g(m(32,31,"FR_DASHBOARD.VIEW_EDIT_SESSIONS")),o(6),g(m(38,33,"ASSESSMENTS.MANAGE_EXAMS")),o(3),g(m(41,35,"ASSESSMENTS.MANAGE_EXAMS_DESC")),o(2),p("ngIf",e.midExam||e.finalExam),o(),p("batchId",e.batchId)("levels",e.batchLevels),o(),p("batchId",e.batchId)("levels",e.batchLevels)}}function kl(t,c){if(t&1){let e=M();a(0,"div",33)(1,"p"),s(2,"Level not found."),r(),a(3,"button",10),x("click",function(){C(e);let i=d();return f(i.goBack())}),s(4),_(5,"translate"),r()()}t&2&&(o(4),g(m(5,1,"COMMON.BACK")))}var Cr=(()=>{class t{constructor(e,n,i,l,u,O){this.route=e,this.router=n,this.cohortService=i,this.assessmentService=l,this.changeLangService=u,this.navigationHistory=O,this.level=null,this.batchLevels=[],this.batchTitle="",this.loading=!0,this.currentLang="en",this.midExam=null,this.finalExam=null,this.currentLang=this.changeLangService.current_lang?.value||"en"}ngOnInit(){this.batchId=this.route.snapshot.paramMap.get("batchId")||"",this.levelId=this.route.snapshot.paramMap.get("levelId")||"",this.loadBatchAndLevel()}loadBatchAndLevel(){this.loading=!0,this.cohortService.getBatchDetails(this.batchId).subscribe({next:e=>{if(e?.success&&e.data){let n=e.data,i=n.title;this.batchTitle=typeof i=="string"?i:i?.[this.currentLang]||i?.en||"",this.batchLevels=n.levels||[],this.level=this.batchLevels.find(l=>l.levelId===this.levelId)||null,this.level?.courseId&&this.loadAssessments(this.level.courseId)}this.loading=!1},error:()=>{this.loading=!1}})}formatDate(e){return e?new Date(e).toLocaleDateString(this.currentLang==="fr"?"fr-CA":"en-CA"):""}getLevelProgress(){let e=this.getLevelTotalSessions();return e?Math.round((this.level?.completedSessions||0)/e*100):0}getLevelTotalSessions(){return this.level?.totalSessions||0}navigateToSessions(){this.router.navigate(["/main/dashboard/cohorts/batches",this.batchId,"levels",this.levelId,"sessions"])}navigateToSessionContent(e){this.router.navigate(["/main/dashboard/cohorts/batches",this.batchId,"levels",this.levelId,"sessions",e,"content"])}loadAssessments(e){this.assessmentService.listAssessments(e).subscribe({next:n=>{if(n?.success){let i=n.data||[];this.midExam=i.find(l=>l.type==="MID")||null,this.finalExam=i.find(l=>l.type==="FINAL")||null}}})}navigateToExamEditor(e){this.router.navigate(["/main/dashboard/cohorts/batches",this.batchId,"levels",this.levelId,"assessments",e])}navigateToExamCorrections(e){this.router.navigate(["/main/dashboard/cohorts/batches",this.batchId,"levels",this.levelId,"assessments",e],{queryParams:{tab:"submissions"}})}getSubmissionCount(e){return e.submissionCount||0}navigateToAssessments(){this.router.navigate(["/main/dashboard/cohorts/batches",this.batchId,"levels",this.levelId,"assessments"])}goBack(){this.navigationHistory.goBackOrFallback(["/main/dashboard/cohorts/batches",this.batchId])}addBreak(){this.scheduleBreakModal&&this.scheduleBreakModal.openModal(this.levelId)}onBreakAdded(){this.loadBatchAndLevel()}
1announce(){this.announcementModal&&this.announcementModal.openModal(this.levelId)}onAnnouncementSent(){}static{this.\u0275fac=function(n){return new(n||t)(w(te),w(ue),w(de),w(Vo),w(Rt),w(fe))}}static{this.\u0275cmp=H({type:t,selectors:[["app-level-detail"]],viewQuery:function(n,i){if(n&1&&(_e(gt,5),_e(ut,5)),n&2){let l;me(l=ge())&&(i.scheduleBreakModal=l.first),me(l=ge())&&(i.announcementModal=l.first)}},decls:4,vars:3,consts:[[1,"level-detail-container"],["class","loading-state",4,"ngIf"],[4,"ngIf"],["class","empty-state",4,"ngIf"],[1,"loading-state"],[1,"header"],[1,"btn-back",3,"click"],[1,"header-row"],[1,"subtitle"],[1,"header-actions"],[1,"btn-secondary",3,"click"],[1,"progress-section"],[1,"progress-bar-large"],[1,"progress-fill"],[1,"progress-text"],[1,"actions-section"],[1,"action-card",3,"click"],[1,"action-icon"],["class","exams-section",4,"ngIf"],["modalId","levelDetailScheduleBreakModal",3,"breakAdded","batchId","levels"],["modalId","levelDetailAnnouncementModal",3,"announcementSent","batchId","levels"],[1,"exams-section"],[1,"section-title"],[1,"exams-grid"],["class","exam-row",4,"ngIf"],[1,"exam-row"],[1,"exam-info"],[1,"exam-name"],[1,"exam-meta"],[1,"exam-actions"],[1,"btn-sm",3,"click"],["class","btn-sm btn-correct",3,"click",4,"ngIf"],[1,"btn-sm","btn-correct",3,"click"],[1,"empty-state"]],template:function(n,i){n&1&&(a(0,"div",0),h(1,Ml,4,3,"div",1)(2,yl,45,37,"ng-container",2)(3,kl,6,3,"div",3),r()),n&2&&(o(),p("ngIf",i.loading),o(),p("ngIf",!i.loading&&i.level),o(),p("ngIf",!i.loading&&!i.level))},dependencies:[$,gt,ut,j],styles:[".level-detail-container[_ngcontent-%COMP%]{padding:24px;max-width:900px}.level-detail-container[_ngcontent-%COMP%] .header[_ngcontent-%COMP%]{margin-bottom:24px}.level-detail-container[_ngcontent-%COMP%] .header[_ngcontent-%COMP%] .btn-back[_ngcontent-%COMP%]{background:none;border:none;color:#6b7280;cursor:pointer;padding:0;margin-bottom:8px;font-size:14px}.level-detail-container[_ngcontent-%COMP%] .header[_ngcontent-%COMP%] .btn-back[_ngcontent-%COMP%]:hover{color:#374151}.level-detail-container[_ngcontent-%COMP%] .header[_ngcontent-%COMP%] .header-row[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:flex-start}.level-detail-container[_ngcontent-%COMP%] .header[_ngcontent-%COMP%] .header-actions[_ngcontent-%COMP%]{display:flex;gap:8px}.level-detail-container[_ngcontent-%COMP%] .header[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0;font-size:28px;font-weight:700}.level-detail-container[_ngcontent-%COMP%] .header[_ngcontent-%COMP%] .subtitle[_ngcontent-%COMP%]{color:#6b7280;margin:4px 0 0;font-size:14px}.level-detail-container[_ngcontent-%COMP%] .progress-section[_ngcontent-%COMP%]{background:#fff;border:1px solid #e5e7eb;border-radius:12px;padding:20px;margin-bottom:24px}.level-detail-container[_ngcontent-%COMP%] .progress-section[_ngcontent-%COMP%] .progress-bar-large[_ngcontent-%COMP%]{width:100%;height:12px;background:#e5e7eb;border-radius:6px;overflow:hidden}.level-detail-container[_ngcontent-%COMP%] .progress-section[_ngcontent-%COMP%] .progress-bar-large[_ngcontent-%COMP%] .progress-fill[_ngcontent-%COMP%]{height:100%;background:#4f46e5;border-radius:6px;transition:width .3s}.level-detail-container[_ngcontent-%COMP%] .progress-section[_ngcontent-%COMP%] .progress-text[_ngcontent-%COMP%]{margin:8px 0 0;font-size:14px;color:#6b7280}.level-detail-container[_ngcontent-%COMP%] .actions-section[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:16px}.level-detail-container[_ngcontent-%COMP%] .action-card[_ngcontent-%COMP%]{background:#fff;border:1px solid #e5e7eb;border-radius:12px;padding:20px;cursor:pointer;transition:box-shadow .2s,transform .2s}.level-detail-container[_ngcontent-%COMP%] .action-card[_ngcontent-%COMP%]:hover{box-shadow:0 4px 12px #00000014;transform:translateY(-2px)}.level-detail-container[_ngcontent-%COMP%] .action-card[_ngcontent-%COMP%] .action-icon[_ngcontent-%COMP%]{font-size:32px;margin-bottom:8px}.level-detail-container[_ngcontent-%COMP%] .action-card[_ngcontent-%COMP%] h4[_ng
1content-%COMP%]{margin:0 0 4px;font-size:16px;font-weight:600}.level-detail-container[_ngcontent-%COMP%] .action-card[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{margin:0;font-size:13px;color:#6b7280}.level-detail-container[_ngcontent-%COMP%] .exams-section[_ngcontent-%COMP%]{margin-top:24px}.level-detail-container[_ngcontent-%COMP%] .exams-section[_ngcontent-%COMP%] .section-title[_ngcontent-%COMP%]{font-size:16px;font-weight:600;margin:0 0 12px}.level-detail-container[_ngcontent-%COMP%] .exams-section[_ngcontent-%COMP%] .exams-grid[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:10px}.level-detail-container[_ngcontent-%COMP%] .exams-section[_ngcontent-%COMP%] .exam-row[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;background:#fff;border:1px solid #e5e7eb;border-radius:10px;padding:14px 18px}.level-detail-container[_ngcontent-%COMP%] .exams-section[_ngcontent-%COMP%] .exam-info[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:2px}.level-detail-container[_ngcontent-%COMP%] .exams-section[_ngcontent-%COMP%] .exam-name[_ngcontent-%COMP%]{font-weight:600;font-size:14px}.level-detail-container[_ngcontent-%COMP%] .exams-section[_ngcontent-%COMP%] .exam-meta[_ngcontent-%COMP%]{font-size:12px;color:#6b7280}.level-detail-container[_ngcontent-%COMP%] .exams-section[_ngcontent-%COMP%] .exam-actions[_ngcontent-%COMP%]{display:flex;gap:8px}.level-detail-container[_ngcontent-%COMP%] .exams-section[_ngcontent-%COMP%] .btn-sm[_ngcontent-%COMP%]{padding:6px 14px;border-radius:6px;font-size:13px;font-weight:500;cursor:pointer;border:1px solid #d1d5db;background:#fff;color:#374151}.level-detail-container[_ngcontent-%COMP%] .exams-section[_ngcontent-%COMP%] .btn-sm[_ngcontent-%COMP%]:hover{background:#f3f4f6}.level-detail-container[_ngcontent-%COMP%] .exams-section[_ngcontent-%COMP%] .btn-correct[_ngcontent-%COMP%]{background:#4f46e5;color:#fff;border:none}.level-detail-container[_ngcontent-%COMP%] .exams-section[_ngcontent-%COMP%] .btn-correct[_ngcontent-%COMP%]:hover{background:#4338ca}.level-detail-container[_ngcontent-%COMP%] .loading-state[_ngcontent-%COMP%], .level-detail-container[_ngcontent-%COMP%] .empty-state[_ngcontent-%COMP%]{text-align:center;padding:48px;color:#6b7280}.level-detail-container[_ngcontent-%COMP%] .btn-secondary[_ngcontent-%COMP%]{background:#fff;color:#374151;border:1px solid #d1d5db;padding:10px 20px;border-radius:8px;cursor:pointer}.level-detail-container[_ngcontent-%COMP%] .btn-secondary[_ngcontent-%COMP%]:hover{background:#f3f4f6}"]})}}return t})();var Al=t=>({count:t}),Tl=t=>({homeworkId:t});function Rl(t,c){if(t&1&&(a(0,"p",9),s(1),_(2,"translate"),r()),t&2){let e=d();o(),g(B(2,1,"SUBMISSION_REQUIREMENTS.ERRORS."+e.publishError.code,e.publishError))}}function Dl(t,c){if(t&1&&(a(0,"li"),s(1),r()),t&2){let e=c.$implicit;o(),g(e.code)}}function Bl(t,c){if(t&1&&(a(0,"div",10)(1,"strong"),s(2),_(3,"translate"),r(),a(4,"p"),s(5),_(6,"translate"),r(),a(7,"ul"),h(8,Dl,2,1,"li",11),r(),a(9,"a",12),s(10),_(11,"translate"),r()()),t&2){let e=c.ngIf,n=d();o(2),g(m(3,7,"HOMEWORK_PUBLISH_FAILURE.TITLE")),o(3),g(B(6,9,"HOMEWORK_PUBLISH_FAILURE.BODY",D(14,Al,e.issues.length))),o(3),p("ngForOf",e.issues)("ngForTrackBy",n.trackByIndex),o(),p("routerLink",n.builderRouteFor(D(16,Tl,e.homeworkId)))("queryParams",n.builderQueryParams()),o(),b(" ",m(11,12,"HOMEWORK_PUBLISH_FAILURE.OPEN_BUILDER")," ")}}function Ll(t,c){t&1&&(a(0,"div",13)(1,"p"),s(2,"Loading..."),r()())}function Nl(t,c){t&1&&(a(0,"div",14)(1,"p"),s(2,"No homework created for this session yet."),r()())}function Vl(t,c){if(t&1&&(a(0,"p",27),s(1),_(2,"date"),r()),t&2){let e=d().$implicit;o(),b("Due: ",B(2,1,e.dueDate,"mediumDate"),"")}}function Fl(t,c){if(t&1){let e=M();a(0,"div",17)(1,"div",18)(2,"h3"),s(3),r(),a(4,"span",19),s(5),r()(),a(6,"div",20)(7,"p"),s(8),r(),h(9,Vl,3,4,"p",21),r(),a(10,"div",22)(11,"button",23),x("click",function(){let i=C(e).$implicit,l=d(2);return f(l.editHomework(i))}),s(12,"Edit"),r(),a(13,"button",24),x("click",function(){let i=C(e).$implicit,l=d(2);return f(l.togglePublish(i))}),s(14),r(),a(15,"button",25),x("click",function(){let i=C(e).$implicit,l=d(2);return f(l.viewSubmissions(i))}),s(16,"Submissions"),r(),a(17,"button",26),x("click",function(){let i=C(e).$implicit,l=d(2);return f(l.deleteHomework(i))}),s(18,"Delete"),r()()()}if(t&2){let e=c.$implicit,n=d(2);o(3),g(e.title),o(),p("ngClass",e.isPublished?"badge-published":"badge-draft"),o(),b(" ",e.isPublished?"Published":"Draft"," "),o(3),N("",e.totalQuestions," questions \xB7 ",e.totalPoints," points"),o(),p("ngIf",e.dueDate),o(4),p("disabled",n.publishBusyIds.has(e.homeworkId))("ngClass",e.isPublished?"btn-warning":"btn-success"),o(),b(" ",e.isPublished?"Unpublish":"Publish"," ")}}function Ul(t,c){if(t&1&&(a(0,"div",15),h(1,Fl,19,9,"div",16),r()),t&2){let e=d();o(),p("ngForOf",e.homework)("ngForTrackBy",e.trackByIndex)}}var fr=(()=>{class t{constructor(e,n,i,l,u){this.route=e,this.router=n,this.homeworkService=i,this.navigationHistory=l,this.publishHandler=u,this.homework=[],this.loading=!0,this.publishError=null,this.publishValidationFailure=null,this.publishBusyIds=new Set}
1ngOnInit(){this.batchId=this.route.snapshot.paramMap.get("batchId")||"",this.levelId=this.route.snapshot.paramMap.get("levelId")||"",this.courseId=this.route.snapshot.queryParamMap.get("courseId")||"",this.sessionId=this.route.snapshot.paramMap.get("sessionId")||"",this.loadHomework()}loadHomework(){this.loading=!0,this.homeworkService.getHomework(this.sessionId).subscribe({next:e=>{e?.success&&(this.homework=e.data||[]),this.loading=!1},error:()=>{this.loading=!1}})}createHomework(){this.router.navigate(["/main/dashboard/cohorts/batches",this.batchId,"levels",this.levelId,"sessions",this.sessionId,"homework","create"],{queryParams:{courseId:this.courseId}})}editHomework(e){this.router.navigate(["/main/dashboard/cohorts/batches",this.batchId,"levels",this.levelId,"sessions",this.sessionId,"homework",e.homeworkId,"edit"],{queryParams:{courseId:this.courseId}})}viewSubmissions(e){this.router.navigate(["/main/dashboard/cohorts/batches",this.batchId,"levels",this.levelId,"sessions",this.sessionId,"homework",e.homeworkId,"submissions"],{queryParams:{courseId:this.courseId}})}togglePublish(e){if(!e.isPublished&&(e.questions||[]).some(l=>hn(l,!0).length)){this.publishError={code:"VALIDATION_ERROR"},bt("homework-publish-error");return}if(this.publishError=null,this.publishValidationFailure=null,this.publishBusyIds.has(e.homeworkId))return;this.publishBusyIds.add(e.homeworkId);let n=!e.isPublished;(this.publishHandler?this.publishHandler.setPublished(this.sessionId,e,n):this.homeworkService.publishHomework(this.sessionId,e.homeworkId,n)).subscribe({next:l=>{l?.success||(this.publishError={code:"SAVE_FAILED"}),this.publishBusyIds.delete(e.homeworkId)},error:l=>{if(this.publishBusyIds.delete(e.homeworkId),tr(l)){this.publishValidationFailure=l,bt("homework-publish-validation");return}this.publishError=fn(l),bt("homework-publish-error")}})}builderRouteFor(e){return["/main/dashboard/cohorts/batches",this.batchId,"levels",this.levelId,"sessions",this.sessionId,"homework",e.homeworkId,"edit"]}builderQueryParams(){return this.courseId?{courseId:this.courseId}:{}}deleteHomework(e){confirm(`Delete "${e.title}"?`)&&this.homeworkService.deleteHomework(this.sessionId,e.homeworkId).subscribe({next:n=>{n?.success&&this.loadHomework()}})}goBack(){this.navigationHistory.goBackOrFallback(["/main/dashboard/cohorts/batches",this.batchId,"levels",this.levelId])}trackByIndex(e){return e}static{this.\u0275fac=function(n){return new(n||t)(w(te),w(ue),w(mt),w(fe),w(nr,8))}}static{this.\u0275cmp=H({type:t,selectors:[["app-homework-list"]],decls:13,vars:5,consts:[[1,"homework-list-container"],["id","homework-publish-error","role","alert","tabindex","-1",4,"ngIf"],["id","homework-publish-validation","class","publish-validation-summary","data-testid","publish-validation-summary","role","alert","tabindex","-1",4,"ngIf"],[1,"header"],[1,"btn-back",3,"click"],[1,"btn-primary",3,"click"],["class","loading-state",4,"ngIf"],["class","empty-state",4,"ngIf"],["class","homework-grid",4,"ngIf"],["id","homework-publish-error","role","alert","tabindex","-1"],["id","homework-publish-validation","data-testid","publish-validation-summary","role","alert","tabindex","-1",1,"publish-validation-summary"],[4,"ngFor","ngForOf","ngForTrackBy"],[3,"routerLink","queryParams"],[1,"loading-state"],[1,"empty-state"],[1,"homework-grid"],["class","hw-card",4,"ngFor","ngForOf","ngForTrackBy"],[1,"hw-card"],[1,"hw-card-header"],[1,"badge",3,"ngClass"],[1,"hw-card-body"],["class","due-date",4,"ngIf"],[1,"hw-card-actions"],[1,"btn-sm","btn-secondary",3,"click"],[1,"btn-sm",3,"click","disabled","ngClass"],[1,"btn-sm","btn-primary",3,"click"],[1,"btn-sm","btn-danger",3,"click"],[1,"due-date"]],template:function(n,i){n&1&&(a(0,"div",0),h(1,Rl,3,4,"p",1)(2,Bl,12,18,"div",2),a(3,"div",3)(4,"button",4),x("click",function(){return i.goBack()}),s(5,"\u2190 Back to Level"),r(),a(6,"h2"),s(7,"Homework"),r(),a(8,"button",5),x("click",function(){return i.createHomework()}),s(9,"+ Create Homework"),r()(),h(10,Ll,3,0,"div",6)(11,Nl,3,0,"div",7)(12,Ul,2,2,"div",8),r()),n&2&&(o(),p("ngIf",i.publishError),o(),p("ngIf",i.publishValidationFailure),o(8),p("ngIf",i.loading),o(),p("ngIf",!i.loading&&i.homework.length===0),o(),p("ngIf",!i.loading))},dependencies:[ce,Q,$,Tt,yt,j],styles:[".homework-list-container[_ngcontent-%COMP%]{padding:24px}.homework-list-container[_ngcontent-%COMP%] .header[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px}.homework-list-container[_ngcontent-%COMP%] .header[_ngcontent-%COMP%] .btn-back[_ngcontent-%COMP%]{background:none;border:none;color:#6b7280;cursor:pointer;padding:0;font-size:14px}.homework-list-container[_ngcontent-%COMP%] .header[_ngcontent-%COMP%] .btn-back[_ngcontent-%COMP%]:hover{color:#374151}.homework-list-container[_ngcontent-%COMP%] .header[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0;font-size:24px;font-weight:600}.homework-list-container[_ngcontent-%COMP%] .btn-primary[_ngcontent-%COMP%]{background:#4f46e5;color:#fff;border:none;padding:10px 20px;border-radius:8px;
1cursor:pointer;font-weight:500}.homework-list-container[_ngcontent-%COMP%] .btn-primary[_ngcontent-%COMP%]:hover{background:#4338ca}.homework-list-container[_ngcontent-%COMP%] .loading-state[_ngcontent-%COMP%], .homework-list-container[_ngcontent-%COMP%] .empty-state[_ngcontent-%COMP%]{text-align:center;padding:48px;color:#6b7280}.homework-list-container[_ngcontent-%COMP%] .publish-validation-summary[_ngcontent-%COMP%]{display:grid;gap:8px;margin-bottom:16px;padding:14px 16px;border:1px solid #fecaca;border-radius:8px;background:#fff7ed;color:#7f1d1d}.homework-list-container[_ngcontent-%COMP%] .publish-validation-summary[_ngcontent-%COMP%] p[_ngcontent-%COMP%], .homework-list-container[_ngcontent-%COMP%] .publish-validation-summary[_ngcontent-%COMP%] ul[_ngcontent-%COMP%]{margin:0}.homework-list-container[_ngcontent-%COMP%] .publish-validation-summary[_ngcontent-%COMP%] ul[_ngcontent-%COMP%]{padding-left:18px}.homework-list-container[_ngcontent-%COMP%] .publish-validation-summary[_ngcontent-%COMP%] a[_ngcontent-%COMP%]{color:#1d4ed8;font-weight:600}.homework-list-container[_ngcontent-%COMP%] .homework-grid[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:20px}.homework-list-container[_ngcontent-%COMP%] .hw-card[_ngcontent-%COMP%]{background:#fff;border:1px solid #e5e7eb;border-radius:12px;padding:20px;transition:box-shadow .2s}.homework-list-container[_ngcontent-%COMP%] .hw-card[_ngcontent-%COMP%]:hover{box-shadow:0 4px 12px #0000001a}.homework-list-container[_ngcontent-%COMP%] .hw-card-header[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:12px}.homework-list-container[_ngcontent-%COMP%] .hw-card-header[_ngcontent-%COMP%] h3[_ngcontent-%COMP%]{margin:0;font-size:16px;font-weight:600}.homework-list-container[_ngcontent-%COMP%] .badge[_ngcontent-%COMP%]{padding:4px 10px;border-radius:20px;font-size:11px;font-weight:500;text-transform:uppercase}.homework-list-container[_ngcontent-%COMP%] .badge-published[_ngcontent-%COMP%]{background:#dcfce7;color:#166534}.homework-list-container[_ngcontent-%COMP%] .badge-draft[_ngcontent-%COMP%]{background:#fef3c7;color:#92400e}.homework-list-container[_ngcontent-%COMP%] .hw-card-body[_ngcontent-%COMP%]{font-size:14px;color:#6b7280;margin-bottom:12px}.homework-list-container[_ngcontent-%COMP%] .hw-card-body[_ngcontent-%COMP%] .due-date[_ngcontent-%COMP%]{margin-top:4px}.homework-list-container[_ngcontent-%COMP%] .hw-card-actions[_ngcontent-%COMP%]{display:flex;gap:8px;flex-wrap:wrap}.homework-list-container[_ngcontent-%COMP%] .btn-sm[_ngcontent-%COMP%]{padding:6px 12px;font-size:12px;border:none;border-radius:6px;cursor:pointer}.homework-list-container[_ngcontent-%COMP%] .btn-secondary[_ngcontent-%COMP%]{background:#f3f4f6;color:#374151}.homework-list-container[_ngcontent-%COMP%] .btn-secondary[_ngcontent-%COMP%]:hover{background:#e5e7eb}.homework-list-container[_ngcontent-%COMP%] .btn-success[_ngcontent-%COMP%]{background:#10b981;color:#fff}.homework-list-container[_ngcontent-%COMP%] .btn-success[_ngcontent-%COMP%]:hover{background:#059669}.homework-list-container[_ngcontent-%COMP%] .btn-warning[_ngcontent-%COMP%]{background:#f59e0b;color:#fff}.homework-list-container[_ngcontent-%COMP%] .btn-warning[_ngcontent-%COMP%]:hover{background:#d97706}.homework-list-container[_ngcontent-%COMP%] .btn-danger[_ngcontent-%COMP%]{background:#ef4444;color:#fff}.homework-list-container[_ngcontent-%COMP%] .btn-danger[_ngcontent-%COMP%]:hover{background:#dc2626}"]})}}return t})();function Tn(t,c,e,n="fill_blank"){if(n!=="fill_blank")return null;let i=(c||[]).map(u=>String(u||"").trim());return!(i.length>1&&i.every(u=>!!u))||vt(t)<2?null:Hl(i)}function Hl(t){return[...t].sort((c,e)=>c.localeCompare(e,"fr"))}var hr=["writing","grammar","vocabulary","speaking","pronunciation","organization"];function xr(t){return Array.isArray(t?.criteria)?t.criteria.map(c=>({id:String(c?.id||""),skill:String(c?.skill||""),label:String(c?.label||"")})):[]}function si(t){let c=(t||[]).filter(zl);if(c.length===0)return null;let e=new Set;return{criteria:c.map((n,i)=>Gl(n,i,e))}}function Gl(t,c,e){let n=t.id.trim()||ql(t.skill,c);return{id:Wl(n,e),skill:t.skill.trim(),label:t.label.trim()}}function ql(t,c){return t.trim().toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||`criterion-${c+1}`}function Wl(t,c){let e=t,n=2;for(;c.has(e);)e=`${t}-${n++}`;return c.add(e),e}function zl(t){return!!(String(t.skill||"").trim()||String(t.label||"").trim())}var br=["writing","speaking","long_answer","dialogue"],Kl=["mcq","shortAnswer","imageQuestion","true_false","fill_blank","words_order","sentence_order"];function li(t,c,e){let n=$l(t,c),i=Xl(t);return i&&(n.media=i),Yt(t.type)?Zl(n,t):t.type==="mcq"?Sr(n,t):rc(t.type)?ec(n,t):br.includes(t.type)?tc(n,t,e):t.type==="true_false"?Er(n,t):wr(n,t),n}function ci(t,c,e){return Yt(t)?e==="long_answer"?"instructor":c||"auto":br.includes(t)?"instructor":c||(Kl.includes(t)?"auto":"instructor")}function Rn(t,c){return Yt(t)?(c||"mcq")==="mcq":t==="mcq"}function Dn(t,c){return Yt(t)?["shortAnswer","fill_blank"].includes(c||""):["shortAnswer","imageQuestion","fill_blank"].includes(t)}function vr(t,c){return Yt(c)?t?.answerType?t.answerType:Array.isArray(t?.o
1ptions)&&t.options.length>0?"mcq":t?.gradedBy==="instructor"?"long_answer":Array.isArray(t?.expectedAnswers)&&t.expectedAnswers.length>0?"shortAnswer":"mcq":t?.answerType||"mcq"}function Or(t){let c=t?.trueFalseAnswer??t?.expectedAnswers?.[0]??"true";return String(c).toLowerCase()==="false"?"false":"true"}function Mr(t,c){let e=Array.isArray(t?.lines)?t.lines:[],n=e.map(u=>String(u?.speaker||"").trim()).filter(Boolean).filter((u,O,E)=>E.indexOf(u)===O),i=Mt(t?.speakerA||t?.speakers?.a||n[0],c.defaultSpeakerA),l=Mt(t?.speakerB||t?.speakers?.b||n.find(u=>u!==i),c.defaultSpeakerB);return{speakerA:i,speakerB:l,lines:e.map(u=>({speakerKey:String(u?.speaker||"").trim()===l?"B":"A",text:u?.text||""}))}}function Bn(t){return String(t||"").trim().split(/\s+/).filter(Boolean)}function Pr(t,c){return!Array.isArray(t)||!Array.isArray(c)?"":c.map(e=>t[e]).filter(Boolean).join(" ")}function Mt(t,c){return String(t||"").trim()||c}function $l(t,c){let e=W(W({questionId:t.questionId||void 0,type:t.type,questionText:t.questionText,imageUrl:t.imageUrl||null,points:t.points,gradedBy:t.gradedBy||ci(t.type,void 0,t.answerType),order:c+1},t.instructions?{instructions:t.instructions}:{}),t.imageId?{imageId:t.imageId}:{});return jl(e,t),Ql(e,t),e}function jl(t,c){c.validationPolicy!=null&&(t.validationPolicy=c.validationPolicy),c.validationPolicyRequired===!0&&(t.validationPolicyRequired=!0),Yl(t,c,["sectionId","skill","subSkill","cefrLevel"]);let e=String(c.hint||"").trim();e&&(t.hints=[e]);let n=String(c.explanation||"").trim();n&&(t.explanation=n),c.flashcardEligible===!0&&(t.flashcardEligible=!0)}function Ql(t,c){let e=si(c.aiRubricCriteria);e&&(t.aiRubric=e);let n=si(c.instructorRubricCriteria);n&&(t.instructorRubric=n)}function Yl(t,c,e){for(let n of e){let i=String(c[n]||"").trim();i&&(t[n]=i)}}function Xl(t){if(!t.mediaKind||!t.mediaUrl)return null;let c=Ut(t.mediaUrl),e=c&&["video","youtube"].includes(t.mediaKind),n={kind:e?"youtube":t.mediaKind,source:e?"youtube":t.mediaSource||Jl(t),url:t.mediaUrl};return c&&(n.embedUrl=c),t.mediaStoragePath&&(n.storagePath=t.mediaStoragePath),t.mediaMimeType&&(n.mimeType=t.mediaMimeType),t.mediaTranscript&&(n.transcript=t.mediaTranscript),n}function Jl(t){return t.mediaKind==="youtube"||t.mediaKind==="video"&&Ut(t.mediaUrl||"")?"youtube":t.mediaKind==="external_url"||!t.mediaStoragePath?"external_url":"upload"}function Sr(t,c){t.options=(c.options||[]).map(e=>({id:e.id||e.optionKey,text:e.text,isCorrect:e.isCorrect})),t.expectedAnswers=t.options.filter(e=>e.isCorrect===!0&&e.id).map(e=>e.id)}function Zl(t,c){let e=c.answerType||"mcq";t.answerType=e,c.type==="reading"&&(t.passage=c.passage||""),c.type==="listening"&&(t.audioUrl=c.audioUrl||t.media?.url||""),e==="mcq"?Sr(t,c):e==="true_false"?Er(t,c):e==="long_answer"?ic(t):wr(t,c)}function ec(t,c){let e=Bn(c.correctSentence||"");t.words=e.length?e:c.words||[],t.correctOrder=e.length?e.map((n,i)=>i):c.correctOrder||[],t.options=[],t.expectedAnswers=[]}function tc(t,c,e){t.options=[],t.expectedAnswers=[],c.type==="dialogue"?t.dialogueData=oc(c,e):c.dialogueData&&(t.dialogueData=c.dialogueData)}function wr(t,c){t.options=[],t.expectedAnswers=c.expectedAnswers||[],nc(t,c)}function nc(t,c){let e=Tn(t.questionText,t.expectedAnswers,t.questionId||String(t.order),t.answerType||t.type);e&&(t.wordBank=e)}function Er(t,c){t.options=[],t.expectedAnswers=[c.trueFalseAnswer==="false"?"false":"true"]}function ic(t){t.options=[],t.expectedAnswers=[],t.gradedBy="instructor"}function oc(t,c){let e=Mt(t.dialogueSpeakerA,c.defaultSpeakerA),n=Mt(t.dialogueSpeakerB,c.defaultSpeakerB),i=(t.dialogueLines||[]).map(l=>({speaker:l.speakerKey==="B"?n:e,text:String(l.text||"").trim()})).filter(l=>l.text);return{speakerA:e,speakerB:n,lines:i}}function Yt(t){return t==="reading"||t==="listening"}function rc(t){return t==="sentence_order"||t==="words_order"}var yr=["grammar","vocabulary","reading","listening","writing","speaking","pronunciation"],Ir=1,ac=new Set(["mcq","shortAnswer","true_false","words_order","sentence_order","imageQuestion","reading","listening"]),sc=new Set(["writing","speaking","long_answer","dialogue"]),lc={partA:3,partB:5,partC:8}
1,cc=5;function dc(t){return Math.max(vt(t),1)}function Ln(t,c,e=""){return t==="fill_blank"?dc(c):ac.has(t)?Ir:sc.has(t)?lc[e]??cc:Ir}function kr(t,c,e,n=""){return Number(e)===Ln(t,c,n)}var pc=[{value:"present",label:"Pr\xE9sent"},{value:"passe-compose",label:"Pass\xE9 compos\xE9"},{value:"imparfait",label:"Imparfait"},{value:"passe-compose-imparfait",label:"Pass\xE9 compos\xE9 / imparfait"},{value:"futur-proche",label:"Futur proche"},{value:"futur-simple",label:"Futur simple"},{value:"conditionnel",label:"Conditionnel"},{value:"subjonctif",label:"Subjonctif"},{value:"imperatif",label:"Imp\xE9ratif"},{value:"verbes-reflechis",label:"Verbes r\xE9fl\xE9chis"},{value:"groupes-verbaux",label:"Groupes verbaux (-er, -ir, irr\xE9guliers)"},{value:"verbes-suivis-preposition",label:"Verbes suivis d\u2019une pr\xE9position"},{value:"negation",label:"N\xE9gation"},{value:"interrogation",label:"Interrogation"},{value:"articles",label:"Articles"},{value:"quantite",label:"Quantit\xE9"},{value:"adjectifs-possessifs",label:"Adjectifs possessifs"},{value:"demonstratifs",label:"D\xE9monstratifs"},{value:"accord-adjectifs",label:"Accord des adjectifs"},{value:"place-adjectifs",label:"Place des adjectifs"},{value:"adverbes",label:"Adverbes"},{value:"participe-passe",label:"Participe pass\xE9"},{value:"pluriel-noms",label:"Pluriel des noms"},{value:"pronoms-cod-coi",label:"Pronoms COD / COI"},{value:"pronoms-y-en",label:"Pronoms y et en"},{value:"pronoms-relatifs",label:"Pronoms relatifs"},{value:"prepositions",label:"Pr\xE9positions"},{value:"comparaison",label:"Comparaison et superlatif"},{value:"nominalisation",label:"Nominalisation"},{value:"hypotheses",label:"Hypoth\xE8ses"},{value:"discours-indirect",label:"Discours indirect"},{value:"voix-passive",label:"Voix passive"},{value:"connecteurs",label:"Connecteurs logiques"}],_c=[{value:"alphabet-sons",label:"Alphabet et sons"},{value:"nombres",label:"Nombres"},{value:"couleurs",label:"Couleurs"},{value:"jours-mois",label:"Jours et mois"},{value:"heure",label:"L\u2019heure"},{value:"famille",label:"Famille"},{value:"corps",label:"Corps"},{value:"description-physique",label:"Description physique et morale"},{value:"professions",label:"Professions"},{value:"pays-nationalites",label:"Pays et nationalit\xE9s"},{value:"ville-lieux",label:"Ville et lieux"},{value:"logement",label:"Logement et mobilier"},{value:"nourriture",label:"Nourriture et boissons"},{value:"restaurant",label:"Au restaurant"},{value:"courses",label:"Courses et achats"},{value:"transport-directions",label:"Transport et directions"},{value:"routine",label:"Routine quotidienne"},{value:"loisirs-sports",label:"Loisirs et sports"},{value:"travail-etudes",label:"Travail et \xE9tudes"},{value:"sante",label:"Sant\xE9"},{value:"voyages",label:"Voyages et vacances"},{value:"nature-environnement",label:"Nature et environnement"},{value:"technologie",label:"Technologie et m\xE9dias"},{value:"expressions-idiomatiques",label:"Expressions idiomatiques"},{value:"synonymes-contraires",label:"Synonymes et contraires"},{value:"salutations",label:"Salutations et politesse"},{value:"meteo",label:"M\xE9t\xE9o"},{value:"societe",label:"Soci\xE9t\xE9"},{value:"vie-politique",label:"Vie politique"}],mc=[{value:"dialogue",label:"Dialogue"},{value:"annonce",label:"Annonce ou message"},{value:"interview",label:"Interview"},{value:"emission",label:"\xC9mission ou podcast"},{value:"consignes",label:"Consignes"},{value:"chiffres-heures",label:"Chiffres, prix et heures"}],gc=[{value:"article",label:"Article"},{value:"email-lettre",label:"Courriel ou lettre"},{value:"annonce-publicite",label:"Annonce ou publicit\xE9"},{value:"recit",label:"R\xE9cit"},{value:"consignes",label:"Consignes"},{value:"horaires-tableaux",label:"Horaires et tableaux"}],uc=[{value:"phrase-guidee",label:"Phrase guid\xE9e"},{value:"email-lettre",label:"Courriel ou lettre"},{value:"message-court",label:"Message court"},{value:"recit",label:"R\xE9cit"},{value:"description",label:"Description"},{value:"opinion",label:"Opinion argument\xE9e"},{value:"invitation-reponse",label:"Invitation et r\xE9ponse"}],Cc=[{value:"monologue",label:"Monologue suivi"},{value:"jeu-de-role",label:"Jeu de r\xF4le"},{value:"description",label:"Description"},{value:"opinion",label:"Opinion argument\xE9e"},{value:"presentation",label:"Pr\xE9sentation"},{value:"interaction",label:"Interaction quotidienne"}],fc=[{value:"voyelles-nasales",label:"Voyelles nasales"},{value:"liaison",label:"Liaison"},{value:"accents",label:"Accents"},{value:"lettres-muettes",label:"Lettres muettes"},{value:"intonation",label:"Intonation"},{value:"sons-proches",label:"Sons proches"}],hc={grammar:pc,vocabulary:_c,listening:mc,reading:gc,writing:uc,speaking:Cc,pronunciation:fc};function Ar(t){return hc[String(t||"").trim()]||[]}function Tr(t){let c=xc(t);return c?c.slice(0,10):""}function xc(t){if(!t)return"";if(typeof t=="string")return t;if(typeof t.toDate=="function")return t.toDate().toISOString();let c=t._seconds??t.seconds;return typeof c=="number"?new Date(c*1e3).toISOString():""}var bc={generated:"purple",ready:"amber",blocked:"red",ineligible:"grey"},vc={generated:"HOMEWORK_BUILDER.SEED_GENERATED",ready:"HOMEWORK_BUILDER.SEED_READY",blocked:"HOMEWORK_BUILDER.SEED_BLOCKED",ineligible:"HOMEWORK_BUILDER.SEED_INELIGIBLE"};function Rr(t,c){let e=Sc(c);return t.map(n=>Oc(n,e.get(n.questionId)))}function di(t){return t.filter(c=>c.kind==="ready").map(c=>c.questionId)}function Dr(t){return bc[t]}
1function Br(t){return vc[t]}function Oc(t,c){return c?Mc(t.questionId,c):{questionId:t.questionId,kind:t.flashcardEligible?"ready":"ineligible"}}function Mc(t,c){let e=Pc(c.status),n={questionId:t,kind:e};return e==="blocked"&&c.reason&&(n.reason=c.reason),e==="generated"&&c.variants?.length&&(n.count=c.variants.length),n}function Pc(t){return t==="generated"?"generated":t==="blocked"?"blocked":t==="ineligible"?"ineligible":"ready"}function Sc(t){return new Map(t.map(c=>[c.questionId,c]))}var wc=new Set(["mcq","shortAnswer","imageQuestion","reading","listening","sentence_order","writing","speaking","true_false","fill_blank","long_answer","words_order","dialogue"]),Vr=new Set(["writing","speaking","long_answer","dialogue"]),Ec=new Set(["shortAnswer","imageQuestion","fill_blank"]);function Fr(t={},c={}){let e=yc(t);return(t.questions||[]).flatMap(n=>Ic(n,e,c.mode||"full"))}function Ic(t,c,e){let n=Ac(t,c);return e==="draft"?n:[...n,...Gc(t,c)]}function yc(t){let c=t.sections||[];return{sections:c,counts:kc(t.questions||[]),modes:new Map(c.map(e=>[e.sectionId,e.correctionMode]))}}function kc(t){let c=new Map;return t.forEach(e=>c.set(e.questionId,(c.get(e.questionId)||0)+1)),c}function Ac(t,c){return[Tc(t),Rc(t,c.sections),Dc(t),Bc(t),Lc(t),Nc(t,c.counts),Vc(t),Fc(t,c.sections),Uc(t),Hc(t)].filter(Boolean)}function Tc(t){return wc.has(t.type)?null:xe(t,"UNKNOWN_QUESTION_TYPE","type","structural")}function Rc(t,c){return!c.length||c.some(e=>e.sectionId===t.sectionId)?null:xe(t,"INVALID_SECTION","sectionId","structural")}function Dc(t){return t.options==null||Array.isArray(t.options)?null:xe(t,"OPTIONS_MALFORMED","options","structural")}function Bc(t){return t.media==null||typeof t.media=="object"?null:xe(t,"MEDIA_MALFORMED","media","structural")}function Lc(t){return!Array.isArray(t.correctOrder)||!Array.isArray(t.words)?null:t.correctOrder.some(c=>c<0||c>=t.words.length)?xe(t,"CORRECT_ORDER_RANGE","correctOrder","structural"):null}function Nc(t,c){return t.questionId&&(c.get(t.questionId)||0)>=2?xe(t,"QUESTION_ID_DUPLICATE","questionId","structural"):null}function Vc(t){if(!Array.isArray(t.options))return null;let c=t.options.map(e=>e?.id).filter(Boolean);return c.length===new Set(c).size?null:xe(t,"OPTION_ID_DUPLICATE","options","structural")}function Fc(t,c){let e=c.find(n=>n.sectionId===t.sectionId);return!e?.allowedTypes||e.allowedTypes.includes(t.type)?null:xe(t,"SECTION_TYPE_INVALID","type","structural")}function Uc(t){let c=t.validationPolicy||{};return Lr(c.minWords,c.maxWords)?xe(t,"WORDS_MIN_MAX_INVALID","validationPolicy","structural"):Lr(c.minDurationSeconds,c.maxDurationSeconds)?xe(t,"DURATION_MIN_MAX_INVALID","validationPolicy","structural"):null}function Hc(t){return t.points===void 0||typeof t.points=="number"&&t.points>0?null:xe(t,"POINTS_INVALID","points","structural")}function Gc(t,c){return[qc(t),...Wc(t),...zc(t),jc(t),id(t),od(t),rd(t,c.sections),ad(t,c.modes),sd(t,c.modes)].filter(Boolean)}function qc(t){return String(t.questionText||"").replace(/<[^>]+>/g,"").trim()?null:xe(t,"PROMPT_EMPTY","questionText","completeness")}function Wc(t){return[td(t),nd(t)]}function zc(t){return cd(t)?[Kc(t),$c(t),...(t.options||[]).map((c,e)=>String(c.text||"").trim()?null:xe(t,"OPTION_TEXT_EMPTY",`options.${e}.text`,"completeness"))]:[]}function Kc(t){return!Array.isArray(t.options)||t.options.length===0?xe(t,"MCQ_NO_OPTIONS","options","completeness"):null}function $c(t){let c=(t.options||[]).map(e=>String(e.text||"").trim()).filter(Boolean);return c.length===new Set(c).size?null:xe(t,"OPTION_TEXT_DUPLICATE","options","completeness")}function jc(t){let c=Qc(t);return c?xe(t,c,dd(t),"completeness"):null}function Qc(t){return["reading","listening"].includes(t.type)&&Ct(t)==="long_answer"?"COMPREHENSION_UNGRADABLE_TYPE":Ct(t)==="mcq"?Yc(t):Ec.has(Ct(t))?Jc(t):Ct(t)==="true_false"?Zc(t):["sentence_order","words_order"].includes(Ct(t))?ed(t):null}function Yc(t){if(!Array.isArray(t.options)||t.options.length===0)return"MCQ_NO_OPTIONS";if(Xc(t))return"ANSWER_KEY_OPTION_MISSING";let c=t.options.filter(e=>e?.isCorrect===!0).length;return c===0?"MCQ_ZERO_CORRECT":c>1?"MCQ_MULTI_CORRECT":null}function Xc(t){if(!Array.isArray(t.expectedAnswers)||t.expectedAnswers.length===0)return!1;let c=new Set(t.options.flatMap(e=>
1[e.id,e.text]).filter(Boolean));return t.expectedAnswers.some(e=>!c.has(e))}function Jc(t){let c=Nn(t);return c.length===0?"TEXT_NO_KEY":c.length===1&&c[0].trim()==="."?"TEXT_PLACEHOLDER_KEY":null}function Zc(t){let c=String(Nn(t)[0]??"").trim().toLowerCase();return["true","false"].includes(c)?null:"TF_KEY_NOT_BOOLEAN"}function ed(t){return t.correctOrder?.length?null:"ORDER_NO_CORRECT_ORDER"}function td(t){return t.type!=="reading"||String(t.passage||"").trim()?null:xe(t,"READING_PASSAGE_EMPTY","passage","completeness")}function nd(t){return t.type!=="listening"||String(t.audioUrl||"").trim()?null:xe(t,"LISTENING_AUDIO_EMPTY","audioUrl","completeness")}function id(t){if(Ct(t)!=="fill_blank")return null;let c=(String(t.questionText||"").match(/_{2,}|\[\]/g)||[]).length;return c===0||c===Nn(t).length?null:xe(t,"FILL_BLANK_COUNT_MISMATCH","expectedAnswers","completeness")}function od(t){if(t.type!=="dialogue")return null;let c=t.dialogueData?.turns||t.dialogue||[];return Array.isArray(c)&&c.length?null:xe(t,"DIALOGUE_EMPTY","dialogueData","completeness")}function rd(t,c){let e=c.find(n=>n.sectionId===t.sectionId);return e?.points===void 0||e.points===pd(e,t)?null:xe(t,"SECTION_POINTS_MISMATCH","points","completeness")}function ad(t,c){return c.get(t.sectionId)!=="auto"||t.gradedBy!=="instructor"||Vr.has(t.type)?null:Nn(t).length?xe(t,"AUTO_SECTION_INSTRUCTOR_GRADED","gradedBy","completeness"):null}function sd(t,c){return c.get(t.sectionId)!=="auto"||t.gradedBy==="instructor"||Vr.has(t.type)||String(t.explanation||"").trim().length>=30?null:xe(t,"EXPLANATION_TOO_SHORT","explanation","completeness")}function Nn(t){let c=(t.options||[]).filter(n=>n?.isCorrect).map(n=>Nr(n.text)).filter(Boolean);if(c.length)return c;let e=ld(t);return e?[e]:(t.expectedAnswers||[]).map(n=>Nr(n)).filter(Boolean)}function ld(t){return!Array.isArray(t.words)||t.words.length===0?"":(Array.isArray(t.correctOrder)&&t.correctOrder.length?t.correctOrder:t.words.map((e,n)=>n)).map(e=>t.words[e]).filter(Boolean).join(" ").trim()}function Ct(t){return["reading","listening"].includes(t.type)?t.answerType||"mcq":t.answerType||t.type}function cd(t){return t.type==="mcq"||["reading","listening"].includes(t.type)&&Ct(t)==="mcq"}function dd(t){return Ct(t)==="mcq"?"options":"expectedAnswers"}function pd(t,c){return t.questionIds?.includes(c.questionId)?c.points:t.points}function Lr(t,c){return t!==void 0&&c!==void 0&&t>c}function Nr(t){return String(t??"").trim()}function xe(t,c,e,n){return{code:c,tier:n,questionId:t.questionId,fieldPath:e}}var Ur=t=>({count:t});function _d(t,c){if(t&1&&(a(0,"p",21),s(1),_(2,"translate"),r()),t&2){let e=c.ngIf;o(),g(m(2,1,e))}}function md(t,c){if(t&1){let e=M();a(0,"div",9)(1,"span",10),s(2),r(),a(3,"div",11)(4,"div",12)(5,"label"),s(6),_(7,"translate"),r(),a(8,"textarea",3,0),_(10,"translate"),T("ngModelChange",function(i){let l=C(e).$implicit;return A(l.sentence,i)||(l.sentence=i),f(i)}),x("ngModelChange",function(){C(e);let i=d();return f(i.emit())}),r(),a(11,"button",13),_(12,"translate"),x("click",function(){let i=C(e).index,l=pe(9),u=d();return f(u.markSelection(i,l))}),s(13," [ ] "),r()(),a(14,"div",14)(15,"label"),s(16),_(17,"translate"),r(),a(18,"input",15),_(19,"translate"),T("ngModelChange",function(i){let l=C(e).$implicit;return A(l.correction,i)||(l.correction=i),f(i)}),x("ngModelChange",function(){C(e);let i=d();return f(i.emit())}),r()()(),a(20,"div",16)(21,"button",17),x("click",function(){let i=C(e).index,l=d();return f(l.move(i,-1))}),s(22,"\u2191"),r(),a(23,"button",18),x("click",function(){let i=C(e).index,l=d();return f(l.move(i,1))}),s(24,"\u2193"),r(),a(25,"button",19),x("click",function(){let i=C(e).index,l=d();return f(l.removeRow(i))}),s(26,"\xD7"),r()(),h(27,_d,3,3,"p",20),r()}if(t&2){let e=c.$implicit,n=c.index,i=d();y("ecb__row--invalid",i.rowError(e)),o(2),g(n+1),o(4),g(m(7,14,"HOMEWORK_BUILDER.EC_SENTENCE")),o(2),k("ngModel",e.sentence),p("placeholder",m(10,16,"HOMEWORK_BUILDER.EC_SENTENCE_PLACEHOLDER")),o(3),p("title",m(12,18,"HOMEWORK_BUILDER.EC_MARK_SELECTION")),o(5),g(m(17,20,"HOMEWORK_BUILDER.EC_CORRECTION")),o(2),k("ngModel",e.correction),p("placeholder",m(19,22,"HOMEWORK_BUILDER.EC_CORRECTION_PLACEHOLDER")),o(3),p("disabled",n===0),o(2),p("disabled",n===i.rows.length-1),o(2),p("disabled",i.rows.length<2),o(2),p("ngIf",i.rowError(e))}}var gd=/\[[^\]]*\]/g,Vn=(()=>{class t{constructor(){this.changed=new Le,this.intro="",this.rows=[],this.text="",this.answers=[],this.lastEmitted=null}set questionText(e){let n=String(e||"");n!==this.lastEmitted&&(this.text=n,this.hydrate())}set expectedAnswers(e){this.answers=(e||[]).map(n=>String(n??"")),this.hydrate()}rowError(e){let n=(e.sentence.match(gd)||[]).length;return e.sentence.trim()?n===0?"HOMEWORK_BUILDER.EC_ERR_NO_BRACKETS":n>1?"HOMEWORK_BUILDER.EC_ERR_MANY_BRACKETS":e.correction.trim()?"":"HOMEWORK_BUILDER.EC_ERR_NO_CORRECTION":"HOMEWORK_BUILDER.EC_ERR_EMPTY_SENTENCE"}get invalidCount(){return this.rows.filter(e=>!!this.rowError(e)).length}addRow(){this.rows=[...this.rows,{sentence:"",correction:""}
1],this.emit()}removeRow(e){this.rows=this.rows.filter((n,i)=>i!==e),this.emit()}move(e,n){let i=e+n;if(i<0||i>=this.rows.length)return;let l=[...this.rows];[l[e],l[i]]=[l[i],l[e]],this.rows=l,this.emit()}markSelection(e,n){let{selectionStart:i,selectionEnd:l,value:u}=n;if(i===null||l===null||i===l)return;let O=`${u.slice(0,i)}[${u.slice(i,l)}]${u.slice(l)}`;this.rows[e].sentence=O,this.emit()}emit(){this.lastEmitted=this.buildPrompt(),this.changed.emit({questionText:this.lastEmitted,expectedAnswers:this.rows.map(e=>e.correction.trim())})}trackByIndex(e){return e}buildPrompt(){let e=this.rows.map((i,l)=>`${l+1}. ${i.sentence.trim()} __________`),n=this.intro.trim();return n?`${n} 2 3${e.join(` 4`)}`:e.join(` 5`)}hydrate(){let e=bn(this.text);if(e){this.intro=e.intro,this.rows=e.items.map((i,l)=>({sentence:`${i.before}[${i.wrong}]${i.after}${i.hint?` (${i.hint})`:""}`,correction:this.answers[l]||""}));return}if(this.rows.length)return;let n=this.text.split(` 6 7`);this.intro=n.length>1?n[0].trim():"",this.rows=[{sentence:"",correction:""}]}static{this.\u0275fac=function(n){return new(n||t)}}static{this.\u0275cmp=H({type:t,selectors:[["app-error-correction-builder"]],inputs:{questionText:"questionText",expectedAnswers:"expectedAnswers"},outputs:{changed:"changed"},standalone:!0,features:[an],decls:17,vars:25,consts:[["sentence",""],[1,"ecb"],[1,"ecb__intro"],["rows","2",3,"ngModelChange","ngModel","placeholder"],[1,"ecb__rows"],["class","ecb__row",3,"ecb__row--invalid",4,"ngFor","ngForOf","ngForTrackBy"],[1,"ecb__foot"],["type","button",1,"ecb__add",3,"click"],[1,"ecb__status"],[1,"ecb__row"],[1,"ecb__n"],[1,"ecb__fields"],[1,"ecb__field"],["type","button",1,"ecb__mark",3,"click","title"],[1,"ecb__field","ecb__field--answer"],["type","text",3,"ngModelChange","ngModel","placeholder"],[1,"ecb__row-actions"],["type","button","title","\u2191",3,"click","disabled"],["type","button","title","\u2193",3,"click","disabled"],["type","button","title","\xD7",1,"ecb__remove",3,"click","disabled"],["class","ecb__row-error",4,"ngIf"],[1,"ecb__row-error"]],template:function(n,i){n&1&&(a(0,"div",1)(1,"div",2)(2,"label"),s(3),_(4,"translate"),r(),a(5,"textarea",3),_(6,"translate"),T("ngModelChange",function(u){return A(i.intro,u)||(i.intro=u),u}),x("ngModelChange",function(){return i.emit()}),r()(),a(7,"div",4),h(8,md,28,24,"div",5),r(),a(9,"div",6)(10,"button",7),x("click",function(){return i.addRow()}),s(11),_(12,"translate"),r(),a(13,"span",8),s(14),_(15,"translate"),_(16,"translate"),r()()()),n&2&&(o(3),g(m(4,9,"HOMEWORK_BUILDER.EC_INTRO")),o(2),k("ngModel",i.intro),p("placeholder",m(6,11,"HOMEWORK_BUILDER.EC_INTRO_PLACEHOLDER")),o(3),p("ngForOf",i.rows)("ngForTrackBy",i.trackByIndex),o(3),b(" + ",m(12,13,"HOMEWORK_BUILDER.EC_ADD_SENTENCE")," "),o(2),y("ecb__status--bad",i.invalidCount),o(),b(" ",i.invalidCount?B(15,15,"HOMEWORK_BUILDER.EC_INVALID",D(21,Ur,i.invalidCount)):B(16,18,"HOMEWORK_BUILDER.EC_READY",D(23,Ur,i.rows.length))," "))},dependencies:[st,Q,$,Bt,ie,Y,oe,lt,j],styles:[".ecb[_ngcontent-%COMP%]{font-family:Montserrat,system-ui,sans-serif}.ecb[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{display:block;margin-bottom:4px;font-size:10.5px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:#9aa8b0}.ecb[_ngcontent-%COMP%] textarea[_ngcontent-%COMP%], .ecb[_ngcontent-%COMP%] input[_ngcontent-%COMP%]{width:100%;padding:9px 11px;border:1px solid #e2e9ec;border-radius:8px;background:#fff;color:#35434c;font:inherit;font-size:13.5px;resize:vertical}.ecb[_ngcontent-%COMP%] textarea[_ngcontent-%COMP%]:focus, .ecb[_ngcontent-%COMP%] input[_ngcontent-%COMP%]:focus{outline:none;border-color:#21b6b6;box-shadow:0 0 0 3px #f2fbfb}.ecb__intro[_ngcontent-%COMP%]{margin-bottom:14px}.ecb__row[_ngcontent-%COMP%]{display:grid;grid-template-columns:24px minmax(0,1fr) auto;gap:10px;align-items:start;padding:12px;margin-bottom:8px;border:1px solid #e2e9ec;border-radius:10px;background:#f7fafa}.ecb__row--invalid[_ngcontent-%COMP%]{border-color:#e11d48;background:#fdf1f4}.ecb__n[_ngcontent-%COMP%]{display:grid;place-items:center;width:24px;height:24px;border-radius:50%;background:#f0f4f5;color:#64747e;font-size:11px;font-weight:800}.ecb__fields[_ngcontent-%COMP%]{display:grid;gap:9px}.ecb__field[_ngcontent-%COMP%]{position:relative}.ecb__mark[_ngcontent-%COMP%]{position:absolute;right:6px;bottom:6px;padding:3px 9px;border:1px solid #e2e9ec;border-radius:6px;background:#fff;color:#64747e;font:inherit;font-size:11px;font-weight:800;cursor:pointer}.ecb__mark[_ngcontent-%COMP%]:hover{border-color:#21b6b6;color:#0f766e}.ecb__row-actions[_ngcontent-%COMP%]{display:flex;gap:4px}.ecb__row-actions[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{width:26px;height:26px;border:1px solid #e2e9ec;border-radius:6px;background:#fff;color:#64747e;font:inherit;font-size:13px;
7cursor:pointer}.ecb__row-actions[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:disabled{opacity:.35;cursor:default}.ecb__row-actions[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:not(:disabled):hover{border-color:#21b6b6;color:#0f766e}.ecb__remove[_ngcontent-%COMP%]:not(:disabled):hover{border-color:#e11d48!important;color:#e11d48!important}.ecb__row-error[_ngcontent-%COMP%]{grid-column:2/-1;margin:0;font-size:11.5px;font-weight:700;color:#e11d48}.ecb__foot[_ngcontent-%COMP%]{display:flex;align-items:center;gap:12px;margin-top:10px}.ecb__add[_ngcontent-%COMP%]{padding:8px 14px;border:1px dashed #e2e9ec;border-radius:999px;background:#fff;color:#0f766e;font:inherit;font-size:12.5px;font-weight:700;cursor:pointer}.ecb__add[_ngcontent-%COMP%]:hover{border-color:#21b6b6;border-style:solid}.ecb__status[_ngcontent-%COMP%]{font-size:12px;font-weight:700;color:#0f766e}.ecb__status--bad[_ngcontent-%COMP%]{color:#e11d48}"]})}}return t})();function Cd(t,c){if(t&1&&(a(0,"article")(1,"strong"),s(2),r(),v(3,"textarea",10),r()),t&2){let e=c.$implicit;o(2),g(e.label),o(),p("value",e.text)}}var Fn=(()=>{class t{constructor(){this.localQuestions=[],this.choice=new Le}onKeydown(e){e.key==="Escape"&&(e.preventDefault(),this.choice.emit("keep-editing"))}static{this.\u0275fac=function(n){return new(n||t)}}static{this.\u0275cmp=H({type:t,selectors:[["app-authoring-conflict-dialog"]],hostBindings:function(n,i){n&1&&x("keydown",function(u){return i.onKeydown(u)})},inputs:{localQuestions:"localQuestions"},outputs:{choice:"choice"},standalone:!0,features:[an],decls:28,vars:25,consts:[["role","dialog","aria-modal","true","aria-labelledby","authoring-conflict-title","tabindex","-1",1,"authoring-conflict-dialog"],[1,"authoring-conflict-dialog__main"],[1,"authoring-conflict-dialog__eyebrow"],["id","authoring-conflict-title"],[1,"authoring-conflict-dialog__actions"],["type","button",1,"authoring-conflict-dialog__primary",3,"click"],["type","button",3,"click"],[1,"authoring-conflict-dialog__local"],[1,"authoring-conflict-dialog__questions"],[4,"ngFor","ngForOf"],["readonly","","rows","4",3,"value"]],template:function(n,i){n&1&&(a(0,"section",0)(1,"div",1)(2,"p",2),s(3),_(4,"translate"),r(),a(5,"h2",3),s(6),_(7,"translate"),r(),a(8,"p"),s(9),_(10,"translate"),r(),a(11,"div",4)(12,"button",5),x("click",function(){return i.choice.emit("load-latest")}),s(13),_(14,"translate"),r(),a(15,"button",6),x("click",function(){return i.choice.emit("keep-editing")}),s(16),_(17,"translate"),r()()(),a(18,"aside",7),_(19,"translate"),a(20,"h3"),s(21),_(22,"translate"),r(),a(23,"p"),s(24),_(25,"translate"),r(),a(26,"div",8),h(27,Cd,4,2,"article",9),r()()()),n&2&&(o(3),g(m(4,9,"AUTHORING_CONFLICT.EYEBROW")),o(3),g(m(7,11,"AUTHORING_CONFLICT.TITLE")),o(3),g(m(10,13,"AUTHORING_CONFLICT.BODY")),o(4),b(" ",m(14,15,"AUTHORING_CONFLICT.LOAD_LATEST")," "),o(3),b(" ",m(17,17,"AUTHORING_CONFLICT.KEEP_EDITING")," "),o(2),R("aria-label",m(19,19,"AUTHORING_CONFLICT.LOCAL_PANEL")),o(3),g(m(22,21,"AUTHORING_CONFLICT.LOCAL_PANEL")),o(3),g(m(25,23,"AUTHORING_CONFLICT.LOCAL_HINT")),o(3),p("ngForOf",i.localQuestions))},dependencies:[st,Q,lt,j],styles:[".authoring-conflict-dialog[_ngcontent-%COMP%]{background:#fff;border:1px solid #d7dde8;border-radius:8px;box-shadow:0 18px 48px #121f3838;color:#172033;display:grid;gap:20px;grid-template-columns:minmax(0,.9fr) minmax(260px,1.1fr);max-height:min(82vh,760px);max-width:920px;overflow:auto;padding:24px;width:min(92vw,920px)}.authoring-conflict-dialog__eyebrow[_ngcontent-%COMP%]{color:#b45309;font-size:.78rem;font-weight:700;letter-spacing:0;margin:0 0 8px;text-transform:uppercase}.authoring-conflict-dialog[_ngcontent-%COMP%] h2[_ngcontent-%COMP%], .authoring-conflict-dialog[_ngcontent-%COMP%] h3[_ngcontent-%COMP%]{margin:0 0 10px}.authoring-conflict-dialog[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{color:#516078;margin:0 0 16px}.authoring-conflict-dialog__actions[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;gap:10px}.authoring-conflict-dialog[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{background:#fff;border:1px solid #c5cfdd;border-radius:6px;color:#172033;font-weight:700;min-height:42px;padding:0 14px}.authoring-conflict-dialog__primary[_ngcontent-%COMP%]{background:#0f766e!important;border-color:#0f766e!important;color:#fff!important}.authoring-conflict-dialog__local[_ngcontent-%COMP%]{background:#f8fafc;border:1px solid #e2e8f0;border-radius:8px;padding:16px}.authoring-conflict-dialog__questions[_ngcontent-%COMP%]{display:grid;gap:12px}.authoring-conflict-dialog[_ngcontent-%COMP%] article[_ngcontent-%COMP%]{display:grid;gap:8px}.authoring-conflict-dialog[_ngcontent-%COMP%] textarea[_ngcontent-%COMP%]{background:#fff;border:1px solid #cbd5e1;border-radius:6px;color:#172033;font:inherit;resize:vertical;width:100%}@media (max-width: 700px){.authoring-conflict-dialog[_ngcontent-%COMP%]{grid-template-columns:1fr;max-height:88vh;padding:18px}}"]})}}return t})();var hd=(t,c,e,n)=>({batchId:t,levelId:c,sessionId:e,homeworkId:n}),xd=t=>({count:t}),bd=t=>({standard:t}),vd=()=>[],Gt=t=>({file:t}),Gr=t=>({index:t}),Od=t=>({type:t});
7function Md(t,c){if(t&1&&(a(0,"p",11),s(1),r()),t&2){let e=d();o(),g(e.displayHomeworkTitle)}}function Pd(t,c){if(t&1){let e=M();a(0,"button",12),x("click",function(){C(e);let i=d();return f(i.simulateHomework())}),s(1),_(2,"translate"),r()}t&2&&(o(),b(" ",m(2,1,"HOMEWORK_V2.SIMULATE.OPEN")," "))}function Sd(t,c){if(t&1&&v(0,"app-assign-task-button",13),t&2){let e=d();p("resourceRef",Li(4,hd,e.batchId,e.levelId,e.sessionId,e.homeworkId))("resourceLabel","Homework \u2014 "+e.displayHomeworkTitle)("courseId",e.courseId)("levelId",e.levelId)}}function wd(t,c){t&1&&(a(0,"div",14),v(1,"div",15)(2,"div",16)(3,"div",17)(4,"div",17),r())}function Ed(t,c){if(t&1&&(a(0,"p",51),s(1),_(2,"translate"),r()),t&2){let e=d(2);o(),g(B(2,1,"SUBMISSION_REQUIREMENTS.ERRORS."+e.requirementSaveError.code,e.requirementSaveError))}}function Id(t,c){if(t&1&&(a(0,"span",52),s(1),r()),t&2){let e=d(2);o(),g(e.detailsSummary())}}function yd(t,c){t&1&&(a(0,"p",60),s(1),_(2,"translate"),r()),t&2&&(o(),g(m(2,1,"HOMEWORK_BUILDER.ERROR_TITLE_REQUIRED")))}function kd(t,c){if(t&1&&(a(0,"div",53)(1,"div",54)(2,"label"),s(3),_(4,"translate"),r(),v(5,"input",55),_(6,"translate"),h(7,yd,3,3,"p",56),r(),a(8,"div",54)(9,"label"),s(10),_(11,"translate"),r(),v(12,"textarea",57),r(),a(13,"div",58)(14,"label"),s(15),_(16,"translate"),r(),v(17,"input",59),r()()),t&2){let e=d(2);o(3),g(m(4,5,"HOMEWORK_BUILDER.TITLE")),o(2),p("placeholder",m(6,7,"HOMEWORK_BUILDER.TITLE_PLACEHOLDER")),o(2),p("ngIf",e.showControlError("title")),o(3),g(m(11,9,"HOMEWORK_BUILDER.DESCRIPTION_OPTIONAL")),o(5),g(m(16,11,"HOMEWORK_BUILDER.DUE_DATE_OPTIONAL"))}}function Ad(t,c){if(t&1&&(a(0,"div",61)(1,"span",62),s(2),_(3,"translate"),r()()),t&2){let e=d(2);p("ngClass","grading-summary--"+e.gradingModeSummary.badge),o(),p("ngClass","badge--"+e.gradingModeSummary.badge),o(),g(m(3,3,e.gradingModeSummary.label))}}function Td(t,c){if(t&1){let e=M();a(0,"button",69),x("click",function(){C(e);let i=d().$implicit,l=d(3);return f(l.normalisePoints(i.index))}),s(1),_(2,"translate"),r()}if(t&2){let e=d().$implicit;o(),b(" ",B(2,1,"HOMEWORK_BUILDER.HEALTH_USE_STANDARD",D(4,bd,e.standardPoints))," ")}}function Rd(t,c){if(t&1){let e=M();a(0,"li")(1,"button",67),x("click",function(){let i=C(e).$implicit,l=d(3);return f(l.goToIssue(i))}),s(2),r(),h(3,Td,3,6,"button",68),r()}if(t&2){let e=c.$implicit;o(2),b(" ",e.message," "),o(),p("ngIf",e.fixablePoints)}}function Dd(t,c){if(t&1&&(a(0,"div",63)(1,"strong",64),s(2),_(3,"translate"),r(),a(4,"ul",65),h(5,Rd,4,2,"li",66),r()()),t&2){let e=c.ngIf,n=d(2);p("hidden",!e.length),o(2),b(" ",B(3,4,"HOMEWORK_BUILDER.HEALTH_TITLE",D(7,xd,e.length))," "),o(3),p("ngForOf",e)("ngForTrackBy",n.trackByIndex)}}function Bd(t,c){if(t&1){let e=M();a(0,"button",75),x("click",function(){let i=C(e).$implicit,l=d(3);return f(l.setActivePart(i.sectionId))}),s(1),_(2,"translate"),a(3,"span",76),s(4),r()()}if(t&2){let e=c.$implicit,n=d(3);y("active",n.activePart===e.sectionId),o(),b(" ",m(2,4,e.labelKey)," "),o(3),g(n.countForPart(e.sectionId))}}function Ld(t,c){if(t&1){let e=M();a(0,"button",77),x("click",function(){C(e);let i=d(3);return f(i.setActivePart(i.unsortedPartId))}),s(1),_(2,"translate"),a(3,"span",76),s(4),r()()}if(t&2){let e=d(3);y("active",e.activePart===e.unsortedPartId),o(),b(" ",m(2,4,"HOMEWORK_BUILDER.PART_UNSORTED")," "),o(3),g(e.unsortedCount)}}function Nd(t,c){t&1&&(a(0,"p",78),s(1),_(2,"translate"),r()),t&2&&(o(),g(m(2,1,"HOMEWORK_BUILDER.PART_UNSORTED_HINT")))}function Vd(t,c){if(t&1&&(a(0,"div",70)(1,"div",71),h(2,Bd,5,6,"button",72)(3,Ld,5,6,"button",73),r(),h(4,Nd,3,3,"p",74),r()),t&2){let e=d(2);o(2),p("ngForOf",e.parts)("ngForTrackBy",e.trackByIndex),o(),p("ngIf",e.unsortedCount),o(),p("ngIf",e.unsortedCount)}}function Fd(t,c){t&1&&(a(0,"p",85),s(1),_(2,"translate"),r()),t&2&&(o(),g(m(2,1,"HOMEWORK_BUILDER.SECTIONS_EMPTY_HINT")))}function Ud(t,c){t&1&&(a(0,"p",60),s(1),_(2,"translate"),r()),t&2&&(o(),g(m(2,1,"HOMEWORK_BUILDER.ERROR_SECTION_TITLE_REQUIRED")))}function Hd(t,c){t&1&&(a(0,"p",60),s(1),_(2,"translate"),r()),t&2&&(o(),g(m(2,1,"HOMEWORK_BUILDER.ERROR_SECTION_TIT
7LE_REQUIRED")))}function Gd(t,c){if(t&1&&(a(0,"option",101),s(1),_(2,"translate"),r()),t&2){let e=c.$implicit;p("value",e.value),o(),g(m(2,2,e.labelKey))}}function qd(t,c){if(t&1&&(a(0,"option",101),s(1),_(2,"translate"),r()),t&2){let e=c.$implicit;p("value",e.value),o(),g(m(2,2,e.labelKey))}}function Wd(t,c){if(t&1){let e=M();a(0,"div",86)(1,"div",87)(2,"span",88),s(3),_(4,"translate"),r(),a(5,"div",89)(6,"button",90),_(7,"translate"),x("click",function(){let i=C(e).index,l=d(3);return f(l.moveSection(i,i-1))}),s(8,"\u2191"),r(),a(9,"button",90),_(10,"translate"),x("click",function(){let i=C(e).index,l=d(3);return f(l.moveSection(i,i+1))}),s(11,"\u2193"),r(),a(12,"button",91),_(13,"translate"),x("click",function(){let i=C(e).index,l=d(3);return f(l.removeSection(i))}),s(14,"\xD7"),r()()(),a(15,"div",92)(16,"div",54)(17,"label"),s(18),_(19,"translate"),r(),v(20,"input",93),_(21,"translate"),h(22,Ud,3,3,"p",56),r(),a(23,"div",54)(24,"label"),s(25),_(26,"translate"),r(),v(27,"input",94),_(28,"translate"),h(29,Hd,3,3,"p",56),r()(),a(30,"div",92)(31,"div",54)(32,"label"),s(33),_(34,"translate"),r(),a(35,"select",95),x("change",function(){let i=C(e).index,l=d(3);return f(l.onSectionTypeChange(i))}),h(36,Gd,3,4,"option",96),r()(),a(37,"div",54)(38,"label"),s(39),_(40,"translate"),r(),a(41,"select",97),h(42,qd,3,4,"option",96),r()(),a(43,"div",58)(44,"label"),s(45),_(46,"translate"),r(),v(47,"input",98),r()(),a(48,"label",99),v(49,"input",100),a(50,"span"),s(51),_(52,"translate"),r()()()}if(t&2){let e=c.index,n=d(3);p("formGroupName",e),o(3),N("",m(4,22,"HOMEWORK_BUILDER.SECTION")," ",e+1,""),o(3),p("disabled",e===0)("title",m(7,24,"HOMEWORK_BUILDER.MOVE_UP")),o(3),p("disabled",e===n.sectionForms.length-1)("title",m(10,26,"HOMEWORK_BUILDER.MOVE_DOWN")),o(3),p("title",m(13,28,"COMMON.DELETE")),o(6),g(m(19,30,"HOMEWORK_BUILDER.SECTION_TITLE_EN")),o(2),p("placeholder",m(21,32,"HOMEWORK_BUILDER.SECTION_TITLE_EN_PLACEHOLDER")),o(2),p("ngIf",n.showControlError("sections."+e+".titleEn")),o(3),g(m(26,34,"HOMEWORK_BUILDER.SECTION_TITLE_FR")),o(2),p("placeholder",m(28,36,"HOMEWORK_BUILDER.SECTION_TITLE_FR_PLACEHOLDER")),o(2),p("ngIf",n.showControlError("sections."+e+".titleFr")),o(4),g(m(34,38,"HOMEWORK_BUILDER.SECTION_TYPE")),o(3),p("ngForOf",n.sectionTypeOptions)("ngForTrackBy",n.trackByIndex),o(3),g(m(40,40,"HOMEWORK_BUILDER.CORRECTION_MODE")),o(3),p("ngForOf",n.correctionModeOptions)("ngForTrackBy",n.trackByIndex),o(3),g(m(46,42,"HOMEWORK_BUILDER.SECTION_ESTIMATED_TIME")),o(6),g(m(52,44,"HOMEWORK_BUILDER.SECTION_REQUIRED"))}}function zd(t,c){if(t&1){let e=M();a(0,"div",79)(1,"div",80)(2,"h3"),s(3),_(4,"translate"),r(),a(5,"button",81),x("click",function(){C(e);let i=d(2);return f(i.addSection())}),s(6),_(7,"translate"),r()(),h(8,Fd,3,3,"p",82),a(9,"div",83),h(10,Wd,53,46,"div",84),r()()}if(t&2){let e=d(2);o(3),g(m(4,5,"HOMEWORK_BUILDER.SECTIONS")),o(3),g(m(7,7,"HOMEWORK_BUILDER.ADD_SECTION")),o(2),p("ngIf",!e.hasSections),o(2),p("ngForOf",e.sectionForms.controls)("ngForTrackBy",e.trackByIndex)}}function Kd(t,c){if(t&1){let e=M();a(0,"button",114),x("click",function(){C(e);let i=d().index,l=d(2);return f(l.removeQuestion(i))}),s(1," \xD7 "),r()}}function $d(t,c){if(t&1&&(a(0,"p"),s(1),r()),t&2){let e=c.$implicit;o(),g(e)}}function jd(t,c){if(t&1&&(a(0,"div",116)(1,"strong"),s(2),_(3,"translate"),r(),h(4,$d,2,1,"p",66),r()),t&2){let e=d().ngIf,n=d(3);o(2),g(m(3,3,"HOMEWORK_BUILDER.FIX_QUESTION")),o(2),p("ngForOf",e)("ngForTrackBy",n.trackByIndex)}}function Qd(t,c){if(t&1&&(G(0),h(1,jd,5,5,"div",115),q()),t&2){let e=c.ngIf;o(),p("ngIf",e.length)}}function Yd(t,c){if(t&1){let e=M();a(0,"app-submission-requirements-panel",155),x("policyChange",function(i){C(e);let l=d(2).index,u=d(2);return f(u.setRequirementPolicy(l,i))}),r()}if(t&2){let e,n,i,l=c.ngIf,u=d(2),O=u.$implicit,E=u.index,V=d(2);p("admin",V.canEditRequirements)("kind",l)("fieldId","homework-policy-"+E)("policy",(e=O.get("validationPolicy"))==null?null:e.value)("requireMinimum",((n=O.get("validationPolicyRequired"))==null?null:n.value)&&(l==="speaking"||((n=O.get("type"))==null?null:n.value)==="writing"||((n=O.get("type"))==null?null:n.value)==="long_answer"||((n=O.get("answerType"))==null?null:n.value)==="long_answer"))("prompt",(((i=O.get("questionText"))==null?null:i.value)||"")+" "+(((i=O.get("instructions"))==null?null:i.value)||""))}}function Xd(t,c){if(t&1&&(a(0,"option",101),s(1),_(2,"translate"),r()),t&2){let e=c.$implicit;p("value",e.value),o(),g(m(2,2,e.labelKey))}}function Jd(t,c){if(t&1){let e=M();a(0,"div",156)(1,"label"),s(2),_(3,"translate"),r(),a(4,"div",157)(5,"button",158),x("click",function(){C(e);let i=d(2).index,l=d(2);return f(l.setCorrectionFormat(i,!1))}),s(6),_(7,"translate"),r(),a(8,"button",159),x("click",function(){C(e);let i=d(2).index,l=d(2);return f(l.setCorrectionFormat(i,!0))}),s(9),_(10,"translate"),r()()()}if(t&2){let e=d(2).index,n=d(2);o(2),g(m(3,7,"HOMEWORK_BUILDER.EC_FORMAT")),o(3),y("is-on",!n.usesCorrectionFormat(e)),o(),g(m(7,9,"HOMEWORK_BUILDER.EC_FORMAT_BLANKS")),o(2),y("is-on",n.usesCorrectionFormat(e)),o(),g(m(10,11,"HOMEWORK_BUILDER.EC_FORMAT_CORRECTIONS"))}}function Zd(t,c){if(t&1){let e=M();a(0,"app-error-correction-builder",160),x("changed",function(i){C(e);let l=d(2).index,u=d(2);return f(u.applyCorrectionDraft(l,i))}),r()}if(t&2){let e,n,i=d(2).$implicit;p("questionText",((e=i.get("questionText"))==null?null:e.value)||"")("expectedAnswers",((n=i.get("expectedAnswers"))==null?null:n.value)||Re(2,vd))}}function ep(t,c){if(t&1){let e=M();a(0,"button",165),_(1,"translate"),x("click",function(){C(e);let i=d(3).index,l=d(2);return f(l.insertBlank(i))}),s(2,"____"),r()}t&2&&p("title",m(1,1,"HOMEWORK_BUILDER.INSERT_BLANK_MARKER"))}function tp(t,c){if(t&1&&v(0,"div",166),t&2){let e,n=d(3).$implicit;p("innerHTML",(e=n.get("questionText"))==null?null:e.value,Ee)}}function np(t,c){if(t&1){let e=M();a(0,"div",54)(1,"label"),s(2),_(3,"translate"),r(),a(4,"div",161)(5,"textarea",162),_(6,"translate"),x("input",function(){C(e);let i=d(2).index,l=d(2);return f(l.onQuestionTextChanged(i))}),r(),h(7,ep,3,3,"button",163),r(),h(8,tp,1,1,"div",164),r()}if(t&2){let e,n,i,l,u,O=d(2).$implicit;o(2),g(m(3,6,((e=O.get("type"))==null?null:e.value)==="fill_blank"?"HOMEWORK_BUILDER.SENTENCE_WITH_BLANK":"HOMEWORK_BUILDER.QUESTION_TEXT")),o(2),y("blank-input-row--active",((n=O.get("type"))==null?null:n.value)==="fill_blank"),o(),p("placeholder",m(6,8,((i=O.get("type"))==null?null:i.value)==="fill_blank"?"HOMEWORK_BUILDER.BLANK_PLACEHOLDER":"HOMEWORK_BUILDER.QUESTION_PLACEHOLDER")),o(2),p("ngIf",((l=O.get("type"))==null?null:l.value)==="fill_blank"),o(),p("ngIf",(u=O.get("questionText"))==null?null:u.value)}}function ip(t,c){if(t&1&&(a(0,"option",101),s(1),_(2,"translate"),r()),t&2){let e=c.$implicit;p("value",e.value),o(),g(m(2,2,e.labelKey))}}function op(t,c){t&1&&(a(0,"div",54)(1,"label"),s(2),_(3,"translate"),r(),v(4,"input",167),_(5,"translate"),r()),t&2&&(o(2),g(m(3,2,"HOMEWORK_BUILDER.TRANSCRIPT_OPTIONAL")),o(2),p("placeholder",m(5,4,"HOMEWORK_BUILDER.TRANSCRIPT_PLACEHOLDER")))}function rp(t,c){if(t&1){let e=M();a(0,"div",54)(1,"label"),s(2),_(3,"translate"),r(),a(4,"input",168),_(5,"translate"),x("input",function(){let i;C(e);let l=d(2).$implicit;return f(l.patchValue({mediaSource:((i=l.get("mediaKind"))==null?null:i.value)==="youtube"?"youtube":"external_url"}))}),r()()}if(t&2){let e,n=d(2).$implicit;o(2),g(m(3,2,((e=n.get("mediaKind"))==null?null:e.value)==="youtube"?"HOMEWORK_BUILDER.YOUTUBE_URL":"HOMEWORK_BUILDER.DIRECT_HTTPS_URL")),o(2),p("placeholder",m(5,4,"HOMEWORK_BUILDER.URL_PLACEHOLDER"))}}function ap(t,c){if(t&1){let e=M();a(0,"label",133),s(1),_(2,"translate"),a(3,"input",134),x("change",function(i){C(e);let l=d(3).index,u=d(2);return f(u.onMediaFileSelected(i,l,"image"))}),r()()}
7if(t&2){let e=d(5);o(),b(" ",m(2,2,"HOMEWORK_BUILDER.UPLOAD")," "),o(2),R("accept",e.uploadAccept("image"))}}function sp(t,c){if(t&1){let e=M();a(0,"label",133),s(1),_(2,"translate"),a(3,"input",134),x("change",function(i){C(e);let l=d(3).index,u=d(2);return f(u.onMediaFileSelected(i,l,"audio"))}),r()()}if(t&2){let e=d(5);o(),b(" ",m(2,2,"HOMEWORK_BUILDER.UPLOAD")," "),o(2),R("accept",e.uploadAccept("audio"))}}function lp(t,c){if(t&1){let e=M();a(0,"label",133),s(1),_(2,"translate"),a(3,"input",134),x("change",function(i){C(e);let l=d(3).index,u=d(2);return f(u.onMediaFileSelected(i,l,"video"))}),r()()}if(t&2){let e=d(5);o(),b(" ",m(2,2,"HOMEWORK_BUILDER.UPLOAD")," "),o(2),R("accept",e.uploadAccept("video"))}}function cp(t,c){if(t&1&&(a(0,"p",176),s(1),_(2,"translate"),r()),t&2){let e=d().ngIf;o(),N(" ",B(2,2,"HOMEWORK_BUILDER.UPLOAD_UPLOADING",D(5,Gt,e.fileName))," ",e.progress,"% ")}}function dp(t,c){if(t&1&&(a(0,"p",177),s(1),r()),t&2){let e=d().ngIf;o(),b(" ",e.message," ")}}function pp(t,c){if(t&1&&(a(0,"p",178),s(1),_(2,"translate"),r()),t&2){let e=d().ngIf;o(),b(" ",B(2,1,"HOMEWORK_BUILDER.UPLOAD_DONE",D(4,Gt,e.fileName))," ")}}function _p(t,c){if(t&1){let e=M();a(0,"div",179)(1,"button",180),x("click",function(){C(e);let i=d(6).index,l=d(2);return f(l.retryUpload(i,"media"))}),s(2),_(3,"translate"),r(),a(4,"button",180),x("click",function(){C(e);let i=d(6).index,l=d(2);return f(l.removeUploadState(i,"media"))}),s(5),_(6,"translate"),r()()}if(t&2){let e=d(6).index;o(),R("data-testid","upload-retry-media-"+e),o(),g(m(3,4,"HOMEWORK_BUILDER.UPLOAD_RETRY")),o(2),R("data-testid","upload-remove-media-"+e),o(),g(m(6,6,"HOMEWORK_BUILDER.UPLOAD_REMOVE"))}}function mp(t,c){if(t&1&&(G(0),h(1,cp,3,7,"p",172)(2,dp,2,1,"p",173)(3,pp,3,6,"p",174)(4,_p,7,8,"div",175),q()),t&2){let e=c.ngIf;o(),p("ngIf",e.status==="uploading"),o(),p("ngIf",e.status==="failed"),o(),p("ngIf",e.status==="done"),o(),p("ngIf",e.status==="failed")}}function gp(t,c){if(t&1&&(a(0,"div",137)(1,"p",138),s(2),r(),h(3,mp,5,4,"ng-container",112),r()),t&2){let e=d().ngIf,n=d(3).index,i=d(2);R("data-testid","upload-state-media-"+n),o(2),g(i.uploadLimitLabel(e)),o(),p("ngIf",i.uploadState(n,"media"))}}function up(t,c){if(t&1&&(G(0),h(1,gp,4,3,"div",171),q()),t&2){let e=c.ngIf;o(),p("ngIf",e==="image"||e==="audio"||e==="video")}}function Cp(t,c){if(t&1&&(a(0,"div",54)(1,"label"),s(2),_(3,"translate"),r(),a(4,"div",131),v(5,"input",169),_(6,"translate"),h(7,ap,4,4,"label",170)(8,sp,4,4,"label",170)(9,lp,4,4,"label",170),r(),h(10,up,2,1,"ng-container",112),r()),t&2){let e,n,i,l,u=d(2).$implicit;o(2),g(m(3,6,"HOMEWORK_BUILDER.UPLOAD_OR_PASTE_URL")),o(3),p("placeholder",m(6,8,"HOMEWORK_BUILDER.URL_PLACEHOLDER")),o(2),p("ngIf",((e=u.get("mediaKind"))==null?null:e.value)==="image"),o(),p("ngIf",((n=u.get("mediaKind"))==null?null:n.value)==="audio"),o(),p("ngIf",((i=u.get("mediaKind"))==null?null:i.value)==="video"),o(),p("ngIf",(l=u.get("mediaKind"))==null?null:l.value)}}function fp(t,c){if(t&1&&(v(0,"img",181),_(1,"translate")),t&2){let e=c.ngIf;p("src",e,le)("alt",m(1,2,"HOMEWORK_BUILDER.QUESTION_MEDIA_PREVIEW"))}}function hp(t,c){if(t&1&&v(0,"audio",182),t&2){let e=c.ngIf;p("src",e,le)}}function xp(t,c){if(t&1&&(v(0,"iframe",183),_(1,"translate")),t&2){let e=d(2).$implicit,n=d(2);p("src",n.getPreviewVideoEmbedUrl(e),ft)("title",m(1,2,"HOMEWORK_BUILDER.QUESTION_VIDEO_PREVIEW"))}}function bp(t,c){if(t&1&&v(0,"video",184),t&2){let e=c.ngIf;p("src",e,le)}}function vp(t,c){if(t&1&&v(0,"div",166),t&2){let e,n=d(3).$implicit;p("innerHTML",(e=n.get("instructions"))==null?null:e.value,Ee)}}function Op(t,c){if(t&1&&(a(0,"div",54)(1,"label"),s(2),_(3,"translate"),r(),v(4,"textarea",185),_(5,"translate"),h(6,vp,1,1,"div",164),r()),t&2){let e,n=d(2).$implicit;o(2),g(m(3,3,"HOMEWORK_BUILDER.INSTRUCTIONS_OPTIONAL")),o(2),p("placeholder",m(5,5,"HOMEWORK_BUILDER.INSTRUCTIONS_PLACEHOLDER")),o(2),p("ngIf",(e=n.get("instructions"))==null?null:e.value)}}function Mp(t,c){if(t&1){let e=M();a(0,"button",197),x("click",function(){C(e);let i=d().index,l=d(3).index,u=d(2);return f(u.removeDialogueLine(l,i))}),s(1,"\xD7"),r()}}function Pp(t,c){if(t&1&&(a(0,"div",192)(1,"select",193)(2,"option",194),s(3),_(4,"translate"),r(),a(5,"option",195),s(6),_(7,"translate"),r()(),v(8,"input",196),_(9,"translate"),h(10,Mp,2,0,"button",135),r()),t&2){let e=c.index,n=d(3).index,i=d(2);p("formGroupName",e),o(3),g(m(4,5,"HOMEWORK_BUILDER.SPEAKER_A")),o(3),g(m(7,7,"HOMEWORK_BUILDER.SPEAKER_B")),o(2),p("placeholder",m(9,9,"HOMEWORK_BUILDER.DIALOGUE_LINE_PLACEHOLDER")),o(2),p("ngIf",i.getDialogueLines(n).length>2)}}function Sp(t,c){if(t&1){let e=M();a(0,"div",186)(1,"div",92)(2,"div",54)(3,"label"),s(4),_(5,"translate"),r(),v(6,"input",187),_(7,"translate"),r(),a(8,"div",54)(9,"label"),s(10),_(11,"translate"),r(),v(12,"input",188),_(13,"translate"),r()(),a(14,"div",189)(15,"label"),s(16),_(17,"translate"),r(),h(18,Pp,11,11,"div",190),r(),a(19,"div",191)(20,"button",81),x("click",function(){C(e);let i=d(2).index,l=d(2);return f(l.addDialogueLine(i,"A"))}),s(21),_(22,"translate"),r(),a(23,"button",81),x("click",function(){C(e);let i=d(2).index,l=d(2);return f(l.addDialogueLine(i,"B"))}),s(24),_(25,"translate"),r()()()}if(t&2){let e=d(2).index,n=d(2);o(4),g(m(5,9,"HOMEWORK_BUILDER.SPEAKER_A")),o(2),p("placeholder",m(7,11,"HOMEWORK_BUILDER.SPEAKER_A")),o(4),g(m(11,13,"HOMEWORK_BUILDER.SPEAKER_B")),o(2),p("placeholder",m(13,15,"HOMEWORK_BUILDER.SPEAKER_B")),o(4),g(m(17,17,"HOMEWORK_BUILDER.DIALOGUE_LINES")),o(2),p("ngForOf",n.getDialogueLines(e).controls)("ngForTrackBy",n.trackByIndex),o(3),g(m(22,19,"HOMEWORK_BUILDER.ADD_SPEAKER_A")),o(3),g(m(25,21,"HOMEWORK_BUILDER.ADD_SPEAKER_B"))}}function wp(t,c){if(t&1){let e=M();a(0,"button",197),_(1,"translate"),x("click",function(){C(e);let i=d(2).index,l=d(2);return f(l.clearQuestionImage(i))}),s(2,"\xD7"),r()}t&2&&R("aria-label",m(1,1,"HOMEWORK_BUILDER.REMOVE_IMAGE"))}function Ep(t,c){if(t&1&&(a(0,"p",176),s(1),_(2,"translate"),r()),t&2){let e=d().ngIf;o(),N(" ",B(2,2,"HOMEWORK_BUILDER.UPLOAD_UPLOADING",D(5,Gt,e.fileName))," ",e.progress,"% ")}}
7function Ip(t,c){if(t&1&&(a(0,"p",177),s(1),r()),t&2){let e=d().ngIf;o(),g(e.message)}}function yp(t,c){if(t&1&&(a(0,"p",178),s(1),_(2,"translate"),r()),t&2){let e=d().ngIf;o(),b(" ",B(2,1,"HOMEWORK_BUILDER.UPLOAD_DONE",D(4,Gt,e.fileName))," ")}}function kp(t,c){if(t&1){let e=M();a(0,"div",179)(1,"button",180),x("click",function(){C(e);let i=d(3).index,l=d(2);return f(l.retryUpload(i,"questionImage"))}),s(2),_(3,"translate"),r(),a(4,"button",180),x("click",function(){C(e);let i=d(3).index,l=d(2);return f(l.removeUploadState(i,"questionImage"))}),s(5),_(6,"translate"),r()()}t&2&&(o(2),g(m(3,2,"HOMEWORK_BUILDER.UPLOAD_RETRY")),o(3),g(m(6,4,"HOMEWORK_BUILDER.UPLOAD_REMOVE")))}function Ap(t,c){if(t&1&&(G(0),h(1,Ep,3,7,"p",172)(2,Ip,2,1,"p",173)(3,yp,3,6,"p",174)(4,kp,7,6,"div",175),q()),t&2){let e=c.ngIf;o(),p("ngIf",e.status==="uploading"),o(),p("ngIf",e.status==="failed"),o(),p("ngIf",e.status==="done"),o(),p("ngIf",e.status==="failed")}}function Tp(t,c){if(t&1&&(v(0,"img",181),_(1,"translate")),t&2){let e=d(2).$implicit,n=d(2);p("src",n.getPreviewQuestionImageUrl(e),le)("alt",m(1,2,"HOMEWORK_BUILDER.QUESTION_IMAGE_ALT"))}}function Rp(t,c){if(t&1&&v(0,"div",166),t&2){let e,n=d(3).$implicit;p("innerHTML",(e=n.get("passage"))==null?null:e.value,Ee)}}function Dp(t,c){if(t&1&&(a(0,"div",54)(1,"label"),s(2),_(3,"translate"),r(),v(4,"textarea",198),_(5,"translate"),h(6,Rp,1,1,"div",164),r()),t&2){let e,n=d(2).$implicit;o(2),g(m(3,3,"HOMEWORK_BUILDER.READING_PASSAGE")),o(2),p("placeholder",m(5,5,"HOMEWORK_BUILDER.READING_PASSAGE_PLACEHOLDER")),o(2),p("ngIf",(e=n.get("passage"))==null?null:e.value)}}function Bp(t,c){if(t&1&&(a(0,"p",176),s(1),_(2,"translate"),r()),t&2){let e=d().ngIf;o(),N(" ",B(2,2,"HOMEWORK_BUILDER.UPLOAD_UPLOADING",D(5,Gt,e.fileName))," ",e.progress,"% ")}}function Lp(t,c){if(t&1&&(a(0,"p",177),s(1),r()),t&2){let e=d().ngIf;o(),g(e.message)}}function Np(t,c){if(t&1&&(a(0,"p",178),s(1),_(2,"translate"),r()),t&2){let e=d().ngIf;o(),b(" ",B(2,1,"HOMEWORK_BUILDER.UPLOAD_DONE",D(4,Gt,e.fileName))," ")}}function Vp(t,c){if(t&1){let e=M();a(0,"div",179)(1,"button",180),x("click",function(){C(e);let i=d(4).index,l=d(2);return f(l.retryUpload(i,"audio"))}),s(2),_(3,"translate"),r(),a(4,"button",180),x("click",function(){C(e);let i=d(4).index,l=d(2);return f(l.removeUploadState(i,"audio"))}),s(5),_(6,"translate"),r()()}t&2&&(o(2),g(m(3,2,"HOMEWORK_BUILDER.UPLOAD_RETRY")),o(3),g(m(6,4,"HOMEWORK_BUILDER.UPLOAD_REMOVE")))}function Fp(t,c){if(t&1&&(G(0),h(1,Bp,3,7,"p",172)(2,Lp,2,1,"p",173)(3,Np,3,6,"p",174)(4,Vp,7,6,"div",175),q()),t&2){let e=c.ngIf;o(),p("ngIf",e.status==="uploading"),o(),p("ngIf",e.status==="failed"),o(),p("ngIf",e.status==="done"),o(),p("ngIf",e.status==="failed")}}function Up(t,c){if(t&1&&v(0,"audio",182),t&2){let e=c.ngIf;p("src",e,le)}}function Hp(t,c){if(t&1){let e=M();a(0,"div",54)(1,"label"),s(2),_(3,"translate"),r(),a(4,"div",131),v(5,"input",199),_(6,"translate"),a(7,"label",133),s(8),_(9,"translate"),a(10,"input",134),x("change",function(i){C(e);let l=d(2).index,u=d(2);return f(u.onAudioFileSelected(i,l))}),r()()(),a(11,"div",137)(12,"p",138),s(13),r(),h(14,Fp,5,4,"ng-container",112),r(),h(15,Up,1,1,"audio",126),r()}if(t&2){let e=d(2),n=e.$implicit,i=e.index,l=d(2);o(2),g(m(3,8,"HOMEWORK_BUILDER.AUDIO_FILE")),o(3),p("placeholder",m(6,10,"HOMEWORK_BUILDER.AUDIO_URL_PLACEHOLDER")),o(3),b(" ",m(9,12,"HOMEWORK_BUILDER.UPLOAD")," "),o(2),R("accept",l.uploadAccept("audio")),o(),R("data-testid","upload-state-audio-"+i),o(2),g(l.uploadLimitLabel("audio")),o(),p("ngIf",l.uploadState(i,"audio")),o(),p("ngIf",l.getPreviewAudioUrl(n))}}function Gp(t,c){if(t&1&&(a(0,"option",101),s(1),_(2,"translate"),r()),t&2){let e=c.$implicit;p("value",e.value),o(),b(" ",m(2,2,e.labelKey)," ")}}function qp(t,c){if(t&1){let e=M();a(0,"div",54)(1,"label"),s(2),_(3,"translate"),r(),a(4,"select",200),x("change",function(){C(e);let i=d(2).index,l=d(2);return f(l.onComprehensionAnswerTypeChange(i))}
7),h(5,Gp,3,4,"option",96),r()()}if(t&2){let e,n=d(2).$implicit,i=d(2);o(2),g(m(3,3,((e=n.get("type"))==null?null:e.value)==="reading"?"HOMEWORK_BUILDER.READING_ANSWER_TYPE":"HOMEWORK_BUILDER.LISTENING_ANSWER_TYPE")),o(3),p("ngForOf",i.comprehensionAnswerTypes)("ngForTrackBy",i.trackByIndex)}}function Wp(t,c){if(t&1){let e=M();a(0,"button",197),x("click",function(){C(e);let i=d().index,l=d(3).index,u=d(2);return f(u.removeOption(l,i))}),s(1," \xD7 "),r()}}function zp(t,c){if(t&1){let e=M();a(0,"div",205)(1,"input",206),_(2,"translate"),x("change",function(){let i=C(e).index,l=d(3).index,u=d(2);return f(u.setCorrectOption(l,i))}),r(),v(3,"input",207),_(4,"translate"),h(5,Wp,2,0,"button",135),r()}if(t&2){let e,n=c.$implicit,i=c.index,l=d(3).index,u=d(2);p("formGroupName",i),o(),p("name","correct_"+l)("checked",(e=n.get("isCorrect"))==null?null:e.value)("title",m(2,6,"HOMEWORK_BUILDER.MARK_AS_CORRECT")),o(2),p("placeholder",B(4,8,"HOMEWORK_BUILDER.OPTION_PLACEHOLDER",D(11,Gr,i+1))),o(2),p("ngIf",u.getOptions(l).length>2)}}function Kp(t,c){if(t&1){let e=M();a(0,"button",81),x("click",function(){C(e);let i=d(3).$implicit,l=d(2);return f(l.addOption(i))}),s(1),_(2,"translate"),r()}t&2&&(o(),b(" ",m(2,1,"HOMEWORK_BUILDER.ADD_OPTION")," "))}function $p(t,c){if(t&1&&(a(0,"div",201)(1,"label"),s(2),_(3,"translate"),r(),a(4,"div",202),h(5,zp,6,13,"div",203),r(),h(6,Kp,3,3,"button",204),r()),t&2){let e=d(2).index,n=d(2);o(2),g(m(3,4,"HOMEWORK_BUILDER.OPTIONS")),o(3),p("ngForOf",n.getOptions(e).controls)("ngForTrackBy",n.trackByOptionKey),o(),p("ngIf",n.getOptions(e).length<4)}}function jp(t,c){if(t&1){let e=M();a(0,"div",208)(1,"label"),s(2),_(3,"translate"),r(),a(4,"div",209)(5,"button",210),x("click",function(){C(e);let i=d(2).$implicit;return f(i.patchValue({trueFalseAnswer:"true"}))}),s(6),_(7,"translate"),r(),a(8,"button",210),x("click",function(){C(e);let i=d(2).$implicit;return f(i.patchValue({trueFalseAnswer:"false"}))}),s(9),_(10,"translate"),r()()()}if(t&2){let e,n,i=d(2).$implicit;o(2),g(m(3,7,"HOMEWORK_BUILDER.CORRECT_VALUE")),o(3),y("active",((e=i.get("trueFalseAnswer"))==null?null:e.value)==="true"),o(),g(m(7,9,"HOMEWORK_BUILDER.TRUE")),o(2),y("active",((n=i.get("trueFalseAnswer"))==null?null:n.value)==="false"),o(),g(m(10,11,"HOMEWORK_BUILDER.FALSE"))}}function Qp(t,c){if(t&1){let e=M();a(0,"button",197),x("click",function(){C(e);let i=d().index,l=d(3).index,u=d(2);return f(u.removeExpectedAnswer(l,i))}),s(1," \xD7 "),r()}}function Yp(t,c){if(t&1&&(a(0,"div",213),v(1,"input",214),_(2,"translate"),_(3,"translate"),h(4,Qp,2,0,"button",135),r()),t&2){let e,n=c.index,i=d(3),l=i.$implicit,u=i.index,O=d(2);o(),p("formControlName",n)("placeholder",((e=l.get("type"))==null?null:e.value)==="fill_blank"||((e=l.get("answerType"))==null?null:e.value)==="fill_blank"?m(2,3,"HOMEWORK_BUILDER.CORRECT_WORD_PLACEHOLDER"):B(3,5,"HOMEWORK_BUILDER.ACCEPTED_ANSWER_PLACEHOLDER",D(8,Gr,n+1))),o(3),p("ngIf",O.getExpectedAnswers(u).length>1)}}function Xp(t,c){if(t&1){let e=M();a(0,"div",208)(1,"label"),s(2),_(3,"translate"),r(),a(4,"p",85),s(5),_(6,"translate"),r(),a(7,"div",211),h(8,Yp,5,10,"div",212),r(),a(9,"button",81),x("click",function(){C(e);let i=d(2).$implicit,l=d(2);return f(l.addExpectedAnswer(i))}),s(10),_(11,"translate"),r()()}if(t&2){let e,n=d(2),i=n.$implicit,l=n.index,u=d(2);o(2),g(m(3,5,((e=i.get("type"))==null?null:e.value)==="fill_blank"||((e=i.get("answerType"))==null?null:e.value)==="fill_blank"?"HOMEWORK_BUILDER.CORRECT_WORD_PHRASE":"HOMEWORK_BUILDER.CORRECT_ANSWER")),o(3),g(m(6,7,"HOMEWORK_BUILDER.ACCEPTED_ANSWERS_HINT")),o(3),p("ngForOf",u.getExpectedAnswers(l).controls)("ngForTrackBy",u.trackByIndex),o(2),b(" ",m(11,9,"HOMEWORK_BUILDER.ADD_ALTERNATIVE_ANSWER")," ")}}function Jp(t,c){t&1&&(a(0,"div",215),s(1),_(2,"translate"),r()),t&2&&(o(),b(" ",m(2,1,"HOMEWORK_BUILDER.INSTRUCTOR_REVIEW_BADGE")," "))}function Zp(t,c){t&1&&(a(0,"div",215),s(1),_(2,"translate"),r()),t&2&&(o(),b(" ",m(2,1,"HOMEWORK_BUILDER.SPEAKING_REVIEW_BADGE")," "))}function e0(t,c){if(t&1&&(a(0,"option",101),s(1),_(2,"titlecase"),r()),t&2){let e=c.$implicit;p("value",e),o(),g(m(2,2,e))}}function t0(t,c){if(t&1){let e=M();
7a(0,"div",219)(1,"select",220),h(2,e0,3,4,"option",96),r(),v(3,"input",221),_(4,"translate"),a(5,"button",197),x("click",function(){let i=C(e).index,l=d(3).index,u=d(2);return f(u.removeRubricCriterion(l,i))}),s(6,"\xD7"),r()()}if(t&2){let e=c.index,n=d(5);p("formGroupName",e),o(2),p("ngForOf",n.rubricSkills)("ngForTrackBy",n.trackByIndex),o(),p("placeholder",m(4,4,"HOMEWORK_BUILDER.RUBRIC_LABEL_PLACEHOLDER"))}}function n0(t,c){if(t&1){let e=M();a(0,"div",216)(1,"label"),s(2),_(3,"translate"),r(),a(4,"p",85),s(5),_(6,"translate"),r(),a(7,"div",217),h(8,t0,7,6,"div",218),r(),a(9,"button",81),x("click",function(){C(e);let i=d(2).index,l=d(2);return f(l.addRubricCriterion(i))}),s(10),_(11,"translate"),r()()}if(t&2){let e=c.ngIf,n=d(2).index,i=d(2);o(2),g(m(3,6,e==="aiRubricCriteria"?"HOMEWORK_BUILDER.AI_RUBRIC":"HOMEWORK_BUILDER.INSTRUCTOR_RUBRIC")),o(3),g(m(6,8,"HOMEWORK_BUILDER.RUBRIC_HINT")),o(2),p("formArrayName",e),o(),p("ngForOf",i.getRubricCriteria(n).controls)("ngForTrackBy",i.trackByIndex),o(2),b(" ",m(11,10,"HOMEWORK_BUILDER.ADD_RUBRIC_CRITERION")," ")}}function i0(t,c){if(t&1&&(a(0,"span",229),s(1),r()),t&2){let e=c.$implicit;o(),b(" ",e," ")}}function o0(t,c){if(t&1&&(a(0,"div",226)(1,"label"),s(2),_(3,"translate"),r(),a(4,"div",227),h(5,i0,2,1,"span",228),r()()),t&2){let e,n=d(3).$implicit,i=d(2);o(2),g(m(3,3,"HOMEWORK_BUILDER.WORDS")),o(3),p("ngForOf",(e=n.get("words"))==null?null:e.value)("ngForTrackBy",i.trackByIndex)}}function r0(t,c){if(t&1){let e=M();a(0,"div",222)(1,"div",223)(2,"label"),s(3),_(4,"translate"),r(),a(5,"input",224),_(6,"translate"),x("input",function(){C(e);let i=d(2).index,l=d(2);return f(l.syncWordsFromSentence(i))}),r()(),h(7,o0,6,5,"div",225),r()}if(t&2){let e,n=d(2).$implicit;o(3),g(m(4,3,"HOMEWORK_BUILDER.CORRECT_SENTENCE")),o(2),p("placeholder",m(6,5,"HOMEWORK_BUILDER.CORRECT_SENTENCE_PLACEHOLDER")),o(2),p("ngIf",(e=n.get("words"))==null||e.value==null?null:e.value.length)}}function a0(t,c){if(t&1&&(G(0),s(1),q()),t&2){let e=d().ngIf;o(),b(" (",e.count,")")}}function s0(t,c){if(t&1&&(G(0),s(1),q()),t&2){let e=d().ngIf;o(),b(" \xB7 ",e.reason,"")}}function l0(t,c){if(t&1&&(a(0,"span",230),I(),a(1,"svg",231),v(2,"rect",232)(3,"path",233),r(),s(4),_(5,"translate"),h(6,a0,2,1,"ng-container",112)(7,s0,2,1,"ng-container",112),r()),t&2){let e=c.ngIf,n=d(4);p("ngClass","seed-chip--"+n.seedChipBadge(e.kind)),o(4),b(" ",m(5,4,n.seedChipLabelKey(e.kind)),""),o(2),p("ngIf",e.count),o(),p("ngIf",e.reason)}}function c0(t,c){if(t&1&&(a(0,"option",101),s(1),r()),t&2){let e,n,i=c.$implicit;p("value",(e=i.get("sectionId"))==null?null:e.value),o(),b(" ",((n=i.get("titleFr"))==null?null:n.value)||((n=i.get("titleEn"))==null?null:n.value)||((n=i.get("sectionId"))==null?null:n.value)," ")}}function d0(t,c){if(t&1&&(a(0,"div",54)(1,"label"),s(2),_(3,"translate"),r(),a(4,"select",234)(5,"option",148),s(6),_(7,"translate"),r(),h(8,c0,2,2,"option",96),r()()),t&2){let e=d(4);o(2),g(m(3,4,"HOMEWORK_BUILDER.SECTION")),o(4),g(m(7,6,"HOMEWORK_BUILDER.SECTION_UNASSIGNED")),o(2),p("ngForOf",e.sectionForms.controls)("ngForTrackBy",e.trackByIndex)}}function p0(t,c){if(t&1){let e=M();a(0,"button",237),x("click",function(){let i=C(e).$implicit,l=d(3).index,u=d(2);return f(u.moveQuestionToPart(l,i.sectionId))}),s(1),_(2,"translate"),r()}if(t&2){let e,n,i=c.$implicit,l=d(3),u=l.$implicit,O=l.index,E=d(2);y("active",((e=u.get("sectionId"))==null?null:e.value)===i.sectionId),p("disabled",!E.canMoveToPart(O,i.sectionId)&&((n=u.get("sectionId"))==null?null:n.value)!==i.sectionId),o(),b(" ",m(2,4,i.labelKey)," ")}}function _0(t,c){t&1&&(a(0,"p",85),s(1),_(2,"translate"),r()),t&2&&(o(),g(m(2,1,"HOMEWORK_BUILDER.MOVE_LOCKED_HINT")))}function m0(t,c){if(t&1&&(a(0,"div",54)(1,"label"),s(2),_(3,"translate"),r(),a(4,"div",235),h(5,p0,3,6,"button",236),r(),h(6,_0,3,3,"p",82),r()),t&2){let e=d(4);o(2),g(m(3,4,"HOMEWORK_BUILDER.MOVE_TO_PART")),o(3),p("ngForOf",e.parts)("ngForTrackBy",e.trackByIndex),o(),p("ngIf",e.hasSubmissions)}}function g0(t,c){if(t&1&&(a(0,"option",101),s(1),_(2,"translate"),r()),t&2){let e=c.$implicit;p("value",e.value),o(),b(" ",m(2,2,e.labelKey)," ")}}function u0(t,c){t&1&&(a(0,"p",60),s(1),_(2,"translate"),r()),t&2&&(o(),b(" ",m(2,1,"HOMEWORK_BUILDER.ERROR_SKILL_REQUIRED")," "))}
7function C0(t,c){if(t&1&&(a(0,"option",101),s(1),r()),t&2){let e=c.$implicit;p("value",e.value),o(),b(" ",e.label," ")}}function f0(t,c){if(t&1&&(a(0,"option",101),s(1),r()),t&2){let e=c.$implicit;p("value",e),o(),g(e)}}function h0(t,c){if(t&1){let e=M();a(0,"div",117),h(1,Yd,1,6,"app-submission-requirements-panel",118),a(2,"div",54)(3,"label"),s(4),_(5,"translate"),r(),a(6,"select",119),x("change",function(){C(e);let i=d().index,l=d(2);return f(l.onTypeChange(i))}),h(7,Xd,3,4,"option",96),r()(),h(8,Jd,11,13,"div",120)(9,Zd,1,3,"app-error-correction-builder",121)(10,np,9,10,"div",122),a(11,"div",123)(12,"div",92)(13,"div",54)(14,"label"),s(15),_(16,"translate"),r(),a(17,"select",124),h(18,ip,3,4,"option",96),r()(),h(19,op,6,6,"div",122),r(),h(20,rp,6,6,"div",122)(21,Cp,11,10,"div",122)(22,fp,2,4,"img",125)(23,hp,1,1,"audio",126)(24,xp,2,4,"iframe",127)(25,bp,1,1,"video",128),r(),h(26,Op,7,7,"div",122)(27,Sp,26,23,"div",129),a(28,"div",130)(29,"label"),s(30),_(31,"translate"),r(),a(32,"div",131)(33,"input",132),_(34,"translate"),x("input",function(){C(e);let i=d().index,l=d(2);return f(l.onQuestionImageUrlTyped(i))}),r(),a(35,"label",133),s(36),_(37,"translate"),a(38,"input",134),x("change",function(i){C(e);let l=d().index,u=d(2);return f(u.onQuestionImageSelected(i,l))}),r()(),h(39,wp,3,3,"button",135),r(),a(40,"p",136),s(41),_(42,"translate"),r(),a(43,"div",137)(44,"p",138),s(45),r(),h(46,Ap,5,4,"ng-container",112),r(),h(47,Tp,2,4,"img",125),r(),h(48,Dp,7,7,"div",122)(49,Hp,16,14,"div",122)(50,qp,6,5,"div",122)(51,$p,7,6,"div",139)(52,jp,11,13,"div",140)(53,Xp,12,11,"div",140)(54,Jp,3,3,"div",141)(55,Zp,3,3,"div",141)(56,n0,12,12,"div",142)(57,r0,8,7,"div",143),a(58,"div",144)(59,"div",145)(60,"label"),s(61),_(62,"translate"),r(),h(63,l0,8,6,"span",146),r(),a(64,"div",92),h(65,d0,9,8,"div",122)(66,m0,7,6,"div",122),a(67,"div",54)(68,"label"),s(69),_(70,"translate"),r(),a(71,"select",147),x("change",function(){C(e);let i=d().index,l=d(2);return f(l.onSkillChange(i))}),a(72,"option",148),s(73),_(74,"translate"),r(),h(75,g0,3,4,"option",96),r(),h(76,u0,3,3,"p",56),r(),a(77,"div",54)(78,"label"),s(79),_(80,"translate"),r(),a(81,"select",149)(82,"option",148),s(83),_(84,"translate"),r(),h(85,C0,2,2,"option",96),r()(),a(86,"div",58)(87,"label"),s(88),_(89,"translate"),r(),a(90,"select",150)(91,"option",148),s(92,"\u2014"),r(),h(93,f0,2,2,"option",96),r()()(),a(94,"div",54)(95,"label"),s(96),_(97,"translate"),r(),v(98,"input",151),_(99,"translate"),r(),a(100,"div",54)(101,"label"),s(102),_(103,"translate"),r(),v(104,"textarea",152),_(105,"translate"),r(),a(106,"label",153),v(107,"input",154),a(108,"span"),s(109),_(110,"translate"),r()()()()}if(t&2){let e,n,i,l,u,O,E,V,L,J,Z,ee,rt,tn,Mi,Pi=d(),se=Pi.$implicit,Te=Pi.index,X=d(2);o(),p("ngIf",X.requirementKind(se.value)),o(3),g(m(5,61,"HOMEWORK_BUILDER.QUESTION_TYPE")),o(3),p("ngForOf",X.questionTypesFor(Te))("ngForTrackBy",X.trackByIndex),o(),p("ngIf",((e=se.get("type"))==null?null:e.value)==="fill_blank"),o(),p("ngIf",X.usesCorrectionFormat(Te)),o(),p("ngIf",!X.usesCorrectionFormat(Te)),o(5),g(m(16,63,"HOMEWORK_BUILDER.MEDIA_OPTIONAL")),o(3),p("ngForOf",X.mediaKinds)("ngForTrackBy",X.trackByIndex),o(),p("ngIf",(n=se.get("mediaKind"))==null?null:n.value),o(),p("ngIf",((i=se.get("mediaKind"))==null?null:i.value)==="youtube"||((i=se.get("mediaKind"))==null?null:i.value)==="external_url"),o(),p("ngIf",((l=se.get("mediaKind"))==null?null:l.value)==="image"||((l=se.get("mediaKind"))==null?null:l.value)==="audio"||((l=se.get("mediaKind"))==null?null:l.value)==="video"),o(),p("ngIf",((u=se.get("mediaKind"))==null?null:u.value)==="image"&&X.getPreviewMediaUrl(se)),o(),p("ngIf",((O=se.get("mediaKind"))==null?null:O.value)==="audio"&&X.getPreviewMediaUrl(se)),o(),p("ngIf",X.isPreviewYoutubeVideo(se)&&X.getPreviewVideoEmbedUrl(se)),o(),p("ngIf",((E=se.get("mediaKind"))==null?null:E.value)==="video"&&!X.isPreviewYoutubeVideo(se)&&X.getPreviewMediaUrl(se)),o(),p("ngIf",X.isLongAnswerQuestion(Te)),o(),p("ngIf",((V=se.get("type"))==null?null:V.value)==="dialogue"),o(3),g(m(31,65,"HOMEWORK_BUILDER.QUESTION_IMAGE")),o(3),p("placeholder",m(34,67,"HOMEWORK_BUILDER.STORAGE_URL_PLACEHOLDER")),o(3),b(" ",m(37,69,"HOMEWORK_BUILDER.UPLOAD")," "),o(2),R("accept",X.uploadAccept("image")),o(),p("ngIf",(L=se.get("imageUrl"))==null?null:L.value),o(2),g(m(42,71,"HOMEWORK_BUILDER.QUESTION_IMAGE_HINT")),o(2),R("data-testid","upload-state-questionImage-"+Te),o(2),g(X.uploadLimitLabel("image")),o(),p("ngIf",X.uploadState(Te,"questionImage")),o(),p("ngIf",X.getPreviewQuestionImageUrl(se)),o(),p("ngIf",((J=se.get("type"))==null?null:J.value)==="reading"),o(),p("ngIf",((Z=se.get("type"))==null?null:Z.value)==="listening"),o(),p("ngIf",X.isComprehe
7nsionQuestion(Te)),o(),p("ngIf",X.isChoiceQuestion(Te)),o(),p("ngIf",X.isTrueFalseQuestion(Te)),o(),p("ngIf",X.isExpectedAnswerQuestion(Te)),o(),p("ngIf",((ee=se.get("type"))==null?null:ee.value)==="writing"||X.isLongAnswerQuestion(Te)||((ee=se.get("type"))==null?null:ee.value)==="dialogue"),o(),p("ngIf",((rt=se.get("type"))==null?null:rt.value)==="speaking"),o(),p("ngIf",X.questionRubricArrayName(Te)),o(),p("ngIf",((tn=se.get("type"))==null?null:tn.value)==="sentence_order"||((tn=se.get("type"))==null?null:tn.value)==="words_order"),o(4),g(m(62,73,"HOMEWORK_BUILDER.DIAGNOSTIC_TAGS")),o(2),p("ngIf",X.getSeedChip((Mi=se.get("questionId"))==null?null:Mi.value)),o(2),p("ngIf",X.isLegacyFlat&&X.hasSections),o(),p("ngIf",X.usesFixedParts),o(3),g(m(70,75,"HOMEWORK_BUILDER.SKILL")),o(4),g(m(74,77,"HOMEWORK_BUILDER.SKILL_CHOOSE")),o(2),p("ngForOf",X.questionSkills)("ngForTrackBy",X.trackByIndex),o(),p("ngIf",X.showQuestionControlError(Te,"skill")),o(3),g(m(80,79,"HOMEWORK_BUILDER.SUB_SKILL")),o(2),p("disabled",!X.subSkillOptions(Te).length),o(2),b(" ",m(84,81,X.subSkillOptions(Te).length?"HOMEWORK_BUILDER.SUB_SKILL_CHOOSE":"HOMEWORK_BUILDER.SUB_SKILL_PICK_SKILL_FIRST")," "),o(2),p("ngForOf",X.subSkillOptions(Te))("ngForTrackBy",X.trackByIndex),o(3),g(m(89,83,"HOMEWORK_BUILDER.CEFR_LEVEL")),o(5),p("ngForOf",X.cefrLevelOptions)("ngForTrackBy",X.trackByIndex),o(3),g(m(97,85,"HOMEWORK_BUILDER.HINT")),o(2),p("placeholder",m(99,87,"HOMEWORK_BUILDER.HINT_PLACEHOLDER")),o(4),g(m(103,89,"HOMEWORK_BUILDER.EXPLANATION")),o(2),p("placeholder",m(105,91,"HOMEWORK_BUILDER.EXPLANATION_PLACEHOLDER")),o(5),g(m(110,93,"HOMEWORK_BUILDER.FLASHCARD_ELIGIBLE"))}}function x0(t,c){if(t&1){let e=M();a(0,"div",102)(1,"div",103),x("click",function(){let i=C(e).index,l=d(2);return f(l.toggleRow(i))}),a(2,"span",104),s(3),r(),a(4,"div",105)(5,"div",106),s(6),r(),a(7,"div",107),s(8),r()(),a(9,"div",108),x("click",function(i){return C(e),f(i.stopPropagation())}),a(10,"span",109),s(11),r(),a(12,"span",110),s(13),_(14,"translate"),r(),h(15,Kd,2,0,"button",111),r()(),h(16,Qd,2,1,"ng-container",112)(17,h0,111,95,"div",113),r()}if(t&2){let e,n,i=c.$implicit,l=c.index,u=d(2);y("question-card--manual",u.isManualReviewType(l)),p("formGroupName",l)("hidden",u.usesFixedParts&&!u.isInActivePart(l)),R("data-question-index",l)("data-question-id",(e=i.get("questionId"))==null?null:e.value),o(),y("question-row--open",u.isRowOpen(l)),R("aria-expanded",u.isRowOpen(l)),o(2),g(u.questionLabelAt(l)),o(3),g(u.rowTitle(l)),o(2),g(u.rowSubtitle(l)),o(2),y("points-fixed--nonstandard",!u.hasStandardPoints(l)),p("title",u.pointsHint(l)),o(),g(((n=i.get("points"))==null?null:n.value)||1),o(2),g(m(14,20,"HOMEWORK_BUILDER.PTS")),o(2),p("ngIf",u.questions.length>1),o(),p("ngIf",u.getQuestionErrors(l)),o(),p("ngIf",u.isRowOpen(l))}}function b0(t,c){if(t&1){let e=M();a(0,"button",238),x("click",function(){C(e);let i=d(2);return f(i.togglePicker())}),s(1),_(2,"translate"),r()}t&2&&(o(),b(" ",m(2,1,"HOMEWORK_BUILDER.ADD_QUESTION")," "))}function v0(t,c){if(t&1){let e=M();a(0,"div",245)(1,"p")(2,"strong"),s(3),_(4,"translate"),r()(),a(5,"div",246)(6,"button",242),x("click",function(){C(e);let i=d(3);return f(i.addPendingTypeTo("partB"))}),s(7),_(8,"translate"),r(),a(9,"button",242),x("click",function(){C(e);let i=d(3);return f(i.addPendingTypeTo("partC"))}),s(10),_(11,"translate"),r(),a(12,"button",242),x("click",function(){C(e);let i=d(3);return f(i.dismissGraderWarning())}),s(13),_(14,"translate"),r()()()}if(t&2){let e=c.ngIf,n=d(3);o(3),g(B(4,4,"HOMEWORK_BUILDER.PICKER_NEEDS_GRADER",D(13,Od,n.getQuestionTypeLabel(e)))),o(4),b(" ",m(8,7,"HOMEWORK_BUILDER.PICKER_MOVE_TO_B")," "),o(3),b(" ",m(11,9,"HOMEWORK_BUILDER.PICKER_MOVE_TO_C")," "),o(3),b(" ",m(14,11,"HOMEWORK_BUILDER.PICKER_ANOTHER_TYPE")," ")}}function O0(t,c){if(t&1){let e=M();a(0,"button",249),x("click",function(){let i=C(e).$implicit,l=d(4);return f(l.pickType(i.value))}),a(1,"span",250),s(2),_(3,"translate"),r(),a(4,"span",251),s(5),_(6,"translate"),r()()}if(t&2){let e=c.$implicit,n=d(4);y("type-card--needs-grader",n.needsGraderWarning(e.value)),o(2),g(m(3,4,e.labelKey)),o(3),g(m(6,6,e.descKey))}}function M0(t,c){if(t&1&&(a(0,"div",247),h(1,O0,7,8,"button",248),r()),t&2){let e=d(3);o(),p("ngForOf",e.pickerTypes())("ngForTrackBy",e.trackByIndex)}}function P0(t,c){if(t&1){let e=M();a(0,"section",239)(1,"header",240)(2,"span",241),s(3),_(4,"translate"),r(),a(5,"button",242),x("click",function(){C(e);let i=d(2);return f(i.togglePicker())}),s(6),_(7,"translate"),r()(),h(8,v0,15,15,"div",243)(9,M0,2,2,"div",244),r()}if(t&2){let e=d(2);o(3),g(m(4,4,"HOMEWORK_BUILDER.PICKER_PROMPT")),o(3),b(" ",m(7,6,"COMMON.CANCEL")," "),o(2),p("ngIf",e.pen
7dingUngradableType),o(),p("ngIf",!e.pendingUngradableType)}}function S0(t,c){if(t&1&&(G(0),s(1),q()),t&2){let e=d(3);o(),b(" (",e.pendingSeedCount,")")}}function w0(t,c){if(t&1){let e=M();a(0,"div",252)(1,"button",253),x("click",function(){C(e);let i=d(2);return f(i.seedRemediationCards())}),s(2),_(3,"translate"),h(4,S0,2,1,"ng-container",112),r(),a(5,"span",254),s(6),_(7,"translate"),r()()}if(t&2){let e=d(2);o(),p("disabled",e.seeding||e.pendingSeedCount===0),o(),b(" ",m(3,4,e.seeding?"HOMEWORK_BUILDER.SEEDING":"HOMEWORK_BUILDER.SEED_CARDS")," "),o(2),p("ngIf",!e.seeding&&e.pendingSeedCount),o(2),g(m(7,6,"HOMEWORK_BUILDER.SEED_HINT"))}}function E0(t,c){if(t&1){let e=M();a(0,"button",255),x("click",function(){C(e);let i=d(2);return f(i.onSubmit())}),s(1),_(2,"translate"),r()}if(t&2){let e=d(2);p("disabled",e.submitting),o(),g(m(2,2,"HOMEWORK_BUILDER.SAVE_DRAFT"))}}function I0(t,c){if(t&1&&v(0,"div",256),t&2){let e,n=d(2);p("innerHTML",(e=n.form.get("description"))==null?null:e.value,Ee)}}function y0(t,c){if(t&1&&(a(0,"div",257)(1,"span",258),s(2),_(3,"translate"),r(),a(4,"span",259),s(5),_(6,"translate"),r()()),t&2){let e=d(2);o(2),g(m(3,3,e.activePartLabelKey())),o(3),N(" ",e.countForPart(e.activePart)," ",m(6,5,e.countForPart(e.activePart)===1?"HOMEWORK_BUILDER.QUESTION_COUNT_ONE":"HOMEWORK_BUILDER.QUESTION_COUNT_MANY")," ")}}function k0(t,c){t&1&&(a(0,"span",277),s(1),_(2,"translate"),r()),t&2&&(o(),b(" ",m(2,1,"HOMEWORK_BUILDER.PREVIEW_EDITING")," "))}function A0(t,c){if(t&1&&(a(0,"div",278),v(1,"img",279),_(2,"translate"),r()),t&2){let e=d().$implicit,n=d(2);o(),p("src",n.getPreviewQuestionImageUrl(e),le)("alt",m(2,2,"HOMEWORK_BUILDER.QUESTION_IMAGE_ALT"))}}function T0(t,c){if(t&1&&(v(0,"img",279),_(1,"translate")),t&2){let e=c.ngIf;p("src",e,le)("alt",m(1,2,"HOMEWORK_BUILDER.QUESTION_MEDIA_PREVIEW"))}}function R0(t,c){if(t&1&&v(0,"audio",285),t&2){let e=c.ngIf;p("src",e,le)}}function D0(t,c){if(t&1&&(v(0,"iframe",286),_(1,"translate")),t&2){let e=d(2).$implicit,n=d(2);p("src",n.getPreviewVideoEmbedUrl(e),ft)("title",m(1,2,"HOMEWORK_BUILDER.QUESTION_VIDEO_PREVIEW"))}}function B0(t,c){if(t&1&&v(0,"video",285),t&2){let e=c.ngIf;p("src",e,le)}}function L0(t,c){if(t&1&&(a(0,"div",287),s(1),r()),t&2){let e=d(2).$implicit,n=d(2);o(),b(" ",n.getPreviewMediaLabel(e)," ")}}function N0(t,c){if(t&1&&(a(0,"div",280),h(1,T0,2,4,"img",281)(2,R0,1,1,"audio",282)(3,D0,2,4,"iframe",283)(4,B0,1,1,"video",282)(5,L0,2,1,"div",284),r()),t&2){let e,n,i,l,u=d().$implicit,O=d(2);o(),p("ngIf",((e=u.get("mediaKind"))==null?null:e.value)==="image"&&O.getPreviewMediaUrl(u)),o(),p("ngIf",((n=u.get("mediaKind"))==null?null:n.value)==="audio"&&O.getPreviewMediaUrl(u)),o(),p("ngIf",O.isPreviewYoutubeVideo(u)&&O.getPreviewVideoEmbedUrl(u)),o(),p("ngIf",((i=u.get("mediaKind"))==null?null:i.value)==="video"&&!O.isPreviewYoutubeVideo(u)&&O.getPreviewMediaUrl(u)),o(),p("ngIf",((l=u.get("mediaKind"))==null?null:l.value)==="external_url"||((l=u.get("mediaKind"))==null?null:l.value)==="youtube"&&!O.isPreviewYoutubeVideo(u))}}function V0(t,c){if(t&1&&v(0,"div",288),t&2){let e,n=d().$implicit;p("innerHTML",(e=n.get("passage"))==null?null:e.value,Ee)}}function F0(t,c){if(t&1&&v(0,"app-error-correction-question",290),t&2){let e,n=d().ngIf,i=d().$implicit;p("questionText",((e=i.get("questionText"))==null?null:e.value)||"")("wordBank",n)}}function U0(t,c){if(t&1&&v(0,"app-fill-blank-question",290),t&2){let e,n=d().ngIf,i=d().$implicit;p("questionText",((e=i.get("questionText"))==null?null:e.value)||"")("wordBank",n)}}function H0(t,c){if(t&1&&(G(0),h(1,F0,1,2,"app-error-correction-question",289)(2,U0,1,2,"ng-template",null,0,ke),q()),t&2){let e=pe(3),n=d().index,i=d(2);o(),p("ngIf",i.usesCorrectionFormat(n))("ngIfElse",e)}}function G0(t,c){if(t&1&&(v(0,"div",291),_(1,"translate")),t&2){let e,n=d().$implicit;p("innerHTML",((e=n.get("questionText"))==null?null:e.value)||m(1,1,"HOMEWORK_BUILDER.QUESTION_TEXT_PLACEHOLDER"),Ee)}}function q0(t,c){if(t&1&&v(0,"div",292),t&2){let e,n=d().$implicit;p("innerHTML",(e=n.get("instructions"))==null?null:e.value,Ee)}}function W0(t,c){if(t&1&&(a(0,"div",295),v(1,"span",296),a(2,"span"),s(3),_(4,"translate"),r()()),t&2){let e,n=c.$implicit;o(3),g(((e=n.get("text"))==null?null:e.value)||m(4,1,"HOMEWORK_BUILDER.OPTION"))}}function z0(t,c){if(t&1&&(a(0,"div",293),h(1,W0,5,3,"div",294),r()),t&2){let e=d().index,n=d(2);o(),p("ngForOf",n.getOptions(e).controls)("ngForTrackBy",n.trackByOptionKey)}}function K0(t,c){t&1&&(a(0,"div",293)(1,"div",295),v(2,"span",296),a(3,"span"),s(4),_(5,"translate"),r()(),a(6,"div",295),v(7,"span",296),a(8,"span"),s(9),_(10,"translate"),r()()()),t&2&&(o(4),g(m(5,2,"HOMEWORK_BUILDER.TRUE")),o(5),g(m(10,4,"HOMEWORK_BUILDER.FALSE")))}function $0(t,c){t&1&&(v(0,"input",297),_(1,"translate")),t&2&&p("placeholder",m(1,1,"HOMEWORK_BUILDER.STUDENT_ANSWER_PLACEHOLDER"))}
7function j0(t,c){if(t&1&&(a(0,"span",300),s(1),r()),t&2){let e=c.$implicit;o(),b(" ",e," ")}}function Q0(t,c){if(t&1&&(a(0,"div",298),h(1,j0,2,1,"span",299),r()),t&2){let e=d().index,n=d(2);o(),p("ngForOf",n.getPreviewWords(e))("ngForTrackBy",n.trackByIndex)}}function Y0(t,c){if(t&1&&(a(0,"div",303)(1,"span"),s(2),r(),a(3,"p"),s(4),r()()),t&2){let e=c.$implicit;y("preview-dialogue-line--b",e.speakerKey==="B"),o(2),g(e.speaker),o(2),g(e.text)}}function X0(t,c){if(t&1&&(a(0,"div",301),h(1,Y0,5,4,"div",302),r()),t&2){let e=d().index,n=d(2);o(),p("ngForOf",n.getPreviewDialogueLines(e))("ngForTrackBy",n.trackByIndex)}}function J0(t,c){t&1&&(a(0,"button",304),s(1),_(2,"translate"),r()),t&2&&(o(),b(" ",m(2,1,"HOMEWORK_BUILDER.RECORD_ANSWER")," "))}function Z0(t,c){t&1&&(v(0,"textarea",305),_(1,"translate")),t&2&&p("placeholder",m(1,1,"HOMEWORK_BUILDER.STUDENT_RESPONSE_PLACEHOLDER"))}function e_(t,c){if(t&1&&(a(0,"article",260)(1,"div",261)(2,"span",262),s(3),r(),a(4,"span",263),s(5),r(),h(6,k0,3,3,"span",264),a(7,"span",265),s(8),r()(),h(9,A0,3,4,"div",266)(10,N0,6,5,"div",267)(11,V0,1,1,"div",268)(12,H0,4,2,"ng-container",112)(13,G0,2,3,"div",269)(14,q0,1,1,"div",270)(15,z0,2,2,"div",271)(16,K0,11,6,"div",271)(17,$0,2,3,"input",272)(18,Q0,2,2,"div",273)(19,X0,2,2,"div",274)(20,J0,3,3,"button",275)(21,Z0,2,3,"textarea",276),r()),t&2){let e,n,i,l,u,O,E,V,L,J=c.$implicit,Z=c.index,ee=d(2);y("preview-question-card--focused",ee.isPreviewFocused(Z))("preview-question-card--dimmed",ee.hasFocusedPreview()&&!ee.isPreviewFocused(Z)),p("hidden",ee.usesFixedParts&&!ee.isInActivePart(Z)),R("data-preview-index",Z),o(3),g(ee.questionLabelAt(Z)),o(2),g(ee.getQuestionTypeLabel((e=J.get("type"))==null?null:e.value)),o(),p("ngIf",ee.isPreviewFocused(Z)),o(2),b("",((n=J.get("points"))==null?null:n.value)||1," pts"),o(),p("ngIf",ee.showsQuestionImage(J)),o(),p("ngIf",((i=J.get("mediaKind"))==null?null:i.value)&&((i=J.get("mediaUrl"))==null?null:i.value)),o(),p("ngIf",(l=J.get("passage"))==null?null:l.value),o(),p("ngIf",ee.previewWordBank(Z)),o(),p("ngIf",!ee.previewWordBank(Z)),o(),p("ngIf",(u=J.get("instructions"))==null?null:u.value),o(),p("ngIf",ee.isChoiceQuestion(Z)),o(),p("ngIf",ee.isTrueFalseQuestion(Z)),o(),p("ngIf",ee.isExpectedAnswerQuestion(Z)&&!ee.previewWordBank(Z)),o(),p("ngIf",((O=J.get("type"))==null?null:O.value)==="sentence_order"||((O=J.get("type"))==null?null:O.value)==="words_order"),o(),p("ngIf",((E=J.get("type"))==null?null:E.value)==="dialogue"),o(),p("ngIf",((V=J.get("type"))==null?null:V.value)==="speaking"),o(),p("ngIf",((L=J.get("type"))==null?null:L.value)==="writing"||ee.isLongAnswerQuestion(Z)||((L=J.get("type"))==null?null:L.value)==="dialogue")}}function t_(t,c){if(t&1){let e=M();a(0,"form",18),x("ngSubmit",function(){C(e);let i=d();return f(i.onSubmit())}),h(1,Ed,3,4,"p",19),a(2,"div",20)(3,"section",21)(4,"div",22)(5,"button",23),x("click",function(){C(e);let i=d();return f(i.toggleDetails())}),a(6,"h3"),s(7),_(8,"translate"),r(),h(9,Id,2,1,"span",24),I(),a(10,"svg",25),v(11,"path",26),r()(),h(12,kd,18,13,"div",27),r(),h(13,Ad,4,5,"div",28),F(),a(14,"app-authoring-issue-summary",29),x("focusIssue",function(i){C(e);let l=d();return f(l.goToAuthoringIssue(i))}),r(),h(15,Dd,6,9,"div",30)(16,Vd,5,4,"div",31)(17,zd,11,9,"div",32),a(18,"div",33),h(19,x0,18,22,"div",34),r(),h(20,b0,3,3,"button",35)(21,P0,10,8,"section",36)(22,w0,8,8,"div",37),a(23,"div",38),v(24,"app-save-state",39),a(25,"button",40),x("click",function(){C(e);let i=d();return f(i.goBack())}),s(26),_(27,"translate"),r(),h(28,E0,3,4,"button",41),a(29,"button",42),x("click",function(){C(e);let i=d();return f(i.form.markAllAsTouched())}),s(30),_(31,"translate"),r()()(),a(32,"aside",43),_(33,"translate"),a(34,"div",44)(35,"div",45)(36,"span",46),s(37),_(38,"translate"),r(),a(39,"h3"),s(40),_(41,"translate"),r(),a(42,"p"),s(43),_(44,"translate"),_(45,"translate"),r()(),h(46,I0,1,1,"div",47)(47,y0,7,7,"div",48),a(48,"div",49),h(49,e_,22,23,"article",50),r()()()()()}if(t&2){let e,n,i=d();p("formGroup",i.form),o(),p("ngIf",i.requirementSaveError),o(4),R("aria-expanded",i.detailsExpanded),o(2),g(m(8,36,"HOMEWORK_BUILDER.HOMEWORK_DETAILS")),o(2),p("ngIf",!i.detailsExpanded),o(),y("section-toggle-chevron--open",i.detailsExpanded),o(2),p("ngIf",i.detailsExpanded),o(),p("ngIf",i.gradingModeSummary),o(),p("issues",i.authoringIssues)("saved",i.authoringIssuesSaved),o(),p("ngIf",i.healthIssues()),o(),p("ngIf",i.usesFixedParts),o(),p("ngIf",i.isLegacyFlat),o(2),p("ngForOf",i.questions.controls)("ngForTrackBy",i.trackByIndex),o(),p("ngIf",!i.pickerOpen),o(),p("ngIf",i.pickerOpen),o(),p("ngIf",i.isEditMode),o(2),p("state",i.displayedSaveState)("confirmed",i.saveState==="saved"),o(2),g(m(27,38,"COMMON.CANCEL")),o(2),p("ngIf",!i.isPublished),o(),p("disabled",i.submitting||i.healthIssues().length>0),o(),b(" ",m(31,40,i.submitting?"HOMEWORK_BUILDER.SAVING":i.isPublished?"HOMEWORK_BUILDER.SAVE_CHANGES":"HOMEWORK_BUILDER.PUBLISH")," "),o(2),R("aria-label",m(33,42,"HOMEWORK_BUILDER.STUDENT_PREVIEW_ARIA")),o(5),g(m(38,44,"HOMEWORK_BUILDER.STUDENT_PREVIEW")),o(3),g(((e=i.form.get("title"))==null?null:e.value)||m(41,46,"HOMEWORK_BUILDER.UNTITLED_HOMEWORK")),o(3),Et(" ",i.questions.length," ",m(44,48,i.questions.length===1?"HOMEWORK_BUILDER.QUESTION_COUNT_ONE":"HOMEWORK_BUILDER.QUESTION_COUNT_MANY")," \xB7 ",i.previewTotalPoints," ",m(45,50,"HOMEWORK_BUILDER.PTS")," "),o(3),p("ngIf",(n=i.form.get("description"))==null?null:n.value),o(),p("ngIf",i.usesFixedParts),o(2),p("ngForOf",i.questions.controls)("ngForTrackBy",i.trackByIndex)}}function n_(t,c){if(t&1){let e=M();
7a(0,"div",306)(1,"app-authoring-conflict-dialog",307),x("choice",function(i){C(e);let l=d();return f(l.onConflictChoice(i))}),r()()}if(t&2){let e=d();o(),p("localQuestions",e.conflictLocalQuestions)}}function i_(t,c){if(t&1){let e=M();a(0,"div",306)(1,"app-unsaved-changes-dialog",308),x("choice",function(i){C(e);let l=d();return f(l.onUnsavedChoice(i))}),r()()}t&2&&(o(),p("canSave",!1))}var o_=30,r_=["writing","speaking","long_answer","dialogue"],a_=["fill_blank","mcq","shortAnswer","true_false","words_order","listening","reading","imageQuestion","sentence_order","writing","speaking","long_answer","dialogue"],s_=["writing","speaking","long_answer","dialogue","fill_blank","mcq","shortAnswer","true_false","words_order","listening","reading","imageQuestion","sentence_order"],_i=(()=>{class t{get canEditRequirements(){return this.auth?.isAdmin===!0||this.auth?.user?.isAdmin===!0}hasStandardPoints(e){let n=this.questions.at(e);return kr(n.get("type")?.value,n.get("questionText")?.value||"",Number(n.get("points")?.value)||0,n.get("sectionId")?.value||"")}pointsHint(e){return this.hasStandardPoints(e)?this.t("HOMEWORK_BUILDER.POINTS_FIXED_HINT"):this.t("HOMEWORK_BUILDER.POINTS_NONSTANDARD_HINT",{standard:this.standardPointsAt(e)})}normalisePoints(e){this.questions.at(e).patchValue({points:this.standardPointsAt(e)})}standardPointsAt(e){let n=this.questions.at(e);return Ln(n.get("type")?.value,n.get("questionText")?.value||"",n.get("sectionId")?.value||"")}onQuestionTextChanged(e){let n=this.questions.at(e);n.get("type")?.value==="fill_blank"&&n.patchValue({points:this.standardPointsAt(e)},{emitEvent:!1})}usesCorrectionFormat(e){let n=this.questions.at(e);return n.get("type")?.value!=="fill_blank"?!1:this.correctionFormat[e]!==void 0?this.correctionFormat[e]:!!bn(n.get("questionText")?.value||"")}setCorrectionFormat(e,n){this.correctionFormat[e]=n}applyCorrectionDraft(e,n){let i=this.questions.at(e);i.patchValue({questionText:n.questionText},{emitEvent:!1}),i.get("expectedAnswers").clear({emitEvent:!1}),n.expectedAnswers.forEach(u=>this.addExpectedAnswer(i,u)),this.onQuestionTextChanged(e)}subSkillOptions(e){return Ar(this.questions.at(e).get("skill")?.value)}onSkillChange(e){let n=this.questions.at(e),i=String(n.get("subSkill")?.value||"");if(!i)return;this.subSkillOptions(e).some(u=>u.value===i)||n.patchValue({subSkill:""})}showQuestionControlError(e,n){return this.isInvalidAfterInteraction(this.questions.at(e).get(n))}get gradingModeSummary(){if(this.questions.length===0)return null;let e=this.questions.controls.map(l=>l.get("gradedBy")?.value),n=e.some(l=>l==="auto"),i=e.some(l=>l==="instructor");return n&&i?{label:"HOMEWORK_BUILDER.GRADING_MIXED",badge:"blue"}:n?{label:"HOMEWORK_BUILDER.GRADING_AUTO",badge:"green"}:{label:"HOMEWORK_BUILDER.GRADING_INSTRUCTOR",badge:"amber"}}get previewTotalPoints(){return this.questions.controls.reduce((e,n)=>e+Number(n.get("points")?.value||0),0)}get displayHomeworkTitle(){return(this.form?.get("title")?.value||"").trim()}get displayedSaveState(){return this.submitting?"saving":this.saveState==="saved"||this.saveState==="unconfirmed"?this.saveState:this.form?.dirty?"unsaved":"idle"}isManualReviewType(e){return this.questions.at(e).get("gradedBy")?.value==="instructor"}constructor(e,n,i,l,u,O,E,V,L,J=null){this.fb=e,this.route=n,this.homeworkService=i,this.sanitizer=l,this.translate=u,this.toaster=O,this.navigationHistory=E,this.router=V,this.hostElement=L,this.auth=J,this.destroy$=new ve,this.homeworkId=null,this.draftHomeworkId=null,this.isEditMode=!1,this.loading=!1,this.submitting=!1,this.activePart=Ft[0].sectionId,this.hasSubmissions=!1,this.isLegacyFlat=!1,this.isPublished=!1,this.requirementSaveError=null,this.authoringIssues=[],this.authoringIssuesSaved=null,this.saveState="idle",this.conflictDialogOpen=!1,this.conflictSaveBlocked=!1,this.conflictLocalQuestions=[],this.unsavedDialogOpen=!1,this.pendingLeaveObserver=null,this.uploadStates={},this.currentRevision=0,this.saveIdempotencyKey=Xt(),this.requirementKind=qo,this.questionTypes=[{value:"mcq",labelKey:"HOMEWORK_BUILDER.TYPE_MCQ",descKey:"HOMEWORK_BUILDER.TYPE_DESC_MCQ"},{value:"shortAnswer",labelKey:"HOMEWORK_BUILDER.TYPE_SHORT_ANSWER",descKey:"HOMEWORK_BUILDER.TYPE_DESC_SHORT_ANSWER"},{value:"imageQuestion",labelKey:"HOMEWORK_BUILDER.TYPE_IMAGE_QUESTION",descKey:"HOMEWORK_BUILDER.TYPE_DESC_IMAGE_QUESTION"},{value:"reading",labelKey:"HOMEWORK_BUILDER.TYPE_READING",descKey:"HOMEWORK_BUILDER.TYPE_DESC_READING"},{value:"listening",labelKey:"HOMEWORK_BUILDER.TYPE_LISTENING",descKey:"HOMEWORK_BUILDER.TYPE_DESC_LISTENING"},{value:"sentence_order",labelKey:"HOMEWORK_BUILDER.TYPE_SENTENCE_ORDER",descKey:"HOMEWORK_BUILDER.TYPE_DESC_SENTENCE_ORDER"},{value:"writing",labelKey:"HOMEWORK_BUILDER.TYPE_WRITING",descKey:"HOMEWORK_BUILDER.TYPE_DESC_WRITING"},{value:"speaking",labelKey:"HOMEWORK_BUILDER.TYPE_SPEAKING",descKey:"HOMEWORK_BUILDER.TYPE_DESC_SPEAKING"},{value:"true_false",labelKey:"HOMEWORK_BUILDER.TYPE_TRUE_FALSE",descKey:"HOMEWORK_BUILDER.TYPE_DESC_TRUE_FALSE"},{value:"fill_blank",labelKey:"HOMEWORK_BUILDER.TYPE_FILL_BLANK",descKey:"HOMEWORK_BUILDER.TYPE_DESC_FILL_BLANK"},{value:"long_answer",labelKey:"HOMEWORK_BUILDER.TYPE_LONG_ANSWER",descKey:"HOMEWORK_BUILDER.TYPE_DESC_LONG_ANSWER"},{value:"words_order",labelKey:"HOMEWORK_BUILDER.TYPE_WORDS_ORDER",descKey:"HOMEWORK_BUILDER.TYPE_DESC_WORDS_ORDER"},{value:"dialogue",labelKey:"HOMEWORK_BUILDER.TYPE_DIALOGUE",descKey:"HOMEWORK_BUILDER.TYPE_DESC_DIALOGUE"}],this.alwaysManualTypes=["writing","speaking","long_answer","dialogue"],this.questionSkills=yr.map(Z=>({value:Z,labelKey:`HOMEWORK_BUILDER.SKILL_${Z.toUpperCase()}`})),this.correctionFormat={},this.advancedAutoTypes=["true_false","fill_blank","words_order"],this.comprehensionAnswerTypes=[{value:"mcq",labelKey:"HOMEWORK_BUILDER.TYPE_MCQ"},{value:"shortAnswer",labelKey:"HOMEWORK_BUILDER.TYPE_SHORT_ANSWER"},{value:"fill_blank",labelKey:"HOMEWORK_BUILDER.TYPE_FILL_BLANK"},{value:"true_false",labelKey:"HOMEWORK_BUILDER.TYPE_TRUE_FALSE"},{value:"long_answer",labelKey:"HOMEWORK_BUILDER.TYPE_LONG_ANSWER_SHORT"}],this.mediaKinds=[{value:"",labelKey:"HOMEWORK_BUILDER.MEDIA_NONE"},{value:"image",labelKey:"HOMEWORK_BUILDER.MEDIA_IMAGE"},{value:"audio",labelKey:"HOMEWORK_BUILDER.MEDIA_AUDIO"},{value:"video",labelKey:"HOMEWORK_BUILDER.MEDIA_VIDEO"},{value:"youtube",labelKey:"HOMEWORK_BUILDER.MEDIA_YOUTUBE"},{value:"external_url",labelKey:"HOMEWORK_BUILDER.MEDIA_DIRECT_URL"}],this.newWord="",this.sectionTypeOptions=$o,this.correctionModeOptions=jo,this.rubricSkills=hr,this.cefrLevelOptions=["A1.1","A1.2","A2","B1","B2.1","B2.2"],this.seedChips=[],this.seeding=!1,this.seedChipBadge=Dr,this.seedChipLabelKey=Br,this.detailsCollapsed=!1,this.pickerOpen=!1,this.pendingUngradableType=null,this.openRows=new WeakSet}
7ngOnInit(){this.batchId=this.route.snapshot.paramMap.get("batchId")||"",this.levelId=this.route.snapshot.paramMap.get("levelId")||"",this.courseId=this.route.snapshot.queryParamMap.get("courseId")||"",this.sessionId=this.route.snapshot.paramMap.get("sessionId")||"",this.homeworkId=this.route.snapshot.paramMap.get("homeworkId")||null,this.isEditMode=!!this.homeworkId,this.form=this.fb.group({title:["",S.required],description:[""],dueDate:[""],sections:this.fb.array([]),questions:this.fb.array([])}),this.isEditMode?this.loadHomework():(this.installFixedParts([]),this.addQuestion())}ngOnDestroy(){this.destroy$.next(),this.destroy$.complete()}get questions(){return this.form.get("questions")}get sectionForms(){return this.form.get("sections")}get hasSections(){return this.sectionForms.length>0}addSection(){let e=this.sectionForms.controls.map(n=>n.get("sectionId")?.value);this.sectionForms.push(this.createSectionGroup(ti(e)))}removeSection(e){let n=this.sectionForms.at(e).get("sectionId")?.value;this.sectionForms.removeAt(e),this.unassignQuestionsFromSection(n),this.resequenceSectionOrders()}moveSection(e,n){if(e===n||n<0||n>=this.sectionForms.length)return;let i=this.sectionForms.at(e);this.sectionForms.removeAt(e),this.sectionForms.insert(n,i),this.resequenceSectionOrders()}onSectionTypeChange(e){let n=this.sectionForms.at(e);n.patchValue({correctionMode:ei(n.get("type")?.value)})}assignQuestionToSection(e,n){this.questions.at(e).patchValue({sectionId:n})}get parts(){return Ft}setActivePart(e){this.activePart=e}isInActivePart(e){return this.partOfQuestion(e)===this.activePart}activePartLabelKey(){return jt(this.activePart)?.labelKey||""}revealFirstInvalidQuestion(){if(!this.usesFixedParts)return;let e=this.questions.controls.findIndex(n=>n.invalid);e!==-1&&this.setActivePart(this.partOfQuestion(e))}countForPart(e){return this.questions.controls.filter((n,i)=>this.partOfQuestion(i)===e).length}get unsortedCount(){return this.countForPart(Mn)}get unsortedPartId(){return Mn}questionTypesFor(e){if(!this.usesFixedParts)return this.questionTypes;let n=jt(this.partOfQuestion(e))?.questionTypes;return n?this.questionTypes.filter(i=>n.includes(i.value)):this.questionTypes}canMoveToPart(e,n){if(this.hasSubmissions)return!1;let i=jt(n)?.questionTypes;return i?i.includes(this.questions.at(e).get("type")?.value):!0}moveQuestionToPart(e,n){this.canMoveToPart(e,n)&&(this.questions.at(e).patchValue({sectionId:n}),this.questions.at(e).patchValue({points:this.standardPointsAt(e)}))}partOfQuestion(e){let n=this.questions.at(e).get("sectionId")?.value;return Wo(n)?n:Mn}get usesFixedParts(){return!this.isLegacyFlat}questionRubricArrayName(e){let n=this.correctionModeForQuestion(e);return n==="ai_assisted"?"aiRubricCriteria":n==="instructor"?"instructorRubricCriteria":null}getRubricCriteria(e){let n=this.questionRubricArrayName(e)||"aiRubricCriteria";return this.questions.at(e).get(n)}addRubricCriterion(e){this.getRubricCriteria(e).push(this.createRubricCriterionGroup())}removeRubricCriterion(e,n){this.getRubricCriteria(e).removeAt(n)}getSeedChip(e){return this.seedChips.find(n=>n.questionId===e)}get pendingSeedCount(){return di(this.seedChips).length}refreshSeedStatus(){let e=this.homeworkId;!this.sessionId||!e||this.homeworkService.getRemediationCardStatus(this.sessionId,e).pipe(U(this.destroy$)).subscribe({next:n=>this.applySeedStatus(n),error:()=>this.applySeedStatus(null)})}seedRemediationCards(){let e=this.homeworkId;if(!this.sessionId||!e||this.seeding)return;let n=di(this.seedChips);this.seeding=!0,this.homeworkService.seedRemediationCards(this.sessionId,e,n).pipe(U(this.destroy$)).subscribe({next:()=>this.onSeedComplete(),error:()=>this.onSeedFailed()})}createQuestionGroup(e){let n=e?.type||"mcq",i=vr(e,n),l=ci(n,e?.gradedBy,i),u=e?.media||{},O=Mr(e?.dialogueData,{defaultSpeakerA:this.defaultSpeakerA,defaultSpeakerB:this.defaultSpeakerB}),E=this.fb.group({questionId:[e?.questionId||Xt()],validationPolicy:[e?.validationPolicy?W({},e.validationPolicy):null],validationPolicyRequired:[e?.validationPolicyRequired===!0||!e?.questionId],type:[n,S.required],answerType:[i],questionText:[e?.questionText||"",S.required],imageUrl:[e?.imageUrl||""],imageId:[e?.imageId||""],points:[e?.points||Ln(n,e?.questionText||"",e?.sectionId||this.defaultSectionIdForNewQuestion()),[S.required,S.min(1)]],gradedBy:[l],options:this.fb.array([]),expectedAnswers:this.fb.array([]),passage:[e?.passage||""],audioUrl:[e?.audioUrl||""],words:[e?.words||[]],c
7orrectOrder:[e?.correctOrder||[]],correctSentence:[e?.correctSentence||Pr(e?.words,e?.correctOrder)],mediaKind:[u.kind||""],mediaSource:[u.source||""],mediaUrl:[u.url||""],mediaStoragePath:[u.storagePath||""],mediaMimeType:[u.mimeType||""],mediaTranscript:[u.transcript||""],instructions:[e?.instructions||""],dialogueData:[e?.dialogueData||null],dialogueSpeakerA:[O.speakerA],dialogueSpeakerB:[O.speakerB],dialogueLines:this.fb.array(O.lines.map(V=>this.createDialogueLineGroup(V))),trueFalseAnswer:[Or(e)],aiRubricCriteria:this.createRubricCriteriaArray(e?.aiRubric),instructorRubricCriteria:this.createRubricCriteriaArray(e?.instructorRubric),sectionId:[e?.sectionId||this.defaultSectionIdForNewQuestion()],skill:[e?.skill||""],subSkill:[e?.subSkill||""],cefrLevel:[e?.cefrLevel||""],hint:[Array.isArray(e?.hints)?e.hints[0]||"":e?.hint||""],explanation:[e?.explanation||""],flashcardEligible:[e?.flashcardEligible===!0]});return Rn(n,i)&&e?.options?e.options.forEach(V=>this.addOption(E,V)):Dn(n,i)&&e?.expectedAnswers&&e.expectedAnswers.forEach(V=>this.addExpectedAnswer(E,V)),Dn(n,i)&&E.get("expectedAnswers").length===0&&this.addExpectedAnswer(E),n==="dialogue"&&this.getDialogueLinesFromGroup(E).length===0&&(this.addDialogueLineToGroup(E,"A"),this.addDialogueLineToGroup(E,"B")),(!e||!e.questionId&&Rn(n,i)&&!e.options)&&(this.addOption(E),this.addOption(E)),E}addQuestion(){let e=this.createQuestionGroup();this.questions.push(e),this.openRows.add(e)}get detailsExpanded(){return!this.detailsCollapsed||this.showControlError("title")}toggleDetails(){this.detailsCollapsed=!this.detailsCollapsed}detailsSummary(){let e=String(this.form.get("title")?.value||"").trim(),n=String(this.form.get("dueDate")?.value||"").trim(),i=e||this.t("HOMEWORK_BUILDER.UNTITLED_HOMEWORK");return n?`${i} \xB7 ${n}`:i}togglePicker(){this.pickerOpen=!this.pickerOpen,this.pendingUngradableType=null}pickerTypes(){let e=this.usesFixedParts?jt(this.activePart)?.questionTypes:null;return[...e?this.questionTypes.filter(i=>e.includes(i.value)):this.questionTypes].sort((i,l)=>this.pickerRank(i.value)-this.pickerRank(l.value))}needsGraderWarning(e){return this.usesFixedParts&&this.activePart==="partA"&&this.alwaysManualTypes.includes(e)}pickType(e){if(this.needsGraderWarning(e)){this.pendingUngradableType=e;return}this.addQuestionOfType(e,this.defaultSectionIdForNewQuestion())}addPendingTypeTo(e){let n=this.pendingUngradableType;n&&(this.activePart=e,this.addQuestionOfType(n,e))}dismissGraderWarning(){this.pendingUngradableType=null}addQuestionOfType(e,n){let i=this.createQuestionGroup({type:e,sectionId:n});this.questions.push(i),this.onTypeChange(this.questions.length-1),this.openRows.add(i),this.pickerOpen=!1,this.pendingUngradableType=null}pickerRank(e){let n=this.activePart==="partA"?a_:s_,i=n.indexOf(e);return i<0?n.length:i}isRowOpen(e){return this.openRows.has(this.questions.at(e))}toggleRow(e){let n=this.questions.at(e);if(this.openRows.has(n)){this.openRows.delete(n);return}this.openRows.add(n),this.revealInPreview(e)}isPreviewFocused(e){return this.isRowOpen(e)}hasFocusedPreview(){return this.questions.controls.some(e=>this.openRows.has(e))}revealInPreview(e){requestAnimationFrame(()=>
7{this.hostElement.nativeElement.querySelector(`[data-preview-index="${e}"]`)?.scrollIntoView({block:"center",behavior:"auto"})})}rowTitle(e){let i=String(this.questions.at(e).get("questionText")?.value||"").split(` 8`).map(l=>l.trim()).find(Boolean);return i?i.length>90?`${i.slice(0,89)}\u2026`:i:this.t("HOMEWORK_BUILDER.ROW_EMPTY")}rowSubtitle(e){let n=this.questions.at(e).get("type")?.value,i=this.getQuestionTypeLabel(n),l=this.rowDetail(e,n);return l?`${i} \xB7 ${l}`:i}rowDetail(e,n){return n==="fill_blank"?this.countLabel("BLANK",this.rowBlankCount(e)):this.isChoiceQuestion(e)||this.isTrueFalseQuestion(e)?this.countLabel("OPTION",this.getOptions(e).length):this.isExpectedAnswerQuestion(e)?this.rowAnswerDetail(e):""}rowAnswerDetail(e){let i=(this.getExpectedAnswers(e).value||[]).filter(l=>String(l??"").trim()).length;return i?this.countLabel("ANSWER",i):this.t("HOMEWORK_BUILDER.ROW_OPEN_ENDED")}rowBlankCount(e){return vt(this.questions.at(e).get("questionText")?.value||"")}countLabel(e,n){let i=`HOMEWORK_BUILDER.ROW_${e}${n===1?"":"S"}`;return this.t(i,{count:n})}defaultSectionIdForNewQuestion(){return this.usesFixedParts?this.activePart:""}removeQuestion(e){this.questions.removeAt(e)}getOptions(e){return this.questions.at(e).get("options")}getExpectedAnswers(e){return this.questions.at(e).get("expectedAnswers")}getDialogueLines(e){return this.getDialogueLinesFromGroup(this.questions.at(e))}addOption(e,n){(e||this.questions.at(this.questions.length-1)).get("options").push(this.fb.group({optionKey:[n?.id||n?.optionKey||Xt()],text:[n?.text||"",S.required],isCorrect:[n?.isCorrect||!1]}))}removeOption(e,n){this.getOptions(e).removeAt(n)}moveOption(e,n,i){let l=this.getOptions(e),u=l.at(n);l.removeAt(n),l.insert(i,u)}setCorrectOption(e,n){this.getOptions(e).controls.forEach((l,u)=>{l.patchValue({isCorrect:u===n})})}addExpectedAnswer(e,n){(e||this.questions.at(this.questions.length-1)).get("expectedAnswers").push(this.fb.control(n||"",S.required))}removeExpectedAnswer(e,n){this.getExpectedAnswers(e).removeAt(n)}onTypeChange(e){let n=this.questions.at(e),i=n.get("type")?.value,l=n.get("options"),u=n.get("expectedAnswers"),O=this.getDialogueLinesFromGroup(n);l.clear(),u.clear(),O.clear(),this.isComprehensionTypeValue(i)?n.patchValue({answerType:"mcq",gradedBy:"auto"}):this.alwaysManualTypes.includes(i)?n.patchValue({gradedBy:"instructor"}):(this.advancedAutoTypes.includes(i)||["mcq","shortAnswer","imageQuestion","sentence_order"].includes(i))&&n.patchValue({gradedBy:"auto"}),n.patchValue({passage:"",audioUrl:"",words:[],correctOrder:[],dialogueData:null}),n.patchValue({points:this.standardPointsAt(e)}),i==="mcq"||this.isComprehensionTypeValue(i)?(this.addOption(n),this.addOption(n)):i==="sentence_order"||i==="words_order"?n.patchValue({correctSentence:""}):i==="dialogue"?(n.patchValue({dialogueSpeakerA:this.defaultSpeakerA,dialogueSpeakerB:this.defaultSpeakerB,instructions:""}),this.addDialogueLineToGroup(n,"A"),this.addDialogueLineToGroup(n,"B")):this.alwaysManualTypes.includes(i)||(i==="true_false"?n.patchValue({trueFalseAnswer:"true"}):this.addExpectedAnswer(n))}onReadingAnswerTypeChange(e){this.onComprehensionAnswerTypeChange(e)}onListeningAnswerTypeChange(e){this.onComprehensionAnswerTypeChange(e)}onComprehensionAnswerTypeChange(e){let n=this.questions.at(e),i=n.get("answerType")?.value||"mcq",l=n.get("options"),u=n.get("expectedAnswers");l.clear(),u.clear(),i==="mcq"?(n.patchValue({gradedBy:"auto"}),this.addOption(n),this.addOption(n)):i==="long_answer"?n.patchValue({gradedBy:"instructor",instructions:""}):i==="true_false"?n.patchValue({gradedBy:"auto",trueFalseAnswer:"true"}):(n.patchValue({gradedBy:"auto"}),this.addExpectedAnswer(n))}addWord(e){if(!this.newWord.trim())return;let n=this.questions.at(e),i=[...n.get("words")?.value||[]];i.push(this.newWord.trim());let l=i.map((u,O)=>O);n.patchValue({words:i,correctOrder:l}),this.newWord=""}addDialogueLine(e,n){this.addDialogueLineToGroup(this.questions.at(e),n)}removeDialogueLine(e,n){this.getDialogueLines(e).removeAt(n)}removeWord(e,n){let i=this.questions.at(e),l=[...i.get("words")?.value||[]];l.splice(n,1);let u=l.map((O,E)=>E);i.patchValue({words:l,correctOrder:u})}moveWord(e,n,i){let l=this.questions.at(e),u=[...l.get("correctOrder")?.value||[]],[O]=u.splice(n,1);u.splice(i,0,O),l.patchValue({correctOrder:u})}getCorrectSentence(e){return this.questions.at(e).get("correctSentence")?.value||""}syncWordsFromSentence(e){let n=this.questions.at(e),i=Bn(n.get("correctSentence")?.value||"");n.patchValue({words:i,correctOrder:i.map((l,u)=>u)})}insertBlank(e){let n=this.questions.at(e),i=n.get("questionText")?.value||"",l=i.trim()?`${i.trim()} ____`:"____";n.patchValue({questionText:l}),this.onQuestionTextChanged(e)}loadHomework(){this.sessionId&&(this.loading=!0,this.homeworkService.getHomework(this.sessionId).pipe(U(this.destroy$)).subscribe({next:e=>{if(e?.success&&e.data){let n=e.data.find(i=>i.homeworkId===this.homeworkId);n&&this.hydrateHomework(n)}this.loading=!1},error:()=>{this.loading=!1}}))}onSubmit(){if(this.conflictSaveBlocked){this.captureLocalQuestionsForConflict(),this.conflictDialogOpen=!0;return}if(this.authoringIssues=[],this.authoringIssuesSaved=null,!this.validateRequirements())return;
8if(this.form.invalid){console.error("[HomeworkBuilder] Form invalid. Errors:",this.getFormErrors()),this.form.markAllAsTouched(),this.revealFirstInvalidQuestion(),this.scrollToFirstValidationError();return}if(this.hasUnassignedSectionQuestion()){this.toaster.error(this.t("HOMEWORK_BUILDER.ERROR_UNASSIGNED_SECTION"));return}if(this.submitting)return;this.submitting=!0,this.saveState="saving";let e=this.form.value,n={title:e.title,description:e.description,dueDate:e.dueDate||null,questions:e.questions.map((i,l)=>li(i,l,{defaultSpeakerA:this.defaultSpeakerA,defaultSpeakerB:this.defaultSpeakerB}))};this.addSectionPayload(n,e.sections),this.homeworkId?n.homeworkId=this.homeworkId:this.draftHomeworkId&&(n.homeworkId=this.draftHomeworkId),this.homeworkService.createOrUpdateHomework(this.sessionId,n,{expectedRevision:this.currentRevision,idempotencyKey:this.saveIdempotencyKey}).pipe(U(this.destroy$)).subscribe({next:i=>{this.submitting=!1,i?.success&&(this.recordSuccessfulAuthoringSave(i),this.saveState="saved",this.goBack())},error:i=>{this.submitting=!1,this.saveState=i?.status===0?"unconfirmed":"unsaved",!this.showAuthoringValidationIssues(i)&&(this.showAuthoringConflict(i)||(this.requirementSaveError=fn(i),this.toaster.error(this.requirementSaveError.code==="SAVE_FAILED"?this.t("HOMEWORK_BUILDER.SAVE_FAILED"):this.t("SUBMISSION_REQUIREMENTS.ERRORS."+this.requirementSaveError.code)),bt("authoring-requirement-error")))}})}hasUnsavedChanges(){return!!this.form?.dirty&&!this.submitting}confirmLeave(){return this.hasUnsavedChanges()?(this.unsavedDialogOpen=!0,new Si(e=>(this.pendingLeaveObserver=e,()=>{this.pendingLeaveObserver===e&&(this.pendingLeaveObserver=null)}))):it(!0)}onUnsavedChoice(e){this.unsavedDialogOpen=!1;let n=this.pendingLeaveObserver;this.pendingLeaveObserver=null,n?.next(e==="discard"),n?.complete()}beforeUnload(e){this.hasUnsavedChanges()&&(e.preventDefault(),e.returnValue="")}setRequirementPolicy(e,n){this.canEditRequirements&&this.questions.at(e).get("validationPolicy")?.setValue(n)}validateRequirements(){let e=this.questions.controls.findIndex(n=>hn(n.value,this.isPublished).some(i=>this.isPublished||i.code!=="TEXT_RANGE_CONFLICT"));return e<0?(this.requirementSaveError=null,!0):(this.activePart=this.partOfQuestion(e),this.requirementSaveError={code:"VALIDATION_ERROR"},bt("authoring-requirement-error"),!1)}hasUnassignedSectionQuestion(){return this.hasSections?this.usesFixedParts?this.unsortedCount>0:this.questions.controls.some(e=>!e.get("sectionId")?.value):!1}onAudioFileSelected(e,n){this.startUpload(e,n,"audio","audio")}onMediaFileSelected(e,n,i){this.startUpload(e,n,i,"media")}startUpload(e,n,i,l){let u=e.target;if(!u.files||u.files.length===0)return;let O=u.files[0];this.uploadFile(n,i,l,O),u.value=""}retryUpload(e,n){let i=this.uploadState(e,n);i?.file&&this.uploadFile(e,i.kind,n,i.file)}removeUploadState(e,n){delete this.uploadStates[this.uploadStateKey(e,n)]}uploadState(e,n){return this.uploadStates[this.uploadStateKey(e,n)]||null}uploadLimitLabel(e){let n=Ot[e];return this.tWithParamsFallback("HOMEWORK_BUILDER.UPLOAD_LIMIT",{size:this.formatUploadSize(n.maxBytes),types:n.types.map(i=>i.toUpperCase()).join(", ")})}uploadAccept(e){return Ot[e].accept}uploadFile(e,n,i,l){let u=this.uploadStateKey(e,i),O=this.uploadLimitError(n,l);if(O){this.uploadStates[u]={status:"failed",kind:n,fileName:l.name,progress:0,message:O,file:l};return}let E=this.questions.at(e),V=E.get("questionId")?.value||`temp-${Date.now()}`;this.uploadStates[u]={status:"uploading",kind:n,fileName:l.name,progress:0,file:l},this.uploadHomeworkMedia(n,l,V).pipe(U(this.destroy$)).subscribe({next:L=>{this.applyUploadProgress(u,L)||(i==="questionImage"?this.applyQuestionImage(E,this.unwrapUploadResponse(L)):i==="audio"?this.applyQuestionAudio(E,this.unwrapUploadResponse(L)):this.applyUploadedMedia(E,n,l,this.unwrapUploadResponse(L)),this.uploadStates[u]={status:"done",kind:n,fileName:l.name,progress:100,file:l})},error:L=>{this.uploadStates[u]={status:"failed",kind:n,fileName:l.name,progress:this.uploadStates[u]?.progress||0,message:this.uploadErrorMessage(n,l,L),file:l}}})}onQuestionImageSelected(e,n){this.startUpload(e,n,"image","questionImage")}clearQuestionImage(e){this.questions.at(e).patchValue({imageUrl:"",imageId:""})}onQuestionImageUrlTyped(e){let n=this.questions.at(e);n.get("imageId")?.value&&n.patchValue({imageId:""})}showsQuestionImage(e){let n=this.getPreviewQuestionImageUrl(e);return n?n!==this.getPreviewMediaUrl(e):!1}simulateHomework(){this.homeworkId&&this.router.navigate(["/main/my-courses/homework",this.sessionId],{queryParams:{simulate:this.homeworkId}})}goBack(){this.navigationHistory.goBackOrFallback(["/main/dashboard/cohorts/batches",this.batchId,"levels",this.levelId],{queryParams:{courseId:this.courseId,tab:"homework"}})}trackByIndex(e){return e}trackByOptionKey(e,n){return n.get("optionKey")?.value||e.toString()}getQuestionTypeLabel(e){let n=this.questionTypes.find(i=>i.value===e)?.labelKey;return n?this.t(n):this.t("HOMEWORK_BUILDER.QUESTION")}getComprehensionAnswerTypeLabel(e){let i=this.questions.at(e).get("answerType")?.value||"mcq",l=this.comprehensionAnswerTypes.find(u=>u.value===i)?.labelKey;return l?this.t(l):this.t("HOMEWORK_BUILDER.QUESTION")}
8isComprehensionQuestion(e){let n=this.questions.at(e).get("type")?.value;return this.isComprehensionTypeValue(n)}isChoiceQuestion(e){let n=this.questions.at(e);return Rn(n.get("type")?.value,n.get("answerType")?.value)}isTrueFalseQuestion(e){let n=this.questions.at(e);return n.get("type")?.value==="true_false"||this.isComprehensionQuestion(e)&&n.get("answerType")?.value==="true_false"}isExpectedAnswerQuestion(e){let n=this.questions.at(e);return Dn(n.get("type")?.value,n.get("answerType")?.value)}previewWordBank(e){let n=this.questions.at(e);if(!this.isExpectedAnswerQuestion(e))return null;let i=n.get("expectedAnswers")?.value||[];return Tn(n.get("questionText")?.value||"",i.map(l=>String(l??"")),n.get("questionId")?.value||String(e+1))}questionLabelAt(e){let n=this.questions.controls.map((i,l)=>({questionId:i.get("questionId")?.value||`#${l}`,sectionId:i.get("sectionId")?.value}));return Pn(n,n[e])||String(e+1)}isLongAnswerQuestion(e){let n=this.questions.at(e);return n.get("type")?.value==="long_answer"||this.isComprehensionQuestion(e)&&n.get("answerType")?.value==="long_answer"}getPreviewMediaLabel(e){let n=this.mediaKinds.find(i=>i.value===e.get("mediaKind")?.value)?.labelKey;return n?this.t(n):this.t("HOMEWORK_BUILDER.MEDIA")}getPreviewQuestionImageUrl(e){return pt([e.get("imageUrl")?.value])||""}getPreviewMediaUrl(e){return pt([e.get("mediaUrl")?.value])||""}getPreviewAudioUrl(e){return pt([e.get("audioUrl")?.value])||""}isPreviewYoutubeVideo(e){let n=e.get("mediaKind")?.value,i=e.get("mediaUrl")?.value||"";return(n==="youtube"||n==="video")&&!!Ut(i)}getPreviewVideoEmbedUrl(e){let n=Ut(e.get("mediaUrl")?.value||"");return n?this.sanitizer.bypassSecurityTrustResourceUrl(n):null}getPreviewWords(e){let n=this.questions.at(e),i=n.get("words")?.value||[],l=Array.isArray(i)&&i.length?i:Bn(n.get("correctSentence")?.value||"");return Yo(l)}getPreviewDialogueLines(e){let n=this.questions.at(e),i=Mt(n.get("dialogueSpeakerA")?.value,this.defaultSpeakerA),l=Mt(n.get("dialogueSpeakerB")?.value,this.defaultSpeakerB);return this.getDialogueLines(e).controls.map(u=>({speakerKey:u.get("speakerKey")?.value==="B"?"B":"A",text:String(u.get("text")?.value||"").trim()})).filter(u=>u.text).map(u=>Me(W({},u),{speaker:u.speakerKey==="B"?l:i}))}showControlError(e){return this.isInvalidAfterInteraction(this.form.get(e))}getQuestionErrors(e){let n=this.questions.at(e),i=[];return this.isInvalidAfterInteraction(n.get("questionText"))&&i.push(this.t("HOMEWORK_BUILDER.ERROR_QUESTION_TEXT_REQUIRED")),this.isInvalidAfterInteraction(n.get("points"))&&i.push(this.t("HOMEWORK_BUILDER.ERROR_POINTS_MIN")),this.getOptions(e).controls.forEach((l,u)=>{this.isInvalidAfterInteraction(l.get("text"))&&i.push(this.t("HOMEWORK_BUILDER.ERROR_OPTION_TEXT_REQUIRED",{index:u+1}))}),this.getExpectedAnswers(e).controls.forEach((l,u)=>{this.isInvalidAfterInteraction(l)&&i.push(this.t("HOMEWORK_BUILDER.ERROR_ANSWER_TEXT_REQUIRED",{index:u+1}))}),i}healthIssues(){return[...this.questions.controls.map((n,i)=>this.healthIssueFor(i)).filter(n=>!!n),...this.sharedValidationHealthIssues()]}sharedValidationHealthIssues(){let e=this.questions.controls.map((i,l)=>li(i.value,l,{defaultSpeakerA:this.defaultSpeakerA,defaultSpeakerB:this.defaultSpeakerB})),n=ni(this.sectionForms.value);return Fr({questions:e,sections:n},{mode:"full"}).map(i=>{let l=e.findIndex(u=>u.questionId===i.questionId);return{index:l<0?0:l,message:this.t(`HOMEWORK_VALIDATION.${i.code}`),sectionId:l<0?"":e[l].sectionId||"",fixablePoints:!1,standardPoints:l<0?0:this.standardPointsAt(l)}})}healthIssueFor(e){let n=this.questions.at(e),i=this.healthMessageFor(e,n);return i?{index:e,message:i,sectionId:n.get("sectionId")?.value||"",fixablePoints:!this.hasStandardPoints(e),standardPoints:this.standardPointsAt(e)}:null}healthMessageFor(e,n){let i=this.questionLabelAt(e),l=n.get("type")?.value;if(!String(n.get("questionText")?.value||"").trim())return this.t("HOMEWORK_BUILDER.HEALTH_NO_PROMPT",{label:i});if(!String(n.get("skill")?.value||"").trim())return this.t("HOMEWORK_BUILDER.HEALTH_NO_SKILL",{label:i});if(!this.hasStandardPoints(e))return this.t("HOMEWORK_BUILDER.HEALTH_POINTS_NONSTANDARD",{label:i,points:n.get("points")?.value,standard:this.standardPointsAt(e)});if(l==="fill_blank")return this.blankMismatchMessage(e,i);if(this.isChoiceQuestion(e)||this.isTrueFalseQuestion(e))return this.missingCorrectOptionMessage(e,i);let u=this.missingExplanationMessage(e,n,i);return u||(l==="listening"&&!this.hasAudio(n)?this.t("HOMEWORK_BUILDER.HEALTH_NO_AUDIO",{label:i}):l==="reading"&&!String(n.get("passage")?.value||"").trim()?this.t("HOMEWORK_BUILDER.HEALTH_NO_PASSAGE",{label:i}):"")}blankMismatchMessage(e,n){let i=this.questions.at(e),l=vt(i.get("questionText")?.value||""),u=(this.getExpectedAnswers(e).value||[]).filter(O=>String(O??"").trim()).length;return l===u?"":this.t("HOMEWORK_BUILDER.HEALTH_BLANK_MISMATCH",{label:n,blanks:l,answers:u})}missingExplanationMessage(e,n,i){return this.isAutoGradedQuestion(e)?String(n.get("explanation")?.value||"").trim().length>=o_?"":this.t("HOMEWORK_BUILDER.HEALTH_NO_EXPLANATION",{label:i}):""}isAutoGradedQuestion(e){let n=this.questions.at(e);return String(n.get("gradedBy")?.value||"")==="instructor"||r_.includes(String(n.get("type")?.value||""))?!1:this.sectionModeAt(e)==="auto"}sectionModeAt(e){let n=String(this.questions.at(e).get("sectionId")?.value||""),i=this.sectionForms.controls.find(l=>String(l.get("sectionId")?.value)===n);
8return String(i?.get("correctionMode")?.value||"auto")}missingCorrectOptionMessage(e,n){let i=this.getOptions(e).controls;return i.length?i.some(u=>u.get("isCorrect")?.value===!0)?"":this.t("HOMEWORK_BUILDER.HEALTH_NO_CORRECT",{label:n}):this.t("HOMEWORK_BUILDER.HEALTH_NO_OPTIONS",{label:n})}hasAudio(e){let n=String(e.get("audioUrl")?.value||"").trim(),i=e.get("mediaKind")?.value==="audio",l=String(e.get("mediaUrl")?.value||"").trim();return!!n||i&&!!l}goToIssue(e){this.usesFixedParts&&e.sectionId&&this.setActivePart(e.sectionId),this.isRowOpen(e.index)||this.toggleRow(e.index)}goToAuthoringIssue(e){let n=this.questionIndexForAuthoringIssue(e),l=this.questions.at(n)?.get("sectionId")?.value||"";this.goToIssue({index:n,sectionId:l}),setTimeout(()=>{let u=this.hostElement.nativeElement.querySelector(`[data-question-index="${n}"]`);u?.scrollIntoView({behavior:"smooth",block:"center"});let O=this.fieldSelectorForAuthoringIssue(e);((O?u?.querySelector(O):null)||u?.querySelector("textarea, input, select, button")||u)?.focus()})}onConflictChoice(e){if(e==="keep-editing"){this.conflictDialogOpen=!1,this.conflictSaveBlocked=!0;return}this.conflictDialogOpen=!1,this.conflictSaveBlocked=!1,this.loadHomework()}t(e,n){return this.translate.instant(e,n)}showAuthoringValidationIssues(e){let n=e?.error?.error||e?.error||e,i=Array.isArray(n?.issues)?n.issues:[];if(n?.code!=="CONTENT_VALIDATION_FAILED"||i.length===0)return!1;this.authoringIssues=i,this.authoringIssuesSaved=!1;let l=i[0];return this.goToAuthoringIssue(l),!0}showAuthoringConflict(e){let n=e?.error?.error||e?.error||e;if(e?.status!==409||n?.code!=="CONTENT_CONFLICT")return!1;let i=Number(n?.currentRevision??n?.params?.currentRevision);return Number.isFinite(i)&&(this.currentRevision=i),this.captureLocalQuestionsForConflict(),this.conflictDialogOpen=!0,this.conflictSaveBlocked=!0,!0}captureLocalQuestionsForConflict(){this.conflictLocalQuestions=this.questions.controls.map((e,n)=>({label:this.questionLabelAt(n),text:String(e.get("questionText")?.value||"")}))}questionIndexForAuthoringIssue(e){if(e.questionId){let l=this.questions.controls.findIndex(u=>u.get("questionId")?.value===e.questionId);if(l>=0)return l}let n=Number(e.questionNumber);if(Number.isFinite(n)&&n>0&&n<=this.questions.length)return n-1;let i=String(e.fieldPath||"").match(/^questions\.(\d+)/);if(i){let l=Number(i[1]);if(Number.isFinite(l)&&l>=0&&l<this.questions.length)return l}return 0}fieldSelectorForAuthoringIssue(e){let n=String(e.fieldPath||"");return n.endsWith(".questionText")?'[formControlName="questionText"]':n.endsWith(".passage")?'[formControlName="passage"]':n.endsWith(".audioUrl")?'[formControlName="audioUrl"]':n.endsWith(".explanation")?'[formControlName="explanation"]':n.includes(".options.")?".option-input":n.includes(".expectedAnswers.")?".answer-input":""}uploadFailedMessage(e){return e==="image"?this.t("HOMEWORK_BUILDER.IMAGE_UPLOAD_FAILED"):e==="audio"?this.t("HOMEWORK_BUILDER.AUDIO_UPLOAD_FAILED"):this.t("HOMEWORK_BUILDER.VIDEO_UPLOAD_FAILED")}get defaultSpeakerA(){return this.t("HOMEWORK_BUILDER.SPEAKER_A")}get defaultSpeakerB(){return this.t("HOMEWORK_BUILDER.SPEAKER_B")}getFormErrors(){let e={};return this.form.get("title")?.invalid&&(e.title=this.form.get("title")?.errors),this.questions.controls.forEach((n,i)=>{let l={};Object.keys(n.controls).forEach(u=>{let O=n.get(u);if(O?.invalid)if(O instanceof $t){let E=[];O.controls.forEach((V,L)=>{V.invalid&&E.push({index:L,errors:V instanceof xt?this.getGroupErrors(V):V.errors})}),E.length&&(l[u]=E)}else l[u]=O.errors}),Object.keys(l).length&&(e[`question_${i}`]=l)}),e}getGroupErrors(e){let n={};return Object.keys(e.controls).forEach(i=>{e.get(i)?.invalid&&(n[i]=e.get(i)?.errors)}),n}isInvalidAfterInteraction(e){return!!e?.invalid&&(e.touched||e.dirty)}scrollToFirstValidationError(){setTimeout(()=>{this.hostElement.nativeElement.querySelector(".field-error, .question-validation")?.scrollIntoView({behavior:"smooth",block:"center"})})}isComprehensionTypeValue(e){return e==="reading"||e==="listening"}hydrateHomework(e){this.isPublished=e.isPublished===!0,this.currentRevision=Number(e.revision||0),this.saveIdempotencyKey=Xt(),this.form.patchValue({title:e.title,de
8scription:e.description,dueDate:Tr(e.dueDate)}),this.isLegacyFlat=zo(e),this.hydrateSections(e.sections||[]),this.questions.clear(),(e.questions||[]).forEach(n=>this.questions.push(this.hydratedQuestionGroup(n))),this.loadSubmissionGate(),this.refreshSeedStatus()}hydratedQuestionGroup(e){let n=this.createQuestionGroup(e);return n.patchValue({sectionId:e?.sectionId||""}),n}hydrateSections(e){if(this.sectionForms.clear(),this.isLegacyFlat){e.forEach(n=>this.sectionForms.push(this.sectionGroupFromData(n)));return}this.installFixedParts(e)}installFixedParts(e){let n=new Map(e.map(i=>[i.sectionId,i]));Ft.forEach(i=>{this.sectionForms.push(this.sectionGroupFromData(W(W({},Ko(i)),n.get(i.sectionId))))})}loadSubmissionGate(){!this.sessionId||!this.homeworkId||this.homeworkService.getSubmissions(this.sessionId,this.homeworkId).pipe(U(this.destroy$)).subscribe({next:e=>{this.hasSubmissions=(e?.data||[]).length>0},error:()=>{this.hasSubmissions=!0}})}sectionGroupFromData(e){let n=this.createSectionGroup(e.sectionId||ti([]));return n.patchValue({order:e.order||1,titleEn:e.title?.en||"",titleFr:e.title?.fr||"",type:e.type||"self_assisted",correctionMode:e.correctionMode||ei(e.type||"self_assisted"),estimatedTime:e.estimatedTime||0,required:e.required!==!1}),n}addSectionPayload(e,n){!n||n.length===0||(e.sections=ni(n),e.schemaVersion=2)}createSectionGroup(e){return this.fb.group({sectionId:[e],order:[this.sectionForms.length+1],titleEn:["",S.required],titleFr:["",S.required],type:["self_assisted"],correctionMode:["auto"],estimatedTime:[0,[S.min(0)]],required:[!0]})}resequenceSectionOrders(){Qo(this.sectionForms.controls.map(e=>({order:e.get("order")?.value}))).forEach((e,n)=>this.sectionForms.at(n).patchValue({order:e.order}))}applySeedStatus(e){let n=e?.data?.results||[];this.seedChips=Rr(this.seedQuestionInputs(),n)}seedQuestionInputs(){return this.questions.controls.map(e=>({questionId:e.get("questionId")?.value,flashcardEligible:e.get("flashcardEligible")?.value===!0}))}onSeedComplete(){this.seeding=!1,this.refreshSeedStatus()}onSeedFailed(){this.seeding=!1,this.toaster.error(this.t("HOMEWORK_BUILDER.SEED_FAILED"))}correctionModeForQuestion(e){let n=this.questions.at(e).get("sectionId")?.value;return n&&this.sectionForms.controls.find(l=>l.get("sectionId")?.value===n)?.get("correctionMode")?.value||""}createRubricCriteriaArray(e){return this.fb.array(xr(e).map(n=>this.createRubricCriterionGroup(n)))}createRubricCriterionGroup(e){return this.fb.group({id:[e?.id||""],skill:[e?.skill||"writing"],label:[e?.label||""]})}unassignQuestionsFromSection(e){e&&this.questions.controls.filter(n=>n.get("sectionId")?.value===e).forEach(n=>n.patchValue({sectionId:""}))}createDialogueLineGroup(e){return this.fb.group({speakerKey:[e?.speakerKey||"A"],text:[e?.text||""]})}getDialogueLinesFromGroup(e){return e.get("dialogueLines")}addDialogueLineToGroup(e,n,i=""){this.getDialogueLinesFromGroup(e).push(this.createDialogueLineGroup({speakerKey:n,text:i}))}uploadStateKey(e,n){return`${n}-${e}`}uploadLimitError(e,n){let i=Ot[e],l=this.formatUploadSize(i.maxBytes),u=i.types.map(O=>O.toUpperCase()).join(", ");return n.size>i.maxBytes?this.tWithParamsFallback("HOMEWORK_BUILDER.UPLOAD_TOO_LARGE",{file:n.name,limit:l}):this.fileMatchesUploadTypes(n,e)?null:this.tWithParamsFallback("HOMEWORK_BUILDER.UPLOAD_TYPE_UNSUPPORTED",{file:n.name,limit:u})}fileMatchesUploadTypes(e,n){let i=Ot[n];if(e.type&&i.accept.split(",").includes(e.type))return!0;let l=e.name.split(".").pop()?.toLowerCase()||"";return i.types.includes(l)}applyUploadProgress(e,n){if(n?.type!==Xn.UploadProgress)return!1;let i=Number(n.total||0),l=i>0?Math.round(Number(n.loaded||0)/i*100):0;return this.uploadStates[e]=Me(W({},this.uploadStates[e]),{status:"uploading",progress:l}),!0}unwrapUploadResponse(e){return e?.type===Xn.Response?e.body:e}uploadErrorMessage(e,n,i){let l=i?.error?.limit||i?.error?.max||i?.error?.message;return i?.status===413?this.tWithParamsFallback("HOMEWORK_BUILDER.UPLOAD_TOO_LARGE",{file:n.name,limit:l||this.formatUploadSize(Ot[e].maxBytes)}):i?.status===415?this.tWithParamsFallback("HOMEWORK_BUILDER.UPLOAD_TYPE_UNSUPPORTED",{file:n.name,limit:l||Ot[e].types.map(u=>u.toUpperCase()).join(", ")}):this.tWithParamsFallback(this.uploadFailedMessage(e),{file:n.name})}formatUploadSize(e){let n=e/1048576;return`${Number.isInteger(n)?n:n.toFixed(1)} MB`}tWithParamsFallback(e,n){let i=this.t(e,n);return i!==e?i:`${e} ${Object.values(n).filter(l=>l!=null).join(" ")}`}uploadHomeworkMedia(e,n,i){let l=this.getWritableHomeworkId();return e==="image"?this.homeworkService.uploadHomeworkImage(this.sessionId,l,n,i):e==="video"?this.homeworkService.uploadHomeworkVideo(this.sessionId,l,n):this.homeworkService.uploadHomeworkAudio(this.sessionId,l,n,i)}recordSuccessfulAuthoringSave(e){let n=Number(e?.data?.revision??e?.revision);Number.isFinite(n)&&(this.currentRevision=n),this.saveIdempotencyKey=Xt(),this.form.markAsPristine(),this.saveState="saved"}getWritableHomeworkId(){return this.homeworkId?this.homeworkId:(this.draftHomeworkId||(this.draftHomeworkId=`hw_${Date.now()}_${Math.random().toString(36).slice(2,10)}`),this.draftHomeworkId)}applyQuestionImage(e,n){let i=n?.data?.media;e.patchValue({imageUrl:i?.url||n?.data?.imageUrl||"",imageId:i?.storagePath||n?.data?.imageId||""})}applyQuestionAudio(e,n){let i=n?.data?.media;e.patchValue({audioUrl:i?.url||n?.data?.audioUrl||""})}applyUploadedMedia(e,n,i,l){let u=l?.data?.media,O=u?.url||l?.data?.imageUrl||l?.data?.audioUrl||"",E=u?.storagePath||l?.data?.imageId||"";this.patchMedia(e,n,O,u?.mimeType||i.type,E)}patchMedia(e,n,i,l,u){e.patchValue(W(W({mediaKind:n,mediaSource:u?"upload":"external_url",mediaUrl:i,mediaMimeType:l,mediaStoragePath:u},n==="image"?{imageUrl:i}:{}),n==="audio"?{audioUrl:i}:{}))}static{this.\u0275fac=function(n){return new(n||t)(w(nt),w(te),w(mt),w(At),w(ze),w(he),w(fe),w(ue),w(nn),w(Yi,8))}}static{this.\u0275cmp=H({type:t,selectors:[["app-homework-builder"]],hostBindings:function(n,i){n&1&&x("beforeunload",function(u){return i.beforeUnload(u)},!1,Di)},decls:16,vars:13,consts:[["previewBlanks",""],[1,"homework-builder-container"],[1,"header"],[1,"btn-back",3,"click"],[1,"header-copy"],["class","homework-context-title",4,"ngIf"],["type","button","class","btn-secondary btn-simulate",3,"click",4,"ngIf"],["resourceType","cohort_homework",3,"resourceRef","resourceLabel","courseId","levelId",4,"ngIf"],["class","loading-state","aria-hidden","true",4,"ngIf"],[3,"formGroup","ngSubmit",4,"ngIf"],["class","authoring-dialog-backdrop",4,"ngIf"],[1,"homework-context-title"],["type","button",1,"btn-secondary","btn-simulate",3,"click"],["resourceType","cohort_homework",3,"resourceRef","resourceLabel","courseId","levelId"],["aria-hidden","true",1,"loading-state"],[1,"shimmer","shimmer-title"],[1,"shimmer","shimmer-line"],[1,"shimmer","shimmer-card"],[3,"ngSubmit","formGroup"],["id","authoring-requirement-error","tabindex","-1","role","alert",4,"ngIf"],[1,"builder-workspace"],[1,"builder-editor-column"],[1,"form-section"],["type","button",1,"section-toggle",3,"click"],["class","section-toggle-summary",4,"ngIf"],["viewBox","0 0 24 24","width","16","height","16","fill","none","stroke","currentColor","stroke-width","2.2","stroke-linecap","round","stroke-linejoin","round","aria-hidden","true",1,"section-toggle-chevron"],["d","M6 9l6 6 6-6"],["class","section-body",4,"ngIf"],["class","grading-summary",3,"ngClass",4,"ngIf"],[3,"focusIssue","issues","saved"],["class","health-banner",3,"hidden",4,"ngIf"],["class","form-section parts-section",4,"ngIf"],["class","form-section sections-section",4,"ngIf"],["formArrayName","questions"],["class","question-card","tabindex","-1",3,"formGroupName","question-card--manual","hidden",4,"ngFor","ngForOf","ngForTrackBy"],["type","button","class","btn-add-question",3,"click",4,"ngIf"],["class","type-picker",4,"ngIf"],["class","seed-toolbar",4,"ngIf"],[1,"form-actions"],[3,"state","confirmed"],["type","button",1,"btn-secondary",3,"click"],["type","button","class","btn-secondary",3,"disabled","click",4,"ngIf"],["type","submit",1,"btn-primary",3,"click","disabled"],[1,"student-preview-pane"],[1,"student-preview-shell"],[1,"preview-header"],[1,"preview-eyebrow"],["class","preview-description",3,"innerHTML",4,"ngIf"],["class","preview-part-header",4,"ngIf"],[1,"preview-question-list"],["class","preview-question-card",3,"preview-question-card--focused","preview-question-card--dimmed","hidden",4,"ngFor","ngForOf","ngForTrackBy"],["id","authoring-requirement-error","tabindex","-1","role","alert"],[1,"section-toggle-summary"],[1,"section-body"],[1,"form-group"],["type","text","formControlName","title",3,"placeholder"],["class","field-error",4,"ngIf"],["formControlName","description","rows","2"],[1,"form-group","form-group--narrow"],["type","date","formControlName","dueDate"],[1,"field-error"],[1,"grading-summary",3,"ngClass"],[1,"grading-badge",3,"ngClass"],[1,"health-banner",3,"hidden"],[1,"health-banner-title"],[1,"health-issues"],[4,"ngFor","ngForOf","ngForTrackBy"],["type","button",1,"health-issue",3,"click"],["type","button","class","health-fix",3,"click",4,"ngIf"],["type","button",1,"health-fix",3,"click"],[1,"form-section","parts-section"],[1,"tab-nav"],["type","button","class","tab-btn",3,"active","click",4,"ngFor","ngForOf","ngForTrackBy"],["type","button","class","tab-btn tab-btn--warn",3,"active","click",4,"ngIf"],["class","hint hint--warn",4,"ngIf"],["type","button",1,"tab-btn",3,"click"],[1,"tab-count"],["type","button",1,"tab-btn","tab-btn--warn",3,"click"],[1,"hint","hint--warn"],[1,"form-section","sections-section"],[1,"sections-heading"],["type","button",1,"btn-add-sm",3,"click"],["class","hint",4,"ngIf"],["formArrayName","sections"],["class","section-card",3,"formGroupName",4,"ngFor","ngForOf","ngForTrackBy"],[1,"hint"],[1,"section-card",3,"formGroupName"],[1,"section-card-head"],[1,"section-order"],[1,"section-reorder"],["type","button",1,"btn-icon",3,"click","disabled","title"],["type","button",1,"btn-remove-sm",3,"click","title"],[1,"form-row"],["type","text","formControlName","titleEn",3,"placeholder"],["type","text","formControlName","titleFr",3,"placeholder"],["formControlName","type",3,"change"],[3,"value",4,"ngFor","ngForOf","ngForTrackBy"],["formControlName","correctionMode"],["type","number","formControlName","estimatedTime","min","0"],[1,"section-required-toggle"],["type","checkbox","formControlName","required"],[3,"value"],["tabindex","-1",1,"question-card",3,"formGroupName","hidden"],[1,"question-row",3,"click"],[1,"question-number"],[1,"question-summary"],[1,"question-summary-title"],[1,"question-summary-sub"],[1,"question-actions",3,"click"],[1,"points-fixed",3,"title"],[1,"points-label"],["type","button","class","btn-remove",3,"click",4,"ngIf"],[4,"ngIf"],["class","question-body",4,"ngIf"],["type","button",1,"btn-remove",3,"click"],["class","question-validation",4,"ngIf"],[1,"question-validation"],[1,"question-body"],[3,"admin","kind","fieldId","policy","requireMinimum","prompt","policyChange",4,"ngIf"],["formControlName","type",1,"type-select",3,"change"],["class","form-group ec-format",4,"ngIf"],[3,"questionText","expectedAnswers","changed",4,"ngIf"],["class","form-group",4,"ngIf"],[1,"media-section"],["formControlName","mediaKind"],["class","question-image-preview",3,"src","alt",4,"ngIf"],["controls","","class","audio-preview",3,"src",4,"ngIf"],["class","video-preview","allowfullscreen","",3,"src","title",4,"ngIf"],["controls","","class","video-preview",3,"src",4,"ngIf"],["class","dialogue-builder
8-section",4,"ngIf"],[1,"form-group","question-image-field"],[1,"audio-input-row"],["type","text","formControlName","imageUrl",3,"input","placeholder"],[1,"btn-upload"],["type","file","hidden","",3,"change"],["type","button","class","btn-remove-sm",3,"click",4,"ngIf"],[1,"field-hint"],[1,"upload-state"],[1,"upload-state__limit"],["class","options-section",4,"ngIf"],["class","expected-section",4,"ngIf"],["class","review-info-badge review-info-badge--teal",4,"ngIf"],["class","expected-section rubric-section",4,"ngIf"],["class","sentence-order-section",4,"ngIf"],[1,"diagnostics-section"],[1,"diagnostics-head"],["class","seed-chip",3,"ngClass",4,"ngIf"],["formControlName","skill",1,"skill-select",3,"change"],["value",""],["formControlName","subSkill",1,"skill-select",3,"disabled"],["formControlName","cefrLevel"],["type","text","formControlName","hint",3,"placeholder"],["formControlName","explanation","rows","2",3,"placeholder"],[1,"flashcard-toggle"],["type","checkbox","formControlName","flashcardEligible"],[3,"policyChange","admin","kind","fieldId","policy","requireMinimum","prompt"],[1,"form-group","ec-format"],[1,"ec-format__choice"],["type","button",3,"click"],["type","button","data-testid","error-correction-format",3,"click"],[3,"changed","questionText","expectedAnswers"],[1,"blank-input-row"],["formControlName","questionText","rows","3",3,"input","placeholder"],["type","button","class","blank-marker-btn","data-testid","insert-blank-button",3,"title","click",4,"ngIf"],["class","html-field-preview",3,"innerHTML",4,"ngIf"],["type","button","data-testid","insert-blank-button",1,"blank-marker-btn",3,"click","title"],[1,"html-field-preview",3,"innerHTML"],["type","text","formControlName","mediaTranscript",3,"placeholder"],["type","url","formControlName","mediaUrl",3,"input","placeholder"],["type","url","formControlName","mediaUrl",3,"placeholder"],["class","btn-upload",4,"ngIf"],["class","upload-state",4,"ngIf"],["class","upload-state__line upload-state__line--progress",4,"ngIf"],["class","upload-state__line upload-state__line--failed",4,"ngIf"],["class","upload-state__line upload-state__line--done",4,"ngIf"],["class","upload-state__actions",4,"ngIf"],[1,"upload-state__line","upload-state__line--progress"],[1,"upload-state__line","upload-state__line--failed"],[1,"upload-state__line","upload-state__line--done"],[1,"upload-state__actions"],["type","button",1,"btn-sm",3,"click"],[1,"question-image-preview",3,"src","alt"],["controls","",1,"audio-preview",3,"src"],["allowfullscreen","",1,"video-preview",3,"src","title"],["controls","",1,"video-preview",3,"src"],["formControlName","instructions","rows","3",3,"placeholder"],[1,"dialogue-builder-section"],["type","text","formControlName","dialogueSpeakerA",3,"placeholder"],["type","text","formControlName","dialogueSpeakerB",3,"placeholder"],["formArrayName","dialogueLines",1,"dialogue-lines-editor"],["class","dialogue-line-row",3,"formGroupName",4,"ngFor","ngForOf","ngForTrackBy"],[1,"dialogue-add-row"],[1,"dialogue-line-row",3,"formGroupName"],["formControlName","speakerKey",1,"dialogue-speaker-select"],["value","A"],["value","B"],["type","text","formControlName","text",1,"dialogue-line-input",3,"placeholder"],["type","button",1,"btn-remove-sm",3,"click"],["formControlName","passage","rows","5",3,"placeholder"],["type","text","formControlName","audioUrl",3,"placeholder"],["formControlName","answerType",3,"change"],[1,"options-section"],["formArrayName","options"],["class","option-row",3,"formGroupName",4,"ngFor","ngForOf","ngForTrackBy"],["type","button","class","btn-add-sm",3,"click",4,"ngIf"],[1,"option-row",3,"formGroupName"],["type","radio",3,"change","name","checked","title"],["type","text","formControlName","text",1,"option-input",3,"placeholder"],[1,"expected-section"],[1,"true-false-toggle","notranslate"],["type","button",1,"choice-btn",3,"click"],["formArrayName","expectedAnswers"],["class","answer-row",4,"ngFor","ngForOf","ngForTrackBy"],[1,"answer-row"],["type","text",1,"answer-input",3,"formControlName","placeholder"],[1,"review-info-badge","review-info-badge--teal"],[1,"expected-section","rubric-section"],[3,"formArrayName"],["class","dialogue-line-row rubric-criterion-row",3,"formGroupName",4,"ngFor","ngForOf","ngForTrackBy"],[1,"dialogue-line-row","rubric-criterion-row",3,"formGroupName"],["formControlName","skill",1,"dialogue-speaker-select","rubric-skill-select"],["type","text","formControlName","label",1,"dialogue-line-input","rubric-label-input",3,"placeholder"],[1,"sentence-order-section"],[1,"form-group","sentence-input-row"],["type","text","formControlName","correctSentence",3,"input","placeholder"],["class","generated-words-section",4,"ngIf"],[1,"generated-words-section"],[1,"chip-container"],["class","word-chip",4,"ngFor","ngForOf","ngForTrackBy"],[1,"word-chip"],[1,"seed-chip",3,"ngClass"],["width","13","height","13","viewBox","0 0 24 24","fill","none","stroke","currentColor","stroke-width","2","stroke-linecap","round","stroke-linejoin","round","aria-hidden","true",1,"seed-chip-icon"],["x","5","y","3","width","14","height","18","rx","2"],["d","M9 7h.01M15 17h.01"],["formControlName","sectionId"],[1,"part-move"],["type","button","class","btn-part",3,"active","disabled","click",4,"ngFor","ngForOf","ngForTrackBy"],["type","button",1,"btn-part",3,"click","disabled"],["type","button",1,"btn-add-question",3,"click"],[1,"type-picker"],[1,"type-picker-head"],[1,"type-picker-hint"],["type","button",1,"btn-secondary","btn-sm",3,"click"],["class","type-picker-warning",4,"ngIf"],["class","type-cards",4,"ngIf"],[1,"type-picker-warning"],[1,"type-picker-warning-actions"],[1,"type-cards"],["type","button","class","type-card",3,"type-card--needs-grader","click",4,"ngFor","ngForOf","ngForTrackBy"],["type","button",1,"type-card",3,"click"],[1,"type-card-name"],[1,"type-card-desc"],[1,"seed-toolbar"],["type","button",1,"btn-seed",3,"click","disabled"],[1,"seed-hint"],["type","button",1,"btn-secondary",3,"click","disabled"],[1,"preview-description",3,"innerHTML"],[1,"preview-part-header"],[1,"preview-part-name"],[1,"preview-part-count"],[1,"preview-question-card",3,"hidden"],[1,"preview-question-header"],[1,"preview-question-number"],[1,"preview-question-type"],["class","preview-editing-flag",4,"ngIf"],[1,"preview-question-points"],["class","preview-media preview-image-question",4,"ngIf"],["class","preview-media",4,"ngIf"],["class","preview-passage",3,"innerHTML",4,"ngIf"],["class","preview-question-text",3,"innerHTML",4,"ngIf"],["class","preview-instru
8ctions",3,"innerHTML",4,"ngIf"],["class","preview-options",4,"ngIf"],["type","text","class","preview-text-input","disabled","",3,"placeholder",4,"ngIf"],["class","preview-word-bank",4,"ngIf"],["class","preview-dialogue",4,"ngIf"],["type","button","class","preview-record-button","disabled","",4,"ngIf"],["class","preview-writing-box","rows","4","disabled","",3,"placeholder",4,"ngIf"],[1,"preview-editing-flag"],[1,"preview-media","preview-image-question"],[3,"src","alt"],[1,"preview-media"],[3,"src","alt",4,"ngIf"],["controls","",3,"src",4,"ngIf"],["allowfullscreen","",3,"src","title",4,"ngIf"],["class","preview-resource-pill",4,"ngIf"],["controls","",3,"src"],["allowfullscreen","",3,"src","title"],[1,"preview-resource-pill"],[1,"preview-passage",3,"innerHTML"],[3,"questionText","wordBank",4,"ngIf","ngIfElse"],[3,"questionText","wordBank"],[1,"preview-question-text",3,"innerHTML"],[1,"preview-instructions",3,"innerHTML"],[1,"preview-options"],["class","preview-option",4,"ngFor","ngForOf","ngForTrackBy"],[1,"preview-option"],[1,"preview-radio"],["type","text","disabled","",1,"preview-text-input",3,"placeholder"],[1,"preview-word-bank"],["class","preview-word-chip",4,"ngFor","ngForOf","ngForTrackBy"],[1,"preview-word-chip"],[1,"preview-dialogue"],["class","preview-dialogue-line",3,"preview-dialogue-line--b",4,"ngFor","ngForOf","ngForTrackBy"],[1,"preview-dialogue-line"],["type","button","disabled","",1,"preview-record-button"],["rows","4","disabled","",1,"preview-writing-box",3,"placeholder"],[1,"authoring-dialog-backdrop"],[3,"choice","localQuestions"],[3,"choice","canSave"]],template:function(n,i){n&1&&(a(0,"div",1)(1,"div",2)(2,"button",3),x("click",function(){return i.goBack()}),s(3),_(4,"translate"),r(),a(5,"div",4)(6,"h2"),s(7),_(8,"translate"),r(),h(9,Md,2,1,"p",5),r(),h(10,Pd,3,3,"button",6)(11,Sd,1,9,"app-assign-task-button",7),r(),h(12,wd,5,0,"div",8)(13,t_,50,52,"form",9)(14,n_,2,1,"div",10)(15,i_,2,1,"div",10),r()),n&2&&(o(3),b("\u2190 ",m(4,9,"COMMON.BACK"),""),o(4),g(m(8,11,i.isEditMode?"HOMEWORK_BUILDER.EDIT_HOMEWORK":"HOMEWORK_BUILDER.CREATE_HOMEWORK")),o(2),p("ngIf",i.displayHomeworkTitle),o(),p("ngIf",i.isEditMode&&i.homeworkId),o(),p("ngIf",i.isEditMode&&i.homeworkId),o(),p("ngIf",i.loading),o(),p("ngIf",!i.loading),o(),p("ngIf",i.conflictDialogOpen),o(),p("ngIf",i.unsavedDialogOpen))},dependencies:[In,ce,Q,$,je,re,ae,ie,Ve,Ke,Ce,Y,$e,Qe,et,tt,ct,Dt,xn,vn,Vn,_t,Sn,wn,Fn,En,at,j],styles:[".homework-builder-container[_ngcontent-%COMP%]{padding:24px 36px;max-width:none}.homework-builder-container[_ngcontent-%COMP%] .header[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:flex-end;gap:12px;margin-bottom:24px}.homework-builder-container[_ngcontent-%COMP%] .header[_ngcontent-%COMP%] .btn-back[_ngcontent-%COMP%]{flex-basis:100%}.homework-builder-container[_ngcontent-%COMP%] .header[_ngcontent-%COMP%] .header-copy[_ngcontent-%COMP%]{min-width:0}.homework-builder-container[_ngcontent-%COMP%] .header[_ngcontent-%COMP%] .btn-simulate[_ngcontent-%COMP%]{margin-left:auto}.homework-builder-container[_ngcontent-%COMP%] .header[_ngcontent-%COMP%] .btn-back[_ngcontent-%COMP%]{background:none;border:none;color:#6b7280;cursor:pointer;padding:0;margin-bottom:8px;font-size:14px}.homework-builder-container[_ngcontent-%COMP%] .header[_ngcontent-%COMP%] .btn-back[_ngcontent-%COMP%]:hover{color:#374151}.homework-builder-container[_ngcontent-%COMP%] .header[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0;font-size:24px;font-weight:600}.homework-builder-container[_ngcontent-%COMP%] .header[_ngcontent-%COMP%] .header-copy[_ngcontent-%COMP%]{display:grid;gap:4px}.homework-builder-container[_ngcontent-%COMP%] .header[_ngcontent-%COMP%] .homework-context-title[_ngcontent-%COMP%]{margin:0;color:#374151;font-size:15px;font-weight:700;line-height:1.4;overflow-wrap:anywhere}.homework-builder-container[_ngcontent-%COMP%] .builder-workspace[_ngcontent-%COMP%]{display:grid;grid-template-columns:minmax(0,900px) minmax(360px,1fr);gap:24px;align-items:start}.homework-builder-container[_ngcontent-%COMP%] .builder-editor-column[_ngcontent-%COMP%]{min-width:0}.homework-builder-container[_ngcontent-%COMP%] .form-section[_ngcontent-%COMP%]{background:#fff;border:1px solid #e5e7eb;border-radius:12px;padding:20px;margin-bottom:16px}.homework-builder-container[_ngcontent-%COMP%] .form-section[_ngcontent-%COMP%] h3[_ngcontent-%COMP%]{margin:0 0 16px;font-size:16px;font-weight:600}.homework-builder-container[_ngcontent-%COMP%] .form-row[_ngcontent-%COMP%]{display:flex;gap:16px}.homework-builder-container[_ngcontent-%COMP%] .form-row[_ngcontent-%COMP%] .form-group[_ngcontent-%COMP%]{flex:1}.homework-builder-container[_ngcontent-%COMP%] .form-row[_ngcontent-%COMP%] .flex-2[_ngcontent-%COMP%]{flex:2}.homework-builder-container[_ngcontent-%COMP%] .form-group[_ngcontent-%COMP%]{margin-bottom:12px}.homework-builder-container[_ngcontent-%COMP%] .form-group[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{display:block;font-size:14px;font-weight:500;color:#374151;margin-bottom:4px}.homework-builder-container[_ngcontent-%COMP%] .form-group[_ngcontent-%COMP%] input[_ngcontent-%COMP%], .homework-builder-container[_ngcontent-%COMP%] .form-group[_ngcontent-%COMP%] textarea[_ngcontent-%COMP%], .homework-builder-container[_ngcontent-%COMP%] .form-group[_ngcontent-%COMP%] select[_ngcontent-%COMP%]{width:100%;padding:8px 12px;border:1px solid #d1d5db;border-radius:8px;font-size:14px;box-sizing:border-box}.homework-builder-container[_ngcontent-%COMP%] .form-group[_ngcontent-%COMP%] input[_ngcontent-%COMP%]:focus, .homework-builder-container[_ngcontent-%COMP%] .form-group[_ngcontent-%COMP%] textarea[_ngcontent-%COMP%]:focus, .homework-builder-container[_ngcontent-%COMP%] .form-group[_ngcontent-%COMP%] select[_ngcontent-%COMP%]:focus{outline:none;border-color:#4f46e5;box-shadow:0 0 0 2px #4f46e51a}.homework-builder-container[_ngcontent-%COMP%] .field-error[_ngcontent-%COMP%]{margin:6px 0 0;color:#be123c;font-size:12px;font-weight:600;line-height:1.35}.homework-builder-container[_ngcontent-%COMP%] .blank-input-row[_ngcontent-%COMP%]{display:flex;gap:8px;align-items:flex-start}.homework-builder-container[_ngcontent-%COMP%] .blank-input-row[_ngcontent-%COMP%] input[_ngcontent-%COMP%], .homework-builder-container[_ngcontent-%COMP%] .blank-input-row[_ngcontent-%COMP%] textarea[_ngcontent-%COMP%]{flex:1}.homework-builder-container[_ngcontent-%COMP%] .blank-marker-btn[_ngcontent-%COMP%]{min-width:58px;padding:8px 12px;border:1px solid #d1d5db;border-radius:8px;background:#fff;color:#4f46e5;font-size:14px;font-weight:800;cursor:pointer}.homework-builder-container[_ngcontent-%COMP%] .blank-marker-btn[_ngcontent-%COMP%]:hover{border-color:#4f46e5;background:#eef2ff}.homework-builder-container[_ngcontent-%COMP%] .html-field-preview[_ngcontent-%COMP%]{margin-top:8px;padding:10px 12px;border:1px solid #e5e7eb;border-left:3px solid #4f46e5;border-radius:8px;background:#f9fafb;color:#374151;font-size:13px;line-height:1.55;white-space:pre-line;overflow-wrap:anywhere}.homework-builder-container[_ngcontent-%COMP%] .html-field-preview[_ngcontent-%COMP%] [_ngcontent-%COMP%]:where(p, ol[_ngcontent-%COMP%], ul)[_ngcontent-%COMP%]{margin:0 0 8px}.homework-builder-container[_ngcontent-%COMP%] .html-field-preview[_ngcontent-%COMP%] [_ngcontent-%COMP%]:where(ol, ul)[_ngcontent-%COMP%]{padding-left:22px}.homework-builder-container[_ngcontent-%COMP%] .html-field-preview[_ngcontent-%COMP%] [_ngcontent-%COMP%]:where(li){margin:3px 0}.homework-builder-container[_ngcontent-%COMP%] .html-field-preview[_ngcontent-%COMP%] [_ngcontent-%COMP%]:where(p:last-child, ol[_ngcontent-%COMP%]:last-child, ul[_ngcontent-%COMP%]:last-child){margin-bottom:0}.homework-builder-container[_ngcontent-%COMP%] .question-card[_ngcontent-%COMP%]{background:#fff;border:1px solid #e5e7eb;border-radius:12px;padding:20px;margin-bottom:16px;border-left:4px solid #4f46e5}.homework-builder-container[_ngcontent-%COMP%] .question-validation[_ngcontent-%COMP%]{display:grid;gap:4px;margin:-4px 0 14px 44px;padding:10px 12px;border:1px solid #fecdd3;border-radius:8px;background:#fff1f2;color:#be123c;font-size:12px;line-height:1.35}.homework-builder-container[_ngcontent-%COMP%] .question-validation[_ngcontent-%COMP%] strong[_ngcontent-%COMP%]{font-size:12px;font-weight:800}.homework-builder-container[_ngcontent-%COMP%] .question-validation[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{margin:0}.homework-builder-container[_ngcontent-%COMP%] .question-row[_ngcontent-%COMP%]{display:grid;grid-template-columns:40px minmax(0,1fr) auto;align-items:center;gap:12px;cursor:pointer;border-radius:8px;padding:4px 6px;margin:-4px -6px;transition:background .12s}.homework-builder-container[_ngcontent-%COMP%] .question-row[_ngcontent-%COMP%]:hover{background:#f9fafb}.homework-builder-container[_ngcontent-%COMP%] .question-row[_ngcontent-%COMP%] .question-number[_ngcontent-%COMP%]{font-weight:700;font-size:13px;color:#4f46e5}.homework-builder-container[_ngcontent-%COMP%] .question-row[_ngcontent-%COMP%] .question-summary[_ngcontent-%COMP%]{min-width:0}.homework-builder-container[_ngcontent-%COMP%] .question-row[_ngcontent-%COMP%] .question-summary-title[_ngcontent-%COMP%]{font-size:13.5px;font-weight:600;color:#1f2937;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.homework-builder-container[_ngcontent-%COMP%] .question-row[_ngcontent-%COMP%] .question-summary-sub[_ngcontent-%COMP%]{font-size:11.5px;color:#6b7280}.homework-builder-container[_ngcontent-%COMP%] .question-row[_ngcontent-%COMP%] .question-actions[_ngcontent-%COMP%]{display:flex;align-items:center;gap:4px}.homework-builder-container[_ngcontent-%COMP%] .question-row[_ngcontent-%COMP%] .question-actions[_ngcontent-%COMP%] .points-fixed[_ngcontent-%COMP%]{min-width:24px;font-size:13px;font-weight:700;color:#374151;text-align:right}.homework-builder-container[_ngcontent-%COMP%] .question-row[_ngcontent-%COMP%] .question-actions[_ngcontent-%COMP%] .points-fixed--nonstandard[_ngcontent-%COMP%]{color:#92400e;text-decoration:underline dotted;text-underline-offset:3px}.homework-builder-container[_ngcontent-%COMP%] .question-row[_ngcontent-%COMP%] .question-actions[_ngcontent-%COMP%] .points-label[_ngcontent-%COMP%]{font-size:12px;color:#6b7280}.homework-builder-container[_ngcontent-%COMP%] .question-row[_ngcontent-%COMP%] .btn-remove[_ngcontent-%COMP%]{background:none;border:none;color:#ef4444;font-size:20px;cursor:pointer;padding:0 4px}.homework-builder-container[_ngcontent-%COMP%] .question-row[_ngcontent-%COMP%] .btn-remove[_ngcontent-%COMP%]:hover{color:#dc2626}.homework-builder-container[_ngcontent-%COMP%] .question-row--open[_ngcontent-%COMP%]{background:#f9fafb}.homework-builder-container[_ngcontent-%COMP%] .question-row--open[_ngcontent-%COMP%] .question-summary-title[_ngcontent-%COMP%]{white-space:normal}.homework-builder-container[_ngcontent-%COMP%] .question-body[_ngcontent-%COMP%]{margin-top:16px;padding-top:14px;border-top:1px solid #e5e7eb}.homework-builder-container[_ngcontent-%COMP%] .options-section[_ngcontent-%COMP%], .homework-builder-container[_ngcontent-%COMP%] .expected-section[_ngcontent-%COMP%], .homework-builder-container[_ngcontent-%COMP%] .media-section[_ngcontent-%COMP%]{margin-top:12px}.homework-builder-container[_ngcontent-%COMP%] .options-section[_ngcontent-%COMP%] label[_ngcontent-%COMP%], .homework-builder-container[_ngcontent-%COMP%] .expected-section[_ngcontent-%COMP%] label[_ngcontent-%COMP%], .homework-builder-container[_ngcontent-%COMP%] .media-section[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{display:block;font-size:14px;font-weight:500;color:#374151;margin-bottom:8px}.homework-builder-container[_ngcontent-%COMP%] .options-section[_ngcontent-%COMP%] .hint[_ngcontent-%COMP%], .homework-builder-container[_ngcontent-%COMP%] .expected-section[_ngcontent-%COMP%] .hint[_ngcontent-%COMP%], .homework-builder-container[_ngcontent-%COMP%] .media-section[_ngcontent-%COMP%] .hint[_ngcontent-%COMP%]{font-size:12px;color:#9ca3af;margin:-4px 0 8px}.homework-builder-container[_ngcontent-%COMP%] .option-row[_ngcontent-%COMP%], .homework-builder-container[_ngcontent-%COMP%] .answer-row[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px;margin-bottom:8px}.homework-builder-container[_ngcontent-%COMP%] .option-row[_ngcontent-%COMP%] input[type=radio][_ngcontent-%COMP%], .homework-builder-container[_ngcontent-%COMP%] .answer-row[_ngcontent-%COMP%] input[type=radio][_ngcontent-%COMP%]{cursor:pointer}.homework-builder-container[_ngcontent-%COMP%] .option-row[_ngcontent-%COMP%] .option-input[_ngcontent-%COMP%], .homework-builder-container[_ngcontent-%COMP%] .option-row[_ngcontent-%COMP%] .answer-input[_ngcontent-%COMP%], .homework-builder-container[_ngcontent-%COMP%] .answer-row[_ngcontent-%COMP%] .option-input[_ngcontent-%COMP%], .homework-builder-container[_ngcontent-%COMP%] .answer-row[_ngcontent-%COMP%] .answer-input[_ngcontent-%COMP%]{flex:1;padding:8px 12px;border:1px solid #d1d5db;border-radius:8px;font-size:14px}.homework-builder-container[_ngcontent-%COMP%] .option-row[_ngcontent-%COMP%] .option-input[_ngcontent-%COMP%]:focus, .homework-builder-container[_ngcontent-%COMP%] .option-row[_ngcontent-%COMP%] .answer-input[_ngcontent-%COMP%]:focus, .homework-builder-container[_ngcontent-%COMP%] .answer-row[_ngcontent-%COMP%] .option-input[_ngcontent-%COMP%]:focus, .homework-builder-container[_ngcontent-%COMP%] .answer-row[_ngcontent-%COMP%] .answer-input[_ngcontent-%COMP%]:focus{outline:none;border-color:#4f46e5}.homework-builder-container[_ngcontent-%COMP%] .option-row[_ngcontent-%COMP%] .btn-remove-sm[_ngcontent-%COMP%], .homework-builder-container[_ngcontent-%COMP%] .answer-row[_ngcontent-%COMP%] .btn-remove-sm[_ngcontent-%COMP%]{background:none;border:none;color:#ef4444;font-size:18px;
8cursor:pointer;padding:0 4px}.homework-builder-container[_ngcontent-%COMP%] .option-row[_ngcontent-%COMP%] .btn-remove-sm[_ngcontent-%COMP%]:hover, .homework-builder-container[_ngcontent-%COMP%] .answer-row[_ngcontent-%COMP%] .btn-remove-sm[_ngcontent-%COMP%]:hover{color:#dc2626}.homework-builder-container[_ngcontent-%COMP%] .btn-add-sm[_ngcontent-%COMP%]{background:none;border:1px dashed #d1d5db;color:#6b7280;padding:6px 12px;border-radius:8px;cursor:pointer;font-size:13px}.homework-builder-container[_ngcontent-%COMP%] .btn-add-sm[_ngcontent-%COMP%]:hover{border-color:#4f46e5;color:#4f46e5}.homework-builder-container[_ngcontent-%COMP%] .true-false-toggle[_ngcontent-%COMP%]{display:inline-flex;border:1px solid #d1d5db;border-radius:8px;overflow:hidden}.homework-builder-container[_ngcontent-%COMP%] .true-false-toggle[_ngcontent-%COMP%] .choice-btn[_ngcontent-%COMP%]{min-width:96px;padding:8px 18px;border:none;background:#fff;color:#374151;font-size:14px;font-weight:600;cursor:pointer}.homework-builder-container[_ngcontent-%COMP%] .true-false-toggle[_ngcontent-%COMP%] .choice-btn[_ngcontent-%COMP%]:first-child{border-right:1px solid #d1d5db}.homework-builder-container[_ngcontent-%COMP%] .true-false-toggle[_ngcontent-%COMP%] .choice-btn.active[_ngcontent-%COMP%]{background:#4f46e5;color:#fff}.homework-builder-container[_ngcontent-%COMP%] .true-false-toggle[_ngcontent-%COMP%] .choice-btn[_ngcontent-%COMP%]:hover:not(.active){background:#f3f4f6}.homework-builder-container[_ngcontent-%COMP%] .dialogue-builder-section[_ngcontent-%COMP%]{margin-top:12px}.homework-builder-container[_ngcontent-%COMP%] .dialogue-builder-section[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{display:block;font-size:14px;font-weight:500;color:#374151;margin-bottom:6px}.homework-builder-container[_ngcontent-%COMP%] .dialogue-lines-editor[_ngcontent-%COMP%]{margin-top:4px}.homework-builder-container[_ngcontent-%COMP%] .dialogue-line-row[_ngcontent-%COMP%]{display:grid;grid-template-columns:132px minmax(0,1fr) auto;gap:8px;align-items:center;margin-bottom:8px}.homework-builder-container[_ngcontent-%COMP%] .dialogue-line-row[_ngcontent-%COMP%] .dialogue-speaker-select[_ngcontent-%COMP%], .homework-builder-container[_ngcontent-%COMP%] .dialogue-line-row[_ngcontent-%COMP%] .dialogue-line-input[_ngcontent-%COMP%]{width:100%;padding:8px 12px;border:1px solid #d1d5db;border-radius:8px;font-size:14px;box-sizing:border-box}.homework-builder-container[_ngcontent-%COMP%] .dialogue-line-row[_ngcontent-%COMP%] .dialogue-speaker-select[_ngcontent-%COMP%]:focus, .homework-builder-container[_ngcontent-%COMP%] .dialogue-line-row[_ngcontent-%COMP%] .dialogue-line-input[_ngcontent-%COMP%]:focus{outline:none;border-color:#4f46e5;box-shadow:0 0 0 2px #4f46e51a}.homework-builder-container[_ngcontent-%COMP%] .dialogue-add-row[_ngcontent-%COMP%]{display:flex;gap:8px;flex-wrap:wrap;margin-top:4px}.homework-builder-container[_ngcontent-%COMP%] .btn-add-question[_ngcontent-%COMP%]{width:100%;padding:14px;border:2px dashed #d1d5db;border-radius:12px;background:#fff;color:#6b7280;font-size:15px;cursor:pointer;margin-bottom:24px}.homework-builder-container[_ngcontent-%COMP%] .btn-add-question[_ngcontent-%COMP%]:hover{border-color:#4f46e5;color:#4f46e5}.homework-builder-container[_ngcontent-%COMP%] .section-toggle[_ngcontent-%COMP%]{display:flex;align-items:center;gap:10px;width:100%;padding:0;border:none;background:none;cursor:pointer;text-align:left}.homework-builder-container[_ngcontent-%COMP%] .section-toggle[_ngcontent-%COMP%] h3[_ngcontent-%COMP%]{margin:0}.homework-builder-container[_ngcontent-%COMP%] .section-toggle[_ngcontent-%COMP%] .section-toggle-summary[_ngcontent-%COMP%]{font-size:12px;color:#6b7280;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.homework-builder-container[_ngcontent-%COMP%] .section-toggle[_ngcontent-%COMP%] .section-toggle-chevron[_ngcontent-%COMP%]{margin-left:auto;flex-shrink:0;color:#6b7280;transition:transform .15s}.homework-builder-container[_ngcontent-%COMP%] .section-toggle[_ngcontent-%COMP%] .section-toggle-chevron--open[_ngcontent-%COMP%]{transform:rotate(180deg)}.homework-builder-container[_ngcontent-%COMP%] .section-toggle[_ngcontent-%COMP%]:hover .section-toggle-chevron[_ngcontent-%COMP%]{color:#4f46e5}.homework-builder-container[_ngcontent-%COMP%] .section-body[_ngcontent-%COMP%]{margin-top:16px}.homework-builder-container[_ngcontent-%COMP%] .health-banner[_ngcontent-%COMP%]{border:1px solid #fcd34d;background:#fffbeb;border-radius:12px;padding:12px 14px;margin-bottom:16px}.homework-builder-container[_ngcontent-%COMP%] .health-banner-title[_ngcontent-%COMP%]{display:block;font-size:13px;color:#92400e;margin-bottom:8px}.homework-builder-container[_ngcontent-%COMP%] .health-issues[_ngcontent-%COMP%]{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:6px}.homework-builder-container[_ngcontent-%COMP%] .health-issues[_ngcontent-%COMP%] li[_ngcontent-%COMP%]{display:flex;align-items:center;gap:4px}.homework-builder-container[_ngcontent-%COMP%] .health-fix[_ngcontent-%COMP%]{border:1px solid #92400e;background:#92400e;color:#fff;border-radius:999px;padding:4px 10px;font-size:11px;font-weight:700;cursor:pointer}.homework-builder-container[_ngcontent-%COMP%] .health-fix[_ngcontent-%COMP%]:hover{background:#7c2d12}.homework-builder-container[_ngcontent-%COMP%] .health-issue[_ngcontent-%COMP%]{border:1px solid #fcd34d;background:#fff;border-radius:999px;padding:4px 11px;font-size:11.5px;color:#92400e;cursor:pointer}.homework-builder-container[_ngcontent-%COMP%] .health-issue[_ngcontent-%COMP%]:hover{background:#fef3c7}.homework-builder-container[_ngcontent-%COMP%] .type-picker[_ngcontent-%COMP%]{border:2px dashed #d1d5db;border-radius:12px;padding:14px;margin-bottom:24px}.homework-builder-container[_ngcontent-%COMP%] .type-picker-head[_ngcontent-%COMP%]{display:flex;align-items:center;gap:12px;margin-bottom:12px}.homework-builder-container[_ngcontent-%COMP%] .type-picker-head[_ngcontent-%COMP%] .type-picker-hint[_ngcontent-%COMP%]{font-size:13px;font-weight:600;color:#374151}.homework-builder-container[_ngcontent-%COMP%] .type-picker-head[_ngcontent-%COMP%] .btn-secondary[_ngcontent-%COMP%]{margin-left:auto}.homework-builder-container[_ngcontent-%COMP%] .type-picker-warning[_ngcontent-%COMP%]{border:1px solid #fcd34d;background:#fffbeb;border-radius:10px;padding:12px}.homework-builder-container[_ngcontent-%COMP%] .type-picker-warning[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{margin:0 0 10px;font-size:13px;color:#92400e}.homework-builder-container[_ngcontent-%COMP%] .type-picker-warning-actions[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;gap:8px}.homework-builder-container[_ngcontent-%COMP%] .type-cards[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:8px}.homework-builder-container[_ngcontent-%COMP%] .type-card[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:3px;text-align:left;padding:10px 12px;border:1px solid #e5e7eb;border-radius:10px;background:#fff;cursor:pointer;transition:border-color .12s,background .12s}.homework-builder-container[_ngcontent-%COMP%] .type-card[_ngcontent-%COMP%]:hover{border-color:#4f46e5;background:#f9fafb}.homework-builder-container[_ngcontent-%COMP%] .type-card[_ngcontent-%COMP%] .type-card-name[_ng
8content-%COMP%]{font-size:13px;font-weight:600;color:#1f2937}.homework-builder-container[_ngcontent-%COMP%] .type-card[_ngcontent-%COMP%] .type-card-desc[_ngcontent-%COMP%]{font-size:11.5px;color:#6b7280;line-height:1.35}.homework-builder-container[_ngcontent-%COMP%] .type-card--needs-grader[_ngcontent-%COMP%] .type-card-name[_ngcontent-%COMP%]{color:#92400e}.homework-builder-container[_ngcontent-%COMP%] .btn-sm[_ngcontent-%COMP%]{padding:5px 10px;font-size:12px}.homework-builder-container[_ngcontent-%COMP%] .form-actions[_ngcontent-%COMP%]{position:sticky;bottom:0;z-index:5;display:flex;flex-wrap:wrap;gap:12px;justify-content:flex-end;align-items:center;margin:16px -4px 0;padding:12px 4px;background:#fffffff5;border-top:1px solid #e5e7eb}.homework-builder-container[_ngcontent-%COMP%] .btn-primary[_ngcontent-%COMP%]{background:#4f46e5;color:#fff;border:none;padding:10px 24px;border-radius:8px;cursor:pointer;font-weight:500}.homework-builder-container[_ngcontent-%COMP%] .btn-primary[_ngcontent-%COMP%]:hover:not(:disabled){background:#4338ca}.homework-builder-container[_ngcontent-%COMP%] .btn-primary[_ngcontent-%COMP%]:disabled{opacity:.6;cursor:not-allowed}.homework-builder-container[_ngcontent-%COMP%] .btn-secondary[_ngcontent-%COMP%]{background:#fff;color:#374151;border:1px solid #d1d5db;padding:10px 24px;border-radius:8px;cursor:pointer}.homework-builder-container[_ngcontent-%COMP%] .btn-secondary[_ngcontent-%COMP%]:hover{background:#f3f4f6}.homework-builder-container[_ngcontent-%COMP%] .question-image-preview[_ngcontent-%COMP%]{max-width:200px;max-height:150px;margin-top:8px;border-radius:8px;border:1px solid #e5e7eb}.homework-builder-container[_ngcontent-%COMP%] .question-image-field[_ngcontent-%COMP%] .field-hint[_ngcontent-%COMP%]{font-size:12px;color:#6b7280;margin:6px 0 0}.homework-builder-container[_ngcontent-%COMP%] .upload-state[_ngcontent-%COMP%]{display:grid;gap:6px;margin-top:8px;font-size:12px;color:#475569}.homework-builder-container[_ngcontent-%COMP%] .upload-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{margin:0}.homework-builder-container[_ngcontent-%COMP%] .upload-state__limit[_ngcontent-%COMP%]{color:#64748b}.homework-builder-container[_ngcontent-%COMP%] .upload-state__line[_ngcontent-%COMP%]{border-left:3px solid #cbd5e1;padding-left:8px}.homework-builder-container[_ngcontent-%COMP%] .upload-state__line--progress[_ngcontent-%COMP%]{border-color:#2563eb;color:#1d4ed8}.homework-builder-container[_ngcontent-%COMP%] .upload-state__line--failed[_ngcontent-%COMP%]{border-color:#dc2626;color:#991b1b}.homework-builder-container[_ngcontent-%COMP%] .upload-state__line--done[_ngcontent-%COMP%]{border-color:#059669;color:#047857}.homework-builder-container[_ngcontent-%COMP%] .upload-state__actions[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;gap:8px}.homework-builder-container[_ngcontent-%COMP%] .loading-state[_ngcontent-%COMP%]{display:grid;gap:14px;padding:24px 0}.homework-builder-container[_ngcontent-%COMP%] .loading-state[_ngcontent-%COMP%] .shimmer[_ngcontent-%COMP%]{border-radius:10px;background:linear-gradient(90deg,#eef1f4 25%,#e2e7ec 37%,#eef1f4 63%);background-size:400% 100%;animation:_ngcontent-%COMP%_hw-shimmer 1.4s ease infinite}.homework-builder-container[_ngcontent-%COMP%] .loading-state[_ngcontent-%COMP%] .shimmer-title[_ngcontent-%COMP%]{height:28px;width:40%}.homework-builder-container[_ngcontent-%COMP%] .loading-state[_ngcontent-%COMP%] .shimmer-line[_ngcontent-%COMP%]{height:16px;width:70%}.homework-builder-container[_ngcontent-%COMP%] .loading-state[_ngcontent-%COMP%] .shimmer-card[_ngcontent-%COMP%]{height:120px;width:100%}@keyframes _ngcontent-%COMP%_hw-shimmer{0%{background-position:100% 50%}to{background-position:0 50%}}.homework-builder-container[_ngcontent-%COMP%] .sections-section[_ngcontent-%COMP%] .sections-heading[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:8px}.homework-builder-container[_ngcontent-%COMP%] .sections-section[_ngcontent-%COMP%] .sections-heading[_ngcontent-%COMP%] h3[_ngcontent-%COMP%]{margin:0}.homework-builder-container[_ngcontent-%COMP%] .form-group--narrow[_ngcontent-%COMP%]{max-width:120px}.homework-builder-container[_ngcontent-%COMP%] .section-card[_ngcontent-%COMP%]{border:1px solid #e5e7eb;border-radius:10px;padding:14px;margin-bottom:12px;background:#fafbfc}.homework-builder-container[_ngcontent-%COMP%] .section-card[_ngcontent-%COMP%] .section-card-head[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}.homework-builder-container[_ngcontent-%COMP%] .section-card[_ngcontent-%COMP%] .section-card-head[_ngcontent-%COMP%] .section-order[_ngcontent-%COMP%]{font-weight:700;font-size:13px;color:#374151}.homework-builder-container[_ngcontent-%COMP%] .section-card[_ngcontent-%COMP%] .section-card-head[_ngcontent-%COMP%] .section-reorder[_ngcontent-%COMP%]{display:flex;gap:6px}.homework-builder-container[_ngcontent-%COMP%] .section-card[_ngcontent-%COMP%] .btn-icon[_ngcontent-%COMP%]{border:1px solid #d1d5db;background:#fff;border-radius:6px;width:26px;height:26px;cursor:pointer;color:#374151}.homework-builder-container[_ngcontent-%COMP%] .section-card[_ngcontent-%COMP%] .btn-icon[_ngcontent-%COMP%]:disabled{opacity:.4;cursor:not-allowed}.homework-builder-container[_ngcontent-%COMP%] .section-card[_ngcontent-%COMP%] .section-required-toggle[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:8px;font-size:13px;font-weight:600;color:#374151;cursor:pointer;margin-top:4px}.homework-builder-container[_ngcontent-%COMP%] .diagnostics-section[_ngcontent-%COMP%]{border-top:1px dashed #e5e7eb;margin-top:14px;padding-top:14px}.homework-builder-container[_ngcontent-%COMP%] .diagnostics-section[_ngcontent-%COMP%] .diagnostics-head[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:8px}.homework-builder-container[_ngcontent-%COMP%] .diagnostics-section[_ngcontent-%COMP%] .diagnostics-head[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{font-weight:700;font-size:13px;color:#374151;margin:0}.homework-builder-container[_ngcontent-%COMP%] .diagnostics-section[_ngcontent-%COMP%] .flashcard-toggle[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:8px;font-size:13px;font-weight:600;color:#374151;cursor:pointer;margin-top:4px}.homework-builder-container[_ngcontent-%COMP%] .seed-chip[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:4px;padding:3px 10px;border-radius:999px;font-size:12px;font-weight:700;white-space:nowrap}.homework-builder-container[_ngcontent-%COMP%] .seed-chip--purple[_ngcontent-%COMP%]{background:#f3e8ff;color:#7c3aed}.homework-builder-container[_ngcontent-%COMP%] .seed-chip--amber[_ngcontent-%COMP%]{background:#fef3c7;color:#b45309}.homework-builder-container[_ngcontent-%COMP%] .seed-chip--red[_ngcontent-%COMP%]{background:#fee2e2;color:#b91c1c}.homework-builder-container[_ngcontent-%COMP%] .seed-chip--grey[_ngcontent-%COMP%]{background:#f1f5f9;color:#64748b}.homework-builder-container[_ngcontent-%COMP%] .seed-toolbar[_ngcontent-%COMP%]{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:8px 0 16px}.homework-builder-container[_ngcontent-%COMP%] .seed-toolbar[_ngcontent-%COMP%] .btn-seed[_ngcontent-%COMP%]{border:none;border-radius:8px;background:#111827;color:#fff;font-weight:700;font-size:14px;padding:10px 16px;cursor:pointer}.homework-builder-container[_ngcontent-%COMP%] .seed-toolbar[_ngcontent-%COMP%] .btn-seed[_ngcontent-%COMP%]:disabled{opacity:.45;cursor:not-allowed}.homework-builder-container[_ngcontent-%COMP%] .seed-toolbar[_ngcontent-%COMP%] .seed-hint[_ngcontent-%COMP%]{font-size:12px;color:#6b7280}@media (max-width: 768px){.homework-builder-container[_ngcontent-%COMP%]{padding:16px}.homework-builder-container[_ngcontent-%COMP%] .form-row[_ngcontent-%COMP%]{flex-direction:column;gap:12px}.homework-builder-container[_ngcontent-%COMP%] .form-group--narrow[_ngcontent-%COMP%]{max-width:none}.homework-builder-container[_ngcontent-%COMP%] .question-row[_ngcontent-%COMP%]{grid-template-columns:32px minmax(0,1fr);row-gap:8px}.homework-builder-container[_ngcontent-%COMP%] .question-row[_ngcontent-%COMP%] .question-actions[_ngcontent-%COMP%]{grid-column:1/-1;justify-content:flex-end}.homework-builder-container[_ngcontent-%COMP%] .sections-heading[_ngcontent-%COMP%]{flex-direction:column;align-items:flex-start}.homework-builder-container[_ngcontent-%COMP%] .seed-toolbar[_ngcontent-%COMP%]{flex-direction:column;align-items:stretch}.homework-builder-container[_ngcontent-%COMP%] .seed-toolbar[_ngcontent-%COMP%] .btn-seed[_ngcontent-%COMP%]{width:100%}.homework-builder-container[_ngcontent-%COMP%] .form-actions[_ngcontent-%COMP%]{flex-direction:column}.homework-builder-container[_ngcontent-%COMP%] .form-actions[_ngcontent-%COMP%] .btn-primary[_ngcontent-%COMP%], .homework-builder-container[_ngcontent-%COMP%] .form-actions[_ngcontent-%COMP%] .btn-secondary[_ngcontent-%COMP%]{width:100%}}.homework-builder-container[_ngcontent-%COMP%] .audio-input-row[_ngcontent-%COMP%]{display:flex;gap:8px;align-items:center}.homework-builder-container[_ngcontent-%COMP%] .audio-input-row[_ngcontent-%COMP%] input[type=text][_ngcontent-%COMP%]{flex:1}.homework-builder-container[_ngcontent-%COMP%] .audio-input-row[_ngcontent-%COMP%] .btn-upload[_ngcontent-%COMP%]{padding:8px 16px;background:none;border:1.5px solid #e5e7eb;border-radius:6px;font-size:12px;font-weight:600;color:#6b7280;cursor:pointer;white-space:nowrap}.homework-builder-container[_ngcontent-%COMP%] .audio-input-row[_ngcontent-%COMP%] .btn-upload[_ngcontent-%COMP%]:hover{border-color:#29e4e4;color:#188888}.homework-builder-container[_ngcontent-%COMP%] .audio-preview[_ngcontent-%COMP%]{width:100%;margin-top:8px;border-radius:6px}.homework-builder-container[_ngcontent-%COMP%] .video-preview[_ngcontent-%COMP%]{width:100%;max-height:280px;aspect-ratio:16/9;height:auto;margin-top:8px;border-radius:8px;border:1px solid #e5e7eb;background:#111827}.homework-builder-container[_ngcontent-%COMP%] .sentence-order-section[_ngcontent-%COMP%]{margin-top:8px}.homework-builder-container[_ngcontent-%COMP%] .sentence-order-section[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{display:block;font-size:14px;font-weight:500;color:#374151;margin-bottom:4px}.homework-builder-container[_ngcontent-%COMP%] .sentence-input-row[_ngcontent-%COMP%]{margin-bottom:8px}.homework-builder-container[_ngcontent-%COMP%] .generated-words-section[_ngcontent-%COMP%]{margin-top:8px}.homework-builder-container[_ngcontent-%COMP%] .word-input-row[_ngcontent-%COMP%]{display:flex;gap:8px;margin-bottom:8px}.homework-builder-container[_ngcontent-%COMP%] .word-input-row[_ngcontent-%COMP%] input[_ngcontent-%COMP%]{flex:1}.homework-builder-container[_ngcontent-%COMP%] .chip-container[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;gap:6px;margin:8px 0}.homework-builder-container[_ngcontent-%COMP%] .word-chip[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:4px;padding:4px 10px;border-radius:6px;font-size:12px;font-weight:600;background:#ddfbfb;color:#188888;border:1px solid #29e4e4}.homework-builder-container[_ngcontent-%COMP%] .word-chip[_ngcontent-%COMP%] .chip-remove[_ngcontent-%COMP%]{background:none;border:none;cursor:pointer;color:#188888;font-weight:700;font-size:14px;padding:0 2px;line-height:1}.homework-builder-container[_ngcontent-%COMP%] .correct-order-section[_ngcontent-%COMP%]{margin-top:12px}.homework-builder-container[_ngcontent-%COMP%] .order-chip[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:4px;padding:4px 10px;border-radius:6px;font-size:12px;font-weight:600;background:#fef3c7;color:#92400e;border:1px solid #f59e0b}.homework-builder-container[_ngcontent-%COMP%] .order-chip[_ngcontent-%COMP%] .order-num[_ngcontent-%COMP%]{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:50%;background:#f59e0b;color:#fff;font-size:10px;font-weight:800}.homework-builder-container[_ngcontent-%COMP%] .order-chip[_ngcontent-%COMP%] .chip-move[_ngcontent-%COMP%]{background:none;border:none;cursor:pointer;color:#92400e;font-weight:700;font-size:12px;padding:0 2px;line-height:1}.homework-builder-container[_ngcontent-%COMP%] .order-chip[_ngcontent-%COMP%] .chip-move[_ngcontent-%COMP%]:hover{color:#f59e0b}.homework-builder-container[_ngcontent-%COMP%] .grading-summary[_ngcontent-%COMP%]{display:flex;align-items:center;padding:10px 16px;border-radius:10px;margin-bottom:16px;font-size:13px;font-weight:500}.homework-builder-container[_ngcontent-%COMP%] .grading-summary--green[_ngcontent-%COMP%]{background:#d1fae5}.homework-builder-container[_ngcontent-%COMP%] .grading-summary--amber[_ngcontent-%COMP%]{background:#fef3c7}.homework-builder-container[_ngcontent-%COMP%] .grading-summary--blue[_ngcontent-%COMP%]{background:#dbeafe}.homework-builder-container[_ngcontent-%COMP%] .grading-badge[_ngcontent-%COMP%]{display:inline-flex;align-items:center;padding:3px 10px;border-radius:999px;font-size:12px;font-weight:700}.homework-builder-container[_ngcontent-%COMP%] .grading-badge--green[_ngcontent-%COMP%]{background:#059669;color:#fff}.homework-builder-container[_ngcontent-%COMP%] .grading-badge--amber[_ngcontent-%COMP%]{background:#f59e0b;color:#fff}.homework-builder-container[_ngcontent-%COMP%] .grading-badge--blue[_ngcontent-%COMP%]{background:#3b82f6;color:#fff}.homework-builder-container[_ngcontent-%COMP%] .question-card--manual[_ngcontent-%COMP%]{border-left-color:#f59e0b}.homework-builder-container[_ngcontent-%COMP%] .review-info-badge[_ngcontent-%COMP%]{margin-top:8px;padding:10px 14px;border-radius:8px;font-size:13px;font-weight:500}.homework-builder-container[_ngcontent-%COMP%] .review-info-badge--teal[_ngcontent-%COMP%]{background:#ddfbfb;color:#188888;border:1px solid #29e4e4}.homework-builder-container[_ngcontent-%COMP%] .sentence-preview[_ngcontent-%COMP%]{margin-top:8px;padding:8px 12px;background:#d1fae5;border-radius:6px;font-size:12px;font-weight:600;color:#059669}.homework-builder-container[_ngcontent-%COMP%] .student-preview-pane[_ngcontent-%COMP%]{position:sticky;top:24px;min-width:0}.homework-builder-container[_ngcontent-%COMP%] .student-preview-shell[_ngcontent-%COMP%]{min-height:calc(100vh - 120px);max-height:calc(100vh - 48px);overflow-y:auto;padding:18px;border:1px solid #e5e7eb;border-radius:12px;background:#f8fafc;box-shadow:0 16px 40px #0f172a0f}.homework-builder-container[_ngcontent-%COMP%] .preview-header[_ngcontent-%COMP%]{padding-bottom:14px;margin-bottom:14px;border-bottom:1px solid #e5e7eb}.homework-builder-container[_ngcontent-%COMP%] .preview-header[_ngcontent-%COMP%] h3[_ngcontent-%COMP%]{margin:4px 0;color:#111827;font-size:18px;font-weight:800;line-height:1.25}.homework-builder-container[_ngcontent-%COMP%] .preview-header[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{margin:0;color:#6b7280;font-size:12px;font-weight:600}.homework-builder-container[_ngcontent-%COMP%] .preview-eyebrow[_ngcontent-%COMP%]{display:inline-flex;align-items:center;padding:3px 8px;border-radius:999px;background:#eef2ff;color:#4f46e5;font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.04em}.homework-builder-container[_ngcontent-%COMP%] .preview-description[_ngcontent-%COMP%]{margin:0 0 14px;color:#4b5563;font-size:13px;line-height:1.5;white-space:pre-line;overflow-wrap:anywhere}.homework-builder-container[_ngcontent-%COMP%] .preview-description[_ngcontent-%COMP%] [_ngcontent-%COMP%]:where(p, ol[_ngcontent-%COMP%], ul)[_ngcontent-%COMP%]{margin:0 0 8px}.homework-builder-container[_ngcontent-%COMP%] .preview-description[_ngcontent-%COMP%] [_ngcontent-%COMP%]:where(ol, ul)[_ngcontent-%COMP%]{padding-left:22px}.homework-builder-container[_ngcontent-%COMP%] .preview-description[_ngcontent-%COMP%] [_ngcontent-%COMP%]:where(p:last-child, ol[_ngcontent-%COMP%]:last-child, ul[_ngcontent-%COMP%]:last-child){margin-bottom:0}.homework-builder-container[_ngcontent-%COMP%] .preview-question-list[_ngcontent-%COMP%]{display:grid;gap:12px}.homework-builder-container[_ngcontent-%C
8OMP%] .preview-part-header[_ngcontent-%COMP%]{display:flex;align-items:baseline;gap:10px;padding-bottom:8px;margin-bottom:12px;border-bottom:1px solid #e5e7eb}.homework-builder-container[_ngcontent-%COMP%] .preview-part-header[_ngcontent-%COMP%] .preview-part-name[_ngcontent-%COMP%]{font-size:12px;font-weight:700;letter-spacing:.4px;text-transform:uppercase;color:#4f46e5}.homework-builder-container[_ngcontent-%COMP%] .preview-part-header[_ngcontent-%COMP%] .preview-part-count[_ngcontent-%COMP%]{font-size:11.5px;color:#6b7280;margin-left:auto}.homework-builder-container[_ngcontent-%COMP%] .preview-question-card[_ngcontent-%COMP%]{padding:14px;border:1px solid #e5e7eb;border-radius:10px;background:#fff;transition:opacity .15s,border-color .15s,box-shadow .15s}.homework-builder-container[_ngcontent-%COMP%] .preview-question-card--focused[_ngcontent-%COMP%]{border-color:#4f46e5;box-shadow:0 0 0 3px #4f46e51f}.homework-builder-container[_ngcontent-%COMP%] .preview-question-card--dimmed[_ngcontent-%COMP%]{opacity:.55}.homework-builder-container[_ngcontent-%COMP%] .preview-editing-flag[_ngcontent-%COMP%]{font-size:9.5px;font-weight:700;letter-spacing:.4px;text-transform:uppercase;color:#4f46e5;background:#eef2ff;border-radius:4px;padding:2px 6px;white-space:nowrap}.homework-builder-container[_ngcontent-%COMP%] .preview-question-header[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px;margin-bottom:10px}.homework-builder-container[_ngcontent-%COMP%] .preview-question-number[_ngcontent-%COMP%]{color:#4f46e5;font-size:13px;font-weight:800}.homework-builder-container[_ngcontent-%COMP%] .preview-question-type[_ngcontent-%COMP%]{padding:2px 7px;border-radius:999px;background:#f3f4f6;color:#6b7280;font-size:10px;font-weight:800;text-transform:uppercase}.homework-builder-container[_ngcontent-%COMP%] .preview-question-points[_ngcontent-%COMP%]{margin-left:auto;color:#9ca3af;font-size:11px;font-weight:700}.homework-builder-container[_ngcontent-%COMP%] .preview-question-text[_ngcontent-%COMP%]{margin:0 0 12px;color:#1f2937;font-size:14px;font-weight:700;line-height:1.45;white-space:pre-line;overflow-wrap:anywhere}.homework-builder-container[_ngcontent-%COMP%] .preview-question-text[_ngcontent-%COMP%] [_ngcontent-%COMP%]:where(p, ol[_ngcontent-%COMP%], ul)[_ngcontent-%COMP%]{margin:0 0 8px}.homework-builder-container[_ngcontent-%COMP%] .preview-question-text[_ngcontent-%COMP%] [_ngcontent-%COMP%]:where(ol, ul)[_ngcontent-%COMP%]{padding-left:22px}.homework-builder-container[_ngcontent-%COMP%] .preview-question-text[_ngcontent-%COMP%] [_ngcontent-%COMP%]:where(li){margin:3px 0}.homework-builder-container[_ngcontent-%COMP%] .preview-question-text[_ngcontent-%COMP%] [_ngcontent-%COMP%]:where(p:last-child, ol[_ngcontent-%COMP%]:last-child, ul[_ngcontent-%COMP%]:last-child){margin-bottom:0}.homework-builder-container[_ngcontent-%COMP%] .preview-passage[_ngcontent-%COMP%]{margin-bottom:12px;padding:10px 12px;border-left:3px solid #4f46e5;border-radius:8px;background:#f9fafb;color:#4b5563;font-size:12px;line-height:1.5;white-space:pre-line;overflow-wrap:anywhere}.homework-builder-container[_ngcontent-%COMP%] .preview-passage[_ngcontent-%COMP%] [_ngcontent-%COMP%]:where(p, ol[_ngcontent-%COMP%], ul)[_ngcontent-%COMP%]{margin:0 0 8px}.homework-builder-container[_ngcontent-%COMP%] .preview-passage[_ngcontent-%COMP%] [_ngcontent-%COMP%]:where(ol, ul)[_ngcontent-%COMP%]{padding-left:22px}.homework-builder-container[_ngcontent-%COMP%] .preview-passage[_ngcontent-%COMP%] [_ngcontent-%COMP%]:where(li){margin:3px 0}.homework-builder-container[_ngcontent-%COMP%] .preview-passage[_ngcontent-%COMP%] [_ngcontent-%COMP%]:where(p:last-child, ol[_ngcontent-%COMP%]:last-child, ul[_ngcontent-%COMP%]:last-child){margin-bottom:0}.homework-builder-container[_ngcontent-%COMP%] .preview-instructions[_ngcontent-%COMP%]{margin:-4px 0 12px;padding:9px 10px;border-radius:8px;background:#f8fafc;color:#4b5563;font-size:12px;line-height:1.5;white-space:pre-line;overflow-wrap:anywhere}.homework-builder-container[_ngcontent-%COMP%] .preview-instru
8ctions[_ngcontent-%COMP%] [_ngcontent-%COMP%]:where(p, ol[_ngcontent-%COMP%], ul)[_ngcontent-%COMP%]{margin:0 0 8px}.homework-builder-container[_ngcontent-%COMP%] .preview-instructions[_ngcontent-%COMP%] [_ngcontent-%COMP%]:where(ol, ul)[_ngcontent-%COMP%]{padding-left:22px}.homework-builder-container[_ngcontent-%COMP%] .preview-instructions[_ngcontent-%COMP%] [_ngcontent-%COMP%]:where(li){margin:3px 0}.homework-builder-container[_ngcontent-%COMP%] .preview-instructions[_ngcontent-%COMP%] [_ngcontent-%COMP%]:where(p:last-child, ol[_ngcontent-%COMP%]:last-child, ul[_ngcontent-%COMP%]:last-child){margin-bottom:0}.homework-builder-container[_ngcontent-%COMP%] .preview-media[_ngcontent-%COMP%]{display:grid;gap:8px;margin-bottom:12px}.homework-builder-container[_ngcontent-%COMP%] .preview-media[_ngcontent-%COMP%] img[_ngcontent-%COMP%], .homework-builder-container[_ngcontent-%COMP%] .preview-media[_ngcontent-%COMP%] video[_ngcontent-%COMP%], .homework-builder-container[_ngcontent-%COMP%] .preview-media[_ngcontent-%COMP%] iframe[_ngcontent-%COMP%]{width:100%;max-height:220px;border:1px solid #e5e7eb;border-radius:8px;object-fit:cover;background:#111827}.homework-builder-container[_ngcontent-%COMP%] .preview-media[_ngcontent-%COMP%] iframe[_ngcontent-%COMP%]{aspect-ratio:16/9;height:auto}.homework-builder-container[_ngcontent-%COMP%] .preview-media[_ngcontent-%COMP%] audio[_ngcontent-%COMP%]{width:100%}.homework-builder-container[_ngcontent-%COMP%] .preview-resource-pill[_ngcontent-%COMP%]{padding:9px 10px;border-radius:8px;background:#eff6ff;color:#1d4ed8;font-size:12px;font-weight:700}.homework-builder-container[_ngcontent-%COMP%] .preview-options[_ngcontent-%COMP%]{display:grid;gap:7px}.homework-builder-container[_ngcontent-%COMP%] .preview-option[_ngcontent-%COMP%]{display:flex;align-items:center;gap:9px;padding:9px 10px;border:1px solid #edf2f7;border-radius:8px;color:#4b5563;font-size:13px}.homework-builder-container[_ngcontent-%COMP%] .preview-radio[_ngcontent-%COMP%]{width:16px;height:16px;border:2px solid #d1d5db;border-radius:50%;flex:0 0 auto}.homework-builder-container[_ngcontent-%COMP%] .preview-text-input[_ngcontent-%COMP%], .homework-builder-container[_ngcontent-%COMP%] .preview-writing-box[_ngcontent-%COMP%]{width:100%;box-sizing:border-box;border:1px solid #e5e7eb;border-radius:8px;background:#f9fafb;color:#9ca3af;font-size:13px}.homework-builder-container[_ngcontent-%COMP%] .preview-text-input[_ngcontent-%COMP%]{padding:10px 12px}.homework-builder-container[_ngcontent-%COMP%] .preview-writing-box[_ngcontent-%COMP%]{padding:10px 12px;resize:none}.homework-builder-container[_ngcontent-%COMP%] .preview-word-bank[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;gap:7px}.homework-builder-container[_ngcontent-%COMP%] .preview-word-chip[_ngcontent-%COMP%]{padding:6px 10px;border:1px solid #bfdbfe;border-radius:8px;background:#eff6ff;color:#2563eb;font-size:12px;font-weight:800}.homework-builder-container[_ngcontent-%COMP%] .preview-dialogue[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:8px;margin-bottom:10px}.homework-builder-container[_ngcontent-%COMP%] .preview-dialogue-line[_ngcontent-%COMP%]{align-self:flex-start;max-width:86%;padding:9px 11px;border:1px solid #dbeafe;border-radius:10px;background:#eff6ff}.homework-builder-container[_ngcontent-%COMP%] .preview-dialogue-line--b[_ngcontent-%COMP%]{align-self:flex-end;border-color:#ccfbf1;background:#f0fdfa}.homework-builder-container[_ngcontent-%COMP%] .preview-dialogue-line[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{display:block;margin-bottom:2px;color:#2563eb;font-size:11px;font-weight:800}.homework-builder-container[_ngcontent-%COMP%] .preview-dialogue-line--b[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{color:#0f766e}.homework-builder-container[_ngcontent-%COMP%] .preview-dialogue-line[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{margin:0;color:#1f2937;font-size:13px;line-height:1.45}.homework-builder-container[_ngcontent-%COMP%] .preview-record-button[_ngcontent-%COMP%]{width:100%;padding:10px 12px;border:none;border-radius:8px;background:#e0f2fe;color:#0369a1;font-size:13px;font-weight:800}@media (max-width: 1180px){.homework-builder-container[_ngcontent-%COMP%]{padding:20px}.homework-builder-container[_ngcontent-%COMP%] .builder-workspace[_ngcontent-%COMP%]{grid-template-columns:1fr}.homework-builder-container[_ngcontent-%COMP%] .student-preview-pane[_ngcontent-%COMP%]{position:static}.homework-builder-container[_ngcontent-%COMP%] .student-preview-shell[_ngcontent-%COMP%]{min-height:auto;max-height:none;overflow-y:visible}.homework-builder-container[_ngcontent-%COMP%] .question-validation[_ngcontent-%COMP%]{margin-left:0}}.parts-section[_ngcontent-%COMP%] .tab-nav[_ngcontent-%COMP%]{display:flex;gap:0;border-bottom:2px solid #e5e7eb;overflow-x:auto;-webkit-overflow-scrolling:touch}.parts-section[_ngcontent-%COMP%] .tab-nav[_ngcontent-%COMP%]::-webkit-scrollbar{display:none}.parts-section[_ngcontent-%COMP%] .tab-btn[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px;background:none;border:none;border-bottom:2px solid transparent;margin-bottom:-2px;padding:12px 20px;font-size:14px;font-weight:500;color:#6b7280;cursor:pointer;white-space:nowrap;transition:color .15s,border-color .15s}.parts-section[_ngcontent-%COMP%] .tab-btn[_ngcontent-%COMP%]:hover{color:#374151}.parts-section[_ngcontent-%COMP%] .tab-btn.active[_ngcontent-%COMP%]{color:#29e4e4;border-bottom-color:#29e4e4;font-weight:600}.parts-section[_ngcontent-%COMP%] .tab-btn.tab-btn--warn[_ngcontent-%COMP%]{color:#b45309}.parts-section[_ngcontent-%COMP%] .tab-btn.tab-btn--warn.active[_ngcontent-%COMP%]{color:#b45309;border-bottom-color:#f59e0b}.parts-section[_ngcontent-%COMP%] .tab-count[_ngcontent-%COMP%]{min-width:20px;padding:1px 6px;border-radius:10px;background:#f3f4f6;font-size:12px;font-weight:600}.parts-section[_ngcontent-%COMP%] .tab-btn.active[_ngcontent-%COMP%] .tab-count[_ngcontent-%COMP%]{background:#29e4e42e}.parts-section[_ngcontent-%COMP%] .hint--warn[_ngcontent-%COMP%]{margin-top:10px;color:#b45309}.part-move[_ngcontent-%COMP%]{display:flex;gap:6px}.part-move[_ngcontent-%COMP%] .btn-part[_ngcontent-%COMP%]{padding:6px 12px;border:1px solid #d1d5db;border-radius:6px;background:#fff;font-size:13px;color:#6b7280;cursor:pointer;transition:background .15s,border-color .15s,color .15s}.part-move[_ngcontent-%COMP%] .btn-part[_ngcontent-%COMP%]:hover:not(:disabled){border-color:#9ca3af;color:#374151}.part-move[_ngcontent-%COMP%] .btn-part.active[_ngcontent-%COMP%]{border-color:#29e4e4;background:#29e4e41f;color:#0f766e;font-weight:600}.part-move[_ngcontent-%COMP%] .btn-part[_ngcontent-%COMP%]:disabled{cursor:not-allowed;opacity:.55}.ec-format__choice[_ngcontent-%COMP%]{display:inline-flex;gap:4px;padding:3px;border:1px solid #e2e9ec;border-radius:999px;background:#f7fafa}.ec-format__choice[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{padding:6px 14px;border:0;border-radius:999px;background:transparent;color:#64747e;font:inherit;font-size:12.5px;font-weight:700;cursor:pointer}.ec-format__choice[_ngcontent-%COMP%] button.is-on[_ngcontent-%COMP%]{background:#fff;color:#0f766e;box-shadow:0 1px 3px #14212a1a}.authoring-dialog-backdrop[_ngcontent-%COMP%]{align-items:center;background:#0f172a7a;display:flex;inset:0;justify-content:center;padding:20px;position:fixed;z-index:1100}"]})}}return t})();function Xt(){return crypto.randomUUID()}var c_=(t,c)=>c.userId,Jt=t=>({count:t});function d_(t,c){if(t&1){let e=M();a(0,"app-homework-queue-v2",4),x("openEntry",function(i){C(e);let l=d();return f(l.openQueueEntry(i))}),r()}if(t&2){let e=d();p("entries",e.submissions)("loading",e.loading)}}function p_(t,c){t&1&&(a(0,"p",11),s(1),_(2,"translate"),r()),t&2&&(o(),g(m(2,1,"HOMEWORK_BUILDER.SUBMISSIONS")))}function __(t,c){t&1&&(a(0,"div",8)(1,"p"),s(2),_(3,"translate"),r()()),t&2&&(o(2),g(m(3,1,"COMMON.LOADING")))}function m_(t,c){t&1&&(a(0,"div",9)(1,"p"),s(2),_(3,"translate"),r()()),t&2&&(o(2),g(m(3,1,"HOMEWORK_BUILDER.NO_SUBMISSIONS")))}function g_(t,c){if(t&1){let e=M();a(0,"div",12)(1,"span"),s(2),_(3,"translate"),r(),a(4,"button",15),_(5,"translate"),x("click",function(){C(e);let i=d(3);return f(i.deleteErrorKey="")}),s(6,"\xD7"),r()()}if(t&2){let e=d(3);o(2),g(m(3,2,e.deleteErrorKey)),o(2),R("aria-label",m(5,4,"COMMON.DISMISS"))}}function u_(t,c){t&1&&(a(0,"div",9)(1,"p"),s(2),_(3,"translate"),r()()),t&2&&(o(2),g(m(3,1,"HOMEWORK_BUILDER.NO_SUBMISSIONS_MATCH_FILTER")))}function C_(t,c){if(t&1&&(a(0,"span",29),s(1),_(2,"translate"),r()),t&2){let e,n=c.$implicit,i=d(2).$implicit,l=d(4);p("ngClass",l.partChipClass(i,n.sectionId))("hidden",!l.partState(i,n.sectionId))("title",((e=l.partState(i,n.sectionId))==null?null:e.status)||""),o(),g(m(2,4,n.labelKey))}}function f_(t,c){if(t&1&&(a(0,"div",27),h(1,C_,3,6,"span",28),r()),t&2){let e=d(5
8);o(),p("ngForOf",e.parts)}}function h_(t,c){if(t&1&&(a(0,"span",30),s(1),r()),t&2){let e=d().$implicit;p("ngClass","status-"+e.status),o(),g(e.status)}}function x_(t,c){t&1&&(a(0,"span",20),s(1),_(2,"translate"),r()),t&2&&(o(),g(m(2,1,"HOMEWORK_BUILDER.UNGRADED")))}function b_(t,c){t&1&&(a(0,"span",21),s(1),_(2,"translate"),r()),t&2&&(o(),g(m(2,1,"HOMEWORK_BUILDER.DRAFT")))}function v_(t,c){t&1&&(a(0,"span",22),s(1),_(2,"translate"),r()),t&2&&(o(),g(m(2,1,"HOMEWORK_BUILDER.PUBLISHED")))}function O_(t,c){t&1&&(a(0,"span",23),s(1),_(2,"translate"),r()),t&2&&(o(),g(m(2,1,"HOMEWORK_BUILDER.AI_READY")))}function M_(t,c){if(t&1){let e=M();a(0,"tr")(1,"td"),s(2),r(),a(3,"td"),s(4),r(),a(5,"td")(6,"span",17),s(7),r()(),a(8,"td"),s(9),_(10,"date"),r(),a(11,"td"),h(12,f_,2,1,"div",18)(13,h_,2,2,"ng-template",null,0,ke),r(),a(15,"td")(16,"div",19),h(17,x_,3,3,"span",20)(18,b_,3,3,"span",21)(19,v_,3,3,"span",22)(20,O_,3,3,"span",23),r()(),a(21,"td")(22,"div",24)(23,"button",25),x("click",function(){let i=C(e).$implicit,l=d(4);return f(l.reviewSubmission(i.userId))}),s(24),_(25,"translate"),r(),a(26,"button",26),x("click",function(){let i=C(e).$implicit,l=d(4);return f(l.openDeleteConfirmation(i))}),s(27),_(28,"translate"),_(29,"translate"),r()()()()}if(t&2){let e=c.$implicit,n=pe(14),i=d(4);o(2),g(e.studentName),o(2),N("",e.totalScore," / ",e.totalPoints,""),o(2),p("ngClass",i.getScoreClass(e.percentageScore)),o(),b(" ",e.percentageScore,"% "),o(2),g(B(10,15,e.submittedAt,"medium")),o(3),p("ngIf",i.hasPartStates(e))("ngIfElse",n),o(5),P(17,!e.gradingStatus||e.gradingStatus==="ungraded"?17:-1),o(),P(18,e.gradingStatus==="draft"?18:-1),o(),P(19,e.gradingStatus==="published"?19:-1),o(),P(20,e.hasAiSuggestions?20:-1),o(4),b(" ",m(25,18,"HOMEWORK_BUILDER.REVIEW")," "),o(2),p("disabled",i.deletingSubmissionFor===e.userId),o(),b(" ",i.deletingSubmissionFor===e.userId?m(28,20,"COMMON.LOADING"):m(29,22,"HOMEWORK_BUILDER.DELETE_SUBMISSION")," ")}}function P_(t,c){if(t&1&&(a(0,"table",16)(1,"thead")(2,"tr")(3,"th"),s(4),_(5,"translate"),r(),a(6,"th"),s(7),_(8,"translate"),r(),a(9,"th"),s(10),_(11,"translate"),r(),a(12,"th"),s(13),_(14,"translate"),r(),a(15,"th"),s(16),_(17,"translate"),r(),a(18,"th"),s(19),_(20,"translate"),r(),a(21,"th"),s(22),_(23,"translate"),r()()(),a(24,"tbody"),z(25,M_,30,24,"tr",null,c_),r()()),t&2){let e=d(3);o(4),g(m(5,7,"HOMEWORK_BUILDER.STUDENT")),o(3),g(m(8,9,"HOMEWORK_BUILDER.SCORE")),o(3),g(m(11,11,"HOMEWORK_BUILDER.PERCENTAGE")),o(3),g(m(14,13,"HOMEWORK_BUILDER.SUBMITTED")),o(3),g(m(17,15,"HOMEWORK_BUILDER.STATUS")),o(3),g(m(20,17,"HOMEWORK_BUILDER.GRADING")),o(3),g(m(23,19,"HOMEWORK_BUILDER.ACTIONS")),o(3),K(e.filteredSubmissions)}}function S_(t,c){if(t&1){let e=M();h(0,g_,7,6,"div",12),a(1,"div",13)(2,"button",14),x("click",function(){C(e);let i=d(2);return f(i.setFilter("all"))}),s(3),_(4,"translate"),r(),a(5,"button",14),x("click",function(){C(e);let i=d(2);return f(i.setFilter("ungraded"))}),s(6),_(7,"translate"),r(),a(8,"button",14),x("click",function(){C(e);let i=d(2);return f(i.setFilter("draft"))}),s(9),_(10,"translate"),r(),a(11,"button",14),x("click",function(){C(e);let i=d(2);return f(i.setFilter("published"))}),s(12),_(13,"translate"),r(),a(14,"button",14),x("click",function(){C(e);let i=d(2);return f(i.setFilter("awaiting_student"))}),s(15),_(16,"translate"),r()(),h(17,u_,4,3,"div",9)(18,P_,27,21)}if(t&2){let e=d(2);P(0,e.deleteErrorKey?0:-1),o(2),y("active",e.statusFilter==="all"),o(),b(" ",B(4,17,"HOMEWORK_BUILDER.ALL_WITH_COUNT",D(32,Jt,e.statusCounts.all))," "),o(2),y("active",e.statusFilter==="ungraded"),o(),b(" ",B(7,20,"HOMEWORK_BUILDER.UNGRADED_WITH_COUNT",D(34,Jt,e.statusCounts.ungraded))," "),o(2),y("active",e.statusFilter==="draft"),o(),b(" ",B(10,23,"HOMEWORK_BUILDER.DRAFT_WITH_COUNT",D(36,Jt,e.statusCounts.draft))," "),o(2),y("active",e.statusFilter==="published"),o(),b(" ",B(13,26,"HOMEWORK_BUILDER.PUBLISHED_WITH_COUNT",D(38,Jt,e.statusCounts.published))," "),o(2),y("active",e.statusFilter==="awaiting_student"),o(),b(" ",B(16,29,"HOMEWORK_BUILDER.AWAITING_STUDENT_WITH_COUNT",D(40,Jt,e.statusCounts.awaitingStudent))," "),o(2),P(17,e.filteredSubmissions.length===0?17:18)}}
8function w_(t,c){if(t&1&&(a(0,"p",33),s(1),r()),t&2){let e=d(3);o(),g(e.pendingDeleteStudentLabel)}}function E_(t,c){if(t&1){let e=M();a(0,"div",31),x("click",function(){C(e);let i=d(2);return f(i.cancelDeleteSubmission())}),a(1,"section",32),_(2,"translate"),x("click",function(i){return C(e),f(i.stopPropagation())}),a(3,"h3"),s(4),_(5,"translate"),r(),a(6,"p"),s(7),_(8,"translate"),r(),h(9,w_,2,1,"p",33),a(10,"div",34)(11,"button",35),x("click",function(){C(e);let i=d(2);return f(i.cancelDeleteSubmission())}),s(12),_(13,"translate"),r(),a(14,"button",36),x("click",function(){C(e);let i=d(2);return f(i.confirmDeleteSubmission())}),s(15),_(16,"translate"),r()()()()}if(t&2){let e=d(2);o(),R("aria-label",m(2,7,"HOMEWORK_BUILDER.DELETE_SUBMISSION_TITLE")),o(3),g(m(5,9,"HOMEWORK_BUILDER.DELETE_SUBMISSION_TITLE")),o(3),g(m(8,11,"HOMEWORK_BUILDER.DELETE_SUBMISSION_CONFIRM")),o(2),P(9,e.pendingDeleteStudentLabel?9:-1),o(3),b(" ",m(13,13,"COMMON.CANCEL")," "),o(2),p("disabled",!!e.deletingSubmissionFor),o(),b(" ",m(16,15,"HOMEWORK_BUILDER.DELETE_SUBMISSION")," ")}}function I_(t,c){if(t&1){let e=M();G(0),a(1,"div",5)(2,"button",6),x("click",function(){C(e);let i=d();return f(i.goBack())}),s(3),_(4,"translate"),r(),h(5,p_,3,3,"p",7),a(6,"h2"),s(7),_(8,"translate"),r()(),h(9,__,4,3,"div",8)(10,m_,4,3,"div",9)(11,S_,19,42)(12,E_,17,17,"div",10),q()}if(t&2){let e=d();o(3),b("\u2190 ",m(4,7,"HOMEWORK_BUILDER.BACK_TO_HOMEWORK"),""),o(2),p("ngIf",e.homeworkTitle),o(2),g(e.homeworkTitle||m(8,9,"HOMEWORK_BUILDER.SUBMISSIONS")),o(2),P(9,e.loading?9:-1),o(),P(10,!e.loading&&e.submissions.length===0?10:-1),o(),P(11,!e.loading&&e.submissions.length>0?11:-1),o(),P(12,e.pendingDeleteUserId?12:-1)}}var qr={ungraded:0,draft:1,published:2},Wr=(()=>{class t{constructor(e,n,i,l,u){this.route=e,this.router=n,this.homeworkService=i,this.navigationHistory=l,this.featureFlags=u,this.destroy$=new ve,this.GOLDEN_BATCH="Lzra9GRhA5960I3FVEVS",this.submissions=[],this.useV2=!1,this.loading=!0,this.deleteErrorKey="",this.deletingSubmissionFor=null,this.pendingDeleteUserId=null,this.pendingDeleteStudentLabel="",this.homeworkTitle="",this.statusFilter="all",this.parts=ir,this.partState=or,this.hasPartStates=rr,this.partChipClass=ar}ngOnInit(){this.batchId=this.route.snapshot.paramMap.get("batchId")||"",this.levelId=this.route.snapshot.paramMap.get("levelId")||"",this.sessionId=this.route.snapshot.paramMap.get("sessionId")||"",this.homeworkId=this.route.snapshot.paramMap.get("homeworkId")||"",this.courseId=this.route.snapshot.queryParamMap.get("courseId")||"",this.cohortId=this.route.snapshot.queryParamMap.get("cohortId")||"",!this.cohortId&&this.batchId&&this.batchId!==this.GOLDEN_BATCH&&(this.cohortId=this.batchId),this.loadHomeworkTitle(),this.loadSubmissions(),this.featureFlags&&this.featureFlags.isEnabled("frHomework3Part").then(e=>{this.useV2=e}).catch(()=>{this.useV2=!1})}ngOnDestroy(){this.destroy$.next(),this.destroy$.complete()}loadSubmissions(){this.loading=!0,this.homeworkService.getSubmissions(this.sessionId,this.homeworkId,this.cohortId||void 0).pipe(U(this.destroy$)).subscribe({next:e=>{e?.success&&(this.submissions=e.data||[]),this.loading=!1},error:()=>{this.loading=!1}})}loadHomeworkTitle(){!this.sessionId||!this.homeworkId||this.homeworkService.getHomework(this.sessionId).pipe(U(this.destroy$)).subscribe({next:e=>{let n=Array.isArray(e?.data)?e.data.find(i=>i.homeworkId===this.homeworkId):null;this.homeworkTitle=n?.title||""},error:()=>{this.homeworkTitle=""}})}openDeleteConfirmation(e){this.deletingSubmissionFor||(this.deleteErrorKey="",this.pendingDeleteUserId=e.userId,this.pendingDeleteStudentLabel=e.studentName||e.userId)}cancelDeleteSubmission(){this.pendingDeleteUserId=null,this.pendingDeleteStudentLabel=""}confirmDeleteSubmission(){if(!this.pendingDeleteUserId||this.deletingSubmissionFor)return;let e=this.pendingDeleteUserId;this.cancelDeleteSubmission(),this.deleteSubmission(e)}deleteSubmission(e){this.deletingSubmissionFor=e,this.deleteErrorKey="",this.homeworkService.deleteSubmission(this.sessionId,this.homeworkId,e).pipe(U(this.destroy$)).subscribe({next:()=>{this.deletingSubmissionFor=null,this.loadSubmissions()},error:n=>{if(this.deletingSubmissionFor=null,n?.status===404){this.loadSubmissions();return}
8this.deleteErrorKey="HOMEWORK_BUILDER.FAILED_DELETE_SUBMISSION_RETRY"}})}getEffectiveGradingStatus(e){return e.gradingStatus||"ungraded"}isAwaitingStudent(e){return e.queueKind==="awaiting_student"}sortedSubmissions(e){return[...e].sort((n,i)=>{let l=qr[this.getEffectiveGradingStatus(n)]??0,u=qr[this.getEffectiveGradingStatus(i)]??0;return l-u})}get filteredSubmissions(){let e;switch(this.statusFilter){case"ungraded":e=this.submissions.filter(n=>!this.isAwaitingStudent(n)&&(!n.gradingStatus||n.gradingStatus==="ungraded"));break;case"draft":e=this.submissions.filter(n=>!this.isAwaitingStudent(n)&&n.gradingStatus==="draft");break;case"published":e=this.submissions.filter(n=>!this.isAwaitingStudent(n)&&n.gradingStatus==="published");break;case"awaiting_student":e=this.submissions.filter(n=>this.isAwaitingStudent(n));break;default:e=this.submissions}return this.sortedSubmissions(e)}get statusCounts(){let e=this.submissions.filter(n=>!this.isAwaitingStudent(n));return{all:this.submissions.length,ungraded:e.filter(n=>!n.gradingStatus||n.gradingStatus==="ungraded").length,draft:e.filter(n=>n.gradingStatus==="draft").length,published:e.filter(n=>n.gradingStatus==="published").length,awaitingStudent:this.submissions.filter(n=>this.isAwaitingStudent(n)).length}}setFilter(e){this.statusFilter=e}getScoreClass(e){return e>=80?"score-high":e>=50?"score-mid":"score-low"}reviewSubmission(e,n){this.router.navigate(["/main/dashboard/cohorts/batches",this.batchId,"levels",this.levelId,"sessions",this.sessionId,"homework",this.homeworkId,"submissions",e,"review"],{queryParams:{courseId:this.courseId,cohortId:this.cohortId,queueKind:n||void 0}})}openQueueEntry(e){this.reviewSubmission(e.userId,e.kind)}goBack(){this.navigationHistory.goBackOrFallback(["/main/dashboard/cohorts/batches",this.batchId,"levels",this.levelId,"sessions",this.sessionId,"homework"],{queryParams:{courseId:this.courseId,cohortId:this.cohortId}})}trackByUserId(e,n){return n.userId}static{this.\u0275fac=function(n){return new(n||t)(w(te),w(ue),w(mt),w(fe),w(un,8))}}static{this.\u0275cmp=H({type:t,selectors:[["app-submission-list"]],decls:3,vars:2,consts:[["overallStatus",""],[1,"submission-list-container"],[3,"entries","loading","openEntry",4,"ngIf"],[4,"ngIf"],[3,"openEntry","entries","loading"],[1,"header"],[1,"btn-back",3,"click"],["class","header-kicker",4,"ngIf"],[1,"loading-state"],[1,"empty-state"],["role","presentation",1,"confirm-modal-overlay"],[1,"header-kicker"],["role","alert",1,"delete-error"],[1,"filter-tabs"],[1,"filter-tab",3,"click"],["type","button",3,"click"],[1,"submissions-table"],[1,"score-badge",3,"ngClass"],["class","part-chips",4,"ngIf","ngIfElse"],[1,"grading-indicators"],[1,"grading-badge","ungraded"],[1,"grading-badge","draft"],[1,"grading-badge","published"],[1,"ai-ready"],[1,"action-buttons"],[1,"btn-review",3,"click"],[1,"btn-delete",3,"click","disabled"],[1,"part-chips"],["class","part-chip",3,"ngClass","hidden","title",4,"ngFor","ngForOf"],[1,"part-chip",3,"ngClass","hidden","title"],[1,"status-badge",3,"ngClass"],["role","presentation",1,"confirm-modal-overlay",3,"click"],["role","dialog","aria-modal","true",1,"confirm-modal",3,"click"],[1,"confirm-target"],[1,"confirm-actions"],["type","button",1,"btn-cancel",3,"click"],["type","button",1,"btn-danger-confirm",3,"click","disabled"]],template:function(n,i){n&1&&(a(0,"div",1),h(1,d_,1,2,"app-homework-queue-v2",2)(2,I_,13,11,"ng-container",3),r()),n&2&&(o(),p("ngIf",i.useV2),o(),p("ngIf",!i.useV2))},dependencies:[yn,ce,Q,$,yt,j],styles:[".submission-list-container[_ngcontent-%COMP%]{padding:24px}.submission-list-container[_ngcontent-%COMP%] .header[_ngcontent-%COMP%]{margin-bottom:24px}.submission-list-container[_ngcontent-%COMP%] .header[_ngcontent-%COMP%] .btn-back[_ngcontent-%COMP%]{background:none;border:none;color:#6b7280;cursor:pointer;padding:0;margin-bottom:8px;font-size:14px}.submission-list-container[_ngcontent-%COMP%] .header[_ngcontent-%COMP%] .btn-back[_ngcontent-%COMP%]:hover{color:#374151}.submission-list-container[_ngcontent-%COMP%] .header[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0;font-size:24px;font-weight:600}.submission-list-container[_ngcontent-%COMP%] .header[_ngcontent-%COMP%] .header-kicker[_ngcontent-%COMP%]{margin:0 0 4px;color:#21b6b6;font-size:11px;font-weight:800;letter-spacing:.08em;text-transform:uppercase}.submission-list-container[_ngcontent-%COMP%] .loading-state[_ngcontent-%COMP%], .submission-list-container[_ngcontent-%COMP%] .empty-state[_ngcontent-%COMP%]{text-align:center;padding:48px;color:#6b7280}.submission-list-container[_ngcontent-%COMP%] .filter-tabs[_ngcontent-%COMP%]{display:flex;gap:4px;margin-bottom:16px;flex-wrap:wrap}.submission-list-container[_ngcontent-%COMP%] .filter-tab[_ngcontent-%COMP%]{padding:6px 14px;border-radius:20px;border:1.5px solid #E5E7EB;background:#fff;font-family:Montserrat,sans-serif;font-size:12px;font-weight:600;color:#6b7280;cursor:pointer;transition:border-color .15s,background .15s,color .15s}.submission-list-container[_ngcontent-%COMP%] .filter-tab.active[_ngcontent-%COMP%]{background:#eefdfd;border-color:#21b6b6;color:#0f5252}.submission-list-container[_ngcontent-%COMP%] .filter-tab[_ngcontent-%COMP%]:hover:not(.active){border-color:#21b6b6}.submission-list-container[_ngcontent-%COMP%] .delete-error[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px;padding:10px 12px;border:1px solid #fecaca;border-radius:8px;background:#fef2f2;color:#991b1b;font-size:13px;font-weight:600}.submission-list-container[_ngcontent-%COMP%] .delete-error[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{width:24px;height:24px;border:none;border-radius:50%;background:transparent;color:#991b1b;cursor:pointer;font-size:18px;line-height:1}.submission-list-container[_ngcontent-%COMP%] .delete-error[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:hover{background:#fee2e2}.submission-list-container[_ngcontent-%COMP%] .submissions-table[_ngcontent-%COMP%]{width:100%;border-collapse:collapse;background:#fff;border-radius:12px;overflow:hidden;border:1px solid #e5e7eb}.submission-list-container[_ngcontent-%COMP%] .submissions-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%]{text-align:left;padding:12px 16px;background:#f9fafb;font-size:13px;font-weight:600;color:#374151;border-bottom:1px solid #e5e7eb}.submission-list-container[_ngcontent-%COMP%] .submissions-table[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{padding:12px 16px;font-size:14px;border-bottom:1px solid #f3f4f6}.submission-list-container[_ngcontent-%COMP%] .submissions-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:hover{background:#f9fafb}.submission-list-container[_ngcontent-%COMP%] .score-badge[_ngcontent-%COMP%]{padding:4px 10px;border-radius:20px;font-size:12px;font-weight:600}.submission-list-container[_ngcontent-%COMP%] .score-high[_ngcontent-%COMP%]{background:#dcfce7;color:#166534}.submission-list-container[_ngcontent-%COMP%] .score-mid[_ngcontent-%COMP%]{background:#fef3c7;color:#92400e}.submission-list-container[_ngcontent-%COMP%] .score-low[_ngcontent-%COMP%]{background:#fee2e2;color:#991b1b}.submission-list-container[_ngcontent-%COMP%] .status-badge[_ngcontent-%COMP%]{padding:4px 10px;border-radius:20px;font-size:11px;font-weight:500;text-transform:uppercase}.submission-list-container[_ngcontent-%COMP%] .status-graded[_ngcontent-%COMP%]{background:#dcfce7;color:#166534}.submission-list-container[_ngcontent-%COMP%] .status-submitted[_ngcontent-%COMP%]{background:#dbeafe;color:#1e40af}.submission-list-container[_ngcontent-%COMP%] .status-pending_review[_ngcontent-%COMP%]{background:#fef3c7;color:#92400e}.submission-list-container[_ngcontent-%COMP%] .status-reviewed[_ngcontent-%COMP%]{background:#dcfce7;color:#166534}.submission-list-container[_ngcontent-%COMP%] .status-ai_graded[_ngcontent-%COMP%], .submission-list-container[_ngcontent-%COMP%] .status-needs_revision[_ngcontent-%COMP%]{background:#ede9fe;color:#5b21b6}.submission-list-container[_ngcontent-%COMP%] .grading-indicators[_ngcontent-%COMP%]{display:flex;gap:4px;flex-wrap:wrap;align-items:center}.submission-list-container[_ngcontent-%COMP%] .grading-badge[_ngcontent-%COMP%]{font-size:10px;font-weight:700;padding:2px 8px;border-radius:4px}.submission-list-container[_ngcontent-%COMP%] .grading-badge.ungraded[_ngcontent-%COMP%]{background:#fee2e2;color:#991b1b}.submission-list-container[_ngcontent-%COMP%] .grading-badge.draft[_ngcontent-%COMP%]{background:#fef3c7;color:#92400e}.submission-list-container[_ngcontent-%COMP%] .grading-badge.published[_ngcontent-%COMP%]{background:#d1fae5;color:#065f46}.submission-list-container[_ngcontent-%COMP%] .ai-ready[_ngcontent-%COMP%]{font-size:10px;font-weight:600;padding:2px 6px;border-radius:4px;background:#eefdfd;color:#188888}.submission-list-container[_ngcontent-%COMP%] .action-buttons[_ngcontent-%COMP%]{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.submission-list-container[_ngcontent-%COMP%] .btn-review[_ngcontent-%COMP%]{background:#29e4e4;color:#0f172a;border:none;border-radius:6px;padding:5px 14px;font-size:13px;font-weight:600;cursor:pointer;white-space:nowrap}.submission-list-container[_ngcontent-%COMP%] .btn-review[_ngcontent-%COMP%]:hover{background:#22d3d3}
8.submission-list-container[_ngcontent-%COMP%] .btn-delete[_ngcontent-%COMP%]{background:#fff;color:#dc2626;border:1px solid #dc2626;border-radius:6px;padding:5px 12px;font-size:13px;font-weight:600;cursor:pointer;white-space:nowrap}.submission-list-container[_ngcontent-%COMP%] .btn-delete[_ngcontent-%COMP%]:hover{background:#fef2f2}.submission-list-container[_ngcontent-%COMP%] .btn-delete[_ngcontent-%COMP%]:disabled{cursor:not-allowed;opacity:.6}.submission-list-container[_ngcontent-%COMP%] .confirm-modal-overlay[_ngcontent-%COMP%]{position:fixed;inset:0;z-index:1050;display:flex;align-items:center;justify-content:center;padding:16px;background:#1118277a}.submission-list-container[_ngcontent-%COMP%] .confirm-modal[_ngcontent-%COMP%]{width:min(100%,420px);background:#fff;border-radius:8px;box-shadow:0 20px 40px #0f172a2e;padding:20px}.submission-list-container[_ngcontent-%COMP%] .confirm-modal[_ngcontent-%COMP%] h3[_ngcontent-%COMP%]{margin:0 0 8px;color:#111827;font-size:18px;font-weight:700}.submission-list-container[_ngcontent-%COMP%] .confirm-modal[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{margin:0;color:#4b5563;font-size:14px;line-height:1.5}.submission-list-container[_ngcontent-%COMP%] .confirm-target[_ngcontent-%COMP%]{margin-top:12px!important;padding:10px 12px;border-radius:8px;background:#f9fafb;color:#111827!important;font-weight:600;overflow-wrap:anywhere}.submission-list-container[_ngcontent-%COMP%] .confirm-actions[_ngcontent-%COMP%]{display:flex;justify-content:flex-end;gap:10px;margin-top:20px}.submission-list-container[_ngcontent-%COMP%] .btn-cancel[_ngcontent-%COMP%], .submission-list-container[_ngcontent-%COMP%] .btn-danger-confirm[_ngcontent-%COMP%]{border:none;border-radius:8px;padding:10px 14px;font-size:13px;font-weight:700;cursor:pointer}.submission-list-container[_ngcontent-%COMP%] .btn-cancel[_ngcontent-%COMP%]:disabled, .submission-list-container[_ngcontent-%COMP%] .btn-danger-confirm[_ngcontent-%COMP%]:disabled{cursor:not-allowed;opacity:.6}.submission-list-container[_ngcontent-%COMP%] .btn-cancel[_ngcontent-%COMP%]{background:#f3f4f6;color:#374151}.submission-list-container[_ngcontent-%COMP%] .btn-cancel[_ngcontent-%COMP%]:hover{background:#e5e7eb}.submission-list-container[_ngcontent-%COMP%] .btn-danger-confirm[_ngcontent-%COMP%]{background:#dc2626;color:#fff}.submission-list-container[_ngcontent-%COMP%] .btn-danger-confirm[_ngcontent-%COMP%]:hover{background:#b91c1c}.part-chips[_ngcontent-%COMP%]{display:flex;gap:4px;flex-wrap:wrap}.part-chip[_ngcontent-%COMP%]{padding:2px 8px;border-radius:10px;border:1px solid transparent;font-size:11px;font-weight:700;letter-spacing:.02em}.part-chip.done[_ngcontent-%COMP%]{background:#ecfdf5;border-color:#a7f3d0;color:#047857}.part-chip.pending[_ngcontent-%COMP%]{background:#fffbeb;border-color:#fde68a;color:#b45309}.part-chip.started[_ngcontent-%COMP%]{background:#eff6ff;border-color:#bfdbfe;color:#1d4ed8}.part-chip.todo[_ngcontent-%COMP%]{background:#f3f4f6;border-color:#e5e7eb;color:#6b7280}.part-chip.revision[_ngcontent-%COMP%]{background:#ede9fe;border-color:#ddd6fe;color:#5b21b6}"]})}}return t})();function y_(t,c){t&1&&(a(0,"label"),s(1,"Student Email(s)"),r())}function k_(t,c){if(t&1){let e=M();a(0,"button",25),x("click",function(){C(e);let i=d().index,l=d(2);return f(l.removeBulkEmail(i))}),s(1,"\xD7"),r()}}function A_(t,c){if(t&1){let e=M();a(0,"div",20)(1,"div",13),h(2,y_,2,0,"label",21),a(3,"div",22)(4,"input",23),T("ngModelChange",function(i){let l=C(e).index,u=d(2);return A(u.bulkEmails[l],i)||(u.bulkEmails[l]=i),f(i)}),r(),h(5,k_,2,0,"button",24),r()()()}if(t&2){let e=c.index,n=d(2);o(2),p("ngIf",e===0),o(2),k("ngModel",n.bulkEmails[e]),o(),p("ngIf",n.bulkEmails.length>1)}}function T_(t,c){if(t&1&&(a(0,"option",26),s(1),r()),t&2){let e=c.$implicit;p("value",e),o(),g(e)}}function R_(t,c){t&1&&(a(0,"span",34),s(1,"DRY RUN"),r())}function D_(t,c){if(t&1&&(a(0,"tr")(1,"td"),s(2),r(),a(3,"td")(4,"span",37),s(5),r()(),a(6,"td"),s(7),r()()),t&2){let e=c.$implicit;o(2),g(e.email),o(2),p("ngClass",e.success?"result-ok":"result-err"),o(),b(" ",e.success?"OK":"Failed"," "),o(2),g(e.reason||"\u2014")}}function B_(t,c){if(t&1&&(a(0,"table",35)(1,"thead")(2,"tr")(3,"th"),s(4,"Email"),r(),a(5,"th"),s(6,"Status"),r(),a(7,"th"),s(8,"Reason"),r()()(),a(9,"tbody"),h(10,D_,8,4,"tr",36),r()()),t&2){let e=d(3);o(10),p("ngForOf",e.bulkResult.details)("ngForTrackBy",e.trackByIndex)}}function L_(t,c){if(t&1&&(a(0,"div",27)(1,"div",28)(2,"span",29),s(3),r(),a(4,"span",30),s(5),r(),a(6,"span",31),s(7),r(),h(8,R_,2,0,"span",32),r(),h(9,B_,11,2,"table",33),r()),t&2){let e=d(2);o(3),b("Total: ",e.bulkResult.total,""),o(2),b("Successful: ",e.bulkResult.successful,""),o(2),b("Failed: ",e.bulkResult.failed,""),o(),p("ngIf",e.bulkDryRun),o(),p("ngIf",e.bulkResult.details&&e.bulkResult.details.length>0)}}function N_(t,c){if(t&1){let e=M();a(0,"div",8)(1,"h3"),s(2,"Bulk Enroll Students"),r(),a(3,"div",9),h(4,A_,6,3,"div",10),a(5,"button",11),x("click",function(){C(e);let i=d();return f(i.addBulkEmail())}),s(6,"+ Add email"),r()(),a(7,"div",12)(8,"div",13)(9,"label"),s(10,"Start Level"),r(),a(11,"select",14),T("ngModelChange",function(i){C(e);let l=d();return A(l.bulkLevel,i)||(l.bulkLevel=i),f(i)}),h(12,T_,2,2,"option",15),r()(),a(13,"div",16)(14,"label")(15,"input",17),T("ngModelChange",function(i){C(e);let l=d();return A(l.bulkDryRun,i)||(l.bulkDryRun=i),f(i)}),r(),s(16," Dry run (preview only, no actual enrollment) "),r()(),a(17,"button",18),x("click",function(){C(e);let i=d();return f(i.submitBulkEnroll())}),s(18),r()(),h(19,L_,10,5,"div",19),r()}if(t&2){let e=d();
8o(4),p("ngForOf",e.bulkEmails)("ngForTrackBy",e.trackByIndex)("ngForTrackBy",e.trackByIndex),o(7),k("ngModel",e.bulkLevel),o(),p("ngForOf",e.levels)("ngForTrackBy",e.trackByIndex),o(3),k("ngModel",e.bulkDryRun),o(2),p("disabled",e.bulkEnrolling),o(),b(" ",e.bulkEnrolling?"Processing...":e.bulkDryRun?"Preview":"Enroll All"," "),o(),p("ngIf",e.bulkResult)}}function V_(t,c){t&1&&(a(0,"div",38)(1,"p"),s(2,"Loading..."),r()())}function F_(t,c){t&1&&(a(0,"div",39)(1,"p"),s(2,"No students enrolled yet."),r()())}function U_(t,c){if(t&1&&(a(0,"option",26),s(1),r()),t&2){let e=c.$implicit;p("value",e),o(),g(e)}}function H_(t,c){if(t&1){let e=M();a(0,"select",49),T("ngModelChange",function(i){C(e);let l=d(3);return A(l.bulkActionLevel,i)||(l.bulkActionLevel=i),f(i)}),h(1,U_,2,2,"option",15),r()}if(t&2){let e=d(3);k("ngModel",e.bulkActionLevel),p("disabled",e.bulkApplying),o(),p("ngForOf",e.levels)("ngForTrackBy",e.trackByIndex)}}function G_(t,c){if(t&1){let e=M();a(0,"select",49),T("ngModelChange",function(i){C(e);let l=d(3);return A(l.bulkActionStatus,i)||(l.bulkActionStatus=i),f(i)}),a(1,"option",60),s(2,"active"),r(),a(3,"option",61),s(4,"paused"),r(),a(5,"option",62),s(6,"inactive"),r()()}if(t&2){let e=d(3);k("ngModel",e.bulkActionStatus),p("disabled",e.bulkApplying)}}function q_(t,c){if(t&1&&(a(0,"span",63),s(1),r()),t&2){let e=d(3);o(),b("",e.bulkApplied," updated")}}function W_(t,c){if(t&1&&(a(0,"span",64),s(1),r()),t&2){let e=d(3);o(),N(" ",e.bulkApplied," updated \xB7 ",e.bulkFailures.length," failed \u2014 the failed students stay selected, press Apply to retry them ")}}function z_(t,c){if(t&1){let e=M();a(0,"div",47)(1,"span",48),s(2),r(),a(3,"select",49),T("ngModelChange",function(i){C(e);let l=d(2);return A(l.bulkAction,i)||(l.bulkAction=i),f(i)}),a(4,"option",50),s(5,"Choose an action\u2026"),r(),a(6,"option",51),s(7,"Change current level"),r(),a(8,"option",52),s(9,"Change start level"),r(),a(10,"option",53),s(11,"Set status"),r(),a(12,"option",54),s(13,"Mark dropped"),r()(),h(14,H_,2,4,"select",55)(15,G_,7,2,"select",55),a(16,"button",56),x("click",function(){C(e);let i=d(2);return f(i.applyBulk())}),s(17),r(),a(18,"button",57),x("click",function(){C(e);let i=d(2);return f(i.clearSelection())}),s(19,"Clear"),r(),h(20,q_,2,1,"span",58)(21,W_,2,2,"span",59),r()}if(t&2){let e=d(2);o(2),b("",e.selectedIds.size," selected"),o(),k("ngModel",e.bulkAction),p("disabled",e.bulkApplying),o(11),p("ngIf",e.bulkAction==="currentLevel"||e.bulkAction==="startLevel"),o(),p("ngIf",e.bulkAction==="status"),o(),p("disabled",!e.bulkAction||e.bulkApplying),o(),b(" ",e.bulkApplying?"Applying\u2026":"Apply"," "),o(),p("disabled",e.bulkApplying),o(2),p("ngIf",e.bulkApplied&&!e.bulkFailures.length),o(),p("ngIf",e.bulkFailures.length)}}function K_(t,c){if(t&1&&(a(0,"li"),s(1),r()),t&2){let e=c.$implicit;o(),N("",e.name," \u2014 ",e.reason,"")}}function $_(t,c){if(t&1&&(a(0,"ul",65),h(1,K_,2,2,"li",36),r()),t&2){let e=d(2);o(),p("ngForOf",e.bulkFailures)("ngForTrackBy",e.trackByIndex)}}function j_(t,c){if(t&1&&(a(0,"span"),s(1),r()),t&2){let e=d().$implicit;o(),b("",e.attendanceRate,"%")}}function Q_(t,c){t&1&&(a(0,"span",79),s(1,"\u2014"),r())}function Y_(t,c){if(t&1&&(a(0,"span"),s(1),r()),t&2){let e=d().$implicit,n=d(2);o(),g(n.formatDate(e.lastAttendedAt))}}function X_(t,c){t&1&&(a(0,"span",79),s(1,"\u2014"),r())}function J_(t,c){if(t&1){let e=M();a(0,"button",81),x("click",function(i){C(e);let l=d(2).$implicit,u=d(2);return f(u.setStatus(l,"active",i))}),s(1),_(2,"translate"),r()}t&2&&(o(),g(m(2,1,"COHORTS.ACTIONS.SET_ACTIVE")))}function Z_(t,c){if(t&1){let e=M();a(0,"button",81),x("click",function(i){C(e);let l=d(2).$implicit,u=d(2);return f(u.setStatus(l,"paused",i))}),s(1),_(2,"translate"),r()}t&2&&(o(),g(m(2,1,"COHORTS.ACTIONS.SET_PAUSED")))}function em(t,c){if(t&1){let e=M();a(0,"button",81),x("click",function(i){C(e);let l=d(2).$implicit,u=d(2);return f(u.setStatus(l,"inactive",i))}),s(1),_(2,"translate"),r()}t&2&&(o(),g(m(2,1,"COHORTS.ACTIONS.SET_INACTIVE")))}function tm(t,c){if(t&1&&(a(0,"option",26),s(1),r()),t&2){let e=c.$implicit;p("value",e),o(),g(e)}}function nm(t,c){if(t&1){let e=M();a(0,"div",86),x("click",function(i){return C(e),f(i.stopPropagation())}),a(1,"select",87),T("ngModelChange",function(i){C(e);let l=d(4);return A(l.startLevelTarget.newLevel,i)||(l.startLevelTarget.newLevel=i),f(i)}),x("click",function(i){return C(e),f(i.stopPropagation())}),h(2,tm,2,2,"option",15),r(),a(3,"button",88),x("click",function(i){C(e);let l=d(4);return f(l.submitStartLevel(i))}),s(4),_(5,"translate"),r(),a(6,"button",89),x("click",function(i){C(e);let l=d(4);return f(l.cancelStartLevel(i))}),s(7),_(8,"translate"),r()()}if(t&2){let e=d(4);o(),k("ngModel",e.startLevelTarget.newLevel),o(),p("ngForOf",e.levels)("ngForTrackBy",e.trackByIndex),o(2),g(m(5,5,"COHORTS.ENROLLMENT.OK")),o(3),g(m(8,7,"COHORTS.ENROLLMENT.CANCEL"))}}
8function im(t,c){if(t&1&&(a(0,"option",26),s(1),r()),t&2){let e=c.$implicit;p("value",e),o(),g(e)}}function om(t,c){if(t&1){let e=M();a(0,"div",86),x("click",function(i){return C(e),f(i.stopPropagation())}),a(1,"select",87),T("ngModelChange",function(i){C(e);let l=d(4);return A(l.transferLevelTarget.newLevel,i)||(l.transferLevelTarget.newLevel=i),f(i)}),x("click",function(i){return C(e),f(i.stopPropagation())}),h(2,im,2,2,"option",15),r(),a(3,"button",88),x("click",function(i){C(e);let l=d(4);return f(l.submitTransferLevel(i))}),s(4),_(5,"translate"),r(),a(6,"button",89),x("click",function(i){C(e);let l=d(4);return f(l.cancelTransferLevel(i))}),s(7),_(8,"translate"),r()()}if(t&2){let e=d(4);o(),k("ngModel",e.transferLevelTarget.newLevel),o(),p("ngForOf",e.levels)("ngForTrackBy",e.trackByIndex),o(2),g(m(5,5,"COHORTS.ENROLLMENT.OK")),o(3),g(m(8,7,"COHORTS.ENROLLMENT.CANCEL"))}}function rm(t,c){if(t&1){let e=M();a(0,"button",90),x("click",function(i){C(e);let l=d(2).$implicit,u=d(2);return f(u.markDropped(l,i))}),s(1),_(2,"translate"),r()}t&2&&(o(),g(m(2,1,"COHORTS.ACTIONS.DROP")))}function am(t,c){if(t&1){let e=M();a(0,"div",80)(1,"button",81),x("click",function(){C(e);let i=d().$implicit,l=d(2);return f(l.viewProgress(i))}),s(2),_(3,"translate"),r(),h(4,J_,3,3,"button",82)(5,Z_,3,3,"button",82)(6,em,3,3,"button",82),a(7,"button",81),x("click",function(i){C(e);let l=d().$implicit,u=d(2);return f(u.showStartLevel(l,i))}),s(8),_(9,"translate"),r(),h(10,nm,9,9,"div",83),a(11,"button",81),x("click",function(i){C(e);let l=d().$implicit,u=d(2);return f(u.showTransferLevel(l,i))}),s(12),_(13,"translate"),r(),h(14,om,9,9,"div",83)(15,rm,3,3,"button",84),a(16,"button",85),x("click",function(i){C(e);let l=d().$implicit,u=d(2);return f(u.removeStudent(l,i))}),s(17),_(18,"translate"),r()()}if(t&2){let e=d().$implicit,n=d(2);o(2),g(m(3,10,"COHORTS.ACTIONS.VIEW_PROGRESS")),o(2),p("ngIf",e.status!=="active"),o(),p("ngIf",e.status!=="paused"),o(),p("ngIf",e.status!=="inactive"),o(2),g(m(9,12,"COHORTS.ACTIONS.SET_START_LEVEL")),o(2),p("ngIf",n.startLevelTarget&&n.startLevelTarget.userId===e.userId),o(2),g(m(13,14,"COHORTS.ACTIONS.TRANSFER")),o(2),p("ngIf",n.transferLevelTarget&&n.transferLevelTarget.userId===e.userId),o(),p("ngIf",e.status!=="dropped"),o(2),g(m(18,16,"COHORTS.ACTIONS.REMOVE"))}}function sm(t,c){if(t&1){let e=M();a(0,"tr",66),x("click",function(){let i=C(e).$implicit,l=d(2);return f(l.viewProgress(i))}),a(1,"td",67),x("click",function(i){return C(e),f(i.stopPropagation())}),a(2,"input",45),x("click",function(i){let l=C(e).$implicit,u=d(2);return f(u.toggleSelected(l.userId,i))}),r()(),a(3,"td"),s(4),r(),a(5,"td"),s(6),r(),a(7,"td"),s(8),r(),a(9,"td"),s(10),r(),a(11,"td")(12,"div",68)(13,"div",69),v(14,"div",70),r(),a(15,"span",71),s(16),r()()(),a(17,"td"),h(18,j_,2,1,"span",21)(19,Q_,2,0,"span",72),r(),a(20,"td"),h(21,Y_,2,1,"span",21)(22,X_,2,0,"span",72),r(),a(23,"td")(24,"span",73),s(25),r()(),a(26,"td")(27,"span",74),s(28),r()(),a(29,"td",75),x("click",function(i){return C(e),f(i.stopPropagation())}),a(30,"div",76)(31,"button",77),_(32,"translate"),x("click",function(i){let l=C(e).$implicit,u=d(2);return f(u.toggleActionMenu(l.userId,i))}),s(33,"\u22EE"),r(),h(34,am,19,18,"div",78),r()()()}if(t&2){let e=c.$implicit,n=d(2);y("row-selected",n.isSelected(e.userId)),o(2),p("checked",n.isSelected(e.userId)),R("aria-label","Select "+(e.studentName||e.studentEmail)),o(2),g(e.studentName),o(2),g(e.studentEmail),o(2),g(e.startLevel),o(2),g(e.currentLevel),o(4),Ne("width",e.overallProgress.percent,"%"),o(2),b("",e.overallProgress.percent,"%"),o(2),p("ngIf",e.attendanceRate!==null),o(),p("ngIf",e.attendanceRate===null),o(2),p("ngIf",e.lastAttendedAt),o(),p("ngIf",!e.lastAttendedAt),o(2),p("ngClass",n.getPaymentClass(e.paymentStatus)),o(),g(e.paymentStatus),o(2),p("ngClass",n.getStatusClass(e.status)),o(),g(e.status),o(3),R("title",m(32,21,"COHORTS.ENROLLMENT.ACTIONS")),o(3),p("ngIf",n.activeActionMenu===e.userId)}}function lm(t,c){if(t&1){let e=M();a(0,"div",40),h(1,z_,22,10,"div",41)(2,$_,2,2,"ul",42),a(3,"table",43)(4,"thead")(5,"tr")(6,"th",44)(7,"input",45),x("click",function(i){C(e);let l=d();return f(l.toggleSelectAll(i))}),r()(),a(8,"th"),s(9),_(10,"translate"),r(),a(11,"th"),s(12),_(13,"translate"),r(),a(14,"th"),s(15),_(16,"translate"),r(),a(17,"th"),s(18),_(19,"translate"),r(),a(20,"th"),s(21),_(22,"translate"),r(),a(23,"th"),s(24),_(25,"translate"),r(),a(26,"th"),s(27),_(28,"translate"),r(),a(29,"th"),s(30),_(31,"translate"),r(),a(32,"th"),s(33),_(34,"translate"),r(),a(35,"th"),s(36),_(37,"translate"),r()()(),a(38,"tbody"),h(39,sm,35,23,"tr",46),r()()()}if(t&2){let e=d();o(),p("ngIf",e.selectedIds.size),o(),p("ngIf",e.bulkFailures.length),o(5),p("checked",e.allSelected),R("aria-label","Select all students"),o(2),g(m(10,16,"COHORTS.ENROLLMENT.STUDENT")),o(3),g(m(13,18,"COHORTS.ENROLLMENT.EMAIL")),o(3),g(m(16,20,"COHORTS.ENROLLMENT.START_LEVEL")),o(3),g(m(19,22,"COHORTS.ENROLLMENT.CURRENT_LEVEL")),o(3),g(m(22,24,"COHORTS.ENROLLMENT.PROGRESS")),o(3),g(m(25,26,"COHORTS.ENROLLMENT.ATTENDANCE")),o(3),g(m(28,28,"COHORTS.ENROLLMENT.LAST_ATTENDED")),o(3),g(m(31,30,"COHORTS.ENROLLMENT.PAYMENT")),o(3),g(m(34,32,"COHORTS.ENROLLMENT.STATUS")),o(3),g(m(37,34,"COHORTS.ENROLLMENT.ACTIONS")),o(3),p("ngForOf",e.enrollments)("ngForTrackBy",e.trackByIndex)}}var zr=(()=>{class t{constructor(e,n,i,l){this.route=e,this.router=n,this.batchService=i,this.navigationHistory=l,this.enrollments=[],this.loading=!0,this.showManualEnroll=!1,this.manualEmail="",this.manualLevel="A1.1",this.enrolling=!1,this.showBulkEnroll=!1,this.bulkEmail
8s=[""],this.bulkLevel="A1.1",this.bulkDryRun=!1,this.bulkEnrolling=!1,this.bulkResult=null,this.activeActionMenu=null,this.startLevelTarget=null,this.transferLevelTarget=null,this.selectedIds=new Set,this.bulkAction="",this.bulkActionLevel="A1.1",this.bulkActionStatus="active",this.bulkApplying=!1,this.bulkApplied=0,this.bulkFailures=[],this.levels=["A1.1","A1.2","A2","B1","B2.1","B2.2"]}ngOnInit(){this.batchId=this.route.snapshot.paramMap.get("batchId")||"",this.loadEnrollments()}loadEnrollments(){this.loading=!0,this.batchService.getEnrollments(this.batchId).subscribe({next:e=>{e?.success&&(this.enrollments=e.data||[]),this.loading=!1},error:()=>{this.loading=!1}})}viewProgress(e){this.router.navigate(["/main/dashboard/cohorts/batches",this.batchId,"enrollments",e.userId])}manualEnroll(){!this.manualEmail||this.enrolling||(this.enrolling=!0,this.batchService.manualEnroll(this.batchId,this.manualEmail,this.manualLevel).subscribe({next:e=>{e?.success&&(this.showManualEnroll=!1,this.manualEmail="",this.loadEnrollments()),this.enrolling=!1},error:()=>{this.enrolling=!1}}))}toggleBulkEnroll(){this.showBulkEnroll=!this.showBulkEnroll,this.showBulkEnroll&&(this.bulkEmails=[""],this.bulkLevel="A1.1",this.bulkDryRun=!1,this.bulkResult=null)}addBulkEmail(){this.bulkEmails.push("")}removeBulkEmail(e){this.bulkEmails.length>1&&this.bulkEmails.splice(e,1)}trackByIndex(e){return e}submitBulkEnroll(){let e=this.bulkEmails.map(n=>n.trim()).filter(n=>n.length>0);e.length===0||this.bulkEnrolling||(this.bulkEnrolling=!0,this.bulkResult=null,this.batchService.bulkEnroll(this.batchId,{emails:e,startLevel:this.bulkLevel,dryRun:this.bulkDryRun}).subscribe({next:n=>{n?.success&&(this.bulkResult=n.data,this.bulkDryRun||this.loadEnrollments()),this.bulkEnrolling=!1},error:n=>{this.bulkResult={total:e.length,successful:0,failed:e.length,details:e.map(i=>({email:i,success:!1,reason:n?.error?.error||"Request failed"}))},this.bulkEnrolling=!1}}))}toggleActionMenu(e,n){n.stopPropagation(),this.activeActionMenu=this.activeActionMenu===e?null:e,this.startLevelTarget=null,this.transferLevelTarget=null}closeActionMenu(){this.activeActionMenu=null,this.startLevelTarget=null,this.transferLevelTarget=null}pauseStudent(e,n){this.setStatus(e,"paused",n)}setStatus(e,n,i){i.stopPropagation(),this.closeActionMenu(),this.batchService.updateEnrollment(this.batchId,e.userId,{status:n}).subscribe({next:()=>this.loadEnrollments(),error:l=>console.error("[EnrollmentList] Set status failed:",l)})}showStartLevel(e,n){n.stopPropagation(),this.transferLevelTarget=null,this.startLevelTarget={userId:e.userId,newLevel:e.startLevel||"A1.1"}}submitStartLevel(e){if(e.stopPropagation(),!this.startLevelTarget)return;let{userId:n,newLevel:i}=this.startLevelTarget;this.closeActionMenu(),this.batchService.updateEnrollment(this.batchId,n,{startLevel:i}).subscribe({next:()=>this.loadEnrollments(),error:l=>console.error("[EnrollmentList] Start level update failed:",l)})}cancelStartLevel(e){e.stopPropagation(),this.startLevelTarget=null}isSelected(e){return this.selectedIds.has(e)}toggleSelected(e,n){n.stopPropagation(),this.selectedIds.has(e)?this.selectedIds.delete(e):this.selectedIds.add(e)}get allSelected(){return this.enrollments.length>0&&this.selectedIds.size===this.enrollments.length}toggleSelectAll(e){e.stopPropagation(),this.allSelected?this.selectedIds.clear():this.enrollments.forEach(n=>this.selectedIds.add(n.userId))}clearSelection(){this.selectedIds.clear(),this.bulkAction="",this.bulkFailures=[],this.bulkApplied=0}get selectedEnrollments(){return this.enrollments.filter(e=>this.selectedIds.has(e.userId))}bulkPatch(){return this.bulkAction==="currentLevel"?{currentLevel:this.bulkActionLevel}:this.bulkAction==="startLevel"?{startLevel:this.bulkActionLevel}:this.bulkAction==="status"?{status:this.bulkActionStatus}:this.bulkAction==="dropped"?{status:"dropped"}:null}bulkConfirmMessage(e){let n=e.map(i=>i.studentName||i.studentEmail).join(", ");return this.bulkAction==="dropped"?`Mark ${e.length} student(s) as dropped? 9 10${n}`:`Apply this change to ${e.length} student(s)? 11 12${n}`}applyBulk(){let e=this.bulkPatch(),n=this.selectedEnrollments;!e||!n.length||this.bulkApplying||confirm(this.bulkConfirmMessage(n))&&this.runBulk(n,e)}runBulk(e,n){return ye(this,null,function*(){this.bulkApplying=!0,this.bulkApplied=0,this.bulkFailures=[];for(let i of e)try{yield this.updateOne(i.userId,n),this.bulkApplied+=1,this.selectedIds.delete(i.userId)}catch(l){this.bulkFailures.push({name:i.studentName||i.studentEmail,reason:l?.error?.message||l?.message||"Update failed"})}this.bulkApplying=!1,this.loadEnrollments()})}updateOne(e,n){return new Promise((i,l)=>{this.batchService.updateEnrollment(this.batchId,e,n).subscribe({next:i,error:l})})}showTransferLevel(e,n){n.stopPropagation(),this.startLevelTarget=null,this.transferLevelTarget={userId:e.userId,newLevel:e.currentLevel}}submitTransferLevel(e){if(e.stopPropagation(),!this.transferLevelTarget)return;let{userId:n,newLevel:i}=this.transferLevelTarget;this.closeActionMenu(),this.batchService.updateEnrollment(this.batchId,n,{currentLevel:i}).subscribe({next:()=>this.loadEnrollments(),error:l=>console.error("[EnrollmentList] Transfer level failed:",l)})}cancelTransferLevel(e){e.stopPropagation(),this.transferLevelTarget=null}markDropped(e,n){n.stopPropagation(),confirm(`Mark ${e.studentName||e.studentEmail} as dropped? This will update their enrollment status.`)&&(this.closeActionMenu(),this.batchService.updateEnrollment(this.batchId,e.userId,{status:"dropped"}).subscribe({next:()=>this.loadEnrollments(),error:i=>console.error("[EnrollmentList] Mark dropped failed:",i)}
12))}removeStudent(e,n){n.stopPropagation(),confirm(`Remove ${e.studentName||e.studentEmail} from this batch? This action cannot be undone.`)&&(this.closeActionMenu(),this.batchService.removeEnrollment(this.batchId,e.userId).subscribe({next:()=>this.loadEnrollments(),error:i=>console.error("[EnrollmentList] Remove failed:",i)}))}formatDate(e){return e?new Date(e).toLocaleDateString("en-CA"):""}getStatusClass(e){return"status-"+e}getPaymentClass(e){return"payment-"+e}goBack(){this.navigationHistory.goBackOrFallback(["/main/dashboard/cohorts/batches",this.batchId])}static{this.\u0275fac=function(n){return new(n||t)(w(te),w(ue),w(de),w(fe))}}static{this.\u0275cmp=H({type:t,selectors:[["app-enrollment-list"]],decls:12,vars:5,consts:[[1,"enrollment-list-container",3,"click"],[1,"header"],[1,"btn-back",3,"click"],[1,"btn-primary",3,"click"],["class","bulk-enroll-form",4,"ngIf"],["class","loading-state",4,"ngIf"],["class","empty-state",4,"ngIf"],["class","enrollments-table-shell",4,"ngIf"],[1,"bulk-enroll-form"],[1,"bulk-email-list"],["class","bulk-email-row",4,"ngFor","ngForOf","ngForTrackBy"],[1,"btn-link",3,"click"],[1,"bulk-options-row"],[1,"form-group"],[3,"ngModelChange","ngModel"],[3,"value",4,"ngFor","ngForOf","ngForTrackBy"],[1,"form-group","checkbox-group"],["type","checkbox",3,"ngModelChange","ngModel"],[1,"btn-primary","btn-enroll",3,"click","disabled"],["class","bulk-result",4,"ngIf"],[1,"bulk-email-row"],[4,"ngIf"],[1,"email-input-row"],["type","email","placeholder","[email protected]",3,"ngModelChange","ngModel"],["class","btn-icon btn-remove-email","title","Remove",3,"click",4,"ngIf"],["title","Remove",1,"btn-icon","btn-remove-email",3,"click"],[3,"value"],[1,"bulk-result"],[1,"bulk-result-summary"],[1,"result-total"],[1,"result-success"],[1,"result-failed"],["class","result-dryrun-badge",4,"ngIf"],["class","bulk-result-table",4,"ngIf"],[1,"result-dryrun-badge"],[1,"bulk-result-table"],[4,"ngFor","ngForOf","ngForTrackBy"],[1,"result-badge",3,"ngClass"],[1,"loading-state"],[1,"empty-state"],[1,"enrollments-table-shell"],["class","bulk-bar",4,"ngIf"],["class","bulk-failures",4,"ngIf"],[1,"enrollments-table"],[1,"select-cell"],["type","checkbox",3,"click","checked"],[3,"row-selected","click",4,"ngFor","ngForOf","ngForTrackBy"],[1,"bulk-bar"],[1,"bulk-count"],[3,"ngModelChange","ngModel","disabled"],["value",""],["value","currentLevel"],["value","startLevel"],["value","status"],["value","dropped"],[3,"ngModel","disabled","ngModelChange",4,"ngIf"],[1,"btn-sm","btn-primary",3,"click","disabled"],[1,"btn-sm",3,"click","disabled"],["class","bulk-result ok",4,"ngIf"],["class","bulk-result warn",4,"ngIf"],["value","active"],["value","paused"],["value","inactive"],[1,"bulk-result","ok"],[1,"bulk-result","warn"],[1,"bulk-failures"],[3,"click"],[1,"select-cell",3,"click"],[1,"progress-cell"],[1,"progress-bar-bg"],[1,"progress-bar-fill"],[1,"progress-text"],["class","text-muted",4,"ngIf"],[1,"payment-badge",3,"ngClass"],[1,"status-badge",3,"ngClass"],[1,"actions-cell",3,"click"],[1,"action-menu-wrapper"],[1,"btn-kebab",3,"click"],["class","action-dropdown",4,"ngIf"],[1,"text-muted"],[1,"action-dropdown"],[1,"action-item",3,"click"],["class","action-item",3,"click",4,"ngIf"],["class","level-edit-inline",3,"click",4,"ngIf"],["class","action-item action-warn",3,"click",4,"ngIf"],[1,"action-item","action-danger",3,"click"],[1,"level-edit-inline",3,"click"],[3,"ngModelChange","click","ngModel"],[1,"btn-sm","btn-primary",3,"click"],[1,"btn-sm","btn-secondary",3,"click"],[1,"action-item","action-warn",3,"click"]],template:function(n,i){n&1&&(a(0,"div",0),x("click",function(){return i.closeActionMenu()}),a(1,"div",1)(2,"button",2),x("click",function(){return i.goBack()}),s(3,"\u2190 Back to Batch"),r(),a(4,"h2"),s(5,"Student Enrollments"),r(),a(6,"button",3),x("click",function(){return i.toggleBulkEnroll()}),s(7),r()(),h(8,N_,20,10,"div",4)(9,V_,3,0,"div",5)(10,F_,3,0,"div",6)(11,lm,40,36,"div",7),r()),n&2&&(o(7),b(" ",i.showBulkEnroll?"Cancel":"+ Bulk Enroll"," "),o(),p("ngIf",i.showBulkEnroll),o(),p("ngIf",i.loading),o(),p("ngIf",!i.loading&&i.enrollments.length===0),o(),p("ngIf",!i.loading&&i.enrollments.length>0))},dependencies:[ce,Q,$,re,ae,ie,Ke,Ce,Y,oe,j],styles:['@charset "UTF-8";.enrollment-list-container[_ngcontent-%COMP%]{padding:24px}.enrollment-list-container[_ngcontent-%COMP%] .header[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px}.enrollment-list-container[_ngcontent-%COMP%] .header[_ngcontent-%COMP%] .btn-back[_ngcontent-%COMP%]{background:none;border:none;color:#6b7280;cursor:pointer;padding:0;font-size:14px}.enrollment-list-container[_ngcontent-%COMP%] .header[_ngcontent-%COMP%] .btn-back[_ngcontent-%COMP%]:hover{color:#374151}.enrollment-list-container[_ngcontent-%COMP%] .header[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0;font-size:24px;font-weight:600}.enrollment-list-container[_ngcontent-%COMP%] .btn-primary[_ngcontent-%COMP%]{background:#4f46e5;color:#fff;border:none;padding:10px 20px;border-radius:8px;
12cursor:pointer;font-weight:500}.enrollment-list-container[_ngcontent-%COMP%] .btn-primary[_ngcontent-%COMP%]:hover:not(:disabled){background:#4338ca}.enrollment-list-container[_ngcontent-%COMP%] .btn-primary[_ngcontent-%COMP%]:disabled{opacity:.6;cursor:not-allowed}.enrollment-list-container[_ngcontent-%COMP%] .btn-link[_ngcontent-%COMP%]{background:none;border:none;color:#4f46e5;cursor:pointer;font-size:13px;font-weight:500;padding:4px 0}.enrollment-list-container[_ngcontent-%COMP%] .btn-link[_ngcontent-%COMP%]:hover{text-decoration:underline}.enrollment-list-container[_ngcontent-%COMP%] .manual-enroll-form[_ngcontent-%COMP%]{background:#fff;border:1px solid #e5e7eb;border-radius:12px;padding:20px;margin-bottom:24px}.enrollment-list-container[_ngcontent-%COMP%] .manual-enroll-form[_ngcontent-%COMP%] .form-row[_ngcontent-%COMP%]{display:flex;gap:16px;align-items:flex-end}.enrollment-list-container[_ngcontent-%COMP%] .manual-enroll-form[_ngcontent-%COMP%] .form-group[_ngcontent-%COMP%]{flex:1}.enrollment-list-container[_ngcontent-%COMP%] .manual-enroll-form[_ngcontent-%COMP%] .form-group[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{display:block;font-size:14px;font-weight:500;color:#374151;margin-bottom:4px}.enrollment-list-container[_ngcontent-%COMP%] .manual-enroll-form[_ngcontent-%COMP%] .form-group[_ngcontent-%COMP%] input[_ngcontent-%COMP%], .enrollment-list-container[_ngcontent-%COMP%] .manual-enroll-form[_ngcontent-%COMP%] .form-group[_ngcontent-%COMP%] select[_ngcontent-%COMP%]{width:100%;padding:8px 12px;border:1px solid #d1d5db;border-radius:8px;font-size:14px;box-sizing:border-box}.enrollment-list-container[_ngcontent-%COMP%] .manual-enroll-form[_ngcontent-%COMP%] .form-group[_ngcontent-%COMP%] input[_ngcontent-%COMP%]:focus, .enrollment-list-container[_ngcontent-%COMP%] .manual-enroll-form[_ngcontent-%COMP%] .form-group[_ngcontent-%COMP%] select[_ngcontent-%COMP%]:focus{outline:none;border-color:#4f46e5}.enrollment-list-container[_ngcontent-%COMP%] .manual-enroll-form[_ngcontent-%COMP%] .btn-enroll[_ngcontent-%COMP%]{align-self:flex-end;white-space:nowrap}.enrollment-list-container[_ngcontent-%COMP%] .bulk-enroll-form[_ngcontent-%COMP%]{background:#fff;border:1px solid #e5e7eb;border-radius:12px;padding:24px;margin-bottom:24px}.enrollment-list-container[_ngcontent-%COMP%] .bulk-enroll-form[_ngcontent-%COMP%] h3[_ngcontent-%COMP%]{margin:0 0 16px;font-size:18px;font-weight:600;color:#111827}.enrollment-list-container[_ngcontent-%COMP%] .bulk-enroll-form[_ngcontent-%COMP%] .bulk-email-list[_ngcontent-%COMP%]{margin-bottom:16px}.enrollment-list-container[_ngcontent-%COMP%] .bulk-enroll-form[_ngcontent-%COMP%] .bulk-email-row[_ngcontent-%COMP%]{margin-bottom:8px}.enrollment-list-container[_ngcontent-%COMP%] .bulk-enroll-form[_ngcontent-%COMP%] .email-input-row[_ngcontent-%COMP%]{display:flex;gap:8px;align-items:center}.enrollment-list-container[_ngcontent-%COMP%] .bulk-enroll-form[_ngcontent-%COMP%] .email-input-row[_ngcontent-%COMP%] input[_ngcontent-%COMP%]{flex:1;padding:8px 12px;border:1px solid #d1d5db;border-radius:8px;font-size:14px;box-sizing:border-box}.enrollment-list-container[_ngcontent-%COMP%] .bulk-enroll-form[_ngcontent-%COMP%] .email-input-row[_ngcontent-%COMP%] input[_ngcontent-%COMP%]:focus{outline:none;border-color:#4f46e5}.enrollment-list-container[_ngcontent-%COMP%] .bulk-enroll-form[_ngcontent-%COMP%] .btn-icon[_ngcontent-%COMP%]{background:none;border:none;cursor:pointer;font-size:18px;color:#9ca3af;padding:4px 8px}.enrollment-list-container[_ngcontent-%COMP%] .bulk-enroll-form[_ngcontent-%COMP%] .btn-icon[_ngcontent-%COMP%]:hover{color:#ef4444}.enrollment-list-container[_ngcontent-%COMP%] .bulk-enroll-form[_ngcontent-%COMP%] .form-group[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{display:block;font-size:14px;font-weight:500;color:#374151;margin-bottom:4px}.enrollment-list-container[_ngcontent-%COMP%] .bulk-enroll-form[_ngcontent-%COMP%] .form-group[_ngcontent-%COMP%] select[_ngcontent-%COMP%]{width:100%;padding:8px 12px;border:1px solid #d1d5db;border-radius:8px;font-size:14px;box-sizing:border-box}.enrollment-list-container[_ngcontent-%COMP%] .bulk-enroll-form[_ngcontent-%COMP%] .form-group[_ngcontent-%COMP%] select[_ngcontent-%COMP%]:focus{outline:none;border-color:#4f46e5}.enrollment-list-container[_ngcontent-%COMP%] .bulk-enroll-form[_ngcontent-%COMP%] .checkbox-group[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px;font-size:14px;font-weight:400;color:#374151;cursor:pointer}.enrollment-list-container[_ngcontent-%COMP%] .bulk-enroll-form[_ngcontent-%COMP%] .checkbox-group[_ngcontent-%COMP%] label[_ngcontent-%COMP%] input[type=checkbox][_ngcontent-%COMP%]{width:auto;margin:0}.enrollment-list-container[_ngcontent-%COMP%] .bulk-enroll-form[_ngcontent-%COMP%] .bulk-options-row[_ngcontent-%COMP%]{display:flex;gap:16px;align-items:flex-end;flex-wrap:wrap}.enrollment-list-container[_ngcontent-%COMP%] .bulk-enroll-form[_ngcontent-%COMP%] .bulk-options-row[_ngcontent-%COMP%] .form-group[_ngcontent-%COMP%]{flex:0 0 180px}.enrollment-list-container[_ngcontent-%COMP%] .bulk-enroll-form[_ngcontent-%COMP%] .bulk-options-row[_ngcontent-%COMP%] .checkbox-group[_ngcontent-%COMP%]{flex:1;align-self:center}.enrollment-list-container[_ngcontent-%COMP%] .bulk-enroll-form[_ngcontent-%COMP%] .bulk-options-row[_ngcontent-%COMP%] .btn-enroll[_ngcontent-%COMP%]{align-self:flex-end;white-space:nowrap}.enrollment-list-container[_ngcontent-%COMP%] .bulk-result[_ngcontent-%COMP%]{margin-top:20px;border-top:1px solid #e5e7eb;padding-top:16px}.enrollment-list-container[_ngcontent-%COMP%] .bulk-result[_ngcontent-%COMP%] .bulk-result-summary[_ngcontent-%COMP%]{display:flex;gap:16px;align-items:center;margin-bottom:12px;font-size:14px;font-weight:500}.enrollment-list-container[_ngcontent-%COMP%] .bulk-result[_ngcontent-%COMP%] .bulk-result-summary[_ngcontent-%COMP%] .result-total[_ngcontent-%COMP%]{color:#374151}.enrollment-list-container[_ngcontent-%COMP%] .bulk-result[_ngcontent-%COMP%] .bulk-result-summary[_ngcontent-%COMP%] .result-success[_ngcontent-%COMP%]{color:#166534}.enrollment-list-container[_ngcontent-%COMP%] .bulk-result[_ngcontent-%COMP%] .bulk-result-summary[_ngcontent-%COMP%] .result-failed[_ngcontent-%COMP%]{color:#991b1b}.enrollment-list-container[_ngcontent-%COMP%] .bulk-result[_ngcontent-%COMP%] .bulk-result-summary[_ngcontent-%COMP%] .result-dryrun-badge[_ngcontent-%COMP%]{background:#fef3c7;color:#92400e;padding:2px 10px;border-radius:12px;font-size:11px;font-weight:600;text-transform:uppercase}.enrollment-list-container[_ngcontent-%COMP%] .bulk-result[_ngcontent-%COMP%] .bulk-result-table[_ngcontent-%COMP%]{width:100%;border-collapse:collapse;font-size:13px}.enrollment-list-container[_ngcontent-%COMP%] .bulk-result[_ngcontent-%COMP%] .bulk-result-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%]{text-align:left;padding:8px 12px;background:#f9fafb;font-weight:600;color:#374151;border-bottom:1px solid #e5e7eb}.enrollment-list-container[_ngcontent-%COMP%] .bulk-result[_ngcontent-%COMP%] .bulk-result-table[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{padding:8px 12px;border-bottom:1px solid #f3f4f6}.enrollment-list-container[_ngcontent-%COMP%] .bulk-result[_ngcontent-%COMP%] .result-badge[_ngcontent-%COMP%]{padding:2px 8px;border-radius:10px;font-size:11px;font-weight:500}.enrollment-list-container[_ngcontent-%COMP%] .bulk-result[_ngcontent-%COMP%] .result-ok[_ngcontent-%COMP%]{background:#dcfce7;color:#166534}.enrollment-list-container[_ngcontent-%COMP%] .bulk-result[_ngcontent-%COMP%] .result-err[_ngcontent-%COMP%]{background:#fee2e2;color:#991b1b}.enrollment-list-container[_ngcontent-%COMP%] .loading-state[_ngcontent-%COMP%], .enrollment-list-container[_ngcontent-%COMP%] .empty-state[_ngcontent-%COMP%]{text-align:center;padding:48px;color:#6b7280}.enrollment-list-container[_ngcontent-%COMP%] .enrollments-table-shell[_ngcontent-%COMP%]{border:1px solid #e5e7eb;border-radius:12px;background:#fff}.enrollment-list-container[_ngcontent-%COMP%] .enrollments-table[_ngcontent-%COMP%]{width:100%;border-collapse:collapse;background:#fff}.enrollment-list-container[_ngcontent-%COMP%] .enrollments-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%]{text-align:left;padding:12px 16px;background:#f9fafb;font-size:13px;font-weight:600;color:#374151;border-bottom:1px solid #e5e7eb;white-space:nowrap}.enrollment-list-container[_ngcontent-%COMP%] .enrollments-table[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{padding:12px 16px;font-size:14px;border-bottom:1px solid #f3f4f6}.enrollment-list-container[_ngcontent-%COMP%] .enrollments-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]{cursor:pointer}.enrollment-list-container[_ngcontent-%COMP%] .enrollments-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:hover{background:#f9fafb}.enrollment-list-container[_ngcontent-%COMP%] .enrollments-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:last-child td[_ngcontent-%COMP%]{border-bottom:none}.enrollment-list-container[_ngcontent-%COMP%] .text-muted[_ngcontent-%COMP%]{color:#9ca3af}.enrollment-list-container[_ngcontent-%COMP%] .progress-cell[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px}.enrollment-list-container[_ngcontent-%COMP%] .progress-bar-bg[_ngcontent-%COMP%]{flex:1;height:8px;background:#e5e7eb;border-radius:4px;min-width:60px}.enrollment-list-container[_ngcontent-%COMP%] .progress-bar-fill[_ngcontent-%COMP%]{height:100%;background:#4f46e5;border-radius:4px;transition:width .3s}.enrollment-list-container[_ngcontent-%COMP%] .progress-text[_ngcontent-%COMP%]{font-size:12px;color:#6b7280;min-width:36px}.enrollment-list-container[_ngcontent-%COMP%] .status-badge[_ngcontent-%COMP%], .enrollment-list-container[_ngcontent-%COMP%] .payment-badge[_ngcontent-%COMP%]{padding:4px 10px;border-radius:20px;font-size:11px;font-weight:500;text-transform:uppercase}.enrollment-list-container[_ngcontent-%COMP%] .status-active[_ngcontent-%COMP%]{background:#dcfce7;color:#166534}.enrollment-list-container[_ngcontent-%COMP%] .status-paused[_ngcontent-%COMP%]{background:#fef3c7;color:#92400e}.enrollment-list-container[_ngcontent-%COMP%] .status-completed[_ngcontent-%COMP%]{background:#dbeafe;color:#1e40af}.enrollment-list-container[_ngcontent-%COMP%] .status-dropped[_ngcontent-%COMP%]{background:#fee2e2;color:#991b1b}.enrollment-list-container[_ngcontent-%COMP%] .payment-paid[_ngcontent-%COMP%]{background:#dcfce7;color:#166534}.enrollment-list-container[_ngcontent-%COMP%] .payment-pending[_ngcontent-%COMP%]{background:#fef3c7;color:#92400e}.enrollment-list-container[_ngcontent-%COMP%] .payment-overdue[_ngcontent-%COMP%]{background:#fee2e2;color:#991b1b}.enrollment-list-container[_ngcontent-%COMP%] .btn-sm[_ngcontent-%COMP%]{padding:6px 12px;font-size:12px;border:none;border-radius:6px;cursor:pointer}.enrollment-list-container[_ngcontent-%COMP%] .btn-secondary[_ngcontent-%COMP%]{background:#f3f4f6;color:#374151}.enrollment-list-container[_ngcontent-%COMP%] .btn-secondary[_ngcontent-%COMP%]:hover{background:#e5e7eb}.enrollment-list-container[_ngcontent-%COMP%] .actions-cell[_ngcontent-%COMP%]{position:relative;cursor:default}.enrollment-list-container[_ngcontent-%COMP%] .action-menu-wrapper[_ngcontent-%COMP%]{position:relative;display:inline-block}.enrollment-list-container[_ngcontent-%COMP%] .btn-kebab[_ngcontent-%COMP%]{background:none;border:1px solid #e5e7eb;border-radius:6px;padding:4px 10px;font-size:18px;
12cursor:pointer;color:#6b7280;line-height:1}.enrollment-list-container[_ngcontent-%COMP%] .btn-kebab[_ngcontent-%COMP%]:hover{background:#f3f4f6;color:#374151}.enrollment-list-container[_ngcontent-%COMP%] .action-dropdown[_ngcontent-%COMP%]{position:absolute;right:0;top:100%;margin-top:4px;background:#fff;border:1px solid #e5e7eb;border-radius:8px;box-shadow:0 4px 12px #0000001a;min-width:180px;z-index:50;padding:4px 0}.enrollment-list-container[_ngcontent-%COMP%] .action-dropdown[_ngcontent-%COMP%] .action-item[_ngcontent-%COMP%]{display:block;width:100%;text-align:left;padding:8px 16px;background:none;border:none;font-size:13px;cursor:pointer;color:#374151}.enrollment-list-container[_ngcontent-%COMP%] .action-dropdown[_ngcontent-%COMP%] .action-item[_ngcontent-%COMP%]:hover{background:#f3f4f6}.enrollment-list-container[_ngcontent-%COMP%] .action-dropdown[_ngcontent-%COMP%] .action-warn[_ngcontent-%COMP%]{color:#92400e}.enrollment-list-container[_ngcontent-%COMP%] .action-dropdown[_ngcontent-%COMP%] .action-warn[_ngcontent-%COMP%]:hover{background:#fef3c7}.enrollment-list-container[_ngcontent-%COMP%] .action-dropdown[_ngcontent-%COMP%] .action-danger[_ngcontent-%COMP%]{color:#991b1b}.enrollment-list-container[_ngcontent-%COMP%] .action-dropdown[_ngcontent-%COMP%] .action-danger[_ngcontent-%COMP%]:hover{background:#fee2e2}.enrollment-list-container[_ngcontent-%COMP%] .level-edit-inline[_ngcontent-%COMP%]{display:flex;gap:6px;align-items:center;padding:8px 12px;border-top:1px solid #f3f4f6}.enrollment-list-container[_ngcontent-%COMP%] .level-edit-inline[_ngcontent-%COMP%] select[_ngcontent-%COMP%]{flex:1;padding:4px 8px;border:1px solid #d1d5db;border-radius:6px;font-size:13px}.enrollment-list-container[_ngcontent-%COMP%] .level-edit-inline[_ngcontent-%COMP%] select[_ngcontent-%COMP%]:focus{outline:none;border-color:#4f46e5}.enrollment-list-container[_ngcontent-%COMP%] .level-edit-inline[_ngcontent-%COMP%] .btn-sm[_ngcontent-%COMP%]{padding:4px 10px;font-size:12px}.select-cell[_ngcontent-%COMP%]{width:36px;text-align:center}.select-cell[_ngcontent-%COMP%] input[_ngcontent-%COMP%]{cursor:pointer}tr.row-selected[_ngcontent-%COMP%]{background:#f2fbfb}.bulk-bar[_ngcontent-%COMP%]{display:flex;align-items:center;flex-wrap:wrap;gap:10px;margin-bottom:12px;padding:10px 14px;border:1px solid #21b6b6;border-radius:12px;background:#f2fbfb}.bulk-bar[_ngcontent-%COMP%] select[_ngcontent-%COMP%]{padding:6px 10px;border:1px solid #d1d5db;border-radius:8px;font:inherit;font-size:13px;background:#fff}.bulk-count[_ngcontent-%COMP%]{font-size:13px;font-weight:700;color:#188888}.bulk-result[_ngcontent-%COMP%]{font-size:13px;font-weight:600}.bulk-result.ok[_ngcontent-%COMP%]{color:#188888}.bulk-result.warn[_ngcontent-%COMP%]{color:#b45309}.bulk-failures[_ngcontent-%COMP%]{margin:0 0 12px;padding:10px 14px 10px 30px;border-radius:10px;background:#fffbeb;border:1px solid #fde68a;font-size:13px;color:#92400e}']})}}return t})();function cm(t,c){t&1&&(a(0,"div",5)(1,"p"),s(2,"Loading..."),r()())}function dm(t,c){if(t&1&&(a(0,"div",22)(1,"div",14),v(2,"div",15),r(),a(3,"span",23),s(4),r()()),t&2){let e=d().$implicit,n=d(2);o(2),Ne("width",n.getLevelProgress(e).percent,"%"),o(2),N("",n.getLevelProgress(e).completed,"/",n.getLevelProgress(e).total," sessions")}}function pm(t,c){t&1&&(a(0,"div",24),s(1,"Not enrolled"),r())}function _m(t,c){if(t&1&&(a(0,"div",18)(1,"div",19),s(2),r(),h(3,dm,5,4,"div",20)(4,pm,2,0,"div",21),r()),t&2){let e=c.$implicit,n=d(2);y("enrolled",n.getLevelProgress(e).enrolled)("not-enrolled",!n.getLevelProgress(e).enrolled),o(2),g(e),o(),p("ngIf",n.getLevelProgress(e).enrolled),o(),p("ngIf",!n.getLevelProgress(e).enrolled)}}function mm(t,c){if(t&1&&(a(0,"div",6)(1,"div",7)(2,"div",8)(3,"span",9),s(4,"Name"),r(),a(5,"span"),s(6),r()(),a(7,"div",8)(8,"span",9),s(9,"Email"),r(),a(10,"span"),s(11),r()(),a(12,"div",8)(13,"span",9),s(14,"Start Level"),r(),a(15,"span"),s(16),r()(),a(17,"div",8)(18,"span",9),s(19,"Current Level"),r(),a(20,"span",10),s(21),r()(),a(22,"div",8)(23,"span",9),s(24,"Payment"),r(),a(25,"span",11),s(26),r()(),a(27,"div",8)(28,"span",9),s(29,"Status"),r(),a(30,"span",12),s(31),r()(),a(32,"div",8)(33,"span",9),s(34,"Overall Progress"),r(),a(35,"div",13)(36,"div",14),v(37,"div",15),r(),a(38,"span"),s(39),r()()()(),a(40,"h3"),s(41,"Level Breakdown"),r(),a(42,"div",16),h(43,_m,5,7,"div",17),r()()),t&2){let e=d();o(6),g(e.student.studentName),o(5),g(e.student.studentEmail),o(5),g(e.student.startLevel),o(5),g(e.student.currentLevel),o(4),p("ngClass","payment-"+e.student.paymentStatus),o(),g(e.student.paymentStatus),o(4),p("ngClass","status-"+e.student.status),o(),g(e.student.status),o(6),Ne("width",e.getOverallPercent(),"%"),o(2),b("",e.getOverallPercent(),"%"),o(4),p("ngForOf",e.levelOrder)("ngForTrackBy",e.trackByIndex)}}var Kr=(()=>{class t{constructor(e,n,i){this.route=e,this.batchService=n,this.navigationHistory=i,this.student=null,this.loading=!0,this.levelOrder=["A1.1","A1.2","A2","B1","B2.1","B2.2"]}
12ngOnInit(){this.batchId=this.route.snapshot.paramMap.get("batchId")||"",this.userId=this.route.snapshot.paramMap.get("userId")||"",this.loadProgress()}loadProgress(){this.loading=!0,this.batchService.getStudentProgress(this.batchId,this.userId).subscribe({next:e=>{e?.success&&(this.student=e.data),this.loading=!1},error:()=>{this.loading=!1}})}getLevelProgress(e){let n=this.student?.progress?.[e];return n?Me(W({},n),{percent:n.total>0?Math.round(n.completed/n.total*100):0}):{completed:0,total:0,percent:0,enrolled:!1}}getOverallPercent(){if(!this.student?.progress)return 0;let e=0,n=0;for(let i of Object.values(this.student.progress))i.enrolled&&(e+=i.completed,n+=i.total);return n>0?Math.round(e/n*100):0}goBack(){this.navigationHistory.goBackOrFallback(["/main/dashboard/cohorts/batches",this.batchId,"enrollments"])}trackByIndex(e){return e}static{this.\u0275fac=function(n){return new(n||t)(w(te),w(de),w(fe))}}static{this.\u0275cmp=H({type:t,selectors:[["app-student-progress"]],decls:8,vars:2,consts:[[1,"student-progress-container"],[1,"header"],[1,"btn-back",3,"click"],["class","loading-state",4,"ngIf"],["class","student-detail",4,"ngIf"],[1,"loading-state"],[1,"student-detail"],[1,"student-info-card"],[1,"info-row"],[1,"label"],[1,"current-level"],[1,"payment-badge",3,"ngClass"],[1,"status-badge",3,"ngClass"],[1,"overall-progress"],[1,"progress-bar-bg"],[1,"progress-bar-fill"],[1,"levels-grid"],["class","level-card",3,"enrolled","not-enrolled",4,"ngFor","ngForOf","ngForTrackBy"],[1,"level-card"],[1,"level-name"],["class","level-stats",4,"ngIf"],["class","not-enrolled-text",4,"ngIf"],[1,"level-stats"],[1,"progress-text"],[1,"not-enrolled-text"]],template:function(n,i){n&1&&(a(0,"div",0)(1,"div",1)(2,"button",2),x("click",function(){return i.goBack()}),s(3,"\u2190 Back to Enrollments"),r(),a(4,"h2"),s(5,"Student Progress"),r()(),h(6,cm,3,0,"div",3)(7,mm,44,13,"div",4),r()),n&2&&(o(6),p("ngIf",i.loading),o(),p("ngIf",!i.loading&&i.student))},dependencies:[ce,Q,$],styles:[".student-progress-container[_ngcontent-%COMP%]{padding:24px}.student-progress-container[_ngcontent-%COMP%] .header[_ngcontent-%COMP%]{margin-bottom:24px}.student-progress-container[_ngcontent-%COMP%] .header[_ngcontent-%COMP%] .btn-back[_ngcontent-%COMP%]{background:none;border:none;color:#6b7280;cursor:pointer;padding:0;margin-bottom:8px;font-size:14px}.student-progress-container[_ngcontent-%COMP%] .header[_ngcontent-%COMP%] .btn-back[_ngcontent-%COMP%]:hover{color:#374151}.student-progress-container[_ngcontent-%COMP%] .header[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0;font-size:24px;font-weight:600}.student-progress-container[_ngcontent-%COMP%] .loading-state[_ngcontent-%COMP%]{text-align:center;padding:48px;color:#6b7280}.student-progress-container[_ngcontent-%COMP%] .student-info-card[_ngcontent-%COMP%]{background:#fff;border:1px solid #e5e7eb;border-radius:12px;padding:20px;margin-bottom:24px}.student-progress-container[_ngcontent-%COMP%] .info-row[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:center;padding:10px 0;border-bottom:1px solid #f3f4f6}.student-progress-container[_ngcontent-%COMP%] .info-row[_ngcontent-%COMP%]:last-child{border-bottom:none}.student-progress-container[_ngcontent-%COMP%] .info-row[_ngcontent-%COMP%] .label[_ngcontent-%COMP%]{font-size:14px;color:#6b7280}.student-progress-container[_ngcontent-%COMP%] .current-level[_ngcontent-%COMP%]{font-weight:600;color:#4f46e5}.student-progress-container[_ngcontent-%COMP%] .overall-progress[_ngcontent-%COMP%]{display:flex;align-items:center;gap:12px;flex:1;max-width:300px}.student-progress-container[_ngcontent-%COMP%] .overall-progress[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{font-size:14px;font-weight:600;min-width:40px}.student-progress-container[_ngcontent-%COMP%] .progress-bar-bg[_ngcontent-%COMP%]{flex:1;height:8px;background:#e5e7eb;border-radius:4px}.student-progress-container[_ngcontent-%COMP%] .progress-bar-fill[_ngcontent-%COMP%]{height:100%;background:#4f46e5;border-radius:4px;transition:width .3s}.student-progress-container[_ngcontent-%COMP%] .status-badge[_ngcontent-%COMP%], .student-progress-container[_ngcontent-%COMP%] .payment-badge[_ngcontent-%COMP%]{padding:4px 10px;border-radius:20px;font-size:11px;font-weight:500;text-transform:uppercase}.student-progress-container[_ngcontent-%COMP%] .status-active[_ngcontent-%COMP%]{background:#dcfce7;color:#166534}.student-progress-container[_ngcontent-%COMP%] .status-paused[_ngcontent-%COMP%]{background:#fef3c7;color:#92400e}.student-progress-container[_ngcontent-%COMP%] .status-completed[_ngcontent-%COMP%]{background:#dbeafe;color:#1e40af}.student-progress-container[_ngcontent-%COMP%] .status-dropped[_ngcontent-%COMP%]{background:#fee2e2;color:#991b1b}.student-progress-container[_ngcontent-%COMP%] .payment-paid[_ngcontent-%COMP%]{background:#dcfce7;color:#166534}.student-progress-container[_ngcontent-%COMP%] .payment-pending[_ngcontent-%COMP%]{background:#fef3c7;color:#92400e}.student-progress-container[_ngcontent-%COMP%] h3[_ngcontent-%COMP%]{font-size:18px;font-weight:600;margin:0 0 16px}.student-progress-container[_ngcontent-%COMP%] .levels-grid[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:16px}.student-progress-container[_ngcontent-%COMP%] .level-card[_ngcontent-%COMP%]{background:#fff;border:1px solid #e5e7eb;border-radius:12px;padding:16px;text-align:center}.student-progress-container[_ngcontent-%COMP%] .level-card[_ngcontent-%COMP%] .level-name[_ng
12content-%COMP%]{font-size:18px;font-weight:700;margin-bottom:8px}.student-progress-container[_ngcontent-%COMP%] .level-card.enrolled[_ngcontent-%COMP%] .level-name[_ngcontent-%COMP%]{color:#4f46e5}.student-progress-container[_ngcontent-%COMP%] .level-card.not-enrolled[_ngcontent-%COMP%]{opacity:.5}.student-progress-container[_ngcontent-%COMP%] .level-card[_ngcontent-%COMP%] .not-enrolled-text[_ngcontent-%COMP%]{font-size:12px;color:#9ca3af}.student-progress-container[_ngcontent-%COMP%] .level-stats[_ngcontent-%COMP%] .progress-text[_ngcontent-%COMP%]{font-size:12px;color:#6b7280;margin-top:4px;display:block}"]})}}return t})();var qt=(()=>{class t{constructor(e){this.http=e,this.basePath="course-batches"}recordPayment(e,n,i){return this.http.postReq(`${this.basePath}/${e}/students/${n}/payments`,i)}listBatchPayments(e,n){let i=`${this.basePath}/${e}/payments`,l=[];return n?.status&&l.push(`status=${n.status}`),n?.paymentMethod&&l.push(`paymentMethod=${n.paymentMethod}`),n?.studentId&&l.push(`studentId=${n.studentId}`),l.length&&(i+="?"+l.join("&")),this.http.getReq(i)}getStudentPayments(e,n){return this.http.getReq(`${this.basePath}/${e}/students/${n}/payments`)}editPayment(e,n,i){return this.http.putReq(`${this.basePath}/${e}/payments/${n}`,i)}confirmPayment(e,n){return this.http.postReq(`${this.basePath}/${e}/payments/${n}/confirm`,{})}getPaymentSummary(e){return this.http.getReq(`${this.basePath}/${e}/payments/summary`)}getPricing(){return this.http.getReq(`${this.basePath}/pricing`)}updatePricing(e){return this.http.postReq(`${this.basePath}/pricing`,e)}uploadProof(e,n,i){return this.http.postReq(`${this.basePath}/${e}/payments/${n}/proof`,i,{headers:{"Content-Type":i.type}})}static{this.\u0275fac=function(n){return new(n||t)(Xe(Fe))}}static{this.\u0275prov=Pt({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})();var gm=()=>({});function um(t,c){if(t&1&&(a(0,"p",8),s(1),r()),t&2){let e=d();o(),g(e.batchTitle)}}function Cm(t,c){t&1&&(a(0,"div",9)(1,"p"),s(2,"Loading..."),r()())}function fm(t,c){if(t&1&&(a(0,"div",28)(1,"div",22),s(2,"Pending"),r(),a(3,"div",29),s(4),r(),a(5,"div",24),s(6,"awaiting confirmation"),r()()),t&2){let e=d(3);o(4),g(e.summary.pendingPayments)}}function hm(t,c){if(t&1&&(a(0,"div",20)(1,"div",21)(2,"div",22),s(3,"Total Revenue"),r(),a(4,"div",23),s(5),_(6,"number"),r(),a(7,"div",24),s(8),r()(),a(9,"div",25)(10,"div",22),s(11),r(),a(12,"div",23),s(13),_(14,"number"),r()(),a(15,"div",26)(16,"div",22),s(17,"Platform Share"),r(),a(18,"div",23),s(19),_(20,"number"),r()(),h(21,fm,7,1,"div",27),r()),t&2){let e=d(2);o(5),g(m(6,6,e.summary.totalRevenue)),o(3),b("",e.summary.confirmedPayments," confirmed payments"),o(3),b("Instructor Share (",e.summary.instructorPercent,"%)"),o(2),g(m(14,8,e.summary.instructorShare)),o(6),g(m(20,10,e.summary.platformShare)),o(2),p("ngIf",e.summary.pendingPayments>0)}}function xm(t,c){if(t&1&&(a(0,"span",33),s(1),a(2,"strong"),s(3),_(4,"number"),r()()),t&2){let e=c.$implicit,n=d(3);o(),b(" ",n.getMethodLabel(e.key),": "),o(2),g(m(4,2,e.value))}}function bm(t,c){if(t&1&&(a(0,"div",30)(1,"h3"),s(2,"By Payment Method"),r(),a(3,"div",31),h(4,xm,5,4,"span",32),_(5,"keyvalue"),r()()),t&2){let e=d(2);o(4),p("ngForOf",m(5,2,(e.summary==null?null:e.summary.methodBreakdown)||Re(4,gm)))("ngForTrackBy",e.trackByIndex)}}function vm(t,c){if(t&1){let e=M();a(0,"tr")(1,"td"),s(2),r(),a(3,"td"),s(4),r(),a(5,"td"),s(6),r(),a(7,"td")(8,"span",37),s(9),r()(),a(10,"td")(11,"button",38),x("click",function(){let i=C(e).$implicit,l=d(3);return f(l.viewStudentPayments(i.userId))}),s(12,"Details"),r()()()}if(t&2){let e=c.$implicit,n=d(3);o(2),g(e.studentName),o(2),g(e.studentEmail),o(2),g(e.startLevel),o(2),p("ngClass",n.getStatusClass(e.paymentStatus||"unpaid")),o(),b(" ",e.paymentStatus||"unpaid"," ")}}function Om(t,c){if(t&1&&(a(0,"div",34)(1,"h3"),s(2),r(),a(3,"table",35)(4,"thead")(5,"tr")(6,"th"),s(7,"Student"),r(),a(8,"th"),s(9,"Email"),r(),a(10,"th"),s(11,"Start Level"),r(),a(12,"th"),s(13,"Payment Status"),r(),v(14,"th"),r()(),a(15,"tbody"),h(16,vm,13,5,"tr",36),r()()()),t&2){let e=d(2);o(2),b("Students (",e.enrollments.length,")"),o(14),p("ngForOf",e.enrollments)("ngForTrackBy",e.trackByIndex)}}
12function Mm(t,c){if(t&1&&(a(0,"option",39),s(1),r()),t&2){let e=c.$implicit;p("value",e.value),o(),g(e.label)}}function Pm(t,c){if(t&1&&(a(0,"option",39),s(1),r()),t&2){let e=c.$implicit;p("value",e.value),o(),g(e.label)}}function Sm(t,c){t&1&&(a(0,"div",40)(1,"p"),s(2,"No payments recorded yet."),r()())}function wm(t,c){if(t&1){let e=M();a(0,"button",43),x("click",function(){C(e);let i=d().$implicit,l=d(3);return f(l.confirmPayment(i))}),s(1," Confirm "),r()}}function Em(t,c){if(t&1&&(a(0,"tr")(1,"td"),s(2),r(),a(3,"td"),s(4),r(),a(5,"td"),s(6),r(),a(7,"td"),s(8),r(),a(9,"td"),s(10),r(),a(11,"td")(12,"span",37),s(13),r()(),a(14,"td"),h(15,wm,2,0,"button",42),r()()),t&2){let e=c.$implicit,n=d(3);o(2),g(n.formatDate(e.createdAt)),o(2),g(e.studentName),o(2),g(n.formatCurrency(e.amount,e.currency)),o(2),g(n.getMethodLabel(e.paymentMethod)),o(2),g(e.paymentPlan),o(2),p("ngClass",n.getStatusClass(e.status)),o(),g(e.status),o(2),p("ngIf",e.status==="pending")}}function Im(t,c){if(t&1&&(a(0,"table",41)(1,"thead")(2,"tr")(3,"th"),s(4,"Date"),r(),a(5,"th"),s(6,"Student"),r(),a(7,"th"),s(8,"Amount"),r(),a(9,"th"),s(10,"Method"),r(),a(11,"th"),s(12,"Plan"),r(),a(13,"th"),s(14,"Status"),r(),v(15,"th"),r()(),a(16,"tbody"),h(17,Em,16,8,"tr",36),r()()),t&2){let e=d(2);o(17),p("ngForOf",e.payments)("ngForTrackBy",e.trackByIndex)}}function ym(t,c){if(t&1){let e=M();G(0),h(1,hm,22,12,"div",10)(2,bm,6,5,"div",11)(3,Om,17,3,"div",12),a(4,"div",13)(5,"div",14)(6,"h3"),s(7,"Payment History"),r(),a(8,"div",15)(9,"select",16),T("ngModelChange",function(i){C(e);let l=d();return A(l.filterStatus,i)||(l.filterStatus=i),f(i)}),x("change",function(){C(e);let i=d();return f(i.onFilterChange())}),h(10,Mm,2,2,"option",17),r(),a(11,"select",16),T("ngModelChange",function(i){C(e);let l=d();return A(l.filterMethod,i)||(l.filterMethod=i),f(i)}),x("change",function(){C(e);let i=d();return f(i.onFilterChange())}),h(12,Pm,2,2,"option",17),r()()(),h(13,Sm,3,0,"div",18)(14,Im,18,2,"table",19),r(),q()}if(t&2){let e=d();o(),p("ngIf",e.summary),o(),p("ngIf",e.summary==null?null:e.summary.methodBreakdown),o(),p("ngIf",e.enrollments.length>0),o(6),k("ngModel",e.filterStatus),o(),p("ngForOf",e.paymentStatuses)("ngForTrackBy",e.trackByIndex),o(),k("ngModel",e.filterMethod),o(),p("ngForOf",e.paymentMethods)("ngForTrackBy",e.trackByIndex),o(),p("ngIf",e.payments.length===0),o(),p("ngIf",e.payments.length>0)}}var $r=(()=>{class t{constructor(e,n,i,l,u){this.route=e,this.router=n,this.paymentService=i,this.batchService=l,this.navigationHistory=u,this.batchTitle="",this.summary=null,this.payments=[],this.enrollments=[],this.loading=!0,this.filterStatus="",this.filterMethod="",this.paymentMethods=[{value:"",label:"All Methods"},{value:"stripe",label:"Stripe"},{value:"instapay",label:"InstaPay"},{value:"cash",label:"Cash"},{value:"bank_transfer",label:"Bank Transfer"}],this.paymentStatuses=[{value:"",label:"All Statuses"},{value:"pending",label:"Pending"},{value:"confirmed",label:"Confirmed"},{value:"refunded",label:"Refunded"}]}ngOnInit(){this.batchId=this.route.snapshot.paramMap.get("batchId")||"",this.loadData()}loadData(){this.loading=!0,this.paymentService.getPaymentSummary(this.batchId).subscribe({next:e=>{e?.success&&(this.summary=e.data)}}),this.batchService.getBatchDetails(this.batchId).subscribe({next:e=>{if(e?.success){let n=e.data;this.batchTitle=typeof n.title=="string"?n.title:n.title?.en||""}}}),this.batchService.getEnrollments(this.batchId).subscribe({next:e=>{e?.success&&(this.enrollments=e.data||[])}}),this.loadPayments()}loadPayments(){let e={};this.filterStatus&&(e.status=this.filterStatus),this.filterMethod&&(e.paymentMethod=this.filterMethod),this.paymentService.listBatchPayments(this.batchId,e).subscribe({next:n=>{n?.success&&(this.payments=n.data||[]),this.loading=!1},error:()=>{this.loading=!1}})}onFilterChange(){this.loadPayments()}confirmPayment(e){confirm(`Confirm payment of ${e.currency} ${e.amount} from ${e.studentName}?`)&&this.paymentService.confirmPayment(this.batchId,e.paymentId).subscribe({next:n=>{n?.success&&this.loadData()}})}viewStudentPayments(e){this.router.navigate(["/main/dashboard/cohorts/batches",this.batchId,"payments","students",e])}recordPayment(){this.router.navigate(["/main/dashboard/cohorts/batches",this.batchId,"payments","record"])}formatDate(e){return e?new Date(e).toLocaleDateString("en-CA"):""}formatCurrency(e,n){return`${n}
12 ${e.toLocaleString()}`}getStatusClass(e){return"payment-status-"+e}getMethodLabel(e){return{stripe:"Stripe",instapay:"InstaPay",cash:"Cash",bank_transfer:"Bank Transfer"}[e]||e}goBack(){this.navigationHistory.goBackOrFallback(["/main/dashboard/cohorts/batches",this.batchId])}trackByIndex(e){return e}static{this.\u0275fac=function(n){return new(n||t)(w(te),w(ue),w(qt),w(de),w(fe))}}static{this.\u0275cmp=H({type:t,selectors:[["app-payment-overview"]],decls:12,vars:3,consts:[[1,"payment-overview-container"],[1,"header"],[1,"btn-back",3,"click"],[1,"header-row"],[1,"btn-primary",3,"click"],["class","batch-name",4,"ngIf"],["class","loading-state",4,"ngIf"],[4,"ngIf"],[1,"batch-name"],[1,"loading-state"],["class","summary-cards",4,"ngIf"],["class","method-breakdown",4,"ngIf"],["class","students-section",4,"ngIf"],[1,"payments-section"],[1,"section-header"],[1,"filters"],[3,"ngModelChange","change","ngModel"],[3,"value",4,"ngFor","ngForOf","ngForTrackBy"],["class","empty-state",4,"ngIf"],["class","payments-table",4,"ngIf"],[1,"summary-cards"],[1,"card","revenue"],[1,"card-label"],[1,"card-value"],[1,"card-sub"],[1,"card","instructor"],[1,"card","platform"],["class","card pending",4,"ngIf"],[1,"card","pending"],[1,"card-value","warning"],[1,"method-breakdown"],[1,"method-chips"],["class","method-chip",4,"ngFor","ngForOf","ngForTrackBy"],[1,"method-chip"],[1,"students-section"],[1,"students-table"],[4,"ngFor","ngForOf","ngForTrackBy"],[1,"payment-badge",3,"ngClass"],[1,"btn-sm","btn-secondary",3,"click"],[3,"value"],[1,"empty-state"],[1,"payments-table"],["class","btn-sm btn-confirm",3,"click",4,"ngIf"],[1,"btn-sm","btn-confirm",3,"click"]],template:function(n,i){n&1&&(a(0,"div",0)(1,"div",1)(2,"button",2),x("click",function(){return i.goBack()}),s(3,"\u2190 Back to Batch"),r(),a(4,"div",3)(5,"h2"),s(6,"Payment Management"),r(),a(7,"button",4),x("click",function(){return i.recordPayment()}),s(8,"+ Record Payment"),r()(),h(9,um,2,1,"p",5),r(),h(10,Cm,3,0,"div",6)(11,ym,15,11,"ng-container",7),r()),n&2&&(o(9),p("ngIf",i.batchTitle),o(),p("ngIf",i.loading),o(),p("ngIf",!i.loading))},dependencies:[ce,Q,$,re,ae,Ce,Y,oe,kt,qi],styles:[".payment-overview-container[_ngcontent-%COMP%]{padding:24px}.payment-overview-container[_ngcontent-%COMP%] .header[_ngcontent-%COMP%]{margin-bottom:24px}.payment-overview-container[_ngcontent-%COMP%] .header[_ngcontent-%COMP%] .btn-back[_ngcontent-%COMP%]{background:none;border:none;color:#6b7280;cursor:pointer;padding:0;font-size:14px}.payment-overview-container[_ngcontent-%COMP%] .header[_ngcontent-%COMP%] .btn-back[_ngcontent-%COMP%]:hover{color:#374151}.payment-overview-container[_ngcontent-%COMP%] .header[_ngcontent-%COMP%] .header-row[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:center;margin-top:8px}.payment-overview-container[_ngcontent-%COMP%] .header[_ngcontent-%COMP%] .header-row[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0;font-size:24px;font-weight:600}.payment-overview-container[_ngcontent-%COMP%] .header[_ngcontent-%COMP%] .batch-name[_ngcontent-%COMP%]{color:#6b7280;font-size:14px;margin:4px 0 0}.payment-overview-container[_ngcontent-%COMP%] .btn-primary[_ngcontent-%COMP%]{background:#4f46e5;color:#fff;border:none;padding:10px 20px;border-radius:8px;cursor:pointer;font-weight:500}.payment-overview-container[_ngcontent-%COMP%] .btn-primary[_ngcontent-%COMP%]:hover{background:#4338ca}.payment-overview-container[_ngcontent-%COMP%] .loading-state[_ngcontent-%COMP%], .payment-overview-container[_ngcontent-%COMP%] .empty-state[_ngcontent-%COMP%]{text-align:center;padding:48px;color:#6b7280}.payment-overview-container[_ngcontent-%COMP%] .summary-cards[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px;margin-bottom:32px}.payment-overview-container[_ngcontent-%COMP%] .card[_ngcontent-%COMP%]{background:#fff;border:1px solid #e5e7eb;border-radius:12px;padding:20px}.payment-overview-container[_ngcontent-%COMP%] .card[_ngcontent-%COMP%] .card-label[_ngcontent-%COMP%]{font-size:13px;color:#6b7280;font-weight:500;margin-bottom:4px}.payment-overview-container[_ngcontent-%COMP%] .card[_ngcontent-%COMP%] .card-value[_ngcontent-%COMP%]{font-size:28px;font-weight:700;color:#111827}.payment-overview-container[_ngcontent-%COMP%] .card[_ngcontent-%COMP%] .card-value.warning[_ngcontent-%COMP%]{color:#d97706}.payment-overview-container[_ngcontent-%COMP%] .card[_ngcontent-%COMP%] .card-sub[_ngcontent-%COMP%]{font-size:12px;color:#9ca3af;margin-top:4px}.payment-overview-container[_ngcontent-%COMP%] .card.revenue[_ng
12content-%COMP%]{border-left:4px solid #10b981}.payment-overview-container[_ngcontent-%COMP%] .card.instructor[_ngcontent-%COMP%]{border-left:4px solid #6366f1}.payment-overview-container[_ngcontent-%COMP%] .card.platform[_ngcontent-%COMP%]{border-left:4px solid #8b5cf6}.payment-overview-container[_ngcontent-%COMP%] .card.pending[_ngcontent-%COMP%]{border-left:4px solid #f59e0b}.payment-overview-container[_ngcontent-%COMP%] .method-breakdown[_ngcontent-%COMP%]{margin-bottom:32px}.payment-overview-container[_ngcontent-%COMP%] .method-breakdown[_ngcontent-%COMP%] h3[_ngcontent-%COMP%]{font-size:16px;font-weight:600;margin-bottom:12px}.payment-overview-container[_ngcontent-%COMP%] .method-chips[_ngcontent-%COMP%]{display:flex;gap:12px;flex-wrap:wrap}.payment-overview-container[_ngcontent-%COMP%] .method-chip[_ngcontent-%COMP%]{background:#f3f4f6;padding:8px 16px;border-radius:20px;font-size:13px;color:#374151}.payment-overview-container[_ngcontent-%COMP%] .method-chip[_ngcontent-%COMP%] strong[_ngcontent-%COMP%]{color:#111827}.payment-overview-container[_ngcontent-%COMP%] .students-section[_ngcontent-%COMP%]{margin-bottom:32px}.payment-overview-container[_ngcontent-%COMP%] .students-section[_ngcontent-%COMP%] h3[_ngcontent-%COMP%]{font-size:16px;font-weight:600;margin-bottom:12px}.payment-overview-container[_ngcontent-%COMP%] .payments-section[_ngcontent-%COMP%] .section-header[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.payment-overview-container[_ngcontent-%COMP%] .payments-section[_ngcontent-%COMP%] .section-header[_ngcontent-%COMP%] h3[_ngcontent-%COMP%]{font-size:16px;font-weight:600;margin:0}.payment-overview-container[_ngcontent-%COMP%] .payments-section[_ngcontent-%COMP%] .filters[_ngcontent-%COMP%]{display:flex;gap:8px}.payment-overview-container[_ngcontent-%COMP%] .payments-section[_ngcontent-%COMP%] .filters[_ngcontent-%COMP%] select[_ngcontent-%COMP%]{padding:8px 12px;border:1px solid #d1d5db;border-radius:8px;font-size:13px}.payment-overview-container[_ngcontent-%COMP%] .payments-section[_ngcontent-%COMP%] .filters[_ngcontent-%COMP%] select[_ngcontent-%COMP%]:focus{outline:none;border-color:#4f46e5}.payment-overview-container[_ngcontent-%COMP%] .students-table[_ngcontent-%COMP%], .payment-overview-container[_ngcontent-%COMP%] .payments-table[_ngcontent-%COMP%]{width:100%;border-collapse:collapse;background:#fff;border-radius:12px;overflow:hidden;border:1px solid #e5e7eb}.payment-overview-container[_ngcontent-%COMP%] .students-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%], .payment-overview-container[_ngcontent-%COMP%] .payments-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%]{text-align:left;padding:12px 16px;background:#f9fafb;font-size:13px;font-weight:600;color:#374151;border-bottom:1px solid #e5e7eb}.payment-overview-container[_ngcontent-%COMP%] .students-table[_ngcontent-%COMP%] td[_ngcontent-%COMP%], .payment-overview-container[_ngcontent-%COMP%] .payments-table[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{padding:12px 16px;font-size:14px;border-bottom:1px solid #f3f4f6}.payment-overview-container[_ngcontent-%COMP%] .students-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:hover, .payment-overview-container[_ngcontent-%COMP%] .payments-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:hover{background:#f9fafb}.payment-overview-container[_ngcontent-%COMP%] .payment-badge[_ngcontent-%COMP%]{padding:4px 10px;border-radius:20px;font-size:11px;font-weight:500;text-transform:uppercase}.payment-overview-container[_ngcontent-%COMP%] .payment-status-confirmed[_ngcontent-%COMP%]{background:#dcfce7;color:#166534}.payment-overview-container[_ngcontent-%COMP%] .payment-status-pending[_ngcontent-%COMP%]{background:#fef3c7;color:#92400e}.payment-overview-container[_ngcontent-%COMP%] .payment-status-refunded[_ngcontent-%COMP%]{background:#fee2e2;color:#991b1b}.payment-overview-container[_ngcontent-%COMP%] .payment-status-paid[_ngcontent-%COMP%]{background:#dcfce7;color:#166534}.payment-overview-container[_ngcontent-%COMP%] .payment-status-partial[_ngcontent-%COMP%]{background:#fef3c7;color:#92400e}.payment-overview-container[_ngcontent-%COMP%] .payment-status-unpaid[_ngcontent-%COMP%]{background:#f3f4f6;color:#6b7280}.payment-overview-container[_ngcontent-%COMP%] .btn-sm[_ngcontent-%COMP%]{padding:6px 12px;font-size:12px;border:none;border-radius:6px;cursor:pointer}.payment-overview-container[_ngcontent-%COMP%] .btn-secondary[_ngcontent-%COMP%]{background:#f3f4f6;color:#374151}.payment-overview-container[_ngcontent-%COMP%] .btn-secondary[_ngcontent-%COMP%]:hover{background:#e5e7eb}.payment-overview-container[_ngcontent-%COMP%] .btn-confirm[_ngcontent-%COMP%]{background:#dcfce7;color:#166534;font-weight:500}.payment-overview-container[_ngcontent-%COMP%] .btn-confirm[_ngcontent-%COMP%]:hover{background:#bbf7d0}"]})}}return t})();
12function km(t,c){t&1&&(a(0,"div",6)(1,"p"),s(2,"Loading..."),r()())}function Am(t,c){if(t&1&&(a(0,"div",7),s(1),r()),t&2){let e=d();o(),g(e.successMessage)}}function Tm(t,c){if(t&1&&(a(0,"option",26),s(1),r()),t&2){let e=c.$implicit;p("value",e.userId),o(),N(" ",e.studentName," (",e.studentEmail,") ")}}function Rm(t,c){if(t&1&&(a(0,"option",26),s(1),r()),t&2){let e=c.$implicit;p("value",e.value),o(),g(e.label)}}function Dm(t,c){if(t&1&&(a(0,"option",26),s(1),r()),t&2){let e=c.$implicit;p("value",e.value),o(),g(e.label)}}function Bm(t,c){if(t&1&&(a(0,"option",26),s(1),r()),t&2){let e=c.$implicit;p("value",e),o(),g(e)}}function Lm(t,c){if(t&1){let e=M();a(0,"div",9)(1,"label"),s(2,"Level"),r(),a(3,"select",27),T("ngModelChange",function(i){C(e);let l=d(2);return A(l.selectedLevel,i)||(l.selectedLevel=i),f(i)}),x("change",function(){C(e);let i=d(2);return f(i.onLevelChange())}),a(4,"option",11),s(5,"Select level..."),r(),h(6,Bm,2,2,"option",12),r()()}if(t&2){let e=d(2);o(3),k("ngModel",e.selectedLevel),o(3),p("ngForOf",e.levels)("ngForTrackBy",e.trackByIndex)}}function Nm(t,c){t&1&&(a(0,"p",28),s(1,"Amount auto-calculated from pricing. You can override."),r())}function Vm(t,c){if(t&1){let e=M();a(0,"form",8),x("ngSubmit",function(){C(e);let i=d();return f(i.submit())}),a(1,"div",9)(2,"label"),s(3,"Student"),r(),a(4,"select",10),T("ngModelChange",function(i){C(e);let l=d();return A(l.selectedStudentId,i)||(l.selectedStudentId=i),f(i)}),a(5,"option",11),s(6,"Select a student..."),r(),h(7,Tm,2,3,"option",12),r()(),a(8,"div",13)(9,"div",9)(10,"label"),s(11,"Payment Method"),r(),a(12,"select",14),T("ngModelChange",function(i){C(e);let l=d();return A(l.paymentMethod,i)||(l.paymentMethod=i),f(i)}),h(13,Rm,2,2,"option",12),r()(),a(14,"div",9)(15,"label"),s(16,"Payment Plan"),r(),a(17,"select",15),T("ngModelChange",function(i){C(e);let l=d();return A(l.paymentPlan,i)||(l.paymentPlan=i),f(i)}),x("change",function(){C(e);let i=d();return f(i.onPlanChange())}),h(18,Dm,2,2,"option",12),r()()(),h(19,Lm,7,3,"div",16),a(20,"div",13)(21,"div",9)(22,"label"),s(23,"Currency"),r(),a(24,"select",17),T("ngModelChange",function(i){C(e);let l=d();return A(l.currency,i)||(l.currency=i),f(i)}),x("change",function(){C(e);let i=d();return f(i.onCurrencyChange())}),a(25,"option",18),s(26,"EGP"),r(),a(27,"option",19),s(28,"CAD"),r()()(),a(29,"div",9)(30,"label"),s(31,"Amount"),r(),a(32,"input",20),T("ngModelChange",function(i){C(e);let l=d();return A(l.amount,i)||(l.amount=i),f(i)}),r(),h(33,Nm,2,0,"p",21),r()(),a(34,"div",9)(35,"label"),s(36,"Notes (optional)"),r(),a(37,"textarea",22),T("ngModelChange",function(i){C(e);let l=d();return A(l.notes,i)||(l.notes=i),f(i)}),r()(),a(38,"div",23)(39,"button",24),x("click",function(){C(e);let i=d();return f(i.goBack())}),s(40,"Cancel"),r(),a(41,"button",25),s(42),r()()()}if(t&2){let e=d();o(4),k("ngModel",e.selectedStudentId),o(3),p("ngForOf",e.enrollments)("ngForTrackBy",e.trackByIndex),o(5),k("ngModel",e.paymentMethod),o(),p("ngForOf",e.methods)("ngForTrackBy",e.trackByIndex),o(4),k("ngModel",e.paymentPlan),o(),p("ngForOf",e.plans)("ngForTrackBy",e.trackByIndex),o(),p("ngIf",e.paymentPlan!=="full"),o(5),k("ngModel",e.currency),o(8),k("ngModel",e.amount),o(),p("ngIf",e.pricing),o(4),k("ngModel",e.notes),o(4),p("disabled",e.submitting||!e.selectedStudentId||!e.amount),o(),b(" ",e.submitting?"Recording...":"Record Payment"," ")}}var jr=(()=>{class t{constructor(e,n,i,l){this.route=e,this.paymentService=n,this.batchService=i,this.navigationHistory=l,this.enrollments=[],this.pricing=null,this.loading=!0,this.submitting=!1,this.successMessage="",this.selectedStudentId="",this.paymentMethod="cash",this.paymentPlan="per_level",this.selectedLevel="",this.currency="EGP",this.amount=0,this.notes="",this.levels=kn.map(u=>u.level),this.methods=[{value:"cash",label:"Cash"},{value:"instapay",label:"InstaPay"},{value:"bank_transfer",label:"Bank Transfer"},{value:"stripe",label:"Stripe"}],this.plans=[{value:"per_level",label:"Per Level"},{value:"installments",label:"Installments (Paired Levels)"},{value:"full",label:"Full Payment (10% discount)"}]}
12ngOnInit(){this.batchId=this.route.snapshot.paramMap.get("batchId")||"",this.loadData()}loadData(){this.loading=!0,this.batchService.getEnrollments(this.batchId).subscribe({next:e=>{e?.success&&(this.enrollments=e.data||[]),this.loading=!1},error:()=>{this.loading=!1}}),this.paymentService.getPricing().subscribe({next:e=>{e?.success&&(this.pricing=e.data)}})}onPlanChange(){this.recalcAmount()}onLevelChange(){this.recalcAmount()}onCurrencyChange(){this.recalcAmount()}recalcAmount(){if(!this.pricing)return;let e=this.currency.toLowerCase();if(this.paymentPlan==="per_level"&&this.selectedLevel){let n=this.pricing.levels[this.selectedLevel];this.amount=n?n[e]:0}else if(this.paymentPlan==="installments"&&this.selectedLevel){let n=this.pricing.levels[this.selectedLevel];this.amount=n?n[e]*2:0}else if(this.paymentPlan==="full"){let n=0;for(let l of Object.values(this.pricing.levels))n+=l[e]||0;let i=this.pricing.fullPaymentDiscountPercent||10;this.amount=Math.round(n*(1-i/100))}}submit(){if(!this.selectedStudentId||!this.amount||this.submitting)return;this.submitting=!0,this.successMessage="";let e={amount:this.amount,currency:this.currency,paymentMethod:this.paymentMethod,paymentPlan:this.paymentPlan,levelId:this.selectedLevel||null,notes:this.notes};this.paymentService.recordPayment(this.batchId,this.selectedStudentId,e).subscribe({next:n=>{this.submitting=!1,n?.success&&(this.successMessage=`Payment of ${this.currency} ${this.amount} recorded successfully.`,this.selectedStudentId="",this.amount=0,this.notes="",this.selectedLevel="")},error:()=>{this.submitting=!1}})}goBack(){this.navigationHistory.goBackOrFallback(["/main/dashboard/cohorts/batches",this.batchId,"payments"])}trackByIndex(e){return e}static{this.\u0275fac=function(n){return new(n||t)(w(te),w(qt),w(de),w(fe))}}static{this.\u0275cmp=H({type:t,selectors:[["app-record-payment"]],decls:9,vars:3,consts:[[1,"record-payment-container"],[1,"header"],[1,"btn-back",3,"click"],["class","loading-state",4,"ngIf"],["class","success-banner",4,"ngIf"],["class","payment-form",3,"ngSubmit",4,"ngIf"],[1,"loading-state"],[1,"success-banner"],[1,"payment-form",3,"ngSubmit"],[1,"form-group"],["name","student","required","",3,"ngModelChange","ngModel"],["value",""],[3,"value",4,"ngFor","ngForOf","ngForTrackBy"],[1,"form-row"],["name","method",3,"ngModelChange","ngModel"],["name","plan",3,"ngModelChange","change","ngModel"],["class","form-group",4,"ngIf"],["name","currency",3,"ngModelChange","change","ngModel"],["value","EGP"],["value","CAD"],["type","number","name","amount","min","0","step","1","required","",3,"ngModelChange","ngModel"],["class","hint",4,"ngIf"],["name","notes","rows","3","placeholder","Any additional notes...",3,"ngModelChange","ngModel"],[1,"form-actions"],["type","button",1,"btn-secondary",3,"click"],["type","submit",1,"btn-primary",3,"disabled"],[3,"value"],["name","level",3,"ngModelChange","change","ngModel"],[1,"hint"]],template:function(n,i){n&1&&(a(0,"div",0)(1,"div",1)(2,"button",2),x("click",function(){return i.goBack()}),s(3,"\u2190 Back to Payments"),r(),a(4,"h2"),s(5,"Record Payment"),r()(),h(6,km,3,0,"div",3)(7,Am,2,1,"div",4)(8,Vm,43,16,"form",5),r()),n&2&&(o(6),p("ngIf",i.loading),o(),p("ngIf",i.successMessage),o(),p("ngIf",!i.loading))},dependencies:[Q,$,je,re,ae,ie,Ve,Ce,Y,$e,Zi,Qe,oe,Xi],styles:[".record-payment-container[_ngcontent-%COMP%]{padding:24px;max-width:720px}.record-payment-container[_ngcontent-%COMP%] .header[_ngcontent-%COMP%]{margin-bottom:24px}.record-payment-container[_ngcontent-%COMP%] .header[_ngcontent-%COMP%] .btn-back[_ngcontent-%COMP%]{background:none;border:none;color:#6b7280;cursor:pointer;padding:0;font-size:14px}.record-payment-container[_ngcontent-%COMP%] .header[_ngcontent-%COMP%] .btn-back[_ngcontent-%COMP%]:hover{color:#374151}.record-payment-container[_ngcontent-%COMP%] .header[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:8px 0 0;font-size:24px;font-weight:600}.record-payment-container[_ngcontent-%COMP%] .loading-state[_ngcontent-%COMP%]{text-align:center;padding:48px;color:#6b7280}.record-payment-container[_ngcontent-%COMP%] .success-banner[_ngcontent-%COMP%]{background:#dcfce7;color:#166534;padding:12px 16px;border-radius:8px;margin-bottom:20px;font-size:14px;font-weight:500}.record-payment-container[_ngcontent-%COMP%] .payment-form[_ngcontent-%COMP%]{background:#fff;border:1px solid #e5e7eb;border-radius:12px;padding:24px}.record-payment-container[_ngcontent-%COMP%] .form-group[_ngcontent-%COMP%]{margin-bottom:20px}.record-payment-container[_ngcontent-%COMP%] .form-group[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{display:block;font-size:14px;font-weight:500;color:#374151;margin-bottom:6px}.record-payment-container[_ngcontent-%COMP%] .form-group[_ngcontent-%COMP%] input[_ngcontent-%COMP%], .record-payment-container[_ngcontent-%COMP%] .form-group[_ngcontent-%COMP%] select[_ngcontent-%COMP%], .record-payment-container[_ngcontent-%COMP%] .form-group[_ngcontent-%COMP%] textarea[_ngcontent-%COMP%]{width:100%;padding:10px 12px;border:1px solid #d1d5db;border-radius:8px;font-size:14px;box-sizing:border-box}.record-payment-container[_ngcontent-%COMP%] .form-group[_ngcontent-%COMP%] input[_ngcontent-%COMP%]:focus, .record-payment-container[_ngcontent-%COMP%] .form-group[_ngcontent-%COMP%] select[_ngcontent-%COMP%]:focus, .record-payment-container[_ngcontent-%COMP%] .form-group[_ngcontent-%COMP%] textarea[_ngcontent-%COMP%]:focus{outline:none;border-color:#4f46e5}.record-payment-container[_ngcontent-%COMP%] .form-group[_ngcontent-%COMP%] textarea[_ngcontent-%COMP%]{resize:vertical}.record-payment-container[_ngcontent-%COMP%] .form-group[_ngcontent-%COMP%] .hint[_ngcontent-%COMP%]{font-size:12px;color:#9ca3af;margin-top:4px}.record-payment-container[_ngcontent-%COMP%] .form-row[_ngcontent-%COMP%]{display:flex;gap:16px}.record-payment-container[_ngcontent-%COMP%] .form-row[_ngcontent-%COMP%] .form-group[_ngcontent-%COMP%]{flex:1}.record-payment-container[_ngcontent-%COMP%] .form-actions[_ngcontent-%COMP%]{display:flex;justify-content:flex-end;
12gap:12px;margin-top:24px;padding-top:20px;border-top:1px solid #e5e7eb}.record-payment-container[_ngcontent-%COMP%] .btn-primary[_ngcontent-%COMP%]{background:#4f46e5;color:#fff;border:none;padding:10px 24px;border-radius:8px;cursor:pointer;font-weight:500;font-size:14px}.record-payment-container[_ngcontent-%COMP%] .btn-primary[_ngcontent-%COMP%]:hover:not(:disabled){background:#4338ca}.record-payment-container[_ngcontent-%COMP%] .btn-primary[_ngcontent-%COMP%]:disabled{opacity:.6;cursor:not-allowed}.record-payment-container[_ngcontent-%COMP%] .btn-secondary[_ngcontent-%COMP%]{background:#f3f4f6;color:#374151;border:none;padding:10px 24px;border-radius:8px;cursor:pointer;font-weight:500;font-size:14px}.record-payment-container[_ngcontent-%COMP%] .btn-secondary[_ngcontent-%COMP%]:hover{background:#e5e7eb}"]})}}return t})();function Fm(t,c){t&1&&(a(0,"div",5)(1,"p"),s(2,"Loading..."),r()())}function Um(t,c){t&1&&(a(0,"div",21)(1,"p"),s(2,"No payments recorded yet."),r()())}function Hm(t,c){if(t&1&&(a(0,"span"),s(1),r()),t&2){let e=d().$implicit;o(),b("\xB7 Level ",e.levelId,"")}}function Gm(t,c){if(t&1&&(a(0,"div",28),s(1),r()),t&2){let e=d().$implicit;o(),g(e.notes)}}function qm(t,c){if(t&1){let e=M();a(0,"div",29)(1,"button",30),x("click",function(){C(e);let i=d().$implicit,l=d(2);return f(l.confirmPayment(i))}),s(2,"Confirm Payment"),r()()}}function Wm(t,c){if(t&1&&(a(0,"div",22)(1,"div",23)(2,"div",24),s(3),r(),a(4,"span",8),s(5),r()(),a(6,"div",25)(7,"span"),s(8),r(),a(9,"span"),s(10,"\xB7"),r(),a(11,"span"),s(12),r(),h(13,Hm,2,1,"span",4),a(14,"span"),s(15,"\xB7"),r(),a(16,"span"),s(17),r()(),h(18,Gm,2,1,"div",26)(19,qm,3,0,"div",27),r()),t&2){let e=c.$implicit,n=d(2);o(3),g(n.formatCurrency(e.amount,e.currency)),o(),p("ngClass",n.getStatusClass(e.status)),o(),g(e.status),o(3),g(n.getMethodLabel(e.paymentMethod)),o(4),g(e.paymentPlan),o(),p("ngIf",e.levelId),o(4),g(n.formatDate(e.createdAt)),o(),p("ngIf",e.notes),o(),p("ngIf",e.status==="pending")}}function zm(t,c){if(t&1&&(G(0),a(1,"div",6)(2,"div",7)(3,"div")(4,"span",8),s(5),r()(),a(6,"div",9)(7,"span",10),s(8),_(9,"number"),r(),a(10,"span",11),s(11,"/"),r(),a(12,"span",12),s(13),_(14,"number"),r()()(),a(15,"div",13)(16,"div",14),v(17,"div",15),r(),a(18,"span",16),s(19),r()()(),a(20,"div",17)(21,"h3"),s(22),r(),h(23,Um,3,0,"div",18),a(24,"div",19),h(25,Wm,20,9,"div",20),r()(),q()),t&2){let e=d();o(4),p("ngClass",e.getStatusClass(e.data.paymentStatus)),o(),b(" ",e.data.paymentStatus," "),o(3),b("",m(9,11,e.data.totalPaid)," paid"),o(5),b("",m(14,13,e.data.totalOwed)," total"),o(4),Ne("width",e.progressPercent,"%"),o(2),b("",e.progressPercent,"%"),o(3),b("Payment History (",e.data.payments.length,")"),o(),p("ngIf",e.data.payments.length===0),o(2),p("ngForOf",e.data.payments)("ngForTrackBy",e.trackByIndex)}}var Qr=(()=>{class t{constructor(e,n,i){this.route=e,this.paymentService=n,this.navigationHistory=i,this.data=null,this.loading=!0}ngOnInit(){this.batchId=this.route.snapshot.paramMap.get("batchId")||"",this.userId=this.route.snapshot.paramMap.get("userId")||"",this.loadData()}loadData(){this.loading=!0,this.paymentService.getStudentPayments(this.batchId,this.userId).subscribe({next:e=>{e?.success&&(this.data=e.data),this.loading=!1},error:()=>{this.loading=!1}})}confirmPayment(e){confirm(`Confirm payment of ${e.currency} ${e.amount}?`)&&this.paymentService.confirmPayment(this.batchId,e.paymentId).subscribe({next:n=>{n?.success&&this.loadData()}})}get progressPercent(){return!this.data||!this.data.totalOwed?0:Math.min(100,Math.round(this.data.totalPaid/this.data.totalOwed*100))}formatDate(e){return e?new Date(e).toLocaleDateString("en-CA"):""}formatCurrency(e,n){return`${n} ${e.toLocaleString()}`}getStatusClass(e){return"payment-status-"+e}getMethodLabel(e){return{stripe:"Stripe",instapay:"InstaPay",cash:"Cash",bank_transfer:"Bank Transfer"}[e]||e}goBack(){this.navigationHistory.goBackOrFallback(["/main/dashboard/cohorts/batches",this.batchId,"payments"])}trackByIndex(e){return e}static{this.\u0275fac=function(n){return new(n||t)(w(te),w(qt),w(fe))}}static{this.\u0275cmp=H({type:t,selectors:[["app-student-payment-detail"]],decls:8,vars:2,consts:[[1,"student-payment-container"],[1,"header"],[1,"btn-back",3,"click"],["class","loading-state",4,"ngIf"],[4,"ngIf"],[1,"loading-state"],[1,"progress-card"],[1,"progress-header"],[1,"payment-badge",3,"ngClass"],[1,"amounts"],[1,"paid"],[1,"separator"],[1,"owed"],[1,"progress-bar-container"],[1,"progress-bar-bg"],[1,"progress-bar-fill"],[1,"progress-text"],[1,"history-section"],["class","empty-state",4,"ngIf"],[1,"payment-list"],["class","payment-item",4,"ngFor","ngForOf","ngForTrackBy"],[1,"empty-state"],[1,"payment-item"],[1,"payment-main"],[1,"payment-amount"],[1,"payment-meta"],["class","payment-notes",4,"ngIf"],["class","payment-actions",4,"ngIf"],[1,"payment-notes"],[1,"payment-actions"],[1,"btn-sm","btn-confirm",3,"click"]],template:function(n,i){n&1&&(a(0,"div",0)(1,"div",1)(2,"button",2),x("click",function(){return i.goBack()}),s(3,"\u2190 Back to Payments"),r(),a(4,"h2"),s(5,"Student Payment Details"),r()(),h(6,Fm,3,0,"div",3)(7,zm,26,15,"ng-container",4),r()),n&2&&(o(6),p("ngIf",i.loading),o(),p("ngIf",!i.loading&&i.data))},dependencies:[ce,Q,$,kt],styles:[".student-payment-container[_ngcontent-%COMP%]{padding:24px;max-width:720px}.student-payment-container[_ngcontent-%COMP%] .header[_ngcontent-%COMP%]{margin-bottom:24px}.student-payment-container[_ngcontent-%COMP%] .header[_ngcontent-%COMP%] .btn-back[_ngcontent-%COMP%]{background:none;border:none;color:#6b7280;cursor:pointer;padding:0;font-size:14px}.student-payment-container[_ngcontent-%COMP%] .header[_ngcontent-%COMP%] .btn-back[_ngcontent-%COMP%]:hover{color:#374151}.student-payment-container[_ngcontent-%COMP%] .header[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:8px 0 0;font-size:24px;font-weight:600}.student-payment-container[_ngcontent-%COMP%] .loading-state[_ngcontent-%COMP%], .student-payment-container[_ngcontent-%COMP%] .empty-state[_ngcontent-%COMP%]{text-align:center;padding:48px;color:#6b7280}.student-payment-container[_ngcontent-%COMP%] .progress-card[_ngcontent-%COMP%]{background:#fff;border:1px solid #e5e7eb;border-radius:12px;padding:24px;margin-bottom:32px}.student-payment-container[_ngcontent-%COMP%] .progress-header[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.student-payment-container[_ngcontent-%COMP%] .amounts[_ngcontent-%COMP%]{font-size:16px}.student-payment-container[_ngcontent-%COMP%] .amounts[_ngcontent-%COMP%] .paid[_ngcontent-%COMP%]{font-weight:700;color:#111827}.student-payment-container[_ngcontent-%COMP%] .amounts[_ngcontent-%COMP%] .separator[_ng
12content-%COMP%]{color:#d1d5db;margin:0 4px}.student-payment-container[_ngcontent-%COMP%] .amounts[_ngcontent-%COMP%] .owed[_ngcontent-%COMP%]{color:#6b7280}.student-payment-container[_ngcontent-%COMP%] .progress-bar-container[_ngcontent-%COMP%]{display:flex;align-items:center;gap:12px}.student-payment-container[_ngcontent-%COMP%] .progress-bar-bg[_ngcontent-%COMP%]{flex:1;height:12px;background:#e5e7eb;border-radius:6px}.student-payment-container[_ngcontent-%COMP%] .progress-bar-fill[_ngcontent-%COMP%]{height:100%;background:#4f46e5;border-radius:6px;transition:width .3s}.student-payment-container[_ngcontent-%COMP%] .progress-text[_ngcontent-%COMP%]{font-size:14px;font-weight:600;color:#374151;min-width:40px}.student-payment-container[_ngcontent-%COMP%] .history-section[_ngcontent-%COMP%] h3[_ngcontent-%COMP%]{font-size:16px;font-weight:600;margin-bottom:16px}.student-payment-container[_ngcontent-%COMP%] .payment-list[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:12px}.student-payment-container[_ngcontent-%COMP%] .payment-item[_ngcontent-%COMP%]{background:#fff;border:1px solid #e5e7eb;border-radius:10px;padding:16px}.student-payment-container[_ngcontent-%COMP%] .payment-main[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.student-payment-container[_ngcontent-%COMP%] .payment-amount[_ngcontent-%COMP%]{font-size:18px;font-weight:700;color:#111827}.student-payment-container[_ngcontent-%COMP%] .payment-meta[_ngcontent-%COMP%]{font-size:13px;color:#6b7280}.student-payment-container[_ngcontent-%COMP%] .payment-meta[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{margin-right:4px}.student-payment-container[_ngcontent-%COMP%] .payment-notes[_ngcontent-%COMP%]{margin-top:8px;font-size:13px;color:#6b7280;font-style:italic;padding:8px;background:#f9fafb;border-radius:6px}.student-payment-container[_ngcontent-%COMP%] .payment-actions[_ngcontent-%COMP%]{margin-top:12px}.student-payment-container[_ngcontent-%COMP%] .payment-badge[_ngcontent-%COMP%]{padding:4px 10px;border-radius:20px;font-size:11px;font-weight:500;text-transform:uppercase}.student-payment-container[_ngcontent-%COMP%] .payment-status-confirmed[_ngcontent-%COMP%], .student-payment-container[_ngcontent-%COMP%] .payment-status-paid[_ngcontent-%COMP%]{background:#dcfce7;color:#166534}.student-payment-container[_ngcontent-%COMP%] .payment-status-pending[_ngcontent-%COMP%]{background:#fef3c7;color:#92400e}.student-payment-container[_ngcontent-%COMP%] .payment-status-refunded[_ngcontent-%COMP%]{background:#fee2e2;color:#991b1b}.student-payment-container[_ngcontent-%COMP%] .payment-status-partial[_ngcontent-%COMP%]{background:#fef3c7;color:#92400e}.student-payment-container[_ngcontent-%COMP%] .payment-status-unpaid[_ngcontent-%COMP%]{background:#f3f4f6;color:#6b7280}.student-payment-container[_ngcontent-%COMP%] .btn-sm[_ngcontent-%COMP%]{padding:6px 12px;font-size:12px;border:none;border-radius:6px;cursor:pointer}.student-payment-container[_ngcontent-%COMP%] .btn-confirm[_ngcontent-%COMP%]{background:#dcfce7;color:#166534;font-weight:500}.student-payment-container[_ngcontent-%COMP%] .btn-confirm[_ngcontent-%COMP%]:hover{background:#bbf7d0}"]})}}return t})();var Km=["attendanceModalElement"],Zt=(t,c)=>c.userId;function $m(t,c){t&1&&(a(0,"div",10),v(1,"span",12),s(2),_(3,"translate"),r()),t&2&&(o(2),b(" ",m(3,1,"GROUP_CLASSES_ADMIN.LOADING_ATTENDANCE")," "))}function jm(t,c){if(t&1&&v(0,"img",25),t&2){let e=d().$implicit;p("src",e.photoUrl,le)("alt",e.userName)}}function Qm(t,c){if(t&1&&(a(0,"div",38),s(1),r()),t&2){let e=d().$implicit;o(),g(e.userName.charAt(0).toUpperCase())}}function Ym(t,c){if(t&1&&(a(0,"span",28),s(1),r()),t&2){let e=d().$implicit,n=d(3);p("ngClass",n.getGuaranteeBadgeClass(e.guaranteeStatus)),o(),b(" ",n.getGuaranteeLabel(e.guaranteeStatus)," ")}}function Xm(t,c){if(t&1&&(a(0,"div",30),s(1),_(2,"translate"),_(3,"translate"),r()),t&2){let e=d().$implicit,n=d(3);o(),It(" ",m(2,6,"GROUP_CLASSES_ADMIN.ABSENCES_TOTAL"),": ",e.absencesTotal,"/",n.policy.maxAbsencesTotal," \xB7 ",m(3,8,"GROUP_CLASSES_ADMIN.ABSENCES_LEVEL"),": ",e.absencesByLevel,"/",n.policy.maxAbsencesPerLevel," ")}}function Jm(t,c){if(t&1){let e=M();a(0,"div",23)(1,"div",24),h(2,jm,1,2,"img",25)(3,Qm,2,1),r(),a(4,"div",26)(5,"div",27),s(6),h(7,Ym,2,2,"span",28),r(),a(8,"div",29),s(9),r(),h(10,Xm,4,10,"div",30),r(),a(11,"div",31)(12,"label",32)(13,"input",33),x("change",function(){let i=C(e).$implicit,l=d(3);return f(l.setStatus(i.userId,"present"))}),r(),a(14,"span",34),s(15),_(16,"translate"),r()(),a(17,"label",35)(18,"input",33),x("change",function(){let i=C(e).$implicit,l=d(3);return f(l.setStatus(i.userId,"absent"))}),r(),a(19,"span",34),s(20),_(21,"translate"),r()(),a(22,"label",36)(23,"input",33),x("change",function(){let i=C(e).$implicit,l=d(3);return f(l.setStatus(i.userId,"excused"))}),r(),a(24,"span",34),s(25),_(26,"translate"),r()(),a(27,"label",37)(28,"input",33),x("change",function(){let i=C(e).$implicit,l=d(3);return f(l.setStatus(i.userId,"late"))}),r(),a(29,"span",34),s(30),_(31,"translate"),r()()()()}if(t&2){let e=c.$implicit;o(2),P(2,e.photoUrl?2:3),o(4),b(" ",e.userName," "),o(),P(7,e.guaranteeStatus?7:-1),o(2),g(e.userEmail),o(),P(10,e.absencesTotal!==void 0?10:-1),o(3),p("name","attendance-"+e.userId)("checked",e.status==="present"),o(2),g(m(16,17,"GROUP_CLASSES_ADMIN.PRESENT")),o(3),p("name","attendance-"+e.userId)("checked",e.status==="absent"),o(2),g(m(21,19,"GROUP_CLASSES_ADMIN.ABSENT")),o(3),p("name","attendance-"+e.userId)("checked",e.status==="excused"),o(2),g(m(26,21,"GROUP_CLASSES_ADMIN.EXCUSED")),o(3),p("name","attendance-"+e.userId)("checked",e.status==="late"),o(2),g(m(31,23,"GROUP_CLASSES_ADMIN.LATE"))}}function Zm(t,c){if(t&1&&(a(0,"div",13)(1,"div",14)(2,"span",15),s(3),_(4,"translate"),r(),a(5,"span",16),s(6),r()(),a(7,"div",17)(8,"span",15),s(9),_(10,"translate"),r(),a(11,"span",16),s(12),r()(),a(13,"div",18)(14,"span",15),s(15),_(16,"translate"),r(),a(17,"span",16),s(18),r()(),a(19,"div",19)(20,"span",15),s(21),_(22,"translate"),r(),a(23,"span",16),s(24),r()(),a(25,"div",20)(26,"span",15),s(27),_(28,"translate"),r(),a(29,"span",16),s(30),r()(),a(31,"div",21)(32,"span",15),s(33),_(34,"translate"),r(),a(35,"span",16),s(36),r()()(),a(37,"div",22),z(38,Jm,32,25,"div",23,Zt),r()),t&2){let e=d(2);o(3),g(m(4,12,"GROUP_CLASSES_ADMIN.TOTAL")),o(3),g(e.summary.total),o(3),g(m(10,14,"GROUP_CLASSES_ADMIN.PRESENT")),o(3),g(e.summary.present),o(3),g(m(16,16,"GROUP_CLASSES_ADMIN.ABSENT")),o(3),g(e.summary.absent),o(3),g(m(22,18,"GROUP_CLASSES_ADMIN.EXCUSED")),o(3),g(e.summary.excused),o(3),g(m(28,20,"GROUP_CLASSES_ADMIN.LATE")),o(3),g(e.summary.late),o(3),g(m(34,22,"GROUP_CLASSES_ADMIN.UNMARKED")),o(3),g(e.summary.unmarked),o(2),K(e.attendance)}}function eg(t,c){t&1&&(a(0,"div",11)(1,"p"),s(2),_(3,"translate"),r()()),t&2&&(o(2),g(m(3,1,"GROUP_CLASSES_ADMIN.NO_REGISTERED_USERS")))}function tg(t,c){if(t&1&&h(0,$m,4,3,"div",10)(1,Zm,40,24)(2,eg,4,3,"div",11),t&2){let e=d();P(0,e.isLoading?0:-1),o(),P(1,!e.isLoading&&e.attendance.length>0?1:-1),o(),P(2,!e.isLoading&&e.attendance.length===0?2:-1)}}
12function ng(t,c){if(t&1&&(a(0,"span",43),s(1),r()),t&2){let e=c.$implicit;o(),g(e.userName)}}function ig(t,c){if(t&1&&(a(0,"div",40)(1,"h6",41),s(2),_(3,"translate"),r(),a(4,"div",42),z(5,ng,2,1,"span",43,Zt),r()()),t&2){let e=d(2);o(2),N(" ",m(3,2,"GROUP_CLASSES_ADMIN.PRESENT_USERS")," (",e.presentUsers.length,") "),o(3),K(e.presentUsers)}}function og(t,c){if(t&1&&(a(0,"span",45),s(1),r()),t&2){let e=c.$implicit;o(),g(e.userName)}}function rg(t,c){if(t&1&&(a(0,"div",40)(1,"h6",44),s(2),_(3,"translate"),r(),a(4,"div",42),z(5,og,2,1,"span",45,Zt),r()()),t&2){let e=d(2);o(2),N(" ",m(3,2,"GROUP_CLASSES_ADMIN.ABSENT_USERS")," (",e.absentUsers.length,") "),o(3),K(e.absentUsers)}}function ag(t,c){if(t&1&&(a(0,"span",47),s(1),r()),t&2){let e=c.$implicit;o(),g(e.userName)}}function sg(t,c){if(t&1&&(a(0,"div",40)(1,"h6",46),s(2),_(3,"translate"),r(),a(4,"div",42),z(5,ag,2,1,"span",47,Zt),r()()),t&2){let e=d(2);o(2),N(" ",m(3,2,"GROUP_CLASSES_ADMIN.EXCUSED_USERS")," (",e.excusedUsers.length,") "),o(3),K(e.excusedUsers)}}function lg(t,c){if(t&1&&(a(0,"span",49),s(1),r()),t&2){let e=c.$implicit;o(),g(e.userName)}}function cg(t,c){if(t&1&&(a(0,"div",40)(1,"h6",48),s(2),_(3,"translate"),r(),a(4,"div",42),z(5,lg,2,1,"span",49,Zt),r()()),t&2){let e=d(2);o(2),N(" ",m(3,2,"GROUP_CLASSES_ADMIN.LATE_USERS")," (",e.lateUsers.length,") "),o(3),K(e.lateUsers)}}function dg(t,c){if(t&1&&(a(0,"div",8)(1,"h5"),s(2),_(3,"translate"),r(),a(4,"p",39),s(5),_(6,"translate"),r(),h(7,ig,7,4,"div",40)(8,rg,7,4,"div",40)(9,sg,7,4,"div",40)(10,cg,7,4,"div",40),r()),t&2){let e=d();o(2),g(m(3,6,"GROUP_CLASSES_ADMIN.CONFIRM_ATTENDANCE")),o(3),g(m(6,8,"GROUP_CLASSES_ADMIN.CONFIRM_ATTENDANCE_MESSAGE")),o(2),P(7,e.presentUsers.length>0?7:-1),o(),P(8,e.absentUsers.length>0?8:-1),o(),P(9,e.excusedUsers.length>0?9:-1),o(),P(10,e.lateUsers.length>0?10:-1)}}function pg(t,c){if(t&1){let e=M();a(0,"button",50),x("click",function(){C(e);let i=d();return f(i.closeModal())}),s(1),_(2,"translate"),r(),a(3,"button",51),x("click",function(){C(e);let i=d();return f(i.openConfirmation())}),s(4),_(5,"translate"),r()}if(t&2){let e=d();o(),b(" ",m(2,3,"GROUP_CLASSES_ADMIN.CLOSE")," "),o(2),p("disabled",!e.hasChanges||e.isLoading),o(),b(" ",m(5,5,"GROUP_CLASSES_ADMIN.SAVE_ATTENDANCE")," ")}}function _g(t,c){t&1&&v(0,"span",53)}function mg(t,c){if(t&1){let e=M();a(0,"button",52),x("click",function(){C(e);let i=d();return f(i.cancelConfirmation())}),s(1),_(2,"translate"),r(),a(3,"button",51),x("click",function(){C(e);let i=d();return f(i.confirmSave())}),h(4,_g,1,0,"span",53),s(5),_(6,"translate"),r()}if(t&2){let e=d();p("disabled",e.isSaving),o(),b(" ",m(2,5,"GROUP_CLASSES_ADMIN.CANCEL")," "),o(2),p("disabled",e.isSaving),o(),P(4,e.isSaving?4:-1),o(),b(" ",m(6,7,"GROUP_CLASSES_ADMIN.CONFIRM")," ")}}var Xr=(()=>{class t{constructor(e,n,i){this.cohortApi=e,this._toast=n,this._translate=i,this.modalId="cohortAttendanceModal",this.batchId="",this.sessionId="",this.attendance=[],this.summary={total:0,present:0,absent:0,excused:0,late:0,unmarked:0},this.policy={maxAbsencesTotal:8,maxAbsencesPerLevel:2},this.level="",this.isLoading=!1,this.isSaving=!1,this.showConfirmation=!1,this.destroy$=new ve,this.originalStatuses=new Map}ngOnDestroy(){this.destroy$.next(),this.destroy$.complete()}openModal(){this.modalElement&&(this.modalInstance=new bootstrap.Modal(this.modalElement.nativeElement,{backdrop:"static",keyboard:!1}),this.modalInstance.show(),this.loadAttendance())}closeModal(){this.modalInstance&&(this.modalInstance.hide(),setTimeout(()=>this.resetModal(),300))}onModalHidden(){setTimeout(()=>this.resetModal(),300)}resetModal(){this.attendance=[],this.summary={total:0,present:0,absent:0,excused:0,late:0,unmarked:0},this.policy={maxAbsencesTotal:8,maxAbsencesPerLevel:2},this.level="",this.isLoading=!1,this.isSaving=!1,this.showConfirmation=!1,this.originalStatuses.clear()}loadAttendance(){!this.batchId||!this.sessionId||(this.isLoading=!0,this.cohortApi.getAttendance(this.batchId,this.sessionId).pipe(U(this.destroy$)).subscribe({next:e=>{this.attendance=e.data.students||e.data.attendance||[],this.captureOriginalStatuses(),this.summary=e.data.summary,e.data.policy&&(this.policy=e.data.policy),e.data.level&&(this.level=e.data.level),this.isLoading=!1},error:e=>{this.isLoading=!1,this._toast.error(e?.error?.message||this.t("GROUP_CLASSES_ADMIN.FAILED_LOAD_ATTENDANCE"))}}))}
12setStatus(e,n){let i=this.attendance.find(l=>l.userId===e);i&&(i.status=n,this.updateSummary())}updateSummary(){this.summary={total:this.attendance.length,present:this.attendance.filter(e=>e.status==="present").length,absent:this.attendance.filter(e=>e.status==="absent").length,excused:this.attendance.filter(e=>e.status==="excused").length,late:this.attendance.filter(e=>e.status==="late").length,unmarked:this.attendance.filter(e=>e.status==="unmarked").length}}get presentUsers(){return this.attendance.filter(e=>e.status==="present")}get absentUsers(){return this.attendance.filter(e=>e.status==="absent")}get excusedUsers(){return this.attendance.filter(e=>e.status==="excused")}get lateUsers(){return this.attendance.filter(e=>e.status==="late")}get hasChanges(){return this.attendance.some(e=>e.status!==(this.originalStatuses.get(e.userId)??"unmarked"))}captureOriginalStatuses(){this.originalStatuses=new Map(this.attendance.map(e=>[e.userId,e.status]))}getGuaranteeBadgeClass(e){switch(e){case"eligible":return"badge-eligible";case"at_risk":return"badge-at-risk";case"not_eligible":return"badge-not-eligible";default:return""}}getGuaranteeLabel(e){switch(e){case"eligible":return this._translate.instant("GROUP_CLASSES_ADMIN.GUARANTEE_ELIGIBLE");case"at_risk":return this._translate.instant("GROUP_CLASSES_ADMIN.GUARANTEE_AT_RISK");case"not_eligible":return this._translate.instant("GROUP_CLASSES_ADMIN.GUARANTEE_NOT_ELIGIBLE");default:return""}}openConfirmation(){this.showConfirmation=!0}cancelConfirmation(){this.showConfirmation=!1}confirmSave(){let e={};if(this.attendance.filter(n=>n.status!=="unmarked").forEach(n=>{e[n.userId]=n.status}),Object.keys(e).length===0){this._toast.warn(this.t("GROUP_CLASSES_ADMIN.NO_ATTENDANCE_TO_SAVE"));return}this.isSaving=!0,this.cohortApi.saveAttendance(this.batchId,this.sessionId,e).pipe(U(this.destroy$)).subscribe({next:()=>{this._toast.success(this._translate.instant("GROUP_CLASSES_ADMIN.ATTENDANCE_SAVED")),this.isSaving=!1,this.showConfirmation=!1,this.closeModal()},error:n=>{this.isSaving=!1,this._toast.error(n?.error?.message||this.t("GROUP_CLASSES_ADMIN.FAILED_SAVE_ATTENDANCE"))}})}t(e){return this._translate.instant(e)}static{this.\u0275fac=function(n){return new(n||t)(w(Vt),w(he),w(ze))}}static{this.\u0275cmp=H({type:t,selectors:[["app-cohort-attendance-modal"]],viewQuery:function(n,i){if(n&1&&_e(Km,5),n&2){let l;me(l=ge())&&(i.modalElement=l.first)}},inputs:{modalId:"modalId",batchId:"batchId",sessionId:"sessionId"},decls:16,vars:13,consts:[["attendanceModalElement",""],["tabindex","-1","aria-hidden","true",1,"modal","fade",3,"hidden.bs.modal","id"],[1,"modal-dialog","modal
12-dialog-centered","modal-lg"],[1,"modal-content"],[1,"modal-header"],[1,"modal-title",3,"id"],["type","button","data-bs-dismiss","modal",1,"btn-close"],[1,"modal-body"],[1,"confirmation-view"],[1,"modal-footer"],[1,"loading-state"],[1,"no-data-state"],["role","status",1,"spinner-border","spinner-border-sm","me-2"],[1,"attendance-summary"],[1,"summary-item"],[1,"summary-label"],[1,"summary-value"],[1,"summary-item","present"],[1,"summary-item","absent"],[1,"summary-item","excused"],[1,"summary-item","late"],[1,"summary-item","unmarked"],[1,"attendance-list"],[1,"attendance-row"],[1,"user-avatar"],["loading","lazy",1,"avatar-img",3,"src","alt"],[1,"user-info"],[1,"user-name"],[1,"guarantee-badge",3,"ngClass"],[1,"user-email"],[1,"absence-counters"],[1,"attendance-controls"],[1,"radio-btn","present-radio"],["type","radio",3,"change","name","checked"],[1,"radio-label"],[1,"radio-btn","absent-radio"],[1,"radio-btn","excused-radio"],[1,"radio-btn","late-radio"],[1,"avatar-placeholder"],[1,"confirmation-subtitle"],[1,"confirmation-group"],[1,"group-label","present-label"],[1,"user-chips"],[1,"user-chip","present-chip"],[1,"group-label","absent-label"],[1,"user-chip","absent-chip"],[1,"group-label","excused-label"],[1,"user-chip","excused-chip"],[1,"group-label","late-label"],[1,"user-chip","late-chip"],["type","button",1,"btn","btn-cancel",3,"click"],["type","button",1,"btn","btn-save",3,"click","disabled"],["type","button",1,"btn","btn-cancel",3,"click","disabled"],["role","status","aria-hidden","true",1,"spinner-border","spinner-border-sm","me-2"]],template:function(n,i){if(n&1){let l=M();a(0,"div",1,0),x("hidden.bs.modal",function(){return C(l),f(i.onModalHidden())}),a(2,"div",2)(3,"div",3)(4,"div",4)(5,"h1",5),s(6),_(7,"translate"),r(),v(8,"button",6),_(9,"translate"),r(),a(10,"div",7),h(11,tg,3,3)(12,dg,11,10,"div",8),r(),a(13,"div",9),h(14,pg,6,7)(15,mg,7,9),r()()()()}n&2&&(p("id",i.modalId),R("aria-labelledby",i.modalId+"Label"),o(5),p("id",i.modalId+"Label"),o(),b(" ",m(7,9,"GROUP_CLASSES_ADMIN.MARK_ATTENDANCE")," "),o(2),R("aria-label",m(9,11,"GROUP_CLASSES_ADMIN.CLOSE")),o(3),P(11,i.showConfirmation?-1:11),o(),P(12,i.showConfirmation?12:-1),o(2),P(14,i.showConfirmation?-1:14),o(),P(15,i.showConfirmation?15:-1))},dependencies:[ce,j],styles:[".modal-header[_ngcontent-%COMP%]{border-bottom:1px solid #e5e7eb;padding:1.5rem}.modal-header[_ngcontent-%COMP%] .modal-title[_ngcontent-%COMP%]{font-size:20px;font-weight:700;color:#146d6d}.modal-body[_ngcontent-%COMP%]{padding:1.5rem;max-height:70vh;overflow-y:auto}.modal-footer[_ngcontent-%COMP%]{border-top:1px solid #e5e7eb;padding:1rem 1.5rem;gap:.75rem}.loading-state[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:center;padding:2rem;color:#6b7280;font-size:14px}.no-data-state[_ngcontent-%COMP%]{text-align:center;padding:2rem}.no-data-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{color:#6b7280;font-size:14px;margin:0}.attendance-summary[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(6,1fr);gap:.75rem;margin-bottom:1.5rem}.attendance-summary[_ngcontent-%COMP%] .summary-item[_ngcontent-%COMP%]{background-color:#f9fafb;border:1px solid #e5e7eb;border-radius:6px;padding:.5rem;text-align:center}.attendance-summary[_ngcontent-%COMP%] .summary-item[_ngcontent-%COMP%] .summary-label[_ngcontent-%COMP%]{display:block;font-size:11px;color:#6b7280;margin-bottom:2px}.attendance-summary[_ngcontent-%COMP%] .summary-item[_ngcontent-%COMP%] .summary-value[_ngcontent-%COMP%]{display:block;font-size:20px;font-weight:700;color:#111827}.attendance-summary[_ngcontent-%COMP%] .summary-item.present[_ngcontent-%COMP%] .summary-value[_ngcontent-%COMP%]{color:#059669}.attendance-summary[_ngcontent-%COMP%] .summary-item.absent[_ngcontent-%COMP%] .summary-value[_ngcontent-%COMP%]{color:#dc2626}.attendance-summary[_ngcontent-%COMP%] .summary-item.excused[_ngcontent-%COMP%] .summary-value[_ngcontent-%COMP%]{color:#d97706}.attendance-summary[_ngcontent-%COMP%] .summary-item.late[_ngcontent-%COMP%] .summary-value[_ngcontent-%COMP%]{color:#6b7280}.attendance-summary[_ngcontent-%COMP%] .summary-item.unmarked[_ngcontent-%COMP%] .summary-value[_ngcontent-%COMP%]{color:#9ca3af}.attendance-list[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.5rem}.attendance-row[_ngcontent-%COMP%]{display:flex;align-items:center;gap:1rem;padding:.75rem;background-color:#f9fafb;border:1px solid #e5e7eb;border-radius:8px}
12.attendance-row[_ngcontent-%COMP%] .user-avatar[_ngcontent-%COMP%]{flex-shrink:0}.attendance-row[_ngcontent-%COMP%] .user-avatar[_ngcontent-%COMP%] .avatar-img[_ngcontent-%COMP%]{width:36px;height:36px;border-radius:50%;object-fit:cover}.attendance-row[_ngcontent-%COMP%] .user-avatar[_ngcontent-%COMP%] .avatar-placeholder[_ngcontent-%COMP%]{width:36px;height:36px;border-radius:50%;background-color:#21b6b6;color:#fff;display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:600}.attendance-row[_ngcontent-%COMP%] .user-info[_ngcontent-%COMP%]{flex:1;min-width:0}.attendance-row[_ngcontent-%COMP%] .user-info[_ngcontent-%COMP%] .user-name[_ngcontent-%COMP%]{font-size:14px;font-weight:600;color:#111827}.attendance-row[_ngcontent-%COMP%] .user-info[_ngcontent-%COMP%] .user-email[_ngcontent-%COMP%]{font-size:12px;color:#6b7280}.attendance-row[_ngcontent-%COMP%] .attendance-controls[_ngcontent-%COMP%]{display:flex;gap:.75rem;flex-shrink:0}.attendance-row[_ngcontent-%COMP%] .attendance-controls[_ngcontent-%COMP%] .radio-btn[_ngcontent-%COMP%]{display:flex;align-items:center;gap:4px;cursor:pointer}.attendance-row[_ngcontent-%COMP%] .attendance-controls[_ngcontent-%COMP%] .radio-btn[_ngcontent-%COMP%] input[type=radio][_ngcontent-%COMP%]{accent-color:#21b6b6;width:16px;height:16px;cursor:pointer}.attendance-row[_ngcontent-%COMP%] .attendance-controls[_ngcontent-%COMP%] .radio-btn[_ngcontent-%COMP%] .radio-label[_ngcontent-%COMP%]{font-size:12px;font-weight:500}.attendance-row[_ngcontent-%COMP%] .attendance-controls[_ngcontent-%COMP%] .radio-btn.present-radio[_ngcontent-%COMP%] .radio-label[_ngcontent-%COMP%]{color:#059669}.attendance-row[_ngcontent-%COMP%] .attendance-controls[_ngcontent-%COMP%] .radio-btn.absent-radio[_ngcontent-%COMP%] .radio-label[_ngcontent-%COMP%]{color:#dc2626}.attendance-row[_ngcontent-%COMP%] .attendance-controls[_ngcontent-%COMP%] .radio-btn.excused-radio[_ngcontent-%COMP%] .radio-label[_ngcontent-%COMP%]{color:#d97706}.attendance-row[_ngcontent-%COMP%] .attendance-controls[_ngcontent-%COMP%] .radio-btn.late-radio[_ngcontent-%COMP%] .radio-label[_ngcontent-%COMP%]{color:#6b7280}.attendance-row[_ngcontent-%COMP%] .absence-counters[_ngcontent-%COMP%]{font-size:11px;color:#9ca3af;margin-top:2px}.attendance-row[_ngcontent-%COMP%] .guarantee-badge[_ngcontent-%COMP%]{display:inline-block;padding:1px 6px;border-radius:10px;font-size:10px;font-weight:600;margin-left:6px;vertical-align:middle}.attendance-row[_ngcontent-%COMP%] .guarantee-badge.badge-eligible[_ngcontent-%COMP%]{background-color:#dcfce7;color:#14532d}.attendance-row[_ngcontent-%COMP%] .guarantee-badge.badge-at-risk[_ngcontent-%COMP%]{background-color:#fef3c7;color:#92400e}.attendance-row[_ngcontent-%COMP%] .guarantee-badge.badge-not-eligible[_ngcontent-%COMP%]{background-color:#fee2e2;color:#881337}.confirmation-view[_ngcontent-%COMP%] h5[_ngcontent-%COMP%]{font-size:18px;font-weight:700;color:#146d6d;margin-bottom:.5rem}.confirmation-view[_ngcontent-%COMP%] .confirmation-subtitle[_ngcontent-%COMP%]{font-size:14px;color:#6b7280;margin-bottom:1.5rem}.confirmation-view[_ngcontent-%COMP%] .confirmation-group[_ngcontent-%COMP%]{margin-bottom:1.25rem}.confirmation-view[_ngcontent-%COMP%] .confirmation-group[_ngcontent-%COMP%]:last-child{margin-bottom:0}.confirmation-view[_ngcontent-%COMP%] .confirmation-group[_ngcontent-%COMP%] .group-label[_ngcontent-%COMP%]{font-size:14px;font-weight:600;margin-bottom:.5rem}.confirmation-view[_ngcontent-%COMP%] .confirmation-group[_ngcontent-%COMP%] .group-label.present-label[_ngcontent-%COMP%]{color:#059669}.confirmation-view[_ngcontent-%COMP%] .confirmation-group[_ngcontent-%COMP%] .group-label.absent-label[_ngcontent-%COMP%]{color:#dc2626}.confirmation-view[_ngcontent-%COMP%] .confirmation-group[_ngcontent-%COMP%] .group-label.excused-label[_ngcontent-%COMP%]{color:#d97706}.confirmation-view[_ngcontent-%COMP%] .confirmation-group[_ngcontent-%COMP%] .group-label.late-label[_ngcontent-%COMP%]{color:#6b7280}.confirmation-view[_ngcontent-%COMP%] .confirmation-group[_ngcontent-%COMP%] .user-chips[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;gap:.5rem}.confirmation-view[_ngcontent-%COMP%] .confirmation-group[_ngcontent-%COMP%] .user-chip[_ngcontent-%COMP%]{display:inline-block;padding:4px 10px;border-radius:4px;font-size:13px;font-weight:500}.confirmation-view[_ngcontent-%COMP%] .confirmation-group[_ngcontent-%COMP%] .user-chip.present-chip[_ngcontent-%COMP%]{background-color:#dcfce7;color:#14532d}.confirmation-view[_ngcontent-%COMP%] .confirmation-group[_ngcontent-%COMP%] .user-chip.absent-chip[_ngcontent-%COMP%]{background-color:#fee2e2;color:#881337}.confirmation-view[_ngcontent-%COMP%] .confirmation-group[_ngcontent-%COMP%] .user-chip.excused-chip[_ngcontent-%COMP%]{background-color:#fef3c7;color:#92400e}.confirmation-view[_ngcontent-%COMP%] .confirmation-group[_ngcontent-%COMP%] .user-chip.late-chip[_ngcontent-%COMP%]{background-color:#f3f4f6;color:#374151}.btn-cancel[_ngcontent-%COMP%]{padding:.5rem 1rem;border:1px solid #d1d5db;background-color:#fff;color:#374151;border-radius:4px;font-size:14px;font-weight:500;transition:all .2s}.btn-cancel[_ngcontent-%COMP%]:hover:not(:disabled){background-color:#f3f4f6;border-color:#9ca3af}.btn-cancel[_ngcontent-%COMP%]:disabled{opacity:.5;cursor:not-allowed}.btn-save[_ngcontent-%COMP%]{padding:.5rem 1rem;background-color:#21b6b6;color:#fff;border:none;border-radius:4px;font-size:14px;font-weight:500;transition:all .2s}.btn-save[_ngcontent-%COMP%]:hover:not(:disabled){background-color:#188888}.btn-save[_ngcontent-%COMP%]:disabled{opacity:.5;cursor:not-allowed}@media screen and (max-width: 768px){.attendance-summary[_ngcontent-%COMP%]{grid-template-columns:repeat(3,1fr)}.attendance-row[_ngcontent-%COMP%]{flex-wrap:wrap}
12.attendance-row[_ngcontent-%COMP%] .attendance-controls[_ngcontent-%COMP%]{width:100%;justify-content:flex-end}}"]})}}return t})();var ug=["modalElement"];function Cg(t,c){if(t&1&&(a(0,"p",24),s(1),r()),t&2){let e=d();o(),g(e.sessionTitle)}}function fg(t,c){t&1&&(a(0,"p"),s(1,"Students will be notified by email with this reason."),r())}function hg(t,c){t&1&&(a(0,"p"),s(1,"No reason provided. Students will not receive a reason email."),r())}function xg(t,c){if(t&1){let e=M();a(0,"div",19)(1,"div",10)(2,"label",11),s(3,"New Date"),r(),a(4,"input",25),T("ngModelChange",function(i){C(e);let l=d();return A(l.newDate,i)||(l.newDate=i),f(i)}),r()(),a(5,"div",10)(6,"label",11),s(7,"New Time"),r(),a(8,"input",26),T("ngModelChange",function(i){C(e);let l=d();return A(l.newTime,i)||(l.newTime=i),f(i)}),r()(),a(9,"div",10)(10,"label",11),s(11,"Reschedule reason (optional)"),r(),a(12,"textarea",27),T("ngModelChange",function(i){C(e);let l=d();return A(l.rescheduleReason,i)||(l.rescheduleReason=i),f(i)}),r()(),a(13,"div",28),h(14,fg,2,0,"p")(15,hg,2,0),r()()}if(t&2){let e=d();o(4),k("ngModel",e.newDate),p("min",e.getTodayDate())("disabled",e.isSubmitting),o(4),k("ngModel",e.newTime),p("disabled",e.isSubmitting),o(4),k("ngModel",e.rescheduleReason),p("disabled",e.isSubmitting),o(2),P(14,e.willNotifyStudents?14:15)}}function bg(t,c){t&1&&v(0,"span",23)}var Jr=(()=>{class t{constructor(e,n){this.cohortService=e,this.toast=n,this.modalId="cohortCancelSessionModal",this.batchId="",this.levelId="",this.sessionId="",this.sessionTitle="",this.sessionUpdated=new Le,this.action="skip",this.newDate="",this.newTime="",this.rescheduleReason="",this.isSubmitting=!1}openModal(){this.modalElement&&(this.resetModal(),this.modalInstance=new bootstrap.Modal(this.modalElement.nativeElement,{backdrop:"static",keyboard:!1}),this.modalInstance.show())}closeModal(){this.modalInstance&&(this.modalInstance.hide(),setTimeout(()=>{this.resetModal()},300))}onModalHidden(){setTimeout(()=>{this.resetModal()},300)}resetModal(){this.action="skip",this.newDate="",this.newTime="",this.rescheduleReason="",this.isSubmitting=!1}onActionChange(e){this.action=e,e==="skip"&&(this.newDate="",this.newTime="",this.rescheduleReason="")}get willNotifyStudents(){return!!this.rescheduleReason.trim()}canSubmit(){return!(this.isSubmitting||this.action==="reschedule"&&(!this.newDate||!this.newTime))}getTodayDate(){return new Date().toISOString().split("T")[0]}onSubmit(){if(!this.canSubmit()){this.toast.error("Please fill all required fields");return}this.isSubmitting=!0;let e={action:this.action};if(this.action==="reschedule"){e.newDate=this.newDate,e.newTime=this.newTime;let n=this.rescheduleReason.trim();n&&(e.rescheduleReason=n)}this.cohortService.cancelSession(this.batchId,this.levelId,this.sessionId,e).subscribe({next:n=>{let i=this.action==="skip"?"Session skipped successfully":"Session rescheduled successfully";this.toast.success(n?.message||i),this.sessionUpdated.emit(),this.closeModal()},error:n=>{this.isSubmitting=!1,this.toast.error(n?.error?.message||"Failed to cancel session")},complete:()=>{this.isSubmitting=!1}})}static{this.\u0275fac=function(n){return new(n||t)(w(de),w(he))}}static{this.\u0275cmp=H({type:t,selectors:[["app-cohort-cancel-session-modal"]],viewQuery:function(n,i){if(n&1&&_e(ug,5),n&2){let l;me(l=ge())&&(i.modalElement=l.first)}},inputs:{modalId:"modalId",batchId:"batchId",levelId:"levelId",sessionId:"sessionId",sessionTitle:"sessionTitle"},outputs:{sessionUpdated:"sessionUpdated"},decls:36,vars:14,consts:[["modalElement",""],["tabindex","-1","aria-hidden","true",1,"modal","fade",3,"hidden.bs.modal","id"],[1,"modal-dialog","modal
12-dialog-centered"],[1,"modal-content"],[1,"modal-header"],[1,"header-content"],[1,"modal-title",3,"id"],["class","session-title",4,"ngIf"],["type","button","data-bs-dismiss","modal","aria-label","Close",1,"btn-close"],[1,"modal-body"],[1,"form-section"],[1,"section-label"],[1,"radio-group"],[1,"radio-option"],["type","radio","name","cancelAction","value","skip",3,"change","checked","disabled"],[1,"radio-content"],[1,"radio-label"],[1,"radio-desc"],["type","radio","name","cancelAction","value","reschedule",3,"change","checked","disabled"],[1,"reschedule-fields"],[1,"modal-footer"],["type","button",1,"btn","btn-cancel",3,"click","disabled"],["type","button",1,"btn",3,"click","ngClass","disabled"],["role","status","aria-hidden","true",1,"spinner-border","spinner-border-sm","me-2"],[1,"session-title"],["type","date",1,"form-control",3,"ngModelChange","ngModel","min","disabled"],["type","time",1,"form-control",3,"ngModelChange","ngModel","disabled"],["rows","3","placeholder","Optional reason sent to students (for example: Instructor is sick)",1,"form-control",3,"ngModelChange","ngModel","disabled"],[1,"reschedule-notification"]],template:function(n,i){if(n&1){let l=M();a(0,"div",1,0),x("hidden.bs.modal",function(){return C(l),f(i.onModalHidden())}),a(2,"div",2)(3,"div",3)(4,"div",4)(5,"div",5)(6,"h1",6),s(7,"Cancel Session"),r(),h(8,Cg,2,1,"p",7),r(),v(9,"button",8),r(),a(10,"div",9)(11,"div",10)(12,"label",11),s(13,"Action"),r(),a(14,"div",12)(15,"label",13)(16,"input",14),x("change",function(){return C(l),f(i.onActionChange("skip"))}),r(),a(17,"div",15)(18,"span",16),s(19,"Skip (no makeup)"),r(),a(20,"span",17),s(21,"Cancel this session without rescheduling"),r()()(),a(22,"label",13)(23,"input",18),x("change",function(){return C(l),f(i.onActionChange("reschedule"))}),r(),a(24,"div",15)(25,"span",16),s(26,"Reschedule"),r(),a(27,"span",17),s(28,"Move this session to a new date and time"),r()()()()(),h(29,xg,16,8,"div",19),r(),a(30,"div",20)(31,"button",21),x("click",function(){return C(l),f(i.closeModal())}),s(32," Close "),r(),a(33,"button",22),x("click",function(){return C(l),f(i.onSubmit())}),h(34,bg,1,0,"span",23),s(35),r()()()()()}n&2&&(p("id",i.modalId),R("aria-labelledby",i.modalId+"Label"),o(6),p("id",i.modalId+"Label"),o(2),p("ngIf",i.sessionTitle),o(8),p("checked",i.action==="skip")("disabled",i.isSubmitting),o(7),p("checked",i.action==="reschedule")("disabled",i.isSubmitting),o(6),P(29,i.action==="reschedule"?29:-1),o(2),p("disabled",i.isSubmitting),o(2),p("ngClass",i.action==="skip"?"btn-danger":"btn-submit")("disabled",!i.canSubmit()),o(),P(34,i.isSubmitting?34:-1),o(),b(" ",i.action==="skip"?"Skip Session":"Reschedule Session"," "))},dependencies:[ce,$,ie,Y,oe],styles:[".modal-header[_ngcontent-%COMP%]{border-bottom:1px solid #e5e7eb;padding:1.5rem}.modal-header[_ngcontent-%COMP%] .header-content[_ngcontent-%COMP%]{flex:1}.modal-header[_ngcontent-%COMP%] .header-content[_ngcontent-%COMP%] .modal-title[_ngcontent-%COMP%]{font-size:20px;font-weight:700;color:#146d6d;margin-bottom:.25rem}.modal-header[_ngcontent-%COMP%] .header-content[_ngcontent-%COMP%] .session-title[_ngcontent-%COMP%]{font-size:14px;color:#6b7280;margin:0}.modal-body[_ngcontent-%COMP%]{padding:1.5rem;max-height:70vh;overflow-y:auto}.modal-footer[_ngcontent-%COMP%]{border-top:1px solid #e5e7eb;padding:1rem 1.5rem;gap:.75rem}.form-section[_ngcontent-%COMP%]{margin-bottom:1.25rem}.form-section[_ngcontent-%COMP%] .section-label[_ngcontent-%COMP%]{display:block;font-size:14px;font-weight:600;color:#146d6d;margin-bottom:.5rem}.radio-group[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.75rem}.radio-option[_ngcontent-%COMP%]{display:flex;align-items:flex-start;gap:.75rem;cursor:pointer;padding:.75rem;border:1px solid #e5e7eb;border-radius:8px;transition:all .2s}.radio-option[_ngcontent-%COMP%]:hover{border-color:#21b6b6;background-color:#f0fdfa}.radio-option[_ngcontent-%COMP%] input[type=radio][_ngcontent-%COMP%]{accent-color:#21b6b6;width:16px;height:16px;margin-top:2px;cursor:pointer;flex-shrink:0}.radio-option[_ngcontent-%COMP%] input[type=radio][_ngcontent-%COMP%]:disabled{cursor:not-allowed}.radio-option[_ngcontent-%COMP%] .radio-content[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.25rem}.radio-option[_ngcontent-%COMP%] .radio-label[_ngcontent-%COMP%]{font-size:14px;font-weight:600;color:#374151}.radio-option[_ngcontent-%COMP%] .radio-desc[_ngcontent-%COMP%]{font-size:12px;color:#6b7280}.reschedule-fields[_ngcontent-%COMP%]{background-color:#f0fdfa;border:1px solid #99f6e4;border-radius:8px;padding:1rem}.reschedule-fields[_ngcontent-%COMP%] .form-section[_ngcontent-%COMP%]:last-child{margin-bottom:0}.reschedule-notification[_ngcontent-%COMP%]{margin-top:.8rem;border-radius:8px;background-color:#146d6d14;color:#145858;padding:.6rem .7rem;border:1px solid rgba(20,109,109,.2);font-size:13px;font-weight:500}.form-control[_ngcontent-%COMP%]{border:1px solid #d1d5db;border-radius:4px;padding:.5rem .75rem;font-size:14px;color:#111827}.form-control[_ngcontent-%COMP%]:focus{border-color:#21b6b6;outline:none;box-shadow:0 0 0 3px #21b6b61a}.form-control[_ngcontent-%COMP%]:disabled{background-color:#f3f4f6;
12cursor:not-allowed}.btn-cancel[_ngcontent-%COMP%]{padding:.5rem 1rem;border:1px solid #d1d5db;background-color:#fff;color:#374151;border-radius:4px;font-size:14px;font-weight:500;transition:all .2s}.btn-cancel[_ngcontent-%COMP%]:hover:not(:disabled){background-color:#f3f4f6;border-color:#9ca3af}.btn-cancel[_ngcontent-%COMP%]:disabled{opacity:.5;cursor:not-allowed}.btn-submit[_ngcontent-%COMP%]{padding:.5rem 1rem;background-color:#21b6b6;color:#fff;border:none;border-radius:4px;font-size:14px;font-weight:500;transition:all .2s}.btn-submit[_ngcontent-%COMP%]:hover:not(:disabled){background-color:#188888}.btn-submit[_ngcontent-%COMP%]:disabled{opacity:.5;cursor:not-allowed}.btn-danger[_ngcontent-%COMP%]{padding:.5rem 1rem;background-color:#dc2626;color:#fff;border:none;border-radius:4px;font-size:14px;font-weight:500;transition:all .2s}.btn-danger[_ngcontent-%COMP%]:hover:not(:disabled){background-color:#b91c1c}.btn-danger[_ngcontent-%COMP%]:disabled{opacity:.5;cursor:not-allowed}@media screen and (max-width: 768px){.modal-dialog[_ngcontent-%COMP%]{margin:.5rem}.modal-body[_ngcontent-%COMP%]{max-height:60vh}}"]})}}return t})();var Pg=["attendanceModal"],Sg=["cancelSessionModal"],wg=(t,c)=>c.sessionId,Eg=(t,c)=>c.userId,ui=(t,c)=>c.id,Zr=t=>["./edit",t],ea=t=>["./",t,"content"],ta=t=>["./",t,"flashcards"];function Ig(t,c){t&1&&v(0,"app-load-spinner",2),t&2&&p("isBig",!0)}function yg(t,c){if(t&1){let e=M();a(0,"div",7)(1,"button",13),x("click",function(){C(e);let i=d(2);return f(i.setFilter("all"))}),s(2),_(3,"translate"),a(4,"span",14),s(5),r()(),a(6,"button",13),x("click",function(){C(e);let i=d(2);return f(i.setFilter("available"))}),s(7),_(8,"translate"),a(9,"span",14),s(10),r()(),a(11,"button",13),x("click",function(){C(e);let i=d(2);return f(i.setFilter("upcoming"))}),s(12),_(13,"translate"),a(14,"span",14),s(15),r()(),a(16,"button",13),x("click",function(){C(e);let i=d(2);return f(i.setFilter("ended"))}),s(17),_(18,"translate"),a(19,"span",14),s(20),r()()()}if(t&2){let e=d(2);o(),y("active",e.activeFilter==="all"),o(),b(" ",m(3,16,"GROUP_CLASSES_ADMIN.ALL")," "),o(3),g(e.sessions.length),o(),y("active",e.activeFilter==="available"),o(),b(" ",m(8,18,"GROUP_CLASSES_ADMIN.AVAILABLE")," "),o(3),g(e.getStatusCount("available")),o(),y("active",e.activeFilter==="upcoming"),o(),b(" ",m(13,20,"GROUP_CLASSES_ADMIN.UPCOMING")," "),o(3),g(e.getStatusCount("upcoming")),o(),y("active",e.activeFilter==="ended"),o(),b(" ",m(18,22,"GROUP_CLASSES_ADMIN.SESSION_ENDED")," "),o(3),g(e.getStatusCount("ended"))}}function kg(t,c){t&1&&(a(0,"div",8),v(1,"app-no-data",15),_(2,"translate"),r()),t&2&&(o(),p("text",m(2,1,"GROUP_CLASSES_ADMIN.NO_SESSIONS_AVAILABLE")))}function Ag(t,c){if(t&1){let e=M();a(0,"select",53),_(1,"translate"),x("change",function(i){C(e);let l=d().$implicit,u=d(3);return f(u.onBonusShareabilityChange(l,i))}),a(2,"option",54),s(3),_(4,"translate"),r(),a(5,"option",55),s(6),_(7,"translate"),r()()}if(t&2){let e=d().$implicit,n=d(3);y("is-shareable",n.isBonusShareable(e)),p("value",n.bonusAccessValue(e))("disabled",n.bonusAccessUpdatingIds.has(e.sessionId)),R("aria-label",m(1,7,"GROUP_CLASSES_ADMIN.BONUS_ACCESS")),o(3),g(m(4,9,"GROUP_CLASSES_ADMIN.BONUS_PRIVATE")),o(3),g(m(7,11,"GROUP_CLASSES_ADMIN.BONUS_SHAREABLE"))}}function Tg(t,c){if(t&1){let e=M();a(0,"button",72),x("click",function(){C(e);let i=d(2).$implicit,l=d(3);return f(l.canStartSession(i)&&l.openMeetingLink(i.meetLink))}),I(),a(1,"svg",33),v(2,"polygon",73),r(),s(3),_(4,"translate"),r()}if(t&2){let e=d(2).$implicit,n=d(3);y("disabled",!n.canStartSession(e)),p("disabled",!n.canStartSession(e)),o(3),b(" ",m(4,4,"GROUP_CLASSES_ADMIN.START_SESSION")," ")}}function Rg(t,c){if(t&1){let e=M();a(0,"div",52),v(1,"div",56),a(2,"div",57),h(3,Tg,5,6,"button",58),a(4,"button",59),I(),a(5,"svg",33),v(6,"path",39)(7,"path",40),r(),s(8),_(9,"translate"),r(),F(),a(10,"button",59),I(),a(11,"svg",33),v(12,"path",41)(13,"polyline",42)(14,"line",43)(15,"line",44),r(),s(16),_(17,"translate"),r(),F(),a(18,"button",59),I(),a(19,"svg",33),v(20,"rect",45)(21,"path",46),r(),s(22),_(23,"translate"),r(),F(),a(24,"button",60),x("click",function(){C(e);let i=d().$implicit,l=d(3);return f(l.copyUserLink(i.sessionId))}),I(),a(25,"svg",33),v(26,"path",61)(27,"path",62),r(),s(28),_(29,"translate"),r(),F(),a(30,"button",60),x("click",function(){C(e);let i=d().$implicit,l=d(3);return f(l.openRegisteredUsers(i))}),I(),a(31,"svg",33),v(32,"path",34)(33,"circle",35)(34,"path",36)(35,"path",37),r(),s(36),_(37,"translate"),r(),F(),a(38,"button",60),x("click",function(){C(e);let i=d().$implicit,l=d(3);return f(l.openAttendance(i.sessionId))}),I(),a(39,"svg",33),v(40,"path",48)(41,"circle",35)(42,"path",49)(43,"path",37),r(),s(44),_(45,"translate"),r(),F(),a(46,"button",63),x("click",function(){C(e);let i=d().$implicit,l=d(3);return f(l.openCancelSession(i))}),I(),a(47,"svg",33),v(48,"circle",64)(49,"line",65)(50,"line",66),r(),s(51),_(52,"translate"),r()(),F(),a(53,"div",67)(54,"label",68)(55,"input",69),x("change",function(i){C(e);let l=d().$implicit,u=d(3);
12return f(u.toggleFlashcardApproval(l,i))}),r(),v(56,"span",70),r(),a(57,"span",71),s(58),_(59,"translate"),r()()()}if(t&2){let e=d().$implicit,n=d(3);o(),p("innerHTML",n.lang==="en"?e.description.en:e.description.fr,Ee),o(2),P(3,e.meetLink?3:-1),o(),p("routerLink",D(32,Zr,e.sessionId)),o(4),b(" ",m(9,16,"GROUP_CLASSES_ADMIN.UPDATE_SESSION")," "),o(2),p("routerLink",D(34,ea,e.sessionId)),o(6),b(" ",m(17,18,"GROUP_CLASSES_ADMIN.ADD_CONTENT")," "),o(2),p("routerLink",D(36,ta,e.sessionId)),o(4),b(" ",m(23,20,"GROUP_CLASSES_ADMIN.FLASHCARDS")," "),o(6),b(" ",m(29,22,"GROUP_CLASSES_ADMIN.COPY_USER_LINK")," "),o(8),b(" ",m(37,24,"GROUP_CLASSES_ADMIN.REGISTERED_USERS")," "),o(8),b(" ",m(45,26,"GROUP_CLASSES_ADMIN.ATTENDANCE")," "),o(7),b(" ",m(52,28,"GROUP_CLASSES_ADMIN.CANCEL")," "),o(4),p("checked",e.flashcardsApproved),o(2),y("approved",e.flashcardsApproved),o(),b(" ",m(59,30,e.flashcardsApproved?"GROUP_CLASSES_ADMIN.FLASHCARDS_VISIBLE_TO_STUDENTS":"GROUP_CLASSES_ADMIN.FLASHCARDS_HIDDEN_FROM_STUDENTS")," ")}}function Dg(t,c){if(t&1){let e=M();a(0,"div",19)(1,"div",20),x("click",function(i){let l=C(e).$implicit,u=d(3);return f(u.toggleExpand(l.sessionId,i))}),a(2,"span",21),s(3),r(),a(4,"div",22)(5,"span",23),s(6),r(),a(7,"span",24),s(8),r()(),a(9,"div",25)(10,"div",26),s(11),r(),a(12,"div",27),s(13),r()(),a(14,"span",28),v(15,"span",29),s(16),_(17,"translate"),_(18,"translate"),_(19,"translate"),r(),a(20,"div",30),h(21,Ag,8,13,"select",31),a(22,"button",32),_(23,"translate"),x("click",function(){let i=C(e).$implicit,l=d(3);return f(l.openRegisteredUsers(i))}),I(),a(24,"svg",33),v(25,"path",34)(26,"circle",35)(27,"path",36)(28,"path",37),r()(),F(),a(29,"a",38),_(30,"translate"),I(),a(31,"svg",33),v(32,"path",39)(33,"path",40),r()(),F(),a(34,"a",38),_(35,"translate"),I(),a(36,"svg",33),v(37,"path",41)(38,"polyline",42)(39,"line",43)(40,"line",44),r()(),F(),a(41,"a",38),_(42,"translate"),I(),a(43,"svg",33),v(44,"rect",45)(45,"path",46),r()(),F(),a(46,"button",47),_(47,"translate"),x("click",function(){let i=C(e).$implicit,l=d(3);return f(l.openAttendance(i.sessionId))}),I(),a(48,"svg",33),v(49,"path",48)(50,"circle",35)(51,"path",49)(52,"path",37),r()(),a(53,"svg",50),v(54,"polyline",51),r()()(),h(55,Rg,60,38,"div",52),r()}if(t&2){let e=c.$implicit,n=d(3);y("is-ended",n.getSessionStatus(e)==="ended")("is-available",n.getSessionStatus(e)==="available")("open",n.isExpanded(e.sessionId)),R("data-session-id",e.sessionId),o(2),y("order-ended",n.getSessionStatus(e)==="ended"),o(),g(e.sessionOrder),o(3),g(n.lang==="en"?e.title.en:e.title.fr),o(2),g(n.getPlainDescription(e)),o(3),g(e.sessionDate),o(2),g(e.sessionTime),o(),y("status-ended",n.getSessionStatus(e)==="ended")("status-available",n.getSessionStatus(e)==="available")("status-upcoming",n.getSessionStatus(e)==="upcoming"),o(2),b(" ",n.getSessionStatus(e)==="ended"?m(17,31,"GROUP_CLASSES_ADMIN.SESSION_ENDED"):n.getSessionStatus(e)==="available"?m(18,33,"GROUP_CLASSES_ADMIN.AVAILABLE"):m(19,35,"GROUP_CLASSES_ADMIN.UPCOMING")," "),o(5),P(21,n.canManageBonusAccess()?21:-1),o(),Be("title",m(23,37,"GROUP_CLASSES_ADMIN.REGISTERED_USERS")),o(7),Be("title",m(30,39,"GROUP_CLASSES_ADMIN.UPDATE_SESSION")),p("routerLink",D(47,Zr,e.sessionId)),o(5),Be("title",m(35,41,"GROUP_CLASSES_ADMIN.ADD_CONTENT")),p("routerLink",D(49,ea,e.sessionId)),o(7),Be("title",m(42,43,"GROUP_CLASSES_ADMIN.FLASHCARDS")),p("routerLink",D(51,ta,e.sessionId)),o(5),Be("title",m(47,45,"GROUP_CLASSES_ADMIN.ATTENDANCE")),o(9),P(55,n.isExpanded(e.sessionId)?55:-1)}}function Bg(t,c){if(t&1&&(a(0,"div",9)(1,"div",16)(2,"span"),s(3,"#"),r(),a(4,"span"),s(5),_(6,"translate"),r(),a(7,"span"),s(8),_(9,"translate"),r(),a(10,"span"),s(11),_(12,"translate"),r(),a(13,"span",17),s(14),_(15,"translate"),r()(),z(16,Dg,56,53,"div",18,wg),r()),t&2){let e=d(2);o(5),g(m(6,4,"GROUP_CLASSES_ADMIN.SESSION")),o(3),g(m(9,6,"GROUP_CLASSES_ADMIN.START_DATE")),o(3),g(m(12,8,"GROUP_CLASSES_ADMIN.STATUS")),o(3),g(m(15,10,"GROUP_CLASSES_ADMIN.ACTIONS")),o(2),K(e.filteredSessions)}}function Lg(t,c){t&1&&(a(0,"div",8),v(1,"app-no-data",15),_(2,"translate"),r()),t&2&&(o(),p("text",m(2,1,"GROUP_CLASSES_ADMIN.NO_SESSIONS_AVAILABLE")))}function Ng(t,c){t&1&&(a(0,"div",78),v(1,"span",79),s(2),_(3,"translate"),r()),t&2&&(o(2),b(" ",m(3,1,"GROUP_CLASSES_ADMIN.LOADING_REGISTERED_USERS")," "))}function Vg(t,c){t&1&&(a(0,"div",82),s(1),_(2,"translate"),r()),t&2&&(o(),g(m(2,1,"GROUP_CLASSES_ADMIN.BONUS_RESERVATIONS_UNAVAILABLE")))}function Fg(t,c){if(t&1&&v(0,"img",90),t&2){let e=d().$implicit;p("src",c,le)("alt",e.userName)}}function Ug(t,c){if(t&1&&s(0),t&2){let e=d().$implicit,n=d(5);b(" ",n.rosterStudentInitial(e)," ")}}function Hg(t,c){if(t&1&&(a(0,"article",88)(1,"div",89),h(2,Fg,1,2,"img",90)(3,Ug,1,1),r(),a(4,"div",91)(5,"strong"),s(6),r(),a(7,"span"),s(8),r()(),a(9,"span",92),s(10),_(11,"translate"),r()()),t&2){let e,n=c.$implicit,i=d(5);o(2),P(2,(e=i.rosterPhotoUrl(n.photoUrl))?2:3,e),o(4),g(n.userName),o(2),g(n.userEmail),o(2),g(m(11,4,"GROUP_CLASSES_ADMIN.OFFICIAL"))}}function Gg(t,c){if(t&1&&(a(0,"div",86),z(1,Hg,12,6,"article",88,Eg),r()),t&2){let e=d(4);o(),K(e.rosterOfficialStudents)}}function qg(t,c){t&1&&(a(0,"p",93),s(1),_(2,"translate"),r()),t&2&&(o(),g(m(2,1,"GROUP_CLASSES_ADMIN.NO_OFFICIAL_STUDENTS")))}function Wg(t,c){if(t&1&&v(0,"img",90),t&2){let e=d().$implicit,n=d(5);p("src",c,le)("alt",n.reservationStudentName(e))}}function zg(t,c){if(t&1&&s(0),t&2){let e=d().$implicit,n=d(5);b(" ",n.reservationStudentInitial(e)," ")}}function Kg(t,c){if(t&1){let e=M();a(0,"article",88)(1,"div",94),h(2,Wg,1,2,"img",90)(3,zg,1,1),r(),a(4,"div",91)(5,"strong"),s(6),r(),a(7,"span"),s(8),r()(),a(9,"span",95),s(10),r(),a(11,"button",96),x("click",function(){let i=C(e).$implicit,l=d(5);return f(l.cancelRosterReservation(i))}),s(12),_(13,"translate"),r()()}if(t&2){let e,n=c.$implicit,i=d(5);o(2),P(2,(e=i.rosterPhotoUrl(n.studentPhotoUrl))?2:3,e),o(4),g(i.reservationStudentName(n)),o(2),g(i.reservationStudentEmail(n)),o(2),g(i.rosterStatusLabel(n.status)),o(),p("disabled",i.rosterCancellingReservationId===n.id),o(),b(" ",m(13,6,"GROUP_CLASSES_ADMIN.REMOVE_BONUS")," ")}}function $g(t,c){if(t&1&&(a(0,"div",86),z(1,Kg,14,8,"article",88,ui),r()),t&2){let e=d(4);o(),K(e.rosterConfirmedBonus)}}function jg(t,c){t&1&&(a(0,"p",93),s(1),_(2,"translate"),r()),t&2&&(o(),g(m(2,1,"GROUP_CLASSES_ADMIN.NO_BONUS_REGIST
12ERED_USERS")))}function Qg(t,c){if(t&1&&(s(0),_(1,"translate")),t&2){let e=d().$implicit;N(" \xB7 ",m(1,2,"GROUP_CLASSES_ADMIN.POSITION")," #",e.waitlistPosition," ")}}function Yg(t,c){if(t&1){let e=M();a(0,"article",88)(1,"div",97),s(2),r(),a(3,"div",91)(4,"strong"),s(5),r(),a(6,"span"),s(7),h(8,Qg,2,4),r()(),a(9,"span",98),s(10),r(),a(11,"button",96),x("click",function(){let i=C(e).$implicit,l=d(5);return f(l.cancelRosterReservation(i))}),s(12),_(13,"translate"),r()()}if(t&2){let e=c.$implicit,n=d(5);o(2),g(n.reservationStudentInitial(e)),o(3),g(n.reservationStudentName(e)),o(2),b(" ",n.reservationStudentEmail(e)," "),o(),P(8,e.waitlistPosition?8:-1),o(2),g(n.rosterStatusLabel(e.status)),o(),p("disabled",n.rosterCancellingReservationId===e.id),o(),b(" ",m(13,7,"GROUP_CLASSES_ADMIN.REMOVE_BONUS")," ")}}function Xg(t,c){if(t&1&&(a(0,"div",86),z(1,Yg,14,9,"article",88,ui),r()),t&2){let e=d(4);o(),K(e.rosterWaitlisted)}}function Jg(t,c){t&1&&(a(0,"p",93),s(1),_(2,"translate"),r()),t&2&&(o(),g(m(2,1,"GROUP_CLASSES_ADMIN.NO_WAITLISTED_USERS")))}function Zg(t,c){if(t&1&&(a(0,"article",99)(1,"div",100),s(2),r(),a(3,"div",91)(4,"strong"),s(5),r(),a(6,"span"),s(7),r()(),a(8,"span",101),s(9),r()()),t&2){let e=c.$implicit,n=d(5);o(2),g(n.reservationStudentInitial(e)),o(3),g(n.reservationStudentName(e)),o(2),g(n.reservationStudentEmail(e)),o(2),g(n.rosterStatusLabel(e.status))}}function eu(t,c){if(t&1&&(a(0,"section",87)(1,"div",85)(2,"h4"),s(3),_(4,"translate"),r(),a(5,"span"),s(6),r()(),a(7,"div",86),z(8,Zg,10,4,"article",99,ui),r()()),t&2){let e=d(4);o(3),g(m(4,2,"GROUP_CLASSES_ADMIN.INACTIVE_RESERVATIONS")),o(3),g(e.rosterInactiveReservations.length),o(2),K(e.rosterInactiveReservations)}}function tu(t,c){if(t&1&&(a(0,"div",80)(1,"div",81)(2,"span"),s(3),_(4,"translate"),r(),a(5,"strong"),s(6),r()(),a(7,"div",81)(8,"span"),s(9),_(10,"translate"),r(),a(11,"strong"),s(12),r()(),a(13,"div",81)(14,"span"),s(15),_(16,"translate"),r(),a(17,"strong"),s(18),r()(),a(19,"div",81)(20,"span"),s(21),_(22,"translate"),r(),a(23,"strong"),s(24),r()(),a(25,"div",81)(26,"span"),s(27),_(28,"translate"),r(),a(29,"strong"),s(30),r()()(),h(31,Vg,3,3,"div",82),a(32,"div",83)(33,"section",84)(34,"div",85)(35,"h4"),s(36),_(37,"translate"),r(),a(38,"span"),s(39),r()(),h(40,Gg,3,0,"div",86)(41,qg,3,3),r(),a(42,"section",84)(43,"div",85)(44,"h4"),s(45),_(46,"translate"),r(),a(47,"span"),s(48),r()(),h(49,$g,3,0,"div",86)(50,jg,3,3),r(),a(51,"section",84)(52,"div",85)(53,"h4"),s(54),_(55,"translate"),r(),a(56,"span"),s(57),r()(),h(58,Xg,3,0,"div",86)(59,Jg,3,3),r(),h(60,eu,10,4,"section",87),r()),t&2){let e,n=d(3);o(3),g(m(4,21,"GROUP_CLASSES_ADMIN.TOTAL_CONFIRMED")),o(3),g(n.rosterConfirmedTotal),o(3),g(m(10,23,"GROUP_CLASSES_ADMIN.OFFICIAL_STUDENTS")),o(3),g(n.rosterOfficialStudents.length),o(3),g(m(16,25,"GROUP_CLASSES_ADMIN.BONUS_CONFIRMED")),o(3),g(n.rosterConfirmedBonus.length),o(3),g(m(22,27,"GROUP_CLASSES_ADMIN.WAITLIST")),o(3),g(n.rosterWaitlisted.length),o(3),g(m(28,29,"GROUP_CLASSES_ADMIN.OPEN_SEATS")),o(3),g((e=n.rosterCapacity==null?null:n.rosterCapacity.availableAdditionalSeats)!==null&&e!==void 0?e:0),o(),P(31,n.rosterBonusUnavailable?31:-1),o(5),g(m(37,31,"GROUP_CLASSES_ADMIN.OFFICIAL_STUDENTS")),o(3),g(n.rosterOfficialStudents.length),o(),P(40,n.rosterOfficialStudents.length?40:41),o(5),g(m(46,33,"GROUP_CLASSES_ADMIN.BONUS_CONFIRMED")),o(3),g(n.rosterConfirmedBonus.length),o(),P(49,n.rosterConfirmedBonus.length?49:50),o(5),g(m(55,35,"GROUP_CLASSES_ADMIN.WAITLIST")),o(3),g(n.rosterWaitlisted.length),o(),P(58,n.rosterWaitlisted.length?58:59),o(2),P(60,n.rosterInactiveReservations.length?60:-1)}}function nu(t,c){if(t&1){let e=M();a(0,"div",10),_(1,"translate"),a(2,"section",74)(3,"header",75)(4,"div")(5,"p",76),s(6),_(7,"translate"),r(),a(8,"h3"),s(9),r(),a(10,"span"),s(11),_(12,"translate"),r()(),a(13,"button",77),_(14,"translate"),x("click",function(){C(e);let i=d(2);return f(i.closeRegisteredUsers())}),s(15,"\xD7"),r()(),h(16,Ng,4,3,"div",78)(17,tu,61,37),r()()}if(t&2){let e=d(2);R("aria-label",m(1,6,"GROUP_CLASSES_ADMIN.REGISTERED_USERS")),o(6),g(m(7,8,"GROUP_CLASSES_ADMIN.REGISTERED_USERS")),o(3),g(e.selectedRosterSession?e.lang==="en"?e.selectedRosterSession.title.en:e.selectedRosterSession.title.fr:""),o(2),g(m(12,10,"GROUP_CLASSES_ADMIN.REGISTERED_USERS_SUBTITLE")),o(2),R("aria-label",m(14,12,"GROUP_CLASSES_ADMIN.CLOSE")),o(3),P(16,e.rosterLoading?16:17)}}function iu(t,c){if(t&1){let e=M();a(0,"div",3)(1,"header",4)(2,"h3"),s(3),_(4,"translate"),r(),a(5,"a",5)(6,"button",6),s(7),_(8,"translate"),r()()(),h(9,yg,21,24,"div",7)(10,kg,3,3,"div",8)(11,Bg,18,12,"div",9)(12,Lg,3,3,"div",8),r(),h(13,nu,18,14,"div",10),v(14,"app-cohort-attendance-modal",11,0),a(16,"app-cohort-cancel-session-modal",12,1),x("sessionUpdated",function(){C(e);let i=d();return f(i.onSessionUpdated())}),r()}if(t&2){let e=d();o(3),g(m(4,13,"GROUP_CLASSES_ADMIN.GROUP_CLASS_SESSIONS")),o(4),b(" + ",m(8,15,"GROUP_CLASSES_ADMIN.CREATE_SESSION")," "),o(2),P(9,e.sessions&&e.sessions.length>0?9:-1),o(),P(10,!e.sessions||e.sessions.length===0?10:-1),o(),P(11,e.filteredSessions.length>0?11:-1),o(),P(12,e.sessions&&e.sessions.length>0&&e.filteredSessions.length===0?12:-1),o(),P(13,e.showRosterModal?13:-1),o(),p("batchId",e.batchId||"")("sessionId",e.
12selectedSessionId),o(2),p("batchId",e.batchId||"")("levelId",e.levelId||"")("sessionId",e.selectedSessionId)("sessionTitle",e.cancelSessionTitle)}}var ou=60*60*1e3,ru=24*60*60*1e3,au="Lzra9GRhA5960I3FVEVS",na=(()=>{class t{constructor(e,n,i,l,u,O,E){this.cohortApi=e,this._route=n,this._localStorage=i,this.toaster=l,this.translate=u,this.el=O,this.additionalClasses=E,this.lang="en",this.destroy$=new ve,this.batchId=null,this.levelId=null,this.sessions=[],this.isLoading=!1,this.selectedSessionId="",this.cancelSessionTitle="",this.activeFilter="all",this.expandedSessionIds=new Set,this.bonusAccessUpdatingIds=new Set,this.pendingAttendanceSessionId=null,this.showRosterModal=!1,this.rosterLoading=!1,this.rosterBonusUnavailable=!1,this.selectedRosterSession=null,this.rosterOfficialStudents=[],this.rosterReservations=[],this.rosterCapacity=null,this.rosterCancellingReservationId=null}ngOnInit(){this.lang=this._localStorage.getItem("currentLang"),this.batchId=this._route.snapshot.paramMap.get("batchId"),this.levelId=this._route.snapshot.paramMap.get("levelId"),this.pendingAttendanceSessionId=this._route.snapshot.queryParamMap.get("attendanceSessionId"),this.batchId&&this.levelId&&this.loadSessions()}ngOnDestroy(){this.destroy$.next(),this.destroy$.complete()}loadSessions(){this.isLoading=!0,this.cohortApi.getAdminSessions(this.batchId,this.levelId).pipe(U(this.destroy$)).subscribe({next:e=>{this.sessions=e.data.sessions,this.autoExpandAvailable()},complete:()=>{this.isLoading=!1,setTimeout(()=>{this.scrollToAvailableSession(),this.openPendingAttendanceFromQuery()},300)},error:()=>{this.isLoading=!1,this.toaster.error("Failed to load sessions")}})}get filteredSessions(){return this.sessions?this.activeFilter==="all"?this.sessions:this.sessions.filter(e=>this.getSessionStatus(e)===this.activeFilter):[]}setFilter(e){this.activeFilter=e}getStatusCount(e){return this.sessions?this.sessions.filter(n=>this.getSessionStatus(n)===e).length:0}toggleExpand(e,n){let i=n.target;i.closest("button")||i.closest("a")||i.closest("select")||(this.expandedSessionIds.has(e)?this.expandedSessionIds.delete(e):this.expandedSessionIds.add(e))}isExpanded(e){return this.expandedSessionIds.has(e)}autoExpandAvailable(){if(!this.sessions)return;let e=this.sessions.find(n=>this.getSessionStatus(n)==="available");e&&this.expandedSessionIds.add(e.sessionId)}openMeetingLink(e){e&&window.open(e,"_blank")}sessionInstant(e){if(!e)return null;let n=e.startTime||e.startTimeISO;if(n){let i=this.toDate(n);if(i)return i}if(e.sessionDate&&e.sessionTime){let i=e.sessionTime.length===5?`${e.sessionTime}:00`:e.sessionTime,l=new Date(`${e.sessionDate}T${i}`);return isNaN(l.getTime())?null:l}if(e.sessionDate){let i=new Date(e.sessionDate);return isNaN(i.getTime())?null:i}return null}toDate(e){if(e instanceof Date)return isNaN(e.getTime())?null:e;if(typeof e=="object"){let i=e.seconds??e._seconds;if(typeof i=="number")return new Date(i*1e3)}let n=new Date(e);return isNaN(n.getTime())?null:n}isSessionEnded(e,n=new Date){let i=this.sessionInstant(e);return i?n.getTime()-i.getTime()>ru:!1}isSessionTooFarAway(e,n=new Date){let i=this.sessionInstant(e);return i?i.getTime()-n.getTime()>ou:!1}canStartSession(e,n=new Date){return this.sessionInstant(e)?!this.isSessionEnded(e,n)&&!this.isSessionTooFarAway(e,n):!1}getSessionStatus(e,n=new Date){return this.isSessionEnded(e,n)?"ended":this.canStartSession(e,n)?"available":"upcoming"}openAttendance(e){this.selectedSessionId=e,setTimeout(()=>{this.attendanceModal.openModal()})}openPendingAttendanceFromQuery(){if(!this.pendingAttendanceSessionId||!this.sessions?.some(n=>n.sessionId===this.pendingAttendanceSessionId))return;let e=this.pendingAttendanceSessionId;this.pendingAttendanceSessionId=null,this.openAttendance(e)}openRegisteredUsers(e){this.selectedRosterSession=e,this.showRosterModal=!0,this.loadRegisteredUsers(e.sessionId)}closeRegisteredUsers(){this.showRosterModal=!1,this.selectedRosterSession=null,this.rosterOfficialStudents=[],this.rosterReservations=[],this.rosterCapacity=null,this.rosterBonusUnavailable=!1,this.rosterCancellingReservationId=null}loadRegisteredUsers(e){!this.batchId||!e||(this.rosterLoading=!0,this.rosterBonusUnavailable=!1,Ei({official:this.cohortApi.getAttendance(this.batchId,e).pipe(Kt(()=>it({data:{students:[]}}))),bonus:this.additionalClasses.getSessionReservations(this.batchId,e).pipe(Kt(()=>(this.rosterBonusUnavailable=!0,it({capacity:null,reservations:[]}))))}).pipe(U(this.destroy$),Pe(()=>{this.rosterLoading=!1})).subscribe(({official:n,bonus:i})=>{this.rosterOfficialStudents=this.normalizeRosterStudents(n?.data?.students||n?.data?.attendance||[]),this.rosterReservations=i.reservations||[],this.rosterCapacity=i.capacity}))}get rosterConfirmedBonus(){return this.rosterReservations.filter(e=>e.status==="confirmed")}get rosterWaitlisted(){return this.rosterReservations.filter(e=>e.status==="waitlisted")}get rosterInactiveReservations(){return this.rosterReservations.filter(e=>!this.isActiveRosterReservation(e))}get rosterConfirmedTotal(){return this.rosterOfficialStudents.length+this.rosterConfirmedBonus.length}canCancelRosterReservation(e){return e.status==="confirmed"||e.status==="waitlisted"}cancelRosterReservation(e){!e.id||!this.canCancelRosterReservation(e)||!window.confirm(this.translate.instant("GROUP_CLASSES_ADMIN.CONFIRM_REMOVE_BONUS_RESERVATION"))||(this.rosterCancellingReservationId=e.id,this.additionalClasses.adminCancelReservation(e.id,"Removed from admin registered users panel",!0).pipe(U(this.destroy$),Pe(()=>{this.rosterCancellingReservationId=null})).subscribe({next:()=>{this.toaster.success(this.translate.instant("GROUP_CLASSES_ADMIN.BONUS_RESERVATION_REMOVED")),this.selectedRosterSession&&this.loadRegisteredUsers(this.selectedRosterSession.sessionId)},error:()=>{this.toaster.error(this.translate.instant("GROUP_CLASSES_ADMIN.BONUS_RESERVATION_REMOVE_
12ERROR"))}}))}rosterStudentInitial(e){return(e.userName||e.userEmail||"?").trim().charAt(0).toUpperCase()||"?"}rosterPhotoUrl(e){return pt([e])||""}reservationStudentInitial(e){return(this.reservationStudentName(e)||"?").trim().charAt(0).toUpperCase()||"?"}reservationStudentName(e){return e.studentName||e.studentUid||this.translate.instant("GROUP_CLASSES_ADMIN.UNKNOWN_STUDENT")}reservationStudentEmail(e){return e.studentEmail||e.studentUid||""}rosterStatusLabel(e){let n=`GROUP_CLASSES_ADMIN.ROSTER_STATUS_${String(e||"").toUpperCase()}`,i=this.translate.instant(n);return i===n?e:i}normalizeRosterStudents(e){return e.map(n=>({userId:n.userId||n.uid||n.id,userName:n.userName||n.name||n.displayName||n.email||this.translate.instant("GROUP_CLASSES_ADMIN.UNKNOWN_STUDENT"),userEmail:n.userEmail||n.email||"",photoUrl:n.photoUrl||n.photoURL||null,status:n.status||"unmarked"}))}isActiveRosterReservation(e){return e.status==="confirmed"||e.status==="waitlisted"}canManageBonusAccess(){return this.batchId===au}bonusAccessValue(e){return this.isBonusShareable(e)?"shareable":"private"}isBonusShareable(e){return e.additionalAccess?.shareable===!0}onBonusShareabilityChange(e,n){let i=n.target;this.setBonusShareability(e,i.value==="shareable")}setBonusShareability(e,n){if(!this.canManageBonusAccess()||this.bonusAccessUpdatingIds.has(e.sessionId))return;let i=W({},e.additionalAccess||{}),l=n?this.resolveAllowedSessionType(e):null;this.bonusAccessUpdatingIds.add(e.sessionId),this.additionalClasses.setGoldenShareability(e.sessionId,{shareable:n,allowedSessionType:l}).pipe(U(this.destroy$),Pe(()=>{this.bonusAccessUpdatingIds.delete(e.sessionId)})).subscribe({next:()=>{e.additionalAccess=Me(W({},i),{shareable:n,allowedSessionType:l}),this.toaster.success(this.translate.instant("GROUP_CLASSES_ADMIN.BONUS_POLICY_UPDATED"))},error:()=>{e.additionalAccess=i,this.toaster.error(this.translate.instant("GROUP_CLASSES_ADMIN.BONUS_POLICY_ERROR"))}})}copyUserLink(e){let n=`${$i.baseWebUrl}main/my-courses/session/${e}`;navigator.clipboard.writeText(n).then(()=>{this.toaster.success(this.translate.instant("GROUP_CLASSES_ADMIN.LINK_COPIED"))})}scrollToAvailableSession(){if(!this.sessions||this.sessions.length===0)return;let e=this.sessions.find(n=>this.getSessionStatus(n)==="available");if(e){let n=this.el.nativeElement.querySelector(`[data-session-id="${e.sessionId}"]`);n&&n.scrollIntoView({behavior:"smooth",block:"center"})}}getPlainDescription(e){let n=this.lang==="en"?e.description?.en||"":e.description?.fr||"",i=document.createElement("div");return i.innerHTML=n,(i.textContent||i.innerText||"").trim()}toggleFlashcardApproval(e,n){let i=n.target.checked;this.cohortApi.setSessionFlashcardsApproved(this.batchId||"golden",e.sessionId,i).pipe(U(this.destroy$)).subscribe({next:()=>{e.flashcardsApproved=i;let l=i?"GROUP_CLASSES_ADMIN.FLASHCARDS_VISIBLE_TO_STUDENTS":"GROUP_CLASSES_ADMIN.FLASHCARDS_HIDDEN_FROM_STUDENTS";this.toaster.success(this.translate.instant(l))},error:()=>{n.target.checked=!i,this.toaster.error(this.translate.instant("GROUP_CLASSES_ADMIN.FLASHCARD_VISIBILITY_UPDATE_ERROR"))}})}openCancelSession(e){this.selectedSessionId=e.sessionId,this.cancelSessionTitle=this.lang==="en"?e.title.en:e.title.fr,setTimeout(()=>{this.cancelSessionModal&&this.cancelSessionModal.openModal()})}onSessionUpdated(){this.loadSessions()}resolveAllowedSessionType(e){let n=e.additionalAccess?.allowedSessionType;if(n)return n;let i=[e.title?.en,e.title?.fr,e.description?.en,e.description?.fr].filter(Boolean).join(" ").toLowerCase();return i.includes("revision")||i.includes("review")?"revision":i.includes("vocab")?"vocabulary":i.includes("pronunciation")||i.includes("accent")||i.includes("alphabet")||i.includes("syllable")?"pronunciation":"grammar"}static{this.\u0275fac=function(n){return new(n||t)(w(Vt),w(te),w(We),w(he),w(ze),w(nn),w(Cn))}}static{this.\u0275cmp=H({type:t,selectors:[["app-cohort-session-list"]],viewQuery:function(n,i){if(n&1&&(_e(Pg,5),_e(Sg,5)),n&2){let l;me(l=ge())&&(i.attendanceModal=l.first),me(l=ge())&&(i.cancelSessionModal=l.first)}},decls:2,vars:1,consts:[["attendanceModal",""],["cancelSessionModal",""],[3,"isBig"],[1,"sessions-container"],[1,"section-header"],["routerLink","create"],[1,"create-btn"],[1,"filter-bar"],[1,"no-data-container"],[1,"sessions-table"],["role","dialog","aria-modal","true",1,"roster-modal-backdrop"],["modalId","cohortAttendanceModal",3,"batchId","sessionId"],["modalId","cohortCancelSessionModal",3,"sessionUpdated","batchId","levelId","sessionId","sessionTitle"],[1,"filter-pill",3,"click"],[1,"count"],[3,"text"],[1,"table-header"],[1,"text-right"],[1,"session-row",3,"is-ended","is-available","open"],[1,"session-row"],[1,"session-row-main",3,"click"],[1,"order-num"],[1,"session-info"],[1,"title"],[1,"subtitle"],[1,"session-date-col"],[1,"session-date"],[1,"session-time"],[1,"status"],[1,"status-dot"],[1,"quick-actions"],[1,"bonus-access-select",3,"is-shareable","value","disabled"],[1,"icon-btn",3,"click","title"],["xmlns","http://www.w3.org/2000/svg","viewBox","0 0 24 24"],["d","M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2"],["cx","9","cy","7","r","4"],["d","M22 21v-2a3 3 0 0 0-2-2.83"],["d","M16 3.13a4 4 0 0 1 0 7.75"],[1,"icon-btn",3,"routerLink","title"],["d","M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7"],["d","M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z"],["d","M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"],["points","14 2 14 8 20 8"],["x1","12","y1","18","x2","12","y2","12"],["x1","9","y1","15","x2","15","y2","15"],["x","2","y","4","width","20","height","16","rx","2"],["d","M2 8h20"],[1,"icon-btn","icon-btn-primary",3,"click","title"],["d","M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"],["d","M23 21v-2a4 4 0 0 0-3-3.87"],["xmlns","http://www.w3.org/2000/svg","viewBox","0 0 24 24","fill","none","stroke","currentColor","stroke-width","2",1,"chevron"],["points","6 9 12 15 18 9"],[1,"session-expanded"],[1,"bonus-access-select",3,"change","value","disabled"],["value","private"],["value","shareable"],[1,"expanded-desc",3,"innerHTML"],[1,"expanded-actions"],[1,"action-chip","go-live",3,"disabled"],[1,"action-chip",3,"routerLink"],[1,"action-chip",3,"click"],["d","M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"],["d","M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"],[1,"action-chip","action-chip-cancel",3,"click"],["cx","12","cy","12","r","10"],["x1","15","y1","9","x2","9","y2","15"],["x1","9","y1","9","x2","15","y2","15"],[1,"flashcard-approval"],[1,"approval-toggle"],["type","checkbox",3,"change","checked"],[1,"toggle-slider"],[1,"approval-label"],[1,"action-chip","go-live",3,"click","disabled"],["points","5 3 19 12 5 21 5 3"],[1,"roster-modal"],[1,"roster-modal-header"],[1,"roster-eyebrow"],["type","button",1,"roster-close-btn",3,"click"],[1,"roster-loading"],["role","status",1,"spinner-border","spinner-border-sm"],[1,"roster-summary-grid"],[1,"roster-summary-card"],[1,"roster-warning"],[1,"roster-sections"],[1,"roster-section"],[1,"roster-section-title"],[1,"roster-list"],[1,"roster-section","roster-section-muted"],[1,"roster-person-card"],[1,"roster-avatar"],[3,"src","alt"],[1,"roster-person-main"],[1,"roster-status","official"],[1,"roster-empty"],[1,"roster-avatar","bonus"],[1,"roster-status","bonus"],["type","button",1,"roster-remove-btn",3,"click","disabled"],[1,"roster-avatar","waitlist"],[1,"roster-status","waitlist"],[1,"roster-person-card","is-muted"],[1,"roster-avatar","muted"],[1,"roster-status","muted"]],template:function(n,i){n&1&&h(0,Ig,1,1,"app-load-spinner",2)(1,iu,18,17),n&2&&P(0,i.isLoading?0:1)},dependencies:[re,ae,Tt,dt,mn,Xr,Jr,j],styles:['@charset "UTF-8";.sessions-container[_ngcontent-%COMP%]{width:100%;max-width:1400px;margin:0 auto;padding:2rem}.section-header[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.5rem}.section-header[_ngcontent-%COMP%] h3[_ngcontent-%COMP%]{font-size:1.35rem;font-weight:700;color:#0f5252;margin:0}.section-header[_ngcontent-%COMP%] .create-btn[_ngcontent-%COMP%]{padding:.6rem 1.25rem;background:linear-gradient(135deg,#146d6d,#21b6b6);color:#fff;border:none;border-radius:8px;font-weight:600;font-size:.85rem;cursor:pointer;transition:all .3s ease;box-shadow:0 2px 8px #146d6d33}.section-header[_ngcontent-%COMP%] .create-btn[_ngcontent-%COMP%]:hover{transform:translateY(-2px);box-shadow:0 4px 12px #146d6d4d;background:linear-gradient(135deg,#0f5555,#1a9292)}.filter-bar[_ngcontent-%COMP%]{display:flex;gap:.5rem;margin-bottom:1.25rem}.filter-pill[_ngcontent-%COMP%]{padding:.4rem 1rem;border-radius:20px;border:1px solid #d1d5db;background:#fff;font-size:.8rem;font-weight:500;cursor:pointer;font-family:inherit;color:#6b7280;transition:all .2s}.filter-pill.active[_ngcontent-%COMP%]{background:#0f5252;color:#fff;border-color:#0f5252}.filter-pill[_ngcontent-%COMP%]:hover:not(.active){border-color:#21b6b6;color:#0f5252}.filter-pill[_ngcontent-%COMP%] .count[_ngcontent-%COMP%]{display:inline-block;margin-left:.35rem;background:#00000014;padding:0 .4rem;border-radius:10px;font-size:.7rem}.filter-pill.active[_ngcontent-%COMP%] .count[_ngcontent-%COMP%]{background:#ffffff4d}.no-data-container[_ngcontent-%COMP%]{padding:4rem 2rem}.sessions-table[_ngcontent-%COMP%]{width:100%;background:#fff;border-radius:12px;overflow:hidden;box-shadow:0 1px 4px #0000000f}.table-header[_ngcontent-%COMP%]{display:grid;grid-template-columns:48px 1fr 140px 110px 340px;align-items:center;padding:.75rem 1.25rem;background:#f8fafa;border-bottom:1px solid #e5e7eb;font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.5px;color:#9ca3af}.table-header[_ngcontent-%COMP%] .text-right[_ngcontent-%COMP%]{text-align:right}
12.session-row[_ngcontent-%COMP%]{border-bottom:1px solid #f0f0f0;transition:background .15s}.session-row[_ngcontent-%COMP%]:last-child{border-bottom:none}.session-row[_ngcontent-%COMP%]:hover{background:#fafbfc}.session-row.open[_ngcontent-%COMP%]{background:#fafcfc}.session-row-main[_ngcontent-%COMP%]{display:grid;grid-template-columns:48px 1fr 140px 110px 340px;align-items:center;padding:.85rem 1.25rem;cursor:pointer;-webkit-user-select:none;user-select:none}.order-num[_ngcontent-%COMP%]{width:30px;height:30px;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#146d6d,#21b6b6);color:#fff;border-radius:8px;font-weight:700;font-size:.8rem}.order-num.order-ended[_ngcontent-%COMP%]{background:#d1d5db}.session-info[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.15rem;padding-right:1rem;min-width:0}.session-info[_ngcontent-%COMP%] .title[_ngcontent-%COMP%]{font-size:.9rem;font-weight:600;color:#111827;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.session-info[_ngcontent-%COMP%] .subtitle[_ngcontent-%COMP%]{font-size:.75rem;color:#9ca3af;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.session-date-col[_ngcontent-%COMP%] .session-date[_ngcontent-%COMP%]{font-size:.8rem;color:#374151;font-weight:500}.session-date-col[_ngcontent-%COMP%] .session-time[_ngcontent-%COMP%]{font-size:.7rem;color:#9ca3af}.status[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:.3rem;padding:.25rem .65rem;border-radius:20px;font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.3px;width:fit-content}.status-dot[_ngcontent-%COMP%]{width:6px;height:6px;border-radius:50%;flex-shrink:0}.status-ended[_ngcontent-%COMP%]{background:#f3f4f6;color:#9ca3af}.status-ended[_ngcontent-%COMP%] .status-dot[_ngcontent-%COMP%]{background:#9ca3af}.status-available[_ngcontent-%COMP%]{background:#fef3c7;color:#b45309}.status-available[_ngcontent-%COMP%] .status-dot[_ngcontent-%COMP%]{background:#f59e0b;animation:_ngcontent-%COMP%_pulse-dot 1.5s infinite}.status-upcoming[_ngcontent-%COMP%]{background:#e0f7f7;color:#0f5252}.status-upcoming[_ngcontent-%COMP%] .status-dot[_ngcontent-%COMP%]{background:#21b6b6}.quick-actions[_ngcontent-%COMP%]{display:flex;gap:.35rem;justify-content:flex-end;align-items:center}.bonus-access-select[_ngcontent-%COMP%]{min-width:132px;height:32px;padding:0 28px 0 10px;border:1px solid #e5e7eb;border-radius:6px;background:#fff;color:#6b7280;font-family:inherit;font-size:.75rem;font-weight:700;cursor:pointer}.bonus-access-select.is-shareable[_ngcontent-%COMP%]{border-color:#0f8f8f;background:#ecfdfd;color:#0f5252}.bonus-access-select[_ngcontent-%COMP%]:disabled{cursor:wait;opacity:.65}.icon-btn[_ngcontent-%COMP%]{width:32px;height:32px;display:flex;align-items:center;justify-content:center;border:1px solid #e5e7eb;background:#fff;border-radius:6px;cursor:pointer;transition:all .15s;color:#6b7280;text-decoration:none}.icon-btn[_ngcontent-%COMP%]:hover{background:#f0fafa;border-color:#21b6b6;color:#146d6d}.icon-btn[_ngcontent-%COMP%] svg[_ngcontent-%COMP%]{width:14px;height:14px;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.icon-btn.icon-btn-primary[_ngcontent-%COMP%]{background:linear-gradient(135deg,#146d6d,#21b6b6);border-color:transparent;color:#fff}.icon-btn.icon-btn-primary[_ngcontent-%COMP%]:hover{background:linear-gradient(135deg,#0f5555,#1a9292)}.chevron[_ngcontent-%COMP%]{width:16px;height:16px;transition:transform .2s;color:#d1d5db;flex-shrink:0;stroke-linecap:round;stroke-linejoin:round}.session-row.open[_ngcontent-%COMP%] .chevron[_ngcontent-%COMP%]{transform:rotate(180deg);color:#21b6b6}.session-row.is-available[_ngcontent-%COMP%]{background:linear-gradient(90deg,#fffbeb,#fff 60%);border-left:3px solid #f59e0b}.session-row.is-available[_ngcontent-%COMP%] .session-row-main[_ngcontent-%COMP%]{padding-left:calc(1.25rem - 3px)}.session-row.is-ended[_ngcontent-%COMP%] .session-info[_ngcontent-%COMP%] .title[_ngcontent-%COMP%], .session-row.is-ended[_ngcontent-%COMP%] .session-date-col[_ngcontent-%COMP%] .session-date[_ngcontent-%COMP%]{color:#9ca3af}.session-expanded[_ngcontent-%COMP%]{padding:0 1.25rem 1rem;margin-left:48px}.expanded-desc[_ngcontent-%COMP%]{font-size:.8rem;color:#6b7280;line-height:1.6;margin-bottom:.75rem;max-width:700px}.expanded-actions[_ngcontent-%COMP%]{display:flex;gap:.5rem;flex-wrap:wrap}.action-chip[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:.35rem;padding:.4rem .85rem;border:1px solid #e5e7eb;border-radius:6px;font-size:.78rem;font-weight:500;cursor:pointer;background:#fff;transition:all .15s;font-family:inherit;color:#374151;text-decoration:none}.action-chip[_ngcontent-%COMP%] svg[_ngcontent-%COMP%]{width:13px;height:13px;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.action-chip[_ngcontent-%COMP%]:hover{background:#f0fafa;border-color:#21b6b6;color:#0f5252}
12.action-chip.go-live[_ngcontent-%COMP%]{background:linear-gradient(135deg,#dc2626,#ef4444);color:#fff;border-color:transparent;font-weight:600}.action-chip.go-live[_ngcontent-%COMP%]:hover:not(:disabled){background:linear-gradient(135deg,#b91c1c,#dc2626)}.action-chip.go-live.disabled[_ngcontent-%COMP%], .action-chip.go-live[_ngcontent-%COMP%]:disabled{background:#d1d5db;color:#9ca3af;cursor:not-allowed;border-color:#d1d5db}.action-chip.action-chip-cancel[_ngcontent-%COMP%]{border-color:#fca5a5;color:#dc2626}.action-chip.action-chip-cancel[_ngcontent-%COMP%]:hover{background:#fef2f2;border-color:#dc2626}@keyframes _ngcontent-%COMP%_pulse-dot{0%,to{opacity:1;transform:scale(1)}50%{opacity:.5;transform:scale(1.5)}}@media (max-width: 900px){.sessions-container[_ngcontent-%COMP%]{padding:1rem}.section-header[_ngcontent-%COMP%]{flex-direction:column;gap:1rem;align-items:stretch}.section-header[_ngcontent-%COMP%] .create-btn[_ngcontent-%COMP%]{width:100%}.filter-bar[_ngcontent-%COMP%]{flex-wrap:wrap}.table-header[_ngcontent-%COMP%]{display:none}.session-row-main[_ngcontent-%COMP%]{grid-template-columns:36px 1fr;gap:.5rem .75rem}.session-date-col[_ngcontent-%COMP%], .status[_ngcontent-%COMP%]{grid-column:2}.quick-actions[_ngcontent-%COMP%]{grid-column:1/-1;justify-content:flex-start;margin-top:.25rem}.session-expanded[_ngcontent-%COMP%]{margin-left:0;padding-left:1rem}.expanded-actions[_ngcontent-%COMP%]{flex-direction:column}.expanded-actions[_ngcontent-%COMP%] .action-chip[_ngcontent-%COMP%]{width:100%;justify-content:center}}.flashcard-approval[_ngcontent-%COMP%]{display:flex;align-items:center;gap:10px;padding:12px 16px;margin-top:8px;background:#f9fafb;border-radius:8px;border:1px solid #e5e7eb}.approval-label[_ngcontent-%COMP%]{font-size:13px;font-weight:500;color:#6b7280}.approval-label.approved[_ngcontent-%COMP%]{color:#10b981}.approval-toggle[_ngcontent-%COMP%]{position:relative;display:inline-block;width:44px;height:24px;cursor:pointer}.approval-toggle[_ngcontent-%COMP%] input[_ngcontent-%COMP%]{opacity:0;width:0;height:0}.approval-toggle[_ngcontent-%COMP%] .toggle-slider[_ngcontent-%COMP%]{position:absolute;inset:0;background-color:#d1d5db;border-radius:24px;transition:.3s}.approval-toggle[_ngcontent-%COMP%] .toggle-slider[_ngcontent-%COMP%]:before{content:"";position:absolute;height:18px;width:18px;left:3px;bottom:3px;background-color:#fff;border-radius:50%;transition:.3s}.approval-toggle[_ngcontent-%COMP%] input[_ngcontent-%COMP%]:checked + .toggle-slider[_ngcontent-%COMP%]{background-color:#29e4e4}.approval-toggle[_ngcontent-%COMP%] input[_ngcontent-%COMP%]:checked + .toggle-slider[_ngcontent-%COMP%]:before{transform:translate(20px)}.roster-modal-backdrop[_ngcontent-%COMP%]{position:fixed;inset:0;z-index:1060;display:flex;justify-content:flex-end;background:#0f172a61}.roster-modal[_ngcontent-%COMP%]{width:min(760px,100%);height:100%;display:flex;flex-direction:column;background:#fff;box-shadow:-16px 0 40px #0f172a29;overflow:hidden}.roster-modal-header[_ngcontent-%COMP%]{display:flex;justify-content:space-between;gap:1rem;padding:1.4rem 1.5rem 1.1rem;border-bottom:1px solid #e5e7eb}.roster-modal-header[_ngcontent-%COMP%] h3[_ngcontent-%COMP%]{margin:.1rem 0 .25rem;color:#111827;font-size:1.25rem;font-weight:800}.roster-modal-header[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{color:#6b7280;font-size:.82rem;font-weight:500}.roster-eyebrow[_ngcontent-%COMP%]{margin:0;color:#0f8f8f;font-size:.72rem;font-weight:800;letter-spacing:.04em;text-transform:uppercase}.roster-close-btn[_ngcontent-%COMP%]{width:36px;height:36px;border:1px solid #e5e7eb;border-radius:8px;background:#fff;color:#6b7280;font-size:1.35rem;line-height:1;cursor:pointer}.roster-close-btn[_ngcontent-%COMP%]:hover{border-color:#21b6b6;color:#0f5252}.roster-loading[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.6rem;padding:2rem 1.5rem;color:#6b7280;font-weight:700}.roster-summary-grid[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:.65rem;padding:1rem 1.5rem;background:#f8fafa;border-bottom:1px solid #e5e7eb}.roster-summary-card[_ngcontent-%COMP%]{min-width:0;padding:.75rem;border:1px solid #e5e7eb;border-radius:8px;background:#fff}.roster-summary-card[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{display:block;color:#6b7280;font-size:.68rem;font-weight:800;text-transform:uppercase}.roster-summary-card[_ngcontent-%COMP%] strong[_ngcontent-%COMP%]{display:block;margin-top:.25rem;color:#111827;font-size:1.25rem;font-weight:900}.roster-warning[_ngcontent-%COMP%]{margin:1rem 1.5rem 0;padding:.8rem .95rem;border:1px solid #fed7aa;border-radius:8px;background:#fff7ed;color:#c2410c;font-size:.8rem;font-weight:700}.roster-sections[_ngcontent-%COMP%]{flex:1;overflow-y:auto;padding:1.1rem 1.5rem 1.5rem}.roster-section[_ngcontent-%COMP%]{padding:1rem 0;border-bottom:1px solid #eef2f7}.roster-section[_ngcontent-%COMP%]:first-child{padding-top:0}.roster-section[_ngcontent-%COMP%]:last-child{border-bottom:0}.roster-section-muted[_ngcontent-%COMP%]{opacity:.78}.roster-section-title[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;margin-bottom:.7rem}
12.roster-section-title[_ngcontent-%COMP%] h4[_ngcontent-%COMP%]{margin:0;color:#111827;font-size:.95rem;font-weight:800}.roster-section-title[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{min-width:26px;padding:.15rem .5rem;border-radius:999px;background:#eefdfd;color:#0f5252;text-align:center;font-size:.75rem;font-weight:900}.roster-list[_ngcontent-%COMP%]{display:grid;gap:.55rem}.roster-person-card[_ngcontent-%COMP%]{display:grid;grid-template-columns:38px minmax(0,1fr) auto auto;align-items:center;gap:.75rem;min-height:58px;padding:.7rem .8rem;border:1px solid #e5e7eb;border-radius:8px;background:#fff}.roster-person-card.is-muted[_ngcontent-%COMP%]{background:#f9fafb}.roster-avatar[_ngcontent-%COMP%]{width:38px;height:38px;display:grid;place-items:center;overflow:hidden;border-radius:999px;background:#e0f7f7;color:#0f5252;font-size:.82rem;font-weight:900}.roster-avatar[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{width:100%;height:100%;object-fit:cover}.roster-avatar.bonus[_ngcontent-%COMP%]{background:#ecfdf5;color:#047857}.roster-avatar.waitlist[_ngcontent-%COMP%]{background:#fff7ed;color:#c2410c}.roster-avatar.muted[_ngcontent-%COMP%]{background:#f3f4f6;color:#6b7280}.roster-person-main[_ngcontent-%COMP%]{min-width:0}.roster-person-main[_ngcontent-%COMP%] strong[_ngcontent-%COMP%], .roster-person-main[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.roster-person-main[_ngcontent-%COMP%] strong[_ngcontent-%COMP%]{color:#111827;font-size:.86rem;font-weight:800}.roster-person-main[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{margin-top:.15rem;color:#6b7280;font-size:.76rem;font-weight:600}.roster-status[_ngcontent-%COMP%]{display:inline-flex;align-items:center;min-height:26px;padding:0 .6rem;border-radius:999px;font-size:.7rem;font-weight:900;text-transform:uppercase}.roster-status.official[_ngcontent-%COMP%]{background:#e0f7f7;color:#0f5252}.roster-status.bonus[_ngcontent-%COMP%]{background:#ecfdf5;color:#047857}.roster-status.waitlist[_ngcontent-%COMP%]{background:#fff7ed;color:#c2410c}.roster-status.muted[_ngcontent-%COMP%]{background:#f3f4f6;color:#6b7280}.roster-remove-btn[_ngcontent-%COMP%]{min-height:30px;padding:0 .75rem;border:1px solid #fecaca;border-radius:7px;background:#fff;color:#dc2626;font-size:.74rem;font-weight:800;cursor:pointer}.roster-remove-btn[_ngcontent-%COMP%]:hover:not(:disabled){background:#fef2f2}.roster-remove-btn[_ngcontent-%COMP%]:disabled{cursor:wait;opacity:.65}.roster-empty[_ngcontent-%COMP%]{margin:0;padding:.9rem;border:1px dashed #d1d5db;border-radius:8px;color:#6b7280;font-size:.82rem;font-weight:600}@media (max-width: 720px){.roster-modal[_ngcontent-%COMP%]{width:100%}.roster-summary-grid[_ngcontent-%COMP%]{grid-template-columns:repeat(2,minmax(0,1fr))}.roster-person-card[_ngcontent-%COMP%]{grid-template-columns:38px minmax(0,1fr)}.roster-status[_ngcontent-%COMP%], .roster-remove-btn[_ngcontent-%COMP%]{grid-column:2;justify-self:flex-start}}']})}}return t})();function su(t,c){t&1&&v(0,"app-load-spinner",10),t&2&&p("isBig",!1)("invertColor",!0)}function lu(t,c){t&1&&(s(0),_(1,"translate")),t&2&&b(" ",m(1,1,"GROUP_CLASSES_ADMIN.TRANSLATE")," ")}function cu(t,c){t&1&&v(0,"app-load-spinner",10),t&2&&p("isBig",!1)("invertColor",!0)}function du(t,c){t&1&&(s(0),_(1,"translate")),t&2&&b(" ",m(1,1,"GROUP_CLASSES_ADMIN.TRANSLATE")," ")}function pu(t,c){t&1&&v(0,"app-load-spinner",10),t&2&&p("isBig",!1)("invertColor",!0)}function _u(t,c){t&1&&(s(0),_(1,"translate")),t&2&&b(" ",m(1,1,"GROUP_CLASSES_ADMIN.TRANSLATE")," ")}function mu(t,c){t&1&&v(0,"app-load-spinner",10),t&2&&p("isBig",!1)("invertColor",!0)}function gu(t,c){t&1&&(s(0),_(1,"translate")),t&2&&b(" ",m(1,1,"GROUP_CLASSES_ADMIN.TRANSLATE")," ")}function uu(t,c){t&1&&(a(0,"div",23),v(1,"input",27),a(2,"label",28),s(3),_(4,"translate"),r()()),t&2&&(o(3),b(" ",m(4,1,"GROUP_CLASSES_ADMIN.OVERWRITE_MANUAL_OVERRIDES")," "))}function Cu(t,c){t&1&&v(0,"app-load-spinner",10),t&2&&p("isBig",!1)("invertColor",!0)}function fu(t,c){t&1&&(s(0),_(1,"translate")),t&2&&b(" ",m(1,1,"GROUP_CLASSES_ADMIN.SUB
12MIT")," ")}function hu(t,c){t&1&&v(0,"app-load-spinner",10),t&2&&p("isBig",!1)("invertColor",!0)}function xu(t,c){t&1&&(s(0),_(1,"translate")),t&2&&b(" ",m(1,1,"GROUP_CLASSES_ADMIN.CASCADE_RESCHEDULE")," ")}function bu(t,c){if(t&1){let e=M();a(0,"button",29),x("click",function(){C(e);let i=d();return f(i.onCascadeReschedule())}),h(1,hu,1,2,"app-load-spinner",10)(2,xu,2,3),r()}if(t&2){let e=d();p("disabled",e.isCascading||e.isLoading),o(),P(1,e.isCascading?1:2)}}var Ci=(()=>{class t{constructor(e,n,i,l,u,O,E,V,L){this.breadcrumbService=e,this.formBuilder=n,this.http=i,this.cohortApi=l,this.toasterService=u,this._route=O,this.emojiPickerService=E,this.translate=V,this.platformId=L,this.destroy$=new ve,this.instructorId="",this.batchId=null,this.levelId=null,this.sessionId=null,this.showEmojiPicker={},this.executeCommandFunctions={},this.emojiPickerPositions={},this.editorConfig={editable:!0,spellcheck:!0,sanitize:!1,height:"15rem",minHeight:"5rem",placeholder:"Enter description here...",translate:"no",defaultParagraphSeparator:"p",defaultFontName:"Montserrat",toolbarHiddenButtons:[["undo","redo","strikeThrough","subscript","superscript","justifyFull","indent","outdent","fontName"],["fontSize","backgroundColor","customClasses","link","unlink","insertImage","insertVideo","insertHorizontalRule","removeFormat","toggleEditorMode"]]},this.isTranslatingAnswer=!1,this.isLoading=!1,this.isCascading=!1,this.initializeForm()}ngOnInit(){this.batchId=this._route.snapshot.paramMap.get("batchId"),this.levelId=this._route.snapshot.paramMap.get("levelId"),this.sessionId=this._route.snapshot.paramMap.get("sessionId"),this.setBreadcrumbItems(),this.batchId&&this.sessionId&&this.getSessionById()}ngOnDestroy(){this.destroy$.next(),this.destroy$.complete()}setBreadcrumbItems(){this.breadcrumbService.setItems([{label:"Cohorts",routerLink:["/main/dashboard/cohorts/batches"]},{label:"Sessions",routerLink:["/main/dashboard/cohorts/batches",this.batchId||"","levels",this.levelId||"","sessions"]},{label:this.sessionId?"Update Session":"Create Session"}])}initializeForm(){this.sessionForm=this.formBuilder.group({title:this.formBuilder.group({en:["",S.required],fr:["",S.required]}),description:this.formBuilder.group({en:["",S.required],fr:["",S.required]}),sessionTime:["",S.required],duration:[null,[S.required,S.min(1)]],sessionDate:["",S.required],sessionOrder:["",[S.required]],rescheduleReason:[""],overwriteManualOverrides:[!1]})}translateText(e,n){let i={text:e};return this.http.postReq("v2/flashcards/translate",i)}stripHtmlTags(e){if(!e)return"";let n=document.createElement("div");return n.innerHTML=e,n.textContent||n.innerText||""}translateField(e){this.isTranslatingAnswer=!0;let n="";e==="title-en"?n=this.sessionForm.get("title.en")?.value:e==="title-fr"?n=this.sessionForm.get("title.fr")?.value:e==="description-en"?n=this.sessionForm.get("description.en")?.value:e==="description-fr"&&(n=this.sessionForm.get("description.fr")?.value);let i=this.stripHtmlTags(n);this.translateText(i,["en","ar"]).subscribe({next:l=>{this.updateTranslatedFields(e,l.data.translations),this.toasterService.success("Review answer translated successfully")},error:l=>{this.isTranslatingAnswer=!1},complete:()=>{this.isTranslatingAnswer=!1}})}updateTranslatedFields(e,n){e==="title-en"?this.sessionForm.get("title.fr")?.setValue(n.fr):e==="title-fr"?this.sessionForm.get("title.en")?.setValue(n.en):e==="description-en"?this.sessionForm.get("description.fr")?.setValue(n.fr):e==="description-fr"&&this.sessionForm.get("description.en")?.setValue(n.en)}getSessionById(){this.cohortApi.getAdminSession(this.batchId,this.sessionId).pipe(U(this.destroy$)).subscribe({next:e=>{this.sessionDetails=e.data,this.sessionForm.patchValue(W({},e.data))}})}onSubmit(){this.isLoading=!0;let e="";if(this.sessionForm.invalid){this.toasterService.error("Please fill all required fields correctly."),this.isLoading=!1;return}if(!this.batchId){this.toasterService.error("Batch ID not available."),this.isLoading=!1;return}let n=W({},this.sessionForm.value);delete n.overwriteManualOverrides,this.sessionId?this.cohortApi.updateAdminSession(this.batchId,this.sessionId,n).subscribe({next:i=>{e=i.message},complete:()=>{this.toasterService.success("Success",e),this.isLoading=!1},error:()=>{this.isLoading=!1}}):this.cohortApi.createAdminSession(this.batchId,this.levelId,n).subscribe({next:i=>{e=i.message},complete:()=>{this.toasterService.success("Success",e),this.isLoading=!1,this.sessionForm.reset()},error:()=>{this.isLoading=!1}})}onCascadeReschedule(){let e=this.sessionForm.get("sessionDate")?.value,n=this.sessionForm.get("sessionTime")?.value,i=this.sessionForm.get("rescheduleReason")?.value?.trim();if(!e){this.toasterService.error("Please select a date first.");return}let l=this.translate.instant("GROUP_CLASSES_ADMIN.CASCADE_RESCHEDULE_CONFIRM");confirm(l)&&(this.isCascading=!0,this.cohortApi.cascadeRescheduleAdmin(this.batchId,this.sessionId,Me(W({newDate:e,newTime:n||void 0,levelId:this.levelId},i?{rescheduleReason:i}:{}),{overwriteManualOverrides:this.sessionForm.get("overwriteManualOverrides")?.value===!0})).pipe(U(this.destroy$)).subscribe({next:u=>
12{let O=u.data?.sessionsUpdated||0;this.toasterService.success("Success",`Rescheduled ${O} sessions`),this.isCascading=!1},error:()=>{this.isCascading=!1}}))}onEmojiSelected(e,n){let i=this.executeCommandFunctions[n];this.emojiPickerService.onEmojiSelected(e,i),this.showEmojiPicker[n]=!1}toggleEmojiPicker(e,n,i){if(n&&(this.executeCommandFunctions[e]=n),i&&zi(this.platformId)){let l=i.currentTarget,u=l.getBoundingClientRect(),O=l.closest(".angular-editor-wrapper")||l.closest(".form-group")||l.closest(".position-relative"),E=O?O.getBoundingClientRect():null;E?this.emojiPickerPositions[e]={top:u.bottom-E.top+5,left:u.left-E.left}:this.emojiPickerPositions[e]={top:u.bottom+5,left:u.left}}if(!this.emojiPickerService.isLoaded()){this.emojiPickerService.loadEmojiPicker().then(()=>{this.showEmojiPicker[e]=!0}).catch(l=>{console.error("Failed to load emoji picker:",l)});return}this.showEmojiPicker[e]=!this.showEmojiPicker[e]}get emojiPickerLoaded(){return this.emojiPickerService.isLoaded()}onDocumentClick(e){let n=e.target;!n.closest(".emoji-picker-container")&&!n.closest(".emoji-picker-btn")&&Object.keys(this.showEmojiPicker).forEach(i=>{this.showEmojiPicker[i]=!1})}static{this.\u0275fac=function(n){return new(n||t)(w(Lt),w(nt),w(Fe),w(Vt),w(he),w(te),w(xo),w(ze),w(on))}}static{this.\u0275cmp=H({type:t,selectors:[["app-cohort-session-form"]],hostBindings:function(n,i){n&1&&x("click",function(u){return i.onDocumentClick(u)},!1,ht)},decls:87,vars:52,consts:[[1,"create-blog-container"],[3,"formGroup"],[1,"blog-header","d-flex","justify-content-between","align-items-center","mb-4"],[1,"blog-title","mb-0"],["formGroupName","title",1,"row","my-4"],[1,"col-xxl-6","col-xl-6","col-lg-12","col-md-12","col-sm-12"],[1,"form-group"],[1,"d-flex","justify-content-start","align-items-center","gap-3"],[1,"form-label"],["type","button",3,"click","disabled"],[3,"isBig","invertColor"],["type","text","formControlName","en",1,"form-control"],["type","text","formControlName","fr",1,"form-control"],["formGroupName","description",1,"row","my-4"],["formControlName","en",3,"showTextColors","showEmojiPicker"],["formControlName","fr",3,"showTextColors","showEmojiPicker"],[1,"row","my-4"],["type","date","formControlName","sessionDate",1,"form-control"],["type","number","formControlName","duration",1,"form-control"],["type","time","formControlName","sessionTime",1,"form-control"],["type","number","formControlName","sessionOrder",1,"form-control"],[1,"col-xxl-12","col-xl-12","col-lg-12","col-md-12","col-sm-12"],["type","text","formControlName","rescheduleReason",1,"form-control",3,"placeholder"],[1,"d-flex","justify-content-center","align-items-center","gap-2","mt-3"],[1,"d-flex","justify-content-center","align-items-center","gap-3","mt-4"],[1,"submit",3,"click","disabled"],[1,"submit","cascade-btn",3,"disabled"],["id","overwriteManualOverrides","type","checkbox","formControlName","overwriteManualOverrides"],["for","overwriteManualOverrides",1,"mb-0"],[1,"submit","cascade-btn",3,"click","disabled"]],template:function(n,i){n&1&&(a(0,"div",0)(1,"form",1)(2,"div",2)(3,"h2",3),s(4),_(5,"translate"),_(6,"translate"),r()(),a(7,"div",4)(8,"div",5)(9,"div",6)(10,"div",7)(11,"label",8),s(12),_(13,"translate"),r(),a(14,"button",9),x("click",function(){return i.translateField("title-en")}),h(15,su,1,2,"app-load-spinner",10)(16,lu,2,3),r()(),v(17,"input",11),r()(),a(18,"div",5)(19,"div",6)(20,"div",7)(21,"label",8),s(22),_(23,"translate"),r(),a(24,"button",9),x("click",function(){return i.translateField("title-fr")}),h(25,cu,1,2,"app-load-spinner",10)(26,du,2,3),r()(),v(27,"input",12),r()()(),a(28,"div",13)(29,"div",5)(30,"div",6)(31,"div",7)(32,"label",8),s(33),_(34,"translate"),r(),a(35,"button",9),x("click",function(){return i.translateField("description-en")}),h(36,pu,1,2,"app-load-spinner",10)(37,_u,2,3),r()(),v(38,"app-shared-html-editor",14),r()(),a(39,"div",5)(40,"div",6)(41,"div",7)(42,"label",8),s(43),_(44,"translate"),r(),a(45,"button",9),x("click",function(){return i.translateField("description-fr")}),h(46,mu,1,2,"app-load-spinner",10)(47,gu,2,3),r()(),v(48,"app-shared-html-editor",15),r()()(),a(49,"div",16)(50,"div",5)(51,"div",6)(52,"label",8),s(53),_(54,"translate"),r(),v(55,"input",17),r()(),a(56,"div",5)(57,"div",6)(58,"label",8),s(59),_(60,"translate"),r(),v(61,"input",18),r()(),a(62,"div",5)(63,"div",6)(64,"label",8),s(65),_(66,"translate"),r(),v(67,"input",19),r()(),a(68,"div",5)(69,"div",6)(70,"label",8),s(71),_(72,"translate"),r(),v(73,"input",20),r()()(),a(74,"div",21)(75,"div",6)(76,"label",8),s(77),_(78,"translate"),r(),v(79,"input",22),_(80,"translate"),r()(),h(81,uu,5,3,"div",23),r(),a(82,"div",24)(83,"button",25),x("click",function(){return i.onSubmit()}),h(84,Cu,1,2,"app-load-spinner",10)(85,fu,2,3),r(),h(86,bu,3,2,"button",26),r()()),n&2&&(o(),p("formGroup",i.sessionForm),o(3),b(" ",i.sessionId?m(5,28,"GROUP_CLASSES_ADMIN.UPDATE_SESSION"):m(6,30,"GROUP_CLASSES_ADMIN.CREATE_SESSION")," "),o(8),b(" ",m(13,32,"GROUP_CLASSES_ADMIN.TITLE_EN")," "),o(2),p("disabled",i.isTranslatingAnswer),o(),P(15,i.isTranslatingAnswer?15:16),o(7),b(" ",m(23,34,"GROUP_CLASSES_ADMIN.TITLE_FR")," "),o(2),p("disabled",i.isTranslatingAnswer),o(),P(25,i.isTranslatingAnswer?25:26),o(8),b(" ",m(34,36,"GROUP_CLASSES_ADMIN.DESCRIPTION_EN")," "),o(2),p("disabled",i.isTranslatingAnswer),o(),P(36,i.isTranslatingAnswer?36:37),o(2),p("showTextColors",!0)("showEmojiPicker",!0),o(5),b(" ",m(44,38,"GROUP_CLASSES_ADMIN.DESCRIPTION_FR")," "),o(2),p("disabled",i.isTranslatingAnswer),o(),P(46,i.isTranslatingAnswer?46:47),o(2),p("showTextColors",!0)("showEmojiPicker",!0),o(5),b(" ",m(54,40,"GROUP_CLASSES_ADMIN.START_DATE")," "),o(6),b(" ",m(60,42,"GROUP_CLASSES_ADMIN.SESSION_DURATION")," "),o(6),b(" ",m(66,44,"GROUP_CLASSES_ADMIN.SESSION_TIME")," "),o(6),b(" ",m(72,46,"GROUP_CLASSES_ADMIN.SESSION_ORDER")," "),o(6),b(" ",m(78,48,"GROUP_CLASSES_ADMIN.RESCHEDULE_REASON_LABEL")," "),o(2),p("placeholder",m(80,50,"GROUP_CLASSES_ADMIN.RESCHEDULE_REASON_PLACEHOLDER")),o(2),P(81,i.sessionId?81:-1),o(2),p("disabled",i.isLoading||i.isCascading),o(),P(84,i.isLoading?84:85),o(2),P(86,i.sessionId?86:-1))},dependencies:[je,ie,Ve,Ke,Y,$e,et,tt,ct,dt,bo,j],styles:[".create-blog-container[_ngcontent-%COMP%]{max-width:1200px;margin:0 auto;padding:2rem;background-color:#fff;border-radius:12px;box-shadow:0 4px 6px #0000000d}.create-blog-container[_ngcontent-%COMP%] .blog-header[_ngcontent-%COMP%] .blog-title[_ngcontent-%COMP%]{font-size:1.875rem;font-weight:700;color:#1f2937}.create-blog-container[_ngcontent-%COMP%] .blog-header[_ngcontent-%COMP%] .blog-actions[_ngcontent-%COMP%] .btn[_ngcontent-%COMP%]{font-weight:500;border-radius:8px;padding:.625rem 1.25rem;transition:all .3s ease}.create-blog-container[_ngcontent-%COMP%] .blog-header[_ngcontent-%COMP%] .blog-actions[_ngcontent-%COMP%] .btn.btn-trash[_ngcontent-%COMP%]{background-color:#ddfbfb;border:1px solid #DDFBFB;color:#dc2626}.create-blog-container[_ngcontent-%COMP%] .blog-header[_ngcontent-%COMP%] .blog-actions[_ngcontent-%COMP%] .btn.btn-trash[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{width:16px;height:16px}.create-blog-container[_ngcontent-%COMP%] .blog-header[_ngcontent-%COMP%] .blog-actions[_ngcontent-%COMP%] .btn.btn-save[_ngcontent-%COMP%]{background-color:#ddfbfb;border:1px solid #DDFBFB;color:#374151}.create-blog-container[_ngcontent-%COMP%] .blog-header[_ngcontent-%COMP%] .blog-actions[_ngcontent-%COMP%] .btn.btn-save[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{width:16px;height:16px}.create-blog-container[_ngcontent-%COMP%] .blog-header[_ngcontent-%COMP%] .blog-actions[_ngcontent-%COMP%] .btn.btn-preview[_ngcontent-%COMP%]{color:#21b6b6}.create-blog-container[_ngcontent-%COMP%] .blog-header[_ngcontent-%COMP%] .blog-actions[_ngcontent-%COMP%] .btn.btn-preview[_ngcontent-%COMP%]:hover{background-color:#bae6fd}.create-blog-container[_ngcontent-%COMP%] .blog-header[_ngcontent-%COMP%] .blog-actions[_ngcontent-%COMP%] .btn.btn-preview[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{width:16px;height:16px}.create-blog-container[_ngcontent-%COMP%] .blog-header[_ngcontent-%COMP%] .blog-actions[_ngcontent-%COMP%] .btn.btn-submit[_ngcontent-%COMP%]{background-color:#21b6b6;border:1px solid #21B6B6;color:#fff}.create-blog-container[_ngcontent-%COMP%] .image-upload-section[_ngcontent-%COMP%] .form-label[_ngcontent-%COMP%]{font-weight:600;color:#374151;margin-bottom:.75rem}.create-blog-container[_ngcontent-%COMP%] .image-upload-section[_ngcontent-%COMP%] .image-upload-container[_ngcontent-%COMP%]{border:2px dashed #d1d5db;border-radius:12px;padding:2rem;text-align:center;cursor:pointer;transition:all .3s ease;background-color:#f9fafb;position:relative}.create-blog-container[_ngcontent-%COMP%] .image-upload-section[_ngcontent-%COMP%] .image-upload-container[_ngcontent-%COMP%]:hover{border-color:#21b6b6;background-color:#f0fdfa}.create-blog-container[_ngcontent-%COMP%] .image-upload-section[_ngcontent-%COMP%] .image-upload-container[_ngcontent-%COMP%] .image-preview[_ngcontent-%COMP%]{position:relative}.create-blog-container[_ngcontent-%COMP%] .image-upload-section[_ngcontent-%COMP%] .image-upload-container[_ngcontent-%COMP%] .image-preview[_ngcontent-%COMP%] .uploaded-image[_ngcontent-%COMP%]{max-width:100%;max-height:300px;object-fit:cover;border-radius:8px}.create-blog-container[_ngcontent-%COMP%] .image-upload-section[_ngcontent-%COMP%] .image-upload-container[_ngcontent-%COMP%] .image-preview[_ngcontent-%COMP%] .image-overlay[_ngcontent-%COMP%]{position:absolute;top:10px;right:10px}.create-blog-container[_ngcontent-%COMP%] .image-upload-section[_ngcontent-%COMP%] .image-upload-container[_ngcontent-%COMP%] .image-preview[_ngcontent-%COMP%] .image-overlay[_ngcontent-%COMP%] .remove-image-btn[_ngcontent-%COMP%]{background-color:#dc2626;border:none;color:#fff;width:30px;height:30px;border-radius:50%}.create-blog-container[_ngcontent-%COMP%] .image-upload-section[_ngcontent-%COMP%] .image-upload-container[_ngcontent-%COMP%] .image-preview[_ngcontent-%COMP%] .image-overlay[_ngcontent-%COMP%] .remove-image-btn[_ngcontent-%COMP%]:hover{background-color:#b91c1c}.create-blog-container[_ngcontent-%COMP%] .image-upload-section[_ngcontent-%COMP%] .image-upload-container[_ngcontent-%COMP%] .image-preview[_ngcontent-%COMP%] .image-overlay[_ngcontent-%COMP%] .remove-image-btn[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{width:12px;height:12px}.create-blog-container[_ngcontent-%COMP%] .image-upload-section[_ngcontent-%COMP%] .image-upload-container[_ngcontent-%COMP%] .upload-placeholder[_ngcontent-%COMP%] .upload-icon[_ngcontent-%COMP%]{width:48px;height:48px;margin-bottom:1rem}.create-blog-container[_ngcontent-%COMP%] .image-upload-section[_ngcontent-%COMP%] .image-upload-container[_ngcontent-%COMP%] .upload-placeholder[_ngcontent-%COMP%] .upload-text[_ngcontent-%COMP%]{color:#6b7280;font-size:.875rem}.create-blog-container[_ngcontent-%COMP%] .form-fields-section[_ngcontent-%COMP%] .form-group[_ngcontent-%COMP%] .form-label[_ngcontent-%COMP%]{font-weight:600;color:#374151;margin-bottom:.5rem}
12.create-blog-container[_ngcontent-%COMP%] .form-fields-section[_ngcontent-%COMP%] .form-group[_ngcontent-%COMP%] .form-control[_ngcontent-%COMP%], .create-blog-container[_ngcontent-%COMP%] .form-fields-section[_ngcontent-%COMP%] .form-group[_ngcontent-%COMP%] .form-select[_ngcontent-%COMP%]{border:1px solid #d1d5db;border-radius:8px;padding:.75rem 1rem;font-size:.875rem;transition:all .3s ease}.create-blog-container[_ngcontent-%COMP%] .form-fields-section[_ngcontent-%COMP%] .form-group[_ngcontent-%COMP%] .form-control[_ngcontent-%COMP%]:focus, .create-blog-container[_ngcontent-%COMP%] .form-fields-section[_ngcontent-%COMP%] .form-group[_ngcontent-%COMP%] .form-select[_ngcontent-%COMP%]:focus{border-color:#21b6b6;box-shadow:0 0 0 3px #21b6b61a}.create-blog-container[_ngcontent-%COMP%] .form-fields-section[_ngcontent-%COMP%] .form-group[_ngcontent-%COMP%] .form-control.is-invalid[_ngcontent-%COMP%], .create-blog-container[_ngcontent-%COMP%] .form-fields-section[_ngcontent-%COMP%] .form-group[_ngcontent-%COMP%] .form-select.is-invalid[_ngcontent-%COMP%]{border-color:#dc2626}.create-blog-container[_ngcontent-%COMP%] .form-fields-section[_ngcontent-%COMP%] .form-group[_ngcontent-%COMP%] .category-dropdown-wrapper[_ngcontent-%COMP%]{position:relative}.create-blog-container[_ngcontent-%COMP%] .form-fields-section[_ngcontent-%COMP%] .form-group[_ngcontent-%COMP%] .category-dropdown-wrapper[_ngcontent-%COMP%] .category-loading[_ngcontent-%COMP%]{position:absolute;right:12px;top:50%;transform:translateY(-50%);z-index:10}.create-blog-container[_ngcontent-%COMP%] .form-fields-section[_ngcontent-%COMP%] .form-group[_ngcontent-%COMP%] .invali
12d-feedback[_ngcontent-%COMP%]{font-size:.75rem;margin-top:.25rem}.create-blog-container[_ngcontent-%COMP%] .content-section[_ngcontent-%COMP%] .content-title[_ngcontent-%COMP%]{font-size:1.5rem;font-weight:600;color:#1f2937}.create-blog-container[_ngcontent-%COMP%] .content-section[_ngcontent-%COMP%] .btn-add-content[_ngcontent-%COMP%]{background-color:#ddfbfb;color:#0f5252;border-radius:8px;padding:.625rem 1.25rem;font-weight:500;transition:all .3s ease}.create-blog-container[_ngcontent-%COMP%] .content-section[_ngcontent-%COMP%] .btn-add-content[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{width:16px;height:16px}.create-blog-container[_ngcontent-%COMP%] .content-section[_ngcontent-%COMP%] .add-content-bottom[_ngcontent-%COMP%]{display:flex;justify-content:start;padding:2rem 0;margin-top:2rem}.create-blog-container[_ngcontent-%COMP%] .content-section[_ngcontent-%COMP%] .add-content-bottom[_ngcontent-%COMP%] .btn-add-content[_ngcontent-%COMP%]{background-color:#ddfbfb;border:1px solid #DDFBFB;color:#0f5252;border-radius:12px;transition:all .3s ease}.create-blog-container[_ngcontent-%COMP%] .content-section[_ngcontent-%COMP%] .add-content-bottom[_ngcontent-%COMP%] .btn-add-content[_ngcontent-%COMP%]:active{transform:translateY(0)}.create-blog-container[_ngcontent-%COMP%] .content-section[_ngcontent-%COMP%] .add-content-bottom[_ngcontent-%COMP%] .btn-add-content[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{width:18px;height:18px}.create-blog-container[_ngcontent-%COMP%] .content-section[_ngcontent-%COMP%] .default-layout-selection[_ngcontent-%COMP%] .layout-selection-card[_ngcontent-%COMP%]{padding:1.5rem;box-shadow:0 2px 4px #0000000d}.create-blog-container[_ngcontent-%COMP%] .content-section[_ngcontent-%COMP%] .default-layout-selection[_ngcontent-%COMP%] .layout-selection-card[_ngcontent-%COMP%] .layout-header[_ngcontent-%COMP%] .layout-label[_ngcontent-%COMP%]{color:#374151;font-weight:500;margin-bottom:.75rem}.create-blog-container[_ngcontent-%COMP%] .content-section[_ngcontent-%COMP%] .default-layout-selection[_ngcontent-%COMP%] .layout-selection-card[_ngcontent-%COMP%] .layout-header[_ngcontent-%COMP%] .layout-btn[_ngcontent-%COMP%]{background-color:#ddfbfb;border:1px solid #DDFBFB;color:#0f5252;border-radius:8px;transition:all .3s ease;justify-content:flex-start}.create-blog-container[_ngcontent-%COMP%] .content-section[_ngcontent-%COMP%] .default-layout-selection[_ngcontent-%COMP%] .layout-selection-card[_ngcontent-%COMP%] .layout-buttons[_ngcontent-%COMP%] .layout-btn[_ngcontent-%COMP%]{background-color:#ddfbfb;color:#0f5252;border-radius:8px;padding:1rem 1.5rem;font-weight:600;font-size:.95rem;transition:all .3s ease;min-width:160px;justify-content:flex-start}.create-blog-container[_ngcontent-%COMP%] .content-section[_ngcontent-%COMP%] .default-layout-selection[_ngcontent-%COMP%] .layout-selection-card[_ngcontent-%COMP%] .layout-buttons[_ngcontent-%COMP%] .layout-btn[_ngcontent-%COMP%]:active{transform:translateY(0)}.create-blog-container[_ngcontent-%COMP%] .content-section[_ngcontent-%COMP%] .default-layout-selection[_ngcontent-%COMP%] .layout-selection-card[_ngcontent-%COMP%] .layout-buttons[_ngcontent-%COMP%] .layout-btn[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{width:20px;height:20px}.create-blog-container[_ngcontent-%COMP%] .content-section[_ngcontent-%COMP%] .content-blocks[_ngcontent-%COMP%] .content-block-card[_ngcontent-%COMP%]{padding:1.5rem}.create-blog-container[_ngcontent-%COMP%] .content-section[_ngcontent-%COMP%] .content-blocks[_ngcontent-%COMP%] .content-block-card[_ngcontent-%COMP%] .content-block-header[_ngcontent-%COMP%] .layout-label[_ngcontent-%COMP%]{color:#374151;font-weight:500}.create-blog-container[_ngcontent-%COMP%] .content-section[_ngcontent-%COMP%] .content-blocks[_ngcontent-%COMP%] .content-block-card[_ngcontent-%COMP%] .content-block-header[_ngcontent-%COMP%] .layout-actions[_ngcontent-%COMP%] .layout-buttons[_ngcontent-%COMP%] .layout-btn[_ngcontent-%COMP%]{background-color:#ddfbfb;border:1px solid #DDFBFB;color:#0f5252;border-radius:8px;padding:1rem 1.5rem;font-weight:600;font-size:.95rem;transition:all .3s ease;min-width:160px;justify-content:flex-start}.create-blog-container[_ngcontent-%COMP%] .content-section[_ngcontent-%COMP%] .content-blocks[_ngcontent-%COMP%] .content-block-card[_ngcontent-%COMP%] .content-block-header[_ngcontent-%COMP%] .layout-actions[_ngcontent-%COMP%] .layout-buttons[_ngcontent-%COMP%] .layout-btn[_ngcontent-%COMP%]:active{transform:translateY(0)}.create-blog-container[_ngcontent-%COMP%] .content-section[_ngcontent-%COMP%] .content-blocks[_ngcontent-%COMP%] .content-block-card[_ngcontent-%COMP%] .content-block-header[_ngcontent-%COMP%] .layout-actions[_ngcontent-%COMP%] .layout-buttons[_ngcontent-%COMP%] .layout-btn[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{width:20px;height:20px}.create-blog-container[_ngcontent-%COMP%] .content-section[_ngcontent-%COMP%] .content-blocks[_ngcontent-%COMP%] .content-block-card[_ngcontent-%COMP%] .content-block-header[_ngcontent-%COMP%] .layout-actions[_ngcontent-%COMP%] .btn-delete-block[_ngcontent-%COMP%]{background-color:#ddfbfb;border:1px solid #DDFBFB;color:#0f5252;border-radius:8px;width:40px;height:40px;transition:all .3s ease}.create-blog-container[_ngcontent-%COMP%] .content-section[_ngcontent-%COMP%] .content-blocks[_ngcontent-%COMP%] .content-block-card[_ngcontent-%COMP%] .content-block-header[_ngcontent-%COMP%] .layout-actions[_ngcontent-%COMP%] .btn-delete-block[_ngcontent-%COMP%]:hover{background-color:#dc2626;border-color:#dc2626;color:#fff;transform:translateY(-1px);box-shadow:0 2px 4px #dc262633}.create-blog-container[_ngcontent-%COMP%] .content-section[_ngcontent-%COMP%] .content-blocks[_ngcontent-%COMP%] .content-block-card[_ngcontent-%COMP%] .content-block-header[_ngcontent-%COMP%] .layout-actions[_ngcontent-%COMP%] .btn-delete-block[_ngcontent-%COMP%]:active{transform:translateY(0);box-shadow:0 1px 2px #dc262633}.create-blog-container[_ngcontent-%COMP%] .content-section[_ngcontent-%COMP%] .content-blocks[_ngcontent-%COMP%] .content-block-card[_ngcontent-%COMP%] .content-block-header[_ngcontent-%COMP%] .layout-actions[_ngcontent-%COMP%] .btn-delete-block[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{width:16px;height:16px;transition:all .3s ease}.create-blog-container[_ngcontent-%COMP%] .content-section[_ngcontent-%COMP%] .content-blocks[_ngcontent-%COMP%] .content-block-card[_ngcontent-%COMP%] .content-section-header[_ngcontent-%COMP%] .layout-label[_ngcontent-%COMP%]{color:#374151;font-weight:500}.create-blog-container[_ngcontent-%COMP%] .content-section[_ngcontent-%COMP%] .content-blocks[_ngcontent-%COMP%] .content-block-card[_ngcontent-%COMP%] .content-section-header[_ngcontent-%COMP%] .btn-delete-block[_ngcontent-%COMP%]{background-color:#ddfbfb;border:1px solid #DDFBFB;color:#0f5252;border-radius:8px;width:40px;height:40px;transition:all .3s ease}.create-blog-container[_ngcontent-%COMP%] .content-section[_ngcontent-%COMP%] .content-blocks[_ngcontent-%COMP%] .content-block-card[_ngcontent-%COMP%] .content-section-header[_ngcontent-%COMP%] .btn-delete-block[_ngcontent-%COMP%]:hover{background-color:#dc2626;border-color:#dc2626;color:#fff;transform:translateY(-1px);box-shadow:0 2px 4px #dc262633}.create-blog-container[_ngcontent-%COMP%] .content-section[_ngcontent-%COMP%] .content-blocks[_ngcontent-%COMP%] .content-block-card[_ngcontent-%COMP%] .content-section-header[_ngcontent-%COMP%] .btn-delete-block[_ngcontent-%COMP%]:active{transform:translateY(0);box-shadow:0 1px 2px #dc262633}.create-blog-container[_ngcontent-%COMP%] .content-section[_ngcontent-%COMP%] .content-blocks[_ngcontent-%COMP%] .content-block-card[_ngcontent-%COMP%] .content-section-header[_ngcontent-%COMP%] .btn-delete-block[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{width:16px;height:16px;transition:all .3s ease}.create-blog-container[_ngcontent-%COMP%] .content-section[_ngcontent-%COMP%] .content-blocks[_ngcontent-%COMP%] .content-block-card[_ngcontent-%COMP%] .content-type-selection[_ngcontent-%COMP%] .content-column[_ngcontent-%COMP%] .content-type-buttons[_ngcontent-%COMP%]{margin-bottom:1rem}.create-blog-container[_ngcontent-%COMP%] .content-section[_ngcontent-%COMP%] .content-blocks[_ngcontent-%COMP%] .content-block-card[_ngcontent-%COMP%] .content-type-selection[_ngcontent-%COMP%] .content-column[_ngcontent-%COMP%] .content-type-buttons[_ngcontent-%COMP%] .content-type-btn[_ngcontent-%COMP%]{background-color:#ddfbfb;border:1px solid #DDFBFB;color:#0f5252;border-radius:20px;padding:.375rem .75rem;font-weight:500;font-size:.875rem;transition:all .3s ease;min-width:auto;height:auto}.create-blog-container[_ngcontent-%COMP%] .content-section[_ngcontent-%COMP%] .content-blocks[_ngcontent-%COMP%] .content-block-card[_ngcontent-%COMP%] .content-type-selection[_ngcontent-%COMP%] .content-column[_ngcontent-%COMP%] .content-type-buttons[_ngcontent-%COMP%] .content-type-btn[_ngcontent-%COMP%]:active, .create-blog-container[_ngcontent-%COMP%] .content-section[_ngcontent-%COMP%] .content-blocks[_ngcontent-%COMP%] .content-block-card[_ngcontent-%COMP%] .content-type-selection[_ngcontent-%COMP%] .content-column[_ngcontent-%COMP%] .content-type-buttons[_ngcontent-%COMP%] .content-type-btn.active[_ngcontent-%COMP%]{background-color:#21b6b6;border-color:#21b6b6;color:#fff;transform:translateY(0)}.create-blog-container[_ngcontent-%COMP%] .content-section[_ngcontent-%COMP%] .content-blocks[_ngcontent-%COMP%] .content-block-card[_ngcontent-%COMP%] .content-type-selection[_ngcontent-%COMP%] .content-column[_ngcontent-%COMP%] .content-type-buttons[_ngcontent-%COMP%] .content-type-btn.text-type[_ngcontent-%COMP%], .create-blog-container[_ngcontent-%COMP%] .content-section[_ngcontent-%COMP%] .content-blocks[_ngcontent-%COMP%] .content-block-card[_ngcontent-%COMP%] .content-type-selection[_ngcontent-%COMP%] .content-column[_ngcontent-%COMP%] .content-type-buttons[_ngcontent-%COMP%] .content-type-btn.video-type[_ngcontent-%COMP%], .create-blog-container[_ngcontent-%COMP%] .content-section[_ngcontent-%COMP%] .content-blocks[_ngcontent-%COMP%] .content-block-card[_ngcontent-%COMP%] .content-type-selection[_ngcontent-%COMP%] .content-column[_ngcontent-%COMP%] .content-type-buttons[_ngcontent-%COMP%] .content-type-btn.audio-type[_ngcontent-%COMP%], .create-blog-container[_ngcontent-%COMP%] .content-section[_ngcontent-%COMP%] .content-blocks[_ngcontent-%COMP%] .content-block-card[_ngcontent-%COMP%] .content-type-selection[_ngcontent-%COMP%] .content-column[_ngcontent-%COMP%] .content-type-buttons[_ngcontent-%COMP%] .content-type-btn.photo-type[_ngcontent-%COMP%], .create-blog-container[_ngcontent-%COMP%] .content-section[_ngcontent-%COMP%] .content-blocks[_ngcontent-%COMP%] .content-block-card[_ngcontent-%COMP%] .content-type-selection[_ngcontent-%COMP%] .content-column[_ngcontent-%COMP%] .content-type-buttons[_ngcontent-%COMP%] .content-type-btn.quote-type[_ngcontent-%COMP%], .create-blog-container[_ngcontent-%COMP%] .content-section[_ngcontent-%COMP%] .content-blocks[_ngcontent-%COMP%] .content-block-card[_ngcontent-%COMP%] .content-type-selection[_ngcontent-%COMP%] .content-column[_ngcontent-%COMP%] .content-type-buttons[_ngcontent-%COMP%] .content-type-btn.table-type[_ngcontent-%COMP%], .create-blog-container[_ngcontent-%COMP%] .content-section[_ngcontent-%COMP%] .content-blocks[_ngcontent-%COMP%] .content-block-card[_ngcontent-%COMP%] .content-type-selection[_ngcontent-%COMP%] .content-column[_ngcontent-%COMP%] .content-type-buttons[_ngcontent-%COMP%] .content-type-btn.question-type[_ngcontent-%COMP%]{background-color:#ddfbfb;border-color:#ddfbfb;color:#0f5252}.create-blog-container[_ngcontent-%COMP%] .content-section[_ngcontent-%COMP%] .content-blocks[_ngcontent-%COMP%] .content-block-card[_ngcontent-%COMP%] .content-type-selection[_ngcontent-%COMP%] .content-column[_ngcontent-%COMP%] .content-type-buttons[_ngcontent-%COMP%] .content-type-btn[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{width:14px;
12height:14px}.create-blog-container[_ngcontent-%COMP%] .content-section[_ngcontent-%COMP%] .content-blocks[_ngcontent-%COMP%] .content-block-card[_ngcontent-%COMP%] .content-type-selection[_ngcontent-%COMP%] .content-columns-wrapper[_ngcontent-%COMP%]{display:grid;grid-template-columns:1fr 1fr;gap:2rem}.create-blog-container[_ngcontent-%COMP%] .content-section[_ngcontent-%COMP%] .content-blocks[_ngcontent-%COMP%] .content-block-card[_ngcontent-%COMP%] .content-type-selection[_ngcontent-%COMP%] .content-columns-wrapper[_ngcontent-%COMP%] .content-column[_ngcontent-%COMP%]{border:rgba(128,128,128,.102) 1px solid;background-color:#f8f9fa;padding:4px;border-radius:16px}.create-blog-container[_ngcontent-%COMP%] .content-section[_ngcontent-%COMP%] .content-blocks[_ngcontent-%COMP%] .content-block-card[_ngcontent-%COMP%] .content-type-selection[_ngcontent-%COMP%] .content-columns-wrapper[_ngcontent-%COMP%] .content-column[_ngcontent-%COMP%] .column-header[_ngcontent-%COMP%]{margin-bottom:1rem}.create-blog-container[_ngcontent-%COMP%] .content-section[_ngcontent-%COMP%] .content-blocks[_ngcontent-%COMP%] .content-block-card[_ngcontent-%COMP%] .content-type-selection[_ngcontent-%COMP%] .content-columns-wrapper[_ngcontent-%COMP%] .content-column[_ngcontent-%COMP%] .column-header[_ngcontent-%COMP%] .column-title[_ngcontent-%COMP%]{color:#374151;font-weight:500;font-size:.9rem}.create-blog-container[_ngcontent-%COMP%] .content-section[_ngcontent-%COMP%] .content-blocks[_ngcontent-%COMP%] .content-block-card[_ngcontent-%COMP%] .content-placeholder[_ngcontent-%COMP%]{background-color:#f8f9fa;border:2px dashed #dee2e6!important;text-align:center}.create-blog-container[_ngcontent-%COMP%] .content-section[_ngcontent-%COMP%] .content-blocks[_ngcontent-%COMP%] .content-block-card[_ngcontent-%COMP%] .content-placeholder[_ngcontent-%COMP%] h6[_ngcontent-%COMP%]{color:#6c757d;font-weight:600;margin-bottom:.5rem}.create-blog-container[_ngcontent-%COMP%] .content-section[_ngcontent-%COMP%] .content-blocks[_ngcontent-%COMP%] .content-block-card[_ngcontent-%COMP%] .content-placeholder[_ngcontent-%COMP%] .text-muted[_ngcontent-%COMP%]{font-size:.875rem;margin-bottom:1rem}.create-blog-container[_ngcontent-%COMP%] .content-section[_ngcontent-%COMP%] .content-blocks[_ngcontent-%COMP%] .content-block-card[_ngcontent-%COMP%] .content-placeholder[_ngcontent-%COMP%] .btn-danger[_ngcontent-%COMP%]{background-color:#dc3545;border-color:#dc3545}.create-blog-container[_ngcontent-%COMP%] .content-section[_ngcontent-%COMP%] .content-blocks[_ngcontent-%COMP%] .content-block-card[_ngcontent-%COMP%] .content-placeholder[_ngcontent-%COMP%] .btn-danger[_ngcontent-%COMP%]:hover{background-color:#c82333;border-color:#bd2130}.create-blog-container[_ngcontent-%COMP%] .content-section[_ngcontent-%COMP%] .content-blocks[_ngcontent-%COMP%] .content-block-card[_ngcontent-%COMP%] .added-sections[_ngcontent-%COMP%] .section-item[_ngcontent-%COMP%]{padding:.5rem;margin-bottom:.5rem;background-color:#f1f5f9;border-radius:6px;border:1px solid #e2e8f0}.create-blog-container[_ngcontent-%COMP%] .content-section[_ngcontent-%COMP%] .content-blocks[_ngcontent-%COMP%] .content-block-card[_ngcontent-%COMP%] .added-sections[_ngcontent-%COMP%] .section-item[_ngcontent-%COMP%] .section-type[_ngcontent-%COMP%]{font-weight:500;color:#374151}.create-blog-container[_ngcontent-%COMP%] .content-section[_ngcontent-%COMP%] .content-blocks[_ngcontent-%COMP%] .content-block-card[_ngcontent-%COMP%] .added-sections[_ngcontent-%COMP%] .section-item[_ngcontent-%COMP%] .btn-danger[_ngcontent-%COMP%]{padding:.25rem .5rem;font-size:.75rem}@media (max-width: 768px){.create-blog-container[_ngcontent-%COMP%]{padding:1rem}.create-blog-container[_ngcontent-%COMP%] .blog-header[_ngcontent-%COMP%]{flex-direction:column;gap:1rem}.create-blog-container[_ngcontent-%COMP%] .blog-header[_ngcontent-%COMP%] .blog-actions[_ngcontent-%COMP%]{flex-wrap:wrap;justify-content:center}.create-blog-container[_ngcontent-%COMP%] .content-section[_ngcontent-%COMP%] .content-blocks[_ngcontent-%COMP%] .content-block-card[_ngcontent-%COMP%] .content-block-header[_ngcontent-%COMP%], .create-blog-container[_ngcontent-%COMP%] .content-section[_ngcontent-%COMP%] .content-blocks[_ngcontent-%COMP%] .content-block-card[_ngcontent-%COMP%] .content-block-header[_ngcontent-%COMP%] .layout-actions[_ngcontent-%COMP%]{flex-direction:column;gap:1rem}.create-blog-container[_ngcontent-%COMP%] .content-section[_ngcontent-%COMP%] .content-blocks[_ngcontent-%COMP%] .content-block-card[_ngcontent-%COMP%] .content-type-selection[_ngcontent-%COMP%] .content-columns-wrapper[_ngcontent-%COMP%]{grid-template-columns:1fr;gap:1rem}}.form-group[_ngcontent-%COMP%] .form-label[_ngcontent-%COMP%]{font-weight:600;color:#374151;margin-bottom:.5rem}.form-group[_ngcontent-%COMP%] .form-control[_ngcontent-%COMP%], .form-group[_ngcontent-%COMP%] .form-select[_ngcontent-%COMP%]{border:1px solid #d1d5db;border-radius:8px;padding:.75rem 1rem;font-size:.875rem;transition:all .3s ease}.form-group[_ngcontent-%COMP%] .form-control[_ngcontent-%COMP%]:focus, .form-group[_ngcontent-%COMP%] .form-select[_ngcontent-%COMP%]:focus{border-color:#21b6b6;box-shadow:0 0 0 3px #21b6b61a}.form-group[_ngcontent-%COMP%] .form-control.is-invalid[_ngcontent-%COMP%], .form-group[_ngcontent-%COMP%] .form-select.is-invalid[_ngcontent-%COMP%]{border-color:#dc2626}.form-group[_ngcontent-%COMP%] .category-dropdown-wrapper[_ngcontent-%COMP%]{position:relative}.form-group[_ngcontent-%COMP%] .category-dropdown-wrapper[_ngcontent-%COMP%] .category-loading[_ngcontent-%COMP%]{position:absolute;right:12px;top:50%;transform:translateY(-50%);z-index:10}
12.form-group[_ngcontent-%COMP%] .invalid-feedback[_ngcontent-%COMP%]{font-size:.75rem;margin-top:.25rem}button[_ngcontent-%COMP%]{font-size:10px;font-weight:500;border-radius:4px;border:0;margin-bottom:.5rem;padding:.5rem 1rem;background-color:#21b6b6;color:#fff}.submit[_ngcontent-%COMP%]{font-size:16px;font-weight:500}.cancel-course-btn[_ngcontent-%COMP%]{background-color:#ddfbfb;color:#0f5252}.registeration-btn[_ngcontent-%COMP%]{background-color:#f3f4f6;color:#111827}input[type=checkbox][_ngcontent-%COMP%]{accent-color:#21b6b6}.cascade-btn[_ngcontent-%COMP%]{background-color:#f59e0b!important;color:#fff!important}.cascade-btn[_ngcontent-%COMP%]:hover:not(:disabled){background-color:#d97706!important}.cascade-btn[_ngcontent-%COMP%]:disabled{opacity:.6}"]})}}return t})();var Ou=(t,c,e)=>({batchId:t,levelId:c,sessionId:e}),Mu=()=>["../","flashcards"],Pu=t=>["/main/session-summary",t];function Su(t,c){if(t&1&&(a(0,"span",28),s(1),r()),t&2){let e=d(3);o(),b(" \xB7 ",e.sessionTitle,"")}}function wu(t,c){if(t&1&&(a(0,"span"),s(1),r(),h(2,Su,2,1,"span",28)),t&2){let e=d(2);o(),N("",e.courseLevel," \u2014 Session ",e.sessionOrder,""),o(),P(2,e.sessionTitle?2:-1)}}function Eu(t,c){if(t&1&&s(0),t&2){let e=d(2);b(" ",e.sessionTitle," ")}}function Iu(t,c){if(t&1&&(a(0,"h2",3),h(1,wu,3,3)(2,Eu,1,1),r()),t&2){let e=d();o(),P(1,e.courseLevel&&e.sessionOrder?1:2)}}function yu(t,c){if(t&1&&v(0,"app-assign-task-button",4),t&2){let e=d();p("resourceRef",ot(4,Ou,e.batchId,e.levelId,e.sessionId))("resourceLabel","Session content \u2014 "+(e.sessionTitle||e.sessionId))("courseId",e.courseId)("levelId",e.levelId)}}function ku(t,c){t&1&&(a(0,"span",11),I(),a(1,"svg",29),v(2,"polyline",30),r(),s(3),_(4,"translate"),r()),t&2&&(o(3),b(" ",m(4,1,"GROUP_CLASSES_ADMIN.RECORDING_AVAILABLE")," "))}function Au(t,c){if(t&1&&(a(0,"span",40),I(),a(1,"svg",41),v(2,"path",15)(3,"polyline",16),r(),s(4),r()),t&2){let e=d(4);o(4),b(" ",e.recordingInfo.fileName," ")}}function Tu(t,c){if(t&1&&(a(0,"span",40),I(),a(1,"svg",41),v(2,"circle",42)(3,"polyline",43),r(),s(4),r()),t&2){let e=d(4);o(4),b(" ",e.formatDuration(e.recordingInfo.duration)," ")}}function Ru(t,c){if(t&1&&(a(0,"span",40),s(1),r()),t&2){let e=d(4);o(),b(" ",e.formatFileSize(e.recordingInfo.fileSize)," ")}}function Du(t,c){if(t&1&&(a(0,"div",39),h(1,Au,5,1,"span",40)(2,Tu,5,1,"span",40)(3,Ru,2,1,"span",40),r()),t&2){let e=d(3);o(),P(1,e.recordingInfo.fileName?1:-1),o(),P(2,e.recordingInfo.duration?2:-1),o(),P(3,e.recordingInfo.fileSize?3:-1)}}function Bu(t,c){if(t&1&&(a(0,"div",37),v(1,"iframe",38),r(),h(2,Du,4,3,"div",39)),t&2){let e=d(2);o(),p("src",e.recordingEmbedUrl,ft),o(),P(2,e.recordingInfo?2:-1)}}function Lu(t,c){t&1&&v(0,"app-load-spinner",27),t&2&&p("isBig",!1)("invertColor",!0)}function Nu(t,c){t&1&&(I(),a(0,"svg",44),v(1,"path",45)(2,"polyline",46)(3,"polyline",47),r(),s(4),_(5,"translate")),t&2&&(o(4),b(" ",m(5,1,"GROUP_CLASSES_ADMIN.SAVE_DRIVE_LINK")," "))}function Vu(t,c){t&1&&v(0,"app-load-spinner",27),t&2&&p("isBig",!1)("invertColor",!0)}function Fu(t,c){t&1&&(I(),a(0,"svg",44),v(1,"polyline",49)(2,"path",50),r(),s(3),_(4,"translate")),t&2&&(o(3),b(" ",m(4,1,"GROUP_CLASSES_ADMIN.DELETE_DRIVE_LINK")," "))}function Uu(t,c){if(t&1){let e=M();a(0,"button",48),x("click",function(){C(e);let i=d(2);return f(i.deleteDriveUrl())}),h(1,Vu,1,2,"app-load-spinner",27)(2,Fu,5,3),r()}if(t&2){let e=d(2);p("disabled",e.deletingDriveUrl),o(),P(1,e.deletingDriveUrl?1:2)}}function Hu(t,c){if(t&1){let e=M();a(0,"div",14),h(1,Bu,3,2),a(2,"form",31)(3,"div",32),v(4,"input",33),_(5,"translate"),a(6,"button",34),x("click",function(){C(e);let i=d();return f(i.saveDriveUrl())}),h(7,Lu,1,2,"app-load-spinner",27)(8,Nu,6,3),r(),h(9,Uu,3,2,"button",35),r(),a(10,"small",36),s(11),_(12,"translate"),r()()()}if(t&2){let e,n=d();o(),P(1,n.recordingEmbedUrl?1:-1),o(),p("formGroup",n.contentForm),o(2),Be("placeholder",m(5,7,"GROUP_CLASSES_ADMIN.GOOG
12LE_DRIVE_VIDEO_PLACEHOLDER")),o(2),p("disabled",!((e=n.contentForm.get("driveUrl"))!=null&&e.value)||n.uploadingDriveUrl),o(),P(7,n.uploadingDriveUrl?7:8),o(2),P(9,n.hasRecording?9:-1),o(2),b(" ",m(12,9,"GROUP_CLASSES_ADMIN.GOOGLE_DRIVE_VIDEO_HINT")," ")}}function Gu(t,c){if(t&1&&(a(0,"span",17),s(1),r()),t&2){let e=d();o(),g(e.files.length)}}function qu(t,c){t&1&&v(0,"app-load-spinner",53),t&2&&p("isBig",!1)}function Wu(t,c){t&1&&v(0,"app-load-spinner",53),t&2&&p("isBig",!1)}function zu(t,c){t&1&&(I(),a(0,"svg",65),v(1,"polyline",66)(2,"path",67),r(),s(3),_(4,"translate")),t&2&&(o(3),b(" ",m(4,1,"LIVE_SESSIONS.REGENERATE_SLIDES")," "))}function Ku(t,c){if(t&1){let e=M();a(0,"button",64),x("click",function(){C(e);let i=d().$implicit,l=d(2);return f(l.regenerateSlides(i))}),h(1,Wu,1,1,"app-load-spinner",53)(2,zu,5,3),r()}if(t&2){let e=d(3);p("disabled",e.isRegeneratingSlides),o(),P(1,e.isRegeneratingSlides?1:2)}}function $u(t,c){if(t&1){let e=M();a(0,"div",54),v(1,"img",57),a(2,"a",58),s(3),r(),a(4,"span",59),s(5),r(),h(6,Ku,3,2,"button",60),a(7,"button",61),x("click",function(){let i=C(e).$index,l=d(2);return f(l.removeFile(i))}),I(),a(8,"svg",44),v(9,"line",62)(10,"line",63),r()()()}if(t&2){let e=c.$implicit,n=d(2);o(2),p("href",e.downloadUrl,le),o(),g(e.name),o(2),b("(",n.formatFileSize(e.fileSize),")"),o(),P(6,e.name.toLowerCase().endsWith(".pdf")?6:-1)}}function ju(t,c){t&1&&(a(0,"div",56),v(1,"app-load-spinner",53),a(2,"span"),s(3),_(4,"translate"),r()()),t&2&&(o(),p("isBig",!1),o(2),g(m(4,2,"GROUP_CLASSES_ADMIN.AI_PROCESSING_IN_PROGRESS")))}function Qu(t,c){if(t&1&&(a(0,"span",72),s(1),_(2,"translate"),r()),t&2){let e=d(3);o(),N("",e.aiProcessingResult==null?null:e.aiProcessingResult.flashcardCount," ",m(2,2,"GROUP_CLASSES_ADMIN.FLASHCARDS"),"")}}function Yu(t,c){if(t&1&&(a(0,"div",68),I(),a(1,"svg",69),v(2,"path",70)(3,"polyline",71),r(),F(),a(4,"span"),s(5),_(6,"translate"),r(),h(7,Qu,3,4,"span",72),r()),t&2){let e=d(2);o(5),g(m(6,2,"GROUP_CLASSES_ADMIN.AI_EMBEDDINGS_GENERATED")),o(2),P(7,e.aiProcessingResult!=null&&e.aiProcessingResult.flashcardCount?7:-1)}}function Xu(t,c){if(t&1&&(a(0,"div",73),I(),a(1,"svg",74),v(2,"circle",42)(3,"line",75)(4,"line",76),r(),F(),a(5,"span",77),s(6),r()()),t&2){let e=d(2);o(6),g(e.aiProcessingError)}}function Ju(t,c){if(t&1){let e=M();a(0,"button",78),x("click",function(){C(e);let i=d(2);return f(i.triggerAIProcessing(i.files[i.files.length-1].downloadUrl))}),I(),a(1,"svg",44),v(2,"circle",79)(3,"path",80),r(),s(4),_(5,"translate"),r(),F(),a(6,"small",81),s(7),_(8,"translate"),r()}if(t&2){let e=d(2);p("disabled",e.isProcessingAI),o(4),b(" ",m(5,3,"GROUP_CLASSES_ADMIN.GENERATE_AI_EMBEDDINGS")," "),o(3),g(m(8,5,"GROUP_CLASSES_ADMIN.AI_PROCESSING_HINT"))}}function Zu(t,c){if(t&1){let e=M();a(0,"div",14)(1,"form",31)(2,"div",51)(3,"input",52),x("change",function(i){C(e);let l=d();return f(l.onFileSelected(i))}),r(),h(4,qu,1,1,"app-load-spinner",53),r(),z(5,$u,11,4,"div",54,De),a(7,"div",55),h(8,ju,5,4,"div",56)(9,Yu,8,4)(10,Xu,7,1)(11,Ju,9,7),r()()()}if(t&2){let e=d();o(),p("formGroup",e.contentForm),o(3),P(4,e.uploadingImage?4:-1),o(),K(e.files),o(3),P(8,e.isProcessingAI?8:e.contentProcessed?9:e.aiProcessingError?10:e.files.length>0?11:-1)}}function e1(t,c){if(t&1&&(a(0,"span",17),s(1),r()),t&2){let e=d();o(),g(e.links.length)}}function t1(t,c){if(t&1){let e=M();a(0,"div",83),v(1,"input",85),_(2,"translate"),v(3,"input",86),_(4,"translate"),a(5,"button",61),x("click",function(){let i=C(e).$index,l=d(2);return f(l.removeLink(i))}),I(),a(6,"svg",44),v(7,"line",62)(8,"line",63),r()()()}if(t&2){let e=c.$index;p("formGroupName",e),o(),Be("placeholder",m(2,3,"GROUP_CLASSES_ADMIN.LINK_NAME")),o(2),Be("placeholder",m(4,5,"GROUP_CLASSES_ADMIN.LINK_URL"))}}function n1(t,c){if(t&1){let e=M();a(0,"div",14)(1,"form",31)(2,"div",82),z(3,t1,9,7,"div",83,De),r(),a(5,"button",84),x("click",function(){C(e);let i=d();return f(i.addLink())}),s(6),_(7,"translate"),r()()()}if(t&2){let e=d();o(),p("formGroup",e.contentForm),o(2),K(e.links.controls),o(3),b(" + ",m(7,2,"GROUP_CLASSES_ADMIN.ADD_LINK")," ")}}
12function i1(t,c){if(t&1&&(a(0,"span",17),s(1),r()),t&2){let e=d();o(),g(e.audios.length)}}function o1(t,c){t&1&&(v(0,"app-load-spinner",53),a(1,"p",94),s(2),_(3,"translate"),r()),t&2&&(p("isBig",!1),o(2),g(m(3,2,"GROUP_CLASSES_ADMIN.UPLOADING")))}function r1(t,c){t&1&&(I(),a(0,"svg",95),v(1,"path",96)(2,"polyline",97)(3,"line",98),r(),F(),a(4,"p",99),s(5),_(6,"translate"),r()),t&2&&(o(5),g(m(6,1,"GROUP_CLASSES_ADMIN.CLICK_TO_UPLOAD")))}function a1(t,c){if(t&1){let e=M();a(0,"div",92),x("click",function(){C(e),d();let i=pe(10);return f(i.click())}),h(1,o1,4,4)(2,r1,7,3),r(),v(3,"input",93),_(4,"translate")}if(t&2){let e=d().$index,n=d(2);o(),P(1,n.uploadingAudios[e]?1:2),o(2),Be("placeholder",m(4,2,"GROUP_CLASSES_ADMIN.AUDIO_URL"))}}function s1(t,c){t&1&&v(0,"app-load-spinner",53),t&2&&p("isBig",!1)}function l1(t,c){t&1&&(s(0),_(1,"translate")),t&2&&b(" ",m(1,1,"GROUP_CLASSES_ADMIN.UPLOAD_SUCCESS")," ")}function c1(t,c){t&1&&(s(0),_(1,"translate")),t&2&&b(" ",m(1,1,"GROUP_CLASSES_ADMIN.CHANGE_AUDIO")," ")}function d1(t,c){if(t&1){let e=M();a(0,"div",100),v(1,"app-audio-player",101),r(),a(2,"button",102),x("click",function(){C(e),d();let i=pe(10);return f(i.click())}),h(3,s1,1,1,"app-load-spinner",53)(4,l1,2,3)(5,c1,2,3),r()}if(t&2){let e,n=d(),i=n.$implicit,l=n.$index,u=d(2);o(),p("audioUrl",(e=i.get("url"))==null?null:e.value)("showAdvancedControls",!0)("isPremiumUser",!0)("showPlayBackSpeed",!0),o(),p("disabled",u.uploadingAudios[l]),o(),P(3,u.uploadingAudios[l]?3:u.uploadSuccessAudios[l]?4:5)}}function p1(t,c){if(t&1){let e=M();a(0,"div",88)(1,"div",89),v(2,"input",85),_(3,"translate"),a(4,"button",61),x("click",function(){let i=C(e).$index,l=d(2);return f(l.removeAudio(i))}),I(),a(5,"svg",44),v(6,"line",62)(7,"line",63),r()()(),F(),a(8,"div",90)(9,"input",91,0),x("change",function(i){let l=C(e).$index,u=d(2);return f(u.onAudioFileSelected(i,l))}),r(),h(11,a1,5,4)(12,d1,6,6),r()()}if(t&2){let e,n=c.$implicit,i=c.$index;p("formGroupName",i),o(2),Be("placeholder",m(3,3,"GROUP_CLASSES_ADMIN.AUDIO_NAME")),o(9),P(11,(e=n.get("url"))!=null&&e.value?12:11)}}function _1(t,c){if(t&1){let e=M();a(0,"div",14)(1,"form",31)(2,"div",87),z(3,p1,13,5,"div",88,De),r(),a(5,"button",84),x("click",function(){C(e);let i=d();return f(i.addAudio())}),s(6),_(7,"translate"),r()()()}if(t&2){let e=d();o(),p("formGroup",e.contentForm),o(2),K(e.audios.controls),o(3),b(" + ",m(7,2,"GROUP_CLASSES_ADMIN.ADD_AUDIO")," ")}}function m1(t,c){if(t&1&&(a(0,"span",17),s(1),r()),t&2){let e=d();o(),g(e.flashcardCount+e.gameCount)}}function g1(t,c){if(t&1&&(a(0,"span",72),s(1),r()),t&2){let e=d(2);o(),g(e.flashcardCount)}}function u1(t,c){t&1&&(a(0,"span",109),s(1,"0"),r())}function C1(t,c){if(t&1&&(a(0,"span",108),s(1),r()),t&2){let e=d(2);o(),g(e.gameCount)}}function f1(t,c){t&1&&(a(0,"span",109),s(1,"0"),r())}function h1(t,c){if(t&1&&(a(0,"div",14)(1,"div",103)(2,"div",104)(3,"div",105)(4,"span",106),s(5),_(6,"translate"),r(),h(7,g1,2,1,"span",72)(8,u1,2,0),r(),a(9,"a",107),s(10),_(11,"translate"),r()(),a(12,"div",104)(13,"div",105)(14,"span",106),s(15),_(16,"translate"),r(),h(17,C1,2,1,"span",108)(18,f1,2,0),r(),a(19,"a",107),s(20),_(21,"translate"),r()()()()),t&2){let e=d();o(5),g(m(6,8,"GROUP_CLASSES_ADMIN.FLASHCARDS")),o(2),P(7,e.flashcardCount>0?7:8),o(2),p("routerLink",Re(16,Mu)),o(),b(" ",m(11,10,"GROUP_CLASSES_ADMIN.MANAGE_FLASHCARDS")," "),o(5),g(m(16,12,"GROUP_CLASSES_ADMIN.CLASS_GAMES")),o(2),P(17,e.gameCount>0?17:18),o(2),p("routerLink",e.gamesManagerUrl),o(),b(" ",m(21,14,"GROUP_CLASSES_ADMIN.MANAGE_GAMES")," ")}}function x1(t,c){t&1&&(a(0,"span",72),s(1),_(2,"translate"),r()),t&2&&(o(),g(m(2,1,"GROUP_CLASSES_ADMIN.SUMMARY_LIVE")))}function b1(t,c){t&1&&(a(0,"span",109),s(1),_(2,"translate"),r()),t&2&&(o(),g(m(2,1,"GROUP_CLASSES_ADMIN.SUMMARY_DRAFT")))}function v1(t,c){t&1&&(s(0),_(1,"translate")),t&2&&b(" ",m(1,1,"GROUP_CLASSES_ADMIN.SUMMARY_STATE_PUBLISHED")," ")}function O1(t,c){t&1&&(s(0),_(1,"translate")),t&2&&b(" ",m(1,1,"GROUP_CLASSES_ADMIN.SUMMARY_STATE_DRAFT")," ")}function M1(t,c){t&1&&(s(0),_(1,"translate")),t&2&&b(" ",m(1,1,"GROUP_CLASSES_ADMIN.SUMMARY_STATE_NONE")," ")}function P1(t,c){if(t&1&&(a(0,"a",115),s(1),_(2,"translate"),r()),t&2){let e=d(3);p("routerLink",D(4,Pu,e.summaryUnitId)),o(),b(" ",m(2,2,"GROUP_CLASSES_ADMIN.PREVIEW_SUMMARY")," ")}}function S1(t,c){if(t&1){let e=M();a(0,"button",117),x("click",function(){C(e);let i=d(3);return f(i.unpublishSummary())}),s(1),_(2,"translate"),r()}if(t&2){let e=d(3);p("disabled",e.summaryBusy),o(),b(" ",m(2,2,"GROUP_CLASSES_ADMIN.UNPUBLISH_SUMMARY")," ")}}function w1(t,c){if(t&1){let e=M();a(0,"button",117),x("click",function(){C(e);let i=d(3);return f(i.publishSummary())}),s(1),_(2,"translate"),r()}if(t&2){let e=d(3);p("disabled",e.summaryBusy),o(),b(" ",m(2,2,"GROUP_CLASSES_ADMIN.PUBLISH_SUMMARY")," ")}}function E1(t,c){if(t&1&&(a(0,"div",14)(1,"div",112)(2,"p",113),h(3,v1,2,3)(4,O1,2,3)(5,M1,2,3),r(),a(6,"div",114),h(7,P1,3,6,"a",115)(8,S1,3,4,"button",116)(9,w1,3,4),r()()()),t&2){let e=d(2);o(3),P(3,e.isSummaryPublished?3:e.canPublishSummary?4:5),o(4),P(7,e.summaryStatus!=="none"?7:-1),o(),P(8,e.isSummaryPublished?8:e.canPublishSummary?9:-1)}}function I1(t,c){if(t&1){let e=M();a(0,"div",5)(1,"div",6),x("click",function(){C(e);let i=d();return f(i.toggleSection("summary"))}),a(2,"div",7),I(),a(3,"svg",8),v(4,"path",110)(5,"path",111),r(),F(),a(6,"h4"),s(7),_(8,"translate"),r(),h(9,x1,3,3,"span",72)(10,b1,3,3),r(),I(),a(11,"svg",12),v(12,"polyline",13),r()(),h(13,E1,10,3,"div",14),r()}if(t&2){let e=d();o(7),g(m(8,5,"GROUP_CLASSES_ADMIN.SESSION_SUMMARY")),o(2),P(9,e.isSummaryPublished?9:e.canPublishSummary?10:-1),o(2),y("open",e.isSectionExpanded("summary")),o(2),P(13,e.isSectionExpanded("summary")?13:-1)}}function y1(t,c){t&1&&v(0,"app-load-spinner",27),t&2&&p("isBig",!1)("invertColor",!0)}function k1(t,c){t&1&&(s(0),_(1,"translate")),t&2&&b(" ",m(1,1,"GROUP_CLASSES_ADMIN.SAVE_CLASS_MATERIAL")," ")}var oa=(()=>{class t{constructor(e,n,i,l,u,O,E,V,L,J,Z){this.fb=e,this.breadcrumbService=n,this.toaster=i,this.route=l,this.localStorageService=u,this.cohortService=O,this.classGameService=E,this.studyPlanApi=V,this.summaryService=L,this.sanitizer=J,this.translate=Z,this.destroy$=new ve,this.batchId="",this.levelId="",this.courseId="",this.sessionId=null,this.files=[],this.sessionTitle="",this.sessionOrder=null,this.courseLevel="",this.isFetching=!1,this.flashcardCount=0,this.gameCount=0,this.recordingInfo=null,this.videoUrl=null,this.recordingEmbedUrl=null,this.isRegeneratingSlides=!1,this.contentProcessed=!1,this.contentProcessedAt=null,this.isProcessingAI=!1,this.aiProcessingError=null,this.aiProcessingResult=null,this.summaryUnitId="",this.summaryStatus="none",this.summaryBusy=!1,this.expandedSections=new Set(["recording","materials","summary"]),this.uploadingImage=!1,this.uploadingDriveUrl=!1,this.deletingDriveUrl=!1,this.uploadingAudios={},this.uploadSuccessAudios={},this.isLoading=!1,this.initializeForm()}
12ngOnInit(){this.batchId=this.route.snapshot.paramMap.get("batchId"),this.levelId=this.route.snapshot.paramMap.get("levelId"),this.sessionId=this.route.snapshot.paramMap.get("sessionId"),this.resolveCourseId()}ngOnDestroy(){this.destroy$.next(),this.destroy$.complete()}toggleSection(e){this.expandedSections.has(e)?this.expandedSections.delete(e):this.expandedSections.add(e)}isSectionExpanded(e){return this.expandedSections.has(e)}get hasRecording(){return!!(this.recordingInfo?.driveFileId||this.videoUrl||this.contentForm.get("driveUrl")?.value)}get recordingDisplayUrl(){if(this.videoUrl)return this.videoUrl;if(this.recordingInfo?.webViewLink)return this.recordingInfo.webViewLink;let e=this.contentForm.get("driveUrl")?.value;return e||null}openRecording(){let e=this.recordingInfo?.driveFileId;e?window.open(`https://drive.google.com/file/d/${e}/view`,"_blank"):this.recordingDisplayUrl&&window.open(this.recordingDisplayUrl,"_blank")}formatDuration(e){e=Number(e);let n=Math.floor(e/3600),i=Math.floor(e%3600/60),l=e%60;return n>0?`${n}:${String(i).padStart(2,"0")}:${String(l).padStart(2,"0")}`:`${i}:${String(l).padStart(2,"0")}`}formatFileSize(e){return e=Number(e),e>=1073741824?(e/1073741824).toFixed(1)+" GB":e>=1048576?(e/1048576).toFixed(1)+" MB":e>=1024?(e/1024).toFixed(1)+" KB":e+" B"}buildEmbedUrl(){let e=this.recordingInfo?.driveFileId;if(e){let n=`https://drive.google.com/file/d/${e}/preview`;this.recordingEmbedUrl=this.sanitizer.bypassSecurityTrustResourceUrl(n)}else{let n=this.contentForm.get("driveUrl")?.value||this.videoUrl;if(n){let i=this.extractDriveFileId(n);if(i){let l=`https://drive.google.com/file/d/${i}/preview`;this.recordingEmbedUrl=this.sanitizer.bypassSecurityTrustResourceUrl(l)}}}}extractDriveFileId(e){if(!e)return null;let n=e.match(/\/d\/([a-zA-Z0-9_-]+)/);return n?n[1]:null}resolveCourseId(){this.isFetching=!0,this.cohortService.getBatchDetails(this.batchId).pipe(U(this.destroy$)).subscribe({next:e=>{let l=((e.data||e).levels||[]).find(u=>u.levelId===this.levelId||u.id===this.levelId);l&&l.courseId?(this.courseId=l.courseId,this.setBreadcrumbItems(),this.loadSessionContent(),this.loadFlashcardCount(),this.loadGameCount()):(this.isFetching=!1,this.toaster.error(this.t("GROUP_CLASSES_ADMIN.FAILED_RESOLVE_COURSE")))},error:()=>{this.isFetching=!1,this.toaster.error(this.t("GROUP_CLASSES_ADMIN.FAILED_LOAD_BATCH_DETAILS"))}})}initializeForm(){this.contentForm=this.fb.group({driveUrl:[""],classMaterials:this.fb.array([]),links:this.fb.array([]),audios:this.fb.array([])})}setBreadcrumbItems(){let e="Session Content";this.courseLevel&&this.sessionOrder?e=`${this.courseLevel} \u2014 Session ${this.sessionOrder}`:this.courseLevel?e=`${this.courseLevel} \u2014 Session Content`:this.sessionOrder&&(e=`Session ${this.sessionOrder}`),this.breadcrumbService.setItems([{label:"SIDENAV.COHORTS",routerLink:["/main/dashboard/cohorts/batches"]},{label:"Sessions",routerLink:["/main/dashboard/cohorts/batches",this.batchId,"levels",this.levelId,"sessions"]},{label:e}])}onFileSelected(e){return ye(this,null,function*(){let n=e.target.files[0];if(n){this.uploadingImage=!0;try{yield this.uploadAndSaveClassMaterial(n),this.loadSessionContent(),e.target.value=""}catch(i){this.toaster.error(this.extractErrorMessage(i,this.t("GROUP_CLASSES_ADMIN.FAILED_UPLOAD_CLASS_MATERIAL")))}finally{this.uploadingImage=!1}}})}getUploadSlideMessage(e){return e?.data?.slideError?` ${this.t("GROUP_CLASSES_ADMIN.CLASS_MATERIAL_UPLOADED_SLIDES_FAILED",{error:e.data.slideError})}`:e?.data?.slideCount?` ${this.t("GROUP_CLASSES_ADMIN.SLIDES_REGENERATED_COUNT",{count:e.data.slideCount})}`:""}saveUploadedClassMaterial(e,n){return ye(this,null,function*(){yield zn(this.cohortService.saveGoldenLessonContent(this.sessionId,this.contentForm.getRawValue()));let i=e.name.toLowerCase().endsWith(".pdf")?this.getUploadSlideMessage(n):"";this.toaster.success(`${this.t("GROUP_CLASSES_ADMIN.CLASS_MATERIAL_UPLOADED_SAVED")}${i}`)})}uploadAndSaveClassMaterial(e){return ye(this,null,function*(){if(!this.sessionId)throw new Error(this.t("GROUP_CLASSES_ADMIN.SESSION_NOT_READY_UPLOAD"));let n=yield zn(this.cohortService.uploadGoldenLessonFile(this.sessionId,e)),i={name:n.data.name,downloadUrl:n.data.link,fileSize:n.data.size};this.upsertClassMaterial(i),yield this.saveUploadedClassMaterial(i,n)})}upsertClassMaterial(e){let n=this.files.findIndex(i=>i.name===e.name);if(n>=0){this.files[n]=e,this.classMaterials.setControl(n,this.fb.group(e));return}this.files.push(e),this.classMaterials.push(this.fb.group(e))}get classMaterials(){return this.contentForm.get("classMaterials")}removeFile(e){this.classMaterials.removeAt(e),this.files.splice(e,1)}saveDriveUrl(){let e=this.contentForm.get("driveUrl")?.value;if(!e){this.toaster.error(this.t("GROUP_CLASSES_ADMIN.VALID_DRIVE_LINK_REQUIRED"));return}let n=this.cleanDriveUrl(e);this.uploadingDriveUrl=!0;let i="",l={courseId:this.courseId,sessionId:this.sessionId,driveUrl:n};this.cohortService.saveRecordingLink(l).pipe(U(this.destroy$)).subscribe({next:u=>{i=u.message,this.buildEmbedUrl()},complete:()=>{this.uploadingDriveUrl=!1,this.toaster.success(this.t("GROUP_CLASSES_ADMIN.SUCCESS"),i)},error:()=>{this.uploadingDriveUrl=!1}})}deleteDriveUrl(){this.deletingDriveUrl=!0;let e="",n={courseId:this.courseId,sessionId:this.sessionId};this.cohortService.deleteRecordingLink(n).pipe(U(this.destroy$)).subscribe({next:i=>{e=i.message,this.contentForm.get("driveUrl")?.setValue(""),this.videoUrl=null,this.recordingInfo=null,this.recordingEmbedUrl=null},complete:()=>{this.deletingDriveUrl=!1,this.toaster.success(this.t("GROUP_CLASSES_ADMIN.SUCCESS"),e)},error:()=>{this.deletingDriveUrl=!1}})}cleanDriveUrl(e){let n=e.indexOf("/view");return n!==-1?e.substring(0,n+5):e}get links(){return this.contentForm.get("links")}addLink(){this.links.push(this.fb.group({name:["",S.required],url:["",[S.required,S.pattern(/^https?:\/\//)]]}))}removeLink(e){this.links.removeAt(e)}get audios(){return this.contentForm.get("audios")}addAudio(){this.audios.push(this.fb.group({name:["",S.required],url:["",[S.required,S.pattern(/^https?:\/\//)]],audioId:[""]}))}removeAudio(e){this.audios.removeAt(e)}onAudioFileSelected(e,n){let i="",l=e.target.files[0];if(!l)return;if(!["audio/mpeg","audio/mp3","audio/wav","audio/ogg","audio/m4a"].includes(l.type)&&!l.name.match(/\.(mp3|wav|ogg|m4a)$/i)){this.toaster.error(this.t("GROUP_CLASSES_ADMIN.VALID_AUDIO_FILE_REQUIRED"));return}let O=new FormData;O.append("audio",l),this.uploadingAudios[n]=!0,this.uploadSuccessAudios[n]=!1,this.cohortService.uploadCourseMaterialAudio(O).pipe(U(this.destroy$)).subscribe({next:E=>{let V=E.data.audioUrl,L=E.data.audioId,J=this.audios.at(n);J.get("url")?.setValue(V),J.get("audioId")?.setValue(L),i=E.message},complete:()=>{this.uploadingAudios[n]=!1,this.uploadSuccessAudios[n]=!0,this.toaster.success(this.t("GROUP_CLASSES_ADMIN.SUCCESS"),i),setTimeout(()=>{this.uploadSuccessAudios[n]=!1},2e3)},error:()=>{this.uploadingAudios[n]=!1,this.uploadSuccessAudios[n]=!1}})}onSubmit(){this.isLoading=!0;let e="";
12if(this.contentForm.invalid){this.contentForm.markAllAsTouched(),this.isLoading=!1,this.toaster.error(this.t("GROUP_CLASSES_ADMIN.SAVE_INVALID"));return}let n=this.contentForm.value;this.cohortService.saveGoldenLessonContent(this.sessionId,n).pipe(U(this.destroy$)).subscribe({next:i=>{e=i.message},complete:()=>{this.isLoading=!1,this.toaster.success(this.t("GROUP_CLASSES_ADMIN.SUCCESS"),e)},error:i=>{this.isLoading=!1,this.toaster.error(i?.error?.error||this.t("GROUP_CLASSES_ADMIN.SAVE_ERROR"))}})}get canPublishSummary(){return this.summaryStatus==="draft"}get isSummaryPublished(){return this.summaryStatus==="published"}publishSummary(){this._setSummaryPublication(!0)}unpublishSummary(){this._setSummaryPublication(!1)}resolveSummary(){!this.courseLevel||!this.sessionOrder||this.studyPlanApi.getSessionShortcut(this.courseLevel,this.sessionOrder).pipe(U(this.destroy$)).subscribe({next:e=>{this.summaryUnitId=e?.unit?.id||"",this.loadSummaryStatus()},error:()=>{this.summaryUnitId=""}})}loadSummaryStatus(){this.summaryUnitId&&this.summaryService.getSessionSummary(this.summaryUnitId).pipe(U(this.destroy$)).subscribe({next:e=>{this.summaryStatus=this._summaryStatus(e)},error:()=>{this.summaryStatus="none"}})}_summaryStatus(e){return e?.status==="published"?"published":e?.status==="draft"?"draft":"none"}_setSummaryPublication(e){!this.summaryUnitId||this.summaryBusy||(this.summaryBusy=!0,this.summaryService.setPublication(this.summaryUnitId,e).pipe(U(this.destroy$)).subscribe({next:()=>this._afterPublication(e),error:()=>this._afterPublicationError()}))}_afterPublication(e){this.summaryBusy=!1,this.summaryStatus=e?"published":"draft",this.toaster.success(this.t(e?"GROUP_CLASSES_ADMIN.SUMMARY_PUBLISHED":"GROUP_CLASSES_ADMIN.SUMMARY_UNPUBLISHED"))}_afterPublicationError(){this.summaryBusy=!1,this.toaster.error(this.t("GROUP_CLASSES_ADMIN.SUMMARY_PUBLISH_FAILED"))}loadSessionContent(){this.sessionId&&(this.isFetching=!0,this.cohortService.getGoldenLessonContent(this.sessionId).pipe(U(this.destroy$)).subscribe({next:e=>{this.patchContent(e.data)},error:()=>{this.toaster.error(this.t("GROUP_CLASSES_ADMIN.FAILED_LOAD_SESSION_CONTENT"))},complete:()=>{this.isFetching=!1}}))}patchContent(e){if(e){if(e.sessionTitle){let n=document.documentElement.lang||"fr";this.sessionTitle=typeof e.sessionTitle=="object"?e.sessionTitle[n]||e.sessionTitle.fr||e.sessionTitle.en||"":e.sessionTitle}this.sessionOrder=e.sessionOrder??null,this.courseLevel=e.courseLevel||"",this.setBreadcrumbItems(),this.resolveSummary(),this.contentForm.get("driveUrl")?.setValue(e.driveUrl||""),this.videoUrl=e.videoUrl||null,this.recordingInfo=e.recording||null,this.buildEmbedUrl(),this.classMaterials.clear(),this.files=[],Array.isArray(e.classMaterials)&&e.classMaterials.forEach(n=>{let i={name:n.name,downloadUrl:n.downloadUrl,fileSize:n.fileSize};this.classMaterials.push(this.fb.group(i)),this.files.push(i)}),this.links.clear(),Array.isArray(e.links)&&e.links.forEach(n=>{this.links.push(this.fb.group({name:n.name,url:n.url}))}),this.audios.clear(),Array.isArray(e.audios)&&e.audios.forEach(n=>{this.audios.push(this.fb.group({name:n.name,url:n.url,audioId:n.audioId||""}))}),this.contentProcessed=e.contentProcessed||!1,this.contentProcessedAt=e.contentProcessedAt||null,this.links.length>0&&this.expandedSections.add("links"),this.audios.length>0&&this.expandedSections.add("audios")}}get gamesManagerUrl(){return`/main/dashboard/live-sessions/group-classes/${this.courseId}/sessions/${this.sessionId}/games`}loadGameCount(){!this.sessionId||!this.courseId||this.classGameService.listGames(this.courseId,this.sessionId).pipe(U(this.destroy$)).subscribe({next:e=>{this.gameCount=e.data?.length||0},error:()=>{this.gameCount=0}})}loadFlashcardCount(){this.sessionId&&this.cohortService.getSessionFlashcards(this.courseId,this.sessionId).pipe(U(this.destroy$)).subscribe({next:e=>{this.flashcardCount=e.data?.length||0},error:()=>{this.flashcardCount=0}})}triggerAIProcessing(e){this.isProcessingAI=!0,this.aiProcessingError=null,this.aiProcessingResult=null;let n={courseId:this.courseId,sessionId:this.sessionId,materialUrl:e,domain:"french"};this.cohortService.processSessionMaterial(n).pipe(U(this.destroy$)).subscribe({next:i=>{i.success&&(this.contentProcessed=!0,this.aiProcessingResult={summaryDocId:i.summaryDocId,flashcardCount:i.flashcardCount})},error:i=>{this.isProcessingAI=!1,this.aiProcessingError=i?.error?.error||this.t("GROUP_CLASSES_ADMIN.AI_PROCESSING_FAILED"),this.toaster.error(this.aiProcessingError)},complete:()=>{this.isProcessingAI=!1,this.aiProcessingResult&&this.toaster.success(this.t("GROUP_CLASSES_ADMIN.AI_EMBEDDINGS_GENERATED_COUNT",{count:this.aiProcessingResult.flashcardCount}))}})}regenerateSlides(e){!this.sessionId||this.isRegeneratingSlides||(this.isRegeneratingSlides=!0,this.regenerateSlidesForFile(e).pipe(U(this.destroy$)).subscribe({next:n=>{this.toaster.success(this.t("GROUP_CLASSES_ADMIN.SLIDES_REGENERATED_COUNT",{count:n.data?.slideCount||0}))},error:n=>{this.toaster.error(this.extractErrorMessage(n,this.t("GROUP_CLASSES_ADMIN.FAILED_REGENERATE_SLIDES"))),this.isRegeneratingSlides=!1},complete:()=>{this.isRegeneratingSlides=!1}}))}regenerateSlidesForFile(e){let n=e?.downloadUrl?{name:e.name,downloadUrl:e.downloadUrl}:{};return this.cohortService.regenerateGoldenLessonSlides(this.sessionId,n)}extractErrorMessage(e,n){return e?.error?.message||e?.error?.error||e?.message||e?.error||n}t(e,n){return this.translate.instant(e,n)}trackByIndex(e){return e}static{this.\u0275fac=function(n){return new(n||t)(w(nt),w(Lt),w(he),w(te),w(We),w(de),w(Fo),w(Ao),w(Uo),w(At),w(ze))}}static{this.\u0275cmp=H({type:t,selectors:[["app-cohort-session-content"]],decls:76,vars:43,consts:[["audioFileInput",""],[1,"session-content-container"],[1,"page-title-row"],[1,"page-title"],["resourceType","cohort_session_content",3,"resourceRef","resourceLabel","courseId","levelId"],[1,"content-section"],[1,"section-header",3,"click"],[1,"section-title-row"],["xmlns","http://www.w3.org/2000/svg","width","18","height","18","viewBox","0 0 24 24","fill","none","stroke","currentColor","stroke-width","2","stroke-linecap","round","stroke-linejoin","round"],["points","23 7 16 12 23 17 23 7"],["x","1","y","5","width","15","height","14","rx","2","ry","2"],[1,"badge-available"],["xmlns","http://www.w3.org/2000/svg","width","16","height","16","viewBox","0 0 24 24","fill","none","stroke","currentColor","stroke-width","2",1,"chevron"],["points","6 9 12 15 18 9"],[1,"section-body"],["d","M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"],["points","14 2 14 8 20 8"],[1,"badge-count"],["d","M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"],["d","M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"],["d","M9 18V5l12-2v13"],["cx","6","cy","18","r","3"],["cx","18","cy","16","r","3"],["x","2","y","4","width","20","height","16","rx","2"],["d","M2 8h20"],[1,"save-bar"],[1,"btn-save",3,"click","disabled"],[3,"isBig","invertColor"],[1,"session-subtitle"],["xmlns","http://www.w3.org/2000/svg","width","12","height","12","viewBox","0 0 24 24","fill","none","stroke","currentColor","stroke-width","3","stroke-linecap","round","stroke-linejoin","round"],["points","20 6 9 17 4 12"],[3,"formGroup"],[1,"drive-url-row"],["type","url","formControlName","driveUrl",1,"form-control",3,"placeholder"],["type","button",1,"btn-save-inline",3,"click","disabled"],["type","button",1,"btn-delete-inline",3,"disabled"],[1,"text-muted","d-block","mt-1"],[1,"video-player-wrapper"],["width","100%","height","100%","frameborder","0","allow","autoplay; encrypted-media","allowfullscreen","",3,"src"],[1,"recording-meta"],[1,"meta-chip"],["xmlns","http://www.w3.org/2000/svg","width","12","height","12","viewBox","0 0 24 24","fill","none","stroke","currentColor","stroke-width","2","stroke-linecap","round","stroke-linejoin","round"],["cx","12","cy","12","r","10"],["points","12 6 12 12 16 14"],["xmlns","http://www.w3.org/2000/svg","width","14","height","14","viewBox","0 0 24 24","fill","none","stroke","currentColor","stroke-width","2","stroke-linecap","round","stroke-linejoin","round"],["d","M19 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11l5 5v11a2 2 0 0 1-2 2z"],["points","17 21 17 13 7 13 7 21"],["points","7 3 7 8 15 8"],["type","button",1,"btn-delete-inline",3,"click","disabled"],["points","3 6 5 6 21 6"],["d","M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2"],[1,"upload-row"],["type","file","accept",".pdf,.doc,.docx",1,"form-control",3,"change"],[3,"isBig"],[1,"file-item"],[1,"ai-section"],[1,"ai-status","processing"],["src","assets/images/landing/new-landing/upload-resume.svg","alt","file","width","24"],["target","_blank",1,"file-name",3,"href"],[1,"file-size"],["type","button",1,"btn-regenerate-slides",3,"disabled"],["type","button",1,"btn-remove",3,"click"],["x1","18","y1","6","x2","6","y2","18"],["x1","6","y1","6","x2","18","y2","18"],["type","button",1,"btn-regenerate-slides",3,"click","disabled"],["xmlns","http://www.w3.org/2000/svg","width","13","height","13","viewBox","0 0 24 24","fill","none","stroke","currentColor","stroke-width","2","stroke-linecap","round","stroke-linejoin","round"],["points","1 4 1 10 7 10"],["d","M3.51 15a9 9 0 1 0 .49-3.75"],[1,"ai-status","success"],["xmlns","http://www.w3.org/2000/svg","width","16","height","16","viewBox","0 0 24 24","fill","none","stroke","#10b981","stroke-width","2","stroke-linecap","round","stroke-linejoin","round"],["d","M22 11.08V12a10 10 0 1 1-5.93-9.14"],["points","22 4 12 14.01 9 11.01"],[1,"badge-count","badge-green"],[1,"ai-status","error"],["xmlns","http://www.w3.org/2000/svg","width","16","height","16","viewBox","0 0 24 24","fill","none","stroke","#dc2626","stroke-width","2","stroke-linecap","round","stroke-linejoin","round"],["x1","15","y1","9","x2","9","y2","15"],["x1","9","y1","9","x2","15","y2","15"],[1,"text-danger"],["type","button",1,"btn-ai",3,"click","disabled"],["cx","12","cy","12","r","3"],["d","M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1 0 2.83 2 2 0 0 1-2.83 0l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-2 2 2 2 0 0 1-2-2v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83 0 2 2
120 0 1 0-2.83l.06-.06A1.65 1.65 0 0 0 4.68 15a1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1-2-2 2 2 0 0 1 2-2h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 0-2.83 2 2 0 0 1 2.83 0l.06.06A1.65 1.65 0 0 0 9 4.68a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 2-2 2 2 0 0 1 2 2v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 0 2 2 0 0 1 0 2.83l-.06.06A1.65 1.65 0 0 0 19.4 9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 2 2 2 2 0 0 1-2 2h-.09a1.65 1.65 0 0 0-1.51 1z"],[1,"text-muted"],["formArrayName","links"],[1,"link-row",3,"formGroupName"],["type","button",1,"btn-add",3,"click"],["type","text","formControlName","name",1,"form-control",3,"placeholder"],["type","url","formControlName","url",1,"form-control","flex-2",3,"placeholder"],["formArrayName","audios"],[1,"audio-upload-card",3,"formGroupName"],[1,"audio-card-header"],[1,"audio-upload-section"],["type","file","accept","audio/*",2,"display","none",3,"change"],[1,"upload-area",3,"click"],["type","url","formControlName","url",1,"form-control","mt-2",3,"placeholder"],[1,"text-muted","small"],["xmlns","http://www.w3.org/2000/svg","width","32","height","32","viewBox","0 0 24 24","fill","none","stroke","#21b6b6","stroke-width","1.5","stroke-linecap","round","stroke-linejoin","round"],["d","M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"],["points","17 8 12 3 7 8"],["x1","12","y1","3","x2","12","y2","15"],[1,"upload-text"],[1,"audio-preview"],[3,"audioUrl","showAdvancedControls","isPremiumUser","showPlayBackSpeed"],["type","button",1,"btn-change-audio",3,"click","disabled"],[1,"extras-grid"],[1,"extras-card"],[1,"extras-card-header"],[1,"extras-label"],[1,"btn-manage",3,"routerLink"],[1,"badge-count","badge-blue"],[1,"badge-count","badge-gray"],["d","M2 3h6a4 4 0 0 1 4 4v14a3 3 0 0 0-3-3H2z"],["d","M22 3h-6a4 4 0 0 0-4 4v14a3 3 0 0 1 3-3h7z"],[1,"summary-publish-row"],[1,"summary-publish-state"],[1,"summary-publish-actions"],["target","_blank",1,"btn-manage","btn-outline",3,"routerLink"],[1,"btn-manage",3,"disabled"],[1,"btn-manage",3,"click","disabled"]],template:function(n,i){n&1&&(a(0,"div",1)(1,"div",2),h(2,Iu,3,1,"h2",3)(3,yu,1,8,"app-assign-task-button",4),r(),a(4,"div",5)(5,"div",6),x("click",function(){return i.toggleSection("recording")}),a(6,"div",7),I(),a(7,"svg",8),v(8,"polygon",9)(9,"rect",10),r(),F(),a(10,"h4"),s(11),_(12,"translate"),r(),h(13,ku,5,3,"span",11),r(),I(),a(14,"svg",12),v(15,"polyline",13),r()(),h(16,Hu,13,11,"div",14),r(),F(),a(17,"div",5)(18,"div",6),x("click",function(){return i.toggleSection("materials")}),a(19,"div",7),I(),a(20,"svg",8),v(21,"path",15)(22,"polyline",16),r(),F(),a(23,"h4"),s(24),_(25,"translate"),r(),h(26,Gu,2,1,"span",17),r(),I(),a(27,"svg",12),v(28,"polyline",13),r()(),h(29,Zu,12,3,"div",14),r(),F(),a(30,"div",5)(31,"div",6),x("click",function(){return i.toggleSection("links")}),a(32,"div",7),I(),a(33,"svg",8),v(34,"path",18)(35,"path",19),r(),F(),a(36,"h4"),s(37),_(38,"translate"),r(),h(39,e1,2,1,"span",17),r(),I(),a(40,"svg",12),v(41,"polyline",13),r()(),h(42,n1,8,4,"div",14),r(),F(),a(43,"div",5)(44,"div",6),x("click",function(){return i.toggleSection("audios")}),a(45,"div",7),I(),a(46,"svg",8),v(47,"path",20)(48,"circle",21)(49,"circle",22),r(),F(),a(50,"h4"),s(51),_(52,"translate"),r(),h(53,i1,2,1,"span",17),r(),I(),a(54,"svg",12),v(55,"polyline",13),r()(),h(56,_1,8,4,"div",14),r(),F(),a(57,"div",5)(58,"div",6),x("click",function(){return i.toggleSection("extras")}),a(59,"div",7),I(),a(60,"svg",8),v(61,"rect",23)(62,"path",24),r(),F(),a(63,"h4"),s(64),_(65,"translate"),_(66,"translate"),r(),h(67,m1,2,1,"span",17),r(),I(),a(68,"svg",12),v(69,"polyline",13),r()(),h(70,h1,22,17,"div",14),r(),h(71,I1,14,7,"div",5),F(),a(72,"div",25)(73,"button",26),x("click",function(){return i.onSubmit()}),h(74,y1,1,2,"app-load-spinner",27)(75,k1,2,3),r()()()),n&2&&(o(2),P(2,i.sessionTitle||i.courseLevel&&i.sessionOrder?2:-1),o(),P(3,i.sessionId?3:-1),o(8),g(m(12,31,"GROUP_CLASSES_ADMIN.RECORDING_SECTION")),o(2),P(13,i.hasRecording?13:-1),o(),y("open",i.isSectionExpanded("recording")),o(2),P(16,i.isSectionExpanded("recording")?16:-1),o(8),g(m(25,33,"GROUP_CLASSES_ADMIN.UPLOAD_MATERIALS")),o(2),P(26,i.files.length>0?26:-1),o(),y("open",i.isSectionExpanded("materials")),o(2),P(29,i.isSectionExpanded("materials")?29:-1),o(8),g(m(38,35,"GROUP_CLASSES_ADMIN.ADD_LINKS")),o(2),P(39,i.links.length>0?39:-1),o(),y("open",i.isSectionExpanded("links")),o(2),P(42,i.isSectionExpanded("links")?42:-1),o(9),g(m(52,37,"GROUP_CLASSES_ADMIN.ADD_AUDIOS")),o(2),P(53,i.audios.length>0?53:-1),o(),y("open",i.isSectionExpanded("audios")),o(2),P(56,i.isSectionExpanded("audios")?56:-1),o(8),N("",m(65,39,"GROUP_CLASSES_ADMIN.FLASHCARDS")," & ",m(66,41,"GROUP_CLASSES_ADMIN.CLASS_GAMES"),""),o(3),P(67,i.flashcardCount>0||i.gameCount>0?67:-1),o(),y("open",i.isSectionExpanded("extras")),o(2),P(70,i.isSectionExpanded("extras")?70:-1),o(),P(71,i.summaryUnitId?71:-1),o(2),p("disabled",i.isLoading||i.isFetching),o(),P(74,i.isLoading||i.isFetching?74:75))},dependencies:[je,ie,Y,$e,et,tt,ct,Dt,Tt,_n,dt,_t,j],styles:[".session-content-container[_ngcontent-%COMP%]{max-width:1000px;margin:0 auto;padding:1.5rem 1rem}.session-content-container[_ngcontent-%COMP%] p[_ngcontent-%COMP%], .session-content-container[_ngcontent-%COMP%] h1[_ngcontent-%COMP%], .session-content-container[_ngcontent-%COMP%] h2[_ngcontent-%COMP%], .session-content-container[_ngcontent-%COMP%] h3[_ngcontent-%COMP%], .session-content-container[_ngcontent-%COMP%] h4[_ng
12content-%COMP%], .session-content-container[_ngcontent-%COMP%] h5[_ngcontent-%COMP%], .session-content-container[_ngcontent-%COMP%] h6[_ngcontent-%COMP%]{margin-bottom:0}.session-content-container[_ngcontent-%COMP%] .page-title-row[_ngcontent-%COMP%]{display:flex;align-items:flex-start;justify-content:space-between;gap:.75rem;flex-wrap:wrap}@media (max-width: 768px){.session-content-container[_ngcontent-%COMP%] .page-title-row[_ngcontent-%COMP%]{flex-direction:column;align-items:stretch}}.session-content-container[_ngcontent-%COMP%] .page-title[_ngcontent-%COMP%]{font-size:1.25rem;font-weight:700;color:#111827;margin-bottom:1rem}.session-content-container[_ngcontent-%COMP%] .page-title[_ngcontent-%COMP%] .session-subtitle[_ngcontent-%COMP%]{font-weight:400;color:#6b7280;font-size:1rem}.session-content-container[_ngcontent-%COMP%] .form-control[_ngcontent-%COMP%]{border:1px solid #d1d5db;border-radius:6px;padding:.5rem .75rem;font-size:14px}.session-content-container[_ngcontent-%COMP%] .form-control[_ngcontent-%COMP%]:focus{border-color:#188888;box-shadow:0 0 0 .2rem #18888826}.content-section[_ngcontent-%COMP%]{background:#fff;border:1px solid #e5e7eb;border-radius:10px;margin-bottom:.75rem;overflow:hidden}.section-header[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:center;padding:.85rem 1.25rem;cursor:pointer;-webkit-user-select:none;user-select:none;transition:background .15s}.section-header[_ngcontent-%COMP%]:hover{background:#fafcfc}.section-header[_ngcontent-%COMP%] .section-title-row[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.6rem}.section-header[_ngcontent-%COMP%] .section-title-row[_ngcontent-%COMP%] svg[_ngcontent-%COMP%]{color:#146d6d;flex-shrink:0}.section-header[_ngcontent-%COMP%] .section-title-row[_ngcontent-%COMP%] h4[_ngcontent-%COMP%]{font-size:.95rem;font-weight:600;color:#111827;margin:0}.section-header[_ngcontent-%COMP%] .chevron[_ngcontent-%COMP%]{color:#d1d5db;transition:transform .2s;flex-shrink:0}.section-header[_ngcontent-%COMP%] .chevron.open[_ngcontent-%COMP%]{transform:rotate(180deg);color:#21b6b6}.section-body[_ngcontent-%COMP%]{padding:0 1.25rem 1.25rem}.badge-available[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:.25rem;padding:.15rem .5rem;border-radius:12px;font-size:.7rem;font-weight:600;background:#d1fae5;color:#065f46}.badge-count[_ngcontent-%COMP%]{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:20px;padding:0 .4rem;border-radius:10px;font-size:.7rem;font-weight:600;background:#e0f7f7;color:#0f5252}.badge-count.badge-green[_ngcontent-%COMP%]{background:#d1fae5;color:#065f46}.badge-count.badge-blue[_ngcontent-%COMP%]{background:#dbeafe;color:#1e40af}.badge-count.badge-gray[_ngcontent-%COMP%]{background:#f3f4f6;color:#9ca3af}.video-player-wrapper[_ngcontent-%COMP%]{border-radius:10px;overflow:hidden;background:#000;margin-bottom:.75rem;aspect-ratio:16/9}.video-player-wrapper[_ngcontent-%COMP%] iframe[_ngcontent-%COMP%]{width:100%;height:100%;display:block}.recording-meta[_ngcontent-%COMP%]{display:flex;gap:.5rem;flex-wrap:wrap;margin-bottom:1rem}.meta-chip[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:.3rem;padding:.25rem .6rem;border-radius:6px;font-size:.75rem;background:#f3f4f6;color:#6b7280}.drive-url-row[_ngcontent-%COMP%]{display:flex;gap:.5rem;align-items:center}.drive-url-row[_ngcontent-%COMP%] .form-control[_ngcontent-%COMP%]{flex:1}.btn-save-inline[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:.35rem;padding:.5rem 1rem;background:linear-gradient(135deg,#146d6d,#21b6b6);color:#fff;border:none;border-radius:6px;font-size:.8rem;font-weight:600;cursor:pointer;white-space:nowrap;transition:all .2s}.btn-save-inline[_ngcontent-%COMP%]:hover:not(:disabled){opacity:.9}.btn-save-inline[_ngcontent-%COMP%]:disabled{opacity:.5;cursor:not-allowed}.btn-delete-inline[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:.35rem;padding:.5rem 1rem;background:linear-gradient(135deg,#b91c1c,#dc2626);color:#fff;border:none;border-radius:6px;font-size:.8rem;font-weight:600;cursor:pointer;white-space:nowrap;transition:all .2s}.btn-delete-inline[_ngcontent-%COMP%]:hover:not(:disabled){opacity:.9}.btn-delete-inline[_ngcontent-%COMP%]:disabled{opacity:.5;cursor:not-allowed}.upload-row[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.75rem;margin-bottom:.75rem}.file-item[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.6rem;padding:.5rem .75rem;background:#f9fafb;border:1px solid #e5e7eb;border-radius:8px;margin-bottom:.5rem}
12.file-item[_ngcontent-%COMP%] .file-name[_ngcontent-%COMP%]{font-size:.85rem;color:#146d6d;text-decoration:none;font-weight:500}.file-item[_ngcontent-%COMP%] .file-name[_ngcontent-%COMP%]:hover{text-decoration:underline}.file-item[_ngcontent-%COMP%] .file-size[_ngcontent-%COMP%]{font-size:.75rem;color:#9ca3af}.btn-regenerate-slides[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:.3rem;padding:.3rem .65rem;border:1px solid #21b6b6;background:#fff;color:#21b6b6;border-radius:6px;font-size:.75rem;font-weight:500;cursor:pointer;font-family:inherit;white-space:nowrap;transition:all .15s;flex-shrink:0}.btn-regenerate-slides[_ngcontent-%COMP%]:hover:not(:disabled){background:#21b6b6;color:#fff}.btn-regenerate-slides[_ngcontent-%COMP%]:disabled{opacity:.5;cursor:default}.btn-remove[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border:1px solid #fca5a5;background:#fff;border-radius:6px;cursor:pointer;color:#dc2626;margin-left:auto;flex-shrink:0;transition:all .15s}.btn-remove[_ngcontent-%COMP%]:hover{background:#fef2f2}.btn-remove[_ngcontent-%COMP%] svg[_ngcontent-%COMP%]{stroke:currentColor;fill:none}.ai-section[_ngcontent-%COMP%]{margin-top:.75rem;padding-top:.75rem;border-top:1px solid #f0f0f0}.ai-status[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.5rem;padding:.6rem .85rem;border-radius:8px;font-size:.82rem}.ai-status.processing[_ngcontent-%COMP%]{background:#f0fdfd;border:1px solid #b2f5ea;color:#188888}.ai-status.success[_ngcontent-%COMP%]{background:#f0fdf4;border:1px solid #bbf7d0;color:#166534}.ai-status.error[_ngcontent-%COMP%]{background:#fef2f2;border:1px solid #fecaca}.btn-ai[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:.35rem;padding:.45rem .85rem;border:1px solid #6366f1;background:#fff;color:#6366f1;border-radius:6px;font-size:.8rem;font-weight:500;cursor:pointer;font-family:inherit;transition:all .15s}.btn-ai[_ngcontent-%COMP%]:hover:not(:disabled){background:#6366f1;color:#fff}.btn-ai[_ngcontent-%COMP%]:disabled{opacity:.5;cursor:not-allowed}.btn-ai[_ngcontent-%COMP%] svg[_ngcontent-%COMP%]{stroke:currentColor;fill:none}.link-row[_ngcontent-%COMP%]{display:flex;gap:.5rem;align-items:center;margin-bottom:.5rem}.link-row[_ngcontent-%COMP%] .form-control[_ngcontent-%COMP%]{flex:1}.link-row[_ngcontent-%COMP%] .flex-2[_ngcontent-%COMP%]{flex:2}.btn-add[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:.25rem;padding:.4rem .85rem;border:1px dashed #d1d5db;background:#fff;border-radius:6px;font-size:.8rem;font-weight:500;color:#6b7280;cursor:pointer;font-family:inherit;margin-top:.25rem;transition:all .15s}.btn-add[_ngcontent-%COMP%]:hover{border-color:#21b6b6;color:#0f5252;background:#f0fafa}.audio-upload-card[_ngcontent-%COMP%]{border:1px solid #e5e7eb;border-radius:10px;padding:1rem;margin-bottom:.75rem;transition:border-color .2s}.audio-upload-card[_ngcontent-%COMP%]:hover{border-color:#21b6b6}.audio-upload-card[_ngcontent-%COMP%] .audio-card-header[_ngcontent-%COMP%]{display:flex;gap:.5rem;align-items:center;margin-bottom:.75rem}.audio-upload-card[_ngcontent-%COMP%] .audio-card-header[_ngcontent-%COMP%] .form-control[_ngcontent-%COMP%]{flex:1}.upload-area[_ngcontent-%COMP%]{border:2px dashed #d1d5db;border-radius:8px;padding:1.5rem;text-align:center;cursor:pointer;background:#f9fafb;transition:all .2s;display:flex;flex-direction:column;align-items:center;gap:.35rem}.upload-area[_ngcontent-%COMP%]:hover{border-color:#21b6b6;background:#f0fafa}.upload-area[_ngcontent-%COMP%] .upload-text[_ngcontent-%COMP%]{font-size:.85rem;font-weight:500;color:#374151}.audio-preview[_ngcontent-%COMP%]{padding:.75rem;background:#f9fafb;border-radius:8px;border:1px solid #e5e7eb;margin-bottom:.5rem}.btn-change-audio[_ngcontent-%COMP%]{width:100%;padding:.5rem;border:1px solid #188888;background:transparent;color:#188888;border-radius:6px;font-size:.8rem;font-weight:500;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:.35rem;transition:all .15s}.btn-change-audio[_ngcontent-%COMP%]:hover:not(:disabled){background:#188888;color:#fff}.btn-change-audio[_ngcontent-%COMP%]:disabled{opacity:.6;cursor:not-allowed}.extras-grid[_ngcontent-%COMP%]{display:grid;grid-template-columns:1fr 1fr;gap:.75rem}.extras-card[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.5rem;padding:1rem;background:#f9fafb;border:1px solid #e5e7eb;border-radius:8px}.extras-card[_ngcontent-%COMP%] .extras-card-header[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.5rem}.extras-card[_ngcontent-%COMP%] .extras-label[_ngcontent-%COMP%]{font-size:.85rem;font-weight:600;color:#374151}.btn-manage[_ngcontent-%COMP%]{display:inline-flex;align-items:center;justify-content:center;padding:.4rem .75rem;border:1px solid #146d6d;background:#fff;color:#146d6d;border-radius:6px;font-size:.78rem;font-weight:500;text-decoration:none;transition:all .15s}.btn-manage[_ngcontent-%COMP%]:hover{background:#146d6d;color:#fff}.save-bar[_ngcontent-%COMP%]{display:flex;justify-content:center;padding:1rem 0}.btn-save[_ngcontent-%COMP%]{padding:.65rem 2.5rem;background:linear-gradient(135deg,#146d6d,#21b6b6);color:#fff;border:none;border-radius:8px;font-size:.9rem;font-weight:600;cursor:pointer;transition:all .2s;box-shadow:0 2px 8px #146d6d33}.btn-save[_ngcontent-%COMP%]:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 4px 12px #146d6d4d}.btn-save[_ngcontent-%COMP%]:disabled{opacity:.5;cursor:not-allowed}@media (max-width: 768px){.extras-grid[_ngcontent-%COMP%]{grid-template-columns:1fr}.drive-url-row[_ngcontent-%COMP%], .link-row[_ngcontent-%COMP%]{flex-direction:column}.link-row[_ngcontent-%COMP%] .flex-2[_ngcontent-%COMP%]{flex:1;width:100%}}.summary-publish-row[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap}.summary-publish-row[_ngcontent-%COMP%] .summary-publish-state[_ngcontent-%COMP%]{margin:0;color:#4b5563;font-size:14px}.summary-publish-row[_ngcontent-%COMP%] .summary-publish-actions[_ngcontent-%COMP%]{display:flex;align-items:center;gap:10px}.summary-publish-row[_ngcontent-%COMP%] .btn-outline[_ngcontent-%COMP%]{background:transparent;border:1px solid #cbd5e1;color:#334155}"]})}}return t})();var A1=(t,c)=>c.id,He=t=>({errorInput:t}),T1=(t,c,e)=>({batchId:t,levelId:c,sessionId:e}),R1=()=>({"background-color":"#16A34A"}),D1=()=>({});function B1(t,c){t&1&&v(0,"app-load-spinner",1),t&2&&p("isBig",!0)}function L1(t,c){if(t&1&&v(0,"app-assign-task-button",4),t&2){let e=d(2);p("resourceRef",ot(4,T1,e.batchId,e.levelId,e.sessionId))("resourceLabel","Session flashcards \u2014 "+e.getSessionTitle())("courseId",e.courseId)("levelId",e.levelId)}}function N1(t,c){if(t&1&&(a(0,"div",7)(1,"h4",88),s(2),r(),v(3,"p",89),a(4,"div",90)(5,"div",91),v(6,"img",92),a(7,"span"),s(8),r()(),a(9,"div",91),v(10,"img",93),a(11,"span"),s(12),r()()()()),t&2){let e=d(2);o(2),g(e.getSessionTitle()),o(),p("innerHTML",e.getSessionDescription(),Ee),o(5),g(e.sessionInfo.sessionDate),o(4),g(e.sessionInfo.sessionTime)}}function V1(t,c){t&1&&(a(0,"div",94)(1,"p"),s(2),_(3,"translate"),r()()),t&2&&(o(2),g(m(3,1,"GROUP_CLASSES_ADMIN.SESSION_INFO_LOADING")))}function F1(t,c){if(t&1){let e=M();a(0,"span",95),x("click",function(){let i=C(e).$implicit,l=d(2);return f(l.onTabClick(i))}),s(1),r()}if(t&2){let e=c.$implicit,n=d(2);y("active",n.selectedTab===e),o(),N(" ",e.label,"(",e.count,") ")}}function U1(t,c){if(t&1&&(a(0,"div",96)(1,"button",97),s(2),_(3,"translate"),r(),a(4,"button",98),v(5,"img",99),a(6,"span"),s(7),_(8,"translate"),r()(),a(9,"button",100),v(10,"img",101),a(11,"span"),s(12),_(13,"translate"),r()(),a(14,"button",102),v(15,"img",103),a(16,"span"),s(17),_(18,"translate"),r()()()),t&2){let e=d(2);o(2),b(" ",m(3,7,"GROUP_CLASSES_ADMIN.CREATE_MANUALLY")," "),o(2),p("disabled",e.isLoadingFlashcards||e.isImporting),o(3),g(m(8,9,"GROUP_CLASSES_ADMIN.IMPORT_FLASHCARDS")),o(2),p("disabled",e.isLoadingFlashcards||e.isImporting||e.isPdfAutomating),o(3),g(m(13,11,"GROUP_CLASSES_ADMIN.AUTOMATE_FROM_PDF")),o(2),p("disabled",e.isLoadingFlashcards||e.isImporting||e.isPdfAutomating||e.flashcards.length===0),o(3),g(m(18,13,"GROUP_CLASSES_ADMIN.DELETE_ALL"))}}function H1(t,c){t&1&&(a(0,"div"),v(1,"app-load-spinner"),r())}function G1(t,c){t&1&&(a(0,"div",107),v(1,"img",114),r())}function q1(t,c){if(t&1){let e=M();a(0,"div",110)(1,"span",115),x("click",function(i){C(e);let l=d().$implicit,u=d(3);return f(u.onEditFlashcard(i,l))}),s(2),_(3,"translate"),r(),a(4,"span",115),x("click",function(i){C(e);let l=d().$implicit,u=d(3);return f(u.openDeleteModal(i,l))}),s(5),_(6,"translate"),r()()}t&2&&(o(2),g(m(3,2,"COMMON.EDIT")),o(3),g(m(6,4,"COMMON.DELETE")))}function W1(t,c){if(t&1&&(a(0,"span",116),s(1),r(),a(2,"span",117),s(3),r()),t&2){let e=d().$implicit,n=d(3);o(),g(e.flashCardType),o(2),g(n.levelMap[e.relation.levelNumeric])}}function z1(t,c){t&1&&(a(0,"span",113),s(1),_(2,"translate"),r()),t&2&&(o(),b("\u2728 ",m(2,1,"personalization.session.badge"),""))}function K1(t,c){if(t&1&&(v(0,"span",118),_(1,"htmlToFormattedText")),t&2){let e=d(2).$implicit,n=d(3);p("innerHTML",m(1,1,e.promptData.prompts[n.getFirstPromptTextIndex(e.promptData.prompts)].promptText),Ee)}}function $1(t,c){if(t&1){let e=M();a(0,"app-audio-player",120),x("click",function(i){return C(e),f(i.stopPropagation())}),r()}if(t&2){let e=d(2).$implicit,n=d(3);p("showAdvancedControls",!1)("showPlayBackSpeed",!0)("audioUrl",e.promptData.prompts[n.getFirstPromptAudioIndex(e.promptData.prompts)].promptAudioURL||"data:audio/wav;base64,"+e.promptData.prompts[n.getFirstPromptAudioIndex(e.promptData.prompts)].promptAudioTTS)}}function j1(t,c){if(t&1&&h(0,K1,2,3,"span",118)(1,$1,1,3,"app-audio-player",119),t&2){let e=d().$implicit,n=d(3);P(0,n.getFirstPromptTextIndex(e.promptData.prompts)!==-1?0:-1),o(),P(1,n.getFirstPromptAudioIndex(e.promptData.prompts)!==-1&&n.getFirstPromptTextIndex(e.promptData.prompts)===-1?1:-1)}}function Q1(t,c){if(t&1){let e=M();a(0,"div",106),x("click",function(i){let l=C(e).$implicit,u=d(3);return f(u.onEditFlashcard(i,l))}),h(1,G1,2,0,"div",107),a(2,"div",108)(3,"img",109),x("click",function(i){let l=C(e).$implicit,u=d(3);return f(u.openOptionModal(i,l))}),r(),h(4,q1,7,6,"div",110),a(5,"div",111)(6,"span",112),s(7),r(),h(8,W1,4,2)(9,z1,3,3,"span",113),r(),h(10,j1,2,2),r()()}if(t&2){let e=c.$implicit,n=d(3);o(),P(1,n.selectedTab.skillType===null?1:-1),o(3),P(4,n.selectedFlashcard===e?4:-1),o(2),p("ngStyle",e.flashCardType!=="explanation"?Re(7,R1):Re(8,D1)),o(),b(" ",e.flashCardCategory," "),o(),P(8,e.flashCardType!=="explanation"?8:-1),o(),P(9,e.isPersonalized?9:-1),o(),P(10,e.promptData.prompts.length>0?10:-1)}}function Y1(t,c){if(t&1){let e=M();a(0,"div")(1,"section",104),x("cdkDropListDropped",function(i){C(e);let l=d(2);return f(l.drop(i))}),h(2,Q1,11,9,"div",105),r()()}if(t&2){let e=d(2);o(),p("cdkDropListData",e.filteredFlashcards),o(),p("ngForOf",e.filteredFlashcards)("ngForTrackBy",e.trackByFn)("ngForTrackBy",e.trackByIndex)}}function X1(t,c){t&1&&(a(0,"div"),v(1,"app-no-data",121),_(2,"translate"),r()),t&2&&(o(),p("text",m(2,1,"GROUP_CLASSES_ADMIN.NO_FLASHCARDS")))}function J1(t,c){if(t&1&&(a(0,"div",23)(1,"h5",122),s(2),r(),v(3,"p",123),a(4,"div",124)(5,"span"),v(6,"img",92),s(7),r(),a(8,"span"),v(9,"img",93),s(10),r()()()),t&2){let e=d(2);o(2),g(e.getSessionTitle()),o(),p("innerHTML",e.getSessionDescription(),Ee),o(4),b(" ",e.sessionInfo.sessionDate,""),o(3),b(" ",e.sessionInfo.sessionTime,"")}}function Z1(t,c){if(t&1&&(a(0,"option",36),s(1),_(2,"titlecase"),r()),t&2){let e=c.$implicit;p("value",e),o(),g(m(2,2,e))}}
12function eC(t,c){if(t&1&&(a(0,"option",36),s(1),r()),t&2){let e=c.$implicit,n=d(3);p("value",e),o(),g(n.flashCardTypeDisplayNames[e])}}function tC(t,c){if(t&1&&(a(0,"option",133),s(1),r()),t&2){let e=c.$implicit;p("ngValue",e.value),o(),b(" ",e.name," ")}}function nC(t,c){if(t&1&&(a(0,"div",135)(1,"div",136)(2,"label",137),s(3),_(4,"translate"),r(),a(5,"div",138),v(6,"input",139),a(7,"label",140),s(8),_(9,"translate"),r()()(),v(10,"input",141)(11,"app-Form-errors",32),r()),t&2){let e,n=d(4);o(3),g(m(4,4,"GROUP_CLASSES_ADMIN.DESCRIPTION")),o(5),b(" ",m(9,6,"GROUP_CLASSES_ADMIN.TRANSLATABLE")," "),o(2),p("ngClass",D(8,He,((e=n.flashcardForm.get("promptData.description"))==null?null:e.errors)&&((e=n.flashcardForm.get("promptData.description"))==null?null:e.touched))),o(),p("control",n.flashcardForm.get("promptData.description"))}}function iC(t,c){if(t&1&&(a(0,"div",135)(1,"label",142),s(2),_(3,"translate"),r(),v(4,"input",143)(5,"app-Form-errors",32),r()),t&2){let e,n=d(4);o(2),g(m(3,3,"GROUP_CLASSES_ADMIN.ANSWER")),o(2),p("ngClass",D(5,He,((e=n.flashcardForm.get("promptData.answer"))==null?null:e.errors)&&((e=n.flashcardForm.get("promptData.answer"))==null?null:e.touched))),o(),p("control",n.flashcardForm.get("promptData.answer"))}}function oC(t,c){if(t&1&&(a(0,"option",133),s(1),r()),t&2){let e=c.$implicit,n=c.$index;p("ngValue",n),o(),b(" ",e.value||"Answer "+(n+1)," ")}}function rC(t,c){if(t&1&&(a(0,"div",149),v(1,"input",151)(2,"app-Form-errors",32),r()),t&2){let e=c.$index,n=d(5);o(),rn("placeholder","Answer ",e+1,""),p("formControlName",e)("id","answer"+e)("ngClass",D(6,He,n.promptOptions.at(e).errors&&n.promptOptions.at(e).touched)),o(),p("control",n.promptOptions.at(e))}}function aC(t,c){t&1&&(a(0,"div",150),s(1," The answers must be distinct. Please remove any duplicates. "),r())}function sC(t,c){if(t&1&&(a(0,"div",135)(1,"label",144),s(2),_(3,"translate"),r(),a(4,"div",28)(5,"select",145)(6,"option",146),s(7,"Select the correct answer"),r(),z(8,oC,2,2,"option",133,De),r()(),v(10,"app-Form-errors",32),r(),a(11,"div",147)(12,"label",148),s(13),_(14,"translate"),r(),z(15,rC,3,8,"div",149,De),h(17,aC,2,0,"div",150),r()),t&2){let e,n=d(4);o(2),g(m(3,5,"GROUP_CLASSES_ADMIN.CORRECT_ANSWER")),o(3),p("ngClass",D(9,He,((e=n.flashcardForm.get("promptData.answer"))==null?null:e.errors)&&((e=n.flashcardForm.get("promptData.answer"))==null?null:e.touched))),o(3),K(n.promptOptions.controls),o(2),p("control",n.flashcardForm.get("promptData.answer")),o(3),g(m(14,7,"GROUP_CLASSES_ADMIN.ANSWERS")),o(2),K(n.promptOptions.controls),o(2),P(17,n.promptOptions.errors!=null&&n.promptOptions.errors.distinctAnswers&&(n.promptOptions.dirty||n.promptOptions.touched)?17:-1)}}function lC(t,c){if(t&1){let e=M();a(0,"div",154)(1,"div",138)(2,"input",157),x("change",function(i){let l=C(e).$index,u=d(5);return f(u.toggleMultipleChoiceAnswer(l,i))}),r(),a(3,"label",158)(4,"span",159),s(5),r(),s(6),r()()()}if(t&2){let e=c.$implicit,n=c.$index,i=d(5);o(2),p("id","answer-"+n)("checked",i.isAnswerSelected(n)),o(),p("for","answer-"+n),o(2),g(i.getAnswerLetter(n)),o(),b(" ",e.value||"Answer "+(n+1)," ")}}function cC(t,c){t&1&&(a(0,"div",155)(1,"small"),s(2,"Please select at least one correct answer"),r()())}function dC(t,c){if(t&1&&(a(0,"div",156)(1,"small"),s(2),r()()),t&2){let e=d(5);o(2),b("",e.getSelectedAnswersCount()," answer(s) selected")}}function pC(t,c){if(t&1&&(a(0,"div",149),v(1,"input",151)(2,"app-Form-errors",32),r()),t&2){let e=c.$index,n=d(5);o(),rn("placeholder","Answer ",e+1,""),p("formControlName",e)("id","answer-option"+e)("ngClass",D(6,He,n.promptOptions.at(e).errors&&n.promptOptions.at(e).touched)),o(),p("control",n.promptOptions.at(e))}}function _C(t,c){if(t&1&&(a(0,"div",135)(1,"label",152),s(2),_(3,"translate"),r(),a(4,"div",153),z(5,lC,7,5,"div",154,De),h(7,cC,3,0,"div",155)(8,dC,3,1,"div",156),r()(),a(9,"div",147)(10,"label",148),s(11),_(12,"translate"),r(),z(13,pC,3,8,"div",149,De),r(),v(15,"app-Form-errors",32)),t&2){let e=d(4);o(2),g(m(3,5,"GROUP_CLASSES_ADMIN.CORRECT_ANSWERS_SELECT")),o(3),K(e.promptOptions.controls),o(2),P(7,e.getSelectedAnswersCount()===0?7:-1),o(),P(8,e.getSelectedAnswersCount()>0?8:-1),o(3),g(m(12,7,"GROUP_CLASSES_ADMIN.ANSWER_OPTIONS")),o(2),K(e.promptOptions.controls),o(2),p("control",e.flashcardForm.get("promptData"))}}function mC(t,c){if(t&1&&(a(0,"div",135)(1,"label",142),s(2),_(3,"translate"),r(),a(4,"div",28)(5,"select",145)(6,"option",133),s(7,"True"),r(),a(8,"option",133),s(9,"False"),r()()(),v(10,"app-
12Form-errors",32),r()),t&2){let e,n=d(4);o(2),g(m(3,5,"GROUP_CLASSES_ADMIN.ANSWER")),o(3),p("ngClass",D(7,He,((e=n.flashcardForm.get("promptData.answer"))==null?null:e.errors)&&((e=n.flashcardForm.get("promptData.answer"))==null?null:e.touched))),o(),p("ngValue",!0),o(2),p("ngValue",!1),o(2),p("control",n.flashcardForm.get("promptData.answer"))}}function gC(t,c){if(t&1&&(a(0,"div",132)(1,"div",134),h(2,nC,12,10,"div",135)(3,iC,6,7,"div",135)(4,sC,18,11)(5,_C,16,9)(6,mC,11,9,"div",135),r()()),t&2){let e,n,i,l,u,O=d(3);o(2),P(2,((e=O.flashcardForm.get("flashCardType"))==null?null:e.value)!=="structure"?2:-1),o(),P(3,((n=O.flashcardForm.get("flashCardType"))==null?null:n.value)==="complete"||((n=O.flashcardForm.get("flashCardType"))==null?null:n.value)==="rearrangeLetters"||((n=O.flashcardForm.get("flashCardType"))==null?null:n.value)==="listening"||((n=O.flashcardForm.get("flashCardType"))==null?null:n.value)==="translate"||((n=O.flashcardForm.get("flashCardType"))==null?null:n.value)==="pronounce"?3:-1),o(),P(4,((i=O.flashcardForm.get("flashCardType"))==null?null:i.value)==="mcq"?4:-1),o(),P(5,((l=O.flashcardForm.get("flashCardType"))==null?null:l.value)==="multipleChoice"?5:-1),o(),P(6,((u=O.flashcardForm.get("flashCardType"))==null?null:u.value)==="trueFalse"?6:-1)}}function uC(t,c){if(t&1&&(a(0,"section")(1,"div",125)(2,"div",126)(3,"div",26)(4,"label",127),s(5),_(6,"translate"),r(),a(7,"div",28)(8,"select",128),z(9,eC,2,2,"option",36,De),r()(),v(11,"app-Form-errors",32),r()(),a(12,"div",129)(13,"div",26)(14,"label",130),s(15),_(16,"translate"),r(),a(17,"div",28)(18,"select",131),h(19,tC,2,2,"option",69),r()(),v(20,"app-Form-errors",32),r()()(),h(21,gC,7,5,"div",132),r()),t&2){let e,n,i=d(2);o(5),g(m(6,9,"GROUP_CLASSES_ADMIN.FLASHCARD_TYPE")),o(3),p("ngClass",D(13,He,i.flashcardForm.controls.flashCardType.errors&&i.flashcardForm.controls.flashCardType.touched)),o(),K(i.flashCardTypes),o(2),p("control",i.flashcardForm.controls.flashCardType),o(4),g(m(16,11,"GROUP_CLASSES_ADMIN.QUESTION_LEVEL")),o(3),p("ngClass",D(15,He,((e=i.flashcardForm.get("relation.levelNumeric"))==null?null:e.errors)&&((e=i.flashcardForm.get("relation.levelNumeric"))==null?null:e.touched))),o(),p("ngForOf",i.questionLevels)("ngForTrackBy",i.trackByIndex),o(),p("control",i.flashcardForm.get("relation.levelNumeric")),o(),P(21,(n=i.flashcardForm.get("flashCardType"))!=null&&n.value?21:-1)}}function CC(t,c){if(t&1&&v(0,"app-structure-form",161),t&2){let e=d(3);p("structureForm",e.flashcardForm)}}function fC(t,c){if(t&1&&v(0,"app-dragAndDrop-form",162),t&2){let e=d(3);p("dragAndDropForm",e.flashcardForm)}}function hC(t,c){if(t&1&&(a(0,"div",163)(1,"label",164),s(2,"Topic"),r(),v(3,"input",165)(4,"app-Form-errors",32),r(),v(5,"app-explanation-form",166)),t&2){let e=d(3);o(4),p("control",e.flashcardForm.get("promptData.topic")),o(),p("editMode",e.isEditMode)("explanationForm",e.flashcardForm)("courseId",e.courseId)("sessionId",e.sessionId)}}function xC(t,c){if(t&1){let e=M();a(0,"button",176),x("click",function(){C(e);let i=d().$index,l=d(4);return f(l.removeStructureOption(i))}),v(1,"img",177),r()}}function bC(t,c){if(t&1&&(a(0,"div",172)(1,"span",173),s(2),r(),v(3,"input",174),h(4,xC,2,0,"button",175),r(),v(5,"app-Form-errors",32)),t&2){let e=c.$index,n=d(4);o(2),b("",n.getLetter(e),"."),o(),rn("placeholder","Structure option ",e+1,""),p("formControlName",e)("ngClass",D(7,He,n.promptOptions.at(e).errors&&n.promptOptions.at(e).touched)),o(),P(4,n.promptOptions.controls.length>1?4:-1),o(),p("control",n.promptOptions.at(e))}}function vC(t,c){if(t&1){let e=M();a(0,"div",163)(1,"div",167)(2,"label",168),s(3,"Structure Options"),r(),a(4,"div",169),z(5,bC,6,9,null,null,De),a(7,"button",170),x("click",function(){C(e);let i=d(3);return f(i.addStructureOption())}),s(8," Add Structure Option "),v(9,"img",171),r()()()(),v(10,"app-explanation-form",166)}if(t&2){let e=d(3);o(5),K(e.promptOptions.controls),o(5),p("editMode",e.isEditMode)("explanationForm",e.flashcardForm)("courseId",e.courseId)("sessionId",e.sessionId)}}function OC(t,c){if(t&1&&v(0,"app-explanation-form",166),t&2){let e=d(3);p("editMode",e.isEditMode)("explanationForm",e.flashcardForm)("courseId",e.courseId)("sessionId",e.
12sessionId)}}function MC(t,c){if(t&1&&(a(0,"label",38),s(1),r(),a(2,"section",160),h(3,CC,1,1)(4,fC,1,1)(5,hC,6,5)(6,vC,11,4)(7,OC,1,4),r()),t&2){let e,n=d(2);o(),b(" ",n.flashcardForm.controls.flashCardType.value==="explanation"?"Explanation data":"Question data"," "),o(2),P(3,(e=n.flashcardForm.controls.flashCardType.value)==="structure"?3:e==="dragAndDrop"?4:e==="binaryCategorization"?5:e==="structureMatch"?6:7)}}function PC(t,c){t&1&&(a(0,"span"),s(1,"Translate"),r())}function SC(t,c){t&1&&v(0,"div",218)}function wC(t,c){t&1&&(a(0,"span"),s(1,"Translate"),r())}function EC(t,c){t&1&&v(0,"div",218)}function IC(t,c){t&1&&(a(0,"span"),s(1,"Translate"),r())}function yC(t,c){t&1&&v(0,"div",218)}function kC(t,c){t&1&&(a(0,"span"),s(1,"Translate"),r())}function AC(t,c){t&1&&v(0,"div",218)}function TC(t,c){if(t&1){let e=M();a(0,"div",219)(1,"div",182)(2,"div",136)(3,"label",220),s(4),r(),a(5,"button",187),x("click",function(){let i=C(e).index,l=d(3);return f(l.translateExample(i))}),h(6,kC,2,0,"span",12)(7,AC,1,0,"div",63),r()(),v(8,"input",221),r(),a(9,"div",125)(10,"div",207)(11,"label",222),s(12),r(),v(13,"input",223),r(),a(14,"div",207)(15,"label",222),s(16),r(),v(17,"input",224),r()(),a(18,"button",225),x("click",function(){C(e);let i=d(3);return f(i.addExample())}),s(19," Add another Example "),v(20,"img",171),r()()}if(t&2){let e,n,i=c.$implicit,l=c.index,u=d(3);p("formGroupName",l),o(3),p("for","exampleDefault"+l),o(),b("Example ",l+1," (Default)"),o(),p("disabled",u.isTranslatingExamples[l]),o(),p("ngIf",!u.isTranslatingExamples[l]),o(),p("ngIf",u.isTranslatingExamples[l]),o(),p("id","exampleDefault"+l),o(3),p("for","exampleEn"+l),o(),b("Example ",l+1," (English)"),o(),p("id","exampleEn"+l),o(2),p("for","exampleAr"+l),o(),b("Example ",l+1," (Arabic)"),o(),p("id","exampleAr"+l),o(),y("disabled",!((e=i.get("default"))!=null&&e.value)),p("disabled",!((n=i.get("default"))!=null&&n.value))}}function RC(t,c){if(t&1&&(a(0,"option",36),s(1),_(2,"slice"),r()),t&2){let e=c.$implicit;p("value",e.id),o(),qe(" ",e.index,". ",sn(2,4,e.promptText,0,50),"",(e.promptText==null?null:e.promptText.length)>50?"...":""," ")}}function DC(t,c){if(t&1){let e=M();a(0,"section",178)(1,"div",179)(2,"div",180)(3,"label",181),s(4,"Hint"),r(),a(5,"div",182)(6,"div",138),v(7,"input",183),a(8,"label",184),s(9),r()()()(),a(10,"div",185)(11,"div",182)(12,"div",136)(13,"label",186),s(14,"Hint (Default)"),r(),a(15,"button",187),x("click",function(){C(e);let i=d(2);return f(i.translateHintContent())}),h(16,PC,2,0,"span",12)(17,SC,1,0,"div",63),r()(),v(18,"input",188)(19,"app-Form-errors",32),r(),a(20,"div",125)(21,"div",135)(22,"label",189),s(23,"Hint (English)"),r(),v(24,"input",190),r(),a(25,"div",135)(26,"label",191),s(27,"Hint (Arabic)"),r(),v(28,"input",192),r()()()()(),a(29,"section",193)(30,"label",194),s(31,"Review"),r(),a(32,"div",195)(33,"label",196),s(34,"Answer"),r(),a(35,"div",197)(36,"div",182)(37,"div",136)(38,"label",198),s(39,"Correct Answer (Default)"),r(),a(40,"button",187),x("click",function(){C(e);let i=d(2);return f(i.translateReviewAnswer())}),h(41,wC,2,0,"span",12)(42,EC,1,0,"div",63),r()(),v(43,"input",199)(44,"app-Form-errors",32),r(),a(45,"div",125)(46,"div",135)(47,"label",200),s(48,"Correct Answer (English)"),r(),v(49,"input",201),r(),a(50,"div",135)(51,"label",202),s(52,"Correct Answer (Arabic)"),r(),v(53,"input",203),r()()(),a(54,"label",196),s(55,"Explanation"),r(),a(56,"div",204)(57,"div",182)(58,"div",136)(59,"label",205),s(60,"Explanation (Default)"),r(),a(61,"button",187),x("click",function(){C(e);let i=d(2);return f(i.translateReviewExplanation())}),h(62,IC,2,0,"span",12)(63,yC,1,0,"div",63),r()(),v(64,"input",206),r(),a(65,"div",125)(66,"div",207)(67,"label",208),s(68,"Explanation (English)"),r(),v(69,"input",209),r(),a(70,"div",207)(71,"label",210),s(72,"Explanation (Arabic)"),r(),v(73,"input",211),r()()(),a(74,"label",196),s(75,"Examples"),r(),a(76,"div",212),h(77,TC,21,16,"div",213),r(),a(78,"div",214)(79,"label",215),s(80),_(81,"translate"),r(),a(82,"div",28)(83,"select",216)(84,"option",217),s(85),_(86,"translate"),r(),z(87,RC,3,8,"option",36,A1),r()(),v(89,"app-Form-errors",32),r()()()}if(t&2){let e,n,i,l=d(2);
12o(9),b(" Should Display Hint (",(e=l.flashcardForm.get("hint.shouldDisplay"))!=null&&e.value?"Yes":"No",") "),o(6),p("disabled",l.isTranslatingHint),o(),p("ngIf",!l.isTranslatingHint),o(),p("ngIf",l.isTranslatingHint),o(),p("ngClass",D(24,He,((n=l.flashcardForm.get("hint.content.default"))==null?null:n.errors)&&((n=l.flashcardForm.get("hint.content.default"))==null?null:n.touched))),o(),p("control",l.flashcardForm.get("hint.content.default")),o(21),p("disabled",l.isTranslatingAnswer),o(),p("ngIf",!l.isTranslatingAnswer),o(),p("ngIf",l.isTranslatingAnswer),o(),p("ngClass",D(26,He,((i=l.flashcardForm.get("review.answer.default"))==null?null:i.errors)&&((i=l.flashcardForm.get("review.answer.default"))==null?null:i.touched))),o(),p("control",l.flashcardForm.get("review.answer.default")),o(17),p("disabled",l.isTranslatingExplanation),o(),p("ngIf",!l.isTranslatingExplanation),o(),p("ngIf",l.isTranslatingExplanation),o(14),p("ngForOf",l.examples.controls)("ngForTrackBy",l.trackByIndex),o(3),b(" ",m(81,20,"GROUP_CLASSES_ADMIN.REVIEW_FLASHCARD")," "),o(3),p("formControl",l.flashcardForm.get("relation.reviewFlashCardId")),o(2),g(m(86,22,"GROUP_CLASSES_ADMIN.SELECT_REVIEW_FLASHCARD")),o(2),K(l.reviewFlashcards),o(2),p("control",l.flashcardForm.get("relation.reviewFlashCardId"))}}function BC(t,c){if(t&1&&v(0,"app-structure-template",226),t&2){let e=d(2);p("flashcardForm",e.flashcardForm)}}function LC(t,c){if(t&1&&v(0,"app-choose-and-fill-paragraph-template",226),t&2){let e=d(2);p("flashcardForm",e.flashcardForm)}}function NC(t,c){if(t&1&&v(0,"app-choose-and-fill-sentence-template",226),t&2){let e=d(2);p("flashcardForm",e.flashcardForm)}}function VC(t,c){if(t&1&&v(0,"app-open-question-template",226),t&2){let e=d(2);p("flashcardForm",e.flashcardForm)}}function FC(t,c){if(t&1&&v(0,"app-binary-category-template",226),t&2){let e=d(2);p("flashcardForm",e.flashcardForm)}}function UC(t,c){if(t&1&&v(0,"app-structure-match-template",226),t&2){let e=d(2);p("flashcardForm",e.flashcardForm)}}function HC(t,c){if(t&1&&v(0,"app-multiple-choice-template",227),t&2){let e=d(2);p("flashcardForm",e.flashcardForm)("mode","preview")}}function GC(t,c){if(t&1&&v(0,"app-mcq-template",227),t&2){let e=d(2);p("flashcardForm",e.flashcardForm)("mode","preview")}}function qC(t,c){if(t&1&&v(0,"app-true-false-template",227),t&2){let e=d(2);p("flashcardForm",e.flashcardForm)("mode","preview")}}function WC(t,c){if(t&1&&v(0,"app-complete-template",227),t&2){let e=d(2);p("flashcardForm",e.flashcardForm)("mode","preview")}}function zC(t,c){if(t&1&&v(0,"app-translate-template",227),t&2){let e=d(2);p("flashcardForm",e.flashcardForm)("mode","preview")}}function KC(t,c){if(t&1&&v(0,"app-words-order-template",227),t&2){let e=d(2);p("flashcardForm",e.flashcardForm)("mode","preview")}}function $C(t,c){if(t&1&&v(0,"app-rearrange-letters-template",227),t&2){let e=d(2);p("flashcardForm",e.flashcardForm)("mode","preview")}}function jC(t,c){t&1&&(a(0,"div",228),s(1,"Listening template coming soon..."),r())}function QC(t,c){if(t&1&&v(0,"app-pronunciation-template",226),t&2){let e=d(2);p("flashcardForm",e.flashcardForm)}}function YC(t,c){if(t&1&&v(0,"app-explanation-template",226),t&2){let e=d(2);p("flashcardForm",e.flashcardForm)}}function XC(t,c){if(t&1&&(a(0,"option",36),s(1),r()),t&2){let e=c.$implicit;p("value",e.value),o(),g(e.name)}}function JC(t,c){if(t&1&&(a(0,"div",229)(1,"strong"),s(2),_(3,"translate"),r(),a(4,"span"),s(5),_(6,"translate"),r()()),t&2){let e=d(2);o(2),b("",m(3,3,"GROUP_CLASSES_ADMIN.PREVIEW"),":"),o(3),N("",e.importFilePreview.count," ",m(6,5,"GROUP_CLASSES_ADMIN.ITEMS_DETECTED"),"")}}function ZC(t,c){if(t&1&&(a(0,"div",230),s(1),r()),t&2){let e=d(2);o(),b(" ",e.importError," ")}}function ef(t,c){t&1&&v(0,"span",218)}function tf(t,c){if(t&1&&(a(0,"option",36),s(1),r()),t&2){let e=c.$implicit;p("value",e),o(),g(e)}}function nf(t,c){if(t&1&&(a(0,"option",133),s(1),_(2,"translate"),r()),t&2){let e=c.$implicit;p("ngValue",e),o(),N("",m(2,3,"GROUP_CLASSES_ADMIN.SESSION")," ",e,"")}}function of(t,c){t&1&&(a(0,"small",58),s(1),_(2,"translate"),r()),t&2&&(o(),g(m(2,1,"GROUP_CLASSES_ADMIN.SELECT_SESSION_NUMBER")))}function rf(t,c){if(t&1&&(a(0,"small",231),s(1),_(2,"translate"),_(3,"translate"),r()),t&2){let e=d(2);o(),qe(" ",m(2,3,"GROUP_CLASSES_ADMIN.AUTO_DETECTED"),": ",m(3,5,"GROUP_CLASSES_ADMIN.SESSION")," ",e.pdfSessionNumber," ")}}function af(t,c){if(t&1&&(a(0,"div",229)(1,"span")(2,"strong"),s(3),_(4,"translate"),r(),s(5),r()()),t&2){let e=d(2);o(3),b("",m(4,2,"GROUP_CLASSES_ADMIN.FILE_SELECTED"),":"),o(2),b(" ",e.selectedPdfFile.name,"")}}function sf(t,c){if(t&1&&(a(0,"div",232)(1,"div",233)(2,"div",234)(3,"span",235),s(4,"Loading..."),r()(),a(5,"h5",236),s(6),r(),a(7,"p",237),s(8),_(9,"translate"),r(),a(10,"p",238),s(11),_(12,"translate"),r()()()),t&2){let e=d(2);o(6),g(e.pdfAutomationProgress),o(2),b(" ",m(9,3,"GROUP_CLASSES_ADMIN.PROCESSING_PDF_WAIT")," "),o(3),b(" ",m(12,5,"GROUP_CLASSES_ADMIN.DO_NOT_CLOSE")," ")}}function lf(t,c){if(t&1&&(a(0,"div",241)(1,"strong"),s(2),_(3,"translate"),r(),s(4),r()),t&2){let e=d(3);o(2),b("",m(3,2,"GROUP_CLASSES_ADMIN.PAGES_EXTRACTED"),":"),o(2),b(" ",e.pdfAutomationResult.extraction.pages," ")}}function cf(t,c){if(t&1&&(a(0,"li"),s(1),_(2,"translate"),r()),t&2){let e=d(4);o(),N(" ",e.pdfAutomationResult.structuring.vocabularyWords," ",m(2,2,"GROUP_CLASSES_ADMIN.VOCABULARY_WORDS")," ")}}function df(t,c){if(t&1&&(a(0,"li"),s(1),_(2,"translate"),r()),t&2){let e=d(4);o(),N(" ",e.pdfAutomationResult.structuring.grammarRules," ",m(2,2,"GROUP_CLASSES_ADMIN.GRAMMAR_RULES")," ")}}function pf(t,c){if(t&1&&(a(0,"li"),s(1),_(2,"translate"),r()),t&2){let e=d(4);o(),N(" ",e.pdfAutomationResult.structuring.verbs," ",m(2,2,"GROUP_CLASSES_ADMIN.VERBS")," ")}}function _f(t,c){if(t&1&&(a(0,"div")(1,"strong"),s(2),_(3,"translate"),r(),a(4,"ul",243),h(5,cf,3,4,"li",12)(6,df,3,4,"li",12)(7,pf,3,4,"li",12),r()()),t&2){let e=d(3);o(2),b("",m(3,4,"GROUP_CLASSES_ADMIN.CONTENT_STRUCTURED"),":"),o(3),p("ngIf",e.pdfAutomationResult.structuring.vocabularyWords),o(),p("ngIf",e.pdfAutomationResult.structuring.grammarRules),o(),p("ngIf",e.pdfAutomationResult.structuring.verbs)}}function mf(t,c){if(t&1&&(a(0,"div",239)(1,"div",240)(2,"strong"),s(3),_(4,"translate"),r()(),a(5,"div",241)(6,"strong"),s(7),_(8,"translate"),r(),s(9),r(),h(10,lf,5,4,"div",242)(11,_f,8,6,"div",12),r()),t&2){let e=d(2);o(3),b("",m(4,5,"GROUP_CLASSES_ADMIN.SUCCESS"),"!"),o(4),b("",m(8,7,"GROUP_CLASSES_ADMIN.TOTAL_FLASHCARDS"),":"),o(2),b(" ",e.pdfAutomationResult.totalCards," "),o(),p("ngIf",e.pdfAutomationResult.extraction),o(),p("ngIf",e.pdfAutomationResult.structuring)}}
12function gf(t,c){if(t&1&&(a(0,"div",230),s(1),r()),t&2){let e=d(2);o(),b(" ",e.pdfAutomationError," ")}}function uf(t,c){t&1&&(a(0,"div",244)(1,"small",58)(2,"strong"),s(3),_(4,"translate"),r(),s(5),_(6,"translate"),r()()),t&2&&(o(3),b("",m(4,2,"GROUP_CLASSES_ADMIN.NOTE"),":"),o(2),b(" ",m(6,4,"GROUP_CLASSES_ADMIN.PDF_AUTOMATION_INFO")," "))}function Cf(t,c){t&1&&v(0,"span",218)}function ff(t,c){if(t&1&&(a(0,"div",245)(1,"strong"),s(2),_(3,"translate"),r(),s(4),r()),t&2){let e=d(2);o(2),b("",m(3,2,"GROUP_CLASSES_ADMIN.TOTAL_FLASHCARDS"),":"),o(2),b(" ",e.flashcards.length," ")}}function hf(t,c){t&1&&(a(0,"div",246)(1,"div",247)(2,"span",235),s(3,"Loading..."),r()(),a(4,"p",58),s(5),_(6,"translate"),r()()),t&2&&(o(5),b("",m(6,1,"GROUP_CLASSES_ADMIN.DELETING"),"..."))}function xf(t,c){t&1&&v(0,"span",218)}function bf(t,c){if(t&1){let e=M();a(0,"div",2)(1,"h1",3),s(2),_(3,"translate"),r(),h(4,L1,1,8,"app-assign-task-button",4),r(),a(5,"div",5)(6,"div",6),h(7,N1,13,4,"div",7)(8,V1,4,3),r(),a(9,"div",8)(10,"div",9),h(11,F1,2,4,"span",10),r(),h(12,U1,19,15,"div",11)(13,H1,2,0,"div",12)(14,Y1,3,4,"div",12)(15,X1,3,3,"div",12),r()(),a(16,"app-confirmation-modal",13),x("confirm",function(){C(e);let i=d();return f(i.onConfirmDelete())})("cancel",function(){C(e);let i=d();return f(i.onCancelDelete())}),r(),a(17,"div",14)(18,"div",15)(19,"div",16)(20,"div",17)(21,"h1",18),s(22),_(23,"translate"),r(),a(24,"button",19),x("click",function(){C(e);let i=d();return f(i.resetFlashcardForm())}),r()(),a(25,"div",20)(26,"div",21)(27,"div",22),h(28,J1,11,4,"div",23),r(),a(29,"div",24)(30,"form",25)(31,"div",26)(32,"label",27),s(33),_(34,"translate"),r(),a(35,"div",28)(36,"select",29)(37,"option",30),s(38,"Quiz"),r(),a(39,"option",31),s(40,"Explanation"),r()()(),v(41,"app-Form-errors",32),r(),a(42,"div",33)(43,"label",34),s(44),_(45,"translate"),r(),a(46,"div",28)(47,"select",35),z(48,Z1,3,4,"option",36,De),r()(),v(50,"app-Form-errors",32),r(),h(51,uC,22,17,"section")(52,MC,8,2)(53,DC,90,28),r()(),a(54,"div",37)(55,"label",38),s(56),_(57,"translate"),r(),a(58,"div",39),h(59,BC,1,1)(60,LC,1,1)(61,NC,1,1)(62,VC,1,1)(63,FC,1,1)(64,UC,1,1)(65,HC,1,2)(66,GC,1,2)(67,qC,1,2)(68,WC,1,2)(69,zC,1,2)(70,KC,1,2)(71,$C,1,2)(72,jC,2,0)(73,QC,1,1)(74,YC,1,1),r()()()(),a(75,"div",40)(76,"button",41),x("click",function(){C(e);let i=d();return f(i.resetFlashcardForm())}),s(77),_(78,"translate"),r(),a(79,"button",42),x("click",function(){C(e);let i=d();return f(i.onSubmit())}),s(80),_(81,"translate"),r()()()()(),a(82,"div",43)(83,"div",44)(84,"div",45)(85,"div",17)(86,"h5",46),s(87),_(88,"translate"),r(),a(89,"button",19),x("click",function(){C(e);let i=d();return f(i.resetImportModal())}),r()(),a(90,"div",20)(91,"div",26)(92,"label",47),s(93),_(94,"translate"),r(),a(95,"select",48),T("ngModelChange",function(i){C(e);let l=d();return A(l.importFormat,i)||(l.importFormat=i),f(i)}),a(96,"option",49),s(97),_(98,"translate"),r(),a(99,"option",30),s(100),_(101,"translate"),r()()(),a(102,"div",26)(103,"label",47),s(104),_(105,"translate"),r(),a(106,"select",48),T("ngModelChange",function(i){C(e);let l=d();return A(l.importSkillType,i)||(l.importSkillType=i),f(i)}),a(107,"option",50),s(108,"Vocabulary"),r(),a(109,"option",51),s(110,"Grammar"),r(),a(111,"option",52),s(112,"Reading"),r(),a(113,"option",53),s(114,"Listening"),r(),a(115,"option",54),s(116,"Writing"),r(),a(117,"option",55),s(118,"Speaking"),r()()(),a(119,"div",26)(120,"label",47),s(121),_(122,"translate"),r(),a(123,"select",48),T("ngModelChange",function(i){C(e);let l=d();return A(l.importLevel,i)||(l.importLevel=i),f(i)}),h(124,XC,2,2,"option",56),r()(),a(125,"div",26)(126,"label",47),s(127),_(128,"translate"),r(),a(129,"input",57,0),x("change",function(i){C(e);let l=d();return f(l.onImportFileSelected(i))}),r(),a(131,"small",58),s(132,"Only .json files are supported"),r()(),h(133,JC,7,7,"div",59)(134,ZC,2,1,"div",60),r(),a(135,"div",40)(136,"button",61),x("click",function(){C(e);let i=d();return f(i.resetImportModal())}),s(137),_(138,"translate"),r(),a(139,"button",62),x("click",function(){C(e);let i=d();return f(i.importFlashcards())}),h(140,ef,1,0,"span",63),s(141),_(142,"translate"),_(143,"translate"),r()()()()(),a(144,"div",64)(145,"div",44)(146,"div",45)(147,"div",17)(148,"h5",65),s(149),_(150,"translate"),r(),a(151,"button",66),x("click",function(){C(e);let i=d();return f(i.resetPdfAutomationModal())}),r()(),a(152,"div",20)(153,"div",26)(154,"label",47),s(155),_(156,"translate"),r(),a(157,"select",67),T("ngModelChange",function(i){C(e);let l=d();return A(l.pdfLevel,i)||(l.pdfLevel=i),f(i)}),h(158,tf,2,2,"option",56),r(),a(159,"small",58),s(160),_(161,"translate"),r()(),a(162,"div",26)(163,"label",47),s(164),_(165,"translate"),r(),a(166,"select",67),T("ngModelChange",function(i){C(e);let l=d();return A(l.pdfSessionNumber,i)||(l.pdfSessionNumber=i),f(i)}),a(167,"option",68),s(168),_(169,"translate"),r(),h(170,nf,3,5,"option",69),r(),h(171,of,3,3,"small",70)(172,rf,4,7,"small",71),r(),a(173,"div",26)(174,"label",47),s(175),_(176,"translate"),r(),a(177,"input",72),x("change",function(i){C(e);let l=d();return f(l.onPdfFileSelected(i))}),r(),a(178,"small",58),s(179),_(180,"translate"),r()(),h(181,af,6,4,"div",59)(182,sf,13,7,"div",73)(183,mf,12,9,"div",74)(184,gf,2,1,"div",60)(185,uf,7,6,"div",75),r(),a(186,"div",40)(187,"button",76),x("click",function(){C(e);let i=d();return f(i.resetPdfAutomationModal())}),s(188),_(189,"translate"),r(),a(190,"button",62),x("click",function(){C(e);let i=d();return f(i.automatePdfFlashcards())}),h(191,Cf,1,0,"span",63),s(192),_(193,"translate"),_(194,"translate"),r()()()()(),a(195,"div",77)(196,"div",44)(197,"div",45)(198,"div",17)(199,"h5",78),s(200),_(201,"translate"),r(),v(202,"button",79),r(),a(203,"div",20)(204,"div",80)(205,"span",81),s(206,"\u26A0\uFE0F"),r(),a(207,"div")(208,"p",82),s(209),_(210,"translate"),r(),a(211,"p",83),s(212),_(213,"translate"),r()()(),h(214,ff,5,4,"div",84)(215,hf,7,3,"div",85),r(),a(216,"div",40)(217,"button",86),s(218),_(219,"translate"),r(),a(220,"button",87),x("click",function(){C(e);let i=d();return f(i.deleteAllFlashcards())}),h(221,xf,1,0,"span",63),s(222),_(223,"translate"),_(224,"translate"),r()()()()()}if(t&2){let e,n,i,l=d();o(2),g(m(3,85,"GROUP_CLASSES_ADMIN.SESSION_FLASHCARDS")),o(2),P(4,l.sessionId?4:-1),o(3),P(7,l.sessionInfo?7:8),o(4),p("ngForOf",l.tabs)("ngForTrackBy",l.trackByIndex),o(),p("ngIf",l.selectedTab.skillType!==null),o(),p("ngIf",l.isLoadingFlashcards),o(),p("ngIf",!l.isLoadingFlashcards&&l.filteredFlashcards.length>0),o(),p("ngIf",!l.isLoadingFlashcards&&l.filteredFlashcards.length===0),o(),p("buttonColor","red"),o(6),g(m(23,87,"GROUP_CLASSES_ADMIN.FLASHCARD_DETAILS")),o(6),P(28,l.sessionInfo?28:-1),o(2),p("formGroup",l.flashcardForm),o(3),g(m(34,89,"GROUP_CLASSES_ADMIN.FLASHCARD_CATEGORY")),o(3),p("ngClass",D(151,He,l.flashcardForm.controls.flashCardCategory.errors&&l.flashcardForm.controls.flashCardCategory.touched)),o(5),p("control",l.flashcardForm.controls.flashCardCategory),o(3),g(m(45,91,"GROUP_CLASSES_ADMIN.SKILL_TYPE")),o(3),p("ngClass",D(153,He,((e=l.flashcardForm.get("relation.skillType"))==null?null:e.errors)&&((e=l.flashcardForm.get("relation.skillType"))==null?null:e.touched))
12),o(),K(l.skillTypes),o(2),p("control",l.flashcardForm.get("relation.skillType")),o(),P(51,((n=l.flashcardForm.get("flashCardCategory"))==null?null:n.value)==="quiz"?51:-1),o(),P(52,l.flashcardForm.controls.flashCardType.value&&l.flashcardForm.contains("promptData")?52:-1),o(),P(53,l.flashcardForm.controls.flashCardType.value&&l.flashcardForm.controls.flashCardType.value!=="explanation"?53:-1),o(3),g(m(57,93,"ADD_MODEL_ANSWER.PREVIEW")),o(3),P(59,(i=(i=l.flashcardForm.get("flashCardType"))==null?null:i.value)==="structure"?59:i==="choose_and_fill_paragraph"?60:i==="choose_and_fill_sentence"?61:i==="open-question"?62:i==="binaryCategorization"?63:i==="structureMatch"?64:i==="multipleChoice"?65:i==="mcq"?66:i==="trueFalse"?67:i==="complete"?68:i==="translate"?69:i==="wordsOrder"?70:i==="rearrangeLetters"?71:i==="listening"?72:i==="pronounce"?73:74),o(18),g(m(78,95,"COMMON.CANCEL")),o(3),g(m(81,97,"COMMON.SAVE")),o(7),g(m(88,99,"GROUP_CLASSES_ADMIN.IMPORT_MODAL_TITLE")),o(6),g(m(94,101,"GROUP_CLASSES_ADMIN.SELECT_FORMAT")),o(2),k("ngModel",l.importFormat),o(2),g(m(98,103,"GROUP_CLASSES_ADMIN.FORMAT_FLASHCARD")),o(3),g(m(101,105,"GROUP_CLASSES_ADMIN.FORMAT_QUIZ")),o(4),g(m(105,107,"GROUP_CLASSES_ADMIN.SKILL_TYPE")),o(2),k("ngModel",l.importSkillType),o(15),g(m(122,109,"GROUP_CLASSES_ADMIN.LEVEL")),o(2),k("ngModel",l.importLevel),o(),p("ngForOf",l.questionLevels)("ngForTrackBy",l.trackByIndex),o(3),g(m(128,111,"GROUP_CLASSES_ADMIN.SELECT_FILE")),o(6),p("ngIf",l.importFilePreview),o(),p("ngIf",l.importError),o(3),b(" ",m(138,113,"COMMON.CANCEL")," "),o(2),p("disabled",!l.selectedImportFile||l.isImporting),o(),p("ngIf",l.isImporting),o(),b(" ",l.isImporting?m(142,115,"GROUP_CLASSES_ADMIN.IMPORTING"):m(143,117,"GROUP_CLASSES_ADMIN.IMPORT_FLASHCARDS")," "),o(8),g(m(150,119,"GROUP_CLASSES_ADMIN.PDF_AUTOMATION_TITLE")),o(2),p("disabled",l.isPdfAutomating),o(4),g(m(156,121,"GROUP_CLASSES_ADMIN.CEFR_LEVEL")),o(2),k("ngModel",l.pdfLevel),p("disabled",l.isPdfAutomating),o(),p("ngForOf",l.cefrLevels)("ngForTrackBy",l.trackByIndex),o(2),g(m(161,123,"GROUP_CLASSES_ADMIN.SELECT_COURSE_LEVEL")),o(4),g(m(165,125,"GROUP_CLASSES_ADMIN.SESSION_NUMBER")),o(2),k("ngModel",l.pdfSessionNumber),p("disabled",l.isPdfAutomating||!!(l.sessionInfo!=null&&l.sessionInfo.sessionOrder&&l.pdfSessionNumber)),o(),p("ngValue",null),o(),g(m(169,127,"GROUP_CLASSES_ADMIN.SELECT_SESSION_ORDER")),o(2),p("ngForOf",l.sessionNumbers)("ngForTrackBy",l.trackByIndex),o(),p("ngIf",!(l.sessionInfo!=null&&l.sessionInfo.sessionOrder)),o(),p("ngIf",(l.sessionInfo==null?null:l.sessionInfo.sessionOrder)&&l.pdfSessionNumber),o(3),g(m(176,129,"GROUP_CLASSES_ADMIN.UPLOAD_PDF_FILE")),o(2),p("disabled",l.isPdfAutomating),o(2),b("",m(180,131,"GROUP_CLASSES_ADMIN.ONLY_PDF_SUPPORTED")," (Max 30MB)"),o(2),p("ngIf",l.selectedPdfFile&&!l.isPdfAutomating),o(),p("ngIf",l.isPdfAutomating),o(),p("ngIf",l.pdfAutomationResult&&!l.isPdfAutomating),o(),p("ngIf",l.pdfAutomationError),o(),p("ngIf",!l.isPdfAutomating&&!l.pdfAutomationResult),o(2),p("disabled",l.isPdfAutomating),o(),b(" ",m(189,133,"COMMON.CANCEL")," "),o(2),p("disabled",!l.selectedPdfFile||l.isPdfAutomating||!!l.pdfAutomationResult),o(),p("ngIf",l.isPdfAutomating),o(),b(" ",l.isPdfAutomating?m(193,135,"GROUP_CLASSES_ADMIN.PROCESSING"):m(194,137,"GROUP_CLASSES_ADMIN.START_AUTOMATION")," "),o(8),b(" ",m(201,139,"GROUP_CLASSES_ADMIN.DELETE_ALL_FLASHCARDS")," "),o(2),p("disabled",l.isDeletingAll),o(7),g(m(210,141,"GROUP_CLASSES_ADMIN.DELETE_ALL_CONFIRMATION")),o(3),g(m(213,143,"GROUP_CLASSES_ADMIN.DELETE_ALL_WARNING")),o(2),p("ngIf",l.flashcards.length>0),o(),p("ngIf",l.isDeletingAll),o(2),p("disabled",l.isDeletingAll),o(),b(" ",m(219,145,"COMMON.CANCEL")," "),o(2),p("disabled",l.isDeletingAll),o(),p("ngIf",l.isDeletingAll),o(),b(" ",l.isDeletingAll?m(223,147,"GROUP_CLASSES_ADMIN.DELETING"):m(224,149,"GROUP_CLASSES_ADMIN.DELETE_ALL")," ")}}var ra=(()=>{class t{constructor(e,n,i,l,u,O,E,V){this.platformId=e,this.fb=n,this.http=i,this.toast=l,this.breadcrumbService=u,this.route=O,this.localStorageService=E,this.cohortService=V,this.$destroy$=new ve,this.levelMap={},this.selectedFlashcard=null,this.batchId="",this.levelId="",this.courseId="",this.sessionId="",this.sessionInfo=null,this.lang="en",this.isLoading=!1,this.isLoadingFlashcards=!1,this.showOptionsModal=!1,this.isEditMode=!1,this.editingFlashcardId=null,this.isImporting=!1,this.importFormat="flashcard",this.importSkillType="vocabulary",this.importLevel=1,this.selectedImportFile=null,this.importFilePreview=null,this.importError=null,this.isPdfAutomating=!1,this.selectedPdfFile=null,this.pdfLevel="A1.1",this.pdfSessionNumber=null,this.pdfAutomationProgress="",this.pdfAutomationResult=null,this.pdfAutomationError=null,this.cefrLevels=["A1.1","A1.2","A2.1","A2.2","B1.1","B1.2","B2.1","B2.2"],this.sessionNumbers=[1,2,3,4,5,6,7,8,9,10,11,12],this.isDeletingAll=!1,this.isTranslatingHint=!1,this.isTranslatingAnswer=!1,this.isTranslatingExplanation=!1,this.isTranslatingExamples=[],this.flashCardTypes=["complete","wordsOrder","rearrangeLetters","translate","mcq","multipleChoice","trueFalse","listening","structure","pronounce","choose_and_fill_paragraph","choose_and_fill_sentence","open-question","binaryCategorization","structureMatch"],this.flashCardTypeDisplayNames={complete:"Complete",wordsOrder:"Words Order",rearrangeLetters:"Rearrange Letters",translate:"Translate",mcq:"MCQ",multipleChoice:"Multiple Choice",trueFalse:"True/False",listening:"Listening",structure:"Structure",pronounce:"Pronunciation",choose_and_fill_paragraph:"Choose & Fill Paragraph",choose_and_fill_sentence:"Choose & Fill Sentence","open-question":"Open Question",binaryCategorization:"Binary Categorization",structureMatch:"Structure Match"},this.skillTypes=["grammar","vocabulary","reading","listening","writing","speaking"],this.reviewFlashcards=[],this.flashcards=[],this.questionLevels=[{code:"C2",name:"C2",value:8},{code:"C1+",name:"C1+",value:7},{code:"C1",name:"C1",value:6},{code:"B2+",name:"B2+",value:5},{code:"B2",name:"B2",value:4},{code:"B1",name:"B1",value:3},{code:"A2",name:"A2",value:2},{code:"A1",name:"A1",value:1}],this.tabs=[{label:"All",skillType:null,count:0},{label:"Grammar",skillType:"grammar",count:0},{label:"Vocabulary",skillType:"vocabulary",count:0},{label:"Reading",skillType:"reading",count:0},{label:"Listening",skillType:"listening",count:0},{label:"Writing",skillType:"writing",count:0},{label:"Speaking",skillType:"speaking",count:0}
12],this.selectedTab=this.tabs[0],this.questionLevels.forEach(L=>{this.levelMap[L.value]=L.code})}ngOnInit(){this.lang=this.localStorageService.getItem("currentLang")||"en",this.batchId=this.route.snapshot.paramMap.get("batchId")||"",this.levelId=this.route.snapshot.paramMap.get("levelId")||"",this.sessionId=this.route.snapshot.paramMap.get("sessionId")||"",this.initForm(),this.resolveCourseId()}ngOnDestroy(){this.$destroy$.next(),this.$destroy$.complete()}resolveCourseId(){this.isLoading=!0,this.cohortService.getBatchDetails(this.batchId).pipe(U(this.$destroy$)).subscribe({next:e=>{let l=((e.data||e).levels||[]).find(u=>u.levelId===this.levelId||u.id===this.levelId);l&&l.courseId?(this.courseId=l.courseId,this.setBreadcrumb(),this.fetchSessionInfo(),this.fetchFlashcards(),this.fetchReviewFlashcards()):(this.isLoading=!1,this.toast.error("Could not resolve course for this level"))},error:()=>{this.isLoading=!1,this.toast.error("Failed to load batch details")}})}setBreadcrumb(){this.breadcrumbService.setItems([{label:"SIDENAV.COHORTS",routerLink:["/main/dashboard/cohorts/batches"]},{label:"Sessions",routerLink:["/main/dashboard/cohorts/batches",this.batchId,"levels",this.levelId,"sessions"]},{label:"Flashcards"}])}get examples(){return this.flashcardForm.get("review.examples")}get filteredFlashcards(){return this.selectedTab.skillType?this.flashcards.filter(e=>e.relation.skillType===this.selectedTab.skillType):this.flashcards}get promptOptions(){return this.flashcardForm.get("promptData.promptOptions")}get answers(){return this.flashcardForm.get("promptData.answer")}trackByFn(e,n){return n.id}initForm(){this.flashcardForm=this.fb.group({flashCardCategory:["",S.required],flashCardType:["",S.required],hint:this.fb.group({shouldDisplay:[!0,S.required],content:this.fb.group({default:[""],en:[""],ar:[""]})}),review:this.fb.group({answer:this.fb.group({default:[""],en:[""],ar:[""]}),explanation:this.fb.group({default:[""],en:[""],ar:[""]}),examples:this.fb.array([this.createExample()])}),relation:this.fb.group({levelNumeric:[1,S.required],skillType:[this.selectedTab.skillType,S.required],examName:["TCF"],relatedType:["session",S.required],relatedId:[this.sessionId,S.required],courseId:[this.courseId,S.required],reviewFlashCardId:[""]})}),setTimeout(()=>{this.syncBinaryCategorizationData()},100),this.flashcardForm.get("flashCardCategory")?.valueChanges.subscribe(e=>{let n=this.flashcardForm.get("flashCardType"),i=this.flashcardForm.get("relation.levelNumeric"),l=this.flashcardForm.get("hint.shouldDisplay"),u=this.flashcardForm.get("hint.content.default"),O=this.flashcardForm.get("review.answer.default");e==="explanation"?(n?.setValue("explanation"),i?.setValue(1),l?.setValue(!0),u?.clearValidators(),u?.updateValueAndValidity(),O?.clearValidators(),O?.updateValueAndValidity()):(n?.setValue("",{emitEvent:!1}),i?.setValue(1),u?.clearValidators(),u?.updateValueAndValidity(),O?.clearValidators(),O?.updateValueAndValidity())}),this.flashcardForm.get("flashCardType")?.valueChanges.subscribe(e=>{if(this.addFormControlsForTemplate(e),e==="explanation"){let n=this.flashcardForm.get("promptData.description");n?.clearValidators(),n?.updateValueAndValidity()}if(e==="binaryCategorization"&&setTimeout(()=>{this.syncBinaryCategorizationData()},0),e==="structureMatch"){let n=this.flashcardForm.get("promptData.prompts");n&&(this.syncStructureMatchAnswerArray(),n.valueChanges.subscribe(()=>{this.syncStructureMatchAnswerArray()}))}})}createPrompts(){let e=this.flashcardForm.get("flashCardType")?.value,n={promptType:["",S.required],promptText:[""],promptAudioTTS:[""],promptAudioURL:[""],promptAudioId:[""],isTranslatable:[!0],isTranscript:[!1],style:this.fb.group({backgroundColor:[""],border:this.fb.group({style:[""],width:[null],color:["#21b6b6"]}),divider:this.fb.group({show:[!1],style:[""],color:["#21b6b6"],thickness:[null]})})};return e==="structureMatch"&&(n.correctIndex=[null,S.required]),this.fb.group(n)}createPromptGroupWithStyle(e){let n=this.flashcardForm.get("flashCardType")?.value,i={promptType:[e.promptType||"",S.required],promptText:[e.promptText||""],promptAudioTTS:[e.promptAudioTTS||""],promptAudioURL:[e.promptAudioURL||""],promptAudioId:[e.promptAudioId||""],isTranslatable:[n==="wordsOrder"?!1:e.isTranslatable??!0],isTranscript:[e.isTranscript??!1]};if((e.promptType==="text"||e.promptType==="html")&&(i.tts=[e.tts||""]),n==="structureMatch"&&(i.correctIndex=[e.correctIndex||null,S.required]),(e.promptType==="image"||e.promptImageURL||e.promptImageId)&&(i.promptImageURL=[e.promptImageURL||""],i.promptImageId=[e.promptImageId||""]),e.promptType==="video"||e.promptVideoURL_en||e.promptVideoId_en||e.promptVideoURL_fr||e.promptVideoId_fr||e.promptVideoURL||e.promptVideoId){let l=e.promptVideoURL||"",u=e.promptVideoId||"";i.promptVideoURL_en=[e.promptVideoURL_en||l],i.promptVideoId_en=[e.promptVideoId_en||u],i.promptVideoURL_fr=[e.promptVideoURL_fr||""],i.promptVideoId_fr=[e.promptVideoId_fr||""]}if((e.promptType==="video"||e.promptThumbnailUrl||e.promptThumbnailURL||e.promptThumbnailId)&&(i.promptThumbnailUrl=[e.promptThumbnailUrl||e.promptThumbnailURL||""],i.promptThumbnailId=[e.promptThumbnailId||""]),e.style){let l={};e.style.backgroundColor&&(l.backgroundColor=[e.style.backgroundColor]),e.style.border&&(l.border=this.fb.group({style:[e.style.border.style||""],width:[e.style.border.width||null],color:[e.style.border.color||"#21b6b6"]})),e.style.divider&&(l.divider=this.fb.group({show:[e.style.divider.show||!1],style:[e.style.divider.style||""],color:[e.style.divider.color||"#21b6b6"],thickness:[e.style.divider.thickness||null]})),Object.keys(l).length>0&&(i.style=this.fb.group(l))}return this.fb.group(i)}createExample(){return this.fb.group({default:[""],en:[""],ar:[""]})}addExample(){this.examples.push(this.createExample())}addStructureOption(){let e=this.flashcardForm.get("promptData.promptOptions");e&&e.push(this.fb.control("",S.required))}removeStructureOption(e){let n=this.flashcardForm.get("promptData.promptOptions");n&&n.length>1&&(this.updatePromptsAfterStructureRemoval(e),n.removeAt(e))}updatePromptsAfterStructureRemoval(e){let n=this.flashcardForm.get("promptData.prompts");
12n&&n.controls.forEach(i=>{let l=i,u=l.get("correctIndex")?.value;u===e?l.get("correctIndex")?.setValue(null):u>e&&l.get("correctIndex")?.setValue(u-1)})}getLetter(e){return String.fromCharCode(65+e)}toggleMultipleChoiceAnswer(e,n){let i=this.flashcardForm.get("promptData.answer");if(i)if(n.target.checked)(i.value||[]).includes(e)||i.push(this.fb.control(e));else{let u=(i.value||[]).indexOf(e);u>-1&&i.removeAt(u)}}getAnswerLetter(e){return String.fromCharCode(65+e)}getSelectedAnswersCount(){let e=this.flashcardForm.get("promptData.answer");return e?e.length:0}isAnswerSelected(e){let n=this.flashcardForm.get("promptData.answer");return n?(n.value||[]).includes(e):!1}onFlashcardCategoryChange(e){this.flashcardForm.get("flashCardCategory")?.setValue(e)}syncAnswerArrayWithPrompts(){if(this.flashcardForm?.get("flashCardType")?.value==="binaryCategorization")this.syncBinaryCategorizationData();else{let n=this.flashcardForm.get("promptData.prompts"),i=this.flashcardForm.get("promptData.answer");if(n&&i){for(;i.length>0;)i.removeAt(0);n.controls.forEach((l,u)=>{let E=l.get("category")?.value||"";i.push(this.fb.group({statementIndex:[u,S.required],category:[E,S.required]}))})}}}syncStructureMatchAnswerArray(){let e=this.flashcardForm.get("promptData.prompts"),n=this.flashcardForm.get("promptData.answer");if(e&&n){for(;n.length>0;)n.removeAt(0);e.controls.forEach((i,l)=>{let O=i.get("correctIndex")?.value;n.push(this.fb.group({statementIndex:[l,S.required],correctIndex:[O,S.required]}))})}}updateAnswerArrayBeforeSubmit(){let e=this.flashcardForm.get("flashCardType")?.value;e==="binaryCategorization"?this.syncAnswerArrayWithPrompts():e==="structureMatch"&&this.syncStructureMatchAnswerArray()}addFormControlsForTemplate(e){this.flashcardForm.contains("promptData")&&this.flashcardForm.removeControl("promptData");let n={description:["",S.required],isDescriptionTranslatable:[!0],prompts:this.fb.array([this.createPrompts()])},i={explanation:{prompts:this.fb.array([this.fb.group({promptType:["",S.required],isTranslatable:[!0],isTranscript:[!1]})])},complete:{answer:["",S.required]},trueFalse:{answer:["",S.required]},translate:{answer:["",S.required]},choose:{answer:["",S.required],promptOptions:this.fb.array([this.fb.control("",S.required),this.fb.control("",S.required),this.fb.control("",S.required),this.fb.control("",S.required)],S.required)},mcq:{answer:["",S.required],promptOptions:this.fb.array([this.fb.control("",S.required),this.fb.control("",S.required),this.fb.control("",S.required),this.fb.control("",S.required)],{validators:[S.required,this.distinctAnswersValidator]})},multipleChoice:{description:["",S.required],answer:this.fb.array([],S.required),promptOptions:this.fb.array([this.fb.control("",S.required),this.fb.control("",S.required),this.fb.control("",S.required),this.fb.control("",S.required)],{validators:[S.required,this.distinctAnswersValidator]})},rearrangeLetters:{answer:["",S.required],promptOptions:[[],S.required]},wordsOrder:{promptOptions:[[],S.required],answer:this.fb.array([])},dragAndDrop:{promptOptions:[[],S.required],answer:this.fb.array([this.createAnswerOptions()])},listening:{answer:["",S.required]},pronounce:{answer:["",S.required]},structure:{description:["Choose the right Structure element",S.required],prompts:this.fb.array([this.fb.group({promptType:["text",S.required],promptText:["Match the content type for frame",S.required]})]),promptOptions:[[],S.required],answer:this.fb.array([])},choose_and_fill_paragraph:this.fb.group({description:["",S.required],prompts:this.fb.array([this.fb.group({promptType:["text",S.required],promptText:["",S.required]})]),promptOptions:this.fb.array([]),answer:this.fb.array([])},{validators:this.chooseAndFillParagraphValidator}),choose_and_fill_sentence:this.fb.group({description:["",S.required],prompts:this.fb.array([this.fb.group({promptType:["text",S.required],promptText:["",S.required]})]),promptOptions:this.fb.array([]),answer:this.fb.array([])},{validators:this.chooseAndFillParagraphValidator}),open_question:this.fb.group({description:["",S.required],prompts:this.fb.array([this.fb.group({promptType:["text",S.required],promptText:["",S.required]})])}),binaryCategorization:{description:["",S.required],topic:["",S.required],prompts:this.fb.array([this.fb.group({promptType:["text",S.required],promptText:["",S.required],category:["",S.required]})],S.required),promptOptions:[["For","Against"],S.required],answer:this.fb.array([this.fb.group({statementIndex:[0,S.required],category:["",S.required]})],S.required)},structureMatch:{description:["",S.required],prompts:this.fb.array([this.fb.group({promptType:["text",S.required],promptText:["",S.required],correctIndex:[null,S.required]})],S.required),promptOptions:this.fb.array([this.fb.control("Introduction",S.required),this.fb.control("Body Paragraph 1",S.required),this.fb.control("Conclusion",S.required)],S.required),answer:this.fb.array([this.fb.group({statementIndex:[0,S.required],correctIndex:[null,S.required]})],S.required)}},l=W(W({},n),i[e]);if(l){let u=this.fb.group(l);e==="structureMatch"&&u.setValidators(this.structureMatchValidator),e==="multipleChoice"&&u.setValidators(this.multipleChoiceValidator),this.flashcardForm.addControl("promptData",u)}}createAnswerOptions(){return this.fb.group({option:["",S.required],correctIndex:["",S.required]})}createFlashcardPromptData(e){let n=e.promptData||{},i={prompts:this.fb.array([]),isDescriptionTranslatable:[n.isDescriptionTranslatable??!0]};switch(e.flashCardType){case"mcq":i.description=[n.description||"",S.required],i.answer=[typeof n.answer=="string"?parseInt(n.answer,10):n.answer,S.required],i.promptOptions=this.fb.array(n.promptOptions?.map(l=>this.fb.control(l,S.required))||this.fb.array([],[S.required,this.distinctAnswersValidator]));break;case"trueFalse":case"listening":case"translate":case"complete":i.description=[n.description||"",S.required],i.answer=[n.answer||"",S.required];break;case"pronounce":i.description=[n.description||"",S.required],i.answer=[n.answer||"",S.required];break;case"wordsOrder":i.description=[n.description||"",S.required],i.promptOptions=this.fb.array(n.promptOptions||[],S.required),i.answer=this.fb.array((n.answer||[]).map(l
12=>this.fb.group({option:[l.option],correctIndex:[l.correctIndex]})),S.required);break;case"choose_and_fill_sentence":case"choose_and_fill_paragraph":i.description=[n.description||"",S.required],i.promptOptions=this.fb.array((n.promptOptions||[]).map(l=>this.fb.control(l,S.required))),i.answer=this.fb.array((n.answer||[]).map(l=>this.fb.group({option:[l.option||"",S.required],correctIndex:[l.correctIndex!==void 0?l.correctIndex:null,S.required]})));break;case"rearrangeLetters":i.description=[n.description||"",S.required],i.promptOptions=this.fb.array(n.promptOptions?.map(l=>this.fb.control(l,S.required))||[],S.required),i.answer=this.fb.array((n.answer||[]).map(l=>this.fb.group({option:[l.option||""],correctIndex:[l.correctIndex!==void 0?parseInt(l.correctIndex):null,S.required]})),S.required);break;case"structure":i.description=[n.description||"Choose the right Structure element",S.required],i.promptOptions=[[],S.required],i.answer=this.fb.array((n.answer||[]).map(l=>this.fb.group({option:[l.option||"",S.required],correctIndex:[l.correctIndex!==void 0?l.correctIndex:null,S.required]})));break;case"binaryCategorization":i.description=[n.description||"",S.required],i.topic=[n.topic||"",S.required],i.promptOptions=this.fb.array((n.promptOptions||["For","Against"]).map(l=>this.fb.control(l,S.required))),i.answer=this.fb.array((n.answer||[]).map(l
12=>this.fb.group({statementIndex:[l.statementIndex!==void 0?l.statementIndex:null,S.required],category:[l.category||"",S.required]})));break;case"structureMatch":i.description=[n.description||"",S.required],i.promptOptions=this.fb.array((n.promptOptions||[]).map(l=>this.fb.control(l,S.required))),i.answer=this.fb.array((n.answer||[]).map(l=>this.fb.group({statementIndex:[l.statementIndex!==void 0?l.statementIndex:null,S.required],correctIndex:[l.correctIndex!==void 0?l.correctIndex:null,S.required]})));break;case"open-question":i.description=[n.description||"",S.required];break;case"multipleChoice":i.description=[n.description||"",S.required],i.promptOptions=this.fb.array((n.promptOptions||[]).map(l=>this.fb.control(l,S.required))),i.answer=this.fb.array((n.answer||[]).map(l=>this.fb.group({option:[l.option||"",S.required],correctIndex:[l.correctIndex!==void 0?l.correctIndex:null,S.required]})));break}if(n.prompts){let l=i.prompts;n.prompts.forEach(u=>{let O=this.createPromptGroupWithStyle(u);l.push(O)})}if(e.flashCardType==="structureMatch"&&n.answer&&n.answer.length>0){let l=i.prompts;i.answer.controls.forEach(O=>{let E=O,V=E.get("statementIndex")?.value,L=E.get("correctIndex")?.value;V!=null&&L!==null&&L!==void 0&&l.at(V)&&l.at(V).get("correctIndex")?.setValue(L)})}return this.fb.group(i)}getAnswerCategory(e){let n=this.flashcardForm?.get("promptData.answer");return!n||e>=n.length?"":n.at(e)?.get("category")?.value||""}updateAnswerCategory(e,n){let i=this.flashcardForm?.get("promptData.answer");if(!i||e>=i.length)return;i.at(e)?.get("category")?.setValue(n)}syncBinaryCategorizationData(){if(this.flashcardForm?.get("flashCardType")?.value!=="binaryCategorization")return;let n=this.flashcardForm?.get("promptData.promptOptions"),i=this.flashcardForm?.get("promptData.answer"),l=this.flashcardForm?.get("promptData.prompts");!n||!i||!l||(n.clear(),n.push(this.fb.control("For",S.required)),n.push(this.fb.control("Against",S.required)),(i.length===0||i.length!==l.length)&&(i.clear(),l.controls.forEach((u,O)=>{let E=i.at(O),V=E?E.get("category")?.value:"";i.push(this.fb.group({statementIndex:[O,S.required],category:[V||"",S.required]}))})))}distinctAnswersValidator(e){if(!e||!(e instanceof $t))return null;let n=e.controls.map(l=>l.value?.trim?.()??"");return n.some((l,u)=>n.indexOf(l)!==u&&l!=="")?{distinctAnswers:!0}:null}chooseAndFillParagraphValidator(e){if(!e||!(e instanceof xt))return null;let n=e.value;if(!n)return null;let l=((n.prompts?.[0]?.promptText||"").match(/\$\{placeholder\}/g)||[]).length,u=n.answer||[],O=u.length;if(l!==O)return{placeholderMismatch:{placeholderCount:l,answerCount:O,message:`Number of placeholders (${l}) must match number of answers (${O})`}};let E=u.map(ee=>ee.correctIndex).sort((ee,rt)=>ee-rt),V=Array.from({length:O},(ee,rt)=>rt);if(JSON.stringify(E)!==JSON.stringify(V))return{nonSequentialIndices:{correctIndices:E,expectedIndices:V,message:"correctIndex values must be sequential starting from 0"}};let L=n.promptOptions||[],Z=u.map(ee=>ee.option).filter(ee=>!L.includes(ee));return Z.length>0?{missingOptions:{missingOptions:Z,message:`Answer options not found in promptOptions: ${Z.join(", ")}`}}:null}structureMatchValidator(e){if(!e||!(e instanceof xt))return null;let n=e.value;if(!n)return null;let i=n.prompts||[],l=n.promptOptions||[];if(l.length===0)return{noStructureOptions:{message:"At least one structure option is required"}};if(i.length===0)return{noStatements:{message:"At least one statement is required"}};let u=i.filter(E=>E.correctIndex===null||E.correctIndex===void 0);if(u.length>0)return{incompleteAssignments:{unassignedCount:u.length,totalCount:i.length,message:`${u.length} of ${i.length} statements need structure assignments`}};let O=i.filter(E=>E.correctIndex<0||E.correctIndex>=l.length);return O.length>0?{invalidAssignments:{invalidCount:O.length,message:`${O.length} statements have invalid structure assignments`}}:null}multipleChoiceValidator(e){if(!e||!(e instanceof xt))return null;let n=e.value;if(!n)return null;let i=n.answer||[],l=n.promptOptions||[];if(l.length===0)return null;if(l.length>0&&i.length===0)return{noAnswersSelected:{message:"At least one correct answer must be selected"}};if(i.length>0){let u=i.filter(E=>E<0||E>=l.length||!Number.isInteger(E));if(u.length>
120)return{invalidAnswerIndices:{invalidCount:u.length,message:`${u.length} selected answers have invalid indices`}};if([...new Set(i)].length!==i.length)return{duplicateAnswers:{message:"Duplicate answer selections are not allowed"}}}return null}onSubmit(){if(this.updateAnswerArrayBeforeSubmit(),this.applyRelationDefaults(),this.flashcardForm.invalid){this.logInvalidControls(this.flashcardForm),this.toast.error("Please fill in all required fields correctly.");return}if(this.flashcardForm.valid){let e=this.flashcardForm.value;e.promptData.prompts=e.promptData.prompts.map(O=>{if(O.promptAudioURL?.startsWith("data:audio/wav;base64,")){let E=O.promptAudioURL.replace(/^data:audio\/wav;base64,/,"");O.promptAudioTTS=E,delete O.promptAudioURL}return O});let n=e;(e.flashCardType==="trueFalse"||e.flashCardType==="mcq"||e.flashCardType==="multipleChoice"||e.flashCardType==="translate"||e.flashCardType==="choose"||e.flashCardType==="listening")&&(n=this.transformTrueFalseSubmission(e)),this.isEditMode&&this.editingFlashcardId&&(n.id=this.editingFlashcardId);let i=this.createCleanFlashcardData(n),l=this.localStorageService.getItem("userUid"),u={flashcardData:i,uid:l};this.http.postReq("v2/flashcards",u).pipe(U(this.$destroy$)).subscribe({next:O=>{this.toast.success(O.message),this.resetFlashcardForm(),this.fetchFlashcards()},error:O=>{console.error("Error saving flashcard:",O),this.toast.error("Error saving flashcard")}})}else this.flashcardForm.markAllAsTouched()}transformTrueFalseSubmission(e){let n=W({},e);return n.promptData&&Array.isArray(n.promptData.prompts)&&(n.promptData.prompts=n.promptData.prompts.map(i=>{if(i.promptType==="text")return Me(W({},i),{promptAudioTTS:null,promptAudioURL:null,promptAudioId:null});if(i.promptType==="audio"){if(i.promptAudioTTS&&!i.promptAudioId){let l=W({},i);return delete l.promptAudioId,l}else if(i.promptAudioId&&!i.promptAudioTTS){let l=W({},i);return delete l.promptAudioTTS,delete l.promptAudioURL,l}}return i})),n}createCleanFlashcardData(e){let n=e.flashCardCategory==="explanation"||e.flashCardType==="explanation",i=W({},e.review);i.examples&&Array.isArray(i.examples)&&(i.examples=i.examples.map(O=>({default:O.default??"",en:O.en??"",ar:O.ar??""})));let l=W({},e.relation);(l.reviewFlashCardId===null||l.reviewFlashCardId===void 0)&&(l.reviewFlashCardId="");let u={flashCardType:e.flashCardType,flashCardCategory:e.flashCardCategory,hint:e.hint,promptData:{description:e.promptData?.description??"",isDescriptionTranslatable:e.promptData?.isDescriptionTranslatable??!0,prompts:e.promptData?.prompts||[],promptOptions:e.promptData?.promptOptions||[],answer:e.promptData?.answer||[]},review:i,relation:l,uid:e.uid};return e.id&&(u.id=e.id),e.flashCardType==="binaryCategorization"&&(e.promptData?.topic&&(u.promptData.topic=e.promptData.topic),u.promptData.prompts&&Array.isArray(u.promptData.prompts)&&(u.promptData.prompts=u.promptData.prompts.map(O=>{let E=W({},O);return delete E.category,E}))),(e.flashCardType==="choose_and_fill_paragraph"||e.flashCardType==="choose_and_fill_sentence")&&u.promptData.answer&&Array.isArray(u.promptData.answer)&&(u.promptData.answer=u.promptData.answer.map((O,E)=>({option:O.option||"",correctIndex:O.correctIndex!==void 0?O.correctIndex:E}))),e.flashCardType==="open-question"&&(delete u.promptData.promptOptions,delete u.promptData.answer),n&&u.promptData&&(delete u.hint,delete u.review,delete u.promptData.description,delete u.promptData.isDescriptionTranslatable,delete u.promptData.promptOptions,delete u.promptData.answer),e.flashCardType==="structure"&&u.promptData.answer&&Array.isArray(u.promptData.answer)&&(u.promptData.answer=u.promptData.answer.map(O=>({option:O.option||"",correctIndex:parseInt(O.correctIndex)}))),e.flashCardType==="structureMatch"&&(u.promptData.answer&&Array.isArray(u.promptData.answer)?u.promptData.answer=u.promptData.answer.filter(O=>O.correctIndex!==null&&O.correctIndex!==void 0).map(O=>({statementIndex:parseInt(O.statementIndex),correctIndex:parseInt(O.correctIndex)})):u.promptData.answer=[],u.promptData.prompts&&Array.isArray(u.promptData.prompts)&&(u.promptData.prompts=u.promptData.prompts.map(O=>{let E=W({},O);if(delete E.correctIndex,E.style){E.style.border?.width&&(E.style.border.width=parseInt(E.style.border.width)),E.style.divider?.thickness&&(E.style.divider.thickness=parseInt(E.style.divider.thickness));let L=E.style.backgroundColor&&E.style.backgroundColor.trim()!=="",J=E.style.border&&(E.style.border.style||E.style.border.width||E.style.border.color),Z=E.style.divider&&E.style.divider.show;!L&&!J&&!Z&&delete E.style}return["promptAudioTTS","promptAudioURL","promptAudioId"].forEach(L=>{let J=E[L],Z=typeof J=="string"&&J.trim()==="",ee=J==null;(Z||ee)&&delete E[L]}),E}))),u.promptData&&Array.isArray(u.promptData.prompts)&&(u.promptData.prompts=u.promptData.prompts.map(O=>{let E=W({},O);["text","html","TableWithHeader"].includes(E.promptType)||(delete E.isTranslatable,delete E.isTranscript);let L=E.tts;if(typeof L=="string"&&L.trim()===""&&delete E.tts,["promptAudioTTS","promptAudioURL","promptAudioId"].forEach(J=>{let Z=E[J],ee=typeof Z=="string"&&Z.trim()==="",rt=Z==null;(ee||rt)&&delete E[J]}),E.style){E.style.border?.width&&(E.style.border.width=parseInt(E.style.border.width)),E.style.divider?.thickness&&(E.style.divider.thickness=parseInt(E.style.divider.thickness));let J=E.style.backgroundColor&&E.style.backgroundColor.trim()!=="",Z=E.style.border&&(E.style.border.style||E.style.border.width||E.style.border.color),ee=E.style.divider&&E.style.divider.show;!J&&!Z&&!ee&&delete E.style}return E})),u}resetFlashcardForm(){this.flashcardForm.reset();let e=this.flashcardForm.get("review.examples");e.clear(),e.push(this.createExample()),this.flashcardForm.reset({flashCardCategory:"",flashCardType:"",hint:{shouldDisplay:!0,content:{default:"",en:"",ar:""}},review:{answer:{default:"",en:"",ar:""},explanation:{default:"",en:"",ar:""}},relation:{levelNumeric:1,skillType:this.selectedTab.skillType,examName:"TCF",relatedType:"session",relatedId:this.sessionId,courseId:this.courseId}}),this.flashcardForm.contains("promptData")&&this.flashcardForm.removeControl("promptData"),this.isEditMode=!1,this.editingFlashcardId=null}applyRelationDefaults(){let e=this.flashcardForm.get("relation");if(!e)return;let n=L=>L==null||L==="",i=e.get("relatedType");i&&n(i.value)&&i.setValue("session");let l=e.get("relatedId");l&&n(l.value)&&l.setValue(this.sessionId);let u=e.get("courseId");u&&n(u.value)&&u.setValue(this.courseId);let O=e.get("examName");O&&n(O.value)&&O.setValue("TCF");let E=e.get("skillType");E&&n(E.value)&&E.setValue(this.selectedTab.skillType);let V=e.get("levelNumeric");V&&n(V.value)&&V.setValue(1)}fetchSessionInfo(){this.isLoading=!0,this.cohortService.getGoldenLesson(this.sessionId).pipe(U(this.$destroy$)).subscribe({next:e=>{this.sessionInfo=e.data||null,this.sessionInfo?.sessionOrder&&(this.pdfSessionNumber=this.sessionInfo.sessionOrder),this.isLoading=!1},error:e=>{console.error("Error fetching session info",e),this.isLoading=!1}})}generateByAI(){this.isLoadingFlashcards=!0;let e={sessionId:this.sessionId,courseId:this.courseId,category:this.selectedTab.skillType};this.http.postReq("flashcards/dashboard/auto-create-flashcards",e).pipe(U(this.$destroy$)).subscribe({next:n=>{this.toast.success(n.message),this.fetchFlashcards(),this.isLoadingFlashcards=!1},error:n=>{console.error("Error generating flashcards:",n),this.toast.error("Error generating flashcards"),this.isLoadingFlashcards=!1}})}fetchFlashcards(){this.isLoadingFlashcards=!0,this.http.getReq(`v2/flashcards/dashboard/all-cards?relatedId=${this.sessionId}&courseId=${this.courseId}`).pipe(U(this.$destroy$)).subscribe({next:e=>{this.flashcards=e.data||[],this.isLoadingFlashcards=!1,this.calculateTabCounts()},error:e=>{console.error("Error fetching flashcards",e),this.isLoadingFlashcards=!1}})}fetchReviewFlashcards(){if(!this.courseId||!this.sessionId){console.warn("Course ID or Session ID not provided");return}this.cohortService.getSessionReviewFlashcards(this.sessionId).pipe(U(this.$destroy$)).subscribe({next:e=>{this.reviewFlashcards=e.data||[]},error:e=>{console.error("Error fetching review flashcards:",e),this.toast.error("Failed to fetch review flashcards")}})}
12calculateTabCounts(){this.tabs.forEach(e=>e.count=0),this.flashcards.forEach(e=>{this.tabs[0].count++;let n=this.tabs.find(i=>i.skillType===e.relation.skillType);n&&n.count++})}onTabClick(e){this.selectedTab=e,this.flashcardForm.patchValue({relation:{skillType:e.skillType}})}openOptionModal(e,n){e.stopPropagation(),this.selectedFlashcard===n?this.selectedFlashcard=null:this.selectedFlashcard=n}onEditFlashcard(e,n){e.stopPropagation(),this.selectedFlashcard=null,this.isEditMode=!0,this.editingFlashcardId=n.id,this.http.getReq(`v2/flashcards/dashboard/get-card/${n.id}`).subscribe({next:i=>{this.flashcardForm.reset();let l=i.data,u=l.flashCardType==="pronunciation"?"pronounce":l.flashCardType;l.flashCardType=u,l?.promptData?.prompts&&(l.promptData.prompts=l.promptData.prompts.map(V=>{let L=W({},V);return L.promptThumbnailURL!==void 0&&!L.promptThumbnailUrl&&(L.promptThumbnailUrl=L.promptThumbnailURL,delete L.promptThumbnailURL),L.promptVideoURL&&!L.promptVideoURL_en&&!L.promptVideoURL_fr&&(L.promptVideoURL_en=L.promptVideoURL),L.promptVideoId&&!L.promptVideoId_en&&!L.promptVideoId_fr&&(L.promptVideoId_en=L.promptVideoId),L})),this.flashcardForm.get("flashCardType")?.setValue(l.flashCardType),this.addFormControlsForTemplate(l.flashCardType);let O=W({},l.review);if(O&&O.correctAnswer&&!O.answer&&(O.answer=O.correctAnswer),this.flashcardForm.patchValue({flashCardCategory:l.flashCardCategory,flashCardType:l.flashCardType,hint:l.hint,review:O,relation:l.relation}),l.promptData){this.flashcardForm.contains("promptData")&&this.flashcardForm.removeControl("promptData");let V=this.createFlashcardPromptData(l);this.flashcardForm.addControl("promptData",V),l.flashCardType==="binaryCategorization"&&setTimeout(()=>{this.syncBinaryCategorizationData()},200)}let E=document.getElementById("staticBackdrop");E&&new window.bootstrap.Modal(E).show()},error:i=>{console.error("Error fetching flashcard for edit:",i),this.toast.error("Error fetching flashcard data.")}})}logInvalidControls(e){Object.keys(e.controls).forEach(n=>{let i=e.get(n);i?.invalid&&(console.log(`Invalid Control: ${n}`,i),i instanceof xt?this.logInvalidControls(i):i instanceof $t&&i.controls.forEach(l=>{this.logInvalidControls(l)}))})}openDeleteModal(e,n){e.stopPropagation(),this.selectedFlashcard=n;let i=document.getElementById("deleteFlashcardModal");i&&new window.bootstrap.Modal(i).show()}onConfirmDelete(){if(!this.selectedFlashcard)return;let e=this.selectedFlashcard.id;this.http.deleteReq(`flashcards/${e}`).pipe(U(this.$destroy$)).subscribe({next:()=>{this.toast.success("Flashcard Deleted Successfully"),this.fetchFlashcards(),this.selectedFlashcard=null},error:n=>{console.error("Error deleting flashcard:",n),this.toast.error("Error Deleting Flashcard")}})}onCancelDelete(){this.selectedFlashcard=null}drop(e){let n=e.previousIndex,i=e.currentIndex,l=[...this.flashcards],[u]=l.splice(n,1);l.splice(i,0,u);let O=l.map((E,V)=>Me(W({},E),{index:V}));this.flashcards=O,this.reorderFlashcards()}reorderFlashcards(){let e={modelAnswerId:this.sessionId,itemsOrder:this.flashcards.map(n=>({id:n.id,index:n.index}))};this.http.patchReq("flashcards/dashboard/reorder-modelanswer",e).pipe(U(this.$destroy$)).subscribe({next:n=>{this.toast.success(n.message)},error:n=>{console.error("Error reordering flashcards:",n),this.toast.error("Failed to reorder flashcards.")}})}onDocumentClick(e){let n=e.target;!n.closest(".options-icon")&&!n.closest(".option-modal")&&(this.selectedFlashcard=null)}getFirstPromptTextIndex(e){return e?e.findIndex(n=>n.promptType==="text"&&n.promptText?.trim()!==""):-1}getFirstPromptAudioIndex(e){return e?e.findIndex(n=>n.promptType==="audio"&&(n.promptAudioTTS||n.promptAudioURL)):-1}getSessionTitle(){return this.sessionInfo?this.lang==="en"?this.sessionInfo.title.en:this.sessionInfo.title.fr:"Session"}getSessionDescription(){return this.sessionInfo?this.lang==="en"?this.sessionInfo.description.en:this.sessionInfo.description.fr:""}resetImportModal(){this.selectedImportFile=null,this.importFilePreview=null,this.importError=null,this.importFormat="flashcard",this.importLevel=1,this.selectedTab?.skillType?this.importSkillType=this.selectedTab.skillType.toLowerCase():this.importSkillType="vocabulary"}onImportFileSelected(e){let n=e.target.files[0];if(!n)return;if(!n.name.endsWith(".json")){this.importError="Please upload a JSON file",this.selectedImportFile=null;return}this.selectedImportFile=n,this.importError=null;let i=new FileReader;i.onload=l=>{try{let u=JSON.parse(l.target?.result);this.previewImportFile(u)}catch{this.importError="Invalid JSON file format",this.selectedImportFile=null}},i.readAsText(n)}previewImportFile(e){e.flashcards&&Array.isArray(e.flashcards)?(this.importFormat="flashcard",this.importFilePreview={count:e.flashcards.length,format:"flashcard"}):Array.isArray(e)?(this.importFormat="quiz",this.importFilePreview={count:e.length,format:"quiz"}):(this.importError="Unrecognized JSON format. Expected flashcards array or quiz array.",this.selectedImportFile=null)}importFlashcards(){if(!this.selectedImportFile){this.importError="Please select a file to import";return}this.isImporting=!0,this.importError=null;let e=new FileReader;e.onload=n=>{try{let i=JSON.parse(n.target?.result),l={format:this.importFormat,data:i,examName:"tcf",examVersion:"tcfCanada",levelNumeric:Number(this.importLevel),skillType:this.importSkillType,language:"fr"};this.http.postReq(`v2/flashcards/session/${this.courseId}/${this.sessionId}/bulk-import`,l).pipe(U(this.$destroy$)).subscribe({next:u=>{this.toast.success(u.message||`Successfully imported ${u.data?.imported||0} flashcards`),this.fetchFlashcards(),this.isImporting=!1;let O=document.getElementById("importFlashcardsModal");O&&window.bootstrap.Modal.getInstance(O)?.hide(),this.resetImportModal()},error:u=>{console.error("Error importing flashcards:",u),this.importError=u.error?.message||"Error importing flashcards",this.isImporting=!1}})}catch{this.importError="Error processing file",this.isImporting=!1}},e.readAsText(this.selectedImportFile)}resetPdfAutomationModal(){this.selectedPdfFile=null,this.pdfLevel="A1.1",this.pdfSessionNumber=this.sessionInfo?.sessionOrder||null,this.pdfAutomationProgress="",this.pdfAutomationResult=null,this.pdfAutomationError=null;let e=document.getElementById("pdfFileInput");e&&(e.value="")}onPdfFileSelected(e){let n=e.target.files[0];if(!n)return;if(n.type!=="application/pdf"){this.pdfAutomationError="Please select a PDF file",this.selectedPdfFile=null;return}let i=30*1024*1024;if(n.size>i){this.pdfAutomationError="File size must be less than 30MB",this.selectedPdfFile=null;return}this.selectedPdfFile=n,this.pdfAutomationError=null}fileToBase64(e){return new Promise((n,i)=>{let l=new FileReader;l.onload=u=>{let E=(u.target?.result).split(",")[1];n(E)}
12,l.onerror=i,l.readAsDataURL(e)})}getTemplateId(){return`${this.pdfLevel}_Session_${this.pdfSessionNumber}`}automatePdfFlashcards(){return ye(this,null,function*(){if(!this.selectedPdfFile){this.pdfAutomationError="Please select a PDF file";return}if(!this.pdfLevel||!this.pdfSessionNumber){this.pdfAutomationError="Please select level and session number";return}try{this.isPdfAutomating=!0,this.pdfAutomationError=null,this.pdfAutomationProgress="Uploading PDF...";let e=yield this.fileToBase64(this.selectedPdfFile),n=this.getTemplateId();this.pdfAutomationProgress="Processing PDF with AI...",this.http.postReq("v2/flashcards/automation/upload-pdf",{courseId:this.courseId,sessionId:this.sessionId,pdfBase64:e,templateId:n}).pipe(U(this.$destroy$)).subscribe({next:i=>{this.pdfAutomationProgress="Completed!",this.pdfAutomationResult=i.data,this.isPdfAutomating=!1;let l=i.data?.totalCards||0;this.toast.success(`Successfully created ${l} flashcards!`),this.fetchFlashcards(),setTimeout(()=>{let u=document.getElementById("pdfAutomationModal");u&&window.bootstrap.Modal.getInstance(u)?.hide(),this.resetPdfAutomationModal()},2e3)},error:i=>{console.error("Error automating PDF flashcards:",i),this.pdfAutomationError=i.error?.message||"Failed to process PDF. Please try again.",this.isPdfAutomating=!1,this.pdfAutomationProgress="",this.toast.error(this.pdfAutomationError||"Failed to process PDF. Please try again.")}})}catch(e){console.error("Error processing PDF:",e),this.pdfAutomationError="Error processing file",this.isPdfAutomating=!1,this.pdfAutomationProgress=""}})}deleteAllFlashcards(){if(!this.courseId||!this.sessionId){this.toast.error("Missing course or session information");return}this.isDeletingAll=!0,this.http.deleteReq(`v2/flashcards/automation/session-flashcards/${this.courseId}/${this.sessionId}`).pipe(U(this.$destroy$)).subscribe({next:e=>{let n=e.data?.deletedCount||0;this.isDeletingAll=!1,this.toast.success(`Successfully deleted ${n} flashcards!`),this.flashcards=[],this.calculateTabCounts();let i=document.getElementById("deleteAllFlashcardsModal");i&&window.bootstrap.Modal.getInstance(i)?.hide()},error:e=>{console.error("Error deleting flashcards:",e),this.isDeletingAll=!1,this.toast.error(e.error?.message||"Failed to delete flashcards. Please try again.")}})}translateHintContent(){let e=this.flashcardForm.get("hint.content.default")?.value;if(!e?.trim()){this.toast.error("Please enter text to translate");return}this.isTranslatingHint=!0,this.translateText(e).subscribe({next:n=>{this.updateTranslatedFields("hint.content",n.data.translations),this.isTranslatingHint=!1,this.toast.success("Hint content translated successfully")},error:n=>{this.showTranslationError(n),this.isTranslatingHint=!1}})}translateReviewAnswer(){let e=this.flashcardForm.get("review.answer.default")?.value;if(!e?.trim()){this.toast.error("Please enter text to translate");return}this.isTranslatingAnswer=!0,this.translateText(e).subscribe({next:n=>{this.updateTranslatedFields("review.answer",n.data.translations),this.isTranslatingAnswer=!1,this.toast.success("Review answer translated successfully")},error:n=>{this.showTranslationError(n),this.isTranslatingAnswer=!1}})}translateReviewExplanation(){let e=this.flashcardForm.get("review.explanation.default")?.value;if(!e?.trim()){this.toast.error("Please enter text to translate");return}this.isTranslatingExplanation=!0,this.translateText(e).subscribe({next:n=>{this.updateTranslatedFields("review.explanation",n.data.translations),this.isTranslatingExplanation=!1,this.toast.success("Review explanation translated successfully")},error:n=>{this.showTranslationError(n),this.isTranslatingExplanation=!1}})}translateExample(e){let i=this.examples.at(e)?.get("default")?.value;if(!i?.trim()){this.toast.error("Please enter text to translate");return}this.isTranslatingExamples[e]=!0,this.translateText(i).subscribe({next:l=>{this.updateExampleTranslatedFields(e,l.data.translations),this.isTranslatingExamples[e]=!1,this.toast.success(`Example ${e+1} translated successfully`)},error:l=>{this.showTranslationError(l),this.isTranslatingExamples[e]=!1}
12})}translateText(e){let n={text:e};return this.http.postReq("v2/flashcards/translate-french",n)}updateTranslatedFields(e,n){let i=this.flashcardForm.get(`${e}.en`),l=this.flashcardForm.get(`${e}.ar`);i&&n.en&&i.setValue(n.en),l&&n.ar&&l.setValue(n.ar)}updateExampleTranslatedFields(e,n){let i=this.examples.at(e),l=i?.get("en"),u=i?.get("ar");l&&n.en&&l.setValue(n.en),u&&n.ar&&u.setValue(n.ar)}showTranslationError(e){console.error("Translation error:",e),this.toast.error("Translation failed. Please try again.")}trackByIndex(e){return e}static{this.\u0275fac=function(n){return new(n||t)(w(on),w(nt),w(Fe),w(he),w(Lt),w(te),w(We),w(de))}}static{this.\u0275cmp=H({type:t,selectors:[["app-cohort-session-flashcards"]],hostBindings:function(n,i){n&1&&x("click",function(u){return i.onDocumentClick(u)},!1,ht)},decls:2,vars:1,consts:[["importFileInput",""],[3,"isBig"],[1,"d-flex","flex-wrap","align-items-start","justify-content-between","gap-2"],[1,"page-title"],["resourceType","cohort_session_flashcards",3,"resourceRef","resourceLabel","courseId","levelId"],[1,"row","gap-1"],[1,"col-12","col-md-4","d-flex","flex-column","card-container","p-3"],[1,"session-info-card"],[1,"col-12","col-md-7","tabs-container","p-2"],[1,"d-flex","gap-3","flex-wrap","mb-3"],["class","tab py-2","style","cursor: pointer;",3,"active","click",4,"ngFor","ngForOf","ngForTrackBy"],["class","d-flex justify-content-start gap-2 mb-3",4,"ngIf"],[4,"ngIf"],["modalId","deleteFlashcardModal","title","Delete Flashcard","content","Are you sure you want to delete this flashcard?","confirmText","Delete","cancelText","Cancel",3,"confirm","cancel","buttonColor"],["id","staticBackdrop","data-bs-backdrop","static","data-bs-keyboard","false","tabindex","-1","aria-labelledby","staticBackdropLabel","aria-hidden","true",1,"modal","fade"],[1,"modal-dialog","modal
12-dialog-scrollable","modal-xl"],[1,"modal-content"],[1,"modal-header"],["id","exampleModalLabel",1,"modal-title","fs-5"],["type","button","data-bs-dismiss","modal","aria-label","Close",1,"btn-close",3,"click"],[1,"modal-body"],[1,"row","p-2"],[1,"col-12","col-md-4","d-flex","flex-column","gap-2"],[1,"session-info-modal","p-3"],[1,"col-12","col-md-5"],[3,"formGroup"],[1,"form-group","mb-3"],["for","flashCardCategory",1,"langLabel","fw-medium","mb-1"],[1,"select-container","position-relative"],["formControlName","flashCardCategory","name","flashCardCategory","id","flashCardCategory",1,"form-control","select-box",3,"ngClass"],["value","quiz"],["value","explanation"],[3,"control"],["formGroupName","relation",1,"form-group","mb-3"],["for","skillType",1,"langLabel","fw-medium","mb-1"],["formControlName","skillType","name","skillType","id","skillType",1,"form-control","select-box",3,"ngClass"],[3,"value"],[1,"col-12","col-md-3"],[1,"title_green","fw-bold","mb-2"],[1,"preview-container","p-3","mb-3"],[1,"modal-footer"],["type","button","data-bs-dismiss","modal",1,"cancel-btn","flex-fill",3,"click"],["type","button","data-bs-dismiss","modal",1,"save-btn","flex-fill",3,"click"],["id","importFlashcardsModal","data-bs-backdrop","static","data-bs-keyboard","false","tabindex","-1","aria-labelledby","importFlashcardsModalLabel","aria-hidden","true",1,"modal","fade"],[1,"modal-dialog","modal
12-dialog-centered"],[1,"modal-content","import-modal-content"],["id","importFlashcardsModalLabel",1,"modal-title"],[1,"form-label","fw-medium"],[1,"form-select",3,"ngModelChange","ngModel"],["value","flashcard"],["value","vocabulary"],["value","grammar"],["value","reading"],["value","listening"],["value","writing"],["value","speaking"],[3,"value",4,"ngFor","ngForOf","ngForTrackBy"],["type","file","accept",".json",1,"form-control",3,"change"],[1,"text-muted"],["class","alert alert-info d-flex align-items-center gap-2",4,"ngIf"],["class","alert alert-danger",4,"ngIf"],["type","button","data-bs-dismiss","modal",1,"cancel-btn",3,"click"],["type","button",1,"save-btn","d-flex","align-items-center","gap-2",3,"click","disabled"],["class","spinner-border spinner-border-sm",4,"ngIf"],["id","pdfAutomationModal","data-bs-backdrop","static","data-bs-keyboard","false","tabindex","-1","aria-labelledby","pdfAutomationModalLabel","aria-hidden","true",1,"modal","fade"],["id","pdfAutomationModalLabel",1,"modal-title"],["type","button","data-bs-dismiss","modal","aria-label","Close",1,"btn-close",3,"click","disabled"],[1,"form-select",3,"ngModelChange","ngModel","disabled"],["disabled","","selected","",3,"ngValue"],[3,"ngValue",4,"ngFor","ngForOf","ngForTrackBy"],["class","text-muted",4,"ngIf"],["class","text-muted text-success",4,"ngIf"],["type","file","id","pdfFileInput","accept",".pdf",1,"form-control",3,"change","disabled"],["class","pdf-processing-loader",4,"ngIf"],["class","alert alert-success",4,"ngIf"],["class","alert alert-light border",4,"ngIf"],["type","button","data-bs-dismiss","modal",1,"cancel-btn",3,"click","disabled"],["id","deleteAllFlashcardsModal","data-bs-backdrop","static","data-bs-keyboard","false","tabindex","-1","aria-labelledby","deleteAllFlashcardsModalLabel","aria-hidden","true",1,"modal","fade"],["id","deleteAllFlashcardsModalLabel",1,"modal-title","text-danger"],["type","button","data-bs-dismiss","modal","aria-label","Close",1,"btn-close",3,"disabled"],[1,"alert","alert-warning","d-flex","align-items-start","gap-2"],[1,"fw-bold"],[1,"mb-2","fw-semibold"],[1,"mb-0","small"],["class","alert alert-info",4,"ngIf"],["class","text-center py-3",4,"ngIf"],["type","button","data-bs-dismiss","modal",1,"cancel-btn",3,"disabled"],["type","button",1,"btn","btn-danger","d-flex","align-items-center","gap-2",3,"click","disabled"],[1,"session-title"],[1,"session-description",3,"innerHTML"],[1,"session-meta","d-flex","gap-3","mt-2"],[1,"meta-item"],["loading","lazy","src","assets/images/mainPages/live-session/group-session/calendar.svg","alt","calendar"],["loading","lazy","src","assets/images/mainPages/live-session/group-session/clock.svg","alt","clock"],[1,"no-session-info"],[1,"tab","py-2",2,"cursor","pointer",3,"click"],[1,"d-flex","justify-content-start","gap-2","mb-3"],["type","button","data-bs-toggle","modal","data-bs-target","#staticBackdrop",1,"create-btn"],["type","button","data-bs-toggle","modal","data-bs-target","#importFlashcardsModal",1,"create-import-btn","d-flex","align-items-center","gap-1",3,"disabled"],["loading","lazy","src","assets/images/buttons/plus-light.svg","alt","import"],["type","button","data-bs-toggle","modal","data-bs-target","#pdfAutomationModal",1,"create-pdf-btn","d-flex","align-items-center","gap-1",3,"disabled"],["loading","lazy","src","assets/images/buttons/plus-light.svg","alt","upload pdf"],["type","button","data-bs-toggle","modal","data-bs-target","#deleteAllFlashcardsModal",1,"delete-all-btn","d-flex","align-items-center","gap-1",3,"disabled"],["loading","lazy","src","assets/images/buttons/close.svg","alt","delete all"],["cdkDropList","",1,"mt-3",3,"cdkDropListDropped","cdkDropListData"],["cdkDrag","","class","d-flex align-items-center gap-2",3,"click",4,"ngFor","ngForOf","ngForTrackBy"],["cdkDrag","",1,"d-flex","align-items-center","gap-2",3,"click"],["cdkDragHandle","",1,"drag-handle"],[1,"d-flex","flex-fill","card","box-shadow10","cursor_pointer","flashcard","mb-2","p-3","position-relative"],["loading","lazy","src","assets/images/mainPages/questions/kbab-menu.svg","alt","options",1,"options-icon","position-absolute",3,"click"],[1,"option-modal","box-shadow10","d-flex","gap-2","flex-column","position-absolute"],[1,"d-flex","gap-2","mb-2"],[1,"explanation-badg",3,"ngStyle"],[1,"personalized-badge"],["loading","lazy","src","assets/images/mainPages/study-plan/drag-drop.svg",1,"drag-icon"],[1,"option-text",3,"click"],[1,"type-badg"],[1,"level-badg"],["translate","no",1,"prompt-text",3,"innerHTML"],[3,"showAdvancedControls","showPlayBackSpeed","audioUrl"],[3,"click","
12showAdvancedControls","showPlayBackSpeed","audioUrl"],[3,"text"],[1,"session-title-modal"],[1,"session-description-modal",3,"innerHTML"],[1,"session-meta-modal","d-flex","gap-3","mt-2"],[1,"row"],[1,"col"],["for","flashCardType",1,"langLabel","fw-medium","mb-1"],["formControlName","flashCardType","name","flashCardType","id","flashCardType",1,"form-control","select-box",3,"ngClass"],["formGroupName","relation",1,"col","form-group","mb-3"],["for","levelNumeric",1,"langLabel","fw-medium","mb-1"],["formControlName","levelNumeric","name","levelNumeric","id","levelNumeric",1,"form-control","select-box",3,"ngClass"],["formGroupName","promptData"],[3,"ngValue"],[1,"row","mb-3"],[1,"col","form-group"],[1,"d-flex","align-items-center","gap-2","mb-1"],["for","description",1,"langLabel","fw-medium","mb-0"],[1,"form-check"],["type","checkbox","id","isDescriptionTranslatable","formControlName","isDescriptionTranslatable",1,"form-check-input","custom-checkbox"],["for","isDescriptionTranslatable",1,"form-check-label","langLabel",2,"font-size","0.85rem"],["formControlName","description","name","description","id","description",1,"form-control",3,"ngClass"],["for","answer",1,"langLabel","fw-medium","mb-1"],["formControlName","answer","name","answer","id","answer",1,"form-control",3,"ngClass"],["for","answer",1,"langLabel","fw-bold","mb-1"],["formControlName","answer","name","answer","id","answer",1,"form-control","select-box",3,"ngClass"],["value","","disabled",""],["formArrayName","promptOptions",1,"form-group","row"],[1,"langLabel","fw-medium","mb-1"],[1,"col-6","form-group","mb-2"],[1,"text-danger"],[1,"form-control",3,"formControlName","id","placeholder","ngClass"],[1,"langLabel","fw-bold","mb-1"],[1,"multiple-choice-answers"],[1,"answer-checkbox"],[1,"text-warning","mt-2"],[1,"text-success","mt-2"],["type","checkbox",1,"form-check-input",3,"change","id","checked"],[1,"form-check-label",3,"for"],[1,"answer-letter"],[1,"ms-2"],[3,"structureForm"],[3,"dragAndDropForm"],["formGroupName","promptData",1,"form-group","mb-3"],["for","topic",1,"langLabel","fw-medium","mb-1"],["formControlName","topic","name","topic","id","topic","placeholder","Enter the main topic (e.g., Working from home)",1,"form-control"],[3,"editMode","explanationForm","courseId","sessionId"],[1,"structure-options-card","shadow","form-group","p-3","mb-3"],[1,"langLabel","fw-bold","mb-3"],["formArrayName","promptOptions",1,"structure-options-list"],["type","button",1,"add-structure-btn",3,"click"],["loading","lazy","src","assets/images/buttons/plus.svg","alt","add"],[1,"form-group","mb-2","d-flex","align-items-center","gap-2"],[1,"structure-letter"],[1,"form-control",3,"formControlName","placeholder","ngClass"],["type","button",1,"btn","btn-sm","btn-outline-danger"],["type","button",1,"btn","btn-sm","btn-outline-danger",3,"click"],["loading","lazy","src","assets/images/mainPages/study-plan/trash.svg","alt","delete",2,"width","16px","height","16px"],[1,"mt-3","mb-3"],["formGroupName","hint",1,"form-group","ms-2"],[1,"d-flex","gap-4"],["for","hint",1,"title_green","langLabel","fw-bold"],[1,"form-group","mb-1"],["type","checkbox","id","shouldDisplay","formControlName","shouldDisplay",1,"form-check-input","custom-checkbox"],["for","shouldDisplay",1,"form-check-label","langLabel","fw-medium"],["formGroupName","content",1,"form-group"],["for","hintDefault",1,"langLabel","fw-medium","mb-0"],["type","button",1,"translate-btn",3,"click","disabled"],["formControlName","default","name","hintDefault","id","hintDefault",1,"form-control",3,"ngClass"],["for","hintEn",1,"langLabel","fw-medium","mb-1"],["formControlName","en","name","hintEn","id","hintEn",1,"form-control"],["for","hintAr",1,"langLabel","fw-medium","mb-1"],["formControlName","ar","name","hintAr","id","hintAr",1,"form-control"],[1,"mt-3"],["for","Review",1,"title_green","langLabel","fw-bold"],["formGroupName","review",1,"form-group","ms-2"],["for","Review",1,"langLabel","fw-bold"],["formGroupName","answer",1,"form-group","mb-2","ms-2"],["for","reviewAnswerDefault",1,"langLabel","fw-medium","mb-0"],["formControlName","default","name","reviewAnswerDefault","id","reviewAnswerDefault",1,"form-control",3,"ngClass"],["for","reviewAnswerEn",1,"langLabel","fw-medium"],["formControlName","en","name","reviewAnswerEn","id","reviewAnswerEn",1,"form-control"],["for","reviewAnswerAr",1,"langLabel","fw-medium","mb-1"],["formControlName","ar","name","reviewAnswerAr","id","reviewAnswerAr",1,"form-control"],["formGroupName","explanation",1,"form-group","mb-2","ms-2"],["for","reviewExplanationDefault",1,"langLabel","fw-medium","mb-0"],["formControlName","default","name","reviewExplanationDefault","id","reviewExplanationDefault",1,"form-control"],[1,"col","form-group","mb-1"],["for","reviewExplanationEn",1,"langLabel","fw-medium","mb-1"],["formControlName","en","name","reviewExplanationEn","id","reviewExplanationEn",1,"form-control"],["for","reviewExplanationAr",1,"langLabel","fw-medium","mb-1"],["formControlName","ar","name","reviewExplanationAr","id","reviewExplanationAr",1,"form-control"],["formArrayName","examples",1,"form-group"],["class","form-group ms-2",3,"formGroupName",4,"ngFor","ngForOf","ngForTrackBy"],[1,"form-group","mb-2"],["for","reviewFlashCardId",1,"langLabel","fw-bold","mb-1"],["
12id","reviewFlashCardId",1,"form-control","select-box",3,"formControl"],["value",""],[1,"spinner-border","spinner-border-sm"],[1,"form-group","ms-2",3,"formGroupName"],[1,"langLabel","fw-medium","mb-0",3,"for"],["formControlName","default",1,"form-control",3,"id"],[1,"langLabel","fw-medium","mb-1",3,"for"],["formControlName","en",1,"form-control",3,"id"],["formControlName","ar",1,"form-control",3,"id"],["type","button",1,"add-example-btn",3,"click","disabled"],[3,"flashcardForm"],[3,"flashcardForm","mode"],[1,"coming-soon-preview"],[1,"alert","alert-info","d-flex","align-items-center","gap-2"],[1,"alert","alert-danger"],[1,"text-muted","text-success"],[1,"pdf-processing-loader"],[1,"d-flex","flex-column","align-items-center","justify-content-center","py-4"],["role","status",1,"spinner-border","text-primary","mb-3",2,"width","3rem","height","3rem"],[1,"visually-hidden"],[1,"mb-2","text-primary","fw-bold"],[1,"text-center","mb-2","fw-semibold","text-warning"],[1,"text-center","text-muted","small","mb-0"],[1,"alert","alert-success"],[1,"d-flex","align-items-center","gap-2","mb-2"],[1,"mb-1"],["class","mb-1",4,"ngIf"],[1,"mb-0","mt-1"],[1,"alert","alert-light","border"],[1,"alert","alert-info"],[1,"text-center","py-3"],["role","status",1,"spinner-border","text-danger","mb-2"]],template:function(n,i){n&1&&h(0,B1,1,1,"app-load-spinner",1)(1,bf,225,155),n&2&&P(0,i.isLoading?0:1)},dependencies:[ce,Q,$,Ui,je,re,ae,ie,Ke,Ce,Y,$e,oe,Ji,et,tt,ct,Dt,Qi,fo,Co,uo,to,_n,dt,no,so,ao,lo,co,po,_o,mo,go,vo,Oo,Mo,Po,So,wo,Eo,Io,yo,ko,mn,_t,ln,at,j,io],styles:['.page-title[_ngcontent-%COMP%]{font-size:24px;font-weight:700;color:#188888}.card-container[_ngcontent-%COMP%]{border:2px solid #ddfbfb;border-bottom:none;background-color:#eefdfd;border-top-left-radius:16px;border-top-right-radius:16px}@media screen and (max-width: 768px){.card-container[_ngcontent-%COMP%]{max-width:100%;border-radius:16px;height:100%}}.session-info-card[_ngcontent-%COMP%] .session-title[_ngcontent-%COMP%]{font-size:18px;font-weight:700;color:#111827;margin-bottom:8px}.session-info-card[_ngcontent-%COMP%] .session-description[_ngcontent-%COMP%]{font-size:14px;color:#6b7280;margin-bottom:12px}.session-info-card[_ngcontent-%COMP%] .session-meta[_ngcontent-%COMP%] .meta-item[_ngcontent-%COMP%]{display:flex;align-items:center;gap:6px;font-size:13px;color:#4b5563}.session-info-card[_ngcontent-%COMP%] .session-meta[_ngcontent-%COMP%] .meta-item[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{width:16px;height:16px}.session-info-modal[_ngcontent-%COMP%]{background-color:#f9fafb;border-radius:12px}.session-info-modal[_ngcontent-%COMP%] .session-title-modal[_ngcontent-%COMP%]{font-size:16px;font-weight:600;color:#111827;margin-bottom:8px}.session-info-modal[_ngcontent-%COMP%] .session-description-modal[_ngcontent-%COMP%]{font-size:13px;color:#6b7280;margin-bottom:8px}.session-info-modal[_ngcontent-%COMP%] .session-meta-modal[_ngcontent-%COMP%]{font-size:12px;color:#4b5563}.session-info-modal[_ngcontent-%COMP%] .session-meta-modal[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{width:14px;height:14px;margin-right:4px}.no-session-info[_ngcontent-%COMP%]{text-align:center;padding:20px;color:#6b7280}.type-badg[_ngcontent-%COMP%]{background-color:#21b6b6;color:#f9fafb;padding:2px 4px;border-radius:2px;font-size:12px;font-weight:500}.explanation-badg[_ngcontent-%COMP%]{background-color:#d97706;color:#f9fafb;padding:2px 4px;border-radius:2px;font-size:12px;font-weight:500}.flashcard[_ngcontent-%COMP%]{border:none;border-radius:16px}.flashcard[_ngcontent-%COMP%] .level-badg[_ngcontent-%COMP%]{text-align:center;min-width:22px;min-height:22px;background-color:#4b5563;color:#f9fafb;padding:2px 4px;border-radius:2px;font-size:12px;font-weight:500}.flashcard[_ngcontent-%COMP%] .prompt-text[_ngcontent-%COMP%]{font-size:16px;font-weight:500;color:#1f2937}.flashcard[_ngcontent-%COMP%] .options-icon[_ngcontent-%COMP%]{cursor:pointer;top:15px;right:5px}.flashcard[_ngcontent-%COMP%] .options-icon[_ngcontent-%COMP%]:hover{background-color:#ddfbfb;border-radius:50%}.flashcard[_ngcontent-%COMP%] .option-modal[_ngcontent-%COMP%]{background-color:#f9fafb;border:none;border-radius:4px;padding:8px;top:15px;right:30px;z-index:10;min-width:90px}.flashcard[_ngcontent-%COMP%] .option-modal[_ngcontent-%COMP%] .option-text[_ngcontent-%COMP%]{cursor:pointer;font-size:14px;font-weight:500;color:#111827}.tab[_ngcontent-%COMP%]{cursor:pointer;color:#6b7280;font-size:14px;font-weight:500}.tab.active[_ngcontent-%COMP%]{color:#21b6b6;font-weight:700;border-bottom:3px solid #21b6b6}.create-btn[_ngcontent-%COMP%]{background-color:transparent;color:#21b6b6;border:none;border-radius:4px;font-size:14px;font-weight:500;padding:10px}.create-ai-btn[_ngcontent-%COMP%]{background-color:#21b6b6;color:#f9fafb;border:none;border-radius:4px;font-size:14px;font-weight:500;padding:10px 12px}.create-ai-btn[_ngcontent-%COMP%]:disabled{opacity:.6;cursor:not-allowed}.create-import-btn[_ngcontent-%COMP%]{background-color:#6366f1;color:#f9fafb;border:none;border-radius:4px;font-size:14px;font-weight:500;padding:10px 12px;cursor:pointer;transition:background-color .2s}.create-import-btn[_ngcontent-%COMP%]:hover:not(:disabled){background-color:#4f46e5}.create-import-btn[_ngcontent-%COMP%]:disabled{opacity:.6;cursor:not-allowed}.create-import-btn[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{width:16px;height:16px;filter:brightness(0) invert(1)}.create-pdf-btn[_ngcontent-%COMP%]{background-color:#21b6b6;color:#f9fafb;border:none;border-radius:4px;font-size:14px;font-weight:500;padding:10px 12px;cursor:pointer;transition:background-color .2s}.create-pdf-btn[_ngcontent-%COMP%]:hover:not(:disabled){background-color:#188888}.create-pdf-btn[_ngcontent-%COMP%]:disabled{opacity:.6;cursor:not-allowed}.create-pdf-btn[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{width:16px;height:16px;filter:brightness(0) invert(1)}.delete-all-btn[_ngcontent-%COMP%]{background-color:#dc2626;color:#f9fafb;border:none;border-radius:4px;font-size:14px;font-weight:500;padding:10px 12px;cursor:pointer;transition:background-color .2s}.delete-all-btn[_ngcontent-%COMP%]:hover:not(:disabled){background-color:#b91c1c}.delete-all-btn[_ngcontent-%COMP%]:disabled{opacity:.6;cursor:not-allowed}.delete-all-btn[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{width:16px;height:16px;filter:brightness(0) invert(1)}.modal-title[_ngcontent-%COMP%]{font-size:20px;font-weight:700;color:#111827}.cancel-btn[_ngcontent-%COMP%]{background-color:transparent;color:#111827;border:1px solid #d1d5db;border-radius:4px;font-size:14px;font-weight:500;padding:10px 12px}.save-btn[_ngcontent-%COMP%]{background-color:#21b6b6;color:#f9fafb;border:none;border-radius:4px;font-size:14px;font-weight:500;padding:10px 12px}.add-example-btn[_ngcontent-%COMP%]{background-color:transparent;color:#21b6b6;border:none;border-radius:4px;font-size:10px;font-weight:500;padding:8px 12px}.custom-checkbox[_ngcontent-%COMP%]{appearance:none;-webkit-appearance:none;border:1px solid #9ca3af;border-radius:2px;outline:none;box-shadow:none;cursor:pointer}.custom-checkbox[_ngcontent-%COMP%]:checked{background-color:#21b6b6;position:relative;border:none;outline:none;box-shadow:none}.custom-checkbox[_ngcontent-%COMP%]:checked:before{content:"";font-size:16px;color:#fff;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.preview-container[_ngcontent-%COMP%]{border:1px solid #9ca3af;border-radius:16px}.disabled[_ngcontent-%COMP%]{cursor:not-allowed;opacity:.5}.modal-xl[_ngcontent-%COMP%]{max-width:1500px!important}.coming-soon-preview[_ngcontent-%COMP%]{text-align:center;padding:2rem;background-color:#f3f4f6;border-radius:8px;color:#6b7280;font-size:14px;font-weight:500;border:2px dashed #d1d5db}.drag-handle[_ngcontent-%COMP%]{cursor:grab}.structure-options-card[_ngcontent-%COMP%]{border-radius:16px;border:none;background-color:#fdfeff}.structure-options-list[_ngcontent-%COMP%] .structure-letter[_ngcontent-%COMP%]{font-weight:600;color:#188888;min-width:25px;font-size:14px}.add-structure-btn[_ngcontent-%COMP%]{background-color:transparent;color:#21b6b6;border:none;border-radius:4px;font-size:14px;font-weight:500;padding:8px 12px;display:flex;align-items:center;gap:.5rem}.add-structure-btn[_ngcontent-%COMP%]:hover{background-color:#f0fdfd}.add-structure-btn[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{width:16px;height:16px}
12.multiple-choice-answers[_ngcontent-%COMP%] .answer-checkbox[_ngcontent-%COMP%]{background:#fdfeff;border:2px solid #ddfbfb;border-radius:16px;padding:16px 20px;margin-bottom:12px;transition:all .2s ease}.multiple-choice-answers[_ngcontent-%COMP%] .answer-checkbox[_ngcontent-%COMP%]:hover{background:#eefdfd;border-color:#21b6b6}.multiple-choice-answers[_ngcontent-%COMP%] .answer-checkbox[_ngcontent-%COMP%] .form-check[_ngcontent-%COMP%]{margin:0;display:flex;align-items:center}.multiple-choice-answers[_ngcontent-%COMP%] .answer-checkbox[_ngcontent-%COMP%] .form-check[_ngcontent-%COMP%] .form-check-input[_ngcontent-%COMP%]{margin-right:12px;margin-top:0;border-color:#21b6b6;background-color:#f9fafb}.multiple-choice-answers[_ngcontent-%COMP%] .answer-checkbox[_ngcontent-%COMP%] .form-check[_ngcontent-%COMP%] .form-check-input[_ngcontent-%COMP%]:checked{background-color:#21b6b6;border-color:#21b6b6}.multiple-choice-answers[_ngcontent-%COMP%] .answer-checkbox[_ngcontent-%COMP%] .form-check[_ngcontent-%COMP%] .form-check-input[_ngcontent-%COMP%]:focus{box-shadow:0 0 0 .2rem #21b6b640;border-color:#21b6b6}.multiple-choice-answers[_ngcontent-%COMP%] .answer-checkbox[_ngcontent-%COMP%] .form-check[_ngcontent-%COMP%] .form-check-label[_ngcontent-%COMP%]{margin-bottom:0;font-size:16px;font-weight:500;color:#1f2937;cursor:pointer;display:flex;align-items:center;width:100%}.multiple-choice-answers[_ngcontent-%COMP%] .answer-checkbox[_ngcontent-%COMP%] .form-check[_ngcontent-%COMP%] .form-check-label[_ngcontent-%COMP%] .answer-letter[_ngcontent-%COMP%]{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;background:#4b5563;color:#f9fafb;border-radius:50%;font-weight:600;font-size:14px;margin-right:12px;flex-shrink:0}.multiple-choice-answers[_ngcontent-%COMP%] .answer-checkbox[_ngcontent-%COMP%]:has(.form-check-input:checked){background:#eefdfd;border-color:#21b6b6}.multiple-choice-answers[_ngcontent-%COMP%] .answer-checkbox[_ngcontent-%COMP%]:has(.form-check-input:checked) .form-check[_ngcontent-%COMP%] .form-check-label[_ngcontent-%COMP%] .answer-letter[_ngcontent-%COMP%]{background:#21b6b6}.title_green[_ngcontent-%COMP%]{color:#188888}.import-modal-content[_ngcontent-%COMP%]{border-radius:12px}.import-modal-content[_ngcontent-%COMP%] .modal-header[_ngcontent-%COMP%]{border-bottom:1px solid #e5e7eb;padding:16px 20px}.import-modal-content[_ngcontent-%COMP%] .modal-header[_ngcontent-%COMP%] .modal-title[_ngcontent-%COMP%]{font-weight:600;color:#1f2937}.import-modal-content[_ngcontent-%COMP%] .modal-body[_ngcontent-%COMP%]{padding:20px}.import-modal-content[_ngcontent-%COMP%] .modal-body[_ngcontent-%COMP%] .form-label[_ngcontent-%COMP%]{color:#374151;margin-bottom:6px}.import-modal-content[_ngcontent-%COMP%] .modal-body[_ngcontent-%COMP%] .form-select[_ngcontent-%COMP%], .import-modal-content[_ngcontent-%COMP%] .modal-body[_ngcontent-%COMP%] .form-control[_ngcontent-%COMP%]{border-radius:8px;border:1px solid #d1d5db;padding:10px 12px}.import-modal-content[_ngcontent-%COMP%] .modal-body[_ngcontent-%COMP%] .form-select[_ngcontent-%COMP%]:focus, .import-modal-content[_ngcontent-%COMP%] .modal-body[_ngcontent-%COMP%] .form-control[_ngcontent-%COMP%]:focus{border-color:#6366f1;box-shadow:0 0 0 3px #6366f11a}.import-modal-content[_ngcontent-%COMP%] .modal-body[_ngcontent-%COMP%] .alert-info[_ngcontent-%COMP%]{background-color:#eff6ff;border-color:#bfdbfe;color:#1e40af;border-radius:8px}.import-modal-content[_ngcontent-%COMP%] .modal-body[_ngcontent-%COMP%] .alert-danger[_ngcontent-%COMP%]{border-radius:8px}.import-modal-content[_ngcontent-%COMP%] .modal-footer[_ngcontent-%COMP%]{border-top:1px solid #e5e7eb;padding:16px 20px}.import-modal-content[_ngcontent-%COMP%] .modal-footer[_ngcontent-%COMP%] .save-btn[_ngcontent-%COMP%]{background-color:#6366f1;border-color:#6366f1}.import-modal-content[_ngcontent-%COMP%] .modal-footer[_ngcontent-%COMP%] .save-btn[_ngcontent-%COMP%]:hover:not(:disabled){background-color:#4f46e5}
12.import-modal-content[_ngcontent-%COMP%] .modal-footer[_ngcontent-%COMP%] .save-btn[_ngcontent-%COMP%]:disabled{opacity:.6;cursor:not-allowed}#pdfAutomationModal[_ngcontent-%COMP%] .modal-footer[_ngcontent-%COMP%] .save-btn[_ngcontent-%COMP%]{background-color:#21b6b6;border-color:#21b6b6}#pdfAutomationModal[_ngcontent-%COMP%] .modal-footer[_ngcontent-%COMP%] .save-btn[_ngcontent-%COMP%]:hover:not(:disabled){background-color:#188888}#pdfAutomationModal[_ngcontent-%COMP%] .modal-footer[_ngcontent-%COMP%] .save-btn[_ngcontent-%COMP%]:disabled{opacity:.6;cursor:not-allowed}.pdf-processing-loader[_ngcontent-%COMP%]{background:linear-gradient(135deg,#e0f2f1,#b2dfdb);border:2px solid #21b6b6;border-radius:12px;padding:20px;margin:20px 0;box-shadow:0 4px 6px #21b6b61a}.pdf-processing-loader[_ngcontent-%COMP%] .spinner-border[_ngcontent-%COMP%]{border-width:.3em;color:#21b6b6!important}.pdf-processing-loader[_ngcontent-%COMP%] h5[_ngcontent-%COMP%]{color:#188888;font-size:16px}.pdf-processing-loader[_ngcontent-%COMP%] .text-warning[_ngcontent-%COMP%]{color:#d97706!important;font-size:14px}.pdf-processing-loader[_ngcontent-%COMP%] .text-muted[_ngcontent-%COMP%]{font-size:13px}.translate-btn[_ngcontent-%COMP%]{background-color:#21b6b6;color:#fff;border:none;border-radius:4px;font-size:10px;font-weight:500;padding:4px 8px;cursor:pointer;display:flex;align-items:center;gap:4px;transition:all .2s ease}.translate-btn[_ngcontent-%COMP%]:hover:not(:disabled){background-color:#1a9a9a}.translate-btn[_ngcontent-%COMP%]:disabled{opacity:.7;cursor:not-allowed}.translate-btn[_ngcontent-%COMP%] .spinner-border-sm[_ngcontent-%COMP%]{width:12px;height:12px;border-width:2px}']})}}return t})();function aa(t){return ye(this,null,function*(){let c=vf();if(!c||!t)return 0;try{let e=yield fetch(t);if(!e.ok)return 0;let n=yield c.decodeAudioData(yield e.arrayBuffer());return Number.isFinite(n.duration)&&n.duration>0?n.duration:0}catch{return 0}finally{c.close?.()}})}function vf(){let t=window.AudioContext||window.webkitAudioContext;try{return t?new t:null}catch{return null}}var Of=["answerAudio"],Mf=(t,c)=>c.questionId,Pf=(t,c)=>c.mistakeId,Wt=t=>({student:t}),Sf=(t,c)=>({student:t,homework:c}),la=(t,c,e,n,i)=>({batchId:t,levelId:c,sessionId:e,homeworkId:n,userId:i}),ca=t=>({number:t}),en=t=>({count:t}),fi=t=>({date:t}),wf=t=>({status:t}),Ef=(t,c)=>({student:t,question:c}),da=t=>({score:t}),If=t=>({max:t}),yf=()=>[1,2,3],kf=t=>({count:t,max:2e3}),pa=(t,c,e)=>({redone:t,total:c,remaining:e});function Af(t,c){if(t&1){let e=M();a(0,"button",45),_(1,"translate"),_(2,"translate"),x("click",function(){let i=C(e).$implicit,l=d(4);return f(l.showQuestion(l.reviewIndexOf(i)))}),s(3),r()}if(t&2){let e,n=c.$implicit,i=d(4);y("full",((e=i.getGrade(n.questionId))==null?null:e.score)!==null)("now",i.reviewIndexOf(n)===i.currentReviewIndex)("fallback",i.isAiFallback(n.questionId)),p("title",i.isAiFallback(n.questionId)?m(1,9,"HOMEWORK_V2.GRADING.AI_FALLBACK"):""),R("aria-label",B(2,11,"HOMEWORK_V2.GRADING.OPEN_QUESTION",D(14,ca,i.questionLabel(n)))),o(3),g(i.questionLabel(n))}}function Tf(t,c){if(t&1&&(a(0,"span",42)(1,"span",43),s(2),_(3,"translate"),r(),h(4,Af,4,16,"button",44),r()),t&2){let e=c.$implicit,n=d(3);p("hidden",!n.gradingQuestionsForPart(e.sectionId).length),o(),p("ngClass",e.mode),o(),g(m(3,4,e.labelKey)),o(2),p("ngForOf",n.gradingQuestionsForPart(e.sectionId))}}function Rf(t,c){if(t&1){let e=M();a(0,"button",49),_(1,"translate"),x("click",function(){let i=C(e).$implicit,l=d(4);return f(l.showQuestion(l.reviewIndexOf(i)))}),s(2),r()}if(t&2){let e,n=c.$implicit,i=d(4);y("full",((e=i.getGrade(n.questionId))==null?null:e.score)!==null)("now",i.reviewIndexOf(n)===i.currentReviewIndex),R("aria-label",B(1,6,"HOMEWORK_V2.GRADING.OPEN_QUESTION",D(9,ca,i.questionLabel(n)))),o(2),g(i.questionLabel(n))}}function Df(t,c){if(t&1&&(a(0,"span",46)(1,"span",47),s(2),_(3,"translate"),r(),h(4,Rf,3,11,"button",48),r()),t&2){let e=d(3);o(2),g(m(3,2,"HOMEWORK_V2.GRADING.INSTRUCTOR")),o(2),p("ngForOf",e.unpartitionedGradingQuestions)}}function Bf(t,c){if(t&1&&(a(0,"span",39),h(1,Tf,5,6,"span",40)(2,Df,5,4,"span",41),r()),t&2){let e=d(2);o(),p("ngForOf",e.reviewParts),o(),p("ngIf",e.unpartitionedGradingQuestions.length)}}function Lf(t,c){t&1&&(a(0,"span",50)(1,"span",51),I(),a(2,"svg",52),v(3,"use",53),r(),s(4),_(5,"translate"),r(),F(),a(6,"button",54),s(7,"!"),r()()),t&2&&(o(4),g(m(5,1,"HOMEWORK_V2.DISPUTES.DISPUTE")))}function Nf(t,c){t&1&&(a(0,"div",55)(1,"div",56)(2,"p",57),s(3),_(4,"translate"),r()()()),t&2&&(o(3),g(m(4,1,"HOMEWORK_V2.GRADING.LOADING")))}function Vf(t,c){if(t&1&&(a(0,"div",55)(1,"div",56)(2,"p",58),s(3),r()()()),t&2){let e=d(2);o(3),g(e.errorMessage)}}
12function Ff(t,c){if(t&1&&(a(0,"span"),s(1),r()),t&2){let e=d().$implicit;o(),g(e.status)}}function Uf(t,c){if(t&1&&(a(0,"span"),s(1),r()),t&2){let e=c.$implicit;o(),g(e)}}function Hf(t,c){if(t&1&&(a(0,"div",70)(1,"b"),s(2),r(),h(3,Ff,2,1,"span",5)(4,Uf,2,1,"span",71),r()),t&2){let e=c.$implicit,n=d(4);o(2),g(n.revisionHistoryOriginLabel(e)),o(),p("ngIf",e.status),o(),p("ngForOf",n.revisionMeasurementLabels(e))}}function Gf(t,c){if(t&1&&(a(0,"section",68),h(1,Hf,5,3,"div",69),r()),t&2){let e=d(3);o(),p("ngForOf",e.revisionHistory)}}function qf(t,c){if(t&1&&(a(0,"p"),s(1),r()),t&2){let e=d().ngIf;o(),g(e.instructions)}}function Wf(t,c){if(t&1){let e=M();a(0,"div",74)(1,"audio",75,2),x("loadedmetadata",function(i){C(e);let l=d(4);return f(l.onAnswerAudioLoaded(i))})("durationchange",function(i){C(e);let l=d(4);return f(l.onAnswerAudioLoaded(i))}),r()()}if(t&2){let e=d(2).ngIf,n=d(2);o(),p("src",n.getStudentAnswerAudioUrl(e.questionId),le)}}function zf(t,c){t&1&&(a(0,"p",76),s(1),_(2,"translate"),r()),t&2&&(o(),g(m(2,1,"HOMEWORK_V2.GRADING.NO_AUDIO")))}function Kf(t,c){if(t&1){let e=M();G(0),h(1,Wf,3,1,"div",72)(2,zf,3,3,"ng-template",null,1,ke),a(4,"app-oral-transcript-feedback",73),x("changed",function(i){C(e);let l=d().ngIf,u=d(2);return f(u.onOralFeedbackChanged(l.questionId,i))})("seek",function(i){C(e);let l=d(3);return f(l.playAnswerFrom(i))})("seekRatio",function(i){C(e);let l=d(3);return f(l.playAnswerAtRatio(i))}),r(),q()}if(t&2){let e=pe(3),n=d().ngIf,i=d(2);o(),p("ngIf",i.getStudentAnswerAudioUrl(n.questionId))("ngIfElse",e),o(3),p("value",i.oralFeedbackFor(n.questionId))("readOnly",i.gradingStatus==="published")("audioUploadUrl",i.uploadAudioUrl)("questionId",n.questionId)("audioDuration",i.answerAudioDuration)}}function $f(t,c){if(t&1){let e=M();a(0,"app-oral-transcript-feedback",78),x("changed",function(i){C(e);let l=d(2).ngIf,u=d(2);return f(u.onWrittenFeedbackChanged(i,l))}),r()}if(t&2){let e=d(2).ngIf,n=d(2);p("surface","written")("value",n.writtenFeedbackValueFor(e))("readOnly",n.gradingStatus==="published")}}function jf(t,c){if(t&1&&(a(0,"p",76),s(1),r()),t&2){let e=d(2).ngIf,n=d(2);o(),g(n.getAnswerText(e))}}function Qf(t,c){if(t&1&&h(0,$f,1,3,"app-oral-transcript-feedback",77)(1,jf,2,1,"ng-template",null,3,ke),t&2){let e=pe(2),n=d().ngIf,i=d(2);p("ngIf",i.isInstructorWrittenQuestion(n))("ngIfElse",e)}}function Yf(t,c){if(t&1&&(a(0,"span"),s(1),_(2,"translate"),r()),t&2){let e=d(3);o(),g(B(2,1,"HOMEWORK_V2.GRADING.SUBMITTED_AT",D(4,fi,e.formatSubmittedAt(e.submittedAt))))}}function Xf(t,c){t&1&&(a(0,"p",86),s(1),_(2,"translate"),r()),t&2&&(o(),g(m(2,1,"HOMEWORK_REVIEW.INTEGRITY.RESUBMISSION_UNAVAILABLE")))}function Jf(t,c){if(t&1){let e=M();a(0,"section",79)(1,"h3",80),s(2),_(3,"translate"),r(),a(4,"p"),s(5),_(6,"translate"),_(7,"translate"),r(),a(8,"p",81),s(9),_(10,"translate"),r(),a(11,"p"),s(12),_(13,"translate"),r(),a(14,"div",82)(15,"button",83),x("click",function(){C(e);let i=d(3);return f(i.acceptIntegrityFlag())}),s(16),_(17,"translate"),r(),a(18,"button",84),x("click",function(){C(e);let i=d(3);return f(i.requestIntegrityResubmission())}),s(19),_(20,"translate"),r()(),h(21,Xf,3,3,"p",85),r()}if(t&2){let e=c.ngIf,n=d(3);o(2),g(m(3,9,"HOMEWORK_REVIEW.INTEGRITY.TITLE")),o(3),g(B(7,13,"HOMEWORK_REVIEW.INTEGRITY.HARD_VALIDATION",D(25,wf,m(6,11,n.integrityHardValidationLabel(e.hardValidation))))),o(4),g(m(10,16,"HOMEWORK_REVIEW.INTEGRITY.SCREENING_DISABLED")),o(3),g(B(13,18,"HOMEWORK_REVIEW.INTEGRITY.PASTE_EVENTS",D(27,en,e.pasteEventCount))),o(3),p("disabled",e.instructorDecision==="accepted"),o(),g(m(17,21,"HOMEWORK_REVIEW.INTEGRITY.ACCEPT")),o(2),p("disabled",!n.canRequestIntegrityResubmission),o(),g(m(20,23,"HOMEWORK_REVIEW.INTEGRITY.REQUEST_RESUBMISSION")),o(2),p("ngIf",!n.canRequestIntegrityResubmission)}}function Zf(t,c){if(t&1){let e=M();a(0,"button",105),x("click",function(){let i=C(e).$implicit,l=d().$implicit,u=d(2).ngIf,O=d(2);return f(O.setRubricScore(u,l.key,i))}),s(1),r()}if(t&2){let e=c.$implicit,n=d().$implicit,i=d(2).ngIf,l=d(2);y("on",l.rubricScore(i.questionId,n.key)===e),p("disabled",l.gradingStatus==="published"),o(),g(e)}}function eh(t,c){if(t&1&&(a(0,"div",102)(1,"span",103),s(2),_(3,"translate"),a(4,"small"),s(5),_(6,"translate"),r()(),h(7,Zf,2,4,"button",104),r()),t&2){let e=c.$implicit,n=d(4);o(2),g(m(3,3,e.labelKey)),o(3),g(B(6,5,"HOMEWORK_V2.GRADING.OUT_OF",D(8,en,e.max))),o(2),p("ngForOf",n.rubricOptions(e.max))}}function th(t,c){t&1&&(a(0,"div",106),s(1),_(2,"translate"),r()),t&2&&(o(),g(m(2,1,"HOMEWORK_V2.GRADING.COMPLETE_RUBRIC")))}function nh(t,c){if(t&1){let e=M();a(0,"div",112)(1,"button",113),x("click",function(){C(e);let i=d().ngIf,l=d(2).ngIf,u=d(2);return f(u.onAiAccepted(l.questionId,i))}),s(2),_(3,"translate"),r(),a(4,"button",114),x("click",function(){C(e);let i=d().ngIf,l=d(2).ngIf,u=d(2);return f(u.onAiEdited(l.questionId,{score:i.score,feedback:i.feedback}))}),s(5),_(6,"translate"),r(),a(7,"button",115),x("click",function(){C(e);let i=d(3).ngIf,l=d(2);return f(l.onAiRejected(i.questionId))}),s(8),_(9,"translate"),r()()}t&2&&(o(2),g(m(3,3,"HOMEWORK_V2.GRADING.ACCEPT")),o(3),g(m(6,5,"HOMEWORK_V2.GRADING.EDIT")),o(3),g(m(9,7,"HOMEWORK_V2.GRADING.IGNORE")))}function ih(t,c){t&1&&(a(0,"span",116),I(),a(1,"svg",52),v(2,"use",98),r(),s(3),_(4,"translate"),r()),t&2&&(o(3),g(m(4,1,"HOMEWORK_V2.GRADING.SUGGESTION_HANDLED")))}function oh(t,c){if(t&1&&(a(0,"div",88)(1,"div",107)(2,"span",108),I(),a(3,"svg",52),v(4,"use",53),r(),s(5),_(6,"translate"),r(),F(),a(7,"span",109),s(8),r(),a(9,"p"),s(10),r(),h(11,nh,10,9,"div",110)(12,ih,5,3,"span",111),r()()),t&2){let e=c.ngIf,n=d(2).ngIf;o(5),g(m(6,6,"HOMEWORK_V2.GRADING.AI_SUGGESTION")),o(3),N("",e.score," / ",n.points,""),o(2),g(e.feedback),o(),p("ngIf",e.status==="pending"),o(),p("ngIf",e.status!=="pending")}}function rh(t,c){if(t&1){let e=M();a(0,"div",88)(1,"span",89),s(2),_(3,"translate"),r(),a(4,"app-teacher-audio-recorder",117),x("audioUploaded",function(i){C(e);let l=d(2).ngIf,u=d(2);return f(u.onAudioUploaded(l.questionId,i))}),r()()}if(t&2){let e=d().ngIf,n=d().ngIf,i=d(2);o(2),g(m(3,5,"HOMEWORK_REVIEW.AUDIO_FEEDBACK")),o(2),p("questionId",n.questionId)("uploadUrl",i.uploadAudioUrl)("deleteUrl",i.deleteAudioUrl)("existingAudioUrl",e.audioUrl||null)}}
12function ah(t,c){if(t&1&&(a(0,"span",106),s(1),r()),t&2){let e=d(4);o(),g(e.errorMessage)}}function sh(t,c){if(t&1&&(a(0,"span",118),s(1),_(2,"translate"),r()),t&2){let e=d(4);o(),g(B(2,1,"HOMEWORK_V2.GRADING.REVISION_SENT",D(4,Wt,e.studentName)))}}function lh(t,c){if(t&1){let e=M();a(0,"button",84),x("click",function(){C(e);let i=d(4);return f(i.publishAndNext())}),s(1),_(2,"translate"),_(3,"translate"),I(),a(4,"svg",28),v(5,"use",119),r()()}if(t&2){let e=d(4);p("disabled",e.publishing||e.hasValidationErrors||e.missingManualGrades||e.gradingStatus==="published"),o(),b("",e.publishing?m(2,2,"HOMEWORK_V2.GRADING.PUBLISHING"):m(3,4,"HOMEWORK_V2.GRADING.PUBLISH_AND_NEXT")," ")}}function ch(t,c){if(t&1){let e=M();a(0,"section",87)(1,"div",88)(2,"span",89),s(3),_(4,"translate"),r(),h(5,eh,8,10,"div",90),a(6,"div",91)(7,"span"),s(8),_(9,"translate"),r(),a(10,"span",92),s(11),r()(),h(12,th,3,3,"div",93),r(),h(13,oh,13,8,"div",94),a(14,"div",88)(15,"span",89),s(16),_(17,"translate"),r(),a(18,"textarea",95),_(19,"translate"),T("ngModelChange",function(i){let l=C(e).ngIf;return A(l.feedback,i)||(l.feedback=i),f(i)}),r()(),h(20,rh,5,7,"div",94),a(21,"div",96),h(22,ah,2,1,"span",93)(23,sh,3,6,"span",97),a(24,"button",84),x("click",function(){C(e);let i=d(3);return f(i.publishGrading())}),s(25),_(26,"translate"),_(27,"translate"),I(),a(28,"svg",28),v(29,"use",98),r()(),h(30,lh,6,6,"button",99),F(),a(31,"button",83),x("click",function(){C(e);let i=d(3);return f(i.saveDraft())}),I(),a(32,"svg",28),v(33,"use",100),r(),s(34),_(35,"translate"),_(36,"translate"),r(),F(),a(37,"button",101),x("click",function(){C(e);let i=d(3);return f(i.openRevisionDialog())}),s(38),_(39,"translate"),r()()()}if(t&2){let e=c.ngIf,n=d().ngIf,i=d(2);o(3),g(m(4,21,"HOMEWORK_V2.GRADING.RUBRIC")),o(2),p("ngForOf",i.rubricRows(n)),o(3),g(m(9,23,"HOMEWORK_V2.GRADING.SCORE")),o(3),N("",e.score===null?"\u2014":e.score," / ",i.rubricMaxTotal(n),""),o(),p("ngIf",e.score===null),o(),p("ngIf",i.currentReviewAnswer==null?null:i.currentReviewAnswer.aiSuggestion),o(3),g(m(17,25,"HOMEWORK_V2.GRADING.YOUR_FEEDBACK")),o(2),k("ngModel",e.feedback),p("disabled",i.gradingStatus==="published")("placeholder",m(19,27,"HOMEWORK_V2.GRADING.FEEDBACK_PLACEHOLDER")),o(2),p("ngIf",i.gradingStatus!=="published"),o(2),p("ngIf",i.errorMessage),o(),p("ngIf",i.revisionRequested),o(),p("disabled",i.publishing||i.hasValidationErrors||i.missingManualGrades||i.gradingStatus==="published"),o(),b("",i.publishing?m(26,29,"HOMEWORK_V2.GRADING.PUBLISHING"):m(27,31,"HOMEWORK_V2.GRADING.PUBLISH")," "),o(5),p("ngIf",i.nextQueuedUserId),o(),p("disabled",i.savingDraft||i.publishing||i.hasValidationErrors||i.gradingStatus==="published"),o(3),g(i.savingDraft?m(35,33,"HOMEWORK_V2.GRADING.SAVING"):m(36,35,"HOMEWORK_V2.GRADING.SAVE_DRAFT")),o(3),p("disabled",i.requestingRevision||i.revisionRequested||!i.eligibleRevisionQuestions.length),o(),g(m(39,37,"HOMEWORK_V2.GRADING.REQUEST_REVISION"))}}function dh(t,c){if(t&1&&(a(0,"div",123),I(),a(1,"svg",28),v(2,"use",98),r(),s(3),_(4,"translate"),r()),t&2){let e=d(4);o(3),g(B(4,1,"HOMEWORK_V2.GRADING.PUBLISHED_BANNER",D(4,Wt,e.studentName)))}}function ph(t,c){t&1&&(I(),a(0,"svg",52),v(1,"use",53),r())}function _h(t,c){t&1&&(a(0,"span",128),s(1),_(2,"translate"),r()),t&2&&(o(),g(m(2,1,"HOMEWORK_V2.GRADING.AI_CONTEXT")))}function mh(t,c){if(t&1&&(a(0,"div",124)(1,"span",43),h(2,ph,2,0,"svg",125),s(3),_(4,"translate"),r(),a(5,"span",126),s(6),r(),h(7,_h,3,3,"span",127),r()),t&2){let e=c.$implicit,n=d(4);p("hidden",!n.hasPartQuestions(e.sectionId)),o(),p("ngClass",e.mode),o(),p("ngIf",e.mode==="ia"),o(),b("",m(4,6,e.labelKey)," "),o(3),g(n.sectionScoreLabel(e.sectionId)),o(),p("ngIf",e.mode==="ia")}}function gh(t,c){if(t&1&&(a(0,"aside",120),h(1,dh,5,6,"div",121),a(2,"div",88)(3,"span",89),s(4),_(5,"translate"),r(),h(6,mh,8,8,"div",122),r()()),t&2){let e=d(3);o(),p("ngIf",e.gradingStatus==="published"),o(3),g(m(5,3,"HOMEWORK_V2.GRADING.STUDENT_CONTEXT")),o(2),p("ngForOf",e.reviewParts)}}function uh(t,c){if(t&1&&(G(0),h(1,Gf,2,1,"section",59),a(2,"div",60)(3,"main",61)(4,"div",62)(5,"b"),s(6),_(7,"uppercase"),_(8,"translate"),_(9,"translate"),r(),h(10,qf,2,1,"p",5),r(),h(11,Kf,5,7,"ng-container",63)(12,Qf,3,2,"ng-template",null,0,ke),a(14,"div",64),h(15,Yf,3,6,"span",5),r(),h(16,Jf,22,29,"section",65)(17,ch,40,39,"section",66),r(),h(18,gh,7,5,"aside",67),r(),q()),t&2){let e=c.ngIf,n=pe(13),i=d(2);o(),p("ngIf",i.revisionHistory.length),o(5),Et("",m(7,12,e.questionId)," \xB7 ",m(8,14,e.type==="speaking"?"HOMEWORK_V2.GRADING.ORAL":"HOMEWORK_V2.GRADING.WRITTEN")," \xB7 ",B(9,16,"HOMEWORK_V2.GRADING.POINTS",D(19,en,e.points))," \u2014 ",e.questionText,""),o(4),p("ngIf",e.instructions),o(),p("ngIf",e.type==="speaking")("ngIfElse",n),o(4),p("ngIf",i.submittedAt),o(),p("ngIf",i.currentIntegrityFlag),o(),p("ngIf",i.currentReviewGrade),o(),p("ngIf",i.currentReviewGrade)}}
12function Ch(t,c){if(t&1&&(a(0,"p",76),s(1),r()),t&2){let e=d(3);o(),g(e.disputeEvaluation.correctedVersion)}}function fh(t,c){t&1&&(a(0,"div",123),I(),a(1,"svg",28),v(2,"use",98),r(),s(3),_(4,"translate"),r()),t&2&&(o(3),g(m(4,1,"HOMEWORK_V2.DISPUTES.PUBLISHED")))}function hh(t,c){if(t&1){let e=M();a(0,"div",137)(1,"button",138),_(2,"translate"),x("click",function(){C(e);let i=d(3);return f(i.adjustDisputeScore(-.5))}),I(),a(3,"svg",28),v(4,"use",139),r()(),F(),a(5,"span",92),s(6),_(7,"number"),r(),a(8,"button",138),_(9,"translate"),x("click",function(){C(e);let i=d(3);return f(i.adjustDisputeScore(.5))}),I(),a(10,"svg",28),v(11,"use",140),r()()()}if(t&2){let e=d(3);o(),R("aria-label",m(2,4,"HOMEWORK_V2.DISPUTES.DECREASE")),o(5),N("",B(7,6,e.adjustedDisputeScore,"1.1-1")," / ",(e.disputeQuestion==null?null:e.disputeQuestion.points)||0,""),o(2),R("aria-label",m(9,9,"HOMEWORK_V2.DISPUTES.INCREASE"))}}function xh(t,c){if(t&1&&(a(0,"span",106),s(1),r()),t&2){let e=d(3);o(),g(e.disputeError)}}function bh(t,c){t&1&&(a(0,"span",86),s(1),_(2,"translate"),r()),t&2&&(o(),g(m(2,1,"HOMEWORK_V2.DISPUTES.CHOOSE_FIRST")))}function vh(t,c){if(t&1){let e=M();a(0,"div",60)(1,"main",61)(2,"div",62)(3,"b"),s(4),_(5,"translate"),r(),a(6,"p"),s(7),r()(),a(8,"p",76),s(9),r(),a(10,"div",129)(11,"div",130)(12,"span",51),I(),a(13,"svg",52),v(14,"use",53),r(),s(15),_(16,"translate"),r(),F(),a(17,"span",126),s(18),r()(),h(19,Ch,2,1,"p",131),r(),a(20,"div",132)(21,"span",133),s(22),_(23,"slice"),_(24,"uppercase"),r(),a(25,"p"),s(26),r()()(),a(27,"aside",120),h(28,fh,5,3,"div",121),a(29,"div",88)(30,"span",89),s(31),_(32,"translate"),r(),a(33,"div",130)(34,"span",51),s(35),_(36,"translate"),r(),a(37,"span",126),s(38),r()()(),a(39,"div",88)(40,"span",89),s(41),_(42,"translate"),r(),a(43,"div",134)(44,"button",135),x("click",function(){C(e);let i=d(2);return f(i.selectDisputeDecision("maintain"))}),s(45),_(46,"translate"),r(),a(47,"button",135),x("click",function(){C(e);let i=d(2);return f(i.selectDisputeDecision("adjust"))}),s(48),_(49,"translate"),r()(),h(50,hh,12,11,"div",136),r(),a(51,"div",88)(52,"span",89),s(53),_(54,"translate"),r(),a(55,"textarea",95),_(56,"translate"),T("ngModelChange",function(i){C(e);let l=d(2);return A(l.disputeResponse,i)||(l.disputeResponse=i),f(i)}),r()(),a(57,"div",96),h(58,xh,2,1,"span",93),a(59,"button",84),x("click",function(){C(e);let i=d(2);return f(i.resolveOpenDispute())}),s(60),_(61,"translate"),_(62,"translate"),I(),a(63,"svg",28),v(64,"use",98),r()(),h(65,bh,3,3,"span",85),r()()()}if(t&2){let e=c.ngIf,n=d(2);o(4),g(B(5,32,"HOMEWORK_V2.DISPUTES.DISPUTE_FOR",Qn(63,Ef,n.studentName,e.questionId))),o(3),g(n.disputeQuestion==null?null:n.disputeQuestion.questionText),o(2),g(n.getDisputeAnswerText()),o(6),g(m(16,35,"HOMEWORK_V2.DISPUTES.AI_EVALUATION")),o(3),N("",(n.disputeEvaluation==null?null:n.disputeEvaluation.score)||0," / ",(n.disputeQuestion==null?null:n.disputeQuestion.points)||0,""),o(),p("ngIf",n.disputeEvaluation==null?null:n.disputeEvaluation.correctedVersion),o(3),g(m(24,41,sn(23,37,n.studentName,0,2))),o(4),b("\u201C",e.note,"\u201D"),o(2),p("ngIf",n.disputeResolved),o(3),g(m(32,43,"HOMEWORK_V2.DISPUTES.STUDENT_CONTEXT")),o(4),g(m(36,45,"HOMEWORK_V2.RESULTS.PART_B")),o(3),N("",(n.disputeEvaluation==null?null:n.disputeEvaluation.score)||0," / ",(n.disputeQuestion==null?null:n.disputeQuestion.points)||0,""),o(3),g(m(42,47,"HOMEWORK_V2.DISPUTES.YOUR_DECISION")),o(3),y("on",n.disputeDecision==="maintain"),p("disabled",n.disputeResolved),o(),g(B(46,49,"HOMEWORK_V2.DISPUTES.MAINTAIN",D(66,da,(n.disputeEvaluation==null?null:n.disputeEvaluation.score)||0))),o(2),y("on",n.disputeDecision==="adjust"),p("disabled",n.disputeResolved),o(),g(m(49,52,"HOMEWORK_V2.DISPUTES.ADJUST")),o(2),p("ngIf",n.disputeDecision==="adjust"&&!n.disputeResolved),o(3),g(B(54,54,"HOMEWORK_V2.DISPUTES.YOUR_RESPONSE",D(68,Wt,n.studentName))),o(2),k("ngModel",n.disputeResponse),p("disabled",n.disputeResolved)("placeholder",m(56,57,"HOMEWORK_V2.DISPUTES.RESPONSE_PLACEHOLDER")),o(3),p("ngIf",n.disputeError),o(),p("disabled",!n.disputeDecision||n.resolvingDispute||n.disputeResolved),o(),b("",n.resolvingDispute?m(61,59,"HOMEWORK_V2.DISPUTES.PUBLISHING"):m(62,61,"HOMEWORK_V2.DISPUTES.PUBLISH")," "),o(5),p("ngIf",!n.disputeDecision&&!n.disputeResolved)}}function Oh(t,c){t&1&&(a(0,"div",55)(1,"div",56)(2,"p",57),s(3),_(4,"translate"),r()()()),t&2&&(o(3),g(m(4,1,"HOMEWORK_V2.DISPUTES.EMPTY")))}function Mh(t,c){if(t&1){let e=M();G(0),I(),a(1,"svg",9)(2,"symbol",10),v(3,"path",11),r(),a(4,"symbol",12),v(5,"path",13),r(),a(6,"symbol",14),v(7,"path",15),r(),a(8,"symbol",16),v(9,"path",17),r(),a(10,"symbol",18),v(11,"path",19),r(),a(12,"symbol",20),v(13,"path",21),r(),a(14,"symbol",22),v(15,"path",23)(16,"path",24),r()(),F(),a(17,"div",25)(18,"header",26)(19,"button",27),x("click",function(){C(e);let i=d();return f(i.goBack())}),I(),a(20,"svg",28),v(21,"use",29),r(),s(22),_(23,"translate"),r(),F(),a(24,"div",30)(25,"span",31),s(26),_(27,"translate"),r(),a(28,"b",32),s(29),_(30,"translate"),_(31,"translate"),r(),v(32,"app-assign-task-button",33),r(),a(33,"div",34),h(34,Bf,3,2,"span",35)(35,Lf,8,3,"span",36),r()(),h(36,Nf,5,3,"div",37)(37,Vf,4,1,"div",37)(38,uh,19,21,"ng-container",5)(39,vh,66,70,"div",38)(40,Oh,5,3,"div",37),r(),q()}if(t&2){let e=d();o(22),g(m(23,15,"HOMEWORK_V2.GRADING.BACK")),o(4),g(m(27,17,"HOMEWORK_V2.GRADING.EYEBROW")),o(3),g(e.queueKind==="dispute"?B(30,19,"HOMEWORK_V2.DISPUTES.TITLE_FOR",D(25,Wt,e.studentName)):B(31,22,"HOMEWORK_V2.GRADING.TITLE_FOR",Qn(27,Sf,e.studentName,e.homeworkTitle))),o(3),p("resourceRef",Yn(30,la,e.batchId,e.levelId,e.sessionId,e.homeworkId,e.userId)
12)("resourceLabel","Submission \u2014 "+e.studentName)("courseId",e.courseId)("levelId",e.levelId)("studentId",e.userId),o(2),p("ngIf",e.queueKind!=="dispute"),o(),p("ngIf",e.queueKind==="dispute"),o(),p("ngIf",e.loading),o(),p("ngIf",!e.loading&&e.errorMessage),o(),p("ngIf",!e.loading&&e.queueKind!=="dispute"&&e.currentReviewQuestion),o(),p("ngIf",!e.loading&&e.queueKind==="dispute"&&e.currentDispute),o(),p("ngIf",!e.loading&&e.queueKind==="dispute"&&!e.currentDispute)}}function Ph(t,c){if(t&1&&(a(0,"p",145),s(1),r()),t&2){let e=d(2);o(),g(e.homeworkTitle)}}function Sh(t,c){t&1&&(a(0,"span",147),s(1),_(2,"translate"),r()),t&2&&(o(),g(m(2,1,"HOMEWORK_REVIEW.STATUS_DRAFT")))}function wh(t,c){t&1&&(a(0,"span",148),s(1),_(2,"translate"),r()),t&2&&(o(),g(m(2,1,"HOMEWORK_REVIEW.STATUS_PUBLISHED")))}function Eh(t,c){if(t&1&&(a(0,"span",149),s(1),_(2,"date"),_(3,"translate"),r()),t&2){let e=d(2);o(),g(B(3,4,"HOMEWORK_REVIEW.SUBMITTED_AT",D(7,fi,B(2,1,e.submittedAt,"medium"))))}}function Ih(t,c){if(t&1&&(a(0,"span",150),s(1),_(2,"date"),_(3,"translate"),r()),t&2){let e=d(2);o(),g(B(3,4,"HOMEWORK_REVIEW.PUBLISHED_AT",D(7,fi,B(2,1,e.publishedAt,"medium"))))}}function yh(t,c){t&1&&(a(0,"div",151)(1,"p"),s(2),_(3,"translate"),r()()),t&2&&(o(2),g(m(3,1,"HOMEWORK_REVIEW.LOADING_SUBMISSION")))}function kh(t,c){if(t&1&&(a(0,"div",152),s(1),r()),t&2){let e=d(2);o(),g(e.errorMessage)}}function Ah(t,c){if(t&1){let e=M();a(0,"div",153)(1,"div",155)(2,"div",156),s(3,"\u2713"),r(),a(4,"h3"),s(5),_(6,"translate"),r(),a(7,"p"),s(8),_(9,"translate"),r(),a(10,"button",157),x("click",function(){C(e);let i=d(2);return f(i.goBack())}),s(11),_(12,"translate"),r()()()}t&2&&(o(5),g(m(6,3,"HOMEWORK_REVIEW.REVIEW_SAVED")),o(3),g(m(9,5,"HOMEWORK_REVIEW.REVIEW_SAVED_DESC")),o(3),g(m(12,7,"HOMEWORK_REVIEW.BACK_TO_SUBMISSIONS")))}function Th(t,c){t&1&&(s(0),_(1,"translate")),t&2&&b(" ",m(1,1,"HOMEWORK_REVIEW.NEEDS_REVIEW")," ")}function Rh(t,c){t&1&&(s(0),_(1,"translate")),t&2&&b(" ",m(1,1,"HOMEWORK_REVIEW.AUTO_GRADED")," ")}function Dh(t,c){if(t&1&&v(0,"div",182),t&2){let e=d().$implicit;p("innerHTML",e.instructions,Ee)}}function Bh(t,c){if(t&1&&v(0,"div",182),t&2){let e=d().$implicit;p("innerHTML",e.passage,Ee)}}function Lh(t,c){if(t&1&&(v(0,"img",183),_(1,"translate")),t&2){let e=d().$implicit,n=d(3);p("src",n.getQuestionImageUrl(e),le)("alt",m(1,2,"HOMEWORK_BUILDER.QUESTION_IMAGE_ALT"))}}function Nh(t,c){if(t&1&&v(0,"audio",184),t&2){let e=d().$implicit,n=d(3);p("src",n.getSafeMediaUrl(e.audioUrl),le)}}function Vh(t,c){if(t&1&&(v(0,"img",192),_(1,"translate")),t&2){let e=d(2).$implicit,n=d(3);p("src",n.getQuestionMediaUrl(e),le)("alt",m(1,2,"HOMEWORK_BUILDER.QUESTION_MEDIA_PREVIEW"))}}function Fh(t,c){if(t&1&&v(0,"audio",184),t&2){let e=d(2).$implicit,n=d(3);p("src",n.getQuestionMediaUrl(e),le)}}function Uh(t,c){if(t&1&&v(0,"video",193),t&2){let e=d(2).$implicit,n=d(3);p("src",n.getQuestionMediaUrl(e),le)}}function Hh(t,c){if(t&1&&(v(0,"iframe",194),_(1,"translate")),t&2){let e=d(2).$implicit,n=d(3);p("src",n.getYoutubeEmbedUrl(e),ft)("title",m(1,2,"HOMEWORK_BUILDER.QUESTION_VIDEO_PREVIEW"))}}function Gh(t,c){if(t&1&&(a(0,"a",195),s(1),_(2,"translate"),r()),t&2){let e=d(2).$implicit,n=d(3);p("href",n.getQuestionMediaUrl(e),le),o(),g(m(2,2,"HOMEWORK_BUILDER.OPEN_RESOURCE"))}}function qh(t,c){if(t&1&&v(0,"div",182),t&2){let e=d(2).$implicit;p("innerHTML",e.media.transcript,Ee)}}function Wh(t,c){if(t&1&&(a(0,"div",185),h(1,Vh,2,4,"img",192)(2,Fh,1,1,"audio",184)(3,Uh,1,1,"video",193)(4,Hh,2,4,"iframe",194)(5,Gh,3,4,"a",195)(6,qh,1,1,"div",182),r()),t&2){let e=d().$implicit,n=d(3);o(),P(1,e.media.kind==="image"&&n.getQuestionMediaUrl(e)?1:-1),o(),P(2,e.media.kind==="audio"&&n.getQuestionMediaUrl(e)?2:-1),o(),P(3,e.media.kind==="video"&&n.getQuestionMediaUrl(e)?3:-1),o(),P(4,e.media.kind==="youtube"&&n.getYoutubeEmbedUrl(e)?4:-1),o(),P(5,e.media.kind==="external_url"&&n.getQuestionMediaUrl(e)?5:-1),o(),P(6,e.media.transcript?6:-1)}}function zh(t,c){if(t&1){let e=M();a(0,"app-oral-transcript-feedback",78),x("changed",function(i){C(e);let l=d().$implicit,u=d(3);return f(u.onWrittenFeedbackChanged(i,l))}),r()}if(t&2){let e=d().$implicit,n=d(3);p("surface","written")("value",n.writtenFeedbackValueFor(e))("readOnly",n.gradingStatus==="published")}}function Kh(t,c){if(t&1&&v(0,"audio",184),t&2){let e=d(2).$implicit,n=d(3);p("src",n.getStudentAnswerAudioUrl(e.questionId),le)}}function $h(t,c){t&1&&(a(0,"p",196),s(1),_(2,"translate"),r()),t&2&&(o(),g(m(2,1,"HOMEWORK_REVIEW.NO_AUDIO_SUBMITTED")))}function jh(t,c){if(t&1&&h(0,Kh,1,1,"audio",184)(1,$h,3,3),t&2){let e=d().$implicit,n=d(3);P(0,n.getStudentAnswerAudioUrl(e.questionId)?0:1)}}function Qh(t,c){if(t&1&&(a(0,"div",189)(1,"span",197),s(2),r()()),t&2){let e=d().$implicit,n=d(3);o(2),g(n.getAnswerText(e))}}function Yh(t,c){if(t&1&&(a(0,"p",199)(1,"strong"),s(2),_(3,"translate"),r(),s(4),r()),t&2){let e,n=d(2).$implicit,i=d(3);o(2),b("",m(3,2,"HOMEWORK_REVIEW.AI_FEEDBACK"),":"),o(2),b(" ",(e=i.getAnswer(n.questionId))==null?null:e.aiFeedback," ")}}function Xh(t,c){if(t&1&&(a(0,"div",189)(1,"span",197),s(2),r(),a(3,"span",198),s(4),_(5,"translate"),r()(),h(6,Yh,5,4,"p",199)),t&2){let e,n,i,l,u=d().$implicit,O=d(3);o(2),g(O.getAnswerText(u)),o(),y("correct",(e=O.getAnswer(u.questionId))==null?null:e.isCorrect)("incorrect",!((n=O.getAnswer(u.questionId))!=null&&n.isCorrect)),o(),b(" ",m(5,7,(i=O.getAnswer(u.questionId))!=null&&i.isCorrect?"HOMEWORK_REVIEW.CORRECT":"HOMEWORK_REVIEW.INCORRECT")," "),o(2),P(6,(l=O.getAnswer(u.questionId))!=null&&l.aiFeedback?6:-1)}}function Jh(t,c){if(t&1){let e=M();a(0,"div",190)(1,"app-ai-suggestion-panel",200),x("accepted",function(i){C(e);let l=d().$implicit,u=d(3);return f(u.onAiAccepted(l.questionId,i))})("edited",function(i){C(e);let l=d().$implicit,u=d(3);return f(u.onAiEdited(l.questionId,i))})("rejected",function(){C(e);let i=d().$implicit,l=d(3);return f(l.onAiRejected(i.questionId))}),r()()}if(t&2){let e=d().$implicit,n=d(3);o(),p("suggestion",n.getAnswer(e.questionId).aiSuggestion)("maxPoints",e.points)}}function Zh(t,c){if(t&1){let e=M();a(0,"div",201)(1,"span"),s(2),_(3,"translate"),a(4,"strong"),s(5),r()(),a(6,"span",202),s(7),_(8,"translate"),r(),a(9,"input",203),T("ngModelChange",function(i){C(e);let l=d();return A(l.score,i)||(l.score=i),f(i)}),r(),a(10,"span",204),s(11),r()()}if(t&2){let e,n=d(),i=d().$implicit,l=d(3);o(2),b("",m(3,10,"HOMEWORK_REVIEW.AUTO_SCORE"),": "),o(3),N("",((e=l.getAnswer(i.questionId))==null?null:e.pointsEarned)||0," / ",i.points,""),o(2),g(m(8,12,"HOMEWORK_REVIEW.OVERRIDE_OPTIONAL")),o(2),y("input-error",l.scoreError(n)),k("ngModel",n.score),p("min",0)("max",n.maxPoints),o(2),b("/ ",n.maxPoints,"")}}function ex(t,c){if(t&1&&(a(0,"span",207),s(1),_(2,"translate"),r()),t&2){let e=d(2);o(),g(B(2,1,"HOMEWORK_REVIEW.SCORE_RANGE_ERROR",D(4,If,e.maxPoints)))}}function tx(t,c){if(t&1){let e=M();a(0,"div",205)(1,"label",206),s(2),_(3,"translate"),r(),a(4,"input",203),T("ngModelChange",function(i){C(e);let l=d();return A(l.score,i)||(l.score=i),f(i)}),r(),a(5,"span",204),s(6),r(),h(7,ex,3,6,"span",207),r(),a(8,"div",208)(9,"label",163),s(10),_(11,"translate"),r(),a(12,"input",209),_(13,"translate"),T("ngModelChange",function(i){C(e);let l=d();return A(l.correctAnswer,i)||(l.correctAnswer=i),f(i)}),r()(),a(14,"div",208)(15,"label",163),s(16),_(17,"translate"),r(),a(18,"textarea",210),_(19,"translate"),T("ngModelChange",function(i){C(e);let l=d();return A(l.feedback,i)||(l.feedback=i),f(i)}),r()(),a(20,"div",162)(21,"label",163),s(22),_(23,"translate"),r(),a(24,"a
12pp-teacher-audio-recorder",117),x("audioUploaded",function(i){C(e);let l=d(2).$implicit,u=d(3);return f(u.onAudioUploaded(l.questionId,i))}),r()()}if(t&2){let e=d(),n=d().$implicit,i=d(3);o(2),g(m(3,19,"HOMEWORK_REVIEW.SCORE")),o(2),y("input-error",i.scoreError(e)),k("ngModel",e.score),p("min",0)("max",e.maxPoints),o(2),b("/ ",e.maxPoints,""),o(),P(7,i.scoreError(e)?7:-1),o(3),g(m(11,21,"HOMEWORK_REVIEW.CORRECT_ANSWER")),o(2),k("ngModel",e.correctAnswer),p("placeholder",m(13,23,"HOMEWORK_REVIEW.CORRECT_ANSWER_PLACEHOLDER")),o(4),g(m(17,25,"HOMEWORK_REVIEW.FEEDBACK_FOR_STUDENT")),o(2),k("ngModel",e.feedback),p("placeholder",m(19,27,"HOMEWORK_REVIEW.FEEDBACK_PLACEHOLDER")),o(4),g(m(23,29,"HOMEWORK_REVIEW.AUDIO_FEEDBACK")),o(2),p("questionId",n.questionId)("uploadUrl",i.uploadAudioUrl)("deleteUrl",i.deleteAudioUrl)("existingAudioUrl",e.audioUrl||null)}}function nx(t,c){if(t&1&&(a(0,"div",191),h(1,Zh,12,14,"div",201)(2,tx,25,31),r()),t&2){let e=d().$implicit,n=d(3);o(),P(1,n.isManualReview(e.type,e.questionId)?-1:1),o(),P(2,n.isManualReview(e.type,e.questionId)?2:-1)}}function ix(t,c){if(t&1&&(a(0,"div",175)(1,"div",176)(2,"span",177),s(3),r(),a(4,"span",178),h(5,Th,2,3)(6,Rh,2,3),r(),a(7,"span",179),s(8),r(),a(9,"span",180),s(10),_(11,"translate"),r()(),v(12,"div",181),h(13,Dh,1,1,"div",182)(14,Bh,1,1,"div",182)(15,Lh,2,4,"img",183)(16,Nh,1,1,"audio",184)(17,Wh,7,6,"div",185),a(18,"div",186)(19,"label",187),s(20),_(21,"translate"),r(),h(22,zh,1,3,"app-oral-transcript-feedback",188)(23,jh,2,1)(24,Qh,3,1,"div",189)(25,Xh,7,9),r(),h(26,Jh,2,2,"div",190)(27,nx,3,2,"div",191),r()),t&2){let e,n,i=c.$implicit,l=d(3);y("auto-graded",!l.isManualReview(i.type,i.questionId))("manual-review",l.isManualReview(i.type,i.questionId)),o(3),g(l.questionLabel(i)),o(),y("badge-amber",l.isManualReview(i.type,i.questionId)),o(),P(5,l.isManualReview(i.type,i.questionId)?5:6),o(3),g(i.type),o(2),g(B(11,23,"HOMEWORK_REVIEW.POINTS_SHORT",D(28,en,i.points))),o(2),p("innerHTML",i.questionText,Ee),o(),P(13,i.instructions?13:-1),o(),P(14,i.passage?14:-1),o(),P(15,l.getQuestionImageUrl(i)?15:-1),o(),P(16,l.getSafeMediaUrl(i.audioUrl)?16:-1),o(),P(17,i.media?17:-1),o(3),g(m(21,26,"HOMEWORK_REVIEW.STUDENT_ANSWER")),o(2),P(22,i.type==="writing"?22:-1),o(),P(23,i.type==="speaking"?23:-1),o(),P(24,l.isManualReview(i.type,i.questionId)&&i.type!=="writing"&&i.type!=="speaking"?24:-1),o(),P(25,l.isManualReview(i.type,i.questionId)?-1:25),o(),P(26,l.
12isManualReview(i.type,i.questionId)&&((e=l.getAnswer(i.questionId))!=null&&e.aiSuggestion)?26:-1),o(),P(27,(n=l.getGrade(i.questionId))?27:-1,n)}}function ox(t,c){t&1&&(a(0,"div",219),v(1,"div",220),a(2,"div",221),v(3,"div",222)(4,"div",223),r()())}function rx(t,c){t&1&&(a(0,"div",215),_(1,"translate"),z(2,ox,5,0,"div",219,$n),r()),t&2&&(R("aria-label",m(1,1,"HOMEWORK_REVIEW.MISTAKES_LOADING")),o(2),K(Re(3,yf)))}function ax(t,c){t&1&&(a(0,"p",216),s(1),_(2,"translate"),r()),t&2&&(o(),g(m(2,1,"HOMEWORK_REVIEW.MISTAKES_NONE")))}function sx(t,c){t&1&&(a(0,"p",217),s(1),_(2,"translate"),r()),t&2&&(o(),g(m(2,1,"HOMEWORK_REVIEW.MISTAKES_LOAD_ERROR")))}function lx(t,c){if(t&1&&(a(0,"span",228),s(1),r()),t&2){let e=d(2).$implicit;o(),g(e.mistakeSubcategory)}}function cx(t,c){if(t&1&&(a(0,"span",246),s(1),_(2,"translate"),r()),t&2){let e=d();Ze("vet-status--"+e.status),o(),b(" ",m(2,3,"HOMEWORK_REVIEW.MISTAKE_STATUS_"+e.status)," ")}}function dx(t,c){if(t&1){let e=M();a(0,"button",247),x("click",function(){let i=C(e).$implicit,l=d(2).$implicit,u=d(6);return f(u.setSeverity(l.mistakeId,i))}),s(1),_(2,"translate"),r()}if(t&2){let e=c.$implicit,n=d();Ze("severity-chip--"+e),y("active",n.severity===e),o(),g(m(2,5,"HOMEWORK_REVIEW.SEVERITY_"+e))}}function px(t,c){if(t&1){let e=M();a(0,"li",225)(1,"div",226)(2,"span",227),s(3),r(),h(4,lx,2,1,"span",228)(5,cx,3,5,"span",229),r(),a(6,"div",230)(7,"span",231),s(8),r(),a(9,"span",232),s(10,"\u2192"),r(),a(11,"span",233),s(12),r()(),a(13,"p",234),s(14),r(),a(15,"div",235)(16,"span",236),s(17),_(18,"translate"),r(),a(19,"div",237),z(20,dx,3,7,"button",238,$n),r()(),a(22,"div",235)(23,"label",236),s(24),_(25,"translate"),r(),a(26,"input",239),_(27,"translate"),x("ngModelChange",function(i){C(e);let l=d().$implicit,u=d(6);return f(u.setCategory(l.mistakeId,i))}),r()(),a(28,"div",240)(29,"button",241),x("click",function(){C(e);let i=d().$implicit,l=d(6);return f(l.acceptMistake(i.mistakeId))}),s(30),_(31,"translate"),r(),a(32,"button",242),x("click",function(){C(e);let i=d().$implicit,l=d(6);return f(l.rejectMistake(i.mistakeId))}),s(33),_(34,"translate"),r(),a(35,"label",243)(36,"input",244),x("change",function(){C(e);let i=d().$implicit,l=d(6);return f(l.toggleMakeFlashcard(i.mistakeId))}),r(),a(37,"span",245),s(38),_(39,"translate"),r()()()()}if(t&2){let e=c,n=d().$implicit,i=d(6);y("mistake-row--rejected",e.status==="rejected"),o(3),g(i.getSkillTypeLabel(n.skillType)),o(),P(4,n.mistakeSubcategory?4:-1),o(),P(5,e.status!=="pending"?5:-1),o(3),g(n.originalText),o(4),g(n.correctedText),o(2),g(i.getMistakeExplanation(n)),o(3),g(m(18,25,"HOMEWORK_REVIEW.SEVERITY")),o(3),K(i.severityOptions),o(3),R("for","cat-"+n.mistakeId),o(),b(" ",m(25,27,"HOMEWORK_REVIEW.CATEGORY")," "),o(2),p("id","cat-"+n.mistakeId)("ngModel",e.mistakeCategory)("placeholder",m(27,29,"HOMEWORK_REVIEW.CATEGORY_PLACEHOLDER")),o(3),y("active",e.status==="accepted"),o(),g(m(31,31,e.status==="accepted"?"HOMEWORK_REVIEW.MISTAKE_ACCEPTED":"HOMEWORK_REVIEW.MISTAKE_ACCEPT")),o(2),y("active",e.status==="rejected"),o(),g(m(34,33,"HOMEWORK_REVIEW.MISTAKE_REJECT")),o(2),y("disabled",e.status==="rejected"),o(),p("checked",e.makeFlashcard)("disabled",e.status==="rejected"),o(2),g(m(39,35,"HOMEWORK_REVIEW.MAKE_FLASHCARD"))}}function _x(t,c){if(t&1&&h(0,px,40,37,"li",224),t&2){let e,n=c.$implicit,i=d(6);P(0,(e=i.getVet(n.mistakeId))?0:-1,e)}}function mx(t,c){if(t&1&&(a(0,"ul",218),z(1,_x,1,1,null,null,Pf),r()),t&2){let e=d(5);o(),K(e.mistakes)}}function gx(t,c){if(t&1&&(a(0,"div",214),h(1,rx,4,4,"div",215)(2,ax,3,3,"p",216)(3,sx,3,3,"p",217)(4,mx,3,0,"ul",218),r()),t&2){let e=d(4);o(),P(1,e.mistakesState==="loading"?1:-1),o(),P(2,e.mistakesState==="empty"?2:-1),o(),P(3,e.mistakesState==="error"?3:-1),o(),P(4,e.mistakesState==="loaded"?4:-1)}}function ux(t,c){if(t&1){let e=M();a(0,"div",165)(1,"button",211),x("click",function(){C(e);let i=d(3);return f(i.toggleMistakesPanel())}),a(2,"span",212),s(3),_(4,"translate"),r(),a(5,"span",213),s(6,"\u203A"),r()(),h(7,gx,5,4,"div",214),r()}if(t&2){let e=d(3);o(3),g(m(4,4,"HOMEWORK_REVIEW.MISTAKES_PANEL_TITLE")),o(2),y("open",e.mistakesPanelOpen),o(2),P(7,e.mistakesPanelOpen?7:-1)}}function Cx(t,c){t&1&&(a(0,"div",167),s(1),_(2,"translate"),r()),t&2&&(o(),g(m(2,1,"HOMEWORK_REVIEW.FIX_SCORE_ERRORS")))}function fx(t,c){t&1&&(a(0,"div",167),s(1),_(2,"translate"),r()),t&2&&(o(),g(m(2,1,"HOMEWORK_REVIEW.MISSING_MANUAL_GRADES")))}
12function hx(t,c){if(t&1&&(a(0,"div",168),s(1),r()),t&2){let e=d(3);o(),g(e.errorMessage)}}function xx(t,c){t&1&&(a(0,"div",169),s(1),_(2,"translate"),r()),t&2&&(o(),g(m(2,1,"HOMEWORK_REVIEW.REVISION_REQUESTED_DONE")))}function bx(t,c){t&1&&(s(0),_(1,"translate")),t&2&&b(" ",m(1,1,"HOMEWORK_REVIEW.SAVING")," ")}function vx(t,c){t&1&&(s(0),_(1,"translate")),t&2&&b(" ",m(1,1,"HOMEWORK_REVIEW.SAVE_DRAFT")," ")}function Ox(t,c){t&1&&(s(0),_(1,"translate")),t&2&&b(" ",m(1,1,"HOMEWORK_REVIEW.PUBLISHING")," ")}function Mx(t,c){t&1&&(s(0),_(1,"translate")),t&2&&b(" ",m(1,1,"HOMEWORK_REVIEW.UPDATE_REPUBLISH")," ")}function Px(t,c){t&1&&(s(0),_(1,"translate")),t&2&&b(" ",m(1,1,"HOMEWORK_REVIEW.PUBLISH_TO_STUDENT")," ")}function Sx(t,c){t&1&&(s(0),_(1,"translate")),t&2&&b(" ",m(1,1,"HOMEWORK_REVIEW.PUBLISHING")," ")}function wx(t,c){t&1&&(s(0),_(1,"translate")),t&2&&b(" ",m(1,1,"HOMEWORK_REVIEW.PUBLISH_AND_NEXT")," ")}function Ex(t,c){if(t&1){let e=M();a(0,"button",173),x("click",function(){C(e);let i=d(3);return f(i.publishAndNext())}),h(1,Sx,2,3)(2,wx,2,3),r()}if(t&2){let e=d(3);p("disabled",e.publishing||e.hasValidationErrors||e.missingManualGrades),o(),P(1,e.publishing?1:2)}}function Ix(t,c){if(t&1){let e=M();a(0,"div",154),z(1,ix,28,30,"div",158,Mf),a(3,"div",159)(4,"label",160),s(5),_(6,"translate"),r(),a(7,"textarea",161),_(8,"translate"),T("ngModelChange",function(i){C(e);let l=d(2);return A(l.overallFeedback,i)||(l.overallFeedback=i),f(i)}),r(),a(9,"div",162)(10,"label",163),s(11),_(12,"translate"),r(),a(13,"app-teacher-audio-recorder",164),x("audioUploaded",function(i){C(e);let l=d(2);return f(l.onAudioUploaded("overall",i))}),r()()(),h(14,ux,8,6,"div",165),a(15,"div",166),h(16,Cx,3,3,"div",167)(17,fx,3,3,"div",167)(18,hx,2,1,"div",168)(19,xx,3,3,"div",169),a(20,"div",170)(21,"button",171),x("click",function(){C(e);let i=d(2);return f(i.openRevisionDialog())}),s(22),_(23,"translate"),r(),a(24,"button",172),x("click",function(){C(e);let i=d(2);return f(i.saveDraft())}),h(25,bx,2,3)(26,vx,2,3),r(),a(27,"button",173),x("click",function(){C(e);let i=d(2);return f(i.publishGrading())}),h(28,Ox,2,3)(29,Mx,2,3)(30,Px,2,3),r(),h(31,Ex,3,2,"button",174),r()()()}if(t&2){let e=d(2);o(),K(e.questions),o(4),g(m(6,19,"HOMEWORK_REVIEW.OVERALL_FEEDBACK")),o(2),k("ngModel",e.overallFeedback),p("placeholder",m(8,21,"HOMEWORK_REVIEW.OVERALL_FEEDBACK_PLACEHOLDER")),o(4),g(m(12,23,"HOMEWORK_REVIEW.OVERALL_AUDIO_FEEDBACK")),o(2),p("uploadUrl",e.uploadAudioUrl)("deleteUrl",e.deleteAudioUrl)("existingAudioUrl",e.overallAudioUrl||null),o(),P(14,e.mistakesState!=="idle"?14:-1),o(2),P(16,e.hasValidationErrors?16:-1),o(),P(17,e.missingManualGrades?17:-1),o(),P(18,e.errorMessage?18:-1),o(),P(19,e.revisionRequested?19:-1),o(2),p("disabled",e.requestingRevision||e.publishing||e.savingDraft||e.revisionRequested||!e.eligibleRevisionQuestions.length),o(),b(" ",m(23,25,"HOMEWORK_REVIEW.REQUEST_REVISION")," "),o(2),p("disabled",e.savingDraft||e.publishing||e.hasValidationErrors),o(),P(25,e.savingDraft?25:26),o(2),p("disabled",e.publishing||e.hasValidationErrors||e.missingManualGrades),o(),P(28,e.publishing?28:e.gradingStatus==="published"?29:30),o(3),P(31,e.nextQueuedUserId?31:-1)}}function yx(t,c){if(t&1){let e=M();G(0),a(1,"div",141)(2,"div",142)(3,"button",143),x("click",function(){C(e);let i=d();return f(i.goBack())}),s(4),_(5,"translate"),r(),a(6,"div",144),h(7,Ph,2,1,"p",145),a(8,"div",146)(9,"h2"),s(10),_(11,"translate"),r(),h(12,Sh,3,3,"span",147)(13,wh,3,3,"span",148),v(14,"app-assign-task-button",33),r(),h(15,Eh,4,9,"span",149)(16,Ih,4,9,"span",150),r()(),h(17,yh,4,3,"div",151)(18,kh,2,1,"div",152)(19,Ah,13,9,"div",153)(20,Ix,32,27,"div",154),r(),q()}if(t&2){let e=d();o(4),b("\u2190 ",m(5,16,"HOMEWORK_REVIEW.BACK_TO_SUBMISSIONS"),""),o(3),P(7,e.homeworkTitle?7:-1),o(3),g(B(11,18,"HOMEWORK_REVIEW.REVIEW_STUDENT",D(21,Wt,e.studentName))),o(2),P(12,e.gradingStatus==="draft"?12:-1),o(),P(13,e.gradingStatus==="published"?13:-1),o(),p("resourceRef",Yn(23,la,e.batchId,e.levelId,e.sessionId,e.homeworkId,e.userId))("resourceLabel","Submission \u2014 "+e.studentName)("courseId",e.courseId)("levelId",e.levelId)("studentId",e.userId),o(),P(15,e.submittedAt?15:-1),o(),P(16,e.gradingStatus==="published"&&e.publishedAt?16:-1),o(),P(17,e.loading?17:-1),o(),P(18,!e.loading&&e.errorMessage&&!e.saved?18:-1),o(),P(19,e.saved?19:-1),o(),P(20,!e.loading&&!e.saved?20:-1)}}
12function kx(t,c){if(t&1&&(a(0,"span",251),s(1),r()),t&2){let e=d(2);o(),g(e.discussionAwaitingCount)}}function Ax(t,c){if(t&1){let e=M();a(0,"div",248)(1,"button",249),x("click",function(){C(e);let i=d();return f(i.toggleDiscussionPanel())}),s(2),_(3,"translate"),h(4,kx,2,1,"span",250),r()()}if(t&2){let e=d();o(2),b(" ",m(3,2,"HOMEWORK_REVIEW.DISCUSSION_TOGGLE")," "),o(2),p("ngIf",e.discussionAwaitingCount>0)}}function Tx(t,c){if(t&1){let e=M();a(0,"app-discussion-topics-drawer",252),x("closed",function(){C(e);let i=d();return f(i.toggleDiscussionPanel())}),r()}if(t&2){let e=d();p("inline",!0)("isOpen",!0)("viewerRole","instructor")("targetUserId",e.userId)("courseId",e.courseId)("sessionId",e.sessionId)("homeworkId",e.homeworkId)}}function Rx(t,c){if(t&1&&(a(0,"span"),s(1),_(2,"translate"),r()),t&2){let e=d(3).$implicit;o(),g(m(2,1,e.labelKey))}}function Dx(t,c){if(t&1){let e=M();a(0,"button",286),x("click",function(){C(e);let i=d(3).$implicit,l=d(3);return f(l.toggleRevisionScopeGroup(i))}),s(1),_(2,"translate"),r()}t&2&&(o(),g(m(2,1,"HOMEWORK_REVIEW.REVISION_DIALOG.SELECT_ALL")))}function Bx(t,c){if(t&1&&(a(0,"div",284),h(1,Rx,3,3,"span",5)(2,Dx,3,3,"button",285),r()),t&2){let e=d(2).$implicit;o(),p("ngIf",e.labelKey),o(),p("ngIf",e.questions.length>1)}}function Lx(t,c){if(t&1&&(a(0,"span",291),s(1),r()),t&2){let e=d().$implicit;o(),N("",e.currentMark," / ",e.points,"")}}function Nx(t,c){if(t&1){let e=M();a(0,"label",287)(1,"input",288),x("change",function(){let i=C(e).$implicit,l=d(5);return f(l.toggleRevisionScopeQuestion(i.questionId))}),r(),a(2,"span",289),s(3),_(4,"translate"),r(),h(5,Lx,2,2,"span",290),r()}if(t&2){let e=c.$implicit,n=d(5);o(),p("checked",n.isRevisionScopeSelected(e.questionId)),o(2),N("",e.label," \u2014 ",B(4,4,"HOMEWORK_V2.GRADING.POINTS",D(7,en,e.points)),""),o(2),p("ngIf",e.currentMark!==null)}}function Vx(t,c){if(t&1&&(G(0),h(1,Bx,3,2,"div",282)(2,Nx,6,9,"label",283),q()),t&2){let e=d().$implicit;o(),p("ngIf",e.labelKey||e.questions.length>1),o(),p("ngForOf",e.questions)}}function Fx(t,c){if(t&1&&(a(0,"span"),s(1),_(2,"translate"),r()),t&2){let e=d(2).$implicit;o(),g(m(2,1,e.labelKey))}}function Ux(t,c){if(t&1&&(a(0,"span",294),s(1),_(2,"translate"),r()),t&2){let e=d(2).$implicit;o(),g(m(2,1,e.disabledReasonKey))}}function Hx(t,c){if(t&1&&(a(0,"div",292),h(1,Fx,3,3,"span",5)(2,Ux,3,3,"span",293),r()),t&2){let e=d().$implicit;o(),p("ngIf",e.labelKey),o(),p("ngIf",e.disabledReasonKey)}}function Gx(t,c){if(t&1&&(a(0,"div",281),h(1,Vx,3,2,"ng-container",63)(2,Hx,3,2,"ng-template",null,4,ke),r()),t&2){let e=c.$implicit,n=pe(3);o(),p("ngIf",e.eligible)("ngIfElse",n)}}function qx(t,c){t&1&&(a(0,"p",295),s(1),_(2,"translate"),r()),t&2&&(o(),g(m(2,1,"HOMEWORK_REVIEW.REVISION_DIALOG.SCOPE_EMPTY_ERROR")))}function Wx(t,c){if(t&1&&(a(0,"p",296),s(1),_(2,"translate"),r()),t&2){let e=d(3);o(),b(" ",B(2,1,"HOMEWORK_REVIEW.REVISION_DIALOG.SCOPE_FOOTER",ot(4,pa,e.revisionScopePointsSelected,e.revisionScopePointsTotal,e.revisionScopePointsRemaining))," ")}}function zx(t,c){if(t&1&&(a(0,"option",297),s(1),_(2,"translate"),r()),t&2){let e=c.$implicit;p("ngValue",e),o(),g(m(2,2,"HOMEWORK_REVIEW.REVISION_REASON."+e))}}function Kx(t,c){if(t&1&&(a(0,"p",295),s(1),_(2,"translate"),r()),t&2){let e=d(3);o(),b(" ",m(2,1,e.revisionExplanation.trim().length<20?"HOMEWORK_REVIEW.REVISION_DIALOG.EXPLANATION_TOO_SHORT":"HOMEWORK_REVIEW.REVISION_DIALOG.EXPLANATION_TOO_LONG")," ")}}function $x(t,c){t&1&&(a(0,"p",295),s(1),_(2,"translate"),r()),t&2&&(o(),g(m(2,1,"HOMEWORK_REVIEW.REVISION_DIALOG.DEADLINE_PAST_ERROR")))}function jx(t,c){if(t&1){let e=M();G(0),a(1,"label",298),s(2),_(3,"translate"),r(),a(4,"input",299),T("ngModelChange",function(i){C(e);let l=d(3);return A(l.revisionDeadlineLocal,i)||(l.revisionDeadlineLocal=i),f(i)}),r(),a(5,"p",262),s(6),_(7,"translate"),r(),h(8,$x,3,3,"p",264),q()}if(t&2){let e=d(3);o(2),g(m(3,4,"HOMEWORK_REVIEW.REVISION_DIALOG.DEADLINE_LABEL")),o(2),k("ngModel",e.revisionDeadlineLocal),o(2),g(m(7,6,"HOMEWORK_REVIEW.REVISION_DIALOG.DEADLINE_HINT")),o(2),p("ngIf",!e.revisionDeadlineValid)}}
12function Qx(t,c){if(t&1&&(a(0,"span",295),s(1),r()),t&2){let e=d(3);o(),g(e.revisionDialogError)}}function Yx(t,c){if(t&1){let e=M();G(0),a(1,"header",255)(2,"div")(3,"h3"),s(4),_(5,"translate"),r(),a(6,"p",256),s(7),_(8,"translate"),r()(),a(9,"button",257),_(10,"translate"),x("click",function(){C(e);let i=d(2);return f(i.cancelRevisionDialog())}),I(),a(11,"svg",258),v(12,"path",259),r()()(),F(),a(13,"section",260)(14,"span",261),s(15),_(16,"translate"),r(),a(17,"p",262),s(18),_(19,"translate"),r(),h(20,Gx,4,2,"div",263)(21,qx,3,3,"p",264)(22,Wx,3,8,"p",265),r(),a(23,"section",260)(24,"label",266),s(25),_(26,"translate"),r(),a(27,"p",262),s(28),_(29,"translate"),r(),a(30,"select",267),T("ngModelChange",function(i){C(e);let l=d(2);return A(l.revisionReasonCode,i)||(l.revisionReasonCode=i),f(i)}),a(31,"option",268),s(32),_(33,"translate"),r(),h(34,zx,3,4,"option",269),r()(),a(35,"section",260)(36,"label",270),s(37),_(38,"translate"),r(),a(39,"textarea",271),_(40,"translate"),T("ngModelChange",function(i){C(e);let l=d(2);return A(l.revisionExplanation,i)||(l.revisionExplanation=i),f(i)}),r(),a(41,"div",272),h(42,Kx,3,3,"p",264),a(43,"span",273),s(44),_(45,"translate"),r()()(),a(46,"section",260)(47,"label",274)(48,"input",275),T("ngModelChange",function(i){C(e);let l=d(2);return A(l.revisionDeadlineEnabled,i)||(l.revisionDeadlineEnabled=i),f(i)}),r(),s(49),_(50,"translate"),r(),h(51,jx,9,8,"ng-container",5),r(),a(52,"section",260)(53,"label",276),s(54),_(55,"translate"),r(),a(56,"textarea",277),_(57,"translate"),T("ngModelChange",function(i){C(e);let l=d(2);return A(l.revisionInternalNote,i)||(l.revisionInternalNote=i),f(i)}),r()(),a(58,"footer",278),h(59,Qx,2,1,"span",264),a(60,"button",279),x("click",function(){C(e);let i=d(2);return f(i.cancelRevisionDialog())}),s(61),_(62,"translate"),r(),a(63,"button",280),x("click",function(){C(e);let i=d(2);return f(i.proceedToRevisionConfirm())}),s(64),_(65,"translate"),r()(),q()}if(t&2){let e=d(2);o(4),g(m(5,28,"HOMEWORK_REVIEW.REVISION_DIALOG.TITLE")),o(3),g(m(8,30,"HOMEWORK_REVIEW.REVISION_DIALOG.SUBTITLE")),o(2),R("aria-label",m(10,32,"HOMEWORK_REVIEW.REVISION_DIALOG.CLOSE")),o(6),g(m(16,34,"HOMEWORK_REVIEW.REVISION_DIALOG.SCOPE_LABEL")),o(3),g(m(19,36,"HOMEWORK_REVIEW.REVISION_DIALOG.SCOPE_HINT")),o(2),p("ngForOf",e.revisionScopeGroups),o(),p("ngIf",e.revisionScopeTouched&&!e.revisionScopeValid),o(),p("ngIf",e.revisionScopeValid),o(3),g(m(26,38,"HOMEWORK_REVIEW.REVISION_DIALOG.REASON_LABEL")),o(3),g(m(29,40,"HOMEWORK_REVIEW.REVISION_DIALOG.REASON_HINT")),o(2),k("ngModel",e.revisionReasonCode),o(),p("ngValue",null),o(),g(m(33,42,"HOMEWORK_REVIEW.REVISION_DIALOG.REASON_LABEL")),o(2),p("ngForOf",e.revisionReasonCodesForDialog),o(3),g(m(38,44,"HOMEWORK_REVIEW.REVISION_DIALOG.EXPLANATION_LABEL")),o(2),k("ngModel",e.revisionExplanation),p("placeholder",m(40,46,"HOMEWORK_REVIEW.REVISION_DIALOG.EXPLANATION_PLACEHOLDER")),o(3),p("ngIf",e.revisionExplanationTouched&&!e.revisionExplanationValid),o(2),g(B(45,48,"HOMEWORK_REVIEW.REVISION_DIALOG.CHAR_COUNT",D(61,kf,e.revisionExplanation.length))),o(4),k("ngModel",e.revisionDeadlineEnabled),o(),b(" ",m(50,51,"HOMEWORK_REVIEW.REVISION_DIALOG.DEADLINE_TOGGLE")," "),o(2),p("ngIf",e.revisionDeadlineEnabled),o(3),g(m(55,53,"HOMEWORK_REVIEW.REVISION_DIALOG.INTERNAL_NOTE_LABEL")),o(2),k("ngModel",e.revisionInternalNote),p("placeholder",m(57,55,"HOMEWORK_REVIEW.REVISION_DIALOG.INTERNAL_NOTE_PLACEHOLDER")),o(3),p("ngIf",e.revisionDialogError),o(2),g(m(62,57,"HOMEWORK_REVIEW.REVISION_DIALOG.CANCEL")),o(3),g(m(65,59,"HOMEWORK_REVIEW.REVISION_DIALOG.CONTINUE"))}}function Xx(t,c){if(t&1&&(a(0,"span",295),s(1),r()),t&2){let e=d(3);o(),g(e.revisionDialogError)}}function Jx(t,c){if(t&1){let e=M();G(0),a(1,"header",255)(2,"h3"),s(3),_(4,"translate"),r()(),a(5,"p",300),s(6),_(7,"translate"),r(),a(8,"p",300),s(9),_(10,"translate"),r(),a(11,"p",300),s(12),_(13,"translate"),r(),a(14,"footer",278),h(15,Xx,2,1,"span",264),a(16,"button",301),x("click",function(){C(e);let i=d(2);return f(i.backToRevisionForm())}),s(17),_(18,"translate"),r(),a(19,"button",302),x("click",function(){C(e);let i=d(2);return f(i.confirmRevisionRequest())}),s(20),_(21,"translate"),_(22,"translate"),r()(),q()}if(t&2){let e=d(2);o(3),g(B(4,9,"HOMEWORK_REVIEW.REVISION_DIALOG.CONFIRM_TITLE",D(26,Wt,e.studentName))),o(3),g(B(7,12,"HOMEWORK_REVIEW.REVISION_DIALOG.SCOPE_FOOTER",ot(28,pa,e.revisionScopePointsSelected,e.revisionScopePointsTotal,e.revisionScopePointsRemaining))),o(3),g(B(10,15,"HOMEWORK_REVIEW.REVISION_DIALOG.CONFIRM_SCORE_KEPT",D(32,da,e.currentScoreLabel))),o(3),g(m(13,18,"HOMEWORK_REVIEW.REVISION_DIALOG.CONFIRM_SURFACES")),o(3),p("ngIf",e.revisionDialogError),o(),p("disabled",e.requestingRevision),o(),g(m(18,20,"HOMEWORK_REVIEW.REVISION_DIALOG.BACK")),o(2),p("disabled",e.requestingRevision),o(),b(" ",e.requestingRevision?m(21,22,"HOMEWORK_REVIEW.REVISION_DIALOG.SENDING"):m(22,24,"HOMEWORK_REVIEW.REVISION_DIALOG.SUBMIT")," ")}}function Zx(t,c){if(t&1){let e=M();a(0,"div",253),x("click",function(){C(e);let i=d();return f(i.cancelRevisionDialog())}),a(1,"div",254),_(2,"translate"),x("click",function(i){return C(e),f(i.stopPropagation())}),h(3,Yx,66,63,"ng-container",5)(4,Jx,23,34,"ng-container",5),r()()}if(t&2){let e=d();o(),R("aria-label",m(2,3,"HOMEWORK_REVIEW.REVISION_DIALOG.TITLE")),o(2),p("ngIf",e.revisionDialogStep==="form"),o(),p("ngIf",e.revisionDialogStep==="confirm")}}var eb=["incomplete_answer","instructions_not_followed","off_topic","insufficient_length","language_quality","wrong_recording","unus
12able_audio","other"],tb={REVISION_ALREADY_OPEN:"HOMEWORK_REVIEW.REVISION_DIALOG.ALREADY_OPEN_ERROR",SUBMISSION_REVISION_CONFLICT:"HOMEWORK_REVIEW.REVISION_DIALOG.CONFLICT_ERROR",SUBMISSION_CHANGED:"HOMEWORK_REVIEW.REVISION_DIALOG.CONFLICT_ERROR",REVISION_NOT_SUPPORTED:"HOMEWORK_REVIEW.REVISION_DIALOG.NOT_SUPPORTED_ERROR"},sa={partA:"HOMEWORK_V2.RESULTS.PART_A",partB:"HOMEWORK_V2.RESULTS.PART_B",partC:"HOMEWORK_V2.RESULTS.PART_C"},nb={auto:"auto",ai_assisted:"ia",instructor:"ens"},ib={low:"minor",minor:"minor",medium:"moderate",moderate:"moderate",high:"major",major:"major"},ob={grammar:"HOMEWORK_REVIEW.SKILL_GRAMMAR",vocabulary:"HOMEWORK_REVIEW.SKILL_VOCABULARY",writing:"HOMEWORK_REVIEW.SKILL_WRITING",speaking:"HOMEWORK_REVIEW.SKILL_SPEAKING",reading:"HOMEWORK_REVIEW.SKILL_READING",listening:"HOMEWORK_REVIEW.SKILL_LISTENING",pronunciation:"HOMEWORK_REVIEW.SKILL_PRONUNCIATION"},_a=(()=>{class t{constructor(e,n,i,l,u,O,E,V){this.route=e,this.router=n,this.homeworkService=i,this.sanitizer=l,this.translate=u,this.navigationHistory=O,this.featureFlags=E,this.discussionService=V,this.destroy$=new ve,this.loading=!0,this.saving=!1,this.saved=!1,this.savingDraft=!1,this.publishing=!1,this.errorMessage="",this.mistakesState="idle",this.mistakes=[],this.mistakesPanelOpen=!0,this.mistakeVets={},this.severityOptions=["minor","moderate","major"],this.requestingRevision=!1,this.revisionHistory=[],this.revisionHistoryLoading=!1,this.revisionReasonCodes=eb,this.revisionDialogOpen=!1,this.revisionDialogStep="form",this.revisionDialogError="",this.revisionExplanation="",this.revisionReasonCode=null,this.revisionScopeQuestionIds=[],this.revisionScopeTouched=!1,this.revisionExplanationTouched=!1,this.revisionDeadlineEnabled=!1,this.revisionDeadlineLocal="",this.revisionInternalNote="",this.revisionRequestKey="",this.integrityRevisionOrigin=!1,this.uuidService=new Ho,this.timeZoneUtil=new Nt,this.studentName="",this.homeworkTitle="",this.submittedAt="",this.questions=[],this.answers=[],this.grades=[],this.overallFeedback="",this.overallAudioUrl="",this.gradingStatus="ungraded",this.publishedAt="",this.submissionStatus="",this.totalScore=0,this.totalPoints=0,this.useV2=!1,this.queueKind="",this.fromCorrections=!1,this.gradingQueue=[],this.openDisputes=[],this.aiEvaluations={},this.sectionSubmissions={},this.currentReviewIndex=0,this.rubricValues={},this.disputeDecision=null,this.adjustedDisputeScore=0,this.disputeResponse="",this.resolvingDispute=!1,this.disputeResolved=!1,this.disputeError="",this.discussionPanelOpen=!1,this.discussionAwaitingCount=0,this.v2FlagEnabled=!1,this.alwaysManualTypes=["writing","speaking","long_answer","dialogue"],this.reviewParts=Ft.map(L=>({sectionId:L.sectionId,labelKey:sa[L.sectionId],mode:nb[L.correctionMode]})),this.answerAudioDuration=0,this.measuredLengths=new Map}ngOnInit(){this.readRouteParams(),this.featureFlags&&this.featureFlags.isEnabled("frHomework3Part").then(e=>{this.v2FlagEnabled=e,this.updateV2Mode()}).catch(()=>{this.v2FlagEnabled=!1}),this.loadHomeworkTitle(),this.loadSubmission(),this.loadRevisionHistory(),this.loadDiscussionAwaitingCount()}ngOnDestroy(){this.destroy$.next(),this.destroy$.complete()}readRouteParams(){this.batchId=this.route.snapshot.paramMap.get("batchId")||"",this.levelId=this.route.snapshot.paramMap.get("levelId")||"",this.sessionId=this.route.snapshot.paramMap.get("sessionId")||"",this.homeworkId=this.route.snapshot.paramMap.get("homeworkId")||"",this.userId=this.route.snapshot.paramMap.get("userId")||"",this.courseId=this.route.snapshot.queryParamMap.get("courseId")||"",this.cohortId=this.route.snapshot.queryParamMap.get("cohortId")||"",this.queueKind=this.route.snapshot.queryParamMap.get("queueKind")||"",this.fromCorrections=this.route.snapshot.queryParamMap.get("from")==="corrections",this.gradingQueue=this.parseQueue(this.route.snapshot.queryParamMap.get("queue"))}parseQueue(e){return(e||"").split(",").map(n=>this.parseQueueEntry(n.trim())).filter(n=>!!n)}parseQueueEntry(e){if(!e)return null;if(!this.fromCorrections)return{lessonId:this.sessionId,homeworkId:this.homeworkId,userId:e};let n=e.split(":");if(n.length!==3||n.some(O=>!O))return null;let[i,l,u]=n;return{lessonId:i,homeworkId:l,userId:u}}get uploadAudioUrl(){return`course-homework/${this.sessionId}/${this.sessionId}/${this.homeworkId}/submissions/${this.userId}/audio`}get deleteAudioUrl(){return`course-homework/${this.sessionId}/${this.sessionId}/${this.homeworkId}/submissions/${this.userId}/audio`}get noAnswerSubmittedText(){return this.translate.instant("HOMEWORK_REVIEW.NO_ANSWER_SUBMITTED")}loadSubmission(){this.loading=!0,this.errorMessage="",this.homeworkService.getSubmissionDetail(this.sessionId,this.homeworkId,this.userId).pipe(U(this.destroy$)).subscribe({next:e=>{if(e?.success&&e.data){let n=e.data;this.studentName=n.studentName||this.translate.instant("HOMEWORK_REVIEW.DEFAULT_STUDENT"),this.homeworkTitle=n.homeworkTitle||n.homework?.title||this.homeworkTitle,this.submittedAt=n.submittedAt||"",this.submissionStatus=n.status||"",this.questions=n.questions||[],this.answers=n.answers||[],this.totalScore=Number(n.totalScore||0),this.totalPoints=Number(n.totalPoints||0),this.aiEvaluations=n.aiEvaluations||{},this.sectionSubmissions=n.sectionSubmissions||{},this.openDisputes=n.openDisputes||[],this.overallFeedback=n.instructorReview?.overallFeedback||"",this.overallAudioUrl=n.instructorReview?.overallAudioUrl||"",this.gradingStatus=n.instructorReview?.status||"ungraded",this.publishedAt=n.instructorReview?.publishedAt||"",this.initGrades(),this.initRubricValues(),this.updateV2Mode(),this.initDisputeState()}else this.errorMessage=this.translate.instant("HOMEWORK_REVIEW.COULD_NOT_LOAD_SUBMISSION");this.loading=!1},error:()=>{this.errorMessage=this.translate.instant("HOMEWORK_REVIEW.LOAD_SUBMISSION_FAILED"),this.loading=!1}})}loadRevisionHistory(){let e=this.homeworkService;
12!e.getRevisionHistory||!this.sessionId||!this.homeworkId||!this.userId||(this.revisionHistoryLoading=!0,e.getRevisionHistory(this.sessionId,this.homeworkId,this.userId,this.courseId).pipe(U(this.destroy$)).subscribe({next:n=>{this.revisionHistory=Array.isArray(n?.data)?n.data:n?.data?.items||[],this.revisionHistoryLoading=!1},error:()=>{this.revisionHistory=[],this.revisionHistoryLoading=!1}}))}revisionHistoryOriginLabel(e){return e.origin==="length_audit"?this.translate.instant("LENGTH_AUDIT.ORIGIN"):this.translate.instant("HOMEWORK_REVIEW.REVISION_DIALOG.TITLE")}revisionMeasurementLabels(e){return(e.measurements||[]).map(n=>{let i=n.kind==="seconds"?"LENGTH_AUDIT.MEASURED_VS_REQUIRED_SECONDS":"LENGTH_AUDIT.MEASURED_VS_REQUIRED_WORDS";return this.translate.instant(i,{questionId:n.questionId||"",actual:n.actual,required:n.required})})}loadHomeworkTitle(){!this.sessionId||!this.homeworkId||this.homeworkService.getHomework(this.sessionId).pipe(U(this.destroy$)).subscribe({next:e=>{let n=Array.isArray(e?.data)?e.data.find(i=>i.homeworkId===this.homeworkId):null;this.homeworkTitle=n?.title||this.homeworkTitle},error:()=>{this.homeworkTitle=this.homeworkTitle||""}})}initGrades(){this.grades=this.questions.map(e=>{let n=this.answers.find(u=>u.questionId===e.questionId),i=this.isManualReview(e.type,e.questionId),l=this.getInstructorScore(n);return{questionId:e.questionId,score:l??(i?null:n?.pointsEarned??0),feedback:n?.instructorFeedback||n?.teacherFeedback?.text||"",correctAnswer:n?.instructorCorrectAnswer||n?.teacherFeedback?.correctAnswer||"",maxPoints:e.points,isAutoGraded:!i,audioUrl:n?.instructorAudioUrl||n?.teacherFeedback?.audioUrl||void 0,aiSource:"manual"}})}initRubricValues(){this.rubricValues={},this.answers.forEach(e=>{e.rubric&&(this.rubricValues[e.questionId]=W({},e.rubric))})}getInstructorScore(e){if(e?.instructorScore!==void 0&&e.instructorScore!==null)return e.instructorScore;let n=e?.teacherFeedback?.score;return n??null}getAnswer(e){return this.answers.find(n=>n.questionId===e)}getGrade(e){return this.grades.find(n=>n.questionId===e)}isManualReview(e,n){if(n){let i=this.questions.find(u=>u.questionId===n),l=this.getAnswer(n);if(i?.correctionMode==="auto")return!1;if(i?.correctionMode==="ai_assisted")return l?.evalStatus==="fallback_instructor";if(i?.correctionMode==="instructor")return!0}if(this.alwaysManualTypes.includes(e))return!0;if(n){let i=this.questions.find(l=>l.questionId===n);if(i?.gradedBy==="instructor"||(i?.type==="reading"||i?.type==="listening")&&(!i?.options||i.options.length===0))return!0}return!1}get gradingQuestions(){return this.questions.filter(e=>this.isManualReview(e.type,e.questionId))}get eligibleRevisionQuestions(){let e=this.revisionReasonCode==="insufficient_length"||this.revisionReasonCode==="unusable_audio",n=this.integrityRevisionOrigin&&this.currentReviewQuestion?.correctionMode==="ai_assisted";return this.submittedQuestions.filter(i=>i.correctionMode==="instructor"||(e||n)&&i.correctionMode==="ai_assisted")}get revisionReasonCodesForDialog(){return this.integrityRevisionOrigin&&this.currentReviewQuestion?.correctionMode==="ai_assisted"?["insufficient_length","unusable_audio"]:this.revisionReasonCodes}get submittedQuestions(){return this.questions.filter(e=>!!this.getAnswer(e.questionId))}get revisionScopeGroups(){let e=[],n=new Map;return this.submittedQuestions.forEach(i=>this.addToRevisionScopeGroup(n,e,i)),e.map(i=>n.get(i))}addToRevisionScopeGroup(e,n,i){let l=i.sectionId||"ungrouped";e.has(l)||(n.push(l),e.set(l,this.newRevisionScopeGroup(l,i)));let u=e.get(l);u.eligible&&u.questions.push(this.toRevisionScopeQuestion(i))}newRevisionScopeGroup(e,n){let i=n.correctionMode==="instructor"||this.integrityRevisionOrigin&&n.correctionMode==="ai_assisted";return{sectionId:e,labelKey:sa[e]||null,eligible:i,disabledReasonKey:i?null:this.revisionDisabledReasonKey(n.correctionMode),questions:[]}}revisionDisabledReasonKey(e){return e==="ai_assisted"?"HOMEWORK_REVIEW.REVISION_DIALOG.DISABLED_AI_ASSISTED":"HOMEWORK_REVIEW.REVISION_DIALOG.DISABLED_AUTO"}toRevisionScopeQuestion(e){return{questionId:e.questionId,label:this.questionLabel(e),points:e.points,currentMark:this.getGrade(e.questionId)?.score??null}}isRevisionScopeSelected(e){return this.revisionScopeQuestionIds.includes(e)}toggleRevisionScopeQuestion(e){let n=this.revisionScopeQuestionIds.indexOf(e);n===-1?this.revisionScopeQuestionIds.push(e):this.revisionScopeQuestionIds.splice(n,1)}toggleRevisionScopeGroup(e){let n=e.questions.every(i=>this.isRevisionScopeSelected(i.questionId));e.questions.forEach(i=>
12this.setRevisionScopeSelected(i.questionId,!n))}setRevisionScopeSelected(e,n){let i=this.isRevisionScopeSelected(e);n&&!i&&this.revisionScopeQuestionIds.push(e),!n&&i&&this.revisionScopeQuestionIds.splice(this.revisionScopeQuestionIds.indexOf(e),1)}get revisionScopeValid(){return this.revisionScopeQuestionIds.length>0}get revisionScopePointsSelected(){return this.revisionScopeGroups.flatMap(n=>n.questions).filter(n=>this.isRevisionScopeSelected(n.questionId)).reduce((n,i)=>n+i.points,0)}get revisionScopePointsTotal(){return this.totalPoints}get revisionScopePointsRemaining(){return Math.max(0,this.revisionScopePointsTotal-this.revisionScopePointsSelected)}get revisionExplanationValid(){let e=this.revisionExplanation.trim().length;return e>=20&&e<=2e3}get revisionDeadlineValid(){if(!this.revisionDeadlineEnabled)return!0;let e=this.revisionDeadlineMs();if(e===null)return!1;let n=Date.now();return e>=n+2*60*60*1e3&&e<=n+30*24*60*60*1e3}revisionDeadlineMs(){let e=this.revisionDeadlineIso();if(!e)return null;let n=new Date(e).getTime();return Number.isFinite(n)?n:null}revisionDeadlineIso(){return this.revisionDeadlineLocal?this.timeZoneUtil.parseDateTimeLocal(this.revisionDeadlineLocal,this.timeZoneUtil.getDeviceTimezone()):""}get revisionFormValid(){return this.revisionExplanationValid&&this.revisionScopeValid&&!!this.revisionReasonCode&&this.revisionDeadlineValid}get currentScoreLabel(){let e=this.totalPoints>0?Math.round(this.totalScore/this.totalPoints*100):0;return`${this.totalScore} / ${this.totalPoints} (${e}%)`}get revisionRequested(){return this.submissionStatus==="needs_revision"}openRevisionDialog(){this.revisionRequested||!this.eligibleRevisionQuestions.length||(this.revisionDialogOpen=!0,this.revisionDialogStep="form",this.revisionDialogError="",this.resetRevisionForm())}resetRevisionForm(){this.revisionExplanation="",this.revisionReasonCode=null,this.revisionScopeQuestionIds=[],this.revisionScopeTouched=!1,this.revisionExplanationTouched=!1,this.revisionDeadlineEnabled=!1,this.revisionDeadlineLocal=this.defaultRevisionDeadlineLocal(),this.revisionInternalNote="",this.revisionRequestKey=this.uuidService.generateUUID()}defaultRevisionDeadlineLocal(){let e=new Date(Date.now()+2592e5);return this.timeZoneUtil.formatDateTimeLocal(e,this.timeZoneUtil.getDeviceTimezone())}cancelRevisionDialog(){this.requestingRevision||(this.revisionDialogOpen=!1,this.integrityRevisionOrigin=!1)}backToRevisionForm(){this.requestingRevision||(this.revisionDialogStep="form",this.revisionDialogError="")}proceedToRevisionConfirm(){this.revisionScopeTouched=!0,this.revisionExplanationTouched=!0,this.revisionFormValid&&(this.revisionDialogStep="confirm")}confirmRevisionRequest(){this.requestingRevision||!this.revisionFormValid||(this.requestingRevision=!0,this.revisionDialogError="",this.homeworkService.requestRevision(this.sessionId,this.homeworkId,this.userId,this.buildRevisionPayload()).pipe(U(this.destroy$)).subscribe({next:e=>this.onRevisionRequested(e),error:e=>this.onRevisionRequestError(e)}))}buildRevisionPayload(){return{requestKey:this.revisionRequestKey,explanation:this.revisionExplanation.trim(),reason:this.revisionReasonCode,scope:{questionIds:[...this.revisionScopeQuestionIds]},dueAt:this.revisionDeadlineEnabled&&this.revisionDeadlineIso()||void 0,dueAtTimezone:this.revisionDeadlineEnabled?this.timeZoneUtil.getDeviceTimezone():void 0,internalNote:this.revisionInternalNote.trim()||void 0}}onRevisionRequested(e){if(this.requestingRevision=!1,!e?.success){this.revisionDialogError=this.translate.instant("HOMEWORK_REVIEW.REQUEST_REVISION_FAILED");return}this.revisionDialogOpen=!1,this.integrityRevisionOrigin&&(this.setIntegrityDecision("resubmission_required"),this.integrityRevisionOrigin=!1),this.loadSubmission()}onRevisionRequestError(e){this.requestingRevision=!1;let n=e?.error?.message;this.revisionDialogError=this.translate.instant(tb[n]||"HOMEWORK_REVIEW.REQUEST_REVISION_FAILED")}get currentReviewQuestion(){return this.gradingQuestions[this.currentReviewIndex]||null}get currentReviewAnswer(){return this.currentReviewQuestion?this.getAnswer(this.currentReviewQuestion.questionId):void 0}get currentIntegrityFlag(){return this.currentReviewAnswer?.integrityFlag}get canRequestIntegrityResubmission(){let e=this.currentReviewQuestion?.correctionMode;return(e==="instructor"||e==="ai_assisted")&&!this.revisionRequested}acceptIntegrityFlag(){this.setIntegrityDecision("accepted")}integrityHardValidationLabel(e){return`HOMEWORK_REVIEW.INTEGRITY.HARD_VALIDATION_
12STATUS.${e||"pending"}`}requestIntegrityResubmission(){this.canRequestIntegrityResubmission&&(this.integrityRevisionOrigin=!0,this.openRevisionDialog())}setIntegrityDecision(e){let n=this.currentReviewQuestion?.questionId;n&&this.homeworkService.setIntegrityDecision(this.sessionId,this.homeworkId,this.userId,n,e).pipe(U(this.destroy$)).subscribe({next:()=>this.loadSubmission()})}get currentReviewGrade(){return this.currentReviewQuestion?this.getGrade(this.currentReviewQuestion.questionId):void 0}get currentDispute(){return this.openDisputes[0]||null}get disputeEvaluation(){return this.currentDispute&&this.aiEvaluations[this.currentDispute.questionId]||null}get disputeQuestion(){return this.currentDispute&&this.questions.find(e=>e.questionId===this.currentDispute?.questionId)||null}getDisputeAnswerText(){return this.disputeQuestion?this.getAnswerText(this.disputeQuestion):this.noAnswerSubmittedText}gradingQuestionsForPart(e){return this.gradingQuestions.filter(n=>n.sectionId===e)}get unpartitionedGradingQuestions(){let e=new Set(this.reviewParts.map(n=>n.sectionId));return this.gradingQuestions.filter(n=>!e.has(n.sectionId||""))}reviewIndexOf(e){return this.gradingQuestions.findIndex(n=>n.questionId===e.questionId)}questionLabel(e){return Pn(this.questions,e)}isAiFallback(e){return this.getAnswer(e)?.evalStatus==="fallback_instructor"}hasPartQuestions(e){return this.questions.some(n=>n.sectionId===e)}sectionScoreLabel(e){let i=this.sectionSubmissions[e]?.score,l=this.questions.filter(V=>V.sectionId===e),u=l.some(V=>this.isManualReview(V.type,V.questionId));if(i&&typeof i=="object"&&!u)return`${Number(i.totalScore||0)} / ${Number(i.totalPoints||0)}`;let O=Number(i&&typeof i=="object"?i.totalScore||0:i||0),E=l.reduce((V,L)=>V+this.effectiveMaxPoints(L),0);return`${O} / ${E}`}formatSubmittedAt(e){let n=new Date(e);if(!Number.isFinite(n.getTime()))return"";let i=this.translate.currentLang==="fr"?"fr-CA":"en-CA";return new Intl.DateTimeFormat(i,{dateStyle:"long",timeStyle:"short"}).format(n)}showQuestion(e){e>=0&&e<this.gradingQuestions.length&&(this.currentReviewIndex=e)}rubricMaxTotal(e){return this.rubricRows(e).reduce((n,i)=>n+i.max,0)}effectiveMaxPoints(e){return this.isManualReview(e.type,e.questionId)?this.rubricMaxTotal(e):e.points}rubricRows(e){return e.correctionMode==="ai_assisted"&&e.points===5?[{key:"content",labelKey:"HOMEWORK_V2.GRADING.RUBRIC_WRITTEN_CONTENT",max:2},{key:"accuracy",labelKey:"HOMEWORK_V2.GRADING.RUBRIC_WRITTEN_ACCURACY",max:2},{key:"range",labelKey:"HOMEWORK_V2.GRADING.RUBRIC_WRITTEN_RANGE",max:1}]:e.type==="speaking"?[{key:"content",labelKey:"HOMEWORK_V2.GRADING.RUBRIC_ORAL_CONTENT",max:2},{key:"accuracy",labelKey:"HOMEWORK_V2.GRADING.RUBRIC_ORAL_ACCURACY",max:2},{key:"range",labelKey:"HOMEWORK_V2.GRADING.RUBRIC_ORAL_RANGE",max:1}]:[{key:"content",labelKey:"HOMEWORK_V2.GRADING.RUBRIC_WRITTEN_CONTENT",max:3},{key:"accuracy",labelKey:"HOMEWORK_V2.GRADING.RUBRIC_WRITTEN_ACCURACY",max:3},{key:"range",labelKey:"HOMEWORK_V2.GRADING.RUBRIC_WRITTEN_RANGE",max:2}]}onAnswerAudioLoaded(e){let i=e.target?.duration;this.answerAudioDuration=Number.isFinite(i)?i:0}playAnswerFrom(e){let n=this.answerAudio?.nativeElement;n&&(n.currentTime=e,n.play().catch(()=>{}))}playAnswerAtRatio(e){return ye(this,null,function*(){let n=this.answerAudio?.nativeElement;if(!n)return;let i=yield this.recordingLength(n);if(i<=0){n.play().catch(()=>{});return}this.answerAudioDuration=i,this.playAnswerFrom(e*i)})}recordingLength(e){return ye(this,null,function*(){if(this.hasKnownDuration(e))return e.duration;let n=e.currentSrc||e.src,i=this.measuredLengths.get(n);if(i!==void 0)return i;let l=yield aa(n);return this.measuredLengths.set(n,l),l})}hasKnownDuration(e){return Number.isFinite(e.duration)&&e.duration>0}oralFeedbackFor(e){let n=this.getAnswer(e);return n?.oralFeedback?n.oralFeedback:{transcript:n?.aiSuggestion?.transcript||"",transcriptSource:"auto",annotations:[]}}onOralFeedbackChanged(e,n){let i=this.getAnswer(e);i&&(i.oralFeedback=n);let l=this.getGrade(e);l&&(l.oralFeedback=n)}isInstructorWrittenQuestion(e){return e.type==="writing"||e.type==="long_answer"}writtenFeedbackValueFor(e){let n=this.getAnswer(e.questionId);return n?.writtenFeedback?n.writtenFeedback:{transcript:this.getAnswerText(e),transcriptSource:"auto",annotations:[]}}onWrittenFeedbackChanged(e,n){let i=this.getAnswer(n.questionId);i&&(i.writtenFeedback=e);let l=this.getGrade(n.questionId);l&&(l.writtenFeedback=e)}rubricOptions(e){return Array.from({length:e+1},(n,i)=>i)}rubricScore(e,n){return this.rubricValues[e]?.[n]}setRubricScore(e,n,i){this.rubricValues[e.questionId]=Me(W({},this.rubricValues[e.questionId]||{}),{[n]:i});let l=this.rubricTotal(e),u=this.getGrade(e.questionId);u&&l!==null&&(u.score=Math.min(this.rubricMaxTotal(e),l))}rubricTotal(e){let n=this.rubricValues[e.questionId]||{},i=this.rubricRows(e);return i.some(l=>n[l.key]===void 0)?null:i.reduce((l,u)=>l+n[u.key],0)}selectDisputeDecision(e){this.disputeDecision=e,this.adjustedDisputeScore=Number(this.disputeEvaluation?.score||0)}adjustDisputeScore(e){let n=this.disputeQuestion?.points||1;this.adjustedDisputeScore=Math.max(0,Math.min(n,this.adjustedDisputeScore
12+e))}resolveOpenDispute(){let e=this.currentDispute;if(!e||!this.disputeDecision||this.resolvingDispute)return;let n=Number(this.disputeEvaluation?.score||0),i={action:this.disputeDecision,scoreDelta:this.disputeDecision==="adjust"?this.adjustedDisputeScore-n:0,note:this.disputeResponse};this.resolvingDispute=!0,this.disputeError="",this.homeworkService.resolveDispute(this.sessionId,this.homeworkId,this.userId,e.disputeId,i).pipe(U(this.destroy$)).subscribe({next:l=>{if(this.resolvingDispute=!1,l?.success){this.disputeResolved=!0;return}this.disputeError=this.translate.instant("HOMEWORK_V2.DISPUTES.RESOLVE_FAILED")},error:()=>{this.resolvingDispute=!1,this.disputeError=this.translate.instant("HOMEWORK_V2.DISPUTES.RESOLVE_FAILED")}})}toggleDiscussionPanel(){this.discussionPanelOpen=!this.discussionPanelOpen}updateV2Mode(){let e=this.questions.some(n=>!!n.sectionId||!!n.correctionMode);this.useV2=this.v2FlagEnabled&&e}initDisputeState(){this.queueKind!=="dispute"||!this.currentDispute||(this.adjustedDisputeScore=Number(this.disputeEvaluation?.score||0))}loadDiscussionAwaitingCount(){this.discussionService&&this.discussionService.listTopics(this.courseId,this.sessionId,this.homeworkId,this.userId).pipe(U(this.destroy$)).subscribe({next:e=>{this.discussionAwaitingCount=e.items.filter(n=>n.state==="awaiting_instructor").length},error:()=>{this.discussionAwaitingCount=0}})}getYoutubeEmbedUrl(e){let n=e.media?.embedUrl||this.youtubeEmbedFromUrl(e.media?.url||"");return n?this.sanitizer.bypassSecurityTrustResourceUrl(n):null}getQuestionImageUrl(e){return this.getSafeMediaUrl(e.imageUrl)}getQuestionMediaUrl(e){return this.getSafeMediaUrl(e.media?.url)}getSafeMediaUrl(e){return pt([e])||""}getStudentAnswerAudioUrl(e){return Xo(this.getAnswer(e)?.answer)}getAnswerText(e){let n=this.getAnswer(e.questionId)?.answer;return Array.isArray(n)&&e.words?.length?n.map(i=>e.words?.[i]).filter(Boolean).join(" "):String(n??this.noAnswerSubmittedText)}scoreError(e){return e.score===null||e.score===void 0?!1:e.score<0||e.score>e.maxPoints}get hasValidationErrors(){return this.grades.some(e=>this.scoreError(e))}get missingManualGrades(){return this.grades.some(e=>!e.isAutoGraded&&(e.score===null||e.score===void 0))}onAiAccepted(e,n){let i=this.getGrade(e);if(!i)return;i.score=n.score,i.feedback=n.feedback,i.aiSource="ai_accepted";let l=this.getAnswer(e);l?.aiSuggestion&&(l.aiSuggestion.status="accepted")}onAiEdited(e,n){let i=this.getGrade(e);if(!i)return;i.score=n.score,i.feedback=n.feedback,i.aiSource="ai_edited";let l=this.getAnswer(e);l?.aiSuggestion&&(l.aiSuggestion.status="edited")}onAiRejected(e){let n=this.getGrade(e);if(!n)return;n.score=null,n.feedback="",n.aiSource="manual";let i=this.getAnswer(e);i?.aiSuggestion&&(i.aiSuggestion.status="rejected")}onAudioUploaded(e,n){if(e==="overall"){this.overallAudioUrl=n;return}let i=this.getGrade(e);i&&(i.audioUrl=n)}buildPayload(){return{overallFeedback:this.overallFeedback,overallAudioUrl:this.overallAudioUrl,grades:this.grades.map(e=>({questionId:e.questionId,score:e.score,feedback:e.feedback,correctAnswer:e.correctAnswer,audioUrl:e.audioUrl,oralFeedback:e.oralFeedback,writtenFeedback:e.writtenFeedback,aiSource:e.aiSource,source:e.aiSource||"manual",rubric:this.rubricValues[e.questionId]})),mistakeVets:this.buildMistakeVets()}}buildMistakeVets(){return Object.entries(this.mistakeVets).map(([e,n])=>({mistakeId:e,status:n.status,severity:n.severity,mistakeCategory:n.mistakeCategory,makeFlashcard:n.makeFlashcard}))}youtubeEmbedFromUrl(e){try{let n=new URL(e),i=n.hostname==="youtu.be"?n.pathname.slice(1):n.searchParams.get("v")||n.pathname.split("/embed/")[1];return i?`https://www.youtube.com/embed/${i}`:null}catch{return null}}saveDraft(){this.savingDraft||this.hasValidationErrors||(this.savingDraft=!0,this.errorMessage="",this.homeworkService.saveGradingDraft(this.sessionId,this.homeworkId,this.userId,this.buildPayload()).subscribe({next:e=>{this.savingDraft=!1,e?.success?this.gradingStatus="draft":this.errorMessage=this.translate.instant("HOMEWORK_REVIEW.SAVE_DRAFT_FAILED")},error:()=>{this.savingDraft=!1,this.errorMessage=this.translate.instant("HOMEWORK_REVIEW.SAVE_DRAFT_FAILED")}}))}publishGrading(){this.startPublish(!1)}publishAndNext(){this.startPublish(!0)}startPublish(e){if(!this.publishing){if(this.missingManualGrades){this.errorMessage=this.translate.instant("HOMEWORK_REVIEW.MISSING_MANUAL_GRADES");return}this.confirmPublish()&&(this.publishing=!0,this.errorMessage="",this.homeworkService.saveGradingDraft(this.sessionId,this.homeworkId,this.userId,this.buildPayload()).subscribe({next:()=>this.publishSavedDraft(e),error:()=>this.failPublish("HOMEWORK_REVIEW.SAVE_BEFORE_PUBLISH_FAILED")}))}}confirmPublish(){let e=this.gradingStatus==="published"?"HOMEWORK_REVIEW.REPUBLISH_CONFIRM":"HOMEWORK_REVIEW.PUBLISH_CONFIRM";return window.confirm(this.translate.instant(e))}publishSavedDraft(e){this.homeworkService.publishGrading(this.sessionId,this.homeworkId,this.userId).subscribe({next:n=>this.onPublishResponse(n,e),error:()=>this.failPublish("HOMEWORK_REVIEW.PUBLISH_FAILED")})}onPublishResponse(e,n){if(this.publishing=!1,!e?.success){this.errorMessage=this.translate.instant("HOMEWORK_REVIEW.PUBLISH_FAILED");return}if(this.gradingStatus="published",this.publishedAt=new Date().toISOString(),n){this.goToNextStudent();return}this.onPublishSuccess(e.data?.mistakesCaptured??0)}failPublish(e){this.publishing=!1,this.errorMessage=this.translate.instant(e)}saveReview(){if(this.saving||this.hasValidationErrors)return;this.saving=!0,this.errorMessage="";let e=this.grades.map(n=>({questionId:n.questionId,score:n.score,feedback:n.feedback}));this.homeworkService.reviewSubmission(this.sessionId,this.homeworkId,this.userId,{overallFeedback:this.overallFeedback,grades:e}).subscribe({next:n=>{this.saving=!1,n?.success?this.saved=!0:this.errorMessage=this.translate.instant("HOMEWORK_REVIEW.SAVE_REVIEW_FAILED")},error:()=>{this.saving=!1,this.errorMessage=this.translate.instant("HOMEWORK_REVIEW.SAVE_REVIEW_FAILED")}})}onPublishSuccess(e){e>0?this.fetchMistakes():this.mistakesState="empty"}fetchMistakes(){this.mistakesState="loading",this.homeworkService.getSubmissionMistakes(this.sessionId,this.homeworkId,this.userId).pipe(U(this.destroy$)).subscribe({next:e=>{e?.success&&e.data?.mistakes?.length?(this.mistakes=e.data.mistakes,this.initMistakeVets(),this.mistakesState="loaded"):this.mistakesState="empty"},error:()=>{this.mistakesState="error"}})}toggleMistakesPanel(){this.mistakesPanelOpen=!this.mistakesPanelOpen}getMistakeExplanation(e){return(this.translate.currentLang||"en")==="fr"?e.explanation.fr:e.explanation.en}getSkillTypeLabel(e){let n=ob[e];return n?this.translate.instant(n):e}initMistakeVets(){this.mistakeVets={}
12,this.mistakes.forEach(e=>this.mistakeVets[e.mistakeId]=this.buildVet(e))}buildVet(e){let n=this.normalizeSeverity(e.severity);return{status:"pending",severity:n,mistakeCategory:e.mistakeCategory||"",makeFlashcard:this.defaultMakeFlashcard(n)}}normalizeSeverity(e){return ib[(e||"").toLowerCase()]||"moderate"}defaultMakeFlashcard(e){return e!=="minor"}getVet(e){return this.mistakeVets[e]}acceptMistake(e){let n=this.mistakeVets[e];n&&(n.status="accepted")}rejectMistake(e){let n=this.mistakeVets[e];n&&(n.status="rejected",n.makeFlashcard=!1)}setSeverity(e,n){let i=this.mistakeVets[e];i&&(i.severity=n,this.markEdited(i))}setCategory(e,n){let i=this.mistakeVets[e];i&&(i.mistakeCategory=n,this.markEdited(i))}toggleMakeFlashcard(e){let n=this.mistakeVets[e];n&&(n.makeFlashcard=!n.makeFlashcard)}markEdited(e){e.status!=="rejected"&&(e.status="edited")}get nextQueuedUserId(){return this.gradingQueue.find(e=>!this.isCurrentQueueEntry(e))?.userId||null}goToNextStudent(){let e=this.gradingQueue.filter(n=>!this.isCurrentQueueEntry(n));if(!e.length){this.goBack();return}this.router.navigate(this.reviewRoute(e[0]),{queryParams:this.reviewQueryParams(e)}).then(()=>this.reloadForNextStudent())}reviewRoute(e){return["/main/dashboard/cohorts/batches",this.batchId,"levels",this.levelId,"sessions",e.lessonId,"homework",e.homeworkId,"submissions",e.userId,"review"]}reviewQueryParams(e){return{courseId:this.courseId,cohortId:this.cohortId,queueKind:this.queueKind||void 0,queue:e.map(n=>this.serializeQueueEntry(n)).join(","),from:this.fromCorrections?"corrections":void 0}}serializeQueueEntry(e){return this.fromCorrections?`${e.lessonId}:${e.homeworkId}:${e.userId}`:e.userId}isCurrentQueueEntry(e){return e.lessonId===this.sessionId&&e.homeworkId===this.homeworkId&&e.userId===this.userId}reloadForNextStudent(){this.readRouteParams(),this.resetGradingState(),this.loadSubmission(),this.loadRevisionHistory()}resetGradingState(){this.currentReviewIndex=0,this.rubricValues={},this.mistakes=[],this.mistakeVets={},this.mistakesState="idle",this.saved=!1,this.submissionStatus="",this.revisionHistory=[],this.revisionHistoryLoading=!1,this.revisionDialogOpen=!1,this.errorMessage=""}goBack(){if(this.fromCorrections){this.navigationHistory.goBackOrFallback(["/main/dashboard/homework-hub"],{queryParams:{tab:"corrections"}});return}this.navigationHistory.goBackOrFallback(["/main/dashboard/cohorts/batches",this.batchId,"levels",this.levelId,"sessions",this.sessionId,"homework",this.homeworkId,"submissions"],{queryParams:{courseId:this.courseId,cohortId:this.cohortId}})}trackByQuestionId(e,n){return n.questionId}static{this.\u0275fac=function(n){return new(n||t)(w(te),w(ue),w(mt),w(At),w(ze),w(fe),w(un,8),w(Ro,8))}}static{this.\u0275cmp=H({type:t,selectors:[["app-homework-review"]],viewQuery:function(n,i){if(n&1&&_e(Of,5),n&2){let l;me(l=ge())&&(i.answerAudio=l.first)}},decls:5,vars:5,consts:[["writtenResponse",""],["noAudio",""],["answerAudio",""],["plainWrittenResponse",""],["revisionDisabledGroup",""],[4,"ngIf"],["class","discussion-panel-toggle-row",4,"ngIf"],[3,"inline","isOpen","viewerRole","targetUserId","courseId","sessionId","homeworkId","closed",4,"ngIf"],["class","revision-dialog-overlay",3,"click",4,"ngIf"],["width","0","height","0","aria-hidden","true"],["id","hwr-i-back","viewBox","0 0 24 24"],["d","M19 12H5M11 18l-6-6 6-6"],["id","hwr-i-next","viewBox","0 0 24 24"],["d","M5 12h14M13 6l6 6-6 6"],["id","hwr-i-check","viewBox","0 0 24 24"],["d","M20 6 9 17l-5-5"],["id","hwr-i-spark","viewBox","0 0 24 24"],["d","M12 3v4M12 17v4M3 12h4M17 12h4M5.6 5.6l2.8 2.8M15.6 15.6l2.8 2.8M18.4 5.6l-2.8 2.8M8.4 15.6l-2.8 2.8"],["id","hwr-i-minus","viewBox","0 0 24 24"],["d","M5 12h14"],["id","hwr-i-plus","viewBox","0 0 24 24"],["d","M12 5v14M5 12h14"],["id","hwr-i-save","viewBox","0 0 24 24"],["d","M19 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11l5 5v11a2 2 0 0 1-2 2z"],["d","M17 21v-8H7v8M7 3v5h8"],[1,"wrap"],[1,"hwhead"],["type","button",1,"backq",3,"click"],[1,"ico"],["href","#hwr-i-back"],[1,"id"],[1,"eyebrow","thead-eyebrow"],[1,"ttl"],["resourceType","homework_submission",3,"resourceRef","resourceLabel","courseId","levelId","studentId"],[1,"qmap"],["class","qg qg--parts",4,"ngIf"],["class","qg",4,"ngIf"],["class","card",4,"ngIf"],["class","ggrid",4,"ngIf"],[1,"qg","qg--parts"],["class","pgroup",3,"hidden",4,"ngFor","ngForOf"],["class","pgroup",4,"ngIf"],[1,"pgroup",3,"hidden"],[1,"mode",3,"ngClass"],["type","button","class","mdot",3,"full","now","fallback","title","click",4,"ngFor","ngForOf"],["type","button",1,"mdot",3,"click","title"],[1,"pgroup"],[1,"mode","ens"],["type","button","class","mdot",3,"full","now","click",4,"ngFor","ngForOf"],["type","button",1,"mdot",3,"click"],[1,"qg"],[1,"mode","ia"],[1,"ico","xs"],["href","#hwr-i-spark"],["type","button",1,"mdot","now"],[1,"card"],[1,"queue"],[1,"sub"],[1,"demoflash"],["class","revision-history",4,"ngIf"],[1,"ggrid"],[1,"gmain"],[1,"prompt"],[4,"ngIf","ngIfElse"],[1,"resp-meta"],["class","integrity-panel","aria-labelledby","integrity-panel-title",4,"ngIf"],["class","gwork",4,"ngIf"],["class","grail",4,"ngIf"],[1,"revision-history"],["class","revision-history__item",4,"ngFor","ngForOf"],[1,"revision-history__item"],[4,"ngFor","ngForOf"],["class","oral-box",4,"ngIf","ngIfElse"],[3,"changed","seek","seekRatio","value","readOnly","audioUploadUrl","questionId","audioDuration"],[1,"oral-box"],["controls","",1,"audio-player",3,"loadedmetadata","durationchange","src"],[1,"resp"],[3,"surface","value","readOnly","changed",4,"ngIf","ngIfElse"],[3,"changed","surface","value","readOnly"],["aria-labelledby","integrity-panel-title",1,"integrity-panel"],["id","integrity-panel-title"],["aria-live","polite"],[1,"integrity-actions"],["type","button",1,"btn","btn-ghost",3,"click","disabled"],["type","button",1,"btn","btn-teal",3,"click","disabled"],["class","note",4,"ngIf"],[1,"note"],[1,"gwork"],[1,"gs"],[1,"sl"],["class","rubrow",4,"ngFor","ngForOf"],[1,"rubtotal"],[1,"v"],["class","ruberr",4,"ngIf"],["class","gs",4,"ngIf"],[3,"ngModelChange","ngModel","disabled","placeholder"],[1,"gs","gactions"],["class","redochip",4,"ngIf"],["href","#hwr-i-check"],["type","button","class","btn btn-teal",3,"disabled","click",4,"ngIf"],["href","#hwr-i-save"],["type","button",1,"linky",3,"click","disabled"],[1,"rubrow"],[1,"lbl"],["type","button","class","rdot",3,"on","disabled","click",4,"ngFor","ngForOf"],["type","button",1,"rdot",3,"click","disabled"],[1,"ruberr"],[1,"aisug"],[1,"tag"],[1,"sscore"],["class","sugrow",4,"ngIf"],["class","state",4,"ngIf"],[1,"sugrow"],["type","button",1,"sug-acc",3,"click"],["type","button",1,"sug-mod",3,"click"],["type","button",1,"sug-ign",3,"click"],[1,"state"],[3,"audioUploaded","questionId","uploadUrl","deleteUrl","existingAudioUrl"],[1,"redochip"],["href","#hwr-i-next"],[1,"grail"],["class","pubbanner",4,"ngIf"],["class","ctxrow",3,"hidden",4,"ngFor","ngForOf"],[1,"pubbanner"],[1,"ctxrow",3,"hidden"],["class","ico xs",4,"ngIf"],[1,"sc"],["class","d",4,"ngIf"],[1,"d"],[1,"aieval"],[1,"ctxrow"],["class","resp",4,"ngIf"],[1,"dispmsg"],[1,"av"],[1,"decrow"],["type","button",1,"decbtn",3,"click","disabled"],["class","stepper",4,"ngIf"],[1,"stepper"],["type","button",3,"click"],["href","#hwr-i-minus"],["href","#hwr-i-plus"],[1,"review-container"],[1,"review-header"],[1,"btn-back",3,"click"],[1,"header-info"],[1,"homework-context-title"],[1,"header-title-row"],[1,"status-badge","badge-draft"],[1,"status-badge","badge-published"],[1,"submitted-at"],[1,"published-at"],[1,"loading-state"],[1,"error-banner"],[1,"success-state"],[1,"questions-section"],[1,"success-card"],[1,"success-icon"],[1,"btn-back-link",3,"click"],[1,"question-card",3,"auto-graded","manual-review"],[1,"overall-feedback-card"],[1,"overall-label"],["rows","4",1,"overall-textarea",3,"ngModelChange","ngModel","placeholder"],[1,"audio-recorder-wrapper"],[1,"feedback-label"],["questionId","overall",3,"audioUploaded","uploadUrl","deleteUrl","existingAudioUrl"],[1,"mistakes-panel"],[1,"action-row"],[1,"validation-error"],[1,"api-error"],[1,"revision-requested-banner"],[1,"grading-actions"],[1,"btn-request-revision",3,"click","disabled"],[1,"btn-draft",3,"click","disabled"],[1,"btn-publish",3,"click","disabled"],[1,"btn-publish",3,"disabled"],[1,"question-card"],[1,"card-header"],[1,"q-number"],[1,"q-type-badge"],[1,"q-type-label"],[1,"q-points"],[1,"question-text",3,"innerHTML"],[1,"question-context",3,"innerHTML"],[1,"question-media-image",3,"src","alt"],["controls","",1,"audio-player",3,"src"],[1,"question-media"],[1,"student-answer-block"],[1,"answer-label"],[3,"surface","value","readOnly"],[1,"auto-answer-display"],[1,"ai-panel-wrapper"],[1,"grading-block"],[3,"src","alt"],["controls","",3,"src"],["allowfullscreen","",3,"src","title"],["target","_blank","rel","noopener noreferrer",3,"href"],[1,"no-answer"],[1,"auto-answer-text"],[1,"correctness-badge"],[1,"ai-feedback"],[3,"accepted","edited","rejected","suggestion","maxPoints"],[1,"auto-score-display"],[1,"override-label"],["type","number",1,"score-input",3,"ngModelChange","ngModel","min","max"],[1,"score-max"],[1,"manual-score-row"],[1,"score-label"],[1,"error-hint"],[1,"feedback-row"],["type","text",1,"feedback-textarea",2,"height","auto","padding","10px",3,"ngModelChange","ngModel","placeholder"],["rows","3",1,"feedback-textarea",3,"ngModelChange","ngModel","placeholder"],["type","button",1,"mistakes-panel__toggle",3,"click"],[1,"mistakes-panel__title"],[1,"mistakes-panel__chevron"],[1,"mistakes-panel__body"],["aria-busy","true",1,"mistakes-shimmer"],[1,"mistakes-panel__empty"],[1,"mistakes-panel__error"],[1,"mistakes-list"],[1,"mistakes-shimmer__row"],[1,"skeleton-line",2,"width","72px","height","22px"],[1,"mistakes-shimmer__lines"],[1,"skeleton-line",2,"width","55%","height","14px"],[1,"skeleton-line",2,"width","75%","height","14px","margin-top","6px"],[1,"mistake-row",3,"mistake-row--rejected"],[1,"mistake-row"],[1,"mistake-row__meta"],[1,"skill-chip"],[1,"mistake-row__subcategory"],[1,"vet-status",3,"class"],[1,"mistake-row__correction"],[1,"mistake-row__original"],["aria-hidden","true",1,"mistake-row__arrow"],[1,"mistake-row__corrected"],[1,"mistake-row__explanation"],[1,"vet-field"],[1,"vet-field__label"],["role","group",1,"severity-chips"],["type","button",1,"severity-chip",3,"class","active"],["type","text",1,"category-input",3,"ngModelChange","id","ngModel","placeholder"],[1,"vet-toolbar"],["type","button",1,"vet-btn","vet
12-btn--accept",3,"click"],["type","button",1,"vet-btn","vet-btn--reject",3,"click"],[1,"flashcard-toggle"],["type","checkbox",3,"change","checked","disabled"],[1,"flashcard-toggle__label"],[1,"vet-status"],["type","button",1,"severity-chip",3,"click"],[1,"discussion-panel-toggle-row"],["type","button",1,"btn-discussion-toggle",3,"click"],["class","discussion-badge",4,"ngIf"],[1,"discussion-badge"],[3,"closed","inline","isOpen","viewerRole","targetUserId","courseId","sessionId","homeworkId"],[1,"revision-dialog-overlay",3,"click"],["role","dialog","aria-modal","true",1,"revision-dialog",3,"click"],[1,"revision-dialog__header"],[1,"revision-dialog__subtitle"],["type","button",1,"revision-dialog__close",3,"click"],["viewBox","0 0 24 24","width","18","height","18","fill","none","stroke","currentColor","stroke-width","2"],["d","M18 6 6 18M6 6l12 12"],[1,"revision-dialog__block"],[1,"revision-dialog__label"],[1,"revision-dialog__hint"],["class","revision-scope-group",4,"ngFor","ngForOf"],["class","revision-dialog__error",4,"ngIf"],["class","revision-dialog__footer-note",4,"ngIf"],["for","revision-reason",1,"revision-dialog__label"],["id","revision-reason",1,"revision-dialog__select",3,"ngModelChange","ngModel"],["disabled","",3,"ngValue"],[3,"ngValue",4,"ngFor","ngForOf"],["for","revision-explanation",1,"revision-dialog__label"],["id","revision-explanation","maxlength","2000",1,"revision-dialog__textarea",3,"ngModelChange","ngModel","placeholder"],[1,"revision-dialog__meta-row"],[1,"revision-dialog__count"],[1,"revision-dialog__toggle"],["type","checkbox",3,"ngModelChange","ngModel"],["for","revision-internal-note",1,"revision-dialog__label"],["id","revision-internal-note",1,"revision-dialog__textarea","revision-dialog__textarea--note",3,"ngModelChange","ngModel","placeholder"],[1,"revision-dialog__footer-row"],["type","button",1,"revision-dialog__cancel",3,"click"],["type","button",1,"revision-dialog__continue",3,"click"],[1,"revision-scope-group"],["class","revision-scope-group__header",4,"ngIf"],["class","revision-scope-item",4,"ngFor","ngForOf"],[1,"revision-scope-group__header"],["type","button","class","revision-scope-group__select-all",3,"click",4,"ngIf"],["type","button",1,"revision-scope-group__select-all",3,"click"],[1,"revision-scope-item"],["type","checkbox",3,"change","checked"],[1,"revision-scope-item__label"],["class","revision-scope-item__mark",4,"ngIf"],[1,"revision-scope-item__mark"],[1,"revision-scope-group__disabled"],["class","revision-scope-group__reason",4,"ngIf"],[1,"revision-scope-group__reason"],[1,"revision-dialog__error"],[1,"revision-dialog__footer-note"],[3,"ngValue"],["for","revision-deadline",1,"revision-dialog__label"],["id","revision-deadline","type","datetime-local",1,"revision-dialog__input",3,"ngModelChange","ngModel"],[1,"revision-dialog__confirm-line"],["type","button",1,"revision-dialog__cancel",3,"click","disabled"],["type","button",1,"revision-dialog__continue",3,"click","disabled"]],template:function(n,i){n&1&&h(0,Mh,41,36,"ng-container",5)(1,yx,21,29,"ng-container",5)(2,Ax,5,4,"div",6)(3,Tx,1,7,"app-discussion-topics-drawer",7)(4,Zx,5,5,"div",8),n&2&&(p("ngIf",i.useV2),o(),p("ngIf",!i.useV2),o(),p("ngIf",!i.loading),o(),p("ngIf",!i.loading&&i.discussionPanelOpen),o(),p("ngIf",i.revisionDialogOpen))},dependencies:[On,ce,Q,$,re,ae,ie,Ve,Ke,Ce,Y,pn,Qe,dn,oe,Do,Bo,Lo,_t,Gi,ln,kt,yt,j],styles:['@charset "UTF-8";[_nghost-%COMP%]{--teal: #21b6b6;--teal-deep: #188888;--teal-ink: #0f766e;--teal-soft: #e7f7f7;--teal-mist: #f2fbfb;--navy: #1e3a5f;--navy-soft: #eaf0f6;--amber: #e8a33d;--amber-deep: #b45309;--amber-soft: #fdf3dc;--rose: #e11d48;--rose-soft: #fdf1f4;--ok: #16a34a;--ok-soft: #e9f9ef;--warn: #f59e0b;--warn-soft: #fffbeb;--danger: #ef4444;--danger-soft: #fef2f2;--whatsapp: #25d366;--n0: #ffffff;--n50: #f7fafa;--n100: #f0f4f5;--n200: #e2e9ec;--n300: #cbd6da;--n400: #9aa8b0;--n500: #64747e;--n700: #35434c;--n900: #14212a;--font: "Montserrat", -apple-system, "Segoe UI", Helvetica, Arial, sans-serif;--fs-hero: clamp(24px, 3vw, 32px);--fs-h2: 19px;--fs-h3: 15px;--fs-body: 14px;--fs-small: 12.5px;--fs-micro: 11px;--r-sm: 8px;--r-md: 12px;--r-lg: 16px;--r-xl: 22px;--shadow-1: 0 1px 3px rgba(20, 33, 42, .06);--shadow-2: 0 6px 20px rgba(20, 33, 42, .08);--shadow-3: 0 14px 40px rgba(20, 33, 42, .12);--page-max: 1240px;--gutter: 24px}*[_ngcontent-%COMP%]{box-sizing:border-box}[_nghost-%COMP%]{margin:0;font-family:var(--font);font-size:var(--fs-body);color:var(--n900);background:var(--n50);-webkit-font-smoothing:antialiased}h1[_ngcontent-%COMP%], h2[_ngcontent-%COMP%], h3[_ngcontent-%COMP%], h4[_ng
12content-%COMP%]{margin:0;font-weight:800;color:var(--n900)}p[_ngcontent-%COMP%]{margin:0}button[_ngcontent-%COMP%]{font-family:inherit;cursor:pointer}a[_ngcontent-%COMP%]{color:inherit}[_ngcontent-%COMP%]:focus-visible{outline:2.5px solid var(--teal);outline-offset:2px;border-radius:4px}.eyebrow[_ngcontent-%COMP%]{font-size:var(--fs-micro);font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:var(--teal-deep)}.pill[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:6px;font-size:var(--fs-micro);font-weight:700;border-radius:999px;padding:4px 10px}.pill.ok[_ngcontent-%COMP%]{background:var(--ok-soft);color:var(--ok)}.pill.warn[_ngcontent-%COMP%]{background:var(--warn-soft);color:var(--amber-deep)}.pill.danger[_ngcontent-%COMP%]{background:var(--danger-soft);color:var(--danger)}.pill.teal[_ngcontent-%COMP%]{background:var(--teal-soft);color:var(--teal-deep)}.pill.muted[_ngcontent-%COMP%]{background:var(--n100);color:var(--n500)}.pill.amber[_ngcontent-%COMP%]{background:var(--amber-soft);color:var(--amber-deep)}.btn[_ngcontent-%COMP%]{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:none;border-radius:999px;font-weight:700;font-size:var(--fs-body);padding:11px 22px;transition:transform .12s ease,box-shadow .12s ease,background .12s ease}.btn[_ngcontent-%COMP%]:hover{transform:translateY(-1px)}.btn[_ngcontent-%COMP%]:active{transform:translateY(0)}.btn-primary[_ngcontent-%COMP%]{background:var(--teal);color:#fff;box-shadow:0 6px 16px #21b6b659}.btn-primary[_ngcontent-%COMP%]:hover{background:var(--teal-deep)}.btn-ghost[_ngcontent-%COMP%]{background:var(--n0);color:var(--teal-deep);border:1.5px solid var(--teal-soft)}.btn-ghost[_ngcontent-%COMP%]:hover{border-color:var(--teal)}.btn-quiet[_ngcontent-%COMP%]{background:transparent;color:var(--n500)}.btn-quiet[_ngcontent-%COMP%]:hover{color:var(--teal-deep);background:var(--teal-mist)}.card[_ngcontent-%COMP%]{background:var(--n0);border:1px solid var(--n200);border-radius:var(--r-lg);box-shadow:var(--shadow-1)}.ico[_ngcontent-%COMP%]{width:16px;height:16px;flex:none}.ico-lg[_ngcontent-%COMP%]{width:22px;height:22px;flex:none}@media (prefers-reduced-motion: reduce){*[_ngcontent-%COMP%]{transition:none!important;animation:none!important;scroll-behavior:auto!important}}*[_ngcontent-%COMP%]{box-sizing:border-box;margin:0;padding:0}[_nghost-%COMP%]{font-family:Montserrat,system-ui,sans-serif;background:var(--n50);color:var(--n900);line-height:1.5;-webkit-font-smoothing:antialiased}.ico[_ngcontent-%COMP%]{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;flex:none}.ico.xs[_ngcontent-%COMP%]{width:11px;height:11px}button[_ngcontent-%COMP%], input[_ngcontent-%COMP%], textarea[_ngcontent-%COMP%]{font:inherit}.mono[_ngcontent-%COMP%]{font-family:JetBrains Mono,monospace;font-weight:500;font-variant-numeric:tabular-nums}[_nghost-%COMP%]{--stagey: calc(100svh - 252px) }.wrap[_ngcontent-%COMP%]{max-width:1340px;margin:0 auto;padding:0 24px 40px}.roleswitch[_ngcontent-%COMP%]{position:fixed;top:12px;right:18px;z-index:300;display:flex;gap:2px;padding:3px;background:var(--n0);border:1px solid var(--n200);border-radius:999px;box-shadow:var(--shadow-2)}.roleswitch[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{border:none;background:none;font-size:11.5px;font-weight:800;padding:7px 15px;border-radius:999px;color:var(--n500);cursor:pointer;transition:.15s}.roleswitch[_ngcontent-%COMP%] button.on[_ngcontent-%COMP%]{background:var(--n900);color:#fff}.mode[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:5px;font-size:9.5px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;padding:3px 9px;border-radius:999px;border:1px solid;white-space:nowrap}.mode.auto[_ngcontent-%COMP%]{background:var(--teal-mist);color:var(--teal-ink);border-color:#cdeeee}.mode.ia[_ngcontent-%COMP%]{background:var(--navy-soft);color:var(--navy);border-color:#d3deea}.mode.ens[_ngcontent-%COMP%]{background:var(--amber-soft);color:var(--amber-deep);border-color:#f0dcab}.hwhead[_ngcontent-%COMP%]{position:sticky;top:0;z-index:100;display:flex;align-items:center;flex-wrap:wrap;gap:13px;padding:12px 18px;background:#fffffff7;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border:1px solid var(--n200);border-radius:0 0 18px 18px;box-shadow:0 10px 30px #14212a1a;margin-bottom:22px}.hwhead[_ngcontent-%COMP%] .id[_ngcontent-%COMP%]{flex:1;min-width:0}.hwhead[_ngcontent-%COMP%] .eyebrow[_ngcontent-%COMP%]{font-size:9.5px;font-weight:800;letter-spacing:.13em;text-transform:uppercase;color:var(--teal-deep)}.hwhead[_ngcontent-%COMP%] b.ttl[_ngcontent-%COMP%]{display:block;font-size:13.5px;font-weight:800;letter-spacing:-.01em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.saved[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:700;color:var(--teal-ink);min-width:92px;opacity:0;transition:opacity .25s}.saved.show[_ngcontent-%COMP%]{opacity:1}.due-pill[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:6px;padding:6px 13px;border-radius:999px;background:var(--n0);border:1px solid var(--n200);font-size:11px;font-weight:700;color:var(--n500);white-space:nowrap}.due-pill[_ngcontent-%COMP%] .ico[_ngcontent-%COMP%]{width:12px;height:12px}.backq[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:6px;font-size:11.5px;font-weight:800;color:var(--n500);background:var(--n0);border:1.5px solid var(--n200);padding:7px 14px;border-radius:999px;cursor:pointer}.backq[_ngcontent-%COMP%]:hover{border-color:var(--teal);color:var(--teal-deep)}.qmap[_ngcontent-%COMP%]{display:flex;align-items:center;gap:16px;flex-wrap:wrap;width:100%;padding-top:10px;border-top:1px solid var(--n100)}.qmap[_ngcontent-%COMP%]:empty{display:none}.qg[_ngcontent-%COMP%]{display:flex;align-items:center;gap:4px;flex-wrap:wrap}.qg[_ngcontent-%COMP%] .mode[_ngcontent-%COMP%]{margin-right:3px}.mdot[_ngcontent-%COMP%]{width:21px;height:21px;border-radius:50%;border:1.5px solid var(--n200);background:var(--n0);color:var(--n500);font-size:9px;font-weight:800;cursor:pointer;display:grid;place-items:center;padding:0;transition:.12s;line-height:1}.mdot[_ngcontent-%COMP%]:hover{border-color:var(--teal);transform:translateY(-1px)}.mdot.full[_ngcontent-%COMP%]{background:var(--teal);border-color:var(--teal);color:#fff}.mdot.full[_ngcontent-%COMP%] .ico[_ngcontent-%COMP%]{width:10px;height:10px}.mdot.now[_ngcontent-%COMP%]{box-shadow:0 0 0 2px var(--n0),0 0 0 3.5px var(--amber)}.qmap[_ngcontent-%COMP%] .gap-hint[_ngcontent-%COMP%]{font-size:10.5px;font-weight:700;color:var(--amber-deep);background:var(--warn-soft);border:1px solid #f0dcab;padding:3px 10px;border-radius:999px}.qmap[_ngcontent-%COMP%] .allok[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:5px;font-size:10.5px;font-weight:700;color:var(--teal-ink);background:var(--teal-mist);border:1px solid #d5efef;padding:3px 10px;border-radius:999px}#sstage[_ngcontent-%COMP%], #tstage[_ngcontent-%COMP%]{min-height:460px}.card[_ngcontent-%COMP%]{background:var(--n0);border:1px solid var(--n200);border-radius:20px;box-shadow:0 12px 36px #14212a14;overflow:clip;animation:_ngcontent-%COMP%_rise .32s cubic-bezier(.2,.7,.3,1) both}@keyframes _ngcontent-%COMP%_rise{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}.btn[_ngcontent-%COMP%]{font-size:14px;font-weight:800;padding:12px 26px;border-radius:999px;border:none;cursor:pointer;display:inline-flex;align-items:center;gap:8px;transition:.15s}.btn[_ngcontent-%COMP%]:active{transform:translateY(1px)}.btn[_ngcontent-%COMP%]:disabled{opacity:.55;cursor:not-allowed;transform:none}.btn-amber[_ngcontent-%COMP%]{background:var(--amber);color:#fff;box-shadow:0 6px 16px #e8a33d66}.btn-amber[_ngcontent-%COMP%]:hover:not(:disabled){background:var(--amber-deep)}.btn-teal[_ngcontent-%COMP%]{background:var(--teal);color:#fff;box-shadow:0 6px 16px #21b6b652}.btn-teal[_ngcontent-%COMP%]:hover:not(:disabled){background:var(--teal-deep)}.btn-ghost[_ngcontent-%COMP%]{background:var(--n0);color:var(--n700);border:1.5px solid var(--n300)}.btn-ghost[_ngcontent-%COMP%]:hover{border-color:var(--n400)}.btn.sm[_ngcontent-%COMP%]{font-size:12px;padding:9px 17px}.linky[_ngcontent-%COMP%]{font-size:12px;font-weight:700;color:var(--n400);background:none;border:none;cursor:pointer}.linky[_ngcontent-%COMP%]:hover{color:var(--n700);text-decoration:underline}.note[_ngcontent-%COMP%]{font-size:12px;font-weight:500;color:var(--n400)}.intro[_ngcontent-%COMP%]{display:grid;grid-template-columns:1.15fr .85fr}@media (max-width: 860px){.intro[_ngcontent-%COMP%]{grid-template-columns:1fr}}.intro-main[_ngcontent-%COMP%]{padding:36px 38px}.eyebrow[_ngcontent-%COMP%]{font-size:10.5px;font-weight:800;letter-spacing:.13em;text-transform:uppercase;color:var(--amber-deep)}.intro-main[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{font-size:27px;font-weight:900;letter-spacing:-.02em;line-height:1.13;margin-top:8px}.intro-main[_ngcontent-%COMP%] .hello[_ngcontent-%COMP%]{font-size:13.5px;font-weight:500;color:var(--n500);margin-top:10px;max-width:50ch}.intro-main[_ngcontent-%COMP%] .hello[_ngcontent-%COMP%] b[_ngcontent-%COMP%]{color:var(--n700)}.imeta[_ngcontent-%COMP%]{display:flex;gap:7px;flex-wrap:wrap;margin-top:14px}.chip[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:700;color:var(--n500);background:var(--n50);border:1px solid var(--n200);padding:5px 12px;border-radius:999px}.chip[_ngcontent-%COMP%] .ico[_ngcontent-%COMP%]{width:11px;height:11px;color:var(--teal-deep)}.steps[_ngcontent-%COMP%]{margin-top:20px}.step[_ngcontent-%COMP%]{position:relative;display:flex;gap:13px;padding-bottom:16px}.step[_ngcontent-%COMP%]:before{content:"";position:absolute;
12left:16px;top:36px;bottom:0;width:2px;background:var(--n200)}.step[_ngcontent-%COMP%]:last-child:before{display:none}.step-dot[_ngcontent-%COMP%]{width:34px;height:34px;border-radius:50%;display:grid;place-items:center;flex:none;background:var(--teal-soft);color:var(--teal-ink);z-index:1;border:2px solid var(--n0);box-shadow:0 0 0 1.5px #b9e6e6}.step.s-ia[_ngcontent-%COMP%] .step-dot[_ngcontent-%COMP%]{background:var(--navy-soft);color:var(--navy);box-shadow:0 0 0 1.5px #ccd9e8}.step.s-ens[_ngcontent-%COMP%] .step-dot[_ngcontent-%COMP%]{background:var(--amber-soft);color:var(--amber-deep);box-shadow:0 0 0 1.5px #f0dcab}.step-copy[_ngcontent-%COMP%]{flex:1}.step-copy[_ngcontent-%COMP%] .l1[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.step-copy[_ngcontent-%COMP%] b[_ngcontent-%COMP%]{font-size:13.5px;font-weight:800}.step-copy[_ngcontent-%COMP%] span.d[_ngcontent-%COMP%]{display:block;font-size:12px;font-weight:500;color:var(--n500);margin-top:2px;max-width:52ch}.pstat[_ngcontent-%COMP%]{font-size:9.5px;font-weight:800;letter-spacing:.05em;text-transform:uppercase;padding:2px 8px;border-radius:999px;background:var(--n100);color:var(--n500)}.pstat.go[_ngcontent-%COMP%]{background:var(--teal-soft);color:var(--teal-ink)}.intro-cta[_ngcontent-%COMP%]{margin-top:10px;display:flex;align-items:center;gap:13px;flex-wrap:wrap}.intro-side[_ngcontent-%COMP%]{padding:36px 30px;background:linear-gradient(165deg,var(--teal-mist) 0%,#fdf8ee 100%);border-left:1px solid var(--n100);display:flex;flex-direction:column;gap:11px}@media (max-width: 860px){.intro-side[_ngcontent-%COMP%]{border-left:none;border-top:1px solid var(--n100)}}.intro-side[_ngcontent-%COMP%] h3[_ngcontent-%COMP%]{font-size:10.5px;font-weight:800;letter-spacing:.13em;text-transform:uppercase;color:var(--n500)}.promise[_ngcontent-%COMP%]{display:flex;gap:10px;align-items:flex-start;padding:11px 13px;border-radius:13px;background:#ffffffd9;border:1px solid var(--n200)}.promise[_ngcontent-%COMP%] .p-ico[_ngcontent-%COMP%]{width:32px;height:32px;border-radius:10px;display:grid;place-items:center;flex:none;background:var(--teal-soft);color:var(--teal-ink)}.promise[_ngcontent-%COMP%] b[_ngcontent-%COMP%]{display:block;font-size:12px;font-weight:800}.promise[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{display:block;font-size:11px;font-weight:500;color:var(--n500);margin-top:1px}.coach[_ngcontent-%COMP%]{margin-top:auto;display:flex;gap:10px;align-items:flex-start;padding:13px 14px;border-radius:13px;background:var(--n900);color:#fff}.coach[_ngcontent-%COMP%] .avatar[_ngcontent-%COMP%]{width:32px;height:32px;border-radius:50%;background:var(--amber);display:grid;place-items:center;flex:none;color:#fff}.coach[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{font-size:11.5px;font-weight:500;color:#cfdce2;font-style:italic;line-height:1.55}.coach[_ngcontent-%COMP%] b[_ngcontent-%COMP%]{color:#fff}.interst[_ngcontent-%COMP%]{padding:46px 40px;text-align:center}.interst[_ngcontent-%COMP%] .kicker[_ngcontent-%COMP%]{font-size:10.5px;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:var(--n500)}.bigico[_ngcontent-%COMP%]{width:68px;height:68px;border-radius:22px;margin:18px auto 0;display:grid;place-items:center}.bigico[_ngcontent-%COMP%] .ico[_ngcontent-%COMP%]{width:30px;height:30px}.interst.pa[_ngcontent-%COMP%]{background:linear-gradient(160deg,var(--teal-mist) 0%,#ffffff 55%)}.interst.pa[_ngcontent-%COMP%] .bigico[_ngcontent-%COMP%]{background:var(--teal-soft);color:var(--teal-ink)}.interst.pb[_ngcontent-%COMP%]{background:linear-gradient(160deg,var(--navy-soft) 0%,#ffffff 55%)}.interst.pb[_ngcontent-%COMP%] .bigico[_ngcontent-%COMP%]{background:var(--navy-soft);color:var(--navy);border:1px solid #d3deea}.interst.pc[_ngcontent-%COMP%]{background:linear-gradient(160deg,var(--amber-soft) 0%,#ffffff 55%)}.interst.pc[_ngcontent-%COMP%] .bigico[_ngcontent-%COMP%]{background:var(--amber-soft);color:var(--amber-deep)}.interst[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{font-size:24px;font-weight:900;letter-spacing:-.015em;margin-top:16px}
12.interst[_ngcontent-%COMP%] .sub[_ngcontent-%COMP%]{font-size:13.5px;font-weight:500;color:var(--n500);margin-top:10px;max-width:58ch;margin-left:auto;margin-right:auto;line-height:1.7}.interst[_ngcontent-%COMP%] .sub[_ngcontent-%COMP%] b[_ngcontent-%COMP%]{color:var(--n700)}.interst[_ngcontent-%COMP%] .modeline[_ngcontent-%COMP%]{margin-top:14px}.interst[_ngcontent-%COMP%] .chips[_ngcontent-%COMP%]{display:flex;gap:7px;flex-wrap:wrap;justify-content:center;margin-top:14px}.interst[_ngcontent-%COMP%] .btn[_ngcontent-%COMP%]{margin-top:24px}.qwrap[_ngcontent-%COMP%]{padding:28px 40px 32px;display:flex;flex-direction:column;min-height:var(--stagey)}.q-count[_ngcontent-%COMP%]{font-size:10.5px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:var(--n400);display:flex;align-items:center;gap:10px;flex-wrap:wrap}.q-count[_ngcontent-%COMP%] b[_ngcontent-%COMP%]{color:var(--amber-deep)}.q-text[_ngcontent-%COMP%]{font-size:18px;font-weight:800;letter-spacing:-.01em;line-height:1.4;margin-top:12px;max-width:46ch}.q-text.long-copy[_ngcontent-%COMP%]{max-width:760px;padding:18px 20px;border-left:3px solid var(--teal);background:var(--n50);color:var(--n700);font-size:14px;font-weight:500;line-height:1.75;white-space:pre-line}.q-pts[_ngcontent-%COMP%]{font-size:11px;font-weight:700;color:var(--n400)}.set-instruction[_ngcontent-%COMP%]{margin-top:14px;font-size:13.5px;font-weight:700;color:var(--n500);line-height:1.5}.q-num[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px;margin-top:4px}.q-num-badge[_ngcontent-%COMP%]{min-width:26px;height:21px;padding:0 7px;border-radius:999px;background:var(--teal-mist);border:1px solid #d5efef;color:var(--teal-ink);font-size:10px;font-weight:800;letter-spacing:.06em;display:inline-grid;place-items:center}.set-question[_ngcontent-%COMP%] + .set-question[_ngcontent-%COMP%]{margin-top:26px;padding-top:22px;border-top:1px solid var(--n100)}.qfoot[_ngcontent-%COMP%]{margin-top:auto;padding-top:22px;display:flex;align-items:center;gap:11px}.qfoot[_ngcontent-%COMP%] .spacer[_ngcontent-%COMP%]{flex:1}.temp[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:8px;margin-top:14px;padding:8px 13px;border-radius:11px;font-size:11.5px;font-weight:600;max-width:560px}.temp[_ngcontent-%COMP%] .ico[_ngcontent-%COMP%]{width:13px;height:13px}.temp.auto[_ngcontent-%COMP%]{background:var(--teal-mist);color:var(--teal-ink)}.temp.ia[_ngcontent-%COMP%]{background:var(--navy-soft);color:var(--navy)}.temp.ens[_ngcontent-%COMP%]{background:var(--amber-soft);color:var(--amber-deep)}.opts[_ngcontent-%COMP%]{display:grid;gap:9px;max-width:540px;margin-top:18px}.opt[_ngcontent-%COMP%]{text-align:left;padding:13px 16px;border-radius:13px;border:1.5px solid var(--n200);background:var(--n0);font-size:14.5px;font-weight:600;color:var(--n900);cursor:pointer;transition:.12s;display:flex;align-items:center;gap:11px}.opt[_ngcontent-%COMP%]:hover{border-color:var(--teal);transform:translateY(-1px)}.opt[_ngcontent-%COMP%] .key[_ngcontent-%COMP%]{width:24px;height:24px;border-radius:8px;background:var(--n100);display:grid;place-items:center;font-size:11px;font-weight:800;color:var(--n500);flex:none}.opt.sel[_ngcontent-%COMP%]{border-color:var(--teal);background:var(--teal-mist)}.opt.sel[_ngcontent-%COMP%] .key[_ngcontent-%COMP%]{background:var(--teal);color:#fff}.gapline[_ngcontent-%COMP%]{font-size:16.5px;font-weight:600;color:var(--n700);margin-top:18px;max-width:60ch;line-height:2.1}.gapline[_ngcontent-%COMP%] .hint[_ngcontent-%COMP%]{font-size:12px;font-weight:700;color:var(--teal-ink);background:var(--teal-mist);border:1px solid #d5efef;border-radius:999px;padding:2px 10px;white-space:nowrap}.gapin[_ngcontent-%COMP%]{display:inline-block;width:150px;padding:6px 12px;margin:0 4px;border-radius:10px;border:1.5px dashed var(--n300);background:var(--n0);font-size:14px;font-weight:700;text-align:center;outline:none;transition:.12s}.gapin[_ngcontent-%COMP%]:focus{border-color:var(--teal);border-style:solid;box-shadow:0 0 0 3px #21b6b61f}.gapin.sel[_ngcontent-%COMP%]{border-style:solid;border-color:#b9e6e6;background:var(--teal-mist);color:var(--teal-ink)}.prompt-panel[_ngcontent-%COMP%]{display:grid;grid-template-columns:760px minmax(0,300px);width:min(100%,1060px);margin-top:14px;overflow:hidden;border:1px solid var(--n200);border-radius:16px;background:var(--n0)}.prompt-copy[_ngcontent-%COMP%]{width:100%;min-width:0;padding:20px 22px}.prompt-label[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:7px;color:var(--teal-ink);font-size:10px;font-weight:800;letter-spacing:.08em;text-transform:uppercase}.prompt-copy[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin-top:9px;font-size:18px;line-height:1.35}.prompt-lead[_ngcontent-%COMP%]{margin-top:8px;color:var(--n500);font-size:13px;font-weight:500;line-height:1.65}.prompt-requirements[_ngcontent-%COMP%]{margin-top:14px;padding-top:13px;border-top:1px solid var(--n100)}.prompt-requirements[_ngcontent-%COMP%] > b[_ngcontent-%COMP%]{color:var(--n700);font-size:11px;text-transform:uppercase}.prompt-requirements[_ngcontent-%COMP%] ul[_ngcontent-%COMP%]{display:grid;gap:7px;margin:8px 0 0;padding:0;list-style:none}.prompt-requirements[_ngcontent-%COMP%] li[_ngcontent-%COMP%]{position:relative;padding-left:19px;color:var(--n500);font-size:12.5px;font-weight:500;line-height:1.55}.prompt-requirements[_ngcontent-%COMP%] li[_ngcontent-%COMP%]:before{content:"";position:absolute;
12left:1px;top:6px;width:7px;height:7px;border:2px solid var(--teal);border-radius:2px}.prompt-visual[_ngcontent-%COMP%]{min-height:100%;margin:0;background:var(--teal-mist);border-left:1px solid var(--n100)}.prompt-visual[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{display:block;width:100%;height:100%;min-height:230px;object-fit:cover;object-position:center}.qwrap[_ngcontent-%COMP%] textarea[_ngcontent-%COMP%]{margin-top:14px;width:100%;max-width:760px;flex:1;min-height:180px;resize:vertical;line-height:1.85;padding:18px 20px;border-radius:15px;border:1.5px solid var(--n200);outline:none;font-size:15px;font-weight:500;transition:.12s}.qwrap[_ngcontent-%COMP%] textarea[_ngcontent-%COMP%]:focus{border-color:var(--teal);box-shadow:0 0 0 3px #21b6b61f}.wcount[_ngcontent-%COMP%]{margin-top:8px;font-size:11px;font-weight:700;color:var(--n500);max-width:760px;display:flex;justify-content:space-between;gap:10px}.wcount[_ngcontent-%COMP%] b[_ngcontent-%COMP%]{color:var(--teal-ink)}.draftchip[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:5px;font-size:10px;font-weight:700;color:var(--teal-ink);background:var(--teal-mist);border:1px solid #d5efef;padding:3px 9px;border-radius:999px}@media (max-width: 1430px){.prompt-panel[_ngcontent-%COMP%]{grid-template-columns:minmax(0,760px);max-width:760px}.prompt-visual[_ngcontent-%COMP%]{grid-row:1;border-left:0;border-bottom:1px solid var(--n100)}.prompt-visual[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{min-height:0;aspect-ratio:16/9}}.oral-box[_ngcontent-%COMP%]{margin-top:16px;padding:20px 22px;border-radius:16px;background:var(--n50);border:1px solid var(--n100);max-width:760px}.permcard[_ngcontent-%COMP%]{max-width:420px;margin:0 auto;text-align:center;padding:10px 0 4px}.permcard[_ngcontent-%COMP%] .bico[_ngcontent-%COMP%]{width:52px;height:52px;border-radius:50%;margin:0 auto 12px;display:grid;place-items:center;background:var(--navy-soft);color:var(--navy)}.permcard[_ngcontent-%COMP%] b[_ngcontent-%COMP%]{display:block;font-size:14px;font-weight:800}.permcard[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{font-size:12px;font-weight:500;color:var(--n500);margin-top:5px;line-height:1.6}.permcard[_ngcontent-%COMP%] .row[_ngcontent-%COMP%]{display:flex;gap:9px;justify-content:center;margin-top:15px}.oral-main[_ngcontent-%COMP%]{display:flex;gap:16px;align-items:center}.oral-main[_ngcontent-%COMP%] .t[_ngcontent-%COMP%]{flex:1}.oral-main[_ngcontent-%COMP%] .t[_ngcontent-%COMP%] b[_ngcontent-%COMP%]{display:block;font-size:14px;font-weight:800}.oral-main[_ngcontent-%COMP%] .t[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{font-size:12px;font-weight:500;color:var(--n500);margin-top:4px}.mic[_ngcontent-%COMP%]{width:60px;height:60px;border-radius:50%;border:none;display:grid;place-items:center;cursor:pointer;background:var(--teal);color:#fff;box-shadow:0 8px 20px #21b6b661;flex:none;transition:.15s}.mic[_ngcontent-%COMP%]:hover{transform:scale(1.05)}.mic[_ngcontent-%COMP%] .ico[_ngcontent-%COMP%]{width:22px;height:22px}.mic.rec[_ngcontent-%COMP%]{background:var(--rose);box-shadow:0 8px 20px #e11d4859}@media (prefers-reduced-motion: no-preference){.mic.rec[_ngcontent-%COMP%]{animation:micpulse 1.5s ease-in-out infinite}}@keyframes _ngcontent-%COMP%_micpulse{0%,to{box-shadow:0 8px 20px #e11d4859,0 0 #e11d4840}50%{box-shadow:0 8px 20px #e11d4859,0 0 0 14px #e11d4800}}.wave[_ngcontent-%COMP%]{display:flex;align-items:center;gap:3px;height:26px}.wave[_ngcontent-%COMP%] i[_ngcontent-%COMP%]{width:3.5px;border-radius:999px;background:var(--rose);height:8px}@media (prefers-reduced-motion: no-preference){.wave[_ngcontent-%COMP%] i[_ngcontent-%COMP%]{animation:wavey .9s ease-in-out infinite}.wave[_ngcontent-%COMP%] i[_ngcontent-%COMP%]:nth-child(2n){animation-delay:.12s}.wave[_ngcontent-%COMP%] i[_ngcontent-%COMP%]:nth-child(3n){animation-delay:.28s}}@keyframes _ngcontent-%COMP%_wavey{0%,to{height:7px}50%{height:24px}}.rec-time[_ngcontent-%COMP%]{font-family:JetBrains Mono,monospace;font-size:12.5px;color:var(--rose);font-weight:500;font-variant-numeric:tabular-nums}.play-btn[_ngcontent-%COMP%]{width:40px;height:40px;border-radius:50%;border:none;background:var(--teal);color:#fff;display:grid;place-items:center;cursor:pointer;box-shadow:0 4px 12px #21b6b659;flex:none}.play-btn.sm[_ngcontent-%COMP%]{width:32px;height:32px}.play-btn[_ngcontent-%COMP%] .ico[_ngcontent-%COMP%]{width:14px;
12height:14px}.audio-track[_ngcontent-%COMP%]{flex:1;height:6px;border-radius:999px;background:var(--n200);overflow:hidden;max-width:260px}.audio-track[_ngcontent-%COMP%] i[_ngcontent-%COMP%]{display:block;height:100%;width:55%;border-radius:999px;background:var(--teal)}.rerec-btn[_ngcontent-%COMP%]{width:36px;height:36px;border-radius:50%;border:1.5px solid var(--n200);background:var(--n0);color:var(--n500);display:grid;place-items:center;cursor:pointer;flex:none;transition:.12s}.rerec-btn[_ngcontent-%COMP%] .ico[_ngcontent-%COMP%]{width:15px;height:15px}.rerec-btn[_ngcontent-%COMP%]:hover{border-color:var(--rose);color:var(--rose);background:var(--rose-soft);transform:translateY(-1px)}.upstate[_ngcontent-%COMP%]{display:flex;align-items:center;gap:13px}.upstate[_ngcontent-%COMP%] .t[_ngcontent-%COMP%]{flex:1}.upstate[_ngcontent-%COMP%] b[_ngcontent-%COMP%]{display:block;font-size:13px;font-weight:800}.upstate[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{display:block;font-size:11.5px;font-weight:500;color:var(--n500);margin-top:2px}.upbar[_ngcontent-%COMP%]{height:8px;border-radius:999px;background:var(--n200);overflow:hidden;margin-top:9px;max-width:340px}.upbar[_ngcontent-%COMP%] i[_ngcontent-%COMP%]{display:block;height:100%;width:4%;border-radius:999px;background:linear-gradient(90deg,var(--teal),var(--teal-deep));transition:width 1.5s ease}.failbox[_ngcontent-%COMP%]{display:flex;gap:12px;align-items:flex-start}.failbox[_ngcontent-%COMP%] .fico[_ngcontent-%COMP%]{width:36px;height:36px;border-radius:12px;background:var(--rose-soft);color:var(--rose);display:grid;place-items:center;flex:none}.spin[_ngcontent-%COMP%]{width:20px;height:20px;border-radius:50%;border:3px solid var(--n200);border-top-color:var(--teal);flex:none}@media (prefers-reduced-motion: no-preference){.spin[_ngcontent-%COMP%]{animation:spin 1s linear infinite}}@keyframes _ngcontent-%COMP%_spin{to{transform:rotate(360deg)}}.okrow[_ngcontent-%COMP%]{display:flex;align-items:center;gap:12px}.okrow[_ngcontent-%COMP%] .dur[_ngcontent-%COMP%]{font-family:JetBrains Mono,monospace;font-size:12px;color:var(--n500)}.okline[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:6px;font-size:11px;font-weight:700;color:var(--teal-ink);margin-top:10px}.review[_ngcontent-%COMP%]{padding:34px 36px;min-height:var(--stagey);display:flex;flex-direction:column}.review-grid[_ngcontent-%COMP%]{display:grid;grid-template-columns:minmax(0,820px) minmax(240px,1fr);gap:28px;align-items:start}.review-content[_ngcontent-%COMP%]{min-width:0}.review[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{font-size:22px;font-weight:900;letter-spacing:-.015em}.review[_ngcontent-%COMP%] .sub[_ngcontent-%COMP%]{font-size:13px;font-weight:500;color:var(--n500);margin-top:6px;max-width:62ch}.rev-list[_ngcontent-%COMP%]{margin-top:20px;display:grid;gap:9px;max-width:820px}.rev[_ngcontent-%COMP%]{display:flex;align-items:center;gap:13px;padding:13px 16px;border-radius:14px;border:1px solid var(--n200);background:var(--n0)}.rev.ok[_ngcontent-%COMP%]{border-color:#b9e6e6;background:var(--teal-mist)}.rev.warn[_ngcontent-%COMP%]{border-color:#f0dcab;background:var(--warn-soft)}.rev[_ngcontent-%COMP%] .r-ico[_ngcontent-%COMP%]{width:34px;height:34px;border-radius:11px;display:grid;place-items:center;flex:none;background:var(--teal-soft);color:var(--teal-ink)}.rev.warn[_ngcontent-%COMP%] .r-ico[_ngcontent-%COMP%]{background:#fbe8c4;color:var(--amber-deep)}.rev[_ngcontent-%COMP%] .r-copy[_ngcontent-%COMP%]{flex:1;min-width:0}.rev[_ngcontent-%COMP%] .r-copy[_ngcontent-%COMP%] .l1[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.rev[_ngcontent-%COMP%] .r-copy[_ngcontent-%COMP%] b[_ngcontent-%COMP%]{font-size:13px;font-weight:800}.rev[_ngcontent-%COMP%] .r-copy[_ngcontent-%COMP%] span.d[_ngcontent-%COMP%]{display:block;font-size:11px;font-weight:600;color:var(--n500);margin-top:1px}.rev.warn[_ngcontent-%COMP%] .r-copy[_ngcontent-%COMP%] span.d[_ngcontent-%COMP%]{color:var(--amber-deep)}.rev[_ngcontent-%COMP%] .go[_ngcontent-%COMP%]{font-size:11.5px;font-weight:800;color:var(--teal-ink);background:var(--n0);border:1px solid var(--n200);padding:7px 13px;border-radius:999px;cursor:pointer;white-space:nowrap}.rev[_ngcontent-%COMP%] .go[_ngcontent-%COMP%]:hover{border-color:var(--teal)}.sendbox[_ngcontent-%COMP%]{margin-top:22px;max-width:820px;padding:16px 19px;border-radius:15px;border:1px solid var(--n200);background:var(--n50)}.review-visual[_ngcontent-%COMP%]{position:sticky;top:118px;margin:0;overflow:hidden;border:1px solid var(--n200);border-radius:16px;background:var(--teal-mist);box-shadow:var(--shadow-1)}.review-visual[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{display:block;width:100%;aspect-ratio:16/10;padding:8px;object-fit:contain}.sendbox[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{font-size:12.5px;font-weight:500;color:var(--n500);line-height:1.65}.sendbox[_ngcontent-%COMP%] p[_ngcontent-%COMP%] b[_ngcontent-%COMP%]{color:var(--n700)}.sendbox[_ngcontent-%COMP%] .cta[_ngcontent-%COMP%]{margin-top:14px;display:flex;align-items:center;gap:13px;flex-wrap:wrap}.confirmstrip[_ngcontent-%COMP%]{margin-top:12px;padding:13px 16px;border-radius:13px;background:var(--warn-soft);border:1px solid #f0dcab;display:flex;align-items:center;gap:12px;flex-wrap:wrap;animation:_ngcontent-%COMP%_rise .25s both}.confirmstrip[_ngcontent-%COMP%] b[_ngcontent-%COMP%]{font-size:12.5px;font-weight:800;color:var(--amber-deep)}.submitted[_ngcontent-%COMP%]{padding:54px 40px;text-align:center;background:linear-gradient(150deg,var(--teal-mist) 0%,#ffffff 60%,#fdf8ee 100%);position:relative;overflow:hidden}.submitted[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{font-size:27px;font-weight:900;letter-spacing:-.02em;margin-top:18px}.submitted[_ngcontent-%COMP%] .sub[_ngcontent-%COMP%]{font-size:13.5px;font-weight:500;color:var(--n500);margin-top:9px;max-width:54ch;margin-left:auto;margin-right:auto}.illo[_ngcontent-%COMP%]{display:block;margin:0 auto;
12width:200px;max-width:60%;animation:_ngcontent-%COMP%_pop .6s cubic-bezier(.34,1.56,.64,1) both}@keyframes _ngcontent-%COMP%_pop{0%{transform:scale(.5);opacity:0}to{transform:scale(1);opacity:1}}.next-steps[_ngcontent-%COMP%]{display:flex;gap:10px;justify-content:center;flex-wrap:wrap;margin-top:22px}.ns[_ngcontent-%COMP%]{padding:13px 17px;border-radius:14px;background:var(--n0);border:1px solid var(--n200);text-align:left;max-width:240px;display:flex;gap:10px}.ns[_ngcontent-%COMP%] .p-ico[_ngcontent-%COMP%]{width:32px;height:32px;border-radius:10px;display:grid;place-items:center;flex:none;background:var(--teal-soft);color:var(--teal-ink)}.ns.ia[_ngcontent-%COMP%] .p-ico[_ngcontent-%COMP%]{background:var(--navy-soft);color:var(--navy)}.ns.ens[_ngcontent-%COMP%] .p-ico[_ngcontent-%COMP%]{background:var(--amber-soft);color:var(--amber-deep)}.ns[_ngcontent-%COMP%] b[_ngcontent-%COMP%]{display:block;font-size:12px;font-weight:800}.ns[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{display:block;font-size:11px;font-weight:500;color:var(--n500);margin-top:1px}.confetti[_ngcontent-%COMP%]{position:absolute;inset:0;pointer-events:none}.confetti[_ngcontent-%COMP%] i[_ngcontent-%COMP%]{position:absolute;top:-16px;width:8px;height:13px;border-radius:2px;opacity:0;animation:_ngcontent-%COMP%_fall 3s ease-in both}@keyframes _ngcontent-%COMP%_fall{0%{opacity:0;transform:translateY(-12px) rotate(0)}8%{opacity:1}82%{opacity:1}to{opacity:0;transform:translateY(620px) rotate(560deg)}}.board[_ngcontent-%COMP%]{display:grid;grid-template-columns:300px 1fr;gap:20px;align-items:start}@media (max-width: 880px){.board[_ngcontent-%COMP%]{grid-template-columns:1fr}}.rail[_ngcontent-%COMP%]{background:var(--n0);border:1px solid var(--n200);border-radius:22px;padding:26px 24px;box-shadow:0 12px 32px #14212a12;text-align:center;position:sticky;top:96px}.wheel[_ngcontent-%COMP%]{position:relative;width:158px;height:158px;margin:0 auto;display:grid;place-items:center}.wheel[_ngcontent-%COMP%] svg[_ngcontent-%COMP%]{position:absolute;inset:0;transform:rotate(-90deg)}.wheel[_ngcontent-%COMP%] .tr[_ngcontent-%COMP%]{fill:none;stroke:var(--n100);stroke-width:11}.wheel[_ngcontent-%COMP%] .ar[_ngcontent-%COMP%]{fill:none;stroke:url(#grd);stroke-width:11;stroke-linecap:round;stroke-dasharray:434;stroke-dashoffset:434;transition:stroke-dashoffset 1.5s cubic-bezier(.3,.9,.3,1)}.wheel[_ngcontent-%COMP%] b[_ngcontent-%COMP%]{font-size:31px;font-weight:900;letter-spacing:-.02em;font-variant-numeric:tabular-nums}.wheel[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{font-size:10.5px;font-weight:700;color:var(--n400)}.headline[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:6px;margin-top:14px;font-size:10px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;padding:5px 13px;border-radius:999px}.headline.part[_ngcontent-%COMP%]{color:var(--amber-deep);background:var(--amber-soft);border:1px solid #f0dcab}.headline.full[_ngcontent-%COMP%]{color:var(--teal-ink);background:var(--teal-soft);border:1px solid #b9e6e6}.slots[_ngcontent-%COMP%]{margin-top:16px;display:grid;gap:7px;text-align:left}.slot[_ngcontent-%COMP%]{display:flex;align-items:center;gap:9px;padding:9px 12px;border-radius:12px;border:1px solid var(--n200);background:var(--n0)}.slot[_ngcontent-%COMP%] .s-ico[_ngcontent-%COMP%]{width:26px;height:26px;border-radius:50%;display:grid;place-items:center;flex:none}.slot.done[_ngcontent-%COMP%] .s-ico[_ngcontent-%COMP%]{background:var(--teal-soft);color:var(--teal-ink)}.slot.wait[_ngcontent-%COMP%] .s-ico[_ngcontent-%COMP%]{background:var(--amber-soft);color:var(--amber-deep)}.slot[_ngcontent-%COMP%] .s-t[_ngcontent-%COMP%]{flex:1;min-width:0}.slot[_ngcontent-%COMP%] .s-t[_ngcontent-%COMP%] b[_ngcontent-%COMP%]{display:block;font-size:11.5px;font-weight:800}.slot[_ngcontent-%COMP%] .sc[_ngcontent-%COMP%]{font-family:JetBrains Mono,monospace;font-size:12px;color:var(--n700);white-space:nowrap}.slot[_ngcontent-%COMP%] .sc.pending[_ngcontent-%COMP%]{font-family:Montserrat,sans-serif;font-size:10px;font-weight:700;color:var(--amber-deep)}.rail[_ngcontent-%COMP%] .btn[_ngcontent-%COMP%]{width:100%;margin-top:14px;justify-content:center}.rail[_ngcontent-%COMP%] .note[_ngcontent-%COMP%]{display:block;margin-top:10px}.rmain[_ngcontent-%COMP%]{background:var(--n0);border:1px solid var(--n200);border-radius:22px;box-shadow:0 12px 32px #14212a12;overflow:hidden}.tabs[_ngcontent-%COMP%]{display:flex;gap:4px;padding:12px 14px 0;border-bottom:1px solid var(--n100);flex-wrap:wrap}.tab[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:8px;font-size:12.5px;font-weight:800;padding:10px 14px 12px;border:none;background:none;color:var(--n400);
12cursor:pointer;border-bottom:2.5px solid transparent;margin-bottom:-1px;transition:.15s}.tab[_ngcontent-%COMP%]:hover{color:var(--n700)}.tab.on[_ngcontent-%COMP%]{color:var(--teal-deep);border-bottom-color:var(--teal)}.pane[_ngcontent-%COMP%]{padding:22px 26px 28px;min-height:420px}.pane[_ngcontent-%COMP%] > *[_ngcontent-%COMP%]{animation:_ngcontent-%COMP%_rise .4s cubic-bezier(.2,.7,.3,1) both}.pane[_ngcontent-%COMP%] > *[_ngcontent-%COMP%]:nth-child(2){animation-delay:.06s}.pane[_ngcontent-%COMP%] > *[_ngcontent-%COMP%]:nth-child(3){animation-delay:.12s}.pane[_ngcontent-%COMP%] > *[_ngcontent-%COMP%]:nth-child(4){animation-delay:.18s}.pane[_ngcontent-%COMP%] > *[_ngcontent-%COMP%]:nth-child(5){animation-delay:.24s}.scorehead[_ngcontent-%COMP%]{display:flex;align-items:center;gap:13px;flex-wrap:wrap}.scorehead[_ngcontent-%COMP%] .big[_ngcontent-%COMP%]{font-family:JetBrains Mono,monospace;font-size:25px;font-weight:500;color:var(--n900)}.scorehead[_ngcontent-%COMP%] .lbl[_ngcontent-%COMP%]{font-size:12.5px;font-weight:700;color:var(--n500)}.srow[_ngcontent-%COMP%]{display:flex;align-items:center;gap:12px;padding:9px 14px;border:1px solid var(--n200);border-radius:13px;background:var(--n0)}.srow[_ngcontent-%COMP%] + .srow[_ngcontent-%COMP%]{margin-top:7px}.srow[_ngcontent-%COMP%] .nm[_ngcontent-%COMP%]{flex:1;min-width:0;font-size:12.5px;font-weight:700}.srow[_ngcontent-%COMP%] .bar[_ngcontent-%COMP%]{width:130px;height:6px;border-radius:999px;background:var(--n100);overflow:hidden;flex:none}.srow[_ngcontent-%COMP%] .bar[_ngcontent-%COMP%] i[_ngcontent-%COMP%]{display:block;height:100%;border-radius:999px;background:linear-gradient(90deg,var(--teal),var(--teal-deep))}.srow[_ngcontent-%COMP%] .sc[_ngcontent-%COMP%]{font-family:JetBrains Mono,monospace;font-size:12px;width:46px;text-align:right;flex:none;color:var(--n700)}.rmain[_ngcontent-%COMP%]{position:relative}.skgrid[_ngcontent-%COMP%]{display:grid;grid-template-columns:1fr 264px;gap:24px;align-items:center;margin-top:14px;min-width:0}.skgrid[_ngcontent-%COMP%] > *[_ngcontent-%COMP%]{min-width:0}@media (max-width: 980px){.skgrid[_ngcontent-%COMP%]{grid-template-columns:1fr}.radar-box[_ngcontent-%COMP%]{max-width:300px}}.radar-box[_ngcontent-%COMP%]{text-align:center;max-width:264px;margin:0 auto}svg.radar[_ngcontent-%COMP%]{width:100%;height:auto;overflow:visible}.grid-line[_ngcontent-%COMP%]{fill:none;stroke:var(--n100)}.spoke[_ngcontent-%COMP%]{stroke:var(--n100)}.poly-b[_ngcontent-%COMP%]{fill:#64747e1a;stroke:var(--n400);stroke-width:1.5;stroke-dasharray:4 3}.poly-a[_ngcontent-%COMP%]{fill:#21b6b629;stroke:var(--teal);stroke-width:2.5;transition:all 1.5s cubic-bezier(.3,.9,.3,1)}.rpt[_ngcontent-%COMP%]{fill:var(--teal);transition:all 1.5s cubic-bezier(.3,.9,.3,1)}.rpt.prov[_ngcontent-%COMP%]{fill:var(--amber)}.axl[_ngcontent-%COMP%]{font-size:10px;font-weight:800;fill:var(--n500)}.axl.prov[_ngcontent-%COMP%]{fill:var(--amber-deep)}.radar-legend[_ngcontent-%COMP%]{display:flex;gap:12px;justify-content:center;margin-top:6px;font-size:10px;font-weight:700;color:var(--n500)}.radar-legend[_ngcontent-%COMP%] i[_ngcontent-%COMP%]{display:inline-block;width:13px;height:3px;border-radius:2px;vertical-align:2px;margin-right:4px}.radar-note[_ngcontent-%COMP%]{margin-top:10px;font-size:10.5px;font-weight:500;color:var(--n400);line-height:1.6}.skrow[_ngcontent-%COMP%]{display:flex;align-items:center;gap:10px;padding:9px 14px;border:1px solid var(--n200);border-radius:13px;background:var(--n0);min-height:52px}.skrow[_ngcontent-%COMP%] + .skrow[_ngcontent-%COMP%]{margin-top:7px}.skrow.prov[_ngcontent-%COMP%]{border-color:#f0dcab;background:linear-gradient(100deg,var(--amber-soft),#fff 55%)}.skrow[_ngcontent-%COMP%] > .ico[_ngcontent-%COMP%]{width:20px;height:20px;color:var(--n400)}.skrow[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{width:20px;height:20px;opacity:.75;flex:none}.skrow[_ngcontent-%COMP%] .nm[_ngcontent-%COMP%]{flex:1;min-width:0}.skrow[_ngcontent-%COMP%] .nm[_ngcontent-%COMP%] b[_ngcontent-%COMP%]{display:block;font-size:13px;font-weight:800;line-height:1.25}.skrow[_ngcontent-%COMP%] .nm[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{display:block;font-size:10.5px;font-weight:600;color:var(--n400);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.skrow[_ngcontent-%COMP%] .nm[_ngcontent-%COMP%] .wait[_ngcontent-%COMP%]{color:var(--amber-deep);font-weight:700}.skrow[_ngcontent-%COMP%] .chips[_ngcontent-%COMP%]{display:flex;gap:4px;flex:none}.skrow[_ngcontent-%COMP%] .bar[_ngcontent-%COMP%]{width:90px;height:6px;border-radius:999px;background:var(--n100);overflow:hidden;flex:none}.skrow[_ngcontent-%COMP%] .bar[_ngcontent-%COMP%] i[_ngcontent-%COMP%]{display:block;height:100%;width:0;border-radius:999px;background:linear-gradient(90deg,var(--teal),var(--teal-deep));transition:width 1.1s cubic-bezier(.3,.9,.3,1) .25s}.skrow.prov[_ngcontent-%COMP%] .bar[_ngcontent-%COMP%] i[_ngcontent-%COMP%]{background:linear-gradient(90deg,var(--amber),var(--amber-deep))}.skrow[_ngcontent-%COMP%] .sc[_ngcontent-%COMP%]{font-family:JetBrains Mono,monospace;font-size:12.5px;min-width:58px;text-align:right;flex:none;white-space:nowrap}.skrow.prov[_ngcontent-%COMP%] .sc[_ngcontent-%COMP%]{color:var(--amber-deep)}.unlock-toast[_ngcontent-%COMP%]{position:absolute;top:14px;right:16px;z-index:5;display:flex;align-items:center;gap:8px;background:var(--n900);color:#fff;border-radius:12px;padding:8px 13px;font-size:11.5px;font-weight:700;box-shadow:0 12px 30px #14212a4d;opacity:0;transform:translateY(-8px);transition:.3s;pointer-events:none}.unlock-toast.show[_ngcontent-%COMP%]{opacity:1;transform:none}.unlock-toast[_ngcontent-%COMP%] .tk[_ngcontent-%COMP%]{width:22px;height:22px;border-radius:50%;background:var(--amber);display:grid;place-items:center;flex:none}.unlock-toast[_ngcontent-%COMP%] small[_ngcontent-%COMP%]{display:block;font-size:9.5px;font-weight:600;color:#9fb3bd}.qrow[_ngcontent-%COMP%]{border:1px solid var(--n100);border-radius:12px;margin-top:7px}.qrow[_ngcontent-%COMP%] summary[_ngcontent-%COMP%]{list-style:none;display:flex;align-items:center;gap:11px;padding:10px 14px;cursor:pointer}.qrow[_ngcontent-%COMP%] summary[_ngcontent-%COMP%]::-webkit-details-marker{display:none}.qrow[_ngcontent-%COMP%] .qn[_ngcontent-%COMP%]{font-family:JetBrains Mono,monospace;font-size:11px;color:var(--n400);width:26px;flex:none}.qrow[_ngcontent-%COMP%] .qt[_ngcontent-%COMP%]{flex:1;min-width:0;overflow-wrap:break-word;font-size:12.5px;font-weight:600;color:var(--n700)}
12.qrow[_ngcontent-%COMP%] .st[_ngcontent-%COMP%]{width:22px;height:22px;border-radius:50%;display:grid;place-items:center;flex:none}.qrow[_ngcontent-%COMP%] .st.ok[_ngcontent-%COMP%]{background:var(--teal-soft);color:var(--teal-ink)}.qrow[_ngcontent-%COMP%] .st.no[_ngcontent-%COMP%]{background:var(--rose-soft);color:var(--rose)}.qrow[_ngcontent-%COMP%] .body[_ngcontent-%COMP%]{padding:0 14px 12px 51px;font-size:12px;font-weight:500;color:var(--n500);line-height:1.65}.qrow[_ngcontent-%COMP%] .body[_ngcontent-%COMP%] b[_ngcontent-%COMP%]{color:var(--n700)}.ai-banner[_ngcontent-%COMP%]{display:flex;align-items:flex-start;gap:11px;padding:13px 16px;border-radius:14px;background:var(--navy-soft);border:1px solid #d3deea}.ai-banner[_ngcontent-%COMP%] .p-ico[_ngcontent-%COMP%]{width:32px;height:32px;border-radius:10px;background:#fff;color:var(--navy);display:grid;place-items:center;flex:none}.ai-banner[_ngcontent-%COMP%] b[_ngcontent-%COMP%]{display:block;font-size:12.5px;font-weight:800;color:var(--navy)}.ai-banner[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{display:block;font-size:11.5px;font-weight:500;color:var(--n500);margin-top:2px}.fbblock[_ngcontent-%COMP%]{margin-top:14px;border:1px solid var(--n200);border-radius:16px;padding:16px 19px}.fbblock[_ngcontent-%COMP%] .head[_ngcontent-%COMP%]{display:flex;align-items:flex-start;gap:10px;flex-wrap:wrap}.fbblock[_ngcontent-%COMP%] .head[_ngcontent-%COMP%] b.t[_ngcontent-%COMP%]{font-size:14px;font-weight:800;flex:1 1 180px;min-width:0;overflow-wrap:break-word}.qscore[_ngcontent-%COMP%]{flex:none;display:flex;flex-direction:column;align-items:center;gap:1px;min-width:76px;padding:8px 12px 7px;border:1px solid var(--n200);border-radius:14px;background:var(--n50)}.qscore__label[_ngcontent-%COMP%]{font-size:9px;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:var(--n400)}.qscore__value[_ngcontent-%COMP%]{display:flex;align-items:baseline;gap:3px;font-family:JetBrains Mono,monospace}.qscore__value[_ngcontent-%COMP%] b[_ngcontent-%COMP%]{font-size:22px;font-weight:800;line-height:1.05;color:var(--n900)}.qscore__of[_ngcontent-%COMP%]{font-size:13px;color:var(--n500)}.qscore__unit[_ngcontent-%COMP%]{font-size:9.5px;font-weight:700;color:var(--n400)}.qscore--full[_ngcontent-%COMP%]{border-color:var(--teal);background:var(--teal-mist)}.qscore--full[_ngcontent-%COMP%] .qscore__value[_ngcontent-%COMP%] b[_ngcontent-%COMP%], .qscore--full[_ngcontent-%COMP%] .qscore__of[_ngcontent-%COMP%]{color:var(--teal-ink)}.sect[_ngcontent-%COMP%]{margin-top:13px}.sect[_ngcontent-%COMP%] > .sl[_ngcontent-%COMP%]{font-size:9.5px;font-weight:800;letter-spacing:.11em;text-transform:uppercase;color:var(--n400);display:block;margin-bottom:6px}.diffp[_ngcontent-%COMP%]{font-size:13.5px;font-weight:500;color:var(--n700);line-height:1.9;background:var(--n50);border:1px solid var(--n100);border-radius:12px;padding:12px 15px;overflow-wrap:break-word}.dw[_ngcontent-%COMP%]{color:var(--rose);text-decoration:line-through;text-decoration-thickness:1.5px;font-weight:700}.dr[_ngcontent-%COMP%]{color:var(--teal-ink);font-weight:800}.errrow[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:flex-start;gap:10px;padding:10px 12px;border:1px solid var(--n200);border-radius:12px}.errrow[_ngcontent-%COMP%] + .errrow[_ngcontent-%COMP%]{margin-top:7px}.errrow[_ngcontent-%COMP%] .pair[_ngcontent-%COMP%]{min-width:0;flex:1 1 260px}.errrow[_ngcontent-%COMP%] .pair[_ngcontent-%COMP%] .dw[_ngcontent-%COMP%], .errrow[_ngcontent-%COMP%] .pair[_ngcontent-%COMP%] .dr[_ngcontent-%COMP%]{display:block;font-size:12.5px;overflow-wrap:break-word}.errrow[_ngcontent-%COMP%] .why[_ngcontent-%COMP%]{flex:1 1 200px;min-width:0;font-size:11.5px;font-weight:500;color:var(--n500);line-height:1.55}.sev[_ngcontent-%COMP%]{font-size:8.5px;font-weight:900;letter-spacing:.08em;text-transform:uppercase;padding:3px 8px;border-radius:999px;flex:none}.sev.min[_ngcontent-%COMP%]{background:var(--n100);color:var(--n500)}.sev.mod[_ngcontent-%COMP%]{background:var(--amber-soft);color:var(--amber-deep)}.plist[_ngcontent-%COMP%]{display:grid;gap:6px}.plist[_ngcontent-%COMP%] .pi[_ngcontent-%COMP%]{display:flex;gap:8px;align-items:flex-start;font-size:12.5px;font-weight:500;color:var(--n700)}.plist[_ngcontent-%COMP%] .pi[_ngcontent-%COMP%] .ico[_ngcontent-%COMP%]{width:13px;height:13px;margin-top:3px;color:var(--teal-ink)}.plist[_ngcontent-%COMP%] .pi.sug[_ngcontent-%COMP%] .ico[_ngcontent-%COMP%]{color:var(--amber-deep)}.model[_ngcontent-%COMP%]{margin-top:13px;border:1px dashed var(--n300);border-radius:12px}.model[_ngcontent-%COMP%] summary[_ngcontent-%COMP%]{list-style:none;cursor:pointer;padding:10px 14px;font-size:12px;font-weight:800;color:var(--teal-deep);display:flex;align-items:center;gap:7px}.model[_ngcontent-%COMP%] summary[_ngcontent-%COMP%]::-webkit-details-marker{display:none}.model[_ngcontent-%COMP%] .mtxt[_ngcontent-%COMP%]{padding:0 14px 12px;font-size:12.5px;font-weight:500;color:var(--n700);line-height:1.75;font-style:italic}.fbcta[_ngcontent-%COMP%]{margin-top:15px;
12display:flex;align-items:center;gap:10px;flex-wrap:wrap}.contested[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:6px;font-size:11px;font-weight:800;color:var(--amber-deep);background:var(--amber-soft);border:1px solid #f0dcab;padding:7px 13px;border-radius:999px}.subsc[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:8px}.subsc[_ngcontent-%COMP%] .s[_ngcontent-%COMP%]{border:1px solid var(--n200);border-radius:12px;padding:9px 12px}.subsc[_ngcontent-%COMP%] .s[_ngcontent-%COMP%] b[_ngcontent-%COMP%]{display:block;font-size:10.5px;font-weight:800;color:var(--n500)}.subsc[_ngcontent-%COMP%] .s[_ngcontent-%COMP%] .v[_ngcontent-%COMP%]{font-family:JetBrains Mono,monospace;font-size:13px;color:var(--n900)}.subsc[_ngcontent-%COMP%] .s[_ngcontent-%COMP%] .bar[_ngcontent-%COMP%]{height:5px;border-radius:999px;background:var(--n100);margin-top:6px;overflow:hidden}.subsc[_ngcontent-%COMP%] .s[_ngcontent-%COMP%] .bar[_ngcontent-%COMP%] i[_ngcontent-%COMP%]{display:block;height:100%;border-radius:999px;background:linear-gradient(90deg,var(--teal),var(--teal-deep))}.quote[_ngcontent-%COMP%]{padding:14px 17px;border-radius:14px;background:var(--amber-soft);border:1px solid #f0dcab;font-size:13px;font-weight:500;color:var(--n700);font-style:italic;line-height:1.7}.audio-chip[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:9px;padding:8px 13px;border-radius:999px;background:var(--n0);border:1px solid var(--n200);font-size:11.5px;font-weight:700;color:var(--n700)}.recorow[_ngcontent-%COMP%]{display:flex;gap:10px;align-items:flex-start;padding:11px 14px;border:1px solid var(--n200);border-radius:13px}.recorow[_ngcontent-%COMP%] + .recorow[_ngcontent-%COMP%]{margin-top:7px}.recorow[_ngcontent-%COMP%] .p-ico[_ngcontent-%COMP%]{width:30px;height:30px;border-radius:10px;background:var(--teal-soft);color:var(--teal-ink);display:grid;place-items:center;flex:none}.recorow[_ngcontent-%COMP%] b[_ngcontent-%COMP%]{display:block;font-size:12.5px;font-weight:800}.recorow[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{display:block;font-size:11.5px;font-weight:500;color:var(--n500);margin-top:1px}.waitcard[_ngcontent-%COMP%]{text-align:center;padding:28px 20px 10px}.waitcard[_ngcontent-%COMP%] .bico[_ngcontent-%COMP%]{width:60px;height:60px;border-radius:20px;margin:0 auto;display:grid;place-items:center;background:var(--amber-soft);color:var(--amber-deep)}.waitcard[_ngcontent-%COMP%] h3[_ngcontent-%COMP%]{font-size:17px;font-weight:900;margin-top:13px}.waitcard[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{font-size:12.5px;font-weight:500;color:var(--n500);margin-top:7px;max-width:48ch;margin-left:auto;margin-right:auto;line-height:1.65}.thead-eyebrow[_ngcontent-%COMP%]{color:var(--amber-deep)}.queue[_ngcontent-%COMP%]{padding:30px 34px}.queue[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{font-size:20px;font-weight:900;letter-spacing:-.015em}.queue[_ngcontent-%COMP%] .sub[_ngcontent-%COMP%]{font-size:12.5px;font-weight:500;color:var(--n500);margin-top:5px}.qsec[_ngcontent-%COMP%]{font-size:10px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:var(--n400);margin:22px 0 9px;display:flex;align-items:center;gap:8px}.qsec[_ngcontent-%COMP%] .cnt[_ngcontent-%COMP%]{background:var(--n100);color:var(--n500);border-radius:999px;padding:1px 8px;font-size:9.5px}.qitem[_ngcontent-%COMP%]{display:flex;align-items:center;gap:14px;padding:14px 17px;border:1px solid var(--n200);border-radius:15px;background:var(--n0)}.qitem[_ngcontent-%COMP%] + .qitem[_ngcontent-%COMP%]{margin-top:8px}.qitem.hot[_ngcontent-%COMP%]{border-color:#f0dcab;background:linear-gradient(100deg,var(--warn-soft),#fff 45%)}.qitem[_ngcontent-%COMP%] .av[_ngcontent-%COMP%]{width:40px;height:40px;border-radius:50%;background:var(--teal-soft);color:var(--teal-ink);display:grid;place-items:center;font-size:13px;font-weight:900;flex:none}.qitem.disp[_ngcontent-%COMP%] .av[_ngcontent-%COMP%]{background:var(--amber-soft);color:var(--amber-deep)}.qitem[_ngcontent-%COMP%] .t[_ngcontent-%COMP%]{flex:1;min-width:0}.qitem[_ngcontent-%COMP%] .l1[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.qitem[_ngcontent-%COMP%] .l1[_ngcontent-%COMP%] b[_ngcontent-%COMP%]{font-size:13.5px;font-weight:800}.qitem[_ngcontent-%COMP%] .meta[_ngcontent-%COMP%]{font-size:11px;font-weight:600;color:var(--n500);margin-top:2px}.qitem[_ngcontent-%COMP%] .ail[_ngcontent-%COMP%]{display:flex;align-items:center;gap:6px;font-size:11px;font-weight:600;color:var(--navy);margin-top:5px}.qitem[_ngcontent-%COMP%] .ail[_ngcontent-%COMP%] .ico[_ngcontent-%COMP%]{width:12px;height:12px;flex:none}.qitem[_ngcontent-%COMP%] .icons[_ngcontent-%COMP%]{display:flex;gap:5px;align-items:center;flex:none}.qitem[_ngcontent-%COMP%] .icons[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{width:18px;height:18px;opacity:.75}.prio[_ngcontent-%COMP%]{font-size:9px;font-weight:900;letter-spacing:.07em;text-transform:uppercase;padding:3px 9px;border-radius:999px;background:var(--amber-soft);color:var(--amber-deep);border:1px solid #f0dcab;white-space:nowrap}.stat-chip[_ngcontent-%COMP%]{font-size:9px;font-weight:900;letter-spacing:.07em;text-transform:uppercase;padding:3px 9px;border-radius:999px;background:var(--n100);color:var(--n500);white-space:nowrap}.demoflash[_ngcontent-%COMP%]{font-size:10.5px;font-weight:700;color:var(--amber-deep)}.ggrid[_ngcontent-%COMP%]{display:grid;grid-template-columns:1fr 356px;gap:18px;align-items:start}@media (max-width: 980px){.ggrid[_ngcontent-%COMP%]{grid-template-columns:1fr}}.gmain[_ngcontent-%COMP%]{background:var(--n0);border:1px solid var(--n200);border-radius:18px;padding:24px 27px;box-shadow:0 10px 28px #14212a0f}.gmain[_ngcontent-%COMP%] .prompt[_ngcontent-%COMP%]{padding:13px 16px;border-radius:13px;background:var(--n50);border:1px solid var(--n100)}.gmain[_ngcontent-%COMP%] .prompt[_ngcontent-%COMP%] b[_ngcontent-%COMP%]{display:block;font-size:13.5px;font-weight:800}.gmain[_ngcontent-%COMP%] .prompt[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{font-size:12px;font-weight:500;color:var(--n500);margin-top:4px;line-height:1.6}.resp[_ngcontent-%COMP%]{margin-top:14px;font-size:13.5px;font-weight:500;color:var(--n700);line-height:1.9;white-space:pre-line}.resp-meta[_ngcontent-%COMP%]{margin-top:12px;font-size:11px;font-weight:600;color:var(--n400);display:flex;gap:12px;flex-wrap:wrap}.gwork[_ngcontent-%COMP%]{margin-top:20px;padding-top:4px;border-top:1px solid var(--n100)}.grail[_ngcontent-%COMP%]{background:var(--n0);border:1px solid var(--n200);border-radius:18px;padding:18px 19px;box-shadow:0 10px 28px #14212a0f;position:sticky;top:96px}.grail[_ngcontent-%COMP%] .gs[_ngcontent-%COMP%], .gwork[_ngcontent-%COMP%] .gs[_ngcontent-%COMP%]{padding:11px 0;border-bottom:1px solid var(--n100)}.grail[_ngcontent-%COMP%] .gs[_ngcontent-%COMP%]:first-child, .gwork[_ngcontent-%COMP%] .gs[_ngcontent-%COMP%]:first-child{padding-top:0}.grail[_ngcontent-%COMP%] .gs[_ngcontent-%COMP%]:last-child, .gwork[_ngcontent-%COMP%] .gs[_ngcontent-%COMP%]:last-child{border-bottom:none;padding-bottom:0}.grail[_ngcontent-%COMP%] .gs[_ngcontent-%COMP%] > .sl[_ngcontent-%COMP%], .gwork[_ngcontent-%COMP%] .gs[_ngcontent-%COMP%] > .sl[_ngcontent-%COMP%]{font-size:9.5px;font-weight:800;letter-spacing:.11em;text-transform:uppercase;color:var(--n400);display:block;margin-bottom:8px}.ctxrow[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px;font-size:11.5px;font-weight:600;color:var(--n700);padding:4px 0;flex-wrap:wrap}.ctxrow[_ngcontent-%COMP%] .sc[_ngcontent-%COMP%]{font-family:JetBrains Mono,monospace;font-size:11.5px}.ctxrow[_ngcontent-%COMP%] .d[_ngcontent-%COMP%]{color:var(--n500);font-weight:500}.weakchips[_ngcontent-%COMP%]{display:flex;gap:5px;flex-wrap:wrap;margin-top:6px}.weakchips[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{font-size:10px;font-weight:700;color:var(--rose);background:var(--rose-soft);border:1px solid #f5c6d0;padding:3px 10px;border-radius:999px}.rubrow[_ngcontent-%COMP%]{display:flex;align-items:center;gap:7px;padding:5px 0}
12.rubrow[_ngcontent-%COMP%] .lbl[_ngcontent-%COMP%]{flex:1;font-size:11.5px;font-weight:700;color:var(--n700)}.rubrow[_ngcontent-%COMP%] .lbl[_ngcontent-%COMP%] small[_ngcontent-%COMP%]{display:block;font-size:9.5px;font-weight:600;color:var(--n400)}.rdot[_ngcontent-%COMP%]{width:25px;height:25px;border-radius:50%;border:1.5px solid var(--n200);background:var(--n0);font-size:10.5px;font-weight:800;color:var(--n500);cursor:pointer;transition:.12s;padding:0}.rdot[_ngcontent-%COMP%]:hover{border-color:var(--teal)}.rdot.on[_ngcontent-%COMP%]{background:var(--teal);border-color:var(--teal);color:#fff}.rubtotal[_ngcontent-%COMP%]{display:flex;align-items:baseline;justify-content:space-between;margin-top:8px;font-size:11.5px;font-weight:800;color:var(--n700)}.rubtotal[_ngcontent-%COMP%] .v[_ngcontent-%COMP%]{font-family:JetBrains Mono,monospace;font-size:16px;color:var(--teal-ink)}.ruberr[_ngcontent-%COMP%]{font-size:10.5px;font-weight:700;color:var(--rose);margin-top:6px}.aisug[_ngcontent-%COMP%]{border:1.5px dashed #c6d4e4;background:#f6f9fc;border-radius:13px;padding:12px 14px}.aisug[_ngcontent-%COMP%] .tag[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:5px;font-size:9px;font-weight:900;letter-spacing:.07em;text-transform:uppercase;color:var(--navy);background:var(--navy-soft);border:1px solid #d3deea;padding:3px 9px;border-radius:999px}.aisug[_ngcontent-%COMP%] .sscore[_ngcontent-%COMP%]{font-family:JetBrains Mono,monospace;font-size:12px;color:var(--navy);margin-left:7px}.aisug[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{font-size:11.5px;font-weight:500;color:var(--n700);line-height:1.6;margin-top:8px}.aisug[_ngcontent-%COMP%] .row[_ngcontent-%COMP%]{display:flex;gap:6px;margin-top:10px;flex-wrap:wrap}.aisug[_ngcontent-%COMP%] .row[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{font-size:10.5px;font-weight:800;padding:6px 13px;border-radius:999px;cursor:pointer}.sug-acc[_ngcontent-%COMP%]{background:var(--teal);color:#fff;border:none}.sug-mod[_ngcontent-%COMP%]{background:var(--n0);color:var(--n700);border:1.5px solid var(--n300)}.sug-ign[_ngcontent-%COMP%]{background:none;border:none;color:var(--n400)}.aisug[_ngcontent-%COMP%] .state[_ngcontent-%COMP%]{font-size:10.5px;font-weight:800;color:var(--teal-ink);margin-top:8px;display:inline-flex;align-items:center;gap:5px}.grail[_ngcontent-%COMP%] textarea[_ngcontent-%COMP%], .gwork[_ngcontent-%COMP%] textarea[_ngcontent-%COMP%]{width:100%;min-height:92px;resize:vertical;padding:11px 13px;border-radius:12px;border:1.5px solid var(--n200);outline:none;font-size:12.5px;font-weight:500;line-height:1.6}.grail[_ngcontent-%COMP%] textarea[_ngcontent-%COMP%]:focus, .gwork[_ngcontent-%COMP%] textarea[_ngcontent-%COMP%]:focus{border-color:var(--teal)}.afchip[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:7px;margin-top:8px;font-size:11px;font-weight:800;padding:8px 14px;border-radius:999px;border:1.5px solid var(--n200);background:var(--n0);color:var(--n700);cursor:pointer}.afchip[_ngcontent-%COMP%]:hover{border-color:var(--teal);color:var(--teal-deep)}.afchip.rec[_ngcontent-%COMP%]{border-color:var(--rose);color:var(--rose);background:var(--rose-soft)}.afchip.done[_ngcontent-%COMP%]{border-color:#b9e6e6;background:var(--teal-mist);color:var(--teal-ink)}.gactions[_ngcontent-%COMP%]{display:grid;gap:7px;margin-top:4px}.gactions[_ngcontent-%COMP%] .btn[_ngcontent-%COMP%]{width:100%;justify-content:center;font-size:12.5px;padding:11px 18px}.pubbanner[_ngcontent-%COMP%]{display:flex;align-items:center;gap:9px;padding:11px 14px;border-radius:12px;background:var(--teal-mist);border:1px solid #b9e6e6;font-size:11.5px;font-weight:700;color:var(--teal-ink);margin-bottom:10px}.redochip[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:6px;font-size:10.5px;font-weight:800;color:var(--amber-deep);background:var(--amber-soft);border:1px solid #f0dcab;padding:6px 12px;border-radius:999px;margin-top:8px}.dispmsg[_ngcontent-%COMP%]{margin-top:14px;display:flex;gap:10px;padding:13px 15px;border-radius:13px;background:var(--warn-soft);border:1px solid #f0dcab}.dispmsg[_ngcontent-%COMP%] .av[_ngcontent-%COMP%]{width:30px;height:30px;border-radius:50%;background:var(--amber-soft);color:var(--amber-deep);display:grid;place-items:center;font-size:10.5px;font-weight:900;flex:none;border:1px solid #f0dcab}.dispmsg[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{font-size:12.5px;font-weight:500;color:var(--n700);font-style:italic;line-height:1.65}.aieval[_ngcontent-%COMP%]{margin-top:14px;border:1px solid #d3deea;background:#f6f9fc;border-radius:13px;padding:13px 15px}.decrow[_ngcontent-%COMP%]{display:flex;gap:7px;flex-wrap:wrap}.decbtn[_ngcontent-%COMP%]{font-size:11.5px;font-weight:800;padding:9px 15px;border-radius:999px;border:1.5px solid var(--n300);background:var(--n0);color:var(--n700);cursor:pointer}.decbtn.on[_ngcontent-%COMP%]{border-color:var(--teal);background:var(--teal-mist);color:var(--teal-ink)}.stepper[_ngcontent-%COMP%]{display:flex;align-items:center;gap:9px;margin-top:10px}.stepper[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{width:28px;height:28px;border-radius:50%;border:1.5px solid var(--n300);background:var(--n0);color:var(--n700);cursor:pointer;display:grid;place-items:center;padding:0}.stepper[_ngcontent-%COMP%] .v[_ngcontent-%COMP%]{font-family:JetBrains Mono,monospace;font-size:15px;color:var(--n900);min-width:64px;text-align:center}.devstrip[_ngcontent-%COMP%]{margin-top:22px;padding:10px 4px 0;border-top:1px dashed var(--n200);display:flex;flex-wrap:wrap;gap:6px;align-items:center;font-size:10px;font-weight:700;color:var(--n400)}.devstrip[_ngcontent-%COMP%] .dl[_ngcontent-%COMP%]{letter-spacing:.1em;text-transform:uppercase;margin-right:2px}.devstrip[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{font-size:10px;font-weight:700;padding:4px 10px;border-radius:999px;border:1px solid var(--n200);background:var(--n0);color:var(--n500);cursor:pointer}.devstrip[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:hover{border-color:var(--teal);color:var(--teal-deep)}.devstrip[_ngcontent-%COMP%] .sep[_ngcontent-%COMP%]{width:1px;height:14px;background:var(--n200);margin:0 4px}@media (prefers-reduced-motion: reduce){.confetti[_ngcontent-%COMP%]{display:none}.poly-a[_ngcontent-%COMP%], .rpt[_ngcontent-%COMP%], .unlock-toast[_ngcontent-%COMP%], .skrow[_ngcontent-%COMP%] .bar[_ngcontent-%COMP%] i[_ngcontent-%COMP%]{transition:none}}@media (max-width: 640px){.wrap[_ngcontent-%COMP%]{padding:0 10px 30px}.hwhead[_ngcontent-%COMP%]{gap:8px;padding:10px 12px}.qmap[_ngcontent-%COMP%]{flex-wrap:wrap;gap:7px;padding-bottom:2px}.mdot[_ngcontent-%COMP%]{width:22px;height:22px;font-size:8.5px;flex:none}[_nghost-%COMP%]{--stagey: auto}.qwrap[_ngcontent-%COMP%]{padding:18px 18px 22px;min-height:0}.prompt-panel[_ngcontent-%COMP%]{grid-template-columns:1fr}.prompt-visual[_ngcontent-%COMP%]{grid-row:1;border-left:0;border-bottom:1px solid var(--n100)}.prompt-visual[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{min-height:0;aspect-ratio:16/9}.review-grid[_ngcontent-%COMP%]{grid-template-columns:1fr}.review-visual[_ngcontent-%COMP%]{grid-row:1;position:static}.q-text[_ngcontent-%COMP%]{font-size:16px}
12.interst[_ngcontent-%COMP%], .review[_ngcontent-%COMP%], .queue[_ngcontent-%COMP%]{padding:28px 20px}.qfoot[_ngcontent-%COMP%]{flex-wrap:wrap}.gmain[_ngcontent-%COMP%]{padding:18px 16px}.intro-main[_ngcontent-%COMP%], .intro-side[_ngcontent-%COMP%]{padding:24px 20px}.pane[_ngcontent-%COMP%]{padding:20px 14px 26px}.skrow[_ngcontent-%COMP%]{gap:8px;padding:9px 10px}.skrow[_ngcontent-%COMP%] .bar[_ngcontent-%COMP%]{width:56px}.skrow[_ngcontent-%COMP%] .chips[_ngcontent-%COMP%] .mode[_ngcontent-%COMP%]{padding:3px 6px}.rail[_ngcontent-%COMP%]{padding:20px 14px;position:static}.tabs[_ngcontent-%COMP%]{padding:10px 8px 0}.tab[_ngcontent-%COMP%]{padding:9px 10px 11px;font-size:12px}.fbblock[_ngcontent-%COMP%]{padding:14px 12px}.fbblock[_ngcontent-%COMP%] .head[_ngcontent-%COMP%] b.t[_ngcontent-%COMP%]{flex-basis:100%}.qrow[_ngcontent-%COMP%] summary[_ngcontent-%COMP%]{gap:8px;padding:10px 11px}.qrow[_ngcontent-%COMP%] .body[_ngcontent-%COMP%]{padding:0 11px 12px}.errrow[_ngcontent-%COMP%]{padding:10px;gap:8px}.errrow[_ngcontent-%COMP%] .pair[_ngcontent-%COMP%], .errrow[_ngcontent-%COMP%] .why[_ngcontent-%COMP%]{flex-basis:100%}.subsc[_ngcontent-%COMP%]{grid-template-columns:1fr 1fr;gap:6px}.subsc[_ngcontent-%COMP%] .s[_ngcontent-%COMP%]{padding:8px 9px}.scorehead[_ngcontent-%COMP%] .big[_ngcontent-%COMP%]{font-size:22px}.radar-box[_ngcontent-%COMP%]{max-width:100%}.waitcard[_ngcontent-%COMP%]{padding:24px 12px 10px}}@media (max-width: 860px) and (min-width: 641px){.errrow[_ngcontent-%COMP%] .pair[_ngcontent-%COMP%], .fbblock[_ngcontent-%COMP%] .head[_ngcontent-%COMP%] b.t[_ngcontent-%COMP%]{flex-basis:100%}}.aisug[_ngcontent-%COMP%] .sugrow[_ngcontent-%COMP%]{display:flex;gap:6px;margin-top:10px;flex-wrap:wrap}.aisug[_ngcontent-%COMP%] .sugrow[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{font-size:10.5px;font-weight:800;padding:6px 13px;border-radius:999px;cursor:pointer}.revision-history[_ngcontent-%COMP%]{display:grid;gap:8px;margin-bottom:12px}.revision-history__item[_ngcontent-%COMP%]{display:flex;gap:10px;flex-wrap:wrap;align-items:center;padding:8px 10px;border:1px solid #d7ece8;background:#f4fbfa;color:#244540;font-size:12px}.integrity-panel[_ngcontent-%COMP%]{display:grid;gap:10px;padding:14px;margin:14px 0;border:1px solid var(--teal-soft, #d7ece8);border-radius:var(--r-sm, 8px);background:var(--teal-mist, #f4fbfa);overflow-wrap:anywhere}.integrity-panel[_ngcontent-%COMP%] h3[_ngcontent-%COMP%], .integrity-panel[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{margin:0}.integrity-actions[_ngcontent-%COMP%]{display:flex;gap:8px;flex-wrap:wrap}@media (max-width: 480px){.integrity-actions[_ngcontent-%COMP%] .btn[_ngcontent-%COMP%]{width:100%;justify-content:center}}.review-container[_ngcontent-%COMP%]{padding:24px;max-width:800px}.review-container[_ngcontent-%COMP%] .review-header[_ngcontent-%COMP%]{margin-bottom:28px}.review-container[_ngcontent-%COMP%] .review-header[_ngcontent-%COMP%] .btn-back[_ngcontent-%COMP%]{background:none;border:none;color:#6b7280;cursor:pointer;padding:0;margin-bottom:10px;font-size:14px;display:block}.review-container[_ngcontent-%COMP%] .review-header[_ngcontent-%COMP%] .btn-back[_ngcontent-%COMP%]:hover{color:#374151}.review-container[_ngcontent-%COMP%] .review-header[_ngcontent-%COMP%] .header-info[_ngcontent-%COMP%] .homework-context-title[_ngcontent-%COMP%]{margin:0 0 6px;color:#374151;font-size:15px;font-weight:700;line-height:1.4;overflow-wrap:anywhere}.review-container[_ngcontent-%COMP%] .review-header[_ngcontent-%COMP%] .header-info[_ngcontent-%COMP%] .header-title-row[_ngcontent-%COMP%]{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:4px}.review-container[_ngcontent-%COMP%] .review-header[_ngcontent-%COMP%] .header-info[_ngcontent-%COMP%] .header-title-row[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0;font-size:22px;font-weight:700;color:#111827}.review-container[_ngcontent-%COMP%] .review-header[_ngcontent-%COMP%] .header-info[_ngcontent-%COMP%] .submitted-at[_ngcontent-%COMP%]{font-size:13px;color:#6b7280;display:block}.review-container[_ngcontent-%COMP%] .review-header[_ngcontent-%COMP%] .header-info[_ngcontent-%COMP%] .published-at[_ngcontent-%COMP%]{font-size:13px;color:#059669;display:block;margin-top:2px}.review-container[_ngcontent-%COMP%] .status-badge[_ngcontent-%COMP%]{display:inline-flex;align-items:center;padding:3px 12px;border-radius:20px;font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.4px}.review-container[_ngcontent-%COMP%] .status-badge.badge-draft[_ngcontent-%COMP%]{background:#fef3c7;color:#92400e}.review-container[_ngcontent-%COMP%] .status-badge.badge-published[_ngcontent-%COMP%]{background:#d1fae5;color:#065f46}.review-container[_ngcontent-%COMP%] .loading-state[_ngcontent-%COMP%]{text-align:center;padding:60px;color:#6b7280;font-size:15px}.review-container[_ngcontent-%COMP%] .error-banner[_ngcontent-%COMP%]{background:#fee2e2;color:#991b1b;padding:12px 16px;border-radius:8px;margin-bottom:16px;font-size:14px}.review-container[_ngcontent-%COMP%] .success-state[_ngcontent-%COMP%]{display:flex;justify-content:center;padding:48px 0}.review-container[_ngcontent-%COMP%] .success-state[_ngcontent-%COMP%] .success-card[_ngcontent-%COMP%]{background:#fff;border:1px solid #e5e7eb;border-radius:16px;padding:48px 40px;text-align:center;max-width:400px;width:100%}.review-container[_ngcontent-%COMP%] .success-state[_ngcontent-%COMP%] .success-card[_ngcontent-%COMP%] .success-icon[_ngcontent-%COMP%]{width:56px;height:56px;background:#29e4e4;color:#fff;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:24px;font-weight:700;margin:0 auto 20px}.review-container[_ngcontent-%COMP%] .success-state[_ngcontent-%COMP%] .success-card[_ngcontent-%COMP%] h3[_ngcontent-%COMP%]{margin:0 0 8px;font-size:20px;font-weight:700;color:#111827}.review-container[_ngcontent-%COMP%] .success-state[_ngcontent-%COMP%] .success-card[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{color:#6b7280;font-size:14px;margin:0 0 24px}.review-container[_ngcontent-%COMP%] .success-state[_ngcontent-%COMP%] .success-card[_ngcontent-%COMP%] .btn-back-link[_ngcontent-%COMP%]{background:#29e4e4;color:#0f172a;border:none;border-radius:8px;padding:10px 24px;font-size:14px;font-weight:600;cursor:pointer}.review-container[_ngcontent-%COMP%] .success-state[_ngcontent-%COMP%] .success-card[_ngcontent-%COMP%] .btn-back-link[_ngcontent-%COMP%]:hover{background:#22d3d3}.review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:16px}.review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .question-card[_ngcontent-%COMP%]{border-radius:12px;border:1px solid #e5e7eb;overflow:hidden}.review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .question-card.auto-graded[_ngcontent-%COMP%]{background:#f0fdf4;border-color:#bbf7d0}.review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .question-card.manual-review[_ngcontent-%COMP%]{background:#fff;border-color:#e5e7eb}.review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .question-card[_ngcontent-%COMP%] .card-header[_ngcontent-%COMP%]{display:flex;align-items:center;gap:10px;padding:12px 16px;border-bottom:1px solid #e5e7eb;background:#00000005}.review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .question-card[_ngcontent-%COMP%] .card-header[_ngcontent-%COMP%] .q-number[_ngcontent-%COMP%]{font-weight:700;font-size:13px;color:#374151}.review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .question-card[_ngcontent-%COMP%] .card-header[_ngcontent-%COMP%] .q-type-badge[_ngcontent-%COMP%]{padding:3px 10px;border-radius:20px;font-size:11px;font-weight:600;text-transform:uppercase;background:#dcfce7;color:#166534}.review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .question-card[_ngcontent-%COMP%] .card-header[_ngcontent-%COMP%] .q-type-badge.badge-amber[_ngcontent-%COMP%]{background:#fef3c7;color:#92400e}.review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .question-card[_ngcontent-%COMP%] .card-header[_ngcontent-%COMP%] .q-type-label[_ngcontent-%COMP%]{font-size:12px;color:#9ca3af;text-transform:uppercase;letter-spacing:.5px}.review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .question-card[_ngcontent-%COMP%] .card-header[_ngcontent-%COMP%] .q-points[_ngcontent-%COMP%]{margin-left:auto;font-size:12px;font-weight:600;color:#4b5563}.review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .question-card[_ngcontent-%COMP%] .question-text[_ngcontent-%COMP%]{padding:14px 16px 6px;font-size:15px;font-weight:600;color:#111827;margin:0}.review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .question-card[_ngcontent-%COMP%] .question-text[_ngcontent-%COMP%] [_ngcontent-%COMP%]:where(p, ol[_ngcontent-%COMP%], ul)[_ngcontent-%COMP%]{margin:0 0 8px}.review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .question-card[_ngcontent-%COMP%] .question-text[_ngcontent-%COMP%] [_ngcontent-%COMP%]:where(ol, ul)[_ngcontent-%COMP%]{padding-left:22px}.review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .question-card[_ngcontent-%COMP%] .question-text[_ngcontent-%COMP%] [_ngcontent-%COMP%]:where(li){margin:3px 0}.review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .question-card[_ngcontent-%COMP%] .question-text[_ngcontent-%COMP%] [_ngcontent-%COMP%]:where(p:last-child, ol[_ngcontent-%COMP%]:last-child, ul[_ngcontent-%COMP%]:last-child){margin-bottom:0}.review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .question-card[_ngcontent-%COMP%] .question-context[_ngcontent-%COMP%]{margin:8px 16px;padding:10px 12px;border-radius:8px;background:#f9fafb;color:#4b5563;font-size:13px;line-height:1.5}.review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .question-card[_ngcontent-%COMP%] .question-context[_ngcontent-%COMP%] [_ngcontent-%COMP%]:where(p, ol[_ngcontent-%COMP%], ul)[_ngcontent-%COMP%]{margin:0 0 8px}.review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .question-card[_ngcontent-%COMP%] .question-context[_ngcontent-%COMP%] [_ngcontent-%COMP%]:where(ol, ul)[_ngcontent-%COMP%]{padding-left:22px}.review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .question-card[_ngcontent-%COMP%] .question-context[_ngcontent-%COMP%] [_ngcontent-%COMP%]:where(li){margin:3px 0}.review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .question-card[_ngcontent-%COMP%] .question-context[_ngcontent-%COMP%] [_ngcontent-%COMP%]:where(p:last-child, ol[_ngcontent-%COMP%]:last-child, ul[_ngcontent-%COMP%]:last-child){margin-bottom:0}.review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .question-card[_ngcontent-%COMP%] .question-media[_ngcontent-%COMP%], .review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .question-card[_ngcontent-%COMP%] .question-media-image[_ngcontent-%COMP%]{margin:8px 16px}.review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .question-card[_ngcontent-%COMP%] .question-media[_ngcontent-%COMP%]{display:grid;gap:8px}.review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .question-card[_ngcontent-%COMP%] .question-media[_ngcontent-%COMP%] img[_ngcontent-%COMP%], .review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .question-card[_ngcontent-%COMP%] .question-media[_ngcontent-%COMP%] video[_ngcontent-%COMP%], .review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .question-card[_ngcontent-%COMP%] .question-media[_ngcontent-%COMP%] iframe[_ngcontent-%COMP%]{width:100%;max-height:300px;border:1px solid #e5e7eb;border-radius:10px;background:#111827}.review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .question-card[_ngcontent-%COMP%] .question-media[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{max-width:320px;object-fit:cover;background:transparent}.review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .question-card[_ngcontent-%COMP%] .question-media[_ngcontent-%COMP%] iframe[_ngcontent-%COMP%]{aspect-ratio:16/9;height:auto}.review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .question-card[_ngcontent-%COMP%] .question-media-image[_ngcontent-%COMP%]{max-width:320px;border-radius:10px;border:1px solid #e5e7eb}.review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .question-card[_ngcontent-%COMP%] .student-answer-block[_ngcontent-%COMP%]{padding:10px 16px 14px}.review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .question-card[_ngcontent-%COMP%] .student-answer-block[_ngcontent-%COMP%] .answer-label[_ngcontent-%COMP%]{display:block;font-size:12px;font-weight:600;color:#6b7280;text-transform:uppercase;letter-spacing:.5px;margin-bottom:8px}.review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .question-card[_ngcontent-%COMP%] .student-answer-block[_ngcontent-%COMP%] .answer-text[_ngcontent-%COMP%]{width:100%;border:1px solid #d1d5db;border-radius:8px;padding:10px 12px;font-size:14px;color:#374151;background:#f9fafb;resize:vertical;box-sizing:border-box;font-family:inherit}.review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .question-card[_ngcontent-%COMP%] .student-answer-block[_ngcontent-%COMP%] .audio-player[_ngcontent-%COMP%]{width:100%;border-radius:8px}.review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .question-card[_ngcontent-%COMP%] .student-answer-block[_ngcontent-%COMP%] .no-answer[_ngcontent-%COMP%]{color:#9ca3af;font-style:italic;font-size:14px;margin:0}.review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .question-card[_ngcontent-%COMP%] .student-answer-block[_ngcontent-%COMP%] .auto-answer-display[_ngcontent-%COMP%]{display:flex;align-items:center;gap:12px}.review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .question-card[_ngcontent-%COMP%] .student-answer-block[_ngcontent-%COMP%] .auto-answer-display[_ngcontent-%COMP%] .auto-answer-text[_ngcontent-%COMP%]{font-size:14px;color:#374151}.review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .question-card[_ngcontent-%COMP%] .student-answer-block[_ngcontent-%COMP%] .auto-answer-display[_ngcontent-%COMP%] .correctness-badge[_ngcontent-%COMP%]{padding:3px 10px;border-radius:20px;font-size:12px;font-weight:600}.review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .question-card[_ngcontent-%COMP%] .student-answer-block[_ngcontent-%COMP%] .auto-answer-display[_ngcontent-%COMP%] .correctness-badge.correct[_ng
12content-%COMP%]{background:#dcfce7;color:#166534}.review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .question-card[_ngcontent-%COMP%] .student-answer-block[_ngcontent-%COMP%] .auto-answer-display[_ngcontent-%COMP%] .correctness-badge.incorrect[_ngcontent-%COMP%]{background:#fee2e2;color:#991b1b}.review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .question-card[_ngcontent-%COMP%] .student-answer-block[_ngcontent-%COMP%] .ai-feedback[_ngcontent-%COMP%]{font-size:13px;color:#6b7280;margin:8px 0 0}.review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .question-card[_ngcontent-%COMP%] .ai-panel-wrapper[_ngcontent-%COMP%]{padding:0 16px 12px}.review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .question-card[_ngcontent-%COMP%] .audio-recorder-wrapper[_ngcontent-%COMP%]{margin-top:12px}.review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .question-card[_ngcontent-%COMP%] .audio-recorder-wrapper[_ngcontent-%COMP%] .feedback-label[_ngcontent-%COMP%]{display:block;font-size:13px;font-weight:600;color:#374151;margin-bottom:6px}.review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .question-card[_ngcontent-%COMP%] .grading-block[_ngcontent-%COMP%]{padding:10px 16px 16px;border-top:1px solid #e5e7eb}.review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .question-card[_ngcontent-%COMP%] .grading-block[_ngcontent-%COMP%] .auto-score-display[_ngcontent-%COMP%]{display:flex;align-items:center;gap:10px;flex-wrap:wrap;font-size:14px;color:#374151}.review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .question-card[_ngcontent-%COMP%] .grading-block[_ngcontent-%COMP%] .auto-score-display[_ngcontent-%COMP%] .override-label[_ngcontent-%COMP%]{color:#6b7280;font-size:13px}.review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .question-card[_ngcontent-%COMP%] .grading-block[_ngcontent-%COMP%] .manual-score-row[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px;margin-bottom:12px}.review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .question-card[_ngcontent-%COMP%] .grading-block[_ngcontent-%COMP%] .manual-score-row[_ngcontent-%COMP%] .score-label[_ngcontent-%COMP%]{font-size:13px;font-weight:600;color:#374151}.review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .question-card[_ngcontent-%COMP%] .grading-block[_ngcontent-%COMP%] .manual-score-row[_ngcontent-%COMP%] .error-hint[_ngcontent-%COMP%]{font-size:12px;color:#dc2626}.review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .question-card[_ngcontent-%COMP%] .grading-block[_ngcontent-%COMP%] .score-input[_ngcontent-%COMP%]{width:72px;padding:6px 10px;border:1px solid #d1d5db;border-radius:6px;font-size:14px;text-align:center;color:#111827;outline:none}.review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .question-card[_ngcontent-%COMP%] .grading-block[_ngcontent-%COMP%] .score-input[_ngcontent-%COMP%]:focus{border-color:#29e4e4;box-shadow:0 0 0 2px #29e4e433}.review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .question-card[_ngcontent-%COMP%] .grading-block[_ngcontent-%COMP%] .score-input.input-error[_ngcontent-%COMP%]{border-color:#dc2626;background:#fef2f2}.review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .question-card[_ngcontent-%COMP%] .grading-block[_ngcontent-%COMP%] .score-max[_ngcontent-%COMP%]{font-size:14px;color:#6b7280}.review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .question-card[_ngcontent-%COMP%] .grading-block[_ngcontent-%COMP%] .feedback-row[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:6px}.review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .question-card[_ngcontent-%COMP%] .grading-block[_ngcontent-%COMP%] .feedback-row[_ngcontent-%COMP%] .feedback-label[_ngcontent-%COMP%]{font-size:13px;font-weight:600;color:#374151}.review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .question-card[_ngcontent-%COMP%] .grading-block[_ngcontent-%COMP%] .feedback-row[_ngcontent-%COMP%] .feedback-textarea[_ngcontent-%COMP%]{width:100%;border:1px solid #d1d5db;border-radius:8px;padding:10px 12px;font-size:14px;color:#374151;resize:vertical;box-sizing:border-box;font-family:inherit;outline:none}.review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .question-card[_ngcontent-%COMP%] .grading-block[_ngcontent-%COMP%] .feedback-row[_ngcontent-%COMP%] .feedback-textarea[_ngcontent-%COMP%]:focus{border-color:#29e4e4;box-shadow:0 0 0 2px #29e4e433}.review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .mistakes-panel[_ngcontent-%COMP%]{border:1px solid #e5e7eb;border-radius:12px;overflow:hidden;background:#fff}.review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .mistakes-panel__toggle[_ngcontent-%COMP%]{width:100%;display:flex;align-items:center;justify-content:space-between;padding:14px 16px;background:none;border:none;cursor:pointer;text-align:left}.review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .mistakes-panel__toggle[_ngcontent-%COMP%]:hover{background:#f9fafb}.review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .mistakes-panel__title[_ngcontent-%COMP%]{font-size:14px;font-weight:700;color:#111827}.review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .mistakes-panel__chevron[_ngcontent-%COMP%]{font-size:20px;color:#6b7280;transform:rotate(90deg);transition:transform .2s ease;line-height:1}.review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .mistakes-panel__chevron.open[_ngcontent-%COMP%]{transform:rotate(-90deg)}.review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .mistakes-panel__body[_ngcontent-%COMP%]{border-top:1px solid #e5e7eb;padding:16px}.review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .mistakes-panel__empty[_ngcontent-%COMP%]{margin:0;color:#6b7280;font-size:14px;font-style:italic}.review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .mistakes-panel__error[_ngcontent-%COMP%]{margin:0;color:#991b1b;font-size:13px;background:#fee2e2;padding:10px 12px;border-radius:8px}@keyframes _ngcontent-%COMP%_shimmer{0%{background-position:-400px 0}to{background-position:400px 0}}.review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .skeleton-line[_ngcontent-%COMP%]{background:linear-gradient(90deg,#e5e7eb 25%,#f3f4f6,#e5e7eb 75%);background-size:800px 100%;animation:_ngcontent-%COMP%_shimmer 1.5s infinite linear;border-radius:6px;display:block}.review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .mistakes-shimmer[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:12px}.review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .mistakes-shimmer__row[_ngcontent-%COMP%]{display:flex;align-items:flex-start;gap:12px}.review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .mistakes-shimmer__lines[_ngcontent-%COMP%]{flex:1}.review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .mistakes-list[_ngcontent-%COMP%]{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:12px}.review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .mistake-row[_ngcontent-%COMP%]{border:1px solid #e5e7eb;border-radius:10px;padding:12px 14px;display:flex;flex-direction:column;gap:6px}.review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .mistake-row__meta[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .mistake-row__subcategory[_ngcontent-%COMP%]{font-size:12px;color:#9ca3af}.review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .mistake-row__correction[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:14px}.review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .mistake-row__original[_ngcontent-%COMP%]{color:#991b1b;text-decoration:line-through}.review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .mistake-row__arrow[_ngcontent-%COMP%]{color:#6b7280;flex-shrink:0}.review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .mistake-row__corrected[_ngcontent-%COMP%]{color:#065f46;font-weight:600}.review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .mistake-row__explanation[_ngcontent-%COMP%]{margin:0;font-size:13px;color:#6b7280;line-height:1.5}@media (max-width: 768px){.review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .mistake-row__correction[_ngcontent-%COMP%]{flex-direction:column;align-items:flex-start;gap:4px}}.review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .skill-chip[_ngcontent-%COMP%]{display:inline-flex;align-items:center;padding:2px 10px;border-radius:20px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.4px;background:#ccfbf1;color:#0f766e;flex-shrink:0}.review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .mistake-row--rejected[_ngcontent-%COMP%]{opacity:.62;background:#fafafa}.review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .vet-status[_ngcontent-%COMP%]{display:inline-flex;align-items:center;padding:2px 9px;border-radius:20px;font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.4px}.review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .vet-status--accepted[_ngcontent-%COMP%]{background:#dcfce7;color:#166534}.review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .vet-status--edited[_ngcontent-%COMP%]{background:#ede9fe;color:#6d28d9}.review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .vet-status--rejected[_ngcontent-%COMP%]{background:#fee2e2;color:#991b1b}.review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .vet-field[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .vet-field__label[_ngcontent-%COMP%]{font-size:12px;font-weight:600;color:#4b5563;min-width:66px}.review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .severity-chips[_ngcontent-%COMP%]{display:inline-flex;gap:6px;flex-wrap:wrap}.review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .severity-chip[_ngcontent-%COMP%]{padding:4px 12px;border-radius:20px;font-size:11.5px;font-weight:600;border:1px solid #d1d5db;background:#fff;color:#6b7280;cursor:pointer;transition:border-color .15s,background .15s,color .15s}.review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .severity-chip[_ngcontent-%COMP%]:hover{border-color:#9ca3af}.review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .severity-chip.active[_ngcontent-%COMP%]{color:#fff;border-color:transparent}.review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .severity-chip--minor.active[_ngcontent-%COMP%]{background:#3b82f6}.review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .severity-chip--moderate.active[_ngcontent-%COMP%]{background:#f59e0b}.review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .severity-chip--major.active[_ngcontent-%COMP%]{background:#dc2626}.review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .category-input[_ngcontent-%COMP%]{flex:1;min-width:140px;border:1px solid #d1d5db;border-radius:8px;padding:6px 10px;font-size:12.5px;color:#374151;font-family:inherit;outline:none}.review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .category-input[_ngcontent-%COMP%]:focus{border-color:#29e4e4;box-shadow:0 0 0 2px #29e4e433}.review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .vet-toolbar[_ngcontent-%COMP%]{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:2px;padding-top:8px;border-top:1px dashed #e5e7eb}.review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .vet-btn[_ngcontent-%COMP%]{padding:6px 14px;border-radius:8px;font-size:12.5px;font-weight:600;cursor:pointer;border:1px solid transparent;transition:background .15s,border-color .15s,color .15s}.review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .vet-btn--accept[_ngcontent-%COMP%]{background:#ecfdf5;color:#047857;border-color:#a7f3d0}.review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .vet-btn--accept[_ngcontent-%COMP%]:hover{background:#d1fae5}.review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .vet-btn--accept.active[_ngcontent-%COMP%]{background:#059669;color:#fff;border-color:transparent}.review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .vet-btn--reject[_ngcontent-%COMP%]{background:#fff;color:#b91c1c;border-color:#fecaca}.review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .vet-btn--reject[_ngcontent-%COMP%]:hover{background:#fef2f2}.review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .vet-btn--reject.active[_ngcontent-%COMP%]{background:#dc2626;color:#fff;border-color:transparent}.review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .flashcard-toggle[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:6px;margin-left:auto;font-size:12.5px;font-weight:600;color:#6d28d9;cursor:pointer;-webkit-user-select:none;user-select:none}.review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .flashcard-toggle[_ngcontent-%COMP%] input[_ngcontent-%COMP%]{accent-color:#7c3aed;width:15px;height:15px;cursor:pointer}.review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .flashcard-toggle.disabled[_ngcontent-%COMP%]{color:#9ca3af;cursor:not-allowed}.review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .flashcard-toggle.disabled[_ngcontent-%COMP%] input[_ngcontent-%COMP%]{cursor:not-allowed}@media (max-width: 480px){.review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .flashcard-toggle[_ngcontent-%COMP%]{margin-left:0;width:100%}}.review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .revision-requested-banner[_ngcontent-%COMP%]{font-size:13px;color:#92400e;background:#fef3c7;border:1px solid #fde68a;border-radius:8px;padding:10px 12px;width:100%}.review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .btn-request-revision[_ngcontent-%COMP%]{background:transparent;color:#b45309;border:2px solid #fde68a;border-radius:8px;padding:11px 24px;font-size:14px;font-weight:600;cursor:pointer;transition:border-color .15s,background .15s,color .15s}.review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .btn-request-revision[_ngcontent-%COMP%]:hover:not(:disabled){background:#fffbeb;border-color:#fcd34d}.review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .btn-request-revision[_ngcontent-%COMP%]:disabled{opacity:.5;cursor:not-allowed}.review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .overall-feedback-card[_ngcontent-%COMP%]{background:#fff;border:1px solid #e5e7eb;border-radius:12px;padding:16px;display:flex;flex-direction:column;gap:8px}.review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .overall-feedback-card[_ngcontent-%COMP%] .overall-label[_ngcontent-%COMP%]{font-size:14px;font-weight:700;color:#374151}.review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .overall-feedback-card[_ngcontent-%COMP%] .overall-textarea[_ngcontent-%COMP%]{width:100%;border:1px solid #d1d5db;border-radius:8px;padding:10px 12px;font-size:14px;color:#374151
12;resize:vertical;box-sizing:border-box;font-family:inherit;outline:none}.review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .overall-feedback-card[_ngcontent-%COMP%] .overall-textarea[_ngcontent-%COMP%]:focus{border-color:#29e4e4;box-shadow:0 0 0 2px #29e4e433}.review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .overall-feedback-card[_ngcontent-%COMP%] .audio-recorder-wrapper[_ngcontent-%COMP%]{margin-top:4px}.review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .overall-feedback-card[_ngcontent-%COMP%] .audio-recorder-wrapper[_ngcontent-%COMP%] .feedback-label[_ngcontent-%COMP%]{display:block;font-size:13px;font-weight:600;color:#374151;margin-bottom:6px}.review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .action-row[_ngcontent-%COMP%]{display:flex;flex-direction:column;align-items:flex-start;gap:12px;padding-bottom:24px}.review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .action-row[_ngcontent-%COMP%] .validation-error[_ngcontent-%COMP%], .review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .action-row[_ngcontent-%COMP%] .api-error[_ngcontent-%COMP%]{font-size:13px;color:#dc2626}.review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .action-row[_ngcontent-%COMP%] .grading-actions[_ngcontent-%COMP%]{display:flex;flex-direction:row;gap:12px;flex-wrap:wrap;align-self:flex-end}@media (max-width: 480px){.review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .action-row[_ngcontent-%COMP%] .grading-actions[_ngcontent-%COMP%]{flex-direction:column;align-self:stretch}.review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .action-row[_ngcontent-%COMP%] .grading-actions[_ngcontent-%COMP%] .btn-draft[_ngcontent-%COMP%], .review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .action-row[_ngcontent-%COMP%] .grading-actions[_ngcontent-%COMP%] .btn-publish[_ngcontent-%COMP%], .review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .action-row[_ngcontent-%COMP%] .grading-actions[_ngcontent-%COMP%] .btn-request-revision[_ngcontent-%COMP%]{width:100%;justify-content:center}}.review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .action-row[_ngcontent-%COMP%] .btn-draft[_ngcontent-%COMP%]{background:transparent;color:#374151;border:2px solid #d1d5db;border-radius:8px;padding:11px 28px;font-size:15px;font-weight:600;cursor:pointer;transition:border-color .15s,color .15s}.review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .action-row[_ngcontent-%COMP%] .btn-draft[_ngcontent-%COMP%]:hover:not(:disabled){border-color:#9ca3af;color:#111827}.review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .action-row[_ngcontent-%COMP%] .btn-draft[_ngcontent-%COMP%]:disabled{opacity:.5;cursor:not-allowed}.review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .action-row[_ngcontent-%COMP%] .btn-publish[_ngcontent-%COMP%]{background:#29e4e4;color:#0f172a;border:none;border-radius:8px;padding:12px 32px;font-size:15px;font-weight:700;cursor:pointer;transition:background .15s}.review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .action-row[_ngcontent-%COMP%] .btn-publish[_ngcontent-%COMP%]:hover:not(:disabled){background:#22d3d3}.review-container[_ngcontent-%COMP%] .questions-section[_ngcontent-%COMP%] .action-row[_ngcontent-%COMP%] .btn-publish[_ngcontent-%COMP%]:disabled{opacity:.5;cursor:not-allowed}.qg--parts[_ngcontent-%COMP%]{flex-wrap:wrap;gap:10px}.qg--parts[_ngcontent-%COMP%] .pgroup[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:4px}.qg--parts[_ngcontent-%COMP%] .mdot.fallback[_ngcontent-%COMP%]{border-color:#f59e0b;box-shadow:inset 0 0 0 1px #f59e0b}.discussion-panel-toggle-row[_ngcontent-%COMP%]{max-width:800px;padding:0 24px;margin-top:-8px;margin-bottom:16px}.btn-discussion-toggle[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:8px;background:#fff;border:1px solid #e5e7eb;border-radius:8px;padding:8px 16px;font-size:13px;font-weight:600;color:#374151;cursor:pointer}.btn-discussion-toggle[_ngcontent-%COMP%]:hover{border-color:#9ca3af}.discussion-badge[_ngcontent-%COMP%]{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 5px;border-radius:999px;background:#f59e0b;color:#fff;font-size:11px;font-weight:700}app-discussion-topics-drawer[_ngcontent-%COMP%]{display:block;max-width:800px;margin:0 24px 24px}.revision-dialog-overlay[_ngcontent-%COMP%]{position:fixed;inset:0;background:#1118278c;display:flex;align-items:flex-start;justify-content:center;padding:40px 16px;overflow-y:auto;z-index:1000}.revision-dialog[_ngcontent-%COMP%]{background:#fff;border-radius:16px;width:100%;max-width:560px;padding:24px;box-shadow:0 20px 50px #11182740;
12display:flex;flex-direction:column;gap:18px}.revision-dialog__header[_ngcontent-%COMP%]{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.revision-dialog__header[_ngcontent-%COMP%] h3[_ngcontent-%COMP%]{margin:0;font-size:18px;font-weight:700;color:#111827}.revision-dialog__subtitle[_ngcontent-%COMP%]{margin:4px 0 0;font-size:13px;color:#6b7280}.revision-dialog__close[_ngcontent-%COMP%]{background:none;border:none;color:#6b7280;cursor:pointer;padding:4px;line-height:0;border-radius:6px}.revision-dialog__close[_ngcontent-%COMP%]:hover{background:#f3f4f6;color:#111827}.revision-dialog__block[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:6px}.revision-dialog__label[_ngcontent-%COMP%]{font-size:13.5px;font-weight:700;color:#374151}.revision-dialog__hint[_ngcontent-%COMP%]{margin:0;font-size:12.5px;color:#6b7280}.revision-dialog__select[_ngcontent-%COMP%], .revision-dialog__input[_ngcontent-%COMP%], .revision-dialog__textarea[_ngcontent-%COMP%]{width:100%;box-sizing:border-box;border:1px solid #d1d5db;border-radius:8px;padding:9px 11px;font-size:14px;font-family:inherit;color:#111827;outline:none}.revision-dialog__select[_ngcontent-%COMP%]:focus, .revision-dialog__input[_ngcontent-%COMP%]:focus, .revision-dialog__textarea[_ngcontent-%COMP%]:focus{border-color:#29e4e4;box-shadow:0 0 0 2px #29e4e433}.revision-dialog__textarea[_ngcontent-%COMP%]{resize:vertical;min-height:70px}.revision-dialog__textarea--note[_ngcontent-%COMP%]{min-height:50px}.revision-dialog__meta-row[_ngcontent-%COMP%]{display:flex;align-items:baseline;justify-content:space-between;gap:10px}.revision-dialog__count[_ngcontent-%COMP%]{font-size:11.5px;color:#9ca3af;white-space:nowrap}.revision-dialog__toggle[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px;font-size:13.5px;font-weight:600;color:#374151;cursor:pointer}.revision-dialog__toggle[_ngcontent-%COMP%] input[_ngcontent-%COMP%]{accent-color:#29E4E4;width:15px;height:15px;cursor:pointer}.revision-dialog__error[_ngcontent-%COMP%]{margin:0;font-size:12.5px;color:#dc2626}.revision-dialog__footer-note[_ngcontent-%COMP%]{margin:4px 0 0;font-size:12.5px;font-weight:600;color:#0f766e}.revision-dialog__confirm-line[_ngcontent-%COMP%]{margin:0;font-size:14px;color:#374151;line-height:1.5}.revision-dialog__footer-row[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:flex-end;gap:10px;flex-wrap:wrap;margin-top:4px}.revision-dialog__footer-row[_ngcontent-%COMP%] .revision-dialog__error[_ngcontent-%COMP%]{margin-right:auto}.revision-dialog__cancel[_ngcontent-%COMP%], .revision-dialog__continue[_ngcontent-%COMP%]{border-radius:8px;padding:10px 20px;font-size:14px;font-weight:600;cursor:pointer;transition:border-color .15s,background .15s,color .15s,opacity .15s}.revision-dialog__cancel[_ngcontent-%COMP%]{background:transparent;border:2px solid #d1d5db;color:#374151}.revision-dialog__cancel[_ngcontent-%COMP%]:hover:not(:disabled){border-color:#9ca3af;color:#111827}.revision-dialog__continue[_ngcontent-%COMP%]{background:#0f766e;border:2px solid #0f766e;color:#fff}.revision-dialog__continue[_ngcontent-%COMP%]:hover:not(:disabled){background:#0d5f58;border-color:#0d5f58}.revision-dialog__continue[_ngcontent-%COMP%]:disabled{opacity:.5;cursor:not-allowed}.revision-scope-group[_ngcontent-%COMP%]{border:1px solid #e5e7eb;border-radius:10px;padding:10px 12px;margin-bottom:8px}.revision-scope-group__header[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;font-size:12.5px;font-weight:700;color:#374151;text-transform:uppercase;letter-spacing:.02em;margin-bottom:6px}.revision-scope-group__select-all[_ngcontent-%COMP%]{background:none;border:none;color:#0f766e;font-size:12px;font-weight:700;text-transform:none;letter-spacing:normal;cursor:pointer;padding:0}.revision-scope-group__select-all[_ngcontent-%COMP%]:hover{text-decoration:underline}.revision-scope-group__disabled[_ngcontent-%COMP%]{display:flex;align-items:baseline;justify-content:space-between;gap:10px;font-size:13px;color:#9ca3af}.revision-scope-group__reason[_ngcontent-%COMP%]{font-size:12px;font-style:italic}.revision-scope-item[_ngcontent-%COMP%]{display:flex;align-items:center;gap:10px;padding:6px 0;font-size:13.5px;color:#374151;cursor:pointer}.revision-scope-item[_ngcontent-%COMP%] input[_ngcontent-%COMP%]{accent-color:#29E4E4;width:16px;height:16px;cursor:pointer;flex-shrink:0}.revision-scope-item__label[_ngcontent-%COMP%]{flex:1}.revision-scope-item__mark[_ngcontent-%COMP%]{font-size:12px;font-weight:600;color:#6b7280;white-space:nowrap}']})}}return t})();function rb(t,c){t&1&&(a(0,"div",24),s(1,"Loading billing plans..."),r())}function ab(t,c){t&1&&(a(0,"span",38),s(1,"Approved"),r())}
12function sb(t,c){if(t&1){let e=M();a(0,"button",39),x("click",function(){C(e);let i=d().$implicit,l=d(3);return f(l.approvePlan(i))}),s(1,"Approve"),r()}}function lb(t,c){if(t&1){let e=M();a(0,"tr")(1,"td",30),s(2),r(),a(3,"td")(4,"span",31),s(5),r()(),a(6,"td"),s(7),r(),a(8,"td",32),s(9),r(),a(10,"td",33),s(11),r(),a(12,"td")(13,"span",34),s(14),r()(),a(15,"td"),h(16,ab,2,0,"span",35)(17,sb,2,0,"button",36),r(),a(18,"td")(19,"button",37),x("click",function(){let i=C(e).$implicit,l=d(3);return f(l.viewStudentBilling(i))}),s(20,"View"),r()()()}if(t&2){let e=c.$implicit,n=d(3);y("flagged",!e.adminReviewed),o(2),g(e.studentName||e.studentEmail),o(2),p("ngClass",n.getPricingBadgeClass(e.pricingType)),o(),g(e.pricingType),o(2),g(e.paymentPlan),o(2),g(n.formatCurrency(e.totalPaid,e.currency)),o(2),g(n.formatCurrency(e.remainingBalance,e.currency)),o(2),p("ngClass","status-"+e.status),o(),g(e.status),o(2),p("ngIf",e.adminReviewed),o(),p("ngIf",!e.adminReviewed)}}function cb(t,c){if(t&1&&(a(0,"table",28)(1,"thead")(2,"tr")(3,"th"),s(4,"Student"),r(),a(5,"th"),s(6,"Type"),r(),a(7,"th"),s(8,"Plan"),r(),a(9,"th"),s(10,"Paid"),r(),a(11,"th"),s(12,"Owed"),r(),a(13,"th"),s(14,"Status"),r(),a(15,"th"),s(16,"Review"),r(),a(17,"th"),s(18,"Actions"),r()()(),a(19,"tbody"),h(20,lb,21,12,"tr",29),r()()),t&2){let e=d(2);o(20),p("ngForOf",e.plans)}}function db(t,c){t&1&&(a(0,"div",40),s(1,' No billing plans found. Click "Auto-Generate Plans" to create billing plans for enrolled students. '),r())}function pb(t,c){if(t&1&&(a(0,"div",25),h(1,cb,21,1,"table",26)(2,db,2,0,"div",27),r()),t&2){let e=d();o(),p("ngIf",e.plans.length>0),o(),p("ngIf",e.plans.length===0)}}var ma=(()=>{class t{constructor(e,n,i,l){this.route=e,this.router=n,this.billingService=i,this.navigationHistory=l,this.plans=[],this.loading=!0,this.generating=!1,this.bulkApproving=!1,this.totalStudents=0,this.pendingReview=0,this.overdueCount=0,this.totalCollected=0,this.totalExpected=0,this.filterStatus="",this.filterPricingType=""}ngOnInit(){this.batchId=this.route.snapshot.paramMap.get("batchId")||"",this.loadPlans()}loadPlans(){this.loading=!0;let e={batchId:this.batchId};this.filterStatus&&(e.status=this.filterStatus),this.filterPricingType&&(e.pricingType=this.filterPricingType),this.billingService.adminListPlans(e).subscribe({next:n=>{n?.success&&(this.plans=n.data||[],this.calculateStats()),this.loading=!1},error:()=>{this.loading=!1}})}calculateStats(){this.totalStudents=this.plans.length,this.pendingReview=this.plans.filter(e=>!e.adminReviewed).length,this.overdueCount=this.plans.filter(e=>e.installments?.some(n=>n.status==="overdue"||n.status==="pending"&&n.dueDate&&new Date(n.dueDate)<new Date)).length,this.totalCollected=this.plans.reduce((e,n)=>e+(n.totalPaid||0),0),this.totalExpected=this.plans.reduce((e,n)=>e+(n.discountedTotal||0),0)}generatePlans(){this.generating=!0,this.billingService.adminGeneratePlans(this.batchId).subscribe({next:e=>{this.generating=!1,e?.success&&this.loadPlans()},error:()=>{this.generating=!1}})}bulkApprove(){this.bulkApproving=!0,this.billingService.adminBulkReview(this.batchId).subscribe({next:e=>{this.bulkApproving=!1,e?.success&&this.loadPlans()},error:()=>{this.bulkApproving=!1}})}approvePlan(e){this.billingService.adminReviewPlan(this.batchId,e.studentId).subscribe({next:()=>{this.loadPlans()}})}viewStudentBilling(e){this.router.navigate(["/main/dashboard/cohorts/batches",this.batchId,"payments","students",e.studentId])}getPricingBadgeClass(e){switch(e){case"egyptian":return"badge-egyptian";case"international":return"badge-intl";case"custom":return"badge-custom";default:return""}}formatCurrency(e,n){return n==="EGP"?`${e?.toLocaleString()||0} L.E`:`$${e?.toLocaleString()||0} CAD`}getCollectedPercent(){return this.totalExpected?Math.round(this.totalCollected/this.totalExpected*100)+"%":"0%"}goBack(){this.navigationHistory.goBackOrFallback(["/main/dashboard/cohorts/batches",this.batchId])}static{this.\u0275fac=function(n){return new(n||t)(w(te),w(ue),w(Zo),w(fe))}}static{this.\u0275cmp=H({type:t,selectors:[["app-billing-overview"]],decls:53,vars:12,consts:[[1,"billing-admin-container"],[1,"header"],[1,"btn-back",3,"click"],[1,"stats-row"],[1,"stat-card"],[1,"stat-label"],[1,"stat-value"],[1,"stat-value","warning"],[1,"stat-value","danger"],[1,"stat-value","success"],[1,"actions-row"],[1,"btn-primary",3,"click","disabled"],[1,"btn-secondary",3,"click","disabled"],[1,"filters-row"],[3,"ngModelChange","change","ngModel"],["value",""],["value","active"],["value","fully_paid"],["value","overdue"],["value","egyptian"],["value","international"],["value","custom"],["class","loading-state",4,"ngIf"],["class","plans-table-wrapper",4,"ngIf"],[1,"loading-state"],[1,"plans-table-wrapper"],["class","plans-table",4,"ngIf"],["class","empty-state",4,"ngIf"],[1,"plans-table"],[3,"flagged",4,"ngFor","ngForOf"],[1,"student-name"],[1,"badge",3,"ngClass"],[1,"amount-paid"],[1,"amount-owed"],[1,"status-badge",3,"ngClass"],["class","review-badge approved",4,"ngIf"],["class","btn-sm btn-approve",3,"click",4,"ngIf"],[1,"btn-sm",3,"click"],[1,"review-badge","approved"],[1,"btn-sm","btn-approve",3,"click"],[1,"empty-state"]],template:function(n,i){n&1&&(a(0,"div",0)(1,"div",1)(2,"button",2),x("click",function(){return i.goBack()}),s(3,"\u2190 Back to Cohort"),r(),a(4,"h2"),s(5,"Billing Plans"),r()(),a(6,"div",3)(7,"div",4)(8,"div",5),s(9,"Total Students"),r(),a(10,"div",6),s(11),r()(),a(12,"div",4)(13,"div",5),s(14,"Pending Review"),r(),a(15,"div",7),s(16),r()(),a(17,"div",4)(18,"div",5),s(19,"Overdue"),r(),a(20,"div",8),s(21),r()(),a(22,"div",4)(23,"div",5),s(24,"Collected"),r(),a(25,"div",9),s(26),r()()(),a(27,"div",10)(28,"button",11),x("click",function(){return i.generatePlans()}),s(29),r(),a(30,"button",12),x("click",function(){return i.bulkApprove()}),s(31),r()(),a(32,"div",13)(33,"select",14),T("ngModelChange",function(u){return A(i.filterStatus,u)||(i.filterStatus=u),u}),x("change",function(){return i.loadPlans()}),a(34,"option",15),s(35,"All Status"),r(),a(36,"option",16),s(37,"Active"),r(),a(38,"option",17),s(39,"Fully Paid"),r(),a(40,"option",18),s(41,"Overdue"),r()(),a(42,"select",14),T("ngModelChange",function(u){return A(i.filterPricingType,u)||(i.filterPricingType=u),u}),x("change",function(){return i.loadPlans()}),a(43,"option",15),s(44,"All Pricing"),r(),a(45,"option",19),s(46,"Egyptian"),r(),a(47,"option",20),s(48,"International"),r(),a(49,"option",21),s(50,"Custom"),r()()(),h(51,rb,2,0,"div",22)(52,pb,3,2,"div",23),r()),n&2&&(o(11),g(i.totalStudents),o(5),g(i.pendingReview),o(5),g(i.overdueCount),o(5),g(i.getCollectedPercent()),o(2),p("disabled",i.generating),o(),b(" ",i.generating?"Generating...":"Auto-Generate Plans"," "),o(),p("disabled",i.bulkApproving||i.pendingReview===0),o(),b(" ",i.bulkApproving?"Approving...":"Bulk Approve ("+i.pendingReview+")"," "),o(2),k("ngModel",i.filterStatus),o(9),k("ngModel",i.filterPricingType),o(9),p("ngIf",i.loading),o(),p("ngIf",!i.loading))},dependencies:[ce,Q,$,re,ae,Ce,Y,oe],styles:[".billing-admin-container[_ngcontent-%COMP%]{padding:24px}.billing-admin-container[_ngcontent-%COMP%] .header[_ngcontent-%COMP%]{margin-bottom:24px}.billing-admin-container[_ngcontent-%COMP%] .header[_ngcontent-%COMP%] .btn-back[_ngcontent-%COMP%]{background:none;border:none;color:#6b7280;cursor:pointer;padding:0;font-size:14px}.billing-admin-container[_ngcontent-%COMP%] .header[_ngcontent-%COMP%] .btn-back[_ngcontent-%COMP%]:hover{color:#374151}.billing-admin-container[_ngcontent-%COMP%] .header[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:8px 0 0;font-size:24px;font-weight:600}.billing-admin-container[_ngcontent-%COMP%] .stats-row[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:16px;margin-bottom:24px}.billing-admin-container[_ngcontent-%COMP%] .stat-card[_ngcontent-%COMP%]{background:#fff;border:1px solid #e5e7eb;border-radius:12px;padding:20px}.billing-admin-container[_ngcontent-%COMP%] .stat-card[_ngcontent-%COMP%] .stat-label[_ngcontent-%COMP%]{font-size:13px;color:#6b7280;font-weight:500;margin-bottom:4px}.billing-admin-container[_ngcontent-%COMP%] .stat-card[_ngcontent-%COMP%] .stat-value[_ngcontent-%COMP%]{font-size:28px;font-weight:700;color:#111827}.billing-admin-container[_ngcontent-%COMP%] .stat-card[_ngcontent-%COMP%] .stat-value.warning[_ngcontent-%COMP%]{color:#d97706}.billing-admin-container[_ngcontent-%COMP%] .stat-card[_ngcontent-%COMP%] .stat-value.danger[_ngcontent-%COMP%]{color:#dc2626}.billing-admin-container[_ngcontent-%COMP%] .stat-card[_ngcontent-%COMP%] .stat-value.success[_ngcontent-%COMP%]{color:#059669}.billing-admin-container[_ngcontent-%COMP%] .actions-row[_ngcontent-%COMP%]{display:flex;gap:12px;margin-bottom:20px}.billing-admin-container[_ngcontent-%COMP%] .btn-primary[_ngcontent-%COMP%]{background:#4f46e5;color:#fff;border:none;padding:10px 20px;border-radius:8px;
12cursor:pointer;font-weight:500}.billing-admin-container[_ngcontent-%COMP%] .btn-primary[_ngcontent-%COMP%]:hover{background:#4338ca}.billing-admin-container[_ngcontent-%COMP%] .btn-primary[_ngcontent-%COMP%]:disabled{opacity:.6;cursor:not-allowed}.billing-admin-container[_ngcontent-%COMP%] .btn-secondary[_ngcontent-%COMP%]{background:#f3f4f6;color:#374151;border:none;padding:10px 20px;border-radius:8px;cursor:pointer;font-weight:500}.billing-admin-container[_ngcontent-%COMP%] .btn-secondary[_ngcontent-%COMP%]:hover{background:#e5e7eb}.billing-admin-container[_ngcontent-%COMP%] .btn-secondary[_ngcontent-%COMP%]:disabled{opacity:.6;cursor:not-allowed}.billing-admin-container[_ngcontent-%COMP%] .filters-row[_ngcontent-%COMP%]{display:flex;gap:8px;margin-bottom:20px}.billing-admin-container[_ngcontent-%COMP%] .filters-row[_ngcontent-%COMP%] select[_ngcontent-%COMP%]{padding:8px 12px;border:1px solid #d1d5db;border-radius:8px;font-size:13px}.billing-admin-container[_ngcontent-%COMP%] .filters-row[_ngcontent-%COMP%] select[_ngcontent-%COMP%]:focus{outline:none;border-color:#4f46e5}.billing-admin-container[_ngcontent-%COMP%] .loading-state[_ngcontent-%COMP%], .billing-admin-container[_ngcontent-%COMP%] .empty-state[_ngcontent-%COMP%]{text-align:center;padding:48px;color:#6b7280}.billing-admin-container[_ngcontent-%COMP%] .plans-table-wrapper[_ngcontent-%COMP%]{overflow-x:auto}.billing-admin-container[_ngcontent-%COMP%] .plans-table[_ngcontent-%COMP%]{width:100%;border-collapse:collapse;background:#fff;border-radius:12px;overflow:hidden;border:1px solid #e5e7eb}.billing-admin-container[_ngcontent-%COMP%] .plans-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%]{text-align:left;padding:12px 16px;background:#f9fafb;font-size:13px;font-weight:600;color:#374151;border-bottom:1px solid #e5e7eb}.billing-admin-container[_ngcontent-%COMP%] .plans-table[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{padding:12px 16px;font-size:14px;border-bottom:1px solid #f3f4f6}.billing-admin-container[_ngcontent-%COMP%] .plans-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:hover{background:#f9fafb}.billing-admin-container[_ngcontent-%COMP%] .plans-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr.flagged[_ngcontent-%COMP%]{background:#fffbeb}.billing-admin-container[_ngcontent-%COMP%] .student-name[_ngcontent-%COMP%]{font-weight:500}.billing-admin-container[_ngcontent-%COMP%] .amount-paid[_ngcontent-%COMP%]{color:#059669;font-weight:500}.billing-admin-container[_ngcontent-%COMP%] .amount-owed[_ngcontent-%COMP%]{color:#dc2626;font-weight:500}.billing-admin-container[_ngcontent-%COMP%] .badge[_ngcontent-%COMP%]{padding:4px 10px;border-radius:20px;font-size:11px;font-weight:500;text-transform:capitalize}.billing-admin-container[_ngcontent-%COMP%] .badge-egyptian[_ngcontent-%COMP%]{background:#dbeafe;color:#1e40af}.billing-admin-container[_ngcontent-%COMP%] .badge-intl[_ngcontent-%COMP%]{background:#fce7f3;color:#9d174d}.billing-admin-container[_ngcontent-%COMP%] .badge-custom[_ngcontent-%COMP%]{background:#f3e8ff;color:#6b21a8}.billing-admin-container[_ngcontent-%COMP%] .status-badge[_ngcontent-%COMP%]{padding:4px 10px;border-radius:20px;font-size:11px;font-weight:500;text-transform:capitalize}.billing-admin-container[_ngcontent-%COMP%] .status-active[_ngcontent-%COMP%]{background:#dbeafe;color:#1e40af}.billing-admin-container[_ngcontent-%COMP%] .status-fully_paid[_ngcontent-%COMP%]{background:#dcfce7;color:#166534}.billing-admin-container[_ngcontent-%COMP%] .status-overdue[_ngcontent-%COMP%]{background:#fee2e2;color:#991b1b}.billing-admin-container[_ngcontent-%COMP%] .status-cancelled[_ngcontent-%COMP%]{background:#f3f4f6;color:#6b7280}.billing-admin-container[_ngcontent-%COMP%] .review-badge[_ngcontent-%COMP%]{padding:4px 10px;border-radius:20px;font-size:11px;font-weight:500}.billing-admin-container[_ngcontent-%COMP%] .review-badge.approved[_ngcontent-%COMP%]{background:#dcfce7;color:#166534}.billing-admin-container[_ngcontent-%COMP%] .btn-sm[_ngcontent-%COMP%]{padding:6px 12px;font-size:12px;border:none;border-radius:6px;cursor:pointer;background:#f3f4f6;color:#374151}.billing-admin-container[_ngcontent-%COMP%] .btn-sm[_ngcontent-%COMP%]:hover{background:#e5e7eb}.billing-admin-container[_ngcontent-%COMP%] .btn-approve[_ngcontent-%COMP%]{background:#dcfce7;color:#166534;font-weight:500}.billing-admin-container[_ngcontent-%COMP%] .btn-approve[_ngcontent-%COMP%]:hover{background:#bbf7d0}"]})}}return t})();function _b(t,c){if(t&1&&(a(0,"div",49),s(1),_(2,"translate"),r()),t&2){let e=d();o(),g(m(2,1,e.actionMessage))}}function mb(t,c){if(t&1&&(a(0,"div",50),s(1),_(2,"translate"),r()),t&2){let e=d();o(),g(m(2,1,e.errorMessage))}}
12function gb(t,c){if(t&1&&(a(0,"option",51),s(1),r()),t&2){let e=c.$implicit,n=d();p("value",e.lessonId),o(),b(" ",n.lessonOptionLabel(e)," ")}}function ub(t,c){if(t&1&&(a(0,"option",51),s(1),r()),t&2){let e=c.$implicit,n=d();p("value",e.cohortId),o(),b(" ",n.cohortOptionLabel(e)," ")}}function Cb(t,c){if(t&1&&(a(0,"option",51),s(1),r()),t&2){let e=c.$implicit,n=d();p("value",e.targetSessionId),o(),b(" ",n.sessionOptionLabel(e)," ")}}function fb(t,c){if(t&1&&(a(0,"option",14),s(1),r()),t&2){let e=c.$implicit;p("ngValue",e),o(),g(e)}}function hb(t,c){if(t&1){let e=M();a(0,"article")(1,"div")(2,"strong"),s(3),r(),a(4,"span"),s(5),_(6,"translate"),r(),a(7,"small"),s(8),_(9,"translate"),_(10,"translate"),_(11,"translate"),r()(),a(12,"div",25)(13,"button",26),x("click",function(){let i=C(e).$implicit,l=d();return f(l.loadOpenBonusReservations(i))}),s(14),_(15,"translate"),r(),a(16,"button",26),x("click",function(){let i=C(e).$implicit,l=d();return f(l.rebuildOpenBonusCapacity(i))}),s(17),_(18,"translate"),r(),a(19,"button",48),x("click",function(){let i=C(e).$implicit,l=d();return f(l.cancelOpenBonusClass(i))}),s(20),_(21,"translate"),r()()()}if(t&2){let e=c.$implicit,n=d();o(3),g(e.title),o(2),N("",e.sessionType||m(6,15,"ADDITIONAL_CLASSES_ADMIN.OPEN_BONUS_TITLE")," \xB7 ",n.openBonusDateLabel(e),""),o(3),It("",e.confirmedCount||0," ",m(9,17,"ADDITIONAL_CLASSES_ADMIN.CONFIRMED")," \xB7 ",e.waitlistedCount||0," ",m(10,19,"ADDITIONAL_CLASSES_ADMIN.WAITLISTED")," \xB7 ",e.remainingSeats||0," ",m(11,21,"ADDITIONAL_CLASSES_ADMIN.REMAINING"),""),o(5),p("disabled",n.loadingOpenBonusReservations),o(),b(" ",m(15,23,"ADDITIONAL_CLASSES_ADMIN.LOAD_RESERVATIONS")," "),o(2),p("disabled",n.saving),o(),b(" ",m(18,25,"ADDITIONAL_CLASSES_ADMIN.REBUILD_CAPACITY")," "),o(2),p("disabled",n.saving||e.status==="cancelled"),o(),b(" ",m(21,27,"ADDITIONAL_CLASSES_ADMIN.CANCEL_CLASS")," ")}}function xb(t,c){if(t&1&&(a(0,"article")(1,"div")(2,"strong"),s(3),r(),a(4,"span"),s(5),r()(),a(6,"small"),s(7),r()()),t&2){let e=c.$implicit;o(3),g(e.studentUid||e.id),o(2),g(e.status),o(2),g(e.waitlistPosition?"#"+e.waitlistPosition:e.reservedAt)}}function bb(t,c){if(t&1&&(a(0,"div",52),h(1,xb,8,3,"article",42),r()),t&2){let e=d();o(),p("ngForOf",e.openBonusReservationView.reservations)}}function vb(t,c){if(t&1&&(a(0,"div",53)(1,"span"),s(2),_(3,"translate"),r(),a(4,"span"),s(5),_(6,"translate"),r(),a(7,"span"),s(8),_(9,"translate"),r(),a(10,"span"),s(11),_(12,"translate"),r()()),t&2){let e=c.ngIf;o(2),N("",m(3,8,"ADDITIONAL_CLASSES_ADMIN.OFFICIAL"),": ",e.activeOfficialEnrollmentCount,""),o(3),N("",m(6,10,"ADDITIONAL_CLASSES_ADMIN.BONUS_CONFIRMED"),": ",e.confirmedAdditionalCount,""),o(3),N("",m(9,12,"ADDITIONAL_CLASSES_ADMIN.WAITLISTED"),": ",e.waitlistedCount,""),o(3),N("",m(12,14,"ADDITIONAL_CLASSES_ADMIN.REMAINING"),": ",e.availableAdditionalSeats,"")}}function Ob(t,c){if(t&1&&(a(0,"article")(1,"div")(2,"strong"),s(3),r(),a(4,"span"),s(5),r()(),a(6,"small"),s(7),r()()),t&2){let e=c.$implicit;o(3),g(e.studentUid||e.id),o(2),g(e.status),o(2),g(e.waitlistPosition?"#"+e.waitlistPosition:e.reservedAt)}}function Mb(t,c){if(t&1&&(a(0,"div",54),h(1,Ob,8,3,"article",42),r()),t&2){let e=d();o(),p("ngForOf",e.reservationView.reservations)}}function Pb(t,c){t&1&&(a(0,"p",55),s(1),_(2,"translate"),r()),t&2&&(o(),g(m(2,1,"ADDITIONAL_CLASSES_ADMIN.NO_RESERVATIONS")))}function Sb(t,c){if(t&1&&(a(0,"option",51),s(1),r()),t&2){let e=c.$implicit,n=d();p("value",e.id),o(),b(" ",n.reservationOptionLabel(e)," ")}}function wb(t,c){if(t&1&&(a(0,"option",51),s(1),_(2,"translate"),r()),t&2){let e=c.$implicit;p("value",e.value),o(),b(" ",m(2,2,e.labelKey)," ")}}function Eb(t,c){if(t&1&&(a(0,"option",51),s(1),r()),t&2){let e=c.$implicit;p("value",e.studentUid),o(),b(" ",e.studentUid," ")}}function Ib(t,c){if(t&1&&(a(0,"option",51),s(1),r()),t&2){let e=c.$implicit;p("value",e),o(),g(e)}}var hi="all_active_students",ga=(()=>{class t{constructor(e){this.additionalClasses=e,this.analytics=this.emptyAnalytics(),this.adminOptions=this.emptyAdminOptions(),this.reservationView={capacity:null,reservations:[]},this.openBonusClasses=[],this.openBonusReservationView={openClass:null,reservations:[]},this.loadingAnalytics=!0,this.loadingOptions=!0,this.loadingReservations=!1,this.loadingOpenBonus=!1,this.loadingOpenBonusReservations=!1,this.saving=!1,this.actionMessage="",this.errorMessage="",this.outsideSeatCapOptions=Array.from({length:13},(n,i)=>i),this.cancelReasonOptions=[{value:"CAPACITY_CORRECTION",labelKey:"ADDITIONAL_CLASSES_ADMIN.CANCEL_REASON_CAPACITY"},{value:"SESSION_CHANGED",labelKey:"ADDITIONAL_CLASSES_ADMIN.CANCEL_REASON_SESSION"},{value:"TEACHER_REQUEST",labelKey:"ADDITIONAL_CLASSES_ADMIN.CANCEL_REASON_TEACHER"},{value:"ADMIN_EXCEPTION",labelKey:"ADDITIONAL_CLASSES_ADMIN.CANCEL_REASON_ADMIN"}],this.goldenLessonId="",this.shareable=!0,this.allowedSessionType="grammar",this.targetCohortId="",this.targetSessionId="",this.childEnabled=!0,this.outsideSeatCap=null,this.reservationStatus="open",this.cancelReservationId="",this.cancelReason="CAPACITY_CORRECTION",this.restoreCap=!0,this.usageStudentUid="",this.usageProgramYearId="program_2026",this.openBonusStatusFilter="published",this.selectedOpenBonusId="",this.openBonusForm={title:"",description:"",instructorName:"",startTime:"",durationMinutes:75,capacity:25,status:"published",level:"",sessionType:"pronunciation",eligibilityMode:hi,eligibleLevelsText:""}}
12ngOnInit(){this.loadOptions(),this.loadAnalytics(),this.loadOpenBonusClasses()}refreshAdminData(){this.loadOptions(),this.loadAnalytics(),this.loadOpenBonusClasses()}loadAnalytics(){this.loadingAnalytics=!0,this.additionalClasses.getAdminAnalytics().pipe(Pe(()=>{this.loadingAnalytics=!1})).subscribe({next:e=>{this.analytics=e},error:e=>this.setError(e)})}loadOptions(){this.loadingOptions=!0,this.additionalClasses.getAdminOptions().pipe(Pe(()=>{this.loadingOptions=!1})).subscribe({next:e=>{this.adminOptions=this.normalizeOptions(e),this.ensureDropdownSelections()},error:e=>this.setError(e)})}loadReservations(){this.hasSessionIds()&&(this.loadingReservations=!0,this.additionalClasses.getSessionReservations(this.targetCohortId,this.targetSessionId).pipe(Pe(()=>{this.loadingReservations=!1})).subscribe({next:e=>{this.reservationView=e},error:e=>this.setError(e)}))}saveGoldenPolicy(){this.goldenLessonId&&this.runAction(this.additionalClasses.setGoldenShareability(this.goldenLessonId,{shareable:this.shareable,allowedSessionType:this.allowedSessionType||null}))}saveChildPolicy(){this.hasSessionIds()&&this.runAction(this.additionalClasses.setChildSessionPolicy(this.targetCohortId,this.targetSessionId,{enabled:this.childEnabled,outsideSeatCap:this.outsideSeatCap,reservationStatus:this.reservationStatus}),!0)}rebuildCapacity(){this.hasSessionIds()&&this.runAction(this.additionalClasses.rebuildCapacity(this.targetCohortId,this.targetSessionId),!0)}cancelReservation(){this.cancelReservationId&&this.runAction(this.additionalClasses.adminCancelReservation(this.cancelReservationId,this.cancelReason||"Admin cancelled",this.restoreCap),!0)}rebuildUsage(){!this.usageStudentUid||!this.usageProgramYearId||this.runAction(this.additionalClasses.rebuildUsage(this.usageStudentUid,this.usageProgramYearId))}loadOpenBonusClasses(){this.loadingOpenBonus=!0;let e=this.openBonusStatusFilter?{status:this.openBonusStatusFilter}:{};this.additionalClasses.listAdminOpenBonusClasses(e).pipe(Pe(()=>{this.loadingOpenBonus=!1})).subscribe({next:n=>{this.openBonusClasses=n},error:n=>this.setError(n)})}createOpenBonusClass(){let e=this.openBonusPayload();e&&(this.saving=!0,this.actionMessage="",this.errorMessage="",this.additionalClasses.createOpenBonusClass(e).pipe(Pe(()=>{this.saving=!1})).subscribe({next:()=>{this.actionMessage="ADDITIONAL_CLASSES_ADMIN.SAVED",this.resetOpenBonusForm(),this.loadOpenBonusClasses()},error:n=>this.setError(n)}))}cancelOpenBonusClass(e){this.runOpenBonusAction(this.additionalClasses.cancelOpenBonusClass(e.id,"OPEN_BONUS_CANCELLED"))}rebuildOpenBonusCapacity(e){this.runOpenBonusAction(this.additionalClasses.rebuildOpenBonusCapacity(e.id))}loadOpenBonusReservations(e){this.selectedOpenBonusId=e.id,this.loadingOpenBonusReservations=!0,this.additionalClasses.getOpenBonusReservations(e.id).pipe(Pe(()=>{this.loadingOpenBonusReservations=!1})).subscribe({next:n=>{this.openBonusReservationView=n},error:n=>this.setError(n)})}onGoldenLessonChange(){let e=this.adminOptions.goldenLessons.find(n=>n.lessonId===this.goldenLessonId);e&&(this.shareable=e.shareable===!0,this.allowedSessionType=e.allowedSessionType||this.allowedSessionType||"grammar")}onCohortChange(){let e=this.sessionOptionsForSelectedCohort()[0];this.targetSessionId=e?.targetSessionId||"",this.syncSelectedSessionPolicy(),this.clearReservationContext()}onSessionChange(){this.syncSelectedSessionPolicy(),this.clearReservationContext()}onUsageStudentChange(){let e=this.reservationView.reservations.find(n=>n.studentUid===this.usageStudentUid);e?.programYearId&&(this.usageProgramYearId=e.programYearId)}sessionOptionsForSelectedCohort(){return this.adminOptions.sessions.filter(e=>e.targetCohortId===this.targetCohortId)}cancellableReservations(){return this.reservationView.reservations.filter(e=>["confirmed","waitlisted"].includes(e.status))}studentOptions(){let e=new Map;return this.reservationView.reservations.forEach(n=>{n.studentUid&&e.set(n.studentUid,{studentUid:n.studentUid,programYearId:n.programYearId||null})}),Array.from(e.values()).sort((n,i)=>n.studentUid.localeCompare(i.studentUid))}programYearOptions(){let e=new Set(["program_2026"]);return this.usageProgramYearId&&e.add(this.usageProgramYearId),this.reservationView.reservations.forEach(n=>
12{n.programYearId&&e.add(n.programYearId)}),Array.from(e).sort()}lessonOptionLabel(e){return[e.label||e.lessonId,e.level].filter(Boolean).join(" \xB7 ")}cohortOptionLabel(e){return[e.label||e.cohortId,e.level].filter(Boolean).join(" \xB7 ")}sessionOptionLabel(e){return[e.label||e.targetSessionId,e.level].filter(Boolean).join(" \xB7 ")}reservationOptionLabel(e){return[e.studentUid||e.id,e.status,e.waitlistPosition?`#${e.waitlistPosition}`:null].filter(Boolean).join(" \xB7 ")}openBonusDateLabel(e){let n=new Date(e.startTime);return Number.isFinite(n.getTime())?n.toLocaleString():"-"}runAction(e,n=!1){this.saving=!0,this.actionMessage="",this.errorMessage="",e.pipe(Pe(()=>{this.saving=!1})).subscribe({next:()=>{this.actionMessage="ADDITIONAL_CLASSES_ADMIN.SAVED",this.loadAnalytics(),this.loadOptions(),n&&this.loadReservations()},error:i=>this.setError(i)})}runOpenBonusAction(e){this.saving=!0,this.actionMessage="",this.errorMessage="",e.pipe(Pe(()=>{this.saving=!1})).subscribe({next:()=>{if(this.actionMessage="ADDITIONAL_CLASSES_ADMIN.SAVED",this.loadOpenBonusClasses(),this.selectedOpenBonusId){let n=this.openBonusClasses.find(i=>i.id===this.selectedOpenBonusId);n&&this.loadOpenBonusReservations(n)}},error:n=>this.setError(n)})}openBonusPayload(){if(!this.openBonusForm.title.trim()||!this.openBonusForm.startTime||!this.openBonusForm.capacity)return null;let e=new Date(this.openBonusForm.startTime);if(!Number.isFinite(e.getTime()))return null;let n=this.openBonusForm.eligibleLevelsText.split(",").map(i=>i.trim()).filter(Boolean);return{title:this.openBonusForm.title.trim(),description:this.openBonusForm.description.trim()||null,instructorName:this.openBonusForm.instructorName.trim()||null,startTime:e.toISOString(),durationMinutes:Number(this.openBonusForm.durationMinutes)||75,capacity:Number(this.openBonusForm.capacity)||1,status:this.openBonusForm.status,level:this.openBonusForm.level.trim()||null,sessionType:this.openBonusForm.sessionType||null,eligibilityMode:this.openBonusForm.eligibilityMode||hi,eligibleLevels:n,waitingListEnabled:!0}}resetOpenBonusForm(){this.openBonusForm.title="",this.openBonusForm.description="",this.openBonusForm.instructorName="",this.openBonusForm.startTime="",this.openBonusForm.durationMinutes=75,this.openBonusForm.capacity=25,this.openBonusForm.status="published",this.openBonusForm.level="",this.openBonusForm.sessionType="pronunciation",this.openBonusForm.eligibilityMode=hi,this.openBonusForm.eligibleLevelsText=""}hasSessionIds(){return!!this.targetCohortId&&!!this.targetSessionId}ensureDropdownSelections(){if((!this.goldenLessonId||!this.adminOptions.goldenLessons.some(n=>n.lessonId===this.goldenLessonId))&&(this.goldenLessonId=this.adminOptions.goldenLessons[0]?.lessonId||""),this.onGoldenLessonChange(),!this.targetCohortId||!this.adminOptions.cohorts.some(n=>n.cohortId===this.targetCohortId)){let n=this.adminOptions.cohorts.find(i=>this.adminOptions.sessions.some(l=>l.targetCohortId===i.cohortId));this.targetCohortId=n?.cohortId||this.adminOptions.cohorts[0]?.cohortId||""}let e=this.sessionOptionsForSelectedCohort();(!this.targetSessionId||!e.some(n=>n.targetSessionId===this.targetSessionId))&&(this.targetSessionId=e[0]?.targetSessionId||""),this.syncSelectedSessionPolicy()}syncSelectedSessionPolicy(){let e=this.adminOptions.sessions.find(n=>n.targetCohortId===this.targetCohortId&&n.targetSessionId===this.targetSessionId);e&&(e.lessonId&&this.adminOptions.goldenLessons.some(n=>n.lessonId===e.lessonId)&&(this.goldenLessonId=e.lessonId,this.onGoldenLessonChange()),this.childEnabled=e.childEnabled!==!1&&e.shareable!==!1,this.outsideSeatCap=e.outsideSeatCap??null,this.reservationStatus=e.reservationStatus==="closed"?"closed":"open")}clearReservationContext(){this.reservationView={capacity:null,reservations:[]},this.cancelReservationId="",this.usageStudentUid=""}setError(e){this.errorMessage=this.errorText(e)}errorText(e){return e?.error?.message||"ADDITIONAL_CLASSES_ADMIN.ERROR"}emptyAnalytics(){return{totalBonusReservations:0,confirmedReservations:0,attendanceRate:0,topStudentsByConfirmedCount:[],sessionsWithWaitlistDemand:[]}}emptyAdminOptions(){return{goldenLessons:[],cohorts:[],sessions:[]}}normalizeOptions(e){return{goldenLessons:e?.goldenLessons||[],cohorts:e?.cohorts||[],sessions:e?.sessions||[]}}static{this.\u0275fac=function(n){return new(n||t)(w(Cn))}}static{this.\u0275cmp=H({type:t,selectors:[["app-additional-access-admin"]],decls:286,vars:285,consts:[["noReservations",""],[1,"additional-admin-shell"],[1,"admin-header"],["type","button",1,"icon-button",3,"click","disabled"],["class","notice success",4,"ngIf"],["class","notice error",4,"ngIf"],[1,"metric-grid"],[1,"metric"],[1,"admin-grid"],[1,"panel"],[3,"ngModelChange","ngModel","disabled"],["value",""],[3,"value",4,"ngFor","ngForOf"],[3,"ngModelChange","ngModel"],[3,"ngValue"],["value","grammar"],["value","revision"],["value","vocabulary"],["value","pronunciation"],["value","exam_simulation"],["value","speaking_evaluation"],["type","button",1,"primary-button",3,"click","disabled"],[3,"ngValue",4,"ngFor","ngForOf"],["value","o
12pen"],["value","closed"],[1,"button-row"],["type","button",1,"ghost-button",3,"click","disabled"],[1,"panel","wide","open-bonus-panel"],[1,"panel-title-row"],[1,"panel-subtitle"],[1,"inline-select"],["value","published"],["value","draft"],["value","cancelled"],[1,"admin-grid","open-bonus-form"],["type","text",3,"ngModelChange","ngModel"],["type","datetime-local",3,"ngModelChange","ngModel"],["type","number","min","15","step","15",3,"ngModelChange","ngModel"],["type","number","min","1",3,"ngModelChange","ngModel"],["type","text","placeholder","A1.1, A2",3,"ngModelChange","ngModel"],["value","conversation"],[1,"open-bonus-list"],[4,"ngFor","ngForOf"],["class","reservation-list open-bonus-reservations",4,"ngIf"],[1,"panel","wide"],["class","capacity-strip",4,"ngIf"],["class","reservation-list",4,"ngIf","ngIfElse"],[1,"admin-grid","compact"],["type","button",1,"danger-button",3,"click","disabled"],[1,"notice","success"],[1,"notice","error"],[3,"value"],[1,"reservation-list","open-bonus-reservations"],[1,"capacity-strip"],[1,"reservation-list"],[1,"empty"]],template:function(n,i){if(n&1){let l=M();a(0,"section",1)(1,"header",2)(2,"div")(3,"p"),s(4),_(5,"translate"),r(),a(6,"h1"),s(7),_(8,"translate"),r()(),a(9,"button",3),x("click",function(){return C(l),f(i.refreshAdminData())}),s(10),_(11,"translate"),r()(),h(12,_b,3,3,"div",4)(13,mb,3,3,"div",5),a(14,"section",6)(15,"article",7)(16,"span"),s(17),_(18,"translate"),r(),a(19,"strong"),s(20),r()(),a(21,"article",7)(22,"span"),s(23),_(24,"translate"),r(),a(25,"strong"),s(26),r()(),a(27,"article",7)(28,"span"),s(29),_(30,"translate"),r(),a(31,"strong"),s(32),_(33,"percent"),r()()(),a(34,"div",8)(35,"section",9)(36,"h2"),s(37),_(38,"translate"),r(),a(39,"label"),s(40),_(41,"translate"),a(42,"select",10),T("ngModelChange",function(O){return C(l),A(i.goldenLessonId,O)||(i.goldenLessonId=O),f(O)}),x("ngModelChange",function(){return C(l),f(i.onGoldenLessonChange())}),a(43,"option",11),s(44),_(45,"translate"),r(),h(46,gb,2,2,"option",12),r()(),a(47,"label"),s(48),_(49,"translate"),a(50,"select",13),T("ngModelChange",function(O){return C(l),A(i.shareable,O)||(i.shareable=O),f(O)}),a(51,"option",14),s(52),_(53,"translate"),r(),a(54,"option",14),s(55),_(56,"translate"),r()()(),a(57,"label"),s(58),_(59,"translate"),a(60,"select",13),T("ngModelChange",function(O){return C(l),A(i.allowedSessionType,O)||(i.allowedSessionType=O),f(O)}),a(61,"option",15),s(62),_(63,"translate"),r(),a(64,"option",16),s(65),_(66,"translate"),r(),a(67,"option",17),s(68),_(69,"translate"),r(),a(70,"option",18),s(71),_(72,"translate"),r(),a(73,"option",19),s(74),_(75,"translate"),r(),a(76,"option",20),s(77),_(78,"translate"),r()()(),a(79,"button",21),x("click",function(){return C(l),f(i.saveGoldenPolicy())}),s(80),_(81,"translate"),r()(),a(82,"section",9)(83,"h2"),s(84),_(85,"translate"),r(),a(86,"label"),s(87),_(88,"translate"),a(89,"select",10),T("ngModelChange",function(O){return C(l),A(i.targetCohortId,O)||(i.targetCohortId=O),f(O)}),x("ngModelChange",function(){return C(l),f(i.onCohortChange())}),a(90,"option",11),s(91),_(92,"translate"),r(),h(93,ub,2,2,"option",12),r()(),a(94,"label"),s(95),_(96,"translate"),a(97,"select",10),T("ngModelChange",function(O){return C(l),A(i.targetSessionId,O)||(i.targetSessionId=O),f(O)}),x("ngModelChange",function(){return C(l),f(i.onSessionChange())}),a(98,"option",11),s(99),_(100,"translate"),r(),h(101,Cb,2,2,"option",12),r()(),a(102,"label"),s(103),_(104,"translate"),a(105,"select",13),T("ngModelChange",function(O){return C(l),A(i.childEnabled,O)||(i.childEnabled=O),f(O)}),a(106,"option",14),s(107),_(108,"translate"),r(),a(109,"option",14),s(110),_(111,"translate"),r()()(),a(112,"label"),s(113),_(114,"translate"),a(115,"select",13),T("ngModelChange",function(O){return C(l),A(i.outsideSeatCap,O)||(i.outsideSeatCap=O),f(O)}),a(116,"option",14),s(117),_(118,"translate"),r(),h(119,fb,2,2,"option",22),r()(),a(120,"label"),s(121),_(122,"translate"),a(123,"select",13),T("ngModelChange",function(O){return C(l),A(i.reservationStatus,O)||(i.reservationStatus=O),f(O)}),a(124,"option",23),s(125),_(126,"translate"),r(),a(127,"option",24),s(128),_(129,"translate"),r()()(),a(130,"div",25)(131,"button",21),x("click",function(){return C(l),f(i.saveChildPolicy())}),s(132),_(133,"translate"),r(),a(134,"button",26),x("click",function(){return C(l),f(i.rebuildCapacity())}),s(135),_(136,"translate"),r()()()(),a(137,"section",27)(138,"div",28)(139,"div")(140,"h2"),s(141),_(142,"translate"),r(),a(143,"p",29),s(144),_(145,"translate"),r()(),a(14
126,"label",30),s(147),_(148,"translate"),a(149,"select",13),T("ngModelChange",function(O){return C(l),A(i.openBonusStatusFilter,O)||(i.openBonusStatusFilter=O),f(O)}),x("ngModelChange",function(){return C(l),f(i.loadOpenBonusClasses())}),a(150,"option",31),s(151),_(152,"translate"),r(),a(153,"option",32),s(154),_(155,"translate"),r(),a(156,"option",33),s(157),_(158,"translate"),r(),a(159,"option",11),s(160),_(161,"translate"),r()()()(),a(162,"div",34)(163,"label"),s(164),_(165,"translate"),a(166,"input",35),T("ngModelChange",function(O){return C(l),A(i.openBonusForm.title,O)||(i.openBonusForm.title=O),f(O)}),r()(),a(167,"label"),s(168),_(169,"translate"),a(170,"input",35),T("ngModelChange",function(O){return C(l),A(i.openBonusForm.description,O)||(i.openBonusForm.description=O),f(O)}),r()(),a(171,"label"),s(172),_(173,"translate"),a(174,"input",35),T("ngModelChange",function(O){return C(l),A(i.openBonusForm.instructorName,O)||(i.openBonusForm.instructorName=O),f(O)}),r()(),a(175,"label"),s(176),_(177,"translate"),a(178,"input",36),T("ngModelChange",function(O){return C(l),A(i.openBonusForm.startTime,O)||(i.openBonusForm.startTime=O),f(O)}),r()(),a(179,"label"),s(180),_(181,"translate"),a(182,"input",37),T("ngModelChange",function(O){return C(l),A(i.openBonusForm.durationMinutes,O)||(i.openBonusForm.durationMinutes=O),f(O)}),r()(),a(183,"label"),s(184),_(185,"translate"),a(186,"input",38),T("ngModelChange",function(O){return C(l),A(i.openBonusForm.capacity,O)||(i.openBonusForm.capacity=O),f(O)}),r()(),a(187,"label"),s(188),_(189,"translate"),a(190,"input",39),T("ngModelChange",function(O){return C(l),A(i.openBonusForm.eligibleLevelsText,O)||(i.openBonusForm.eligibleLevelsText=O),f(O)}),r()(),a(191,"label"),s(192),_(193,"translate"),a(194,"select",13),T("ngModelChange",function(O){return C(l),A(i.openBonusForm.sessionType,O)||(i.openBonusForm.sessionType=O),f(O)}),a(195,"option",18),s(196),_(197,"translate"),r(),a(198,"option",15),s(199),_(200,"translate"),r(),a(201,"option",16),s(202),_(203,"translate"),r(),a(204,"option",17),s(205),_(206,"translate"),r(),a(207,"option",40),s(208),_(209,"translate"),r()()(),a(210,"label"),s(211),_(212,"translate"),a(213,"select",13),T("ngModelChange",function(O){return C(l),A(i.openBonusForm.status,O)||(i.openBonusForm.status=O),f(O)}),a(214,"option",31),s(215),_(216,"translate"),r(),a(217,"option",32),s(218),_(219,"translate"),r()()(),a(220,"button",21),x("click",function(){return C(l),f(i.createOpenBonusClass())}),s(221),_(222,"translate"),r()(),a(223,"div",41),h(224,hb,22,29,"article",42),r(),h(225,bb,2,1,"div",43),r(),a(226,"section",44)(227,"div",28)(228,"h2"),s(229),_(230,"translate"),r(),a(231,"button",26),x("click",function(){return C(l),f(i.loadReservations())}),s(232),_(233,"translate"),r()(),h(234,vb,13,16,"div",45)(235,Mb,2,1,"div",46)(236,Pb,3,3,"ng-template",null,0,ke),a(238,"div",47)(239,"label"),s(240),_(241,"translate"),a(242,"select",10),T("ngModelChange",function(O){return C(l),A(i.cancelReservationId,O)||(i.cancelReservationId=O),f(O)}),a(243,"option",11),s(244),_(245,"translate"),r(),h(246,Sb,2,2,"option",12),r()(),a(247,"label"),s(248),_(249,"translate"),a(250,"select",13),T("ngModelChange",function(O){return C(l),A(i.cancelReason,O)||(i.cancelReason=O),f(O)}),h(251,wb,3,4,"option",12),r()(),a(252,"label"),s(253),_(254,"translate"),a(255,"select",13),T("ngModelChange",function(O){return C(l),A(i.restoreCap,O)||(i.restoreCap=O),f(O)}),a(256,"option",14),s(257),_(258,"translate"),r(),a(259,"option",14),s(260),_(261,"translate"),r()()(),a(262,"button",48),x("click",function(){return C(l),f(i.cancelReservation())}),s(263),_(264,"translate"),r()()(),a(265,"section",44)(266,"h2"),s(267),_(268,"translate"),r(),a(269,"div",47)(270,"label"),s(271),_(272,"translate"),a(273,"select",10),T("ngModelChange",function(O){return C(l),A(i.usageStudentUid,O)||(i.usageStudentUid=O),f(O)}),x("ngModelChange",function(){return C(l),f(i.onUsageStudentChange())}),a(274,"option",11),s(275),_(276,"translate"),r(),h(277,Eb,2,2,"option",12),r()(),a(278,"label"),s(279),_(280,"translate"),a(281,"select",13),T("ngModelChange",function(O){return C(l),A(i.usageProgramYearId,O)||(i.usageProgramYearId=O),f(O)}),h(282,Ib,2,2,"option",12),r()(),a(283,"button",26),x("click",function(){return C(l),f(i.rebuildUsage())}),s(284),_(285,"translate"),r()()()()}if(n&2){let l=pe(237);o(4),g(m(5,136,"ADDITIONAL_CLASSES_ADMIN.EYEBROW")),o(3),g(m(8,138,"ADDITIONAL_CLASSES_ADMIN.TITLE")),o(2),p("disabled",i.loadingAnalytics||i.loadingOptions),o(),b(" ",m(11,140,"ADDITIONAL_CLASSES_ADMIN.REFRESH")," "),o(2),p("ngIf",i.actionMessage),o(),p("ngIf",i.errorMessage),o(),R("aria-busy",i.loadingAnalytics),o(3),g(m(18,142,"ADDITIONAL_CLASSES_ADMIN.TOTAL")),o(3),g(i.analytics.totalBonusReservations),o(3),g(m(24,144,"ADDITIONAL_CLASSES_ADMIN.CONFIRMED")),o(3),g(i.analytics.confirmedReservations),o(3),g(m(30,146,"ADDITIONAL_CLASSES_ADMIN.ATTENDANCE")),o(3),g(B(33,148,i.analytics.attendanceRate,"1.0-0")),o(5),g(m(38,151,"ADDITIONAL_CLASSES_ADMIN.GOLDEN_POLICY")),o(3),b(" ",m(41,153,"ADDITIONAL_CLASSES_ADMIN.LESSON_ID")," "),o(2),k("ngModel",i.goldenLessonId),p("disabled",i.loadingOptions||!i.adminOptions.goldenLessons.length),o(2),g(m(45,155,"ADDITIONAL_CLASSES_ADMIN.SELECT_LESSON")),o(2),p("ngForOf",i.adminOptions.goldenLessons),o(2),b(" ",m(49,157,"ADDITIONAL_CLASSES_ADMIN.SHAREABLE")," "),o(2),k("ngModel",i.shareable),o(),p("ngValue",!0),o(),g(m(53,159,"ADD
12ITIONAL_CLASSES_ADMIN.YES")),o(2),p("ngValue",!1),o(),g(m(56,161,"ADDITIONAL_CLASSES_ADMIN.NO")),o(3),b(" ",m(59,163,"ADDITIONAL_CLASSES_ADMIN.SESSION_TYPE")," "),o(2),k("ngModel",i.allowedSessionType),o(2),g(m(63,165,"ADDITIONAL_CLASSES_ADMIN.TYPE_GRAMMAR")),o(3),g(m(66,167,"ADDITIONAL_CLASSES_ADMIN.TYPE_REVISION")),o(3),g(m(69,169,"ADDITIONAL_CLASSES_ADMIN.TYPE_VOCABULARY")),o(3),g(m(72,171,"ADDITIONAL_CLASSES_ADMIN.TYPE_PRONUNCIATION")),o(3),g(m(75,173,"ADDITIONAL_CLASSES_ADMIN.TYPE_EXAM")),o(3),g(m(78,175,"ADDITIONAL_CLASSES_ADMIN.TYPE_SPEAKING")),o(2),p("disabled",i.saving||!i.goldenLessonId),o(),b(" ",m(81,177,"ADDITIONAL_CLASSES_ADMIN.SAVE_GOLDEN")," "),o(4),g(m(85,179,"ADDITIONAL_CLASSES_ADMIN.SESSION_POLICY")),o(3),b(" ",m(88,181,"ADDITIONAL_CLASSES_ADMIN.COHORT_ID")," "),o(2),k("ngModel",i.targetCohortId),p("disabled",i.loadingOptions||!i.adminOptions.cohorts.length),o(2),g(m(92,183,"ADDITIONAL_CLASSES_ADMIN.SELECT_COHORT")),o(2),p("ngForOf",i.adminOptions.cohorts),o(2),b(" ",m(96,185,"ADDITIONAL_CLASSES_ADMIN.SESSION_ID")," "),o(2),k("ngModel",i.targetSessionId),p("disabled",i.loadingOptions||!i.sessionOptionsForSelectedCohort().length),o(2),g(m(100,187,"ADDITIONAL_CLASSES_ADMIN.SELECT_SESSION")),o(2),p("ngForOf",i.sessionOptionsForSelectedCohort()),o(2),b(" ",m(104,189,"ADDITIONAL_CLASSES_ADMIN.LOCAL_ENABLED")," "),o(2),k("ngModel",i.childEnabled),o(),p("ngValue",!0),o(),g(m(108,191,"ADDITIONAL_CLASSES_ADMIN.YES")),o(2),p("ngValue",!1),o(),g(m(111,193,"ADDITIONAL_CLASSES_ADMIN.NO")),o(3),b(" ",m(114,195,"ADDITIONAL_CLASSES_ADMIN.OUTSIDE_CAP")," "),o(2),k("ngModel",i.outsideSeatCap),o(),p("ngValue",null),o(),g(m(118,197,"ADDITIONAL_CLASSES_ADMIN.NO_CAP")),o(2),p("ngForOf",i.outsideSeatCapOptions),o(2),b(" ",m(122,199,"ADDITIONAL_CLASSES_ADMIN.STATUS")," "),o(2),k("ngModel",i.reservationStatus),o(2),g(m(126,201,"ADDITIONAL_CLASSES_ADMIN.OPEN")),o(3),g(m(129,203,"ADDITIONAL_CLASSES_ADMIN.CLOSED")),o(3),p("disabled",i.saving||!i.targetCohortId||!i.targetSessionId),o(),b(" ",m(133,205,"ADDITIONAL_CLASSES_ADMIN.SAVE_SESSION")," "),o(2),p("disabled",i.saving||!i.targetCohortId||!i.targetSessionId),o(),b(" ",m(136,207,"ADDITIONAL_CLASSES_ADMIN.REBUILD_CAPACITY")," "),o(6),g(m(142,209,"ADDITIONAL_CLASSES_ADMIN.OPEN_BONUS_TITLE")),o(3),g(m(145,211,"ADDITIONAL_CLASSES_ADMIN.OPEN_BONUS_SUBTITLE")),o(3),b(" ",m(148,213,"ADDITIONAL_CLASSES_ADMIN.STATUS")," "),o(2),k("ngModel",i.openBonusStatusFilter),o(2),g(m(152,215,"ADDITIONAL_CLASSES_ADMIN.PUBLISHED")),o(3),g(m(155,217,"ADDITIONAL_CLASSES_ADMIN.DRAFT")),o(3),g(m(158,219,"ADDITIONAL_CLASSES_ADMIN.CANCELLED")),o(3),g(m(161,221,"ADDITIONAL_CLASSES_ADMIN.ALL_STATUSES")),o(4),b(" ",m(165,223,"ADDITIONAL_CLASSES_ADMIN.OPEN_BONUS_CLASS_TITLE")," "),o(2),k("ngModel",i.openBonusForm.title),o(2),b(" ",m(169,225,"ADDITIONAL_CLASSES_ADMIN.DESCRIPTION")," "),o(2),k("ngModel",i.openBonusForm.description),o(2),b(" ",m(173,227,"ADDITIONAL_CLASSES_ADMIN.INSTRUCTOR")," "),o(2),k("ngModel",i.openBonusForm.instructorName),o(2),b(" ",m(177,229,"ADDITIONAL_CLASSES_ADMIN.START_TIME")," "),o(2),k("ngModel",i.openBonusForm.startTime),o(2),b(" ",m(181,231,"ADDITIONAL_CLASSES_ADMIN.DURATION_MINUTES")," "),o(2),k("ngModel",i.openBonusForm.durationMinutes),o(2),b(" ",m(185,233,"ADDITIONAL_CLASSES_ADMIN.CAPACITY")," "),o(2),k("ngModel",i.openBonusForm.capacity),o(2),b(" ",m(189,235,"ADDITIONAL_CLASSES_ADMIN.LEVELS")," "),o(2),k("ngModel",i.openBonusForm.eligibleLevelsText),o(2),b(" ",m(193,237,"ADDITIONAL_CLASSES_ADMIN.SESSION_TYPE")," "),o(2),k("ngModel",i.openBonusForm.sessionType),o(2),g(m(197,239,"ADDITIONAL_CLASSES_ADMIN.TYPE_PRONUNCIATION")),o(3),g(m(200,241,"ADDITIONAL_CLASSES_ADMIN.TYPE_GRAMMAR")),o(3),g(m(203,243,"ADDITIONAL_CLASSES_ADMIN.TYPE_REVISION")),o(3),g(m(206,245,"ADDITIONAL_CLASSES_ADMIN.TYPE_VOCABULARY")),o(3),g(m(209,247,"ADDITIONAL_CLASSES_ADMIN.TYPE_CONVERSATION")),o(3),b(" ",m(212,249,"ADDITIONAL_CLASSES_ADMIN.STATUS")," "),o(2),k("ngModel",i.openBonusForm.status),o(2),g(m(216,251,"ADDITIONAL_CLASSES_ADMIN.PUBLISHED")),o(3),g(m(219,253,"ADDITIONAL_CLASSES_ADMIN.DRAFT")),o(2),p("disabled",i.saving||!i.openBonusForm.title||!i.openBonusForm.startTime),o(),b(" ",m(222,255,"ADDITIONAL_CLASSES_ADMIN.CREATE_OPEN_BONUS")," "),o(2),R("aria-busy",i.loadingOpenBonus),o(),p("ngForOf",i.openBonusClasses),o(),p("ngIf",i.openBonusReservationView.reservations.length),o(4),g(m(230,257,"ADDITIONAL_CLASSES_ADMIN.RESERVATIONS")),o(2),p("disabled",i.loadingReservations||!i.targetCohortId||!i.targetSessionId),o(),b(" ",m(233,259,"ADDITIONAL_CLASSES_ADMIN.LOAD_RESERVATIONS")," "),o(2),p("ngIf",i.reservationView.capacity),o(),p("ngIf",i.reservationView.reservations.length)("ngIfElse",l),o(5),b(" ",m(241,261,"ADDITIONAL_CLASSES_ADMIN.RESERVATION_ID")," "),o(2),k("ngModel",i.cancelReservationId),p("disabled",!i.cancellableReservations().length),o(2),g(m(245,263,"ADDITIONAL_CLASSES_ADMIN.SELECT_RESERVATION")),o(2),p("ngForOf",i.cancellableReservations()),o(2),b(" ",m(249,265,"ADDITIONAL_CLASSES_ADMIN.CANCEL_REASON")," "),o(2),k("ngModel",i.cancelReason),o(),p("ngForOf",i.cancelReasonOptions),o(2),b(" ",m(254,267,"ADDITIONAL_CLASSES_ADMIN.RESTORE_CAP")," "),o(2),k("ngModel",i.restoreCap),o(),p("ngValue",!0),o(),g(m(258,269,"ADD
12ITIONAL_CLASSES_ADMIN.YES")),o(2),p("ngValue",!1),o(),g(m(261,271,"ADDITIONAL_CLASSES_ADMIN.NO")),o(2),p("disabled",i.saving||!i.cancelReservationId),o(),b(" ",m(264,273,"ADDITIONAL_CLASSES_ADMIN.ADMIN_CANCEL")," "),o(4),g(m(268,275,"ADDITIONAL_CLASSES_ADMIN.DATA_HEALTH")),o(4),b(" ",m(272,277,"ADDITIONAL_CLASSES_ADMIN.STUDENT_UID")," "),o(2),k("ngModel",i.usageStudentUid),p("disabled",!i.studentOptions().length),o(2),g(m(276,279,"ADDITIONAL_CLASSES_ADMIN.SELECT_STUDENT")),o(2),p("ngForOf",i.studentOptions()),o(2),b(" ",m(280,281,"ADDITIONAL_CLASSES_ADMIN.PROGRAM_YEAR")," "),o(2),k("ngModel",i.usageProgramYearId),o(),p("ngForOf",i.programYearOptions()),o(),p("disabled",i.saving||!i.usageStudentUid||!i.usageProgramYearId),o(),b(" ",m(285,283,"ADDITIONAL_CLASSES_ADMIN.REBUILD_USAGE")," ")}},dependencies:[Q,$,re,ae,ie,Ve,Ce,Y,Qe,oe,Wi,j],styles:[".additional-admin-shell[_ngcontent-%COMP%]{width:min(1180px,100% - 32px);margin:0 auto;padding:28px 0 48px;color:#1f2933}.admin-header[_ngcontent-%COMP%], .panel-title-row[_ngcontent-%COMP%], .button-row[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;gap:16px}.admin-header[_ngcontent-%COMP%]{margin-bottom:18px}.admin-header[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{margin:0 0 6px;color:#a32157;font-size:12px;font-weight:800;text-transform:uppercase}.admin-header[_ngcontent-%COMP%] h1[_ngcontent-%COMP%]{margin:0;font-size:28px;font-weight:800}.metric-grid[_ngcontent-%COMP%], .admin-grid[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px}.metric[_ngcontent-%COMP%]{padding:16px;border:1px solid #e5e7eb;border-radius:8px;background:#fff}.metric[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{display:block;color:#6b7280;font-size:12px;font-weight:700;text-transform:uppercase}.metric[_ngcontent-%COMP%] strong[_ngcontent-%COMP%]{display:block;margin-top:8px;font-size:28px}.panel[_ngcontent-%COMP%]{margin-top:16px;padding:18px;border:1px solid #e5e7eb;border-radius:8px;background:#fff}.panel[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0 0 16px;font-size:18px;font-weight:800}.panel[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{display:grid;gap:6px;margin-bottom:12px;color:#4b5563;font-size:13px;font-weight:700}.panel[_ngcontent-%COMP%] input[_ngcontent-%COMP%], .panel[_ngcontent-%COMP%] select[_ngcontent-%COMP%]{min-height:42px;width:100%;border:1px solid #d1d5db;border-radius:8px;padding:0 12px;color:#111827;background:#fff}.wide[_ngcontent-%COMP%]{width:100%}.panel-subtitle[_ngcontent-%COMP%]{margin:-10px 0 0;color:#6b7280;font-size:13px;line-height:1.45}.inline-select[_ngcontent-%COMP%]{min-width:220px;margin:0!important}.compact[_ngcontent-%COMP%]{align-items:end}.check-row[_ngcontent-%COMP%]{display:flex!important;grid-template-columns:none!important;align-items:center;gap:10px!important}.check-row[_ngcontent-%COMP%] input[_ngcontent-%COMP%]{min-height:auto;width:18px;height:18px}.primary-button[_ngcontent-%COMP%], .ghost-button[_ngcontent-%COMP%], .icon-button[_ngcontent-%COMP%], .danger-button[_ngcontent-%COMP%]{min-height:42px;border-radius:8px;padding:0 14px;font-weight:800;cursor:pointer}.primary-button[_ngcontent-%COMP%]:disabled, .ghost-button[_ngcontent-%COMP%]:disabled, .icon-button[_ngcontent-%COMP%]:disabled, .danger-button[_ngcontent-%COMP%]:disabled{cursor:not-allowed;opacity:.55}.primary-button[_ngcontent-%COMP%], .icon-button[_ngcontent-%COMP%]{border:0;background:#a32157;color:#fff}.ghost-button[_ngcontent-%COMP%]{border:1px solid #d1d5db;background:#fff;color:#1f2933}.danger-button[_ngcontent-%COMP%]{border:1px solid #fecaca;background:#fff1f2;color:#be123c}.notice[_ngcontent-%COMP%]{margin-bottom:12px;padding:12px 14px;border-radius:8px;font-weight:700}.success[_ngcontent-%COMP%]{background:#ecfdf5;color:#047857}.error[_ngcontent-%COMP%]{background:#fff1f2;color:#be123c}.capacity-strip[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:14px}.capacity-strip[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{padding:8px 10px;border-radius:999px;background:#f3f4f6;color:#374151;font-size:12px;font-weight:800}.reservation-list[_ngcontent-%COMP%]{display:grid;gap:8px;margin-bottom:16px}.reservation-list[_ngcontent-%COMP%] article[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px;border:1px solid #edf0f3;border-radius:8px}.reservation-list[_ngcontent-%COMP%] div[_ngcontent-%COMP%]{display:grid;gap:4px;min-width:0}.reservation-list[_ngcontent-%COMP%] strong[_ngcontent-%COMP%], .reservation-list[_ngcontent-%COMP%] span[_ngcontent-%COMP%], .reservation-list[_ngcontent-%COMP%] small[_ngcontent-%COMP%]{overflow-wrap:anywhere}.open-bonus-panel[_ngcontent-%COMP%]{border-color:#bfebeb;background:linear-gradient(180deg,#fff,#fbffff)}.open-bonus-form[_ngcontent-%COMP%]{margin-top:16px}.open-bonus-list[_ngcontent-%COMP%]{display:grid;gap:10px;margin-top:18px}.open-bonus-list[_ngcontent-%COMP%] article[_ngcontent-%COMP%]{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:14px;align-items:center;padding:14px;border:1px solid #d8f3f3;border-radius:8px;background:#fff}.open-bonus-list[_ngcontent-%COMP%] div[_ngcontent-%COMP%]:first-child{display:grid;gap:4px;min-width:0}.open-bonus-list[_ngcontent-%COMP%] strong[_ngcontent-%COMP%], .open-bonus-list[_ngcontent-%COMP%] span[_ngcontent-%COMP%], .open-bonus-list[_ngcontent-%COMP%] small[_ngcontent-%COMP%]{overflow-wrap:anywhere}.open-bonus-list[_ngcontent-%COMP%] span[_ngcontent-%COMP%], .open-bonus-list[_ngcontent-%COMP%] small[_ngcontent-%COMP%]{color:#6b7280}.open-bonus-reservations[_ngcontent-%COMP%]{margin-top:14px}.empty[_ngcontent-%COMP%]{color:#6b7280}@media (max-width: 700px){.additional-admin-shell[_ngcontent-%COMP%]{width:min(100% - 20px,1180px);padding-top:18px}.admin-header[_ngcontent-%COMP%], .panel-title-row[_ngcontent-%COMP%], .button-row[_ngcontent-%COMP%], .reservation-list[_ngcontent-%COMP%] article[_ngcontent-%COMP%], .open-bonus-list[_ngcontent-%COMP%] article[_ngcontent-%COMP%]{align-items:stretch;flex-direction:column;grid-template-columns:1fr}.primary-button[_ngcontent-%COMP%], .ghost-button[_ngcontent-%COMP%], .icon-button[_ngcontent-%COMP%], .danger-button[_ngcontent-%COMP%]{width:100%}}"]})}}return t})();function zt(t,c,e){return c||!!e&&(t.moderatorId===e||t.createdBy===e)}function fa(t,c,e){return t.filter(n=>yb(n,c,e))}function Ge(t){return t.effectiveStatus||t.status}function ha(t,c){return{all:t.length,attention:t.filter(e=>Ma(e)).length,week:t.filter(e=>Pa(e,c)).length}}function xa(t,c){let e=c.direction==="asc"?1:-1;return[...t].sort((n,i)=>Tb(ua(n,c.key),ua(i,c.key),e))}function ba(t){return t.status==="cancelled"?null:t.status!=="completed"&&Ge(t)==="completed"?"mark_completed":t.pdfUrl?xi(t)&&!t.meetingLink?"generate_meeting":Ge(t)==="completed"&&!t.processedVideo?.processed?"sync_recording":null:"upload_pdf"}function va(t){return{pdf:Ca(!!t.pdfUrl,t.status==="cancelled"),meeting:Ca(!!t.meetingLink,t.status==="cancelled"),recording:Rb(t)}}function Oa(t){let c=new Date(t.startDateTime),e=new Date(c.getTime()+7*864e5);return{title:`${t.title}
12 (copy)`,description:t.description,level:t.level,topic:t.topic,learningOutcomes:t.learningOutcomes,startDateTime:isNaN(e.getTime())?null:e,durationMinutes:t.durationMinutes,capacity:t.capacity,status:"upcoming",moderatorId:t.moderatorId,moderatorName:t.moderatorName,recordingAccess:t.recordingAccess,waitlistEnabled:t.waitlistEnabled,sessionIcon:t.sessionIcon}}function Ma(t){return t.status==="cancelled"?!1:t.status!=="completed"&&Ge(t)==="completed"||xi(t)&&(!t.pdfUrl||!t.meetingLink)?!0:Ge(t)==="completed"&&!t.processedVideo?.processed}function Pa(t,c){if(!xi(t))return!1;let n=(new Date(t.startDateTime).getTime()-c.getTime())/864e5;return Number.isFinite(n)&&n>=0&&n<=7}function yb(t,c,e){return!kb(t,c.search)||c.level&&t.level!==c.level||c.status&&Ge(t)!==c.status?!1:Ab(t,c.scope,e)}function kb(t,c){let e=c.trim().toLowerCase().split(/\s+/).filter(Boolean);if(!e.length)return!0;let n=[t.title,t.topic,t.moderatorName,t.level].filter(Boolean).join(" ").toLowerCase();return e.every(i=>n.includes(i))}function Ab(t,c,e){return c==="attention"?Ma(t):c==="week"?Pa(t,e):!0}function xi(t){let c=Ge(t);return c==="upcoming"||c==="live"}function ua(t,c){return c==="schedule"?new Date(t.startDateTime).getTime()||0:c==="moderator"?t.moderatorName?.toLowerCase()||"":c==="status"?Ge(t):c==="seats"?t.registeredCount||0:String(t[c]||"").toLowerCase()}function Tb(t,c,e){return t<c?-1*e:t>c?e:0}function Ca(t,c){return t?"done":c?"na":"missing"}function Rb(t){return t.processedVideo?.processed?"done":Ge(t)!=="completed"?"na":t.recordingUrl||t.recordingDriveFileId||t.recordingSyncedAt?"warning":"missing"}var Un=class{constructor(){this.selected=new Set}get count(){return this.selected.size}ids(){return[...this.selected]}has(c){return this.selected.has(c)}toggle(c){if(this.selected.has(c)){this.selected.delete(c);return}this.selected.add(c)}selectAll(c,e){let n=c.filter(e).map(i=>i.id);if(n.every(i=>this.selected.has(i))){n.forEach(i=>this.selected.delete(i));return}n.forEach(i=>this.selected.add(i))}retain(c){this.selected=new Set(c.filter(e=>this.selected.has(e)))}clear(){this.selected.clear()}};var Hn=class{constructor(c){this.workspace=c}execute(c,e,n,i){let l=this.eligibleSessions(c,e,n,i);return wi(l).pipe(yi(u=>this.result(u,n)),Ii())}eligibleSessions(c,e,n,i){let l=new Set(e);return c.filter(u=>l.has(u.id)&&i(u)&&this.eligible(u,n))}eligible(c,e){return e==="complete"?c.status!=="completed"&&Ge(c)==="completed":e==="sync"?Ge(c)==="completed":c.status!=="cancelled"}request(c,e){return e==="complete"?this.workspace.completeSession(c.id):e==="sync"?this.workspace.syncRecording(c.id):this.workspace.cancelSession(c.id)}result(c,e){return this.request(c,e).pipe(Oe(()=>({sessionId:c.id,success:!0})),Kt(n=>it({sessionId:c.id,success:!1,error:n})))}};var Sa=(()=>{class t{constructor(e){this.http=e}listSessions(e={status:"all"}){return this.http.getReq("v2/admin/speaking-club/sessions",{params:this.cleanParams(e)}).pipe(Oe(n=>this.unwrap(n,[])))}getSession(e){return this.http.getReq(`v2/admin/speaking-club/sessions/${e}`).pipe(Oe(n=>this.unwrap(n,{})))}createSession(e){return this.http.postReq("v2/admin/speaking-club/sessions",e).pipe(Oe(n=>this.unwrap(n,{})))}removePdf(e){return this.http.deleteReq(`v2/admin/speaking-club/sessions/${e}/materials/pdf`).pipe(Oe(n=>this.unwrap(n,{})))}uploadPdf(e,n){let i=encodeURIComponent(n.name||"speaking-club-material.pdf"),l=new Ki({"Content-Type":n.type||"application/pdf"});return this.http.postReq(`v2/admin/speaking-club/sessions/${e}/materials/pdf/${i}`,n,{headers:l}).pipe(Oe(u=>this.unwrap(u,{})))}generateMeeting(e,n=!1){return this.http.postReq(`v2/admin/speaking-club/sessions/${e}/meeting/generate`,{force:n}).pipe(Oe(i=>this.unwrap(i,{})))}syncRecording(e){return this.http.postReq(`v2/admin/speaking-club/sessions/${e}/recording/sync`,{}).pipe(Oe(n=>this.unwrap(n,{})))}updateSession(e,n){return this.http.putReq(`v2/admin/speaking-club/sessions/${e}`,n).pipe(Oe(i=>this.unwrap(i,{})))}cancelSession(e,n){return this.http.postReq(`v2/admin/speaking-club/sessions/${e}/cancel`,{reason:n}).pipe(Oe(i=>this.unwrap(i,{})))}restoreSession(e,n){return this.http.postReq(`v2/admin/speaking-club/sessions/${e}/restore`,{reason:n}).pipe(Oe(i=>this.unwrap(i,{})))}completeSession(e,n){return this.http.postReq(`v2/admin/speaking-club/sessions/${e}/complete`,{reason:n}).pipe(Oe(i=>this.unwrap(i,{})))}listRegistrations(e){return this.http.getReq(`v2/admin/speaking-club/sessions/${e}/registrations`,{params:{includeWaitlist:!0,includeCancelled:!0}}).pipe(Oe(n=>this.unwrap(n,[])))}auditWarnings(e){return e.flatMap(n=>this.sessionWarnings(n))}sessionStartDate(e){return this.coerceDate(e?.startDateTime)}sessionWarnings(e){let n=[],i=e.title||e.id;return(e.status==="upcoming"||e.status==="live")&&(e.pdfUrl||n.push({type:"missing_pdf",severity:"warning",sessionId:e.id,title:i,message:"Session is upcoming and has no PDF uploaded."}),e.meetingLink||n.push({type:"missing_meeting_link",severity:"danger",sessionId:e.id,title:i,message:"Session is upcoming and has no meeting link."}
12)),e.status!=="cancelled"&&!e.moderatorId&&!e.moderatorName&&n.push({type:"missing_moderator",severity:"warning",sessionId:e.id,title:i,message:"Session has no moderator assigned."}),e.status==="completed"&&!e.recordingUrl&&n.push({type:"missing_recording",severity:"danger",sessionId:e.id,title:i,message:"Completed session has no recording uploaded."}),n}cleanParams(e){return Object.entries(e).reduce((n,[i,l])=>(l==null||l===""||(n[i]=l),n),{})}unwrap(e,n){let i=this.asRecord(e);if(i.success===!1)return n;let l=i.data;return l??n}asRecord(e){return e&&typeof e=="object"?e:{}}coerceDate(e){if(e instanceof Date)return this.validDate(e);let n=this.timestampLikeDate(e);if(n)return n;let i=new Date(e);return this.validDate(i)}timestampLikeDate(e){if(!e||typeof e!="object")return null;let n=e;if(typeof n.toDate=="function")return this.validDate(n.toDate());let i=n._seconds??n.seconds;if(!Number.isFinite(i))return null;let l=n._nanoseconds??n.nanoseconds??0;return this.validDate(new Date(Number(i)*1e3+Math.floor(Number(l)/1e6)))}validDate(e){return isNaN(e.getTime())?null:e}static{this.\u0275fac=function(n){return new(n||t)(Xe(Fe))}}static{this.\u0275prov=Pt({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})();var Gn=(()=>{class t{constructor(e,n,i,l,u,O){this.admin=e,this.users=n,this.overview=i,this.storage=l,this.staffRoles=u,this.http=O,this.sessionChanges=new ve,this.sessionChanges$=this.sessionChanges.asObservable()}listSessions(e){return this.admin.listSessions(e).pipe(Oe(n=>n.map(i=>this.normalizeSession(i))))}sessionStartDate(e){return this.admin.sessionStartDate(e)}getSession(e){return this.admin.getSession(e).pipe(Oe(n=>this.normalizeSession(n)))}listRegistrations(e){return this.admin.listRegistrations(e)}uploadPdf(e,n){return this.changed(this.admin.uploadPdf(e,n))}removePdf(e){return this.changed(this.admin.removePdf(e))}generateMeeting(e,n){return this.changed(this.admin.generateMeeting(e,n))}syncRecording(e){return this.changed(this.admin.syncRecording(e))}cancelSession(e){return this.changed(this.admin.cancelSession(e,"Instructor cancelled"))}restoreSession(e){return this.changed(this.admin.restoreSession(e,"Restored by instructor"))}completeSession(e){return this.changed(this.admin.completeSession(e,"Marked completed by instructor"))}updateSession(e,n){return this.changed(this.admin.updateSession(e,n))}createSession(e){return this.changed(this.admin.createSession(e))}listCohorts(){return this.http.getReq("cohorts").pipe(Oe(e=>(e?.data||[]).filter(n=>n.status==="active").map(n=>({id:n.id,name:n.cityName||n.title?.en||n.title?.fr||n.id}))))}listModerators(){return this.users.listUsers({role:"instructor",pageSize:100}).pipe(Oe(e=>(e.data?.items||[]).filter(n=>!!n.uid).map(n=>({uid:n.uid,name:(n.displayName||n.email||n.uid).trim(),label:n.email&&n.displayName?`${n.displayName} (${n.email})`:n.displayName||n.email||n.uid}))))}currentInstructor(){if(this.storage.getItem("isInstructor")!=="true")return null;let e=this.storage.getItem("userUid")||"";if(!e)return null;let n=this.storage.getItem("userName")||this.storage.getItem("userEmail")||e;return{uid:e,name:n,label:n}}canMutate(e){let n=this.storage.getItem("userUid")||"";return zt(e,this.staffRoles.isAdmin(),n)}changed(e){return e.pipe(Oe(n=>this.normalizeSession(n)),Ri(n=>this.publishChange(n)))}publishChange(e){this.overview.invalidate(),this.sessionChanges.next(e)}normalizeSession(e){let n=this.admin.sessionStartDate(e);return n?Me(W({},e),{startDateTime:n}):e}static{this.\u0275fac=function(n){return new(n||t)(Xe(Sa),Xe(er),Xe(Jo),Xe(We),Xe(gn),Xe(Fe))}}static{this.\u0275prov=Pt({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})();var bi=t=>({timezone:t}),Ea=t=>({count:t}),Nb=()=>[1,2,3,4,5],qn=t=>({title:t}),Vb=(t,c,e)=>({visible:t,total:c,attention:e});function Fb(t,c){if(t&1&&(a(0,"div",41),s(1),_(2,"translate"),r()),t&2){let e=d();o(),g(m(2,1,e.errorMessage))}}function Ub(t,c){if(t&1&&(a(0,"div",42),s(1),_(2,"translate"),r()),t&2){let e=d();o(),g(m(2,1,e.actionMessage))}}function Hb(t,c){if(t&1&&(a(0,"option",43),s(1),r()),t&2){let e=c.$implicit;p("value",e),o(),g(e)}}
12function Gb(t,c){if(t&1&&(a(0,"option",43),s(1),r()),t&2){let e=c.$implicit;p("value",e.uid),o(),g(e.name)}}function qb(t,c){if(t&1){let e=M();a(0,"label")(1,"span",25),s(2),_(3,"translate"),r(),a(4,"select",30),_(5,"translate"),x("ngModelChange",function(i){C(e);let l=d();return f(l.setModerator(i))}),a(6,"option",31),s(7),_(8,"translate"),r(),h(9,Gb,2,2,"option",32),r()()}if(t&2){let e=d();o(2),g(m(3,5,"SPEAKING_CLUB_ADMIN.FILTER_MODERATOR")),o(2),p("ngModel",e.moderatorId),R("aria-label",m(5,7,"SPEAKING_CLUB_ADMIN.FILTER_MODERATOR")),o(3),g(m(8,9,"SPEAKING_CLUB_ADMIN.MODERATOR_ALL")),o(2),p("ngForOf",e.moderators)}}function Wb(t,c){if(t&1&&(a(0,"option",43),s(1),_(2,"translate"),r()),t&2){let e=c.$implicit;p("value",e),o(),g(m(2,2,"SPEAKING_CLUB_ADMIN."+e.toUpperCase()))}}function zb(t,c){if(t&1){let e=M();G(0),a(1,"button",49),x("click",function(){C(e);let i=d(2);return f(i.requestBulkCancel())}),s(2),_(3,"translate"),r(),q()}if(t&2){let e=d(2);o(),p("disabled",e.saving),o(),g(m(3,2,"SPEAKING_CLUB_ADMIN.CANCEL_SESSIONS"))}}function Kb(t,c){if(t&1){let e=M();a(0,"span",50),s(1),_(2,"translate"),r(),a(3,"button",51),x("click",function(){C(e);let i=d(2);return f(i.confirmBulkCancel())}),s(4),_(5,"translate"),r(),a(6,"button",46),x("click",function(){C(e);let i=d(2);return f(i.bulkCancelPending=!1)}),s(7),_(8,"translate"),r()}if(t&2){let e=d(2);o(),g(m(2,5,"SPEAKING_CLUB_ADMIN.CONFIRM_BULK_CANCEL")),o(2),p("disabled",e.saving),o(),g(m(5,7,"SPEAKING_CLUB_ADMIN.CONFIRM")),o(2),p("disabled",e.saving),o(),g(m(8,9,"SPEAKING_CLUB_ADMIN.KEEP_SESSIONS"))}}function $b(t,c){if(t&1){let e=M();a(0,"div",44)(1,"strong"),s(2),_(3,"translate"),r(),v(4,"span",45),a(5,"button",46),x("click",function(){C(e);let i=d();return f(i.runBulkAction("complete"))}),s(6),_(7,"translate"),r(),a(8,"button",46),x("click",function(){C(e);let i=d();return f(i.runBulkAction("sync"))}),s(9),_(10,"translate"),r(),v(11,"span",45),h(12,zb,4,4,"ng-container",47)(13,Kb,9,11,"ng-template",null,2,ke),a(15,"button",48),x("click",function(){C(e);let i=d();return f(i.clearSelection())}),s(16),_(17,"translate"),r()()}if(t&2){let e=pe(14),n=d();o(2),g(B(3,8,"SPEAKING_CLUB_ADMIN.SELECTED_COUNT",D(17,Ea,n.selection.count))),o(3),p("disabled",n.saving),o(),g(m(7,11,"SPEAKING_CLUB_ADMIN.MARK_COMPLETED")),o(2),p("disabled",n.saving),o(),g(m(10,13,"SPEAKING_CLUB_ADMIN.SYNC_RECORDINGS")),o(3),p("ngIf",!n.bulkCancelPending)("ngIfElse",e),o(4),g(m(17,15,"SPEAKING_CLUB_ADMIN.CLEAR"))}}function jb(t,c){t&1&&v(0,"span")}function Qb(t,c){t&1&&(a(0,"div",52),_(1,"translate"),h(2,jb,1,0,"span",53),r()),t&2&&(R("aria-label",m(1,2,"SPEAKING_CLUB_ADMIN.LOADING")),o(2),p("ngForOf",Re(4,Nb)))}function Yb(t,c){if(t&1){let e=M();a(0,"input",81),_(1,"translate"),x("change",function(){C(e);let i=d().$implicit,l=d(2);return f(l.toggleSelection(i))}),r()}if(t&2){let e=d().$implicit,n=d(2);p("checked",n.selection.has(e.id)),R("aria-label",B(1,2,"SPEAKING_CLUB_ADMIN.SELECT_SESSION",D(5,qn,e.title)))}}function Xb(t,c){if(t&1&&(G(0),s(1),q()),t&2){let e=d().$implicit;o(),b(" \xB7 ",e.topic,"")}}function Jb(t,c){if(t&1&&(a(0,"td",82)(1,"strong"),s(2),r(),a(3,"span"),s(4),_(5,"translate"),r()()),t&2){let e=c.ngIf,n=d().$implicit;o(2),g(e.date||"\u2014"),o(2),qe("",e.time||"\u2014"," \xB7 ",n.durationMinutes||90," ",m(5,4,"SPEAKING_CLUB_ADMIN.MIN"),"")}}function Zb(t,c){if(t&1&&(a(0,"span",83),s(1),_(2,"translate"),_(3,"translate"),r()),t&2){let e=d().$implicit,n=d(2);y("derived-status--live",n.displayStatus(e)==="live"),o(),g(n.displayStatus(e)==="completed"?m(2,3,"SPEAKING_CLUB_ADMIN.ENDED_NOT_MARKED"):m(3,5,"SPEAKING_CLUB_ADMIN."+n.displayStatus(e).toUpperCase()))}}function ev(t,c){if(t&1&&(a(0,"td",84)(1,"span",85)(2,"span",86),_(3,"translate"),_(4,"translate"),I(),a(5,"svg",87),v(6,"path",88)(7,"polyline",89),r()(),F(),a(8,"span",86),_(9,"translate"),_(10,"translate"),I(),a(11,"svg",87),v(12,"path",90)(13,"rect",91),r()(),F(),a(14,"span",86),_(15,"translate"),_(16,"translate"),I(),a(17,"svg",87),v(18,"circle",11)(19,"polygon",92),r()()()()),t&2){let e=c.ngIf;o(2),Ze("ready-segment ready-segment--"+e.pdf),R("aria-label",m(3,12,"SPEAKING_CLUB_ADMIN.READINESS_PDF_"+e.pdf.toUpperCase()))("title",m(4,14,"SPEAKING_CLUB_ADMIN.READINESS_PDF_"+e.pdf.toUpperCase())),o(6),Ze("ready-segment ready-segment--"+e.meeting),R("aria-label",m(9,16,"SPEAKING_CLUB_ADMIN.READINESS_MEETING_"+e.meeting.toUpperCase()))("title",m(10,18,"SPEAKING_CLUB_ADMIN.READINESS_MEETING_"+e.meeting.toUpperCase())),o(6),Ze("ready-segment ready-segment--"+e.recording),R("aria-label",m(15,20,"SPEAKING_CLUB_ADMIN.READINESS_RECORDING_"+e.recording.toUpperCase()))("title",m(16,22,"SPEAKING_CLUB_ADMIN.READINESS_RECORDING_"+e.recording.toUpperCase()))}}function tv(t,c){t&1&&(I(),a(0,"svg",87),v(1,"path",104)(2,"polyline",105)(3,"line",106),r()
12)}function nv(t,c){t&1&&(I(),a(0,"svg",87),v(1,"path",90)(2,"rect",91),r())}function iv(t,c){t&1&&(I(),a(0,"svg",87),v(1,"polyline",107)(2,"polyline",108)(3,"path",109),r())}function ov(t,c){t&1&&(I(),a(0,"svg",87),v(1,"path",110)(2,"polyline",111),r())}function rv(t,c){if(t&1){let e=M();a(0,"button",102),x("click",function(){let i=C(e).ngIf,l=d(2).$implicit,u=d(2),O=pe(84);return f(u.runQuickAction(l,i,O))}),v(1,"span",22),a(2,"span"),s(3),_(4,"translate"),r(),h(5,tv,4,0,"svg",103)(6,nv,3,0,"svg",103)(7,iv,4,0,"svg",103)(8,ov,3,0,"svg",103),r()}if(t&2){let e=c.ngIf,n=d(4);p("disabled",n.saving),o(3),g(m(4,6,"SPEAKING_CLUB_ADMIN.QUICK_"+e.toUpperCase())),o(2),p("ngIf",e==="upload_pdf"),o(),p("ngIf",e==="generate_meeting"),o(),p("ngIf",e==="sync_recording"),o(),p("ngIf",e==="mark_completed")}}function av(t,c){if(t&1){let e=M();a(0,"button",112),_(1,"translate"),_(2,"translate"),x("click",function(){C(e);let i=d(2).$implicit,l=d(2);return f(l.copyMeetingLink(i))}),I(),a(3,"svg",87),v(4,"rect",113)(5,"path",114),r(),F(),a(6,"span"),s(7),_(8,"translate"),r()()}if(t&2){let e=d(2).$implicit;R("aria-label",B(1,3,"SPEAKING_CLUB_ADMIN.COPY_MEETING_LINK",D(11,qn,e.title)))("title",B(2,6,"SPEAKING_CLUB_ADMIN.COPY_MEETING_LINK",D(13,qn,e.t
12itle))),o(7),g(m(8,9,"SPEAKING_CLUB_ADMIN.COPY_LINK"))}}function sv(t,c){if(t&1){let e=M();a(0,"button",116),x("click",function(){C(e);let i=d(3).$implicit,l=d(2),u=pe(84);return l.runQuickAction(i,"upload_pdf",u),f(l.menuSessionId="")}),I(),a(1,"svg",26),v(2,"path",104)(3,"polyline",105)(4,"line",106),r(),s(5),_(6,"translate"),r()}t&2&&(o(5),g(m(6,1,"SPEAKING_CLUB_ADMIN.UPLOAD_PDF")))}function lv(t,c){if(t&1){let e=M();a(0,"button",116),x("click",function(){C(e);let i=d(3).$implicit,l=d(2);return l.runQuickAction(i,"generate_meeting"),f(l.menuSessionId="")}),I(),a(1,"svg",26),v(2,"path",90)(3,"rect",91),r(),s(4),_(5,"translate"),r()}if(t&2){let e=d(3).$implicit;o(4),g(m(5,1,e.meetingLink?"SPEAKING_CLUB_ADMIN.REGENERATE_MEETING":"SPEAKING_CLUB_ADMIN.GENERATE_MEETING"))}}function cv(t,c){if(t&1){let e=M();a(0,"button",116),x("click",function(){C(e);let i=d(3).$implicit,l=d(2);return l.runQuickAction(i,"sync_recording"),f(l.menuSessionId="")}),I(),a(1,"svg",26),v(2,"polyline",107)(3,"polyline",108)(4,"path",109),r(),s(5),_(6,"translate"),r()}t&2&&(o(5),g(m(6,1,"SPEAKING_CLUB_ADMIN.SYNC_RECORDING")))}function dv(t,c){if(t&1){let e=M();a(0,"button",116),x("click",function(){C(e);let i=d(3).$implicit,l=d(2);return l.runQuickAction(i,"mark_completed"),f(l.menuSessionId="")}),I(),a(1,"svg",26),v(2,"path",110)(3,"polyline",111),r(),s(4),_(5,"translate"),r()}t&2&&(o(4),g(m(5,1,"SPEAKING_CLUB_ADMIN.MARK_COMPLETED")))}function pv(t,c){if(t&1){let e=M();a(0,"button",125),x("click",function(){C(e);let i=d(3).$implicit,l=d(2);return f(l.runMenuAction(i,"remove_pdf"))}),I(),a(1,"svg",26),v(2,"line",126)(3,"line",127),r(),s(4),_(5,"translate"),r()}t&2&&(o(4),g(m(5,1,"SPEAKING_CLUB_ADMIN.REMOVE_PDF")))}function _v(t,c){if(t&1){let e=M();a(0,"button",125),x("click",function(){C(e);let i=d(3).$implicit,l=d(2);return f(l.runMenuAction(i,"cancel"))}),I(),a(1,"svg",26),v(2,"circle",11)(3,"line",128),r(),s(4),_(5,"translate"),r()}t&2&&(o(4),g(m(5,1,"SPEAKING_CLUB_ADMIN.CANCEL_SESSION")))}function mv(t,c){if(t&1){let e=M();a(0,"button",116),x("click",function(){C(e);let i=d(3).$implicit,l=d(2);return f(l.runMenuAction(i,"restore"))}),I(),a(1,"svg",26),v(2,"polyline",129)(3,"path",130),r(),s(4),_(5,"translate"),r()}t&2&&(o(4),g(m(5,1,"SPEAKING_CLUB_ADMIN.RESTORE_SESSION")))}function gv(t,c){if(t&1){let e=M();a(0,"div",115),x("click",function(i){return C(e),f(i.stopPropagation())}),a(1,"button",116),x("click",function(){C(e);let i=d(2).$implicit,l=d(2);return f(l.runMenuAction(i,"edit"))}),I(),a(2,"svg",26),v(3,"path",117)(4,"path",118),r(),s(5),_(6,"translate"),r(),F(),a(7,"button",116),x("click",function(){C(e);let i=d(2).$implicit,l=d(2);return f(l.runMenuAction(i,"duplicate"))}),I(),a(8,"svg",26),v(9,"rect",113)(10,"path",114),r(),s(11),_(12,"translate"),r(),F(),a(13,"button",116),x("click",function(){C(e);let i=d(2).$implicit,l=d(2);return f(l.runMenuAction(i,"registrations"))}),I(),a(14,"svg",26),v(15,"path",119)(16,"circle",120)(17,"path",121),r(),s(18),_(19,"translate"),r(),h(20,sv,7,3,"button",122)(21,lv,6,3,"button",122)(22,cv,7,3,"button",122)(23,dv,6,3,"button",122),F(),v(24,"span",123),h(25,pv,6,3,"button",124)(26,_v,6,3,"button",124)(27,mv,6,3,"button",122),r()}if(t&2){let e=d(2).$implicit,n=d(2);o(5),g(m(6,10,"SPEAKING_CLUB_ADMIN.EDIT_SESSION")),o(6),g(m(12,12,"SPEAKING_CLUB_ADMIN.DUPLICATE_SESSION")),o(7),g(B(19,14,"SPEAKING_CLUB_ADMIN.VIEW_REGISTERED_COUNT",D(17,Ea,e.registeredCount||0))),o(2),p("ngIf",!e.pdfUrl),o(),p("ngIf",n.displayStatus(e)==="upcoming"||n.displayStatus(e)==="live"),o(),p("ngIf",n.displayStatus(e)==="completed"),o(),p("ngIf",e.status!=="completed"&&n.displayStatus(e)==="completed"),o(2),p("ngIf",e.pdfUrl),o(),p("ngIf",e.status!=="cancelled"),o(),p("ngIf",e.status==="cancelled")}}function uv(t,c){if(t&1){let e=M();a(0,"div",93),h(1,rv,9,8,"button",94)(2,av,9,15,"button",95),a(3,"button",96),_(4,"translate"),x("click",function(i){C(e);let l=d().$implicit,u=d(2);return i.stopPropagation(),f(u.toggleMenu(l.id))}),I(),a(5,"svg",97),v(6,"circle",98)(7,"circle",99)(8,"circle",100),r()(),h(9,gv,28,19,"div",101),r()}if(t&2){let e=d().$implicit,n=d(2);o(),p("ngIf",n.quickAction(e)),o(),p("ngIf",e.meetingLink),o(),R("aria-expanded",n.menuSessionId===e.id)("aria-label",B(4,5,"SPEAKING_CLUB_ADMIN.ACTIONS_FOR",D(8,qn,e.t
12itle))),o(6),p("ngIf",n.menuSessionId===e.id)}}function Cv(t,c){if(t&1){let e=M();a(0,"tr")(1,"td",55),h(2,Yb,2,7,"input",66),r(),a(3,"td",67)(4,"button",68),x("click",function(){let i=C(e).$implicit,l=d(2);return f(l.openSession(i))}),s(5),r(),a(6,"span",69)(7,"b"),s(8),r(),s(9),h(10,Xb,2,1,"ng-container",33),r()(),a(11,"td",70)(12,"span",71),s(13),_(14,"translate"),r()(),h(15,Jb,6,6,"td",72),a(16,"td",73),s(17),_(18,"translate"),r(),a(19,"td",74)(20,"span",75),s(21),_(22,"translate"),r(),h(23,Zb,4,7,"span",76),r(),a(24,"td",77)(25,"strong"),s(26),a(27,"span"),s(28),r()(),a(29,"i",78),v(30,"b"),r()(),h(31,ev,20,24,"td",79),a(32,"td",63),h(33,uv,10,10,"div",80),r()()}if(t&2){let e=c.$implicit,n=d(2);y("table-row--attention",n.quickAction(e))("table-row--cancelled",e.status==="cancelled")("table-row--selected",n.selection.has(e.id)),o(2),p("ngIf",n.canEdit(e)),o(3),g(e.title),o(3),g(e.level),o(),g(e.moderatorName),o(),p("ngIf",e.topic),o(3),g(e.level||m(14,24,"SPEAKING_CLUB_ADMIN.LEVEL_TBA")),o(2),p("ngIf",n.schedule(e)),o(2),g(e.moderatorName||m(18,26,"SPEAKING_CLUB_ADMIN.NO_MODERATOR")),o(3),Ze("status-pill status-pill--"+e.status),o(),g(m(22,28,"SPEAKING_CLUB_ADMIN."+e.status.toUpperCase())),o(2),p("ngIf",e.status!==n.displayStatus(e)),o(3),g(e.registeredCount||0),o(2),b("/",e.capacity||0,""),o(2),Ne("width",e.capacity?(e.registeredCount||0)/e.capacity*100:0,"%"),o(),p("ngIf",n.readiness(e)),o(2),p("ngIf",n.canEdit(e))}}function fv(t,c){t&1&&(a(0,"tr",131)(1,"td",132),s(2),_(3,"translate"),r()()),t&2&&(o(2),g(m(3,1,"SPEAKING_CLUB_ADMIN.NO_SESSIONS")))}function hv(t,c){if(t&1){let e=M();a(0,"div",54)(1,"table"),_(2,"translate"),a(3,"thead")(4,"tr")(5,"th",55)(6,"input",56),_(7,"translate"),x("change",function(){C(e);let i=d();return f(i.toggleAllVisible())}),r()(),a(8,"th")(9,"button",57),x("click",function(){C(e);let i=d();return f(i.sortBy("title"))}),s(10),_(11,"translate"),I(),a(12,"svg",58),v(13,"polyline",59)(14,"polyline",60),r()()(),F(),a(15,"th",61)(16,"button",57),x("click",function(){C(e);let i=d();return f(i.sortBy("level"))}),s(17),_(18,"translate"),I(),a(19,"svg",58),v(20,"polyline",59)(21,"polyline",60),r()()(),F(),a(22,"th")(23,"button",57),x("click",function(){C(e);let i=d();return f(i.sortBy("schedule"))}),s(24),_(25,"translate"),I(),a(26,"svg",58),v(27,"polyline",59)(28,"polyline",60),r()()(),F(),a(29,"th",62)(30,"button",57),x("click",function(){C(e);let i=d();return f(i.sortBy("moderator"))}),s(31),_(32,"translate"),I(),a(33,"svg",58),v(34,"polyline",59)(35,"polyline",60),r()()(),F(),a(36,"th")(37,"button",57),x("click",function(){C(e);let i=d();return f(i.sortBy("status"))}),s(38),_(39,"translate"),I(),a(40,"svg",58),v(41,"polyline",59)(42,"polyline",60),r()()(),F(),a(43,"th")(44,"button",57),x("click",function(){C(e);let i=d();return f(i.sortBy("seats"))}),s(45),_(46,"translate"),I(),a(47,"svg",58),v(48,"polyline",59)(49,"polyline",60),r()()(),F(),a(50,"th"),s(51),_(52,"translate"),r(),v(53,"th",63),r()(),a(54,"tbody"),h(55,Cv,34,30,"tr",64)(56,fv,4,3,"tr",65),r()()()}if(t&2){let e=d();o(),R("aria-label",m(2,18,"SPEAKING_CLUB_ADMIN.SESSION_TABLE")),o(5),R("aria-label",m(7,20,"SPEAKING_CLUB_ADMIN.SELECT_ALL_VISIBLE")),o(2),R("aria-sort",e.sort.key==="title"?e.sort.direction==="asc"?"ascending":"descending":null),o(2),g(m(11,22,"SPEAKING_CLUB_ADMIN.SESSION")),o(5),R("aria-sort",e.sort.key==="level"?e.sort.direction==="asc"?"ascending":"descending":null),o(2),g(m(18,24,"SPEAKING_CLUB_ADMIN.LEVEL")),o(5),R("aria-sort",e.sort.key==="schedule"?e.sort.direction==="asc"?"ascending":"descending":null),o(2),g(m(25,26,"SPEAKING_CLUB_ADMIN.SCHEDULE")),o(5),R("aria-sort",e.sort.key==="moderator"?e.sort.direction==="asc"?"ascending":"descending":null),o(2),g(m(32,28,"SPEAKING_CLUB_ADMIN.MODERATOR")),o(5),R("aria-sort",e.sort.key==="status"?e.sort.direction==="asc"?"ascending":"descending":null),o(2),g(m(39,30,"SPEAKING_CLUB_ADMIN.STATUS")),o(5),R("aria-sort",e.sort.key==="seats"?e.sort.direction==="asc"?"ascending":"descending":null),o(2),g(m(46,32,"SPEAKING_CLUB_ADMIN.SEATS")),o(6),g(m(52,34,"SPEAKING_CLUB_ADMIN.READY")),o(4),p("ngForOf",e.visibleSessions)("ngForTrackBy",e.trackBySession),o(),p("ngIf",!e.visibleSessions.length)}}function xv(t,c){if(t&1&&(a(0,"footer",133)(1,"span"),s(2),_(3,"translate"),r(),a(4,"span"),s(5),_(6,"translate"),r()()),t&2){let e=d();o(2),g(B(3,2,"SPEAKING_CLUB_ADMIN.SHOWING_SESSIONS",ot(8,Vb,e.visibleSessions.length,e.counts.all,e.counts.attention))),o(3),g(B(6,5,"SPEAKING_CLUB_ADMIN.TIMES_IN",D(12,bi,e.timezone)))}}function bv(t,c){if(t&1){let e=M();a(0,"button",134),_(1,"translate"),x("click",function(){C(e);let i=d();return f(i.closeDrawer())}),r()}
12t&2&&R("aria-label",m(1,1,"SPEAKING_CLUB_ADMIN.CLOSE_EDITOR"))}var Ia=(()=>{class t{constructor(e,n,i,l,u){this.workspace=e,this.storage=n,this.staffRoles=i,this.router=l,this.timeZone=u,this.sessions=[],this.moderators=[],this.filters={search:"",level:"",status:"",scope:"all"},this.sort={key:"schedule",direction:"desc"},this.levels=["A1.1","A1.2","A2","B1","B2.1","B2.2"],this.statuses=["upcoming","live","completed","cancelled"],this.searchInput="",this.moderatorId="",this.timezone="UTC",this.userUid="",this.isAdmin=!1,this.loading=!1,this.saving=!1,this.errorMessage="",this.actionMessage="",this.pdfTarget=null,this.bulkCancelPending=!1,this.selection=new Un,this.menuSessionId="",this.searchChanges=new ve,this.destroy$=new ve,this.bulkRunner=new Hn(e)}ngOnInit(){this.configureContext(),this.subscribeToSearch(),this.subscribeToChanges(),this.loadModerators(),this.loadSessions()}ngOnDestroy(){this.destroy$.next(),this.destroy$.complete()}get visibleSessions(){return xa(fa(this.sessions,this.filters,new Date),this.sort)}get counts(){return ha(this.sessions,new Date)}loadSessions(){this.loading=!0,this.errorMessage="";let e=this.isAdmin&&this.moderatorId?{moderatorId:this.moderatorId}:{};this.workspace.listSessions(e).pipe(Pe(()=>{this.loading=!1})).subscribe({next:n=>{this.sessions=this.isAdmin?n||[]:(n||[]).filter(i=>this.canEdit(i))},error:n=>{this.errorMessage=n?.message||"SPEAKING_CLUB_ADMIN.ERROR"}})}setModerator(e){this.clearSelection(),this.moderatorId=e,this.loadSessions()}setScope(e){this.filters.scope=e,this.clearSelection()}setLevel(e){this.filters.level=e,this.clearSelection()}setStatus(e){this.filters.status=e,this.clearSelection()}queueSearch(e){this.searchInput=e,this.searchChanges.next(e)}sortBy(e){let n=this.sort.key===e&&this.sort.direction==="asc"?"desc":"asc";this.sort={key:e,direction:n}}schedule(e){return this.timeZone.formatSessionDateTime(this.workspace.sessionStartDate(e),this.timezone)}canEdit(e){return zt(e,this.isAdmin,this.userUid)}displayStatus(e){return Ge(e)}readiness(e){return va(e)}quickAction(e){return ba(e)}trackBySession(e,n){return n.id}newSession(){this.router.navigate(["/main/dashboard/cohorts/speaking-club","new"])}openSession(e){this.router.navigate(["/main/dashboard/cohorts/speaking-club",e.id])}closeDrawer(){this.router.navigate(["/main/dashboard/cohorts/speaking-club"])}toggleMenu(e){this.menuSessionId=this.menuSessionId===e?"":e}closeMenu(){this.menuSessionId=""}copyMeetingLink(e){return ye(this,null,function*(){if(!e.meetingLink)return;let n=yield Pv(e.meetingLink);this.actionMessage=n?"SPEAKING_CLUB_ADMIN.MEETING_LINK_COPIED":"",this.errorMessage=n?"":"SPEAKING_CLUB_ADMIN.ERROR"})}runMenuAction(e,n){if(this.menuSessionId="",n==="edit"||n==="registrations"){this.openSession(e);return}if(this.canEdit(e)){if(n==="duplicate"){this.runAction(this.workspace.createSession(Oa(e)));return}if(n==="remove_pdf"){this.runAction(this.workspace.removePdf(e.id));return}if(n==="cancel"){this.runAction(this.workspace.cancelSession(e.id));return}if(n==="restore"){this.runAction(this.workspace.restoreSession(e.id));return}this.runQuickAction(e,n)}}toggleSelection(e){this.canEdit(e)&&this.selection.toggle(e.id),this.bulkCancelPending=!1}toggleAllVisible(){this.selection.selectAll(this.visibleSessions,e=>this.canEdit(e)),this.bulkCancelPending=!1}clearSelection(){this.selection.clear(),this.bulkCancelPending=!1}requestBulkCancel(){this.bulkCancelPending=this.selection.count>0}confirmBulkCancel(){this.bulkCancelPending=!1,this.runBulkAction("cancel")}runBulkAction(e){this.saving=!0,this.bulkRunner.execute(this.sessions,this.selection.ids(),e,n=>this.canEdit(n)).pipe(Pe(()=>{this.saving=!1})).subscribe({next:n=>this.handleBulkResults(n),error:n=>{this.errorMessage=n?.message||"SPEAKING_CLUB_ADMIN.ERROR"}})}runQuickAction(e,n,i){if(!n||!this.canEdit(e))return;if(n==="upload_pdf"){this.pdfTarget=e,i?.click();return}let l=this.quickActionRequest(e,n);l&&this.runAction(l)}uploadPdf(e){let n=e.target,i=n.files?.[0];i&&this.pdfTarget&&this.runAction(this.workspace.uploadPdf(this.pdfTarget.id,i)),n.value=""}configureContext(){this.isAdmin=this.staffRoles.isAdmin(),this.userUid=this.storage.getItem("userUid")||"",this.timezone=this.timeZone.getUserTimezone(),this.staffRoles.isInstructor()&&(this.moderatorId=this.userUid)}subscribeToSearch(){this.searchChanges.pipe(ki(200),Ai(),U(this.destroy$)).subscribe(e=>{this.filters.search=e,this.clearSelection()})}subscribeToChanges(){this.workspace.sessionChanges$.pipe(U(this.destroy$)).subscribe(e=>this.patchSession(e))}loadModerators(){this.workspace.listModerators().subscribe(e=>{this.moderators=vv(e,this.workspace.currentInstructor())})}patchSession(e){this.sessions=Ov(this.sessions,e,this.moderatorId,this.isAdmin,this.userUid),this.selection.retain(this.visibleSessions.filter(n=>this.canEdit(n)).map(n=>n.id))}quickActionRequest(e,n){return n==="generate_meeting"?this.workspace.generateMeeting(e.id,!!e.meetingLink):n==="sync_recording"?this.workspace.syncRecording(e.id):n==="mark_completed"?this.workspace.completeSession(e.id):null}runAction(e){this.saving=!0,this.errorMessage="",e.pipe(Pe(()=>{this.saving=!1})).subscribe({next:()=>{this.actionMessage="SPEAKING_CLUB_ADMIN.ACTION_COMPLETE"},error:n=>
12{this.errorMessage=n?.message||"SPEAKING_CLUB_ADMIN.ERROR"}})}handleBulkResults(e){let n=Mv(e);this.actionMessage=n.actionMessage,this.errorMessage=n.errorMessage,n.retainIds&&this.selection.retain(n.retainIds),n.clear&&this.clearSelection()}static{this.\u0275fac=function(n){return new(n||t)(w(Gn),w(We),w(gn),w(ue),w(Nt))}}static{this.\u0275cmp=H({type:t,selectors:[["app-speaking-club-admin"]],hostBindings:function(n,i){n&1&&x("click",function(){return i.closeMenu()},!1,ht)("keydown.escape",function(){return i.closeMenu()},!1,ht)},decls:90,vars:87,consts:[["pdfInput",""],["drawerOutlet","outlet"],["bulkCancelConfirmation",""],[1,"table-page"],[1,"table-topbar"],[1,"table-brand"],["aria-hidden","true",1,"brand-mark"],["width","20","height","20","viewBox","0 0 24 24","fill","none","stroke","currentColor","stroke-width","2","stroke-linecap","round","stroke-linejoin","round"],["d","M21 11.5a8.38 8.38 0 0 1-.9 3.8 8.5 8.5 0 0 1-7.6 4.7 8.38 8.38 0 0 1-3.8-.9L3 21l1.9-5.7a8.38 8.38 0 0 1-.9-3.8 8.5 8.5 0 0 1 4.7-7.6 8.38 8.38 0 0 1 3.8-.9h.5a8.48 8.48 0 0 1 8 8v.5z"],[1,"timezone-label"],["width","14","height","14","viewBox","0 0 24 24","fill","none","stroke","currentColor","stroke-width","2","stroke-linecap","round","stroke-linejoin","round","aria-hidden","true"],["cx","12","cy","12","r","10"],["points","12 6 12 12 16 14"],["type","button",1,"button","button--primary",3,"click"],["width","15","height","15","viewBox","0 0 24 24","fill","none","stroke","currentColor","stroke-width","2.4","stroke-linecap","round","stroke-linejoin","round","aria-hidden","true"],["d","M12 5v14M5 12h14"],["class","notice notice--error","role","alert",4,"ngIf"],["class","notice notice--success","role","status","aria-live","polite",4,"ngIf"],[1,"table-console"],[1,"table-toolbar"],["role","group",1,"count-chips"],["type","button",1,"count-chip",3,"click"],["aria-hidden","true",1,"attention-dot"],[1,"toolbar-spacer"],[1,"table-search"],[1,"visually-hidden"],["width","15","height","15","viewBox","0 0 24 24","fill","none","stroke","currentColor","stroke-width","2","stroke-linecap","round","stroke-linejoin","round","aria-hidden","true"],["cx","11","cy","11","r","8"],["x1","21","y1","21","x2","16.65","y2","16.65"],["type","search",3,"ngModelChange","ngModel","placeholder"],[1,"filter-select",3,"ngModelChange","ngModel"],["value",""],[3,"value",4,"ngFor","ngForOf"],[4,"ngIf"],["class","bulk-bar",4,"ngIf"],["class","table-skeleton","aria-busy","true",4,"ngIf"],["class","table-wrap",4,"ngIf"],["class","table-footer",4,"ngIf"],["type","file","accept","application/pdf","hidden","",3,"change"],[1,"route-drawer"],["type","button","class","drawer-scrim",3,"click",4,"ngIf"],["role","alert",1,"notice","notice--error"],["role","status","aria-live","polite",1,"notice","notice--success"],[3,"value"],[1,"bulk-bar"],["aria-hidden","true",1,"bulk-divider"],["type","button",1,"button","button--small",3,"click","disabled"],[4,"ngIf","ngIfElse"],["type","button",1,"clear-selection",3,"click"],["type","button",1,"button-danger-ghost",3,"click","disabled"],[1,"confirm-copy"],["type","button",1,"button-danger",3,"click","disabled"],["aria-busy","true",1,"table-skeleton"],[4,"ngFor","ngForOf"],[1,"table-wrap"],[1,"cell-check"],["type","checkbox",3,"change"],["type","button",1,"sort-button",3,"click"],["width","11","height","11","viewBox","0 0 24 24","fill","none","stroke","currentColor","stroke-width","3","stroke-linecap","round","stroke-linejoin","round","aria-hidden","true"],["points","7 9 12 4 17 9"],["points","7 15 12 20 17 15"],[1,"head-level"],[1,"head-moderator"],[1,"cell-actions"],[3,"table-row--attention","table-row--cancelled","table-row--selected",4,"ngFor","ngForOf","ngForTrackBy"],["class","empty-row",4,"ngIf"],["type","checkbox",3,"checked","change",4,"ngIf"],[1,"cell-title"],["type","button",1,"session-link",3,"click"],[1,"title-meta"],[1,"cell-level"],[1,"level-pill"],["class","cell-schedule",4,"ngIf"],[1,"cell-moderator"],[1,"cell-status"],[1,"status-pill"],["class","derived-status",3,"derived-status--live",4,"ngIf"],[1,"cell-seats"],["aria-hidden","true"],["class","cell-ready",4,"ngIf"],["class","action-wrap",4,"ngIf"],["type","checkbox",3,"change","checked"],[1,"cell-schedule"],[1,"derived-status"],[1,"cell-ready"],[1,"readiness-strip"],["role","img",1,"ready-segment"],["
12width","13","height","13","viewBox","0 0 24 24","fill","none","stroke","currentColor","stroke-width","2","stroke-linecap","round","stroke-linejoin","round","aria-hidden","true"],["d","M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"],["points","14 2 14 8 20 8"],["d","M23 7l-7 5 7 5V7z"],["x","1","y","5","width","15","height","14","rx","2"],["points","10 8 16 12 10 16 10 8"],[1,"action-wrap"],["type","button","class","quick-fix",3,"disabled","click",4,"ngIf"],["type","button","class","copy-meet",3,"click",4,"ngIf"],["type","button","aria-haspopup","menu",1,"kebab",3,"click"],["width","16","height","16","viewBox","0 0 24 24","fill","currentColor","aria-hidden","true"],["cx","12","cy","5","r","1.8"],["cx","12","cy","12","r","1.8"],["cx","12","cy","19","r","1.8"],["class","row-menu","role","menu",3,"click",4,"ngIf"],["type","button",1,"quick-fix",3,"click","disabled"],["width","13","height","13","viewBox","0 0 24 24","fill","none","stroke","currentColor","stroke-width","2","stroke-linecap","round","stroke-linejoin","round","aria-hidden","true",4,"ngIf"],["d","M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"],["points","17 8 12 3 7 8"],["x1","12","y1","3","x2","12","y2","15"],["points","23 4 23 10 17 10"],["points","1 20 1 14 7 14"],["d","M3.51 9a9 9 0 0 1 14.85-3.36L23 10M1 14l4.64 4.36A9 9 0 0 0 20.49 15"],["d","M22 11.08V12a10 10 0 1 1-5.93-9.14"],["points","22 4 12 14.01 9 11.01"],["type","button",1,"copy-meet",3,"click"],["x","9","y","9","width","13","height","13","rx","2"],["d","M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"],["role","menu",1,"row-menu",3,"click"],["type","button","role","menuitem",3,"click"],["d","M12 20h9"],["d","M16.5 3.5a2.12 2.12 0 0 1 3 3L7 19l-4 1 1-4z"],["d","M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"],["cx","9","cy","7","r","4"],["d","M23 21v-2a4 4 0 0 0-3-3.87"],["type","button","role","menuitem",3,"click",4,"ngIf"],["aria-hidden","true",1,"menu-divider"],["type","button","class","danger-item","role","menuitem",3,"click",4,"ngIf"],["type","button","role","menuitem",1,"danger-item",3,"click"],["x1","18","y1","6","x2","6","y2","18"],["x1","6","y1","6","x2","18","y2","18"],["x1","4.93","y1","4.93","x2","19.07","y2","19.07"],["points","1 4 1 10 7 10"],["d","M3.51 15a9 9 0 1 0 2.13-9.36L1 10"],[1,"empty-row"],["colspan","9"],[1,"table-footer"],["type","button",1,"drawer-scrim",3,"click"]],template:function(n,i){if(n&1){let l=M();a(0,"section",3)(1,"header",4)(2,"div",5)(3,"span",6),I(),a(4,"svg",7),v(5,"path",8),r()(),F(),a(6,"div")(7,"p"),s(8),_(9,"translate"),r(),a(10,"h1"),s(11),_(12,"translate"),r()()(),a(13,"div",9),_(14,"translate"),I(),a(15,"svg",10),v(16,"circle",11)(17,"polyline",12),r(),s(18),_(19,"translate"),r(),F(),a(20,"button",13),x("click",function(){return C(l),f(i.newSession())}),I(),a(21,"svg",14),v(22,"path",15),r(),F(),a(23,"span"),s(24),_(25,"translate"),r()()(),h(26,Fb,3,3,"div",16)(27,Ub,3,3,"div",17),a(28,"section",18)(29,"div",19)(30,"div",20),_(31,"translate"),a(32,"button",21),x("click",function(){return C(l),f(i.setScope("all"))}),s(33),_(34,"translate"),a(35,"strong"),s(36),r()(),a(37,"button",21),x("click",function(){return C(l),f(i.setScope("attention"))}),v(38,"span",22),s(39),_(40,"translate"),a(41,"strong"),s(42),r()(),a(43,"button",21),x("click",function(){return C(l),f(i.setScope("week"))}),s(44),_(45,"translate"),a(46,"strong"),s(47),r()()(),v(48,"div",23),a(49,"label",24)(50,"span",25),s(51),_(52,"translate"),r(),I(),a(53,"svg",26),v(54,"circle",27)(55,"line",28),r(),F(),a(56,"input",29),_(57,"translate"),x("ngModelChange",function(O){return C(l),f(i.queueSearch(O))}),r()(),a(58,"label")(59,"span",25),s(60),_(61,"translate"),r(),a(62,"select",30),_(63,"translate"),x("ngModelChange",function(O){return C(l),f(i.setLevel(O))}),a(64,"option",31),s(65),_(66,"translate"),r(),h(67,Hb,2,2,"option",32),r()(),h(68,qb,10,11,"label",33),a(69,"label")(70,"span",25),s(71),_(72,"translate"),r(),a(73,"select",30),_(74,"translate"),x("ngModelChange",function(O){return C(l),f(i.setStatus(O))}),a(75,"option",31),s(76),_(77,"translate"),r(),h(78,Wb,3,4,"option",32),r()()(),h(79,$b,18,19,"div",34)(80,Qb,3,5,"div",35)(81,hv,57,36,"div",36)(82,xv,7,14,"footer",37),r(),a(83,"input",38,0),x("change",function(O){return C(l),f(i.uploadPdf(O))}),r()(),a(85,"aside",39),_(86,"translate"),v(87,"router-outlet",null,1),r(),h(89,bv,2,3,"button",40)}if(n&2){let l=pe(88);o(8),g(m(9,45,"SPEAKING_CLUB_ADMIN.SPEAKING_CLUB")),o(3),g(m(12,47,"SPEAKING_CLUB_ADMIN.SESSIONS_TITLE")),o(2),R("title",B(14,49,"SPEAKING_CLUB_ADMIN.ALL_TIMES_IN",D(83,bi,i.timezone))),o(5),b(" ",B(19,52,"SPEAKING_CLUB_ADMIN.ALL_TIMES_IN",D(85,bi,i.timezone))," "),o(6),g(m(25,55,"SPEA
12KING_CLUB_ADMIN.NEW_SESSION")),o(2),p("ngIf",i.errorMessage),o(),p("ngIf",i.actionMessage&&!i.errorMessage),o(3),R("aria-label",m(31,57,"SPEAKING_CLUB_ADMIN.FILTER_SESSIONS")),o(2),y("active",i.filters.scope==="all"),o(),b(" ",m(34,59,"SPEAKING_CLUB_ADMIN.ALL_SESSIONS")," "),o(3),g(i.counts.all),o(),y("active",i.filters.scope==="attention"),o(2),b("",m(40,61,"SPEAKING_CLUB_ADMIN.NEEDS_ATTENTION")," "),o(3),g(i.counts.attention),o(),y("active",i.filters.scope==="week"),o(),b(" ",m(45,63,"SPEAKING_CLUB_ADMIN.THIS_WEEK")," "),o(3),g(i.counts.week),o(4),g(m(52,65,"SPEAKING_CLUB_ADMIN.SEARCH")),o(5),p("ngModel",i.searchInput)("placeholder",m(57,67,"SPEAKING_CLUB_ADMIN.SEARCH_SESSIONS")),o(4),g(m(61,69,"SPEAKING_CLUB_ADMIN.FILTER_LEVEL")),o(2),p("ngModel",i.filters.level),R("aria-label",m(63,71,"SPEAKING_CLUB_ADMIN.FILTER_LEVEL")),o(3),g(m(66,73,"SPEAKING_CLUB_ADMIN.LEVEL_ALL")),o(2),p("ngForOf",i.levels),o(),p("ngIf",i.isAdmin),o(3),g(m(72,75,"SPEAKING_CLUB_ADMIN.FILTER_STATUS")),o(2),p("ngModel",i.filters.status),R("aria-label",m(74,77,"SPEAKING_CLUB_ADMIN.FILTER_STATUS")),o(3),g(m(77,79,"SPEAKING_CLUB_ADMIN.STATUS_ALL")),o(2),p("ngForOf",i.statuses),o(),p("ngIf",i.selection.count),o(),p("ngIf",i.loading),o(),p("ngIf",!i.loading&&!i.errorMessage),o(),p("ngIf",!i.loading&&!i.errorMessage),o(3),y("route-drawer--open",l.isActivated),R("role",l.isActivated?"dialog":null)("aria-modal",l.isActivated?"true":null)("aria-label",l.isActivated?m(86,81,"SPEAKING_CLUB_ADMIN.SESSION_EDITOR"):null)("aria-hidden",!l.isActivated),o(4),p("ngIf",l.isActivated)}},dependencies:[Q,$,re,ae,ie,Ce,Y,oe,cn,j],styles:[`[_nghost-%COMP%]{--teal: #29e4e4;--teal-600: #21b6b6;--teal-700: #188888;--teal-soft: #e7f7f7;--teal-tint: #f2fbfb;--rose: #e11d48;--rose-soft: rgba(225, 29, 72, .08);--amber: #f59e0b;--amber-soft: rgba(245, 158, 11, .12);--ink: #212529;--mid: #374151;--muted: #6b7280;--line: #e5e7eb;--bg: #f6f7f9;display:block}*[_ngcontent-%COMP%]{box-sizing:border-box}button[_ngcontent-%COMP%], input[_ngcontent-%COMP%], select[_ngcontent-%COMP%]{font:inherit}button[_ngcontent-%COMP%]{cursor:pointer}svg[_ngcontent-%COMP%]{display:block;flex:none}.table-page[_ngcontent-%COMP%]{max-width:1280px;margin:0 auto;padding:20px clamp(12px,3vw,28px) 56px;color:var(--ink);font-family:Montserrat,sans-serif;font-size:14px;line-height:1.45}.table-topbar[_ngcontent-%COMP%]{display:flex;align-items:center;gap:16px;flex-wrap:wrap;margin-bottom:16px}.table-brand[_ngcontent-%COMP%]{display:flex;align-items:center;gap:12px;min-width:0}.brand-mark[_ngcontent-%COMP%]{width:38px;height:38px;border-radius:11px;background:var(--teal-soft);color:var(--teal-700);display:grid;place-items:center}.table-brand[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{margin:0;color:var(--muted);font-size:11px;font-weight:600;letter-spacing:.08em;text-transform:uppercase}.table-brand[_ngcontent-%COMP%] h1[_ngcontent-%COMP%]{margin:0;font-size:19px;font-weight:800;letter-spacing:-.01em}.timezone-label[_ngcontent-%COMP%]{display:flex;align-items:center;gap:6px;margin-left:auto;color:var(--muted);font-size:12px;font-weight:500}.timezone-label[_ngcontent-%COMP%] svg[_ngcontent-%COMP%]{color:var(--teal-700)}.button[_ngcontent-%COMP%]{display:inline-flex;align-items:center;justify-content:center;gap:7px;padding:9px 14px;border:1px solid var(--line);border-radius:10px;background:#fff;color:var(--mid);font-size:13px;font-weight:600}.button[_ngcontent-%COMP%]:hover{border-color:var(--teal-600);background:var(--teal-tint);color:var(--teal-700)}.button[_ngcontent-%COMP%]:disabled{cursor:wait;opacity:.55}.button--primary[_ngcontent-%COMP%]{border-color:var(--teal-600);background:var(--teal-600);color:#fff}.button--primary[_ngcontent-%COMP%]:hover{border-color:var(--teal-700);background:var(--teal-700);color:#fff}.button--small[_ngcontent-%COMP%]{padding:6px 11px;border-radius:8px;font-size:12px}.table-console[_ngcontent-%COMP%]{overflow:visible;border:1px solid var(--line);border-radius:16px;background:#fff;box-shadow:0 1px 3px #141e280d}.table-toolbar[_ngcontent-%COMP%]{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:12px 16px;border-bottom:1px solid var(--line)}.count-chips[_ngcontent-%COMP%]{display:flex;gap:8px;flex-wrap:wrap}.count-chip[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:7px;padding:6px 12px;border:1px solid var(--line);border-radius:999px;background:#fff;
12color:var(--mid);font-size:12.5px;font-weight:600}.count-chip[_ngcontent-%COMP%] strong[_ngcontent-%COMP%]{font-size:12.5px;font-weight:800}.count-chip[_ngcontent-%COMP%]:hover{border-color:var(--teal-600);color:var(--teal-700)}.count-chip.active[_ngcontent-%COMP%]{border-color:var(--teal-600);background:var(--teal-soft);color:var(--teal-700)}.attention-dot[_ngcontent-%COMP%]{width:7px;height:7px;border-radius:50%;background:var(--amber);flex:none}.toolbar-spacer[_ngcontent-%COMP%]{flex:1}.table-search[_ngcontent-%COMP%]{position:relative;display:flex;align-items:center}.table-search[_ngcontent-%COMP%] svg[_ngcontent-%COMP%]{position:absolute;left:10px;color:var(--muted);pointer-events:none}.table-search[_ngcontent-%COMP%] input[_ngcontent-%COMP%]{width:210px;padding:8px 12px 8px 33px;border:1px solid var(--line);border-radius:10px;background:#fff;color:var(--ink);font-size:13px}.table-search[_ngcontent-%COMP%] input[_ngcontent-%COMP%]:focus, .filter-select[_ngcontent-%COMP%]:focus{outline:2px solid var(--teal);outline-offset:-1px;border-color:var(--teal-600)}.filter-select[_ngcontent-%COMP%]{appearance:none;min-width:128px;padding:8px 28px 8px 11px;border:1px solid var(--line);border-radius:10px;background:#fff;color:var(--mid);font-size:12.5px;font-weight:600;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%236B7280' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'><polyline points='6 9 12 15 18 9'/></svg>");background-repeat:no-repeat;background-position:right 9px center}.bulk-bar[_ngcontent-%COMP%]{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:9px 16px;border-bottom:1px solid var(--line);background:var(--teal-tint)}.bulk-bar[_ngcontent-%COMP%] > strong[_ngcontent-%COMP%]{color:var(--teal-700);font-size:12.5px}.bulk-divider[_ngcontent-%COMP%]{width:1px;height:20px;background:var(--line)}.clear-selection[_ngcontent-%COMP%]{margin-left:auto;padding:6px;border:0;background:none;color:var(--muted);font-size:12px;font-weight:600}.button-danger-ghost[_ngcontent-%COMP%], .button-danger[_ngcontent-%COMP%]{padding:7px 9px;border:0;border-radius:8px;background:none;color:var(--rose);font-size:12px;font-weight:700}.button-danger-ghost[_ngcontent-%COMP%]:hover, .button-danger[_ngcontent-%COMP%]{background:var(--rose-soft)}.button-danger[_ngcontent-%COMP%]{border:1px solid rgba(225,29,72,.28)}.confirm-copy[_ngcontent-%COMP%]{color:var(--rose);font-size:12px;font-weight:600}.table-wrap[_ngcontent-%COMP%]{width:100%}table[_ngcontent-%COMP%]{width:100%;border-collapse:collapse}thead[_ngcontent-%COMP%] th[_ngcontent-%COMP%]{position:sticky;top:0;z-index:3;padding:9px 10px;border-bottom:1px solid var(--line);background:#fff;color:var(--muted);text-align:left;font-size:10.5px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;white-space:nowrap}.sort-button[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:4px;padding:0;border:0;background:none;color:inherit;font:inherit;text-transform:inherit}.sort-button[_ngcontent-%COMP%]:hover{color:var(--teal-700)}.sort-button[_ngcontent-%COMP%] svg[_ngcontent-%COMP%]{opacity:.38}tbody[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{padding:9px 10px;border-bottom:1px solid var(--line);vertical-align:middle;font-size:13px}tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]{position:relative}tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:hover, .table-row--selected[_ngcontent-%COMP%]{background:var(--teal-tint)}tbody[_ngcontent-%COMP%] tr.table-row--attention[_ngcontent-%COMP%]{box-shadow:inset 3px 0 0 var(--amber)}tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:last-child td[_ngcontent-%COMP%]{border-bottom:0}.table-row--cancelled[_ngcontent-%COMP%] .session-link[_ngcontent-%COMP%], .table-row--cancelled[_ngcontent-%COMP%] .cell-schedule[_ngcontent-%COMP%], .table-row--cancelled[_ngcontent-%COMP%] .cell-moderator[_ngcontent-%COMP%]{color:var(--muted)}.table-row--cancelled[_ngcontent-%COMP%] .session-link[_ngcontent-%COMP%]{text-decoration:line-through;text-decoration-color:#6b728080}.cell-check[_ngcontent-%COMP%]{width:36px;padding-right:0!important}input[type=checkbox][_ngcontent-%COMP%]{appearance:none;width:16px;height:16px;margin:0;display:inline-grid;place-content:center;border:1.5px solid #cfd4da;border-radius:5px;background:#fff}input[type=checkbox][_ngcontent-%COMP%]:checked{border-color:var(--teal-600);background:var(--teal-600)}input[type=checkbox][_ngcontent-%COMP%]:checked:after{content:"";width:9px;height:9px;background:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='4' stroke-linecap='round' stroke-linejoin='round'><polyline points='20 6 9 17 4 12'/></svg>") center/contain no-repeat}.cell-title[_ngcontent-%COMP%]{min-width:170px;max-width:340px}.session-link[_ngcontent-%COMP%]{display:-webkit-box;overflow:hidden;padding:0;border:0;background:none;color:var(--ink);text-align:left;font-size:13px;font-weight:600;line-height:1.3;-webkit-line-clamp:2;-webkit-box-orient:vertical}.session-link[_ngcontent-%COMP%]:hover{color:var(--teal-700)}.title-meta[_ngcontent-%COMP%]{display:none;margin-top:2px;color:var(--muted);font-size:11.5px}.title-meta[_ngcontent-%COMP%] b[_ngcontent-%COMP%]{display:none;margin-right:4px;color:var(--teal-700)}.level-pill[_ngcontent-%COMP%]{display:inline-block;padding:2.5px 7px;border-radius:6px;background:var(--teal-soft);color:var(--teal-700);font-size:11px;font-weight:700;white-space:nowrap}.cell-schedule[_ngcontent-%COMP%]{white-space:nowrap}.cell-schedule[_ngcontent-%COMP%] strong[_ngcontent-%COMP%], .cell-schedule[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{display:block}.cell-schedule[_ngcontent-%COMP%] strong[_ngcontent-%COMP%]{font-size:12.5px;font-weight:600}.cell-schedule[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{color:var(--muted);font-size:11.5px}
12.cell-moderator[_ngcontent-%COMP%]{color:var(--mid);font-size:12.5px;font-weight:500;white-space:nowrap}.status-pill[_ngcontent-%COMP%]{display:inline-block;padding:3px 9px;border-radius:999px;font-size:11px;font-weight:700;white-space:nowrap}.status-pill--upcoming[_ngcontent-%COMP%]{background:var(--teal-soft);color:var(--teal-700)}.status-pill--live[_ngcontent-%COMP%]{background:var(--teal-600);color:#fff}.status-pill--completed[_ngcontent-%COMP%]{box-shadow:inset 0 0 0 1px var(--line);background:var(--bg);color:var(--mid)}.status-pill--cancelled[_ngcontent-%COMP%]{background:var(--rose-soft);color:var(--rose)}.derived-status[_ngcontent-%COMP%]{display:block;margin-top:3px;color:var(--amber);font-size:10.5px;font-weight:600;white-space:nowrap}.derived-status--live[_ngcontent-%COMP%]{color:var(--teal-700)}.cell-seats[_ngcontent-%COMP%]{white-space:nowrap}.cell-seats[_ngcontent-%COMP%] > strong[_ngcontent-%COMP%]{font-size:12.5px}.cell-seats[_ngcontent-%COMP%] > strong[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{color:var(--muted);font-size:11.5px;font-weight:500}.cell-seats[_ngcontent-%COMP%] i[_ngcontent-%COMP%]{display:block;width:38px;height:4px;margin-top:4px;overflow:hidden;border-radius:2px;background:var(--line)}.cell-seats[_ngcontent-%COMP%] i[_ngcontent-%COMP%] b[_ngcontent-%COMP%]{display:block;height:100%;border-radius:2px;background:var(--teal-600)}.readiness-strip[_ngcontent-%COMP%]{display:inline-flex}.ready-segment[_ngcontent-%COMP%]{width:32px;height:24px;margin-left:-1px;display:grid;place-items:center;border:1px solid var(--line);background:#fff}.ready-segment[_ngcontent-%COMP%]:first-child{margin-left:0;border-radius:7px 0 0 7px}.ready-segment[_ngcontent-%COMP%]:last-child{border-radius:0 7px 7px 0}.ready-segment--done[_ngcontent-%COMP%]{z-index:1;border-color:#21b6b673;background:var(--teal-soft);color:var(--teal-700)}.ready-segment--missing[_ngcontent-%COMP%], .ready-segment--warning[_ngcontent-%COMP%]{z-index:2;border-color:#f59e0b80;background:var(--amber-soft);color:var(--amber)}.ready-segment--na[_ngcontent-%COMP%]{background:var(--bg);color:var(--muted)}.ready-segment--na[_ngcontent-%COMP%] svg[_ngcontent-%COMP%]{opacity:.18}.cell-actions[_ngcontent-%COMP%]{width:1%;text-align:right;white-space:nowrap}.action-wrap[_ngcontent-%COMP%]{position:relative;display:inline-flex;align-items:center;justify-content:flex-end;gap:6px}.quick-fix[_ngcontent-%COMP%], .copy-meet[_ngcontent-%COMP%]{display:inline-flex;align-items:center;border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--teal-700);font-size:11.5px;font-weight:700;white-space:nowrap}.quick-fix[_ngcontent-%COMP%]{gap:6px;padding:5px 10px}.copy-meet[_ngcontent-%COMP%]{height:28px;gap:5px;padding:0 8px}.quick-fix[_ngcontent-%COMP%]:hover, .copy-meet[_ngcontent-%COMP%]:hover{border-color:var(--teal-600);background:var(--teal-soft)}.kebab[_ngcontent-%COMP%]{width:28px;height:28px;display:inline-grid;place-items:center;border:0;border-radius:8px;background:none;color:var(--muted)}.kebab[_ngcontent-%COMP%]:hover{background:var(--teal-soft);color:var(--teal-700)}.row-menu[_ngcontent-%COMP%]{position:absolute;display:grid;grid-template-columns:minmax(0,1fr);top:calc(100% + 6px);right:0;z-index:30;width:218px;max-width:calc(100vw - 24px);padding:6px;border:1px solid var(--line);border-radius:12px;background:#fff;box-shadow:0 10px 34px #141e2824}.row-menu[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{display:flex;align-items:center;gap:10px;min-width:0;width:100%;padding:8px 10px;border:0;border-radius:8px;background:none;color:var(--mid);text-align:left;font-size:12.5px;font-weight:600;white-space:normal}.row-menu[_ngcontent-%COMP%] button[_ngcontent-%COMP%] svg[_ngcontent-%COMP%]{flex:0 0 auto}.row-menu[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:hover{background:var(--teal-tint);color:var(--teal-700)}.row-menu[_ngcontent-%COMP%] .danger-item[_ngcontent-%COMP%]{color:var(--rose)}.row-menu[_ngcontent-%COMP%] .danger-item[_ngcontent-%COMP%]:hover{background:var(--rose-soft);color:var(--rose)}.menu-divider[_ngcontent-%COMP%]{display:block;height:1px;margin:6px 8px;background:var(--line)}.empty-row[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{padding:34px 16px;color:var(--muted);text-align:center}.table-footer[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:10px 16px;border-top:1px solid var(--line);color:var(--muted);font-size:12px}.table-footer[_ngcontent-%COMP%] span[_ngcontent-%COMP%]:last-child{margin-left:auto}.table-skeleton[_ngcontent-%COMP%]{display:grid;gap:1px;background:var(--line)}.table-skeleton[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{height:54px;background:linear-gradient(90deg,#fff 22%,var(--bg) 50%,#fff 78%);background-size:220% 100%;animation:_ngcontent-%COMP%_table-shimmer 1.35s infinite}@keyframes _ngcontent-%COMP%_table-shimmer{to{background-position:-220% 0}}.notice[_ngcontent-%COMP%]{margin-bottom:12px;padding:10px 14px;border-radius:10px;font-size:12.5px;font-weight:600}.notice--error[_ngcontent-%COMP%]{background:var(--rose-soft);color:var(--rose)}.notice--success[_ngcontent-%COMP%]{background:var(--teal-soft);color:var(--teal-700)}.route-drawer[_ngcontent-%COMP%]{position:fixed;inset:0 0 0 auto;z-index:1500;width:min(460px,100%);overflow:hidden;border-left:1px solid var(--line);background:#fff;box-shadow:-14px 0 40px #141e2824;transform:translate(102%);transition:transform .26s cubic-bezier(.2,.7,.25,1)}.route-drawer--open[_ngcontent-%COMP%]{transform:translate(0)}
12.drawer-scrim[_ngcontent-%COMP%]{position:fixed;inset:0;z-index:1490;border:0;background:#141e2838;cursor:default}.visually-hidden[_ngcontent-%COMP%]{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@media (max-width: 1024px){.cell-moderator[_ngcontent-%COMP%], .head-moderator[_ngcontent-%COMP%]{display:none}.title-meta[_ngcontent-%COMP%]{display:block}.table-search[_ngcontent-%COMP%] input[_ngcontent-%COMP%]{width:170px}}@media (max-width: 768px){.cell-level[_ngcontent-%COMP%], .head-level[_ngcontent-%COMP%]{display:none}.title-meta[_ngcontent-%COMP%] b[_ngcontent-%COMP%]{display:inline}.cell-seats[_ngcontent-%COMP%] i[_ngcontent-%COMP%]{display:none}.quick-fix[_ngcontent-%COMP%] span[_ngcontent-%COMP%]:not(.attention-dot), .copy-meet[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{display:none}.quick-fix[_ngcontent-%COMP%]{padding:5px 8px}.cell-title[_ngcontent-%COMP%]{max-width:230px}.table-toolbar[_ngcontent-%COMP%]{gap:8px}.table-search[_ngcontent-%COMP%]{flex:1 1 100%;order:5}.table-search[_ngcontent-%COMP%] input[_ngcontent-%COMP%]{width:100%}}@media (max-width: 600px){thead[_ngcontent-%COMP%]{display:none}.table-wrap[_ngcontent-%COMP%] table[_ngcontent-%COMP%], .table-wrap[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%]{display:block;width:100%}tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]{width:100%;display:grid;grid-template-columns:max-content max-content max-content 1fr;grid-template-areas:"title title title check" "level schedule seats status" "ready ready ready actions";align-items:center;row-gap:8px;column-gap:12px;padding:12px 14px 12px 16px;border-bottom:1px solid var(--line)}tbody[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{display:block;padding:0;border:0}.cell-check[_ngcontent-%COMP%]{grid-area:check;display:block!important;justify-self:end}.cell-title[_ngcontent-%COMP%]{grid-area:title;max-width:none;min-width:0}.title-meta[_ngcontent-%COMP%] b[_ngcontent-%COMP%]{display:none}.cell-level[_ngcontent-%COMP%]{grid-area:level;display:block!important}.cell-schedule[_ngcontent-%COMP%]{grid-area:schedule;display:flex!important;align-items:baseline;gap:5px;flex-wrap:wrap}.cell-schedule[_ngcontent-%COMP%] strong[_ngcontent-%COMP%], .cell-schedule[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{display:inline;font-size:12px}.cell-moderator[_ngcontent-%COMP%]{display:none!important}.cell-status[_ngcontent-%COMP%]{grid-area:status;justify-self:end;text-align:right}.cell-seats[_ngcontent-%COMP%]{grid-area:seats}.cell-ready[_ngcontent-%COMP%]{grid-area:ready}.cell-actions[_ngcontent-%COMP%]{grid-area:actions;justify-self:end;width:auto}.empty-row[_ngcontent-%COMP%]{display:block;padding:30px 16px;text-align:center}.empty-row[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{display:block}.timezone-label[_ngcontent-%COMP%]{display:none}.table-footer[_ngcontent-%COMP%] span[_ngcontent-%COMP%]:last-child{display:none}}@media (max-width: 480px){.table-page[_ngcontent-%COMP%]{padding-top:14px}.table-topbar[_ngcontent-%COMP%] .button--primary[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{display:none}.table-topbar[_ngcontent-%COMP%] .button--primary[_ngcontent-%COMP%]{padding:9px 11px}.filter-select[_ngcontent-%COMP%]{min-width:0;max-width:145px}.bulk-divider[_ngcontent-%COMP%]{display:none}.clear-selection[_ngcontent-%COMP%]{margin-left:0}}@media (prefers-reduced-motion: reduce){.route-drawer[_ngcontent-%COMP%]{transition:none}.table-skeleton[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{animation:none}}`]})}}return t})();function vv(t,c){return!c||t.some(e=>e.uid===c.uid)?t:[c,...t]}function Ov(t,c,e,n,i){let l=t.filter(O=>O.id!==c.id);if(n&&e&&c.moderatorId!==e||!n&&!zt(c,!1,i))return l;let u=t.findIndex(O=>O.id===c.id);return l.splice(u<0?0:u,0,c),l}function Mv(t){if(!t.length)return{actionMessage:"SPEAKING_CLUB_ADMIN.BULK_NOT_APPLICABLE",errorMessage:"",clear:!1};let c=t.filter(e=>!e.success).map(e=>e.sessionId);return c.length?{actionMessage:"",errorMessage:"SPEAKING_CLUB_ADMIN.BULK_PARTIAL",retainIds:c,clear:!1}:{actionMessage:"SPEAKING_CLUB_ADMIN.BULK_COMPLETE",errorMessage:"",clear:!0}}function Pv(t){return ye(this,null,function*(){if(yield Sv(t))return!0;try{return wv(t),!0}catch{return!1}})}function Sv(t){return ye(this,null,function*(){if(!navigator.clipboard?.writeText)return!1;try{return yield navigator.clipboard.writeText(t),!0}catch{return!1}})}function wv(t){let c=document.createElement("textarea");c.value=t,c.setAttribute("readonly","true"),c.style.position="fixed",c.style.left="-9999px",document.body.appendChild(c);try{if(c.select(),!document.execCommand("copy"))throw new Error("Clipboard copy failed")}finally{document.body.removeChild(c)}}var Ae="assets/images/mainPages/questions/categories",Ev="assets/images/design-system/visuals/icon-microphone.svg",ya=[{key:"microphone",label:"Speaking (default)",path:Ev},{key:"sports",label:"Sport",path:`${Ae}
12/sports.svg`},{key:"travel",label:"Travel",path:`${Ae}/travel.svg`},{key:"food_nutrition",label:"Food",path:`${Ae}/food_nutrition.svg`},{key:"art_culture",label:"Art & culture",path:`${Ae}/art_culture.svg`},{key:"entertainment",label:"Entertainment",path:`${Ae}/entertainment.svg`},{key:"environment",label:"Environment",path:`${Ae}/environment.svg`},{key:"health",label:"Health",path:`${Ae}/health.svg`},{key:"technology",label:"Technology",path:`${Ae}/technology.svg`},{key:"work",label:"Work",path:`${Ae}/work.svg`},{key:"studies",label:"Studies",path:`${Ae}/studies.svg`},{key:"society",label:"Society",path:`${Ae}/society.svg`},{key:"politics_1",label:"Politics",path:`${Ae}/politics_1.svg`},{key:"science",label:"Science",path:`${Ae}/science.svg`},{key:"history",label:"History",path:`${Ae}/history.svg`},{key:"immigration",label:"Immigration",path:`${Ae}/immigration.svg`},{key:"economics",label:"Economics",path:`${Ae}/economics.svg`},{key:"personal_life",label:"Personal life",path:`${Ae}/personal_life.svg`}];var ka=t=>({key:t}),Iv=t=>({timezone:t}),yv=t=>({capacity:t}),kv=t=>({level:t});function Av(t,c){if(t&1&&(a(0,"div",15)(1,"span",16),s(2),r(),a(3,"span"),s(4),r(),a(5,"span",17),s(6),_(7,"translate"),r()()),t&2){let e=d();o(2),g(e.form.level),o(2),qe("",e.startDate," \xB7 ",e.startTime," ",e.timezone,""),o(),Ze("status-pill status-pill--"+e.form.status),o(),g(m(7,7,"SPEAKING_CLUB_ADMIN."+e.form.status.toUpperCase()))}}function Tv(t,c){t&1&&(a(0,"div",15),s(1),_(2,"translate"),r()),t&2&&(o(),g(m(2,1,"SPEAKING_CLUB_ADMIN.NEW_SESSION_HINT")))}function Rv(t,c){if(t&1&&(a(0,"div",18),s(1),_(2,"translate"),r()),t&2){let e=d();o(),g(m(2,1,e.errorMessage))}}function Dv(t,c){if(t&1&&(a(0,"div",19),s(1),_(2,"translate"),r()),t&2){let e=d();o(),g(m(2,1,e.actionMessage))}}function Bv(t,c){t&1&&(a(0,"div",20),v(1,"span")(2,"span")(3,"span"),r())}function Lv(t,c){t&1&&(a(0,"div",70),s(1),_(2,"translate"),r()),t&2&&(o(),g(m(2,1,"SPEAKING_CLUB_ADMIN.READ_ONLY_SESSION")))}function Nv(t,c){if(t&1&&(a(0,"small"),s(1),_(2,"translate"),r()),t&2){let e=d(2);o(),g((e.session==null?null:e.session.pdfFileName)||m(2,1,"SPEAKING_CLUB_ADMIN.UPLOADED"))}}function Vv(t,c){t&1&&(a(0,"small"),s(1),_(2,"translate"),r()),t&2&&(o(),g(m(2,1,"SPEAKING_CLUB_ADMIN.NO_PDF_ATTACHED")))}function Fv(t,c){if(t&1&&(a(0,"small"),s(1),_(2,"translate"),r()),t&2){let e=d(2);o(),N("",e.pendingPdf.name," \xB7 ",m(2,2,"SPEAKING_CLUB_ADMIN.PENDING_UPLOAD"),"")}}function Uv(t,c){t&1&&(a(0,"small"),s(1),_(2,"translate"),r()),t&2&&(o(),g(m(2,1,"SPEAKING_CLUB_ADMIN.PDF_AFTER_CREATE")))}function Hv(t,c){if(t&1){let e=M();a(0,"button",71),x("click",function(){C(e);let i=d(2);return f(i.removePdf())}),s(1),_(2,"translate"),r()}t&2&&(o(),g(m(2,1,"SPEAKING_CLUB_ADMIN.REMOVE")))}function Gv(t,c){if(t&1&&(a(0,"small"),s(1),r()),t&2){let e=d(2);o(),g(e.session==null?null:e.session.meetingLink)}}function qv(t,c){t&1&&(a(0,"small"),s(1),_(2,"translate"),r()),t&2&&(o(),g(m(2,1,"SPEAKING_CLUB_ADMIN.MEET_NOT_GENERATED")))}function Wv(t,c){t&1&&(a(0,"small"),s(1),_(2,"translate"),r()),t&2&&(o(),g(m(2,1,"SPEAKING_CLUB_ADMIN.MEET_AFTER_CREATE")))}function zv(t,c){if(t&1){let e=M();a(0,"button",33),x("click",function(){C(e);let i=d(3);return f(i.openResource(i.session==null?null:i.session.meetingLink))}),s(1),_(2,"translate"),r()}t&2&&(o(),g(m(2,1,"SPEAKING_CLUB_ADMIN.OPEN")))}function Kv(t,c){if(t&1){let e=M();a(0,"span",31),h(1,zv,3,3,"button",72),a(2,"button",33),x("click",function(){C(e);let i=d(2);return f(i.generateMeeting())}),s(3),_(4,"translate"),r()()}if(t&2){let e=d(2);o(),p("ngIf",e.session==null?null:e.session.meetingLink),o(2),g(m(4,2,e.session!=null&&e.session.meetingLink?"SPEAKING_CLUB_ADMIN.REGENERATE_MEETING":"SPEAKING_CLUB_ADMIN.GENERATE_MEETING"))}}function $v(t,c){t&1&&(a(0,"small"),s(1),_(2,"translate"),r()),t&2&&(o(),g(m(2,1,"SPEAKING_CLUB_ADMIN.RECORDING_PROCESSED")))}function jv(t,c){t&1&&(a(0,"small"),s(1),_(2,"translate"),r()),t&2&&(o(),g(m(2,1,"SPEAKING_CLUB_ADMIN.RECORDING_NOT_SYNCED")))}function Qv(t,c){t&1&&(a(0,"small"),s(1),_(2,"translate"),r()),t&2&&(o(),g(m(2,1,"SPEAKING_CLUB_ADMIN.RECORDING_AFTER_SESSION")))}function Yv(t,c){if(t&1){let e=M();a(0,"button",33),x("click",function(){C(e);let i=d(3);return f(i.openResource(i.session==null?null:i.session.recordingUrl))}),s(1),_(2,"translate"),r()}t&2&&(o(),g(m(2,1,"SPEAKING_CLUB_ADMIN.OPEN")))}function Xv(t,c){if(t&1){let e=M();a(0,"span",31),h(1,Yv,3,3,"button",72),a(2,"button",33),x("click",function(){C(e);let i=d(2);return f(i.syncRecording())}),s(3),_(4,"translate"),r()()}if(t&2){let e=d(2);o(),p("ngIf",e.session==null?null:e.session.recordingUrl),o(2),g(m(4,2,"SPEAKING_CLUB_ADMIN.SYNC_RECORDING"))}}
12function Jv(t,c){if(t&1&&(a(0,"option",73),s(1),r()),t&2){let e=c.$implicit;p("value",e),o(),g(e)}}function Zv(t,c){t&1&&jn(0)}function e2(t,c){t&1&&jn(0)}function t2(t,c){if(t&1){let e=M();a(0,"button",76),_(1,"translate"),x("click",function(){let i=C(e).$implicit,l=d(3);return f(l.selectIcon(i.key))}),h(2,e2,1,0,"ng-container",49),r()}if(t&2){let e=c.$implicit,n=d(3),i=pe(23);y("selected",n.form.sessionIcon===e.key),R("aria-selected",n.form.sessionIcon===e.key)("aria-label",m(1,6,"SPEAKING_CLUB_ADMIN.ICON_"+e.key.toUpperCase())),o(2),p("ngTemplateOutlet",i)("ngTemplateOutletContext",D(8,ka,e.key))}}function n2(t,c){if(t&1&&(a(0,"span",74),_(1,"translate"),h(2,t2,3,10,"button",75),r()),t&2){let e=d(2);R("aria-label",m(1,2,"SPEAKING_CLUB_ADMIN.CHOOSE_ICON")),o(2),p("ngForOf",e.icons)}}function i2(t,c){if(t&1&&(a(0,"option",73),s(1),r()),t&2){let e=c.$implicit;p("value",e.uid),o(),g(e.label)}}function o2(t,c){if(t&1){let e=M();a(0,"button",80),x("click",function(){let i=C(e).$implicit,l=d(3);return f(l.toggleCohort(i.id))}),s(1),r()}if(t&2){let e=c.$implicit,n=d(3);y("selected",n.selectedCohortIds.includes(e.id)),R("aria-pressed",n.selectedCohortIds.includes(e.id)),o(),g(e.name)}}function r2(t,c){if(t&1&&(a(0,"div",40)(1,"label")(2,"span"),s(3),_(4,"translate"),r(),a(5,"small",77),s(6),_(7,"translate"),r()(),a(8,"div",78),h(9,o2,2,4,"button",79),r()()),t&2){let e=d(2);o(3),g(m(4,3,"SPEAKING_CLUB_ADMIN.INCLUDE_COHORT")),o(3),g(B(7,5,"SPEAKING_CLUB_ADMIN.INCLUDE_COHORT_HINT",D(8,kv,e.form.level))),o(3),p("ngForOf",e.cohorts)}}function a2(t,c){t&1&&(a(0,"p"),s(1),_(2,"translate"),r()),t&2&&(o(),g(m(2,1,"SPEAKING_CLUB_ADMIN.NO_REGISTRATIONS")))}function s2(t,c){if(t&1&&(a(0,"article")(1,"strong"),s(2),r(),a(3,"span"),s(4),r(),a(5,"span"),s(6),r()()),t&2){let e=c.$implicit;o(2),g(e.studentName||e.studentUid),o(2),g(e.studentEmail||"\u2014"),o(2),g(e.status)}}function l2(t,c){if(t&1&&(a(0,"section",81)(1,"h3"),s(2),_(3,"translate"),r(),h(4,a2,3,3,"p",13)(5,s2,7,3,"article",82),r()),t&2){let e=d(2);o(2),N("",m(3,4,"SPEAKING_CLUB_ADMIN.REGISTERED_STUDENTS")," \xB7 ",e.registrations.length,""),o(2),p("ngIf",!e.registrations.length),o(),p("ngForOf",e.registrations)}}function c2(t,c){if(t&1){let e=M();G(0),h(1,Lv,3,3,"div",21),a(2,"fieldset",22)(3,"section",23)(4,"h3"),s(5),_(6,"translate"),r(),a(7,"div",24)(8,"article",25)(9,"span",26),I(),a(10,"svg",27),v(11,"path",28)(12,"polyline",29),r()(),F(),a(13,"span",30)(14,"strong"),s(15),_(16,"translate"),r(),h(17,Nv,3,3,"small",13)(18,Vv,3,3,"small",13)(19,Fv,3,4,"small",13)(20,Uv,3,3,"small",13),r(),a(21,"span",31)(22,"input",32,1),x("change",function(i){C(e);let l=d();return f(l.uploadPdf(i))}),r(),a(24,"button",33),x("click",function(){C(e);let i=pe(23);return f(i.click())}),s(25),_(26,"translate"),r(),h(27,Hv,3,3,"button",34),r()(),a(28,"article",25)(29,"span",26),I(),a(30,"svg",27),v(31,"path",35)(32,"rect",36),r()(),F(),a(33,"span",30)(34,"strong"),s(35),_(36,"translate"),r(),h(37,Gv,2,1,"small",13)(38,qv,3,3,"small",13)(39,Wv,3,3,"small",13),r(),h(40,Kv,5,4,"span",37),r(),a(41,"article",25)(42,"span",26),I(),a(43,"svg",27),v(44,"circle",38)(45,"polygon",39),r()(),F(),a(46,"span",30)(47,"strong"),s(48),_(49,"translate"),r(),h(50,$v,3,3,"small",13)(51,jv,3,3,"small",13)(52,Qv,3,3,"small",13),r(),h(53,Xv,5,4,"span",37),r()()(),a(54,"section",23)(55,"h3"),s(56),_(57,"translate"),r(),a(58,"div",40)(59,"label")(60,"span"),s(61),_(62,"translate"),r(),a(63,"input",41),T("ngModelChange",function(i){C(e);let l=d();return A(l.form.title,i)||(l.form.title=i),f(i)}),r()()(),a(64,"div",40)(65,"label")(66,"span"),s(67),_(68,"translate"),r(),a(69,"input",42),_(70,"translate"),T("ngModelChange",function(i){C(e);let l=d();return A(l.form.topic,i)||(l.form.topic=i),f(i)}),r()()(),a(71,"div",43)(72,"label")(73,"span"),s(74),_(75,"translate"),r(),a(76,"select",44),T("ngModelChange",function(i){C(e);let l=d();return A(l.form.level,i)||(l.form.level=i),f(i)}),h(77,Jv,2,2,"option",45),r()(),a(78,"label",46)(79,"span"),s(80),_(81,"translate"),r(),a(82,"button",47),x("click",function(){C(e);let i=d();return f(i.toggleIconPicker())}),a(83,"span",48),h(84,Zv,1,0,"ng-container",49),r(),a(85,"span"),s(86),_(87,"translate"),r(),I(),a(88,"svg",50),v(89,"polyline",51),r()(),h(90,n2,3,4,"span",52),r()()(),F(),a(91,"section",23)(92,"h3"),s(93),_(94,"translate"),r(),a(95,"div",43)(96,"label")(97,"span"),s(98),_(99,"translate"),r(),a(100,"input",53),x("ngModelChange",function(i){C(e);let l=d();return f(l.setStartDate(i))}),r()(),a(101,"label")(102,"span"),s(103),_(104,"translate"),r(),a(105,"input",54),x("ngModelChange",function(i){C(e);let l=d();return f(l.setStartTime(i))}),r()()(),a(106,"div",43)(107,"label")(108,"span"),s(109),_(110,"translate"),r(),a(111,"input",55),T("ngModelChange",function(i){C(e);let l=d();return A(l.form.durationMinutes,i)||(l.form.durationMinutes=i),f(i)}),r()(),a(112,"label")(113,"span"),s(114),_(115,"translate"),r(),a(116,"input",56),T("ngModelChange",function(i){C(e);let l=d();return A(l.form.capacity,i)||(l.form.capacity=i),f(i)}),r()()(),a(117,"div",43)(118,"label")(119,"span"),s(120),_(121,"translate"),r(),a(122,"select",44),x("ngModelChange",function(i){C(e);let l=d();return f(l.onModeratorChange(i))}),a(123,"option",57),s(124),_(125,"translate"),r(),h(126,i2,2,2,"option",45),r()(),a(127,"label")(128,"span"),s(129),_(130,"translate"),r(),a(131,"select",44),T("ngModelChange",function(i){C(e);let l=d();return A(l.form.status,i)||(l.form.status=i),f(i)}),a(132,"option",58),s(133),_(134,"translate"),r(),a(135,"option",59),s(136),_(137,"translate"),r(),a(138,"option",60),s(139),_(140,"translate"),r(),a(141,"option",61),s(142),_(143,"translate"),r()()()(),h(144,r2,10,10,"div",62),r(),a(145,"section",23)(146,"h3"),s(147),_(148,"translate"),r(),a(149,"label",40)(150,"span"),s(151),_(152,"translate"),r(),a(153,"span",63)(154,"button",64),x("click",function(){C(e);let i=d();return f(i.setRecordingAccess("public"))}),s(155),_(156,"translate"),r(),a(157,"button",64),x("click",function(){C(e);let i=d();return f(i.setRecordingAccess("registered"))}),s(158),_(159,"translate"),r(),a(160,"button",64),x("click",function(){C(e);let i=d();return f(i.setRecordingAccess("attended"))}),s(161),_(162,"translate"),r()()(),a(163,"button",65),x("click",function(){C(e);let i=d();return f(i.toggleWaitlist())}),a(164,"span")(165,"strong"),s(166),_(167,"translate"),r(),a(168,"small"),s(169),_(170,"translate"),r()(),v(171,"i",66),r()(),a(172,"section",23)(173,"h3"),s(174),_(175,"translate"),r(),a(176,"div",40)(177,"label")(178,"span"),s(179),_(180,"translate"),r(),a(181,"textarea",67),T("ngModelChange",function(i){C(e);let l=d();return A(l.form.description,i)||(l.form.description=i),f(i)}),r()()(),a(182,"div",40)(183,"label")(184,"span"),s(185),_(186,"translate"),r(),a(187,"textarea",68),T("ngModelChange",function(i){C(e);let l=d();return A(l.form.learningOutcomes,i)||(l.form.learningOutcomes=i),f(i)}),r()()()(),h(188,l2,6,6,"section",69),r(),q()}if(t&2){let e=d(),n=pe(23);o(),p("ngIf",!e.canEdit),o(),p("disabled",!e.canEdit),o(3),g(m(6,98,"SPEAKING_CLUB_ADMIN.READINESS")),o(3),y("automation-row--done",e.session==null?null:e.session.pdfUrl)("automation-row--todo",!e.isNew&&!(e.session!=null&&e.session.pdfUrl))("automation-row--idle",e.isNew),o(7),g(m(16,100,"SPEAKING_CLUB_ADMIN.PDF_MATERIAL")),o(2),p("ngIf",e.session==null?null:e.session.pdfUrl),o(),p("ngIf",!(e.session!=null&&e.session.pdfUrl)&&!e.pendingPdf&&!e.isNew),o(),p("ngIf",e.pen
12dingPdf),o(),p("ngIf",e.isNew&&!e.pendingPdf),o(5),g(m(26,102,e.session!=null&&e.session.pdfUrl?"SPEAKING_CLUB_ADMIN.REPLACE_PDF":"SPEAKING_CLUB_ADMIN.UPLOAD_PDF")),o(2),p("ngIf",e.session==null?null:e.session.pdfUrl),o(),y("automation-row--done",e.session==null?null:e.session.meetingLink)("automation-row--todo",!e.isNew&&!(e.session!=null&&e.session.meetingLink)&&e.form.status==="upcoming")("automation-row--idle",e.isNew||e.form.status!=="upcoming"),o(7),g(m(36,104,"SPEAKING_CLUB_ADMIN.MEET_LINK")),o(2),p("ngIf",e.session==null?null:e.session.meetingLink),o(),p("ngIf",!(e.session!=null&&e.session.meetingLink)&&!e.isNew),o(),p("ngIf",e.isNew),o(),p("ngIf",!e.isNew),o(),y("automation-row--done",e.session==null||e.session.processedVideo==null?null:e.session.processedVideo.processed)("automation-row--todo",!e.isNew&&e.form.status==="completed"&&!(!(e.session==null||e.session.processedVideo==null)&&e.session.processedVideo.processed))("automation-row--idle",e.isNew||e.form.status!=="completed"),o(7),g(m(49,106,"SPEAKING_CLUB_ADMIN.RECORDING")),o(2),p("ngIf",e.session==null||e.session.processedVideo==null?null:e.session.processedVideo.processed),o(),p("ngIf",!(!(e.session==null||e.session.processedVideo==null)&&e.session.processedVideo.processed)&&e.form.status==="completed"),o(),p("ngIf",e.form.status!=="completed"),o(),p("ngIf",!e.isNew&&e.form.status==="completed"),o(3),g(m(57,108,"SPEAKING_CLUB_ADMIN.DETAILS")),o(5),g(m(62,110,"SPEAKING_CLUB_ADMIN.TITLE_FIELD")),o(2),k("ngModel",e.form.title),o(4),g(m(68,112,"SPEAKING_CLUB_ADMIN.TOPIC_STUDENT")),o(2),k("ngModel",e.form.topic),p("placeholder",m(70,114,"SPEAKING_CLUB_ADMIN.TOPIC_EXAMPLE")),o(5),g(m(75,116,"SPEAKING_CLUB_ADMIN.LEVEL")),o(2),k("ngModel",e.form.level),o(),p("ngForOf",e.levels),o(3),g(m(81,118,"SPEAKING_CLUB_ADMIN.SESSION_ICON")),o(2),R("aria-expanded",e.iconPickerOpen),o(2),p("ngTemplateOutlet",n)("ngTemplateOutletContext",D(168,ka,e.selectedIcon.key)),o(2),g(m(87,120,"SPEAKING_CLUB_ADMIN.ICON_"+e.selectedIcon.key.toUpperCase())),o(4),p("ngIf",e.iconPickerOpen),o(3),g(m(94,122,"SPEAKING_CLUB_ADMIN.SCHEDULE")),o(5),g(m(99,124,"SPEAKING_CLUB_ADMIN.DATE")),o(2),p("ngModel",e.startDate),o(3),g(B(104,126,"SPEAKING_CLUB_ADMIN.START_IN_ZONE",D(170,Iv,e.timezone))),o(2),p("ngModel",e.startTime),o(4),g(m(110,129,"SPEAKING_CLUB_ADMIN.DURATION_MINUTES")),o(2),k("ngModel",e.form.durationMinutes),o(3),g(m(115,131,"SPEAKING_CLUB_ADMIN.CAPACITY")),o(2),k("ngModel",e.form.capacity),o(4),g(m(121,133,"SPEAKING_CLUB_ADMIN.MODERATOR")),o(2),p("ngModel",e.form.moderatorId),o(2),g(m(125,135,"SPEAKING_CLUB_ADMIN.NO_MODERATOR")),o(2),p("ngForOf",e.moderators),o(3),g(m(130,137,"SPEAKING_CLUB_ADMIN.STATUS")),o(2),k("ngModel",e.form.status),o(2),g(m(134,139,"SPEAKING_CLUB_ADMIN.UPCOMING")),o(3),g(m(137,141,"SPEA
12KING_CLUB_ADMIN.LIVE")),o(3),g(m(140,143,"SPEAKING_CLUB_ADMIN.COMPLETED")),o(3),g(m(143,145,"SPEAKING_CLUB_ADMIN.CANCELLED")),o(2),p("ngIf",e.isNew&&e.cohorts.length),o(3),g(m(148,147,"SPEAKING_CLUB_ADMIN.ACCESS")),o(4),g(m(152,149,"SPEAKING_CLUB_ADMIN.RECORDING_ACCESS")),o(3),y("active",e.form.recordingAccess==="public"),R("aria-pressed",e.form.recordingAccess==="public"),o(),g(m(156,151,"SPEAKING_CLUB_ADMIN.PUBLIC")),o(2),y("active",e.form.recordingAccess==="registered"),R("aria-pressed",e.form.recordingAccess==="registered"),o(),g(m(159,153,"SPEAKING_CLUB_ADMIN.REGISTERED")),o(2),y("active",e.form.recordingAccess==="attended"),R("aria-pressed",e.form.recordingAccess==="attended"),o(),g(m(162,155,"SPEAKING_CLUB_ADMIN.ATTENDED")),o(2),R("aria-checked",e.form.waitlistEnabled),o(3),g(m(167,157,"SPEAKING_CLUB_ADMIN.WAITLIST")),o(3),g(B(170,159,"SPEAKING_CLUB_ADMIN.WAITLIST_HINT",D(172,yv,e.form.capacity))),o(2),y("on",e.form.waitlistEnabled),o(3),g(m(175,162,"SPEAKING_CLUB_ADMIN.CONTENT")),o(5),g(m(180,164,"SPEAKING_CLUB_ADMIN.DESCRIPTION")),o(2),k("ngModel",e.form.description),o(4),g(m(186,166,"SPEAKING_CLUB_ADMIN.LEARNING_OUTCOMES")),o(2),k("ngModel",e.form.learningOutcomes),o(),p("ngIf",!e.isNew)}}function d2(t,c){if(t&1){let e=M();a(0,"button",88),x("click",function(){C(e);let i=d(2);return f(i.cancelSession())}),s(1),_(2,"translate"),r()}t&2&&(o(),g(m(2,1,"SPEAKING_CLUB_ADMIN.CANCEL_SESSION")))}function p2(t,c){if(t&1){let e=M();a(0,"button",89),x("click",function(){C(e);let i=d(2);return f(i.restoreSession())}),s(1),_(2,"translate"),r()}t&2&&(o(),g(m(2,1,"SPEAKING_CLUB_ADMIN.RESTORE_SESSION")))}function _2(t,c){if(t&1){let e=M();a(0,"button",90),x("click",function(){C(e);let i=d(2);return f(i.saveSession())}),s(1),_(2,"translate"),r()}if(t&2){let e=d(2);p("disabled",e.saving),o(),g(m(2,2,e.isNew?"SPEAKING_CLUB_ADMIN.CREATE_SESSION":"SPEAKING_CLUB_ADMIN.SAVE_SESSION"))}}function m2(t,c){if(t&1){let e=M();a(0,"footer",83),h(1,d2,3,3,"button",84)(2,p2,3,3,"button",85),v(3,"span"),a(4,"button",86),x("click",function(){C(e);let i=d();return f(i.close())}),s(5),_(6,"translate"),r(),h(7,_2,3,4,"button",87),r()}if(t&2){let e=d();o(),p("ngIf",e.canEdit&&!e.isNew&&e.form.status!=="cancelled"),o(),p("ngIf",e.canEdit&&!e.isNew&&e.form.status==="cancelled"),o(3),g(m(6,4,"SPEAKING_CLUB_ADMIN.CLOSE")),o(2),p("ngIf",e.canEdit)}}function g2(t,c){t&1&&(I(),v(0,"path",95))}function u2(t,c){t&1&&(I(),G(0),v(1,"polygon",96),q())}function C2(t,c){t&1&&(I(),G(0),v(1,"path",97)(2,"circle",98),q())}function f2(t,c){t&1&&(I(),G(0),v(1,"path",99)(2,"path",100),q())}function h2(t,c){t&1&&(I(),G(0),v(1,"path",101),q())}function x2(t,c){t&1&&(I(),G(0),v(1,"rect",102)(2,"line",103)(3,"line",104)(4,"line",105),q())}function b2(t,c){t&1&&(I(),G(0),v(1,"circle",38)(2,"line",105)(3,"path",106),q())}function v2(t,c){t&1&&(I(),G(0),v(1,"path",107),q())}function O2(t,c){t&1&&(I(),G(0),v(1,"rect",108)(2,"line",109)(3,"line",110),q())}function M2(t,c){t&1&&(I(),G(0),v(1,"rect",111)(2,"path",112),q())}function P2(t,c){t&1&&(I(),G(0),v(1,"path",113)(2,"path",114),q())}function S2(t,c){t&1&&(I(),G(0),v(1,"path",115)(2,"circle",116)(3,"path",117),q())}function w2(t,c){t&1&&(I(),G(0),v(1,"path",118)(2,"line",119),q())}function E2(t,c){t&1&&(I(),G(0),v(1,"path",120)(2,"path",121),q())}function I2(t,c){t&1&&(I(),G(0),v(1,"circle",38)(2,"polyline",122),q())}function y2(t,c){t&1&&(I(),G(0),v(1,"path",123),q())}function k2(t,c){t&1&&(I(),G(0),v(1,"polyline",124)(2,"polyline",125),q())}function A2(t,c){t&1&&(I(),G(0),v(1,"path",126)(2,"polyline",127),q())}function T2(t,c){t&1&&(I(),v(0,"path",128))}function R2(t,c){if(t&1&&(I(),a(0,"svg",91),h(1,g2,1,0,"path",92)(2,u2,2,0,"ng-container",93)(3,C2,3,0,"ng-container",93)(4,f2,3,0,"ng-container",93)(5,h2,2,0,"ng-container",93)(6,x2,5,0,"ng-container",93)(7,b2,4,0,"ng-container",93)(8,v2,2,0,"ng-container",93)(9,O2,4,0,"ng-container",93)(10,M2,3,0,"ng-container",93)(11,P2,3,0,"ng-container",93)(12,S2,4,0,"ng-container",93)(13,w2,3,0,"ng-container",93)(14,E2,3,0,"ng-container",93)(15,I2,3,0,"ng-container",93)(16,y2,2,0,"ng-container",93)(17,k2,3,0,"ng-container",93)(18,A2,3,0,"ng-container",93)(19,T2,1,0,"path",94),r()),t&2){let e=c.key;p("ngSwitch",e),o(),p("ngSwitchCase","microphone"),o(),p("ngSwitchCase","sports"),o(),p("ngSwitchCase","travel"),o(),p("ngSwitchCase","food_nutrition"),o(),p("ngSwitchCase","art_culture"),o(),p("ngSwitchCase","entertainment"),o(),p("ngSwitchCase","environment"),o(),p("ngSwitchCase","health"),o(),p("ngSwitchCase","technology"),o(),p("ngSwitchCase","work"),o(),p("ngSwitchCase","studies"),o(),p("ngSwitchCase","society"),o(),p("ngSwitchCase","politics_1"),o(),p("ngSwitchCase","science"),o(),p("ngSwitchCase","history"),o(),p("ngSwitchCase","immigration"),o(),p("ngSwitchCase","economics"),o(),p("ngSwitchCase","personal_life")}}var Oi=(()=>{class t{constructor(e,n,i,l){this.workspace=e,this.route=n,this.router=i,this.timeZone=l,this.sessionId="",this.session=null,this.form=vi(),this.moderators=[],this.registrations=[],this.cohorts=[],this.selectedCohortIds=[],this.icons=ya,this.levels=["A1.1","A1.2","A2","B1","B2.1","B2.2"],this.loading=!0,this.isNew=!1,this.pendingPdf=null,this.saving=!1,this.errorMessage="",this.actionMessage="",this.timezone="UTC",this.iconPickerOpen=!1,this.canEdit=!0}ngOnInit(){if(this.timezone=this.timeZone.getUserTimezone(),this.isNew=this.route.
12snapshot.routeConfig?.path==="new",this.sessionId=this.route.snapshot.paramMap.get("sessionId")||"",this.workspace.listModerators().subscribe(e=>{this.moderators=e}),this.isNew)return this.workspace.listCohorts().subscribe(e=>{this.cohorts=e}),this.prepareNew();this.load()}toggleCohort(e){this.selectedCohortIds=this.selectedCohortIds.includes(e)?this.selectedCohortIds.filter(n=>n!==e):[...this.selectedCohortIds,e]}load(){this.loading=!0,this.workspace.getSession(this.sessionId).pipe(Pe(()=>{this.loading=!1})).subscribe({next:e=>this.setSession(e),error:e=>this.setError(e)})}saveSession(){if(!(!this.canEdit||!this.valid())){if(this.isNew)return this.createSession();this.run(this.workspace.updateSession(this.sessionId,this.payload()))}}onModeratorChange(e){let n=this.moderators.find(i=>i.uid===e);this.form.moderatorId=n?.uid||"",this.form.moderatorName=n?.name||""}uploadPdf(e){let n=e.target;if(!this.canEdit){n.value="";return}let i=n.files?.[0];i&&this.isNew&&(this.pendingPdf=i),i&&!this.isNew&&this.run(this.workspace.uploadPdf(this.sessionId,i)),n.value=""}removePdf(){this.canEdit&&this.run(this.workspace.removePdf(this.sessionId))}generateMeeting(){this.canEdit&&this.run(this.workspace.generateMeeting(this.sessionId,!!this.session?.meetingLink))}syncRecording(){this.canEdit&&this.run(this.workspace.syncRecording(this.sessionId))}cancelSession(){this.canEdit&&this.run(this.workspace.cancelSession(this.sessionId))}restoreSession(){this.canEdit&&this.run(this.workspace.restoreSession(this.sessionId))}completeSession(){this.canEdit&&this.run(this.workspace.completeSession(this.sessionId))}openResource(e){e&&window.open(e,"_blank","noopener")}close(){this.router.navigate(["/main/dashboard/cohorts/speaking-club"])}get selectedIcon(){return this.icons.find(e=>e.key===this.form.sessionIcon)||this.icons[0]}get startDate(){return this.form.startDateTime.slice(0,10)}get startTime(){return this.form.startDateTime.slice(11,16)}toggleIconPicker(){this.iconPickerOpen=!this.iconPickerOpen}selectIcon(e){this.icons.some(n=>n.key===e)&&(this.form.sessionIcon=e),this.iconPickerOpen=!1}setStartDate(e){this.form.startDateTime=`${e}T${this.startTime||"00:00"}`}setStartTime(e){this.form.startDateTime=`${this.startDate}T${e}`}setRecordingAccess(e){this.form.recordingAccess=e}toggleWaitlist(){this.form.waitlistEnabled=!this.form.waitlistEnabled}run(e,n=!1){this.saving=!0,this.errorMessage="",e.pipe(Pe(()=>{this.saving=!1})).subscribe({next:i=>{this.setSession(i),this.actionMessage="SPEAKING_CLUB_ADMIN.SAVED",n&&this.router.navigate(["/main/dashboard/cohorts/speaking-club",i.id])},error:i=>this.setError(i)})}prepareNew(){let e=this.workspace.currentInstructor();this.form=Me(W({},vi()),{moderatorId:e?.uid||"",moderatorName:e?.name||""}),this.canEdit=!0,this.loading=!1}createSession(){let e=Me(W({},this.payload()),{autoEnrollCohortIds:this.selectedCohortIds}),n=this.workspace.createSession(e).pipe(Ti(i=>this.pendingPdf?this.workspace.uploadPdf(i.id,this.pendingPdf):it(i)));this.run(n,!0)}setSession(e){this.session=e,this.canEdit=this.workspace.canMutate(e),this.form=D2(e,this.timeZone,this.timezone),this.workspace.listRegistrations(e.id).subscribe(n=>{this.registrations=n})}valid(){return this.form.title&&this.form.level&&this.form.startDateTime&&this.form.capacity>0?!0:(this.errorMessage="SPEAKING_CLUB_ADMIN.REQUIRED_FIELDS",!1)}payload(){return{title:this.form.title.trim(),description:Wn(this.form.description),level:this.form.level,topic:Wn(this.form.topic),learningOutcomes:B2(this.form.learningOutcomes),startDateTime:this.timeZone.parseDateTimeLocal(this.form.startDateTime,this.timezone),durationMinutes:this.form.durationMinutes,capacity:this.form.capacity,moderatorId:Wn(this.form.moderatorId),moderatorName:Wn(this.form.moderatorName),recordingAccess:this.form.recordingAccess,waitlistEnabled:this.form.waitlistEnabled,status:this.form.status,sessionIcon:this.form.sessionIcon}}setError(e){this.errorMessage=e?.error?.message||e?.message||"SPEAKING_CLUB_ADMIN.ERROR"}static{this.\u0275fac=function(n){return new(n||t)(w(Gn),w(te),w(ue),w(Nt))}}static{this.\u0275cmp=H({type:t,selectors:[["app-speaking-club-session"]],decls:24,vars:16,consts:[["sessionIcon",""],["drawerPdf",""],[1,"drawer-shell"],[1,"drawer-header"],["class","drawer-meta",4,"ngIf"],["type","button",1,"icon-button",3,"click"],["width","17","height","17","viewBox","0 0 24 24","fill","none","stroke","currentColor","stroke-width","2.2","stroke-linecap","round","stroke-linejoin","round","aria-hidden","true"],["x1","18","y1","6","x2","6","y2","18"],["x1","6","y1","6","x2","18","y2","18"],[1,"drawer-body"],["class","notice notice--error",4,"ngIf"],["class","notice notice--success",4,"ngIf"],["class","drawer-skeleton","aria-busy","true",4,"ngIf"],[4,"ngIf"],["class","drawer-footer",4,"ngIf"],[1,"drawer-meta"],[1,"level-pill"],[1,"status-pill"],[1,"notice","notice--error"],[1,"notice","notice--success"],["aria-busy","true",1,"drawer-skeleton"],["class","notice notice--readonly",4,"ngIf"],[1,"drawer-fieldset",3,"disabled"],[1,"form-group"],[1,"readiness-rail"],[1,"automation-row"],[1,"automation-icon"],["width","16","height","16","viewBox","0 0 24 24","fill","none","stroke","currentColor","stroke-width","2","stroke-linecap","round","stroke-linejoin","round","aria-hidden","true"],["d","M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"],["points","14 2 14 8 20 8"],[1,"automation-copy"],[1,"automation-actions"],["type","file","accept","application/pdf","hidden","",3,"change"],["type","button",1,"quiet-button",3,"click"],["type","button","class","quiet-button quiet-button--danger",3,"click",4,"ngIf"],["d","M23 7l-7 5 7 5V7z"],["x","1","y","5","width","15","height","14","rx","2"],["class","automation-actions",4,"ngIf"],["cx","12","cy","12","r","10"],["points","10 8 16 12 10 16 10 8"],[1,"field-row","field-row--single"],["type","text",3,"ngModelChange","ngModel"],["type","text",3,"ngModelChange","ngModel","placeholder"],[1,"field-row","field-row--keep-two"],[3,"ngModelChange","ngModel"],[3,"value",4,"ngFor","ngForOf"],[1,"icon-picker"],["type","button","aria-haspopup","listbox",1,"icon-picker-trigger",3,"click"],[1,"selected-icon"],[4,"ngTemplateOutlet","ngTemplateOutletContext"],["width","14","height","14","viewBox","0 0 24 24","fill","none","stroke","currentColor","stroke-width","2.4","stroke-linecap","round","stroke-linejoin","round","aria-hidden","true",1,"chevron"],["points","6 9 12 15 18 9"],["class","icon-popover","role","listbox",4,"ngIf"],["type","date",3,"ngModelChange","ngModel"],["type","time",3,"ngModelChange","ngModel"],["type","number","min","15","step","15",3,"ngModelChange","ngModel"],["type","number","min","1",3,"ngModelChange","ngModel"],["value",""],["value","upcoming"],["value","live"],["value","completed"],["value","cancelled"],["class","field-row field-row--single",4,"ngIf"],[1,"segmented-control"],["type","button",3,"click"],["type","button","role","switch",1,"toggle-row",3,"click"],["aria-hidden","true"],["rows","3",3,"ngModelChange","ngModel"],["rows","4",3,"ngModelChange","ngModel"],["class","form-group registrations",4,"ngIf"],[1,"notice","notice--readonly"],["type","button",1,"quiet-button","quiet-button--danger",3,"click"],["type","button","class","quiet-button",3,"click",4,"ngIf"],[3,"value"],["role","listbox",1,"icon-popover"],["type","button","role","option",3,"selected","click",4,"ngFor","ngForOf"],["type","button","role","option",3,"click"],[1,"field-hint"],[1,"cohort-picker"],["type","button","class","cohort-chip",3,"selected","click",4,"ngFor","ngForOf"],["type","button",1,"cohort-chip",3,"click"],[1,"form-group","registrations"],[4,"ngFor","ngForOf"],[1,"drawer-footer"],["type","button","class","danger-ghost",3,"click",4,"ngIf"],["type","button","class","restore-button",3,"click",4,"ngIf"],["type","button",1,"button",3,"click"],["type","button","class","button button--primary",3,"disabled","click",4,"ngIf"],["type","button",1,"danger-ghost",3,"click"],["type","button",1,"restore-button",3,"click"],["type","button",1,"button","button--primary",3,"click","disabled"],["width","17","height","17","viewBox","0 0 24 24","fill","none","stroke","currentColor","stroke-width","2","stroke-linecap","round","stroke-linejoin","round","aria-hidden","true",3,"ngSwitch"],["d","M21 11.5a8.38 8.38 0 0 1-.9 3.8 8.5 8.5 0 0 1-7.6 4.7 8.38 8.38 0 0 1-3.8-.9L3 21l1.9-5.7a8.38 8.38 0 0 1-.9-3.8 8.5 8.5 0 0 1 4.7-7.6 8.38 8.38 0 0 1 3.8-.9h.5a8.48 8.48 0 0 1 8 8v.5z",4,"ngSwitchCase"],[4,"ngSwitchCase"],["d","M21 11.5a8.5 8.5 0 1 1-4-7.2",4,"ngSwitchDefault"],["d","M21 11.5a8.38 8.38 0 0 1-.9 3.8 8.5 8.5 0 0 1-7.6 4.7 8.38 8.38 0 0 1-3.8-.9L3 21l1.9-5.7a8.38 8.38 0 0 1-.9-3.8 8.5 8.5 0 0 1 4.7-7.6 8.38 8.38 0 0 1 3.8-.9h.5a8.48 8.48 0 0 1 8 8v.5z"],["points","12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2"],["d","M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0 1 18 0z"],["cx","12","cy","10","r","3"],["d","M18 8h1a4 4 0 0 1 0 8h-1"],["d","M2 8h16v9a4 4 0 0 1-4 4H6a4 4 0 0 1-4-4V8z"],["d","M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78L12 21.23l7.78-7.78a5.5 5.5 0 0 0 0-7.78z"],["x","2","y","2","width","20","height","20","rx","2"],["x1","7","y1","2","x2","7","y2","22"],["x1","17","y1","2","x2","17","y2","22"],["x1","2","y1","12","x2","22","y2","12"],["d","M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z"],["d","M12 2v20M2 12h20"],["x","2","y","3","width","20","height","14","rx","2"],["x1","8","y1","21","x2","16","y2","21"],["x1","12","y1","17","x2","12","y2","21"],["x","2","y","7","width","20","height","14","rx","2"],["d","M16 21V5a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v16"],["d","M2 3h6a4 4 0 0 1 4 4v14a3 3 0 0 0-3-3H2z"],["d","M22 3h-6a4 4 0 0 0-4 4v14a3 3 0 0 1 3-3h7z"],["d","M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"],["cx","9","cy","7","r","4"],["d","M23 21v-2a4 4 0 0 0-3-3.87"],["d","M4 15s1-1 4-1 5 2 8 2 4-1 4-1V3s-1 1-4 1-5-2-8-2-4 1-4 1z"],["x1","4","y1","22","x2","4","y2","15"],["d","M9 3h6M10 9l-5 10a2 2 0 0 0 2 3h10a2 2 0 0 0 2-3l-5-10V3h-4v6z"],["d","M8 16h8"],["points","12 6 12 12 8 14"],["d","M5 12h14M13 6l6 6-6 6"],["points","3 17 9 11 13 15 21 7"],["points","15 7 21 7 21 13"],["d","M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"],["points","9 22 9 12 15 12 15 22"],["d","M21 11.5a8.5 8.5 0 1 1-4-7.2"]],template:function(n,i){if
12(n&1){let l=M();a(0,"section",2)(1,"header",3)(2,"div")(3,"p"),s(4),_(5,"translate"),r(),a(6,"h2"),s(7),_(8,"translate"),r(),h(9,Av,8,9,"div",4)(10,Tv,3,3,"div",4),r(),a(11,"button",5),_(12,"translate"),x("click",function(){return C(l),f(i.close())}),I(),a(13,"svg",6),v(14,"line",7)(15,"line",8),r()()(),F(),a(16,"div",9),h(17,Rv,3,3,"div",10)(18,Dv,3,3,"div",11)(19,Bv,4,0,"div",12)(20,c2,189,174,"ng-container",13),r(),h(21,m2,8,6,"footer",14),r(),h(22,R2,20,19,"ng-template",null,0,ke)}n&2&&(o(4),g(m(5,10,i.isNew?"SPEAKING_CLUB_ADMIN.NEW_SESSION":"SPEAKING_CLUB_ADMIN.EDIT_SESSION")),o(3),g((i.session==null?null:i.session.title)||m(8,12,"SPEAKING_CLUB_ADMIN.NEW_SESSION")),o(2),p("ngIf",!i.isNew),o(),p("ngIf",i.isNew),o(),R("aria-label",m(12,14,"SPEAKING_CLUB_ADMIN.CLOSE_EDITOR")),o(6),p("ngIf",i.errorMessage),o(),p("ngIf",i.actionMessage&&!i.errorMessage),o(),p("ngIf",i.loading),o(),p("ngIf",!i.loading),o(),p("ngIf",!i.loading))},dependencies:[Q,$,Hi,Ni,Vi,Fi,re,ae,ie,Ve,Ce,Y,Qe,oe,j],styles:[`[_nghost-%COMP%]{--teal: #29e4e4;--teal-600: #21b6b6;--teal-700: #188888;--teal-soft: #e7f7f7;--teal-tint: #f2fbfb;--rose: #e11d48;--rose-soft: rgba(225, 29, 72, .08);--amber: #f59e0b;--amber-soft: rgba(245, 158, 11, .12);--ink: #212529;--mid: #374151;--muted: #6b7280;--line: #e5e7eb;--bg: #f6f7f9;display:block;height:100%;font-family:Montserrat,sans-serif}*[_ngcontent-%COMP%]{box-sizing:border-box}button[_ngcontent-%COMP%], input[_ngcontent-%COMP%], select[_ngcontent-%COMP%], textarea[_ngcontent-%COMP%]{font:inherit}button[_ngcontent-%COMP%]{cursor:pointer}svg[_ngcontent-%COMP%]{display:block;flex:none}.drawer-shell[_ngcontent-%COMP%]{height:100%;display:flex;flex-direction:column;color:var(--ink);background:#fff}.drawer-header[_ngcontent-%COMP%]{display:flex;align-items:flex-start;gap:12px;padding:16px 18px 13px;border-bottom:1px solid var(--line)}.drawer-header[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{min-width:0}.drawer-header[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{margin:0;color:var(--teal-700);font-size:10.5px;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.drawer-header[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:2px 0 0;font-size:16px;font-weight:800;letter-spacing:-.01em;line-height:1.25}.drawer-meta[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:6px;color:var(--muted);font-size:12px}.level-pill[_ngcontent-%COMP%]{padding:2px 7px;border-radius:6px;background:var(--teal-soft);color:var(--teal-700);font-size:11px;font-weight:700}.status-pill[_ngcontent-%COMP%]{padding:3px 8px;border-radius:999px;font-size:10.5px;font-weight:700}.status-pill--upcoming[_ngcontent-%COMP%]{background:var(--teal-soft);color:var(--teal-700)}.status-pill--live[_ngcontent-%COMP%]{background:var(--teal-600);color:#fff}.status-pill--completed[_ngcontent-%COMP%]{box-shadow:inset 0 0 0 1px var(--line);background:var(--bg);color:var(--mid)}.status-pill--cancelled[_ngcontent-%COMP%]{background:var(--rose-soft);color:var(--rose)}.icon-button[_ngcontent-%COMP%]{width:30px;height:30px;margin-left:auto;display:grid;place-items:center;border:0;border-radius:8px;background:none;color:var(--muted)}.icon-button[_ngcontent-%COMP%]:hover{background:var(--bg);color:var(--ink)}.drawer-body[_ngcontent-%COMP%]{flex:1;overflow-y:auto;padding:16px 18px 22px}.drawer-fieldset[_ngcontent-%COMP%]{min-width:0;margin:0;padding:0;border:0}.drawer-fieldset[_ngcontent-%COMP%]:disabled{opacity:.72}.form-group[_ngcontent-%COMP%]{margin-bottom:20px}.form-group[_ngcontent-%COMP%] > h3[_ngcontent-%COMP%]{margin:0 0 9px;color:var(--muted);font-size:10.5px;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.readiness-rail[_ngcontent-%COMP%]{overflow:hidden;border:1px solid var(--line);border-radius:12px}.automation-row[_ngcontent-%COMP%]{display:flex;align-items:center;gap:11px;padding:11px 12px;border-bottom:1px solid var(--line);background:#fff}.automation-row[_ngcontent-%COMP%]:last-child{border-bottom:0}.automation-icon[_ngcontent-%COMP%]{width:32px;height:32px;display:grid;place-items:center;flex:none;border-radius:9px;background:var(--bg);color:var(--muted)}.automation-row--done[_ngcontent-%COMP%] .automation-icon[_ngcontent-%COMP%]{background:var(--teal-soft);color:var(--teal-700)}.automation-row--todo[_ngcontent-%COMP%] .automation-icon[_ngcontent-%COMP%]{background:var(--amber-soft);color:var(--amber)}.automation-copy[_ngcontent-%COMP%]{min-width:0;flex:1}.automation-copy[_ngcontent-%COMP%] strong[_ngcontent-%COMP%]{display:block;font-size:12.5px;font-weight:700}.automation-copy[_ngcontent-%COMP%] small[_ngcontent-%COMP%]{display:block;overflow:hidden;margin-top:1px;color:var(--muted);text-overflow:ellipsis;font-size:11.5px;white-space:nowrap}.automation-row--todo[_ngcontent-%COMP%] .automation-copy[_ngcontent-%COMP%] small[_ngcontent-%COMP%]{color:var(--amber);font-weight:600}.automation-actions[_ngcontent-%COMP%]{display:flex;align-items:center;gap:4px}.quiet-button[_ngcontent-%COMP%]{padding:5px 7px;border:0;border-radius:7px;background:none;color:var(--muted);font-size:11.5px;font-weight:600}.quiet-button[_ngcontent-%COMP%]:hover{background:var(--bg);
12color:var(--mid)}.quiet-button--danger[_ngcontent-%COMP%]{color:var(--rose)}.quiet-button--danger[_ngcontent-%COMP%]:hover{background:var(--rose-soft);color:var(--rose)}.field-row[_ngcontent-%COMP%]{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:10px}.field-row--single[_ngcontent-%COMP%]{grid-template-columns:1fr}.field-row[_ngcontent-%COMP%] > label[_ngcontent-%COMP%], label.field-row[_ngcontent-%COMP%]{display:block;min-width:0}label[_ngcontent-%COMP%] > span[_ngcontent-%COMP%]:first-child{display:block;margin-bottom:4px;color:var(--mid);font-size:11.5px;font-weight:600}input[_ngcontent-%COMP%], select[_ngcontent-%COMP%], textarea[_ngcontent-%COMP%]{width:100%;padding:8px 11px;border:1px solid var(--line);border-radius:10px;background:#fff;color:var(--ink);font-size:13px}select[_ngcontent-%COMP%]{appearance:none;padding-right:28px;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%236B7280' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'><polyline points='6 9 12 15 18 9'/></svg>");background-repeat:no-repeat;background-position:right 9px center}textarea[_ngcontent-%COMP%]{min-height:64px;resize:vertical;line-height:1.5}input[_ngcontent-%COMP%]:focus, select[_ngcontent-%COMP%]:focus, textarea[_ngcontent-%COMP%]:focus, .icon-picker-trigger[_ngcontent-%COMP%]:focus{outline:2px solid var(--teal);outline-offset:-1px;border-color:var(--teal-600)}.segmented-control[_ngcontent-%COMP%]{display:flex;width:100%}.segmented-control[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{flex:1;margin-left:-1px;padding:7px 4px;border:1px solid var(--line);background:#fff;color:var(--muted);font-size:12px;font-weight:600}.segmented-control[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:first-child{margin-left:0;border-radius:9px 0 0 9px}.segmented-control[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:last-child{border-radius:0 9px 9px 0}.segmented-control[_ngcontent-%COMP%] button.active[_ngcontent-%COMP%]{z-index:1;border-color:var(--teal-600);background:var(--teal-soft);color:var(--teal-700)}.toggle-row[_ngcontent-%COMP%]{width:100%;display:flex;align-items:center;gap:10px;padding:9px 11px;border:1px solid var(--line);border-radius:10px;background:#fff;color:var(--ink);text-align:left}.toggle-row[_ngcontent-%COMP%] > span[_ngcontent-%COMP%]{flex:1}.toggle-row[_ngcontent-%COMP%] strong[_ngcontent-%COMP%]{display:block;font-size:12.5px;font-weight:600}.toggle-row[_ngcontent-%COMP%] small[_ngcontent-%COMP%]{display:block;color:var(--muted);font-size:11px}.toggle-row[_ngcontent-%COMP%] i[_ngcontent-%COMP%]{position:relative;width:38px;height:22px;flex:none;border-radius:999px;background:var(--line)}.toggle-row[_ngcontent-%COMP%] i[_ngcontent-%COMP%]:after{content:"";position:absolute;top:3px;left:3px;width:16px;height:16px;border-radius:50%;background:#fff;box-shadow:0 1px 3px #141e2840;transition:left .15s}.toggle-row[_ngcontent-%COMP%] i.on[_ngcontent-%COMP%]{background:var(--teal-600)}.toggle-row[_ngcontent-%COMP%] i.on[_ngcontent-%COMP%]:after{left:19px}.icon-picker[_ngcontent-%COMP%]{position:relative}.icon-picker-trigger[_ngcontent-%COMP%]{width:100%;display:flex;align-items:center;gap:9px;padding:5px 9px 5px 5px;border:1px solid var(--line);border-radius:10px;background:#fff;color:var(--mid);font-size:12.5px;font-weight:600}.selected-icon[_ngcontent-%COMP%]{width:30px;height:30px;display:grid;place-items:center;flex:none;border-radius:8px;background:var(--teal-soft);color:var(--teal-700)}.icon-picker-trigger[_ngcontent-%COMP%] .chevron[_ngcontent-%COMP%]{margin-left:auto;color:var(--muted)}.icon-popover[_ngcontent-%COMP%]{position:absolute;top:calc(100% + 6px);right:0;z-index:20;display:grid;grid-template-columns:repeat(6,34px);gap:4px;padding:8px;border:1px solid var(--line);border-radius:12px;background:#fff;box-shadow:0 10px 34px #141e2824}.icon-popover[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{width:34px;height:34px;display:grid;place-items:center;border:1px solid transparent;border-radius:8px;background:none;
12color:var(--mid)}.icon-popover[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:hover{background:var(--teal-tint);color:var(--teal-700)}.icon-popover[_ngcontent-%COMP%] button.selected[_ngcontent-%COMP%]{border-color:var(--teal-600);background:var(--teal-soft);color:var(--teal-700)}.registrations[_ngcontent-%COMP%]{font-size:12px}.registrations[_ngcontent-%COMP%] > p[_ngcontent-%COMP%]{color:var(--muted)}.registrations[_ngcontent-%COMP%] article[_ngcontent-%COMP%]{display:grid;grid-template-columns:1fr 1fr auto;gap:8px;padding:8px 0;border-top:1px solid var(--line)}.registrations[_ngcontent-%COMP%] article[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{overflow:hidden;color:var(--muted);text-overflow:ellipsis}.drawer-footer[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px;padding:12px 18px;border-top:1px solid var(--line);background:#fff}.drawer-footer[_ngcontent-%COMP%] > span[_ngcontent-%COMP%]{flex:1}.button[_ngcontent-%COMP%]{display:inline-flex;align-items:center;justify-content:center;padding:9px 14px;border:1px solid var(--line);border-radius:10px;background:#fff;color:var(--mid);font-size:13px;font-weight:600}.button--primary[_ngcontent-%COMP%]{border-color:var(--teal-600);background:var(--teal-600);color:#fff}.button[_ngcontent-%COMP%]:disabled{cursor:wait;opacity:.55}.danger-ghost[_ngcontent-%COMP%], .restore-button[_ngcontent-%COMP%]{padding:9px 6px;border:0;border-radius:8px;background:none;color:var(--rose);font-size:13px;font-weight:600}.danger-ghost[_ngcontent-%COMP%]:hover{background:var(--rose-soft)}.restore-button[_ngcontent-%COMP%]{color:var(--teal-700)}.restore-button[_ngcontent-%COMP%]:hover{background:var(--teal-soft)}.notice[_ngcontent-%COMP%]{margin-bottom:12px;padding:9px 12px;border-radius:9px;font-size:12px;font-weight:600}.notice--error[_ngcontent-%COMP%]{background:var(--rose-soft);color:var(--rose)}.notice--success[_ngcontent-%COMP%]{background:var(--teal-soft);color:var(--teal-700)}.notice--readonly[_ngcontent-%COMP%]{background:var(--bg);color:var(--mid)}.drawer-skeleton[_ngcontent-%COMP%]{display:grid;gap:10px}.drawer-skeleton[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{height:70px;border-radius:12px;background:linear-gradient(90deg,var(--line) 25%,var(--bg) 50%,var(--line) 75%);background-size:200% 100%;animation:_ngcontent-%COMP%_drawer-shimmer 1.3s infinite}@keyframes _ngcontent-%COMP%_drawer-shimmer{to{background-position:-200% 0}}@media (max-width: 480px){.field-row[_ngcontent-%COMP%]{grid-template-columns:1fr}.field-row--keep-two[_ngcontent-%COMP%]{grid-template-columns:1fr 1fr}.icon-popover[_ngcontent-%COMP%]{grid-template-columns:repeat(5,34px)}.automation-row[_ngcontent-%COMP%]{align-items:flex-start;flex-wrap:wrap}.automation-actions[_ngcontent-%COMP%]{width:100%;justify-content:flex-end}}@media (prefers-reduced-motion: reduce){.drawer-skeleton[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{animation:none}.toggle-row[_ngcontent-%COMP%] i[_ngcontent-%COMP%]:after{transition:none}}.field-hint[_ngcontent-%COMP%]{display:block;margin-top:2px;font-size:11.5px;font-weight:500;color:var(--muted, #6b7280)}.cohort-picker[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;gap:8px;margin-top:6px}.cohort-chip[_ngcontent-%COMP%]{border:1px solid var(--line, #e5e7eb);border-radius:999px;background:#fff;padding:7px 14px;font-family:inherit;font-size:12.5px;font-weight:700;color:var(--mid, #374151);cursor:pointer}.cohort-chip[_ngcontent-%COMP%]:hover{border-color:var(--teal-600, #21b6b6);color:var(--teal-700, #188888)}.cohort-chip.selected[_ngcontent-%COMP%]{border-color:var(--teal-600, #21b6b6);background:var(--teal-soft, #e7f7f7);color:var(--teal-700, #188888)}`]})}}return t})();function vi(){return{title:"",description:"",level:"B1",topic:"",learningOutcomes:"",startDateTime:"",durationMinutes:90,capacity:15,moderatorId:"",moderatorName:"",recordingAccess:"public",waitlistEnabled:!0,status:"upcoming",sessionIcon:"microphone"}}function D2(t,c,e){let n=c.formatDateTimeLocal(t.startDateTime,e);return Me(W({},vi()),{title:t.title||"",description:t.description||"",level:t.level||"",topic:t.to
12pic||"",learningOutcomes:(t.learningOutcomes||[]).join(` 13`),startDateTime:n,durationMinutes:Number(t.durationMinutes)||90,capacity:Number(t.capacity)||15,moderatorId:t.moderatorId||"",moderatorName:t.moderatorName||"",recordingAccess:t.recordingAccess==="registered"||t.recordingAccess==="attended"?t.recordingAccess:"public",waitlistEnabled:t.waitlistEnabled===!0,status:t.status||"upcoming",sessionIcon:t.sessionIcon||"microphone"})}function Wn(t){return t.trim()||null}function B2(t){return t.split(` 14`).map(c=>c.trim()).filter(Boolean)}var L2=[{path:"",component:sr,children:[{path:"",redirectTo:"batches",pathMatch:"full"},{path:"batches",component:dr},{path:"batches/create",component:oi},{path:"batches/edit/:batchId",component:oi},{path:"batches/:batchId",component:ur},{path:"batches/:batchId/levels/:levelId",component:Cr},{path:"batches/:batchId/levels/:levelId/sessions",component:na},{path:"batches/:batchId/levels/:levelId/sessions/create",component:Ci},{path:"batches/:batchId/levels/:levelId/sessions/edit/:sessionId",component:Ci},{path:"batches/:batchId/levels/:levelId/sessions/:sessionId/content",component:oa},{path:"batches/:batchId/levels/:levelId/sessions/:sessionId/flashcards",component:ra},{path:"batches/:batchId/levels/:levelId/sessions/:sessionId/homework",component:fr},{path:"batches/:batchId/levels/:levelId/sessions/:sessionId/homework/create",component:_i,canDeactivate:[ii]},{path:"batches/:batchId/levels/:levelId/sessions/:sessionId/homework/:homeworkId/edit",component:_i,canDeactivate:[ii]},{path:"batches/:batchId/levels/:levelId/sessions/:sessionId/homework/:homeworkId/submissions",component:Wr},{path:"batches/:batchId/levels/:levelId/sessions/:sessionId/homework/:homeworkId/submissions/:userId/review",component:_a},{path:"batches/:batchId/enrollments",component:zr},{path:"batches/:batchId/enrollments/:userId",component:Kr},{path:"batches/:batchId/payments",component:$r},{path:"batches/:batchId/payments/record",component:jr},{path:"batches/:batchId/payments/students/:userId",component:Qr},{path:"batches/:batchId/billing",component:ma},{path:"additional-classes",component:ga},{path:"speaking-club",component:Ia,children:[{path:"new",component:Oi},{path:":sessionId",component:Oi}]},{path:"batches/:batchId/levels/:levelId/assessments",loadChildren:()=>import("./chunk-LKVBEFC2.js").then(t=>t.AssessmentsModule)}]}],Aa=(()=>{class t{static{this.\u0275fac=function(n){return new(n||t)}}static{this.\u0275mod=wt({type:t})}static{this.\u0275inj=St({imports:[Jn.forChild(L2),Jn]})}}return t})();var Ta=(()=>{class t{static{this.\u0275fac=function(n){return new(n||t)}}static{this.\u0275mod=wt({type:t})}static{this.\u0275inj=St({imports:[st,Bt,lt]})}}return t})();var VE=(()=>{class t{static{this.\u0275fac=function(n){return new(n||t)}}static{this.\u0275mod=wt({type:t})}static{this.\u0275inj=St({imports:[In,Go,yn,On,st,Bt,eo,lt,ho,Aa,No,ro,Ta,xn,vn,Vn,To,Sn,wn,Fn,En]})}}return t})();export{VE as CohortsModule};
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.