1import{a as Qe,b as qo,c as Ho,d as Qo}from"./chunk-FS7GK2R3.js";import{a as jo,b as kt}from"./chunk-4II7D22I.js";import{a as Ko,b as Vo}from"./chunk-XME2WPAF.js";import{$ as Ao,Aa as fi,Ba as _i,Ca as Ci,Da as gt,Ea as qe,Fa as Bo,Ga as $o,Ha as zo,Ia as vi,Ja as Uo,Ka as Ie,La as Go,Ma as He,N as Po,Na as Wo,O as sn,T as ln,U as cn,W as dn,X as pn,_ as mn,aa as Mo,ba as Io,ca as Fo,g as gi,h as To,j as Eo,k as ko,na as Lo,oa as Do,pa as Ro,wa as No,xa as Oo,za as ht}from"./chunk-CD3JYFD4.js";import{a as Si}from"./chunk-CH3Q4MCO.js";import{a as wo}from"./chunk-4VKHSR5L.js";import{a as xo}from"./chunk-C2KMMHVX.js";import{a as hi}from"./chunk-AEJGQ4XF.js";import{a as ut}from"./chunk-RCJD6T4V.js";import"./chunk-IYPUFFVB.js";import{a as bo}from"./chunk-YJC5ONPK.js";import{a as li,b as _o,c as Co,d as xt,e as vo,f as wt,g as ci,h as So,i as di,j as We,k as pt,l as Tt,m as mt,n as yo,o as pi,p as Et,q as mi,s as ui}from"./chunk-G5F7GPJG.js";import"./chunk-XMQVGMNS.js";import"./chunk-PNOOLRSZ.js";import{a as to,b as io,c as no,d as oo,e as ao,f as ro,g as so,h as ni,i as oi,j as Zi,k as ct,l as lo,m as Xi,n as co,o as Ji,p as po,s as ai,t as mo,u as uo,x as en,y as tn,z as nn}from"./chunk-M5HROWHY.js";import{a as St,b as Ke,c as on,d as an,e as ho,f as dt,g as go,h as yt,i as ri,j as fo,k as si,m as rn,o as bt,p as Ge}from"./chunk-ECPXAQJS.js";import"./chunk-KSPRCCK7.js";import"./chunk-KSQGRLGC.js";import"./chunk-TRKHOV73.js";import"./chunk-NE7QIBGA.js";import"./chunk-O3DZWUYU.js";import"./chunk-X42GTVFF.js";import"./chunk-JA3TLQKN.js";import"./chunk-GU2FORAA.js";import"./chunk-DUA22LOF.js";import"./chunk-OXXAYQVU.js";import{a as lt}from"./chunk-4P7F3AWV.js";import{h as ii}from"./chunk-7E5C6QEM.js";import"./chunk-QUDN46XZ.js";import"./chunk-XQUZO2JR.js";import"./chunk-JVRNJPL7.js";import"./chunk-OMAR6RBO.js";import{a as eo}from"./chunk-VOQH6L45.js";import"./chunk-TQBFZH74.js";import"./chunk-CAFQQJ3Z.js";import"./chunk-HZ3WYMWQ.js";import{a as Jn}from"./chunk-ARZGPVXK.js";import"./chunk-XRJHSHSG.js";import"./chunk-JE2WTDKI.js";import{c as Je}from"./chunk-LO5GPMW5.js";import"./chunk-NKJNLA4H.js";import"./chunk-WL334ETE.js";import"./chunk-WDIOLPZ2.js";import{b as Ht,c as ye,d as On}from"./chunk-X6WED2AZ.js";import{b as Vn,c as Bn}from"./chunk-OWUF4SRJ.js";import"./chunk-WU5OWFCN.js";import"./chunk-F5IQZLEF.js";import"./chunk-ARHRSX7S.js";import{a as zn}from"./chunk-56U2VUAK.js";import"./chunk-YA3REOTQ.js";import"./chunk-7WOG2EAO.js";import"./chunk-HB4JGH6L.js";import"./chunk-HR6ZQB2F.js";import"./chunk-HO7Z6GDI.js";import"./chunk-IHLDGMX5.js";import"./chunk-YFJ6KMKI.js";import"./chunk-BZ5C7JNQ.js";import"./chunk-FPCIQYGC.js";import"./chunk-FHCTE6FP.js";import"./chunk-E34OQ4RJ.js";import"./chunk-H4EPMV5Z.js";import{q as ji}from"./chunk-JN6AA4VD.js";import{a as Ce}from"./chunk-ZSHO3KMD.js";import{a as $n}from"./chunk-QVGEDMLN.js";import{a as Yi}from"./chunk-UZY2R5Q5.js";import"./chunk-5GAGQHFR.js";import"./chunk-RYT6C367.js";import"./chunk-SNZM6YGS.js";import"./chunk-33XKUF6S.js";import"./chunk-3PGMBZAP.js";import"./chunk-FQFO62CD.js";import"./chunk-VT7CJSCD.js";import"./chunk-67IT4HQ6.js";import"./chunk-2BXTPQTP.js";import"./chunk-JED7GRQQ.js";import"./chunk-ZECF2WJA.js";import{a as Se}from"./chunk-PNYSZFNB.js";import{A as le,C as Me,F as nt,G as ot,H as Hn,M as Re,N as Qn,O as at,P as rt,T as ei,V as ve,W as jn,X as Yn,Z as st,a as et,b as Qt,c as tt,e as it,g as Un,ga as ze,i as V,j as jt,k as L,l as Yt,la as j,m as Pe,ma as Zn,n as Gn,na as Xn,oa as ti,p as Wn,r as Zt,s as q,t as qn,u as Xt,v as Jt,w as Ae,wa as Y,ya as Ue}from"./chunk-Y3MTRBLK.js";import"./chunk-XMBPLYUK.js";import"./chunk-QRMJLQVM.js";import"./chunk-24HYNKH3.js";import"./chunk-XQ3OH5B7.js";import"./chunk-DE65ZGA7.js";import{a as O}from"./chunk-65I45D2I.js";import"./chunk-GZL4NBTB.js";import{a as ke}from"./chunk-OMIAKVTT.js";import{c as Nn,j as qt,r as _e,t as Ee}from"./chunk-3XCK7DOC.js";import"./chunk-PJWNDC7A.js";import{A as te,B as Gt,C as Wt,D as Dn,G as Rn,K as ge,M as se,N as fe,c as Q,e as F,h as W,i as de,o as pe,p as me,q as Ut,u as ue,x as he,y as J,z as ee}from"./chunk-QDFFLVTB.js";import"./chunk-JIVZONLP.js";import"./chunk-S43ITSQ5.js";import{b as Kn,e as Bt,f as Ln,h as $t,i as zt,k as Qi}from"./chunk-5FWAKVG3.js";import{q as In,u as $e,z as Fn}from"./chunk-KAXBUATZ.js";import{$c as Nt,Ac as T,Bc as E,Cc as d,Cd as An,Dc as r,Dd as qi,Ea as X,Eb as we,Ec as s,Ed as Mn,Fa as Kt,Fc as _,Ib as kn,Ja as b,Jb as a,Jd as Te,Kd as Hi,L as Be,Ld as Ve,M as Ft,Ob as re,Oc as w,Sa as g,Ta as f,V as Oe,Vc as h,Wb as ie,Xc as m,a as je,ad as Ot,bc as M,bd as Vt,cc as Rt,d as wn,fb as Lt,fd as Ze,g as G,gc as Ye,hd as vt,i as It,ib as Dt,jd as p,kd as y,ld as I,md as ce,rd as D,re as Xe,sa as En,sd as R,tc as oe,td as N,va as x,vc as v,ve as De,wc as Pn,x as Tn,xc as S,z as Le,zc as z}from"./chunk-XW6AEKHB.js";import{a as $,b as Z,e as xn,i as Wi,l as P}from"./chunk-6G35VSEK.js";var Xa=(n,l)=>l.key,Ja=(n,l)=>l.control;function er(n,l){if(n&1&&(r(0,"option",13),p(1),s()),n&2){let e=l.$implicit;d("value",e),a(),y(e)}}function tr(n,l){if(n&1&&(r(0,"option",13),p(1),s()),n&2){let e=l.$implicit;d("value",e),a(),y(e)}}function ir(n,l){if(n&1&&(r(0,"option",13),p(1),s()),n&2){let e=l.$implicit;d("value",e.key),a(),y(e.label)}}function nr(n,l){if(n&1){let e=w();r(0,"cnp-settings-row",19)(1,"cnp-toggle",23),h("toggled",function(i){let o=g(e).$implicit,c=m();return f(c.setToggle(o.control,i))}),s()()}if(n&2){let e=l.$implicit,t=m();d("label",e.label)("description",e.description),a(),d("ariaLabel",e.label)("checked",!!t.form.controls[e.control].value)}}var or=[{control:"preSession",label:"Pre-session",description:"Runs before the session start (countdown, sponsor video, etc.) and doesn\u2019t change the session time."},{control:"aiTranscription",label:"AI transcription",description:"Transcribe this item\u2019s audio. Defaults on for talk formats (keynote, panel, interview, fireside chat, workshop) and off for everything else."},{control:"aiSummaries",label:"AI summaries",description:"Generate an AI summary after this item runs. Follows the same per-type default as transcription."},{control:"autoSendNotification",label:"Auto-send segment notification",description:"Automatically notify attendees when this
1segment\u2019s AI summary is ready."}],yi=(()=>{class n{constructor(e,t){this.fb=e,this.activeModal=t,this.typeOptions=io,this.stageOptions=no,this.statusOptions=ct,this.statusKeys=to,this.maxDuration=Zi,this.toggles=or,this.isSaving=!1,this.aiTranscriptionOverridden=!1,this.aiSummariesOverridden=!1,this.destroy$=new G}ngOnInit(){let e=tn(en);this.form=this.fb.group({topic:["",[F.maxLength(1e3)]],duration:[0,[F.required,F.min(0),F.max(Zi)]],type:[en,[F.required]],stage:["A",[F.required]],status:["placeholder",[F.required]],preSession:[!1],aiTranscription:[e.aiTranscription==="Y"],aiSummaries:[e.aiSummaries==="Y"],autoSendNotification:[!1]}),this.form.controls.type.valueChanges.pipe(x(this.destroy$)).subscribe(t=>this.applyTypeAiDefaults(t)),this.form.controls.aiTranscription.valueChanges.pipe(x(this.destroy$)).subscribe(()=>{this.aiTranscriptionOverridden=!0}),this.form.controls.aiSummaries.valueChanges.pipe(x(this.destroy$)).subscribe(()=>{this.aiSummariesOverridden=!0})}ngOnDestroy(){this.destroy$.next(),this.destroy$.complete()}applyTypeAiDefaults(e){let{aiTranscription:t,aiSummaries:i}=tn(e);this.aiTranscriptionOverridden||this.form.controls.aiTranscription.setValue(t==="Y",{emitEvent:!1}),this.aiSummariesOverridden||this.form.controls.aiSummaries.setValue(i==="Y",{emitEvent:!1})}get isInvalid(){return this.form.invalid}setToggle(e,t){this.form.controls[e].setValue(t)}get topicError(){let e=this.form.controls.topic;return e.invalid&&e.touched?"Topic must be 1000 characters or fewer.":""}get topicCounter(){return`${String(this.form.controls.topic.value??"").length}/1000`}get durationError(){let e=this.form.controls.duration;return e.invalid&&e.touched?`Enter a duration between 0 and ${this.maxDuration} minutes (24 hours).`:""}submit(){return P(this,null,function*(){if(this.form.invalid||this.isSaving){this.form.markAllAsTouched();return}let e=this.form.value,t={patch:{topic:(e.topic??"").trim(),duration:Number(e.duration)||0,type:e.type,stage:e.stage,status:e.status,preSession:!!e.preSession,aiTranscription:e.aiTranscription?"Y":"N",aiSummaries:e.aiSummaries?"Y":"N",autoSendNotification:e.autoSendNotification?"Y":"N"}};if(!this.submitHandler){this.activeModal.close(t);return}this.isSaving=!0;try{yield this.submitHandler(t),this.activeModal.close(t)}catch{this.isSaving=!1}})}dismiss(){this.isSaving||this.activeModal.dismiss()}static{this.\u0275fac=function(t){return new(t||n)(ie(ge),ie(_e))}}static{this.\u0275cmp=M({type:n,selectors:[["app-runsheet-add-item-modal"]],decls:32,vars:9,consts:[[1,"modal-header"],[1,"modal-title"],["variant","ghost","size","sm","ariaLabel","Close",1,"dialog-close",3,"click","iconOnly"],["name","close"],["novalidate","",3,"ngSubmit","formGroup"],[1,"modal-body"],[1,"add-item-modal-grid"],["label","Topic","controlId","add-item-topic",1,"add-item-modal-full",3,"error","counter"],["cnpInput","","id","add-item-topic","type","text","formControlName","topic","maxlength","1000","placeholder","e.g. Opening keynote"],["label","Duration (mins)","controlId","add-item-duration",3,"error"],["cnpInput","","id","add-item-duration","type","number","min","0","step","1","formControlName","duration",3,"max"],["label","Type","controlId","add-item-type"],["cnpInput","","id","add-item-type","formControlName","type"],[3,"value"],["label","Stage","controlId","add-item-stage"],["cnpInput","","id","add-item-stage","formControlName","stage"],["label","Status","controlId","add-item-status",1,"add-item-modal-full"],["cnpInput","","id","add-item-status","formControlName","status"],[1,"add-item-modal-full","add-item-modal-toggles"],[3,"label","description"],[1,"modal-footer"],["variant","secondary",3,"click","disabled"],["type","submit","loadingLabel","Adding agenda item",3,"disabled","loading"],[3,"toggled","ariaLabel","checked"]],template:function(t,i){t&1&&(r(0,"div",0)(1,"h5",1),p(2,"Add agenda item"),s(),r(3,"cnp-button",2),h("click",function(){return i.dismiss()}),_(4,"cnp-icon",3),s()(),r(5,"form",4),h("ngSubmit",function(){return i.submit()}),r(6,"div",5)(7,"div",6)(8,"cnp-field",7),_(9,"input",8),s(),r(10,"cnp-field",9),_(11,"input",10),s(),r(12,"cnp-field",11)(13,"select",12),T(14,er,2,2,"option",13,z),s()(),r(16,"cnp-field",14)(17,"select",15),T(18,tr,2,2,"option",13,z),s()(),r(20,"cnp-field",16)(21,"select",17),T(22,ir,2,2,"option",13,Xa),s()(),r(24,"div",18),T(25,nr,2,4,"cnp-settings-row",19,Ja),s()()(),r(27,"div",20)(28,"cnp-button",21),h("click",function(){return i.dismiss()}),p(29,"Cancel"),s(),r(30,"cnp-button",22),p(31," Add item "),s()()()),t&2&&(a(3),d("iconOnly",!0),a(2),d("formGroup",i.form),a(3),d("error",i.topicError)("c
1ounter",i.topicCounter),a(2),d("error",i.durationError),a(),d("max",i.maxDuration),a(3),E(i.typeOptions),a(4),E(i.stageOptions),a(4),E(i.statusOptions),a(3),E(i.toggles),a(3),d("disabled",i.isSaving),a(2),d("disabled",i.isInvalid)("loading",i.isSaving))},dependencies:[fe,me,ee,te,Q,Ut,J,W,de,Rn,Wt,Gt,ue,he,L,j,V,q,Xn,ti],styles:[".add-item-modal-grid[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--cnp-space-4)}.add-item-modal-full[_ngcontent-%COMP%]{grid-column:1/-1}.add-item-modal-toggles[_ngcontent-%COMP%]{display:flex;flex-direction:column}@media (width <= 40rem){.add-item-modal-grid[_ngcontent-%COMP%]{grid-template-columns:1fr}}"]})}}return n})();var ar=210,rr=297,Ne=16,Pt=ar-Ne*2,xe=6,sr=rr-18,Yo=(()=>{class n{export(e,t){return P(this,null,function*(){let i=e.map(o=>({title:o.sessionTitle,blocks:this.buildBlocks(o)})).filter(o=>o.blocks.length>0);if(!i.length)throw new Error("No briefing questions to export in the selected sessions.");yield this.render(i,t)})}exportSingleItem(e,t,i,o,c){return P(this,null,function*(){let u=this.toBlock(e,t,i);if(!u)throw new Error("This line item has no briefing questions.");yield this.render([{title:o,blocks:[u]}],c)})}buildBlocks(e){let t=si(e.items,e.sessionStart??void 0),i=new Map(t.map(c=>[c.itemPK,c.startMinutes])),o=new Map(t.map(c=>[c.itemPK,c.endMinutes]));return e.items.map(c=>this.toBlock(c,i.get(c.itemPK)??0,o.get(c.itemPK)??0)).filter(c=>c!==null).sort((c,u)=>c.startMinutes-u.startMinutes)}toBlock(e,t,i){let o=(e.briefingQuestions??[]).map(C=>C.text).filter(C=>!!C?.trim());if(!o.length)return null;let c=e.hostSpeaker?.name||e.hostFallback||"",u=[...c?[`Host: ${c}`]:[],...(e.participantSpeakers??[]).map(C=>C.name),...e.participantFallbacks??[]].filter(C=>!!C?.trim());return{timeLabel:`${on(t)} \u2013 ${on(i)}`,topic:e.topic?.trim()||"(untitled segment)",speakers:u.join(", "),questions:o,startMinutes:t}}render(e,t){return P(this,null,function*(){let{jsPDF:i}=yield import("./chunk-S3LMLFY3.js"),o=new i({unit:"mm",format:"a4"}),c=wt(t.primaryColorHex)??[22,72,116],u=Ne;o.setTextColor(...c),o.setFont("helvetica","bold"),o.setFontSize(16);for(let k of o.splitTextToSize(`${t.eventName} \u2014 Briefing questions`,Pt))o.text(k,Ne,u),u+=xe;u+=2,o.setTextColor(120,120,120),o.setFont("helvetica","normal"),o.setFontSize(9),o.text("Questions in running order, grouped by line item.",Ne,u),u+=xe;let C=new Date;
1o.text(We(C,t),Ne,u),u+=xe+2,o.setTextColor(0,0,0);for(let k of e){u=this.ensureSpace(o,u,xe*3),o.setFont("helvetica","bold"),o.setFontSize(13),o.setTextColor(...c);for(let A of o.splitTextToSize(k.title,Pt))u=this.ensureSpace(o,u,xe),o.text(A,Ne,u),u+=xe;o.setTextColor(0,0,0),u+=1;for(let A of k.blocks)u=this.renderBlock(o,A,u);u+=2}o.save(this.filename(t,C))})}renderBlock(e,t,i){let o=this.ensureSpace(e,i,xe*3);e.setFont("helvetica","bold"),e.setFontSize(11);for(let c of e.splitTextToSize(`${t.timeLabel} ${t.topic}`,Pt))o=this.ensureSpace(e,o,xe),e.text(c,Ne,o),o+=xe;if(t.speakers){e.setFont("helvetica","normal"),e.setFontSize(9),e.setTextColor(120,120,120);for(let c of e.splitTextToSize(t.speakers,Pt))o=this.ensureSpace(e,o,xe),e.text(c,Ne,o),o+=xe-1;e.setTextColor(0,0,0)}return e.setFont("helvetica","normal"),e.setFontSize(11),t.questions.forEach((c,u)=>{let C=e.splitTextToSize(`Q${u+1}: ${c}`,Pt-4);for(let k of C)o=this.ensureSpace(e,o,xe),e.text(k,Ne+4,o),o+=xe}),o+3}ensureSpace(e,t,i){return t+i>sr?(e.addPage(),Ne):t}filename(e,t){let i=e.scopeLabel?`-${Et(e.scopeLabel)}`:"";return`${Et(e.eventName)}-briefing-questions${i}-${di(t,e.timezone)}.pdf`}static{this.\u0275fac=function(t){return new(t||n)}}static{this.\u0275prov=X({token:n,factory:n.\u0275fac,providedIn:"root"})}}return n})();var _t=(()=>{class n{constructor(){this.http=b(De)}list(e={}){let t=new Xe;return e.type&&(t=t.set("type",e.type)),e.status&&(t=t.set("status",e.status)),e.scopeType&&(t=t.set("scopeType",e.scopeType)),e.scopeValue&&(t=t.set("scopeValue",e.scopeValue)),this.http.get(`${O.api}/content-assets`,{params:t})}view(e){return this.http.get(`${O.api}/content-assets/${e}`)}create(e){return this.http.post(`${O.api}/content-assets`,e)}update(e,t){return this.http.put(`${O.api}/content-assets/${e}`,t)}remove(e){return this.http.delete(`${O.api}/content-assets/${e}`)}download(e){return this.http.get(`${O.api}/content-assets/${e}/download`)}createVersion(e,t){return this.http.post(`${O.api}/content-assets/${e}/version`,t)}versions(e){return this.http.get(`${O.api}/content-assets/${e}/versions`)}bySession(e){return this.http.get(`${O.api}/content-assets/by-session/${e}`)}bulkDownloadBySession(e){return this.http.get(`${O.api}/content-assets/by-session/${e}/download`)}byItem(e){return this.http.get(`${O.api}/content-assets/by-item/${e}`)}uploadToTicket(e,t){let i=e.uploadHeaders??{"Content-Type":t.type||"application/octet-stream"};return new wn(o=>{fetch(e.uploadUrl,{method:"PUT",headers:i,body:t}).then(c=>{if(!c.ok){o.error(new Error(`S3 upload failed: ${c.status} ${c.statusText}`));return}o.next(),o.complete()}).catch(c=>o.error(c))})}static{this.\u0275fac=function(t){return new(t||n)}}static{this.\u0275prov=X({token:n,factory:n.\u0275fac,providedIn:"root"})}}return n})();var At="#segment",Zo=(()=>{class n{constructor(){this.websocket=b(Si),this.eventService=b(Ce),this.topicSessions=b(hi),this.destroy$=new G,this.subjects=new Map,this.tracked=new Map,this.announcedAt=new Map,this.seedSubs=new je,this.liveEventUrl="",this.websocket.messages$.pipe(x(this.destroy$)).subscribe(e=>this.handleMessage(e)),this.websocket.reconnected$.pipe(x(this.destroy$)).subscribe(()=>this.reload())}state$(e){return this.getOrCreate(e).asObservable()}init(e){let t=e.filter(u=>u.sessionPK&&u.topicSessionPK),i=new Map(t.map(u=>[u.sessionPK,u.topicSessionPK]));for(let u of Array.from(this.tracked.keys()))i.has(u)||this.drop(u);let o=t.filter(u=>this.tracked.get(u.sessionPK)!==u.topicSessionPK);if(!o.length)return;let c=this.eventService.data?.url??"";this.liveEventUrl=c;for(let u of o)this.tracked.has(u.sessionPK)||this.websocket.subscribe(`${u.sessionPK}${At}`,c),this.tracked.set(u.sessionPK,u.topicSessionPK);this.websocket.connect().catch(u=>console.warn("[RunsheetLiveSegment] WS connect failed \u2014 the channel replays on reconnect",u)),this.seed(o)}drop(e){this.websocket.unsubscribe(`${e}${At}`,this.liveEventUrl),this.tracked.delete(e),this.announcedAt.delete(e),this.subjects.get(e)?.next({liveSegment:null,syncMode:null})}reload(){this.seed(Array.from(this.tracked,([e,t])=>({sessionPK:e,topicSessionPK:t})))}teardown(){this.seedSubs.unsubscribe(),this.seedSubs=new je;for(let e of this.tracked.keys())this.websocket.unsubscribe(`${e}${At}`,this.liveEventUrl);this.tracked.clear(),this.announcedAt.clear();for(let e of this.subjects.values())e.complete();this.subjects.clear()}ngOnDestroy(){this.teardown(),this.destroy$.next(),this.destroy$.complete()}seed(e){for(let{sessionPK:t,topicSessionPK:i}of e){let o=Date.now();this.seedSubs.add(this.topicSessions.liveSegment(i).subscribe({next:c=>{if(c.success!==1||!c.data||this.tracked.get(t)!==i)return;let u=this.getOrCreate(t),C=this.announcedAt.get(t),k=C!==void 0&&C>=o?u.value.liveSegment:c.data.liveSegment;u.next({liveSegment:k,syncMode:c.data.syncMode})},error:()=>{}}))}}getOrCreate(e){let t=this.subjects.get(e);return t||(t=new It({liveSegment:null,syncMode:null}),this.subjects.set(e,t)),t}handleMessage(e){let t=e;if(!t?.type?.endsWith(At)||t.data?.action!=="segmentUpdate")return;let i=t.type.slice(0,-At.length),o=this.subjects.get(i);o&&(this.announcedAt.set(i,Date.now()),o.next(Z($({},o.value),{liveSegment:t.data.liveSegment??null})))}static{this.\u0275fac=function(t){return new(t||n)}}static{this.\u0275prov=X({token:n,factory:n.\u0275fac,providedIn:"root"})}}return n})();var Xo=(()=>{class n{constructor(){this.websocket=b(Si),this.http=b(De),this.eventService=b(Ce),this.destroy$=new G,this.subjects=new Map,this.subscribed=new Set,this.pollSubs=new je,this.liveEventUrl="",this.websocket.messages$.pipe(x(this.destroy$)).subscribe(e=>this.handleMessage(e))}isLive$(e){return this.getOrCreate(e).asObservable()}init(e){let t=e.filter(o=>o&&!this.subscribed.has(o));if(!t.length)return;let i=this.eventService.data?.url??"";this.liveEventUrl=i,this.websocket.connect().then(()=>{for(let o of t)this.websocket.subscribe(`live-transcript#${o}`,i),this.subscribed.add(o)}).catch(o=>console.warn("[TranscriptionLive] WS subscribe failed",o));for(let o of t)this.pollSubs.add(this.http.get(`${O.api}/transcript-recordings/${o}/in-progress-recordings`).subscribe({next:c=>{c.success===1&&Array.isArray(c.data)&&c.data.length>0&&this.getOrCreate(o).next(!0)},error:()=>{}}))}teardown(){this.pollSubs.unsubscribe(),this.pollSubs=new je;for(let e of this.subscribed)this.websocket.unsubscribe(`live-transcript#${e}`,this.liveEventUrl);this.subscribed.clear();for(let e of this.subjects.values())e.next(!1),e.complete();this.subjects.clear()}ngOnDestroy(){this.teardown(),this.destroy$.next(),this.destroy$.complete()}getOrCreate(e){let t=this.subjects.get(e);return t||(t=new It(!1),this.subjects.set(e,t)),t}handleMessage(e){if(!e||typeof e!="object")return;let t=e;if(!t.type||!t.data)return;let i="live-transcript#";if(!t.type.startsWith(i))return;let o=t.type.slice(i.length);if(o.includes("#"))return;let c=o,u=this.subjects.get(c);if(!u)return;let{type:C,activePublisher:k}=t.data;C==="transcriptStarted"||C==="transcriptResumed"?u.next(!0):(C==="transcriptStopped"||C==="publisherL
1ockChanged"&&k===null)&&u.next(!1)}static{this.\u0275fac=function(t){return new(t||n)}}static{this.\u0275prov=X({token:n,factory:n.\u0275fac,providedIn:"root"})}}return n})();var lr=["on-hold","pending","in-progress","approved"],Jo=n=>{for(let l of lr)if(n.includes(l))return l;return null};var bi=Wi(Yi());var ea=(n,l,e)=>{let t=new Map(l.map(i=>[i.PK,i.name]));return n.filter(i=>!!i).map(i=>e.get(i)??t.get(i)??"").filter(Boolean)},cr=(n,l,e)=>{let t=l.sessionDateEpochMs?bi.default.tz(l.sessionDateEpochMs,e):null,i=n.session?.startTime?bi.default.tz(n.session.startTime,e):null;return([t,i].find(c=>c?.isValid())??bi.default.tz(e)).zoneAbbr()},dr=(n,l)=>{let e=`${an(l.startMinutes)}-${an(l.endMinutes)}`,t=l.timezone?cr(n,l,l.timezone):"";return t?`${e} ${t}`:e},ta=(n,l)=>{let e=ea([n.hostSpeakerPK],n.hostSpeaker?[n.hostSpeaker]:[],l.speakerNamesByPK)[0]??n.hostFallback??"",t=[...ea(n.participantSpeakerPKs??[],n.participantSpeakers??[],l.speakerNamesByPK),...(n.participantFallbacks??[]).filter(Boolean)],i=[n.type,n.stage].filter(Boolean).join(", ");return[dr(n,l),n.topic?.trim()||"Untitled item",i,bt(n.duration??0),e?`Host: ${e}`:"",t.length?`With: ${t.join(", ")}`:"",lo(n.status).label].filter(Boolean).join(" - ")};var Mt=Wi(Yi());var aa="YYYY-MM-DD",ia="HH:mm",na="YYYY-MM-DD HH:mm:ss",un="\u2014",hn=(n,l)=>{if(!n)return null;let e=l?Mt.default.tz(n,l):(0,Mt.default)(n);return e.isValid()?e:null},gn=(n,l)=>{if(!n)return null;let e=n.timezone||l||null,t=hn(n.startTime,e);if(!t)return null;let i=hn(n.endTime,e)??t;return{day:t.format(aa),startTime:t.format(ia),endTime:i.format(ia)}},oa=(n,l)=>Ke(n)??Ke(St(n,l)),ra=(n,l,e)=>{let t=!!n.day&&n.day!==l.day,i=oa(n.startTime,e),o=oa(n.endTime,e),c=i!==null&&i!==Ke(l.startTime),u=o!==null&&o!==Ke(l.endTime);return t||c||u},xi=(n,l,e)=>{let t=ri(n.day,l)||un,i=dt(n.startTime,e)||un,o=dt(n.endTime,e)||un;return`${t} \xB7 ${i} \u2013 ${o}`},sa=(n,l,e)=>{let t=`${l.day} ${l.startTime}:00`,i=`${l.day} ${l.endTime}:00`,[o,c,u]=l.day.split("-").map(Number),C={year:o,month:c,day:u};return Z($({},n),{startTime:t,endTime:i,startTimeUtc:Mt.default.tz(t,na,e).utc().toDate().toISOString(),endTimeUtc:Mt.default.tz(i,na,e).utc().toDate().toISOString(),startDate:C,endDate:C,timezone:e})},la=(n,l,e)=>{let t=c=>{if(!c)return null;let u=hn(c.replace("T"," ").replace("Z",""),e);return u?u.format(aa):null},i=t(n),o=t(l);return i&&o?{min:i,max:o}:null};var ca=[{value:"Arial",label:"Arial"},{value:"Calibri",label:"Calibri"},{value:"Verdana",label:"Verdana"},{value:"Times New Roman",label:"Times New Roman"},{value:"Georgia",label:"Georgia"},{value:"Courier New",label:"Courier New"}],da=new Set(["briefingDescription","briefingQuestions","liveQuestions","aiTranscription","aiSummaries"]);var pr=["fileInput"],mr=(n,l)=>l.PK,ur=(n,l)=>l.itemPK;function hr(n,l){if(n&1&&(r(0,"p",8),_(1,"cnp-icon",24),r(2,"span")(3,"span",25),p(4,"Agenda line item"),s(),r(5,"strong"),p(6),s(),r(7,"span",26),p(8,"The asset's title is inherited from this line item."),s()()()),n&2){let e=m();a(6),y(e.lockedScope.label||e.lockedScope.scopeValue)}}function gr(n,l){if(n&1&&(r(0,"option",30),p(1),s()),n&2){let e=l.$implicit;d("value",e.PK),a(),y(e.sessionName)}}function fr(n,l){if(n&1&&(r(0,"option",30),p(1),s()),n&2){let e=l.$implicit;d("value",e.itemPK),a(),y(e.topic)}}function _r(n,l){if(n&1&&(r(0,"cnp-field",27)(1,"select",28)(2,"option",29),p(3,"Pick a topic session\u2026"),s(),T(4,gr,2,2,"option",30,mr),s()(),r(6,"cnp-field",31)(7,"select",32)(8,"option",29),p(9),s(),T(10,fr,2,2,"option",30,ur),s()()),n&2){let e=m();d("required",!0)("error",e.errorFor("topicSessionPK","Select the topic session first.")),a(4),E(e.topicSessions),a(2),d("required",!0)("error",e.errorFor("agendaItemPK","Select the agenda line item this content belongs to.")),a(),oe("disabled",e.form.value.topicSessionPK?null:!0),a(2),I(" ",e.form.value.topicSessionPK?"Pick an agenda line item\u2026":"Pick a topic session first\u2026"," "),a(),E(e.agendaItems)}}function Cr(n,l){if(n&1&&(r(0,"option",12),p(1),s()),n&2){let e=l.$implicit;d("ngValue",e),a(),y(e)}}function vr(n,l){if(n&1&&(r(0,"option",12),p(1),s()),n&2){let e=l.$implicit,t=m();d("ngValue",e),a(),y(t.statusLabels[e])}}function Sr(n,l){n&1&&_(0,"input",18)}function yr(n,l){if(n&1&&(r(0,"p",34),p(1),s()),n&2){let e=m(2);a(),y(e.fileError)}}function br(n,l){if(n&1&&(r(0,"p",26),p(1),s()),n&2){let e=m(2);a(),ce("",e.selectedFile.name," \xB7 ",e.fileSizeLabel)}}function xr(n,l){if(n&1){let e=w();r(0,"input",33,0),h("change",function(i){g(e);let o=m();return f(o.onFileSelected(i))}),s(),v(2,yr,2,1,"p",34),r(3,"p",35),p(4),s(),v(5,br,2,2,"p",26)}if(n&2){let e=m();d("accept",e.acceptFilter),oe("aria-invalid",e.fileError?!0:null)("aria-describedby",e.fileError?"add-ca-file-error add-ca-file-help":"add-ca-file-help"),a(2),S(e.fileError?2:-1),a(2),I("Accepted formats: ",e.acceptedFormats),a(),S(e.selectedFile?5:-1)}}var Ct=(()=>{class n{get fileSizeLabel(){return this.selectedFile?`${(this.selectedFile.size/1024/1024).toFixed(2)} MB`:""}errorFor(e,t){let i=this.form.controls[e];return i.invalid&&i.touched?t:""}constructor(e){this.activeModal=e,this.sourceSegments=[{value:"url",label:"URL"},{value:"upload",label:"Upload"}],this.assetTypes=ht,this.statuses=gt,this.statusLabels=qe,this.topicSessions=[],this.allAgendaItems=[],this.source="url",this.selectedFile=null,this.fileError=null,this.isSaving=!1,this.fb=b
1(ge),this.facade=b(Ie),this.topicSessionsFacade=b(He),this.destroy$=new G}ngOnInit(){this.form=this.fb.group({topicSessionPK:["",[F.required]],agendaItemPK:["",[F.required]],type:["Video",[F.required]],status:["pending",[F.required]],linkUrl:[""],notes:[""]}),this.form.get("type")?.valueChanges.pipe(x(this.destroy$)).subscribe(e=>this.applyFile(this.selectedFile,e)),this.lockedScope?(this.form.get("topicSessionPK")?.clearValidators(),this.form.get("topicSessionPK")?.updateValueAndValidity(),this.form.patchValue({agendaItemPK:this.lockedScope.scopeValue})):(this.form.get("topicSessionPK")?.valueChanges.pipe(x(this.destroy$)).subscribe(()=>this.form.patchValue({agendaItemPK:""})),this.loadPickerSources())}ngOnDestroy(){this.destroy$.next(),this.destroy$.complete()}loadPickerSources(){this.facade.init(),this.topicSessionsFacade.init(),this.topicSessionsFacade.all$.pipe(x(this.destroy$)).subscribe(e=>{this.topicSessions=(e??[]).map(t=>({PK:t.PK,sessionName:t.sessionName||"(untitled session)"}))}),this.facade.allAgendaItems$.pipe(x(this.destroy$)).subscribe(e=>{this.allAgendaItems=(e??[]).map(t=>
1({itemPK:t.itemPK,topic:t.topic||"(untitled item)",topicSessionPK:t.topicSessionPK}))})}get agendaItems(){let e=this.form?.value.topicSessionPK;return e?this.allAgendaItems.filter(t=>t.topicSessionPK===e):[]}get acceptFilter(){return Ci(this.form.value.type)}get acceptedFormats(){return _i(this.form.value.type)}get isInvalid(){return this.form.invalid?!0:this.source==="url"?!this.form.value.linkUrl?.trim():!this.selectedFile}setSource(e){this.source=e,e==="url"?(this.selectedFile=null,this.fileError=null):this.form.get("linkUrl")?.setValue("")}onFileSelected(e){let t=e.target;this.applyFile(t?.files?.[0]??null,this.form.value.type)}applyFile(e,t){this.fileError=e?fi(t,e.name):null,this.selectedFile=this.fileError?null:e,this.fileError&&this.fileInput&&(this.fileInput.nativeElement.value="")}submit(){return P(this,null,function*(){if(this.isInvalid||this.isSaving){this.form.markAllAsTouched();return}let e=this.buildResult();if(!this.submitHandler){this.activeModal.close(e);return}this.isSaving=!0;try{yield this.submitHandler(e),this.activeModal.close(e)}catch{this.isSaving=!1}})}buildResult(){let e=this.form.value,t=(e.notes??"").trim()||void 0,i=this.lockedScope?this.lockedScope.scopeValue:(e.agendaItemPK??"").trim();return{input:{type:e.type,status:e.status,scopeType:"agenda-item",scopeValue:i,description:t,linkUrl:this.source==="url"?e.linkUrl.trim():void 0,upload:this.source==="upload"&&this.selectedFile?{fileName:this.selectedFile.name,mimeType:this.selectedFile.type||"application/octet-stream",size:this.selectedFile.size}:void 0},file:this.source==="upload"?this.selectedFile:null}}dismiss(){this.isSaving||this.activeModal.dismiss()}static{this.\u0275fac=function(t){return new(t||n)(ie(_e))}}static{this.\u0275cmp=M({type:n,selectors:[["app-runsheet-add-content-asset-modal"]],viewQuery:function(t,i){if(t&1&&Nt(pr,5,Dt),t&2){let o;Ot(o=Vt())&&(i.fileInput=o.first)}},inputs:{lockedScope:"lockedScope"},decls:32,vars:9,consts:[["fileInput",""],[1,"modal-header"],[1,"modal-title"],["variant","ghost","size","sm","ariaLabel","Close",1,"dialog-close",3,"click","iconOnly"],["name","close"],["novalidate","",3,"ngSubmit","formGroup"],[1,"modal-body"],[1,"content-modal"],[1,"content-modal-locked"],[1,"content-modal-row"],["label","Content type","controlId","add-ca-type"],["cnpInput","","id","add-ca-type","formControlName","type"],[3,"ngValue"],["label","Status","controlId","add-ca-status"],["cnpInput","","id","add-ca-status","formControlName","status"],[1,"content-modal-source"],[1,"content-modal-legend"],["ariaLabel","Asset source",3,"valueChange","segments","value"],["cnpInput","","type","url","aria-label","Asset URL","formControlName","linkUrl","placeholder","https://drive.google.com/\u2026"],["label","Notes","controlId","add-ca-notes"],["cnpInput","","id","add-ca-notes","rows","3","formControlName","notes","placeholder","Additional context\u2026"],[1,"modal-footer"],["variant","secondary",3,"click","disabled"],["type","submit","loadingLabel","Adding content",3,"disabled","loading"],["name","attachment","size","sm"],[1,"content-modal-locked-label"],[1,"content-modal-hint"],["label","Topic session","controlId","add-ca-topic-session",3,"required","error"],["cnpInput","","id","add-ca-topic-session","formControlName","topicSessionPK"],["value","","disabled",""],[3,"value"],["label","Agenda line item","controlId","add-ca-agenda-item","help","The asset's title is inherited from the selected line item.",3,"required","error"],["cnpInput","","id","add-ca-agenda-item","formControlName","agendaItemPK"],["cnpInput","","type","file","aria-label","Asset file",3,"change","accept"],["id","add-ca-file-error","role","alert",1,"content-modal-error"],["id","add-ca-file-help",1,"content-modal-hint"]],template:function(t,i){t&1&&(r(0,"div",1)(1,"h5",2),p(2,"Add content asset"),s(),r(3,"cnp-button",3),h("click",function(){return i.dismiss()}),_(4,"cnp-icon",4),s()(),r(5,"form",5),h("ngSubmit",function(){return i.submit()}),r(6,"div",6)(7,"div",7),v(8,hr,9,1,"p",8)(9,_r,12,6),r(10,"div",9)(11,"cnp-field",10)(12,"select",11),T(13,Cr,2,2,"option",12,z),s()(),r(15,"cnp-field",13)(16,"select",14),T(17,vr,2,2,"option",12,z),s()()(),r(19,"fieldset",15)(20,"legend",16),p(21,"Asset link or upload"),s(),r(22,"cnp-segmented",17),h("valueChange",function(c){return i.setSource(c)}),s(),v(23,Sr,1,0,"input",18)(24,xr,6,6),s(),r(25,"cnp-field",19),_(26,"textarea",20),s()()(),r(27,"div",21)(28,"cnp-button",22),h("click",function(){return i.dismiss()}),p(29,"Cancel"),s(),r(30,"cnp-button",23),p(31," Add content "),s()()()),t&2&&(a(3),d("iconOnly",!0),a(2),d("formGroup",i.form),a(3),S(i.lockedScope?8:9),a(5),E(i.assetTypes),a(4),E(i.statuses),a(5),d("segments",i.sourceSegments)("value",i.source),a(),S(i.source==="url"?23:24),a(5),d("disabled",i.isSaving),a(2),d("disabled",i.isInvalid)("loading",i.isSaving))},dependencies:[fe,me,ee,te,Q,J,W,de,ue,he,L,j,V,q,st],styles:[".content-modal[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:var(--cnp-space-4)}.content-modal-row[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--cnp-space-4)}.content-modal-source[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:var(--cnp-space-3);margin:0;padding:0;border:0}.content-modal-legend[_ngcontent-%COMP%]{padding:0;font-size:var(--cnp-font-size-label);font-weight:var(--cnp-font-weight-medium);color:var(--cnp-color-text-secondary)}.content-modal-locked[_ngcontent-%COMP%]{display:flex;align-items:flex-start;gap:var(--cnp-space-2);margin:0}.content-modal-locked-label[_ngcontent-%COMP%]{display:block;font-size:var(--cnp-font-size-label);color:var(--cnp-color-text-secondary)}.content-modal-hint[_ngcontent-%COMP%]{display:block;margin:0;font-size:var(--cnp-font-size-label);color:var(--cnp-color-text-muted)}.content-modal-error[_ngcontent-%COMP%]{display:block;margin:0;font-size:var(--cnp-font-size-label);color:var(--cnp-color-danger-fg)}@media (width <= 40rem){.content-modal-row[_ngcontent-%COMP%]{grid-template-columns:minmax(0,1fr)}}"]})}}return n})();var ua=n=>({segment:n}),wr=(n,l)=>l.key,Tr=(n,l)=>l._id,Er=(n,l)=>l.PK;function kr(n,l){if(n&1&&(r(0,"cnp-tooltip",13),_(1,"cnp-icon",35),s()),n&2){let e=m();d("text",e.briefMarkTitle),a(),d("label",e.briefMarkTitle)}}function Pr(n,l){if(n&1){let e=w();r(0,"cnp-button",36),h("click",function(){g(e);let i=m();return f(i.exportQuestions.emit())}),_(1,"cnp-icon",37),p(2," Questions PDF "),s()}}function Ar(n,l){if(n&1){let e=w();r(0,"cnp-button",38),h("click",function(){g(e);let i=m();return f(i.seedLiveQuestions())}),_(1,"cnp-icon",39),p(2," Preload into live Q&A "),s()}if(n&2){let e=m();d("loading",e.isSeedingQuestions)}}function Mr(n,l){n&1&&(r(0,"button",42),_(1,"cnp-icon",45),s())}function Ir(n,l){if(n&1){let e=w();r(0,"span",44)(1,"cnp-button",46),h("click",function(){g(e);let i=m().$index,o=m(2);return f(o.moveQuestion(i,-1))}),_(2,"cnp-icon",47),s(),r(3,"cnp-button",48),h("click",function(){g(e);let i=m().$index,o=m(2);return f(o.moveQuestion(i,1))}),_(4,"cnp-icon",49),s(),r(5,"cnp-button",50),h("click",function(){g(e);let i=m().$implicit,o=m(2);return f(o.removeBriefingQuestion(i._id))}),_(6,"cnp-icon",51),s()()}if(n&2){let e=m().$index,t=m(2);a(),d("iconOnly",!0)("disabled",e===0),a(2),d("iconOnly",!0)("disabled",e===t.briefingQuestions.length-1),a(2),d("iconOnly",!0)}}function Fr(n,l){if(n&1){let e=w();r(0,"li",41),v(1,Mr,2,0,"button",42),r(2,"textarea",43),h("ngModelChange",function(i){let o=g(e).$implicit,c=m(2);return f(c.updateBriefingQuestion(o._id,i))}),s(),v(3,Ir,7,5,"span",44),s()}if(n&2){let e=l.$implicit,t=m(2);a(),S(t.readonly?-1:1),a(),d("disabled",t.readonly)("ngModel",e.text),a(),S(t.readonly?-1:3)}}function Kr(n,l){if(n&1){let e=w();r(0,"ul",40),h("cdkDropListDropped",function(i){g(e);let o=m();return f(o.onQuestionDrop(i))}),T(1,Fr,4,4,"li",41,Tr),s()}if(n&2){let e=m();d("cdkDropListDisabled",e.readonly),a(),E(e.briefingQuestions)}}function Lr(n,l){n&1&&(r(0,"p",18),p(1,"No briefing questions yet."),s())}function Dr(n,l){if(n&1){let e=w();r(0,"div",19)(1,"input",52),N("ngModelChange",function(i){g(e);let o=m();return R(o.newQuestionText,i)||(o.newQuestionText=i),f(i)}
1),h("keydown.enter",function(i){return g(e),m().addBriefingQuestion(),f(i.preventDefault())}),s(),r(2,"cnp-button",53),h("click",function(){g(e);let i=m();return f(i.addBriefingQuestion())}),p(3,"Add"),s()()}if(n&2){let e=m();a(),D("ngModel",e.newQuestionText),a(),d("disabled",!e.newQuestionText.trim())}}function Rr(n,l){if(n&1&&(r(0,"a",55),p(1,"Download"),s()),n&2){let e=m(2);d("href",e.item.scriptFileUrl,we)}}function Nr(n,l){if(n&1&&(r(0,"p",22),_(1,"cnp-icon",54),p(2," Attached: "),r(3,"strong"),p(4),s(),v(5,Rr,2,1,"a",55),s()),n&2){let e=m();a(4),y(e.item.scriptFileName),a(),S(e.item.scriptFileUrl?5:-1)}}function Or(n,l){if(n&1&&(r(0,"a",55),p(1,"Download"),s()),n&2){let e=m(2);d("href",e.item.slidesFileUrl,we)}}function Vr(n,l){if(n&1&&(r(0,"p",22),_(1,"cnp-icon",54),p(2," Attached: "),r(3,"strong"),p(4),s(),v(5,Or,2,1,"a",55),s()),n&2){let e=m();a(4),y(e.item.slidesFileName),a(),S(e.item.slidesFileUrl?5:-1)}}function Br(n,l){if(n&1&&(r(0,"cnp-callout",26),p(1),s()),n&2){let e=m();a(),y(e.contentError)}}function $r(n,l){if(n&1){let e=w();r(0,"cnp-button",60),h("click",function(){g(e);let i=m().$implicit,o=m(2);return f(o.removeAsset(i))}),_(1,"cnp-icon",51),s()}if(n&2){let e=m().$implicit,t=m(2);d("iconOnly",!0)("ariaLabel","Remove "+e.type)("disabled",t.isRemoving)}}function zr(n,l){if(n&1&&(r(0,"li",56)(1,"span",57),p(2),s(),r(3,"cnp-status-pill",58),p(4),s(),v(5,$r,2,3,"cnp-button",59),s()),n&2){let e=l.$implicit,t=m(2);a(2),y(e.type),a(),d("tone",t.contentStatusTone(e.status)),a(),y(t.statusLabels[e.status]),a(),S(t.readonly?-1:5)}}function Ur(n,l){if(n&1&&(r(0,"ul",27),T(1,zr,6,4,"li",56,Er),s()),n&2){let e=m();a(),E(e.attachedAssets)}}function Gr(n,l){n&1&&(r(0,"p",25),p(1,"No content assets attached yet."),s())}function Wr(n,l){if(n&1){let e=w();r(0,"cnp-button",61),h("click",function(){g(e);let i=m();return f(i.openUploadAndAttach())}),_(1,"cnp-icon",62),p(2," Upload & attach new "),s()}}function qr(n,l){if(n&1&&(r(0,"cnp-tooltip",13)(1,"cnp-status-pill",65),p(2,"Speaker brief"),s()()),n&2){let e=m(2);d("text",e.briefMarkTitle)}}function Hr(n,l){if(n&1&&(r(0,"a",64),_(1,"cnp-icon",66),p(2," View questions "),s()),n&2){let e=m(2);d("routerLink",e.questionsLink)("queryParams",qi(2,ua,e.item.itemPK))}}function Qr(n,l){if(n&1){let e=w();r(0,"div",30)(1,"cnp-checkbox",63),h("changed",function(i){let o=g(e).$implicit,c=m();return f(c.toggleAiFlag(o.key,i))}),s(),v(2,qr,3,1,"cnp-tooltip",13),v(3,Hr,3,4,"a",64),s()}if(n&2){let e=l.$implicit,t=m();a(),d("label",e.label)("description",e.description)("disabled",t.readonly)("checked",t.isAiFlagOn(e.key)),a(),S(t.inBrief(e.key)?2:-1),a(),S(e.key==="liveQuestions"&&t.questionsLink?3:-1)}}function jr(n,l){n&1&&(r(0,"p",67),_(1,"cnp-spinner",70),p(2," Generating summary\u2026 "),s())}function Yr(n,l){if(n&1&&(r(0,"cnp-callout",68),p(1),s()),n&2){let e=m(2);a(),I(" ",e.itemSummary.summaryError||"Summary generation failed."," ")}}function Zr(n,l){if(n&1&&(r(0,"p",25),_(1,"cnp-icon",73),p(2),s()),n&2){let e=m(3);a(2),I(" ",e.itemSummary.speakerNames.join(", ")," ")}}function Xr(n,l){if(n&1&&(r(0,"a",72),_(1,"cnp-icon",74),p(2," View full analysis "),s()),n&2){let e=m(3);d("routerLink",e.analysisLink)("queryParams",qi(2,ua,e.itemSummary.itemPK))}}function Jr(n,l){if(n&1&&(r(0,"p",71),p(1),s(),v(2,Zr,3,1,"p",25),v(3,Xr,3,4,"a",72)),n&2){let e=m(2);a(),y(e.itemSummary.summary),a(),S(e.itemSummary.speakerNames!=null&&e.itemSummary.speakerNames.length?2:-1),a(),S(e.analysisLink?3:-1)}}function es(n,l){if(n&1){let e=w();r(0,"cnp-button",75),h("click",function(){g(e);let i=m(2);return f(i.regenerateSummary())}),_(1,"cnp-icon",76),p(2," Regenerate "),s()}if(n&2){let e=m(2);d("loading",e.isRegenerating)}}function ts(n,l){if(n&1&&(v(0,jr,3,0,"p",67)(1,Yr,2,1,"cnp-callout",68)(2,Jr,4,3),v(3,es,3,1,"cnp-button",69)),n&2){let e,t=m();S((e=t.itemSummary.summaryStatus)==="in-progress"?0:e==="failed"?1:e==="completed"?2:-1),a(3),S(!t.readonly&&t.canRegenerate?3:-1)}}function is(n,l){n&1&&(r(0,"p",18),p(1,"No summary available."),s())}function ns(n,l){n&1&&(r(0,"cnp-status-pill",82),p(1,"Draft"),s()),n&2&&d("dot",!0)}function os(n,l){n&1&&(_(0,"cnp-spinner",84),r(1,"span"),p(2,"Sending\u2026"),s())}function as(n,l){n&1&&(r(0,"span"),p(1),Te(2,"date"),s()),n&2&&(a(),y(Ve(2,1,l,"short")))}function rs(n,l){if(n&1&&(r(0,"span",25),_(1,"cnp-icon",73),p(2),s()),n&2){let e=m(2);
1a(2),I(" ",e.audienceCount," ")}}function ss(n,l){if(n&1&&(r(0,"cnp-status-pill",85),p(1,"Sent"),s(),v(2,as,3,4,"span"),v(3,rs,3,1,"span",25)),n&2){let e,t=m(),i=m(2);d("dot",!0),a(2),S((e=i.validDate(t.sentAt))?2:-1,e),a(),S(t.audienceCount!==void 0?3:-1)}}function ls(n,l){if(n&1&&(r(0,"cnp-status-pill",86),p(1,"Failed"),s(),r(2,"span"),p(3),s()),n&2){let e=m();d("dot",!0),a(3),y(e.sendError||"Send failed.")}}function cs(n,l){n&1&&(r(0,"span",67),_(1,"cnp-spinner",89),p(2," Saving\u2026 "),s())}function ds(n,l){if(n&1){let e=w();r(0,"div",83)(1,"cnp-button",87),h("click",function(){g(e);let i=m(3);return f(i.sendNotification())}),p(2),s(),r(3,"cnp-button",88),h("click",function(){g(e);let i=m(3);return f(i.regenerateNotification())}),_(4,"cnp-icon",76),p(5," Regenerate "),s(),v(6,cs,3,0,"span",67),s()}if(n&2){let e=m(),t=m(2);a(),d("disabled",t.isSavingNotificationEdit||e.sendStatus==="sending")("disabledReason",t.isSavingNotificationEdit?"Saving your edit first":"")("loading",t.isSendingNotification)("ariaLabel",e.sendStatus==="sent"?"Re-send segment notification":"Send segment notification now"),a(),I(" ",e.sendStatus==="sent"?"Re-send":"Send now"," "),a(),d("disabled",e.sendStatus==="sending")("loading",t.isRegeneratingNotification),a(3),S(t.isSavingNotificationEdit?6:-1)}}function ps(n,l){if(n&1&&(r(0,"cnp-callout",68),p(1),s()),n&2){let e=m(3);a(),y(e.notificationError)}}function ms(n,l){if(n&1){let e=w();r(0,"cnp-field",77)(1,"textarea",78),h("change",function(i){g(e);let o=m(2);return f(o.commitNotificationMessage(i.target.value))}),s()(),r(2,"cnp-field",79)(3,"textarea",80),h("change",function(i){g(e);let o=m(2);return f(o.commitNotificationNotes(i.target.value))}),s()(),r(4,"div",81),v(5,ns,2,1,"cnp-status-pill",82)(6,os,3,0)(7,ss,4,3)(8,ls,4,2),s(),v(9,ds,7,8,"div",83),v(10,ps,2,1,"cnp-callout",68)}if(n&2){let e,t=l,i=m(2);d("controlId","notif-message-"+i.item.itemPK),a(),d("id","notif-message-"+i.item.itemPK)("disabled",i.readonly||t.sendStatus==="sending")("ngModel",t.message),a(),d("controlId","notif-notes-"+i.item.itemPK),a(),d("id","notif-notes-"+i.item.itemPK)("disabled",i.readonly||t.sendStatus==="sending")("ngModel",t.producerNotes||""),a(2),S((e=t.sendStatus)==="draft"?5:e==="sending"?6:e==="sent"?7:e==="failed"?8:-1),a(4),S(i.readonly?-1:9),a(),S(i.notificationError?10:-1)}}function us(n,l){n&1&&(r(0,"p",18),p(1,"Notification message will be generated when the summary completes."),s())}function hs(n,l){if(n&1&&(r(0,"section",34)(1,"h4",5),p(2,"Segment notification"),s(),v(3,ms,11,11)(4,us,2,0,"p",18),s()),n&2){let e,t=m();a(3),S((e=t.itemNotification)?3:4,e)}}var gs=[{key:"liveQuestions",label:"Live audience questions",description:"Attendees ask from the event app while this segment is live \u2014 Q&A opens when the segment starts and closes when it stops. Questions appear in this session's Q&A tab."},{key:"aiTranscription",label:"AI transcription",description:"Marks this segment as transcribed in the speaker brief \u2014 it does not start captions. Live transcription is started per session from the transcript publisher."},{key:"aiSummaries",label:"AI summary",description:"Generates the full written recap shown in the AI summary panel when this segment stops \u2014 also the source for the segment notification teaser."},{key:"contentPermission",label:"Content reuse permitted",description:"Speaker has approved reuse \u2014 attendee-facing Key Moments include this segment's content assets (slides, files) only when this is on."},{key:"autoSendNotification",label:"Auto-send summary teaser to attendees",description:"When the AI summary completes, the short teaser from the Segment notification panel is pushed to attendees automatically \u2014 no producer review. Leave off to review and send it manually."}],_n="Reordered briefing questions",fn=n=>n===1?"question":"questions",pa="Preload failed",ma="Could not preload the briefing questions.",fs=({seeded:n,updated:l,skipped:e})=>{if(!n&&!l)return e===1?"The briefing question is already in live Q&A.":`All ${e} briefing questions are already in live Q&A.`;let t=[];
1return n&&t.push(`${n} briefing ${fn(n)} added to live Q&A.`),l&&t.push(`${l} ${fn(l)} updated with the edited text.`),e&&t.push(`${e} ${e===1?"was":"were"} already there.`),t.join(" ")},wi=(()=>{class n{constructor(){this.briefMarkTitle="Included in the generated speaker brief",this.validDate=Ge,this.readonly=!1,this.summaries=[],this.notifications=[],this.eventTz=null,this.agendaTimeFormat=null,this.dateformat=null,this.sessionPK=null,this.itemUpdate=new re,this.exportQuestions=new re,this.contentChanged=new re,this.contentAssets=b(_t),this.modal=b(Ee),this.utilitiesService=b(ke),this.toast=b(Se),this.runsheetFacade=b(Ie),this.runsheetService=b(ut),this.eventService=b(Ce),this.actions$=b(Ht),this.destroy$=new G,this.newQuestionText="",this.isSeedingQuestions=!1,this.isRegenerating=!1,this.isSendingNotification=!1,this.isRegeneratingNotification=!1,this.isSavingNotificationEdit=!1,this.notificationError=null,this.regenerateNotificationSnapshotAt=null,this.attachedAssets=[],this.isLoadingContent=!1,this.isRemoving=!1,this.contentError=null,this.statusLabels=qe,this.aiFlags=gs,this.actions$.pipe(ye(Po,sn),x(this.destroy$)).subscribe(e=>{e.itemPK===this.item?.itemPK&&(this.isRegenerating=!1,e.type===sn.type&&this.toast.showDanger("Regenerate failed","Could not start summary regeneration. Please try again later."))}),this.actions$.pipe(ye(dn,pn,ln,cn,mn),x(this.destroy$)).subscribe(e=>{e.itemPK===this.item?.itemPK&&(e.type===dn.type?(this.isSendingNotification=!1,this.notificationError=null):e.type===pn.type?(this.isSendingNotification=!1,this.notificationError=e.error):e.type===ln.type?(this.isSavingNotificationEdit=!1,this.notificationError=null):e.type===cn.type?(this.isSavingNotificationEdit=!1,this.notificationError=e.error):e.type===mn.type&&(this.isRegeneratingNotification=!1,this.notificationError=e.error))})}inBrief(e){return da.has(e)}ngOnChanges(e){let t=e.item;if(t&&this.item?.itemPK){let i=t.previousValue?.itemPK;i!==void 0&&i!==this.item.itemPK&&(this.isRegenerating=!1,this.isSendingNotification=!1,this.isRegeneratingNotification=!1,this.isSavingNotificationEdit=!1,this.notificationError=null,this.regenerateNotificationSnapshotAt=null),this.loadContentAssets()}this.checkNotificationRegenerateFreshness()}ngOnDestroy(){this.destroy$.next(),this.destroy$.complete()}loadContentAssets(){this.isLoadingContent=!0,this.contentError=null,this.contentAssets.byItem(this.item.itemPK).pipe(x(this.destroy$)).subscribe({next:e=>{this.isLoadingContent=!1,this.attachedAssets=e.success===1?e.data??[]:[]},error:()=>{this.isLoadingContent=!1,this.attachedAssets=[]}})}removeAsset(e){return P(this,null,function*(){if(this.isRemoving)return;let t=this.utilitiesService.confirm({header:"Remove content asset",message:`Remove this ${e.type} from "${this.item.topic||"this line item"}"? This deletes the asset and cannot be undone.`,confirmMessage:"Remove",confirmButtonClass:"btn-danger"});try{yield t.result}catch{return}this.isRemoving=!0,this.contentError=null,this.contentAssets.remove(e.PK).pipe(x(this.destroy$)).subscribe({next:i=>{this.isRemoving=!1,i.success===1?(this.attachedAssets=this.attachedAssets.filter(o=>o.PK!==e.PK),this.toast.showSuccess("Successfully removed",`Content removed from "${this.item.topic||"this line item"}".`),this.contentChanged.emit()):this.contentError=i.message??"Failed to remove asset"},error:i=>{this.isRemoving=!1,this.contentError=i?.message??"Failed to remove asset"}})})}openUploadAndAttach(){let e=this.modal.open(Ct,{size:"lg",backdrop:"static",windowClass:"cnp-dialog"}),t=e.componentInstance;t.lockedScope={scopeType:"agenda-item",scopeValue:this.item.itemPK,label:this.item.topic||"this line item"},t.submitHandler=i=>this.createAndAttach(i),e.result.catch(()=>{})}createAndAttach(e){return this.contentError=null,new Promise((t,i)=>{this.contentAssets.create(e.input).pipe(x(this.destroy$)).subscribe({next:o=>{if(o.success!==1||!o.data?.asset){i(new Error(o.message??"Failed to create asset"));return}let{asset:c,uploadTicket:u}=o.data;e.file&&u?this.contentAssets.uploadToTicket(u,e.file).pipe(x(this.destroy$)).subscribe({next:()=>this.onAssetAttached(c,t),error:C=>this.removeOrphanAsset(c.PK,C,i)}
1):e.file?this.removeOrphanAsset(c.PK,new Error("No upload ticket returned for the selected file"),i):this.onAssetAttached(c,t)},error:o=>i(o instanceof Error?o:new Error("Failed to create asset"))})})}onAssetAttached(e,t){this.attachedAssets=[...this.attachedAssets,e],this.toast.showSuccess("Successfully added",`Content attached to "${this.item.topic||"this line item"}".`),this.contentChanged.emit(),t()}removeOrphanAsset(e,t,i){let o=t instanceof Error?t:new Error("Upload failed");this.contentAssets.remove(e).pipe(x(this.destroy$)).subscribe({next:()=>i(o),error:()=>i(o)})}get itemSummary(){if(!this.item?.itemPK||!this.summaries.length)return null;let e=this.summaries.filter(t=>t.itemPK===this.item.itemPK);return e.length?e.reduce((t,i)=>i.generatedAt>t.generatedAt?i:t,e[0]):null}get canRegenerate(){let e=this.itemSummary;return!!e?.recordingId&&(e.summaryStatus==="completed"||e.summaryStatus==="failed")}regenerateSummary(){let e=this.itemSummary;this.isRegenerating||!e?.recordingId||(this.isRegenerating=!0,this.runsheetFacade.regenerateSummary(e.itemPK,e.topicSessionPK,e.recordingId))}get analysisLink(){let e=this.itemSummary,t=this.eventService.data?.url;return!e?.recordingId||!e.sessionPK||!t?null:["/emp",t,"sessions",e.sessionPK,e.recordingId]}get questionsLink(){let e=this.eventService.data?.url;return!this.sessionPK||!e?null:["/emp",e,"sessions",this.sessionPK]}get itemNotification(){return!this.item?.itemPK||!this.notifications.length?null:this.notifications.find(e=>e.itemPK===this.item.itemPK)??null}commitNotificationMessage(e){let t=this.itemNotification;!t||e===t.message||(this.isSavingNotificationEdit=!0,this.runsheetFacade.updateNotification(this.item.itemPK,{message:e}))}commitNotificationNotes(e){let t=this.itemNotification;!t||e===(t.producerNotes??"")||(this.isSavingNotificationEdit=!0,this.runsheetFacade.updateNotification(this.item.itemPK,{producerNotes:e}))}sendNotification(){let e=this.itemNotification;this.isSendingNotification||this.isSavingNotificationEdit||!e||e.sendStatus==="sending"||(this.isSendingNotification=!0,this.notificationError=null,this.runsheetFacade.sendNotification(this.item.itemPK))}regenerateNotification(){let e=this.itemNotification;this.isRegeneratingNotification||!e||(this.isRegeneratingNotification=!0,this.notificationError=null,this.regenerateNotificationSnapshotAt=e.generatedAt,this.runsheetFacade.regenerateNotification(this.item.itemPK))}checkNotificationRegenerateFreshness(){if(!this.isRegeneratingNotification)return;let e=this.itemNotification;e&&e.generatedAt!==this.regenerateNotificationSnapshotAt&&(this.isRegeneratingNotification=!1,this.notificationError=null)}commitShortDescription(e){this.emit({shortDescription:e},"Updated short description")}commitContentDescription(e){this.emit({contentDescription:e},"Updated content description")}commitBriefingDescription(e){this.emit({briefingDescription:e},"Updated briefing description")}get briefingQuestions(){return this.item.briefingQuestions??[]}get hasExportableQuestions(){return this.briefingQuestions.some(e=>!!e.text?.trim())}get canSeedLiveQuestions(){return!this.readonly&&this.hasExportableQuestions&&!!this.sessionPK}seedLiveQuestions(){return P(this,null,function*(){if(this.isSeedingQuestions||!this.canSeedLiveQuestions)return;let{itemPK:e,topicSessionPK:t,topic:i}=this.item,o=this.briefingQuestions.filter(u=>!!u.text?.trim()).length;this.isSeedingQuestions=!0;let c=this.utilitiesService.confirm({header:"Preload into live Q&A",message:`Add ${o} briefing ${fn(o)} to this session's live Q&A under "${i||"this segment"}"? They post anonymously, with no name attached, and the moderator shows or hides them like any other question.`,confirmMessage:"Preload"},{windowClass:"cnp-dialog"});try{yield c.result}catch{this.isSeedingQuestions=!1;return}this.runsheetService.seedLiveQuestions(e,t).pipe(x(this.destroy$)).subscribe({next:u=>{this.isSeedingQuestions=!1,u.success===1&&u.data?this.toast.showSuccess("Preloaded",fs(u.data)):this.toast.showDanger(pa,u.message||ma)},error:u=>{this.isSeedingQuestions=!1,this.toast.showDanger(pa,u?.message||ma)}})})}addBriefingQuestion(){let e=this.newQuestionText.trim();if(!e)return;let t=[...this.briefingQuestions,{_id:this.generateQuestionId(),text:e}];
1this.emit({briefingQuestions:t},"Added briefing question"),this.newQuestionText=""}updateBriefingQuestion(e,t){let i=t.trim(),o=this.briefingQuestions.map(c=>c._id===e?Z($({},c),{text:i}):c);this.emit({briefingQuestions:o},"Updated briefing question")}onQuestionDrop(e){e.previousIndex!==e.currentIndex&&this.reorderQuestions(e.previousIndex,e.currentIndex)}moveQuestion(e,t){let i=e+t;i<0||i>=this.briefingQuestions.length||this.reorderQuestions(e,i)}reorderQuestions(e,t){let i=[...this.briefingQuestions];et(i,e,t),this.emit({briefingQuestions:i},_n)}removeBriefingQuestion(e){let t=this.briefingQuestions.filter(i=>i._id!==e);this.emit({briefingQuestions:t},"Removed briefing question")}commitScriptUrl(e){this.emit({scriptUrl:e},"Updated script URL")}commitSlidesUrl(e){this.emit({slidesUrl:e},"Updated slides URL")}toggleAiFlag(e,t){let i=t?"Y":"N";this.emit({[e]:i},`${t?"Enabled":"Disabled"} ${uo[e]}`)}isAiFlagOn(e){return this.item[e]==="Y"}contentStatusTone(e){switch(e){case"on-hold":return"danger";case"in-progress":return"info";case"approved":return"success";default:return"neutral"}}formatActual(e){if(e==null)return"\u2014";try{return`${yt(fo(e,this.eventTz),this.dateformat)}, ${go(e,this.eventTz,this.agendaTimeFormat)}`}catch{return"\u2014"}}emit(e,t){this.itemUpdate.emit({patch:e,description:t})}generateQuestionId(){return`q-${Date.now()}-${Math.random().toString(36).slice(2,8)}`}static{this.\u0275fac=function(t){return new(t||n)}}static{this.\u0275cmp=M({type:n,selectors:[["app-runsheet-agenda-row-detail"]],inputs:{item:"item",readonly:"readonly",summaries:"summaries",notifications:"notifications",eventTz:"eventTz",agendaTimeFormat:"agendaTimeFormat",dateformat:"dateformat",sessionPK:"sessionPK"},outputs:{itemUpdate:"itemUpdate",exportQuestions:"exportQuestions",contentChanged:"contentChanged"},features:[Lt],decls:73,vars:36,consts:[["aria-label","Agenda item detail",1,"agenda-row-detail"],[1,"agenda-row-detail-legend"],["name","speakers","size","sm"],[1,"agenda-row-detail-grid"],[1,"agenda-row-detail-section"],[1,"agenda-row-detail-heading"],["label","Short description",3,"controlId"],["cnpInput","","rows","3","placeholder","One-liner for the public agenda card",3,"ngModelChange","id","disabled","ngModel"],["label","Content team notes",3,"controlId"],["cnpInput","","rows","4","placeholder","Script direction, talking points, etc.",3,"ngModelChange","id","disabled","ngModel"],["label","Synopsis",3,"controlId","help"],["cnpInput","","rows","6","placeholder","Per-item briefing copy",3,"ngModelChange","id","disabled","ngModel"],[1,"agenda-row-detail-section-head"],[3,"text"],[1,"agenda-row-detail-section-actions"],["variant","secondary","size","sm","ariaLabel","Questions PDF \u2014 export this line item's questions"],["variant","secondary","size","sm","ariaLabel","Preload into live Q&A \u2014 add this segment's briefing questions to the session's live Q&A as anonymous questions",3,"loading"],["cdkDropList","",1,"agenda-row-detail-questions",3,"cdkDropListDisabled"],[1,"agenda-row-detail-empty"],[1,"agenda-row-detail-add-row"],["label","Script URL",3,"controlId"],["cnpInput","","type","url","placeholder","External link (Google Doc, Notion, etc.)",3,"ngModelChange","id","disabled","ngModel"],[1,"agenda-row-detail-file-meta"],["label","Slides URL",3,"controlId"],["cnpInput","","type","url","placeholder","External link (Google Slides, etc.)",3,"ngModelChange","id","disabled","ngModel"],[1,"agenda-row-detail-hint"],["tone","warning"],[1,"agenda-row-detail-assets"],["variant","secondary","size","sm"],[1,"agenda-row-detail-toggles"],[1,"agenda-row-detail-toggle-row"],[1,"agenda-row-detail-heading","agenda-row-detail-subhead"],[1,"agenda-row-detail-actual"],["aria-label","AI-generated summary for this agenda item",1,"agenda-row-detail-section"],["aria-label","Segment notification for this agenda item",1,"agenda-row-detail-section"],["name","speakers","size","sm",3,"label"],["variant","secondary","size","sm","ariaLabel","Questions PDF \u2014 export this line item's questions",3,"click"],["name","export"],["variant","secondary","size","sm","ariaLabel","Preload into live Q&A \u2014 add this
1segment's briefing questions to the session's live Q&A as anonymous questions",3,"click","loading"],["name","chat"],["cdkDropList","",1,"agenda-row-detail-questions",3,"cdkDropListDropped","cdkDropListDisabled"],["cdkDrag",""],["type","button","cdkDragHandle","","aria-label","Drag to reorder question",1,"agenda-row-detail-drag-handle"],["cnpInput","","rows","1","aria-label","Question text","placeholder","Question text",1,"agenda-row-detail-question-input",3,"ngModelChange","disabled","ngModel"],[1,"agenda-row-detail-reorder-btns"],["name","drag","size","sm"],["variant","ghost","size","sm","ariaLabel","Move question up",3,"click","iconOnly","disabled"],["name","chevron-up","size","sm"],["variant","ghost","size","sm","ariaLabel","Move question down",3,"click","iconOnly","disabled"],["name","chevron-down","size","sm"],["variant","ghost","size","sm","ariaLabel","Remove question",3,"click","iconOnly"],["name","delete","size","sm"],["cnpInput","","type","text","aria-label","New briefing question","placeholder","Add briefing question",3,"ngModelChange","keydown.enter","ngModel"],["size","sm",3,"click","disabled"],["name","attachment","size","sm"],["target","_blank","rel","noopener",3,"href"],[1,"agenda-row-detail-asset-row"],[1,"agenda-row-detail-asset-type"],[3,"tone"],["variant","ghost","size","sm",3,"iconOnly","ariaLabel","disabled"],["variant","ghost","size","sm",3,"click","iconOnly","ariaLabel","disabled"],["variant","secondary","size","sm",3,"click"],["name","upload-horizontal"],[3,"changed","label","description","disabled","checked"],["cnpButton","","variant","link","size","sm","fragment","interactive","ariaLabel","View this segment's questions in the session's Q&A moderation view",3,"routerLink","queryParams"],["tone","neutral","icon","speakers"],["name","view","size","sm"],["role","status","aria-live","polite",1,"agenda-row-detail-inline-status"],["tone","danger","live","alert"],["variant","secondary","size","sm","loadingLabel","Regenerating summary","ariaLabel","Regenerate AI summary for this segment",3,"loading"],["size","sm","label","Generating summary"],[1,"agenda-row-detail-summary-text"],["cnpButton","","variant","link","size","sm","ariaLabel","View full analysis of the transcript scoped to this segment",3,"routerLink","queryParams"],["name","people","size","sm"],["name","analytics"],["variant","secondary","size","sm","loadingLabel","Regenerating summary","ariaLabel","Regenerate AI summary for this segment",3,"click","loading"],["name","refresh"],["label","Notification message",3,"controlId"],["cnpInput","","rows","3","placeholder","AI-generated teaser sent to attendees",3,"change","id","disabled","ngModel"],["label","Producer notes (appended on send)",3,"controlId"],["cnpInput","","rows","2","placeholder","Optional note appended to the sent message",3,"change","id","disabled","ngModel"],["role","status","aria-live","polite",1,"agenda-row-detail-notification-status"],["tone","neutral",3,"dot"],[1,"agenda-row-detail-notification-actions"],["size","sm","label","Sending notification"],["tone","success",3,"dot"],["tone","danger",3,"dot"],["variant","secondary","size","sm","loadingLabel","Sending notification",3,"click","disabled","disabledReason","loading","ariaLabel"],["variant","secondary","size","sm","loadingLabel","Regenerating notification","ariaLabel","Regenerate AI notification message for this segment",3,"click","disabled","loading"],["size","sm","label","Saving edit"]],template:function(t,i){t&1&&(r(0,"section",0)(1,"p",1),_(2,"cnp-icon",2),p(3," = included in the generated speaker brief. Unmarked fields stay internal or feed other surfaces (the public agenda card, Key Moments). "),s(),r(4,"div",3)(5,"section",4)(6,"h4",5),p(7,"Descriptions"),s(),r(8,"cnp-field",6)(9,"textarea",7),h("ngModelChange",function(c){return i.commitShortDescription(c)}),s()(),r(10,"cnp-field",8)(11,"textarea",9),h("ngModelChange",function(c){return i.commitContentDescription(c)}),s()(),r(12,"cnp-field",10)(13,"textarea",11),h("ngModelChange",function(c){return i.commitBriefingDescription(c)}),s()()(),r(14,"section",4)(15,"div",12)(16,"h4",5),p(17," Briefing questions "),v(18,kr,2,2,"cnp-tooltip",13),s(),r(19,"div",14),v(20,Pr,3,0,"cnp-button",15),v(2
11,Ar,3,1,"cnp-button",16),s()(),v(22,Kr,3,1,"ul",17)(23,Lr,2,0,"p",18),v(24,Dr,4,2,"div",19),s(),r(25,"section",4)(26,"h4",5),p(27,"Materials"),s(),r(28,"cnp-field",20)(29,"input",21),h("ngModelChange",function(c){return i.commitScriptUrl(c)}),s()(),v(30,Nr,6,2,"p",22),r(31,"cnp-field",23)(32,"input",24),h("ngModelChange",function(c){return i.commitSlidesUrl(c)}),s()(),v(33,Vr,6,2,"p",22),r(34,"p",25),p(35," Paste an external link here, or attach a versioned asset from the Content repository below. "),s()(),r(36,"section",4)(37,"h4",5),p(38,"Content assets"),s(),v(39,Br,2,1,"cnp-callout",26),v(40,Ur,3,0,"ul",27)(41,Gr,2,0,"p",25),v(42,Wr,3,0,"cnp-button",28),s(),r(43,"section",4)(44,"h4",5),p(45,"AI features"),s(),r(46,"div",29),T(47,Qr,4,6,"div",30,wr),s(),r(49,"p",25),p(50," AI summary = the full recap in the AI summary panel. Segment notification = a one-line teaser pushed to attendees when the summary completes. "),s(),r(51,"h4",31),p(52,"Recorded times"),s(),r(53,"p",32),p(54," Start: "),r(55,"strong"),p(56),s()(),r(57,"p",32),p(58," End: "),r(59,"strong"),p(60),s()(),r(61,"p",32),p(62," Run status: "),r(63,"strong"),p(64),s()(),r(65,"p",25),p(66,"Filled in by the Phase 6 live-recording UX."),s()(),r(67,"section",33)(68,"h4",5),p(69,"AI summary"),s(),v(70,ts,4,2)(71,is,2,0,"p",18),s(),v(72,hs,5,1,"section",34),s()()),t&2&&(a(8),d("controlId","short-"+i.item.itemPK),a(),d("id","short-"+i.item.itemPK)("disabled",i.readonly)("ngModel",i.item.shortDescription||""),a(),d("controlId","content-"+i.item.itemPK),a(),d("id","content-"+i.item.itemPK)("disabled",i.readonly)("ngModel",i.item.contentDescription||""),a(),d("controlId","brief-desc-"+i.item.itemPK)("help",i.inBrief("briefingDescription")?i.briefMarkTitle:""),a(),d("id","brief-desc-"+i.item.itemPK)("disabled",i.readonly)("ngModel",i.item.briefingDescription||""),a(5),S(i.inBrief("briefingQuestions")?18:-1),a(2),S(i.hasExportableQuestions?20:-1),a(),S(i.canSeedLiveQuestions?21:-1),a(),S(i.briefingQuestions.length?22:23),a(2),S(i.readonly?-1:24),a(4),d("controlId","script-url-"+i.item.itemPK),a(),d("id","script-url-"+i.item.itemPK)("disabled",i.readonly)("ngModel",i.item.scriptUrl||""),a(),S(i.item.scriptFileName?30:-1),a(),d("controlId","slides-url-"+i.item.itemPK),a(),d("id","slides-url-"+i.item.itemPK)("disabled",i.readonly)("ngModel",i.item.slidesUrl||""),a(),S(i.item.slidesFileName?33:-1),a(6),S(i.contentError?39:-1),a(),S(i.attachedAssets.length?40:i.isLoadingContent?-1:41),a(2),S(i.readonly?-1:42),a(5),E(i.aiFlags),a(9),y(i.formatActual(i.item.actualStartTime)),a(4),y(i.formatActual(i.item.actualEndTime)),a(4),y(i.item.runtimeStatus||"\u2014"),a(6),S(i.itemSummary?70:71),a(2),S(i.isAiFlagO
1n("aiSummaries")?72:-1))},dependencies:[se,Q,W,pe,zt,it,tt,Qt,L,Yt,Y,Re,j,V,q,jt,Pe,Zt,$e],styles:['.agenda-row-detail[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:var(--cnp-space-4);padding:var(--cnp-space-5) var(--cnp-space-6);background:var(--cnp-color-bg-surface)}.agenda-row-detail-legend[_ngcontent-%COMP%]{display:flex;align-items:center;gap:var(--cnp-space-2);margin:0;font-size:var(--cnp-font-size-label);color:var(--cnp-color-text-muted)}.agenda-row-detail-grid[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(auto-fit,minmax(20rem,1fr));gap:var(--cnp-space-5);align-items:start}.agenda-row-detail-section[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:var(--cnp-space-3);min-width:0;padding:var(--cnp-space-card-padding);background:var(--cnp-color-bg-card);border:1px solid var(--cnp-color-border);border-radius:var(--cnp-radius-container)}.agenda-row-detail-section-head[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--cnp-space-2)}.agenda-row-detail-section-actions[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:center;gap:var(--cnp-space-2)}.agenda-row-detail-heading[_ngcontent-%COMP%]{display:flex;align-items:center;gap:var(--cnp-space-2);margin:0;font-size:var(--cnp-font-size-body);font-weight:var(--cnp-font-weight-bold);color:var(--cnp-color-text-heading)}.agenda-row-detail-subhead[_ngcontent-%COMP%]{margin-block-start:var(--cnp-space-3);padding-block-start:var(--cnp-space-3);border-block-start:1px solid var(--cnp-color-rule)}.agenda-row-detail-questions[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:var(--cnp-space-2);margin:0;padding:0;list-style:none}.agenda-row-detail-questions[_ngcontent-%COMP%] li[_ngcontent-%COMP%]{display:flex;align-items:flex-start;gap:var(--cnp-space-2)}.agenda-row-detail-question-input[_ngcontent-%COMP%]{flex:1 1 auto;min-width:0;resize:vertical}.agenda-row-detail[_ngcontent-%COMP%] textarea[_ngcontent-%COMP%]{field-sizing:content;max-block-size:45vh}.agenda-row-detail[_ngcontent-%COMP%] textarea[rows="2"][_ngcontent-%COMP%]{min-block-size:calc(2lh + var(--cnp-space-2) + 2px)}.agenda-row-detail[_ngcontent-%COMP%] textarea[rows="3"][_ngcontent-%COMP%]{min-block-size:calc(3lh + var(--cnp-space-2) + 2px)}.agenda-row-detail[_ngcontent-%COMP%] textarea[rows="4"][_ngcontent-%COMP%]{min-block-size:calc(4lh + var(--cnp-space-2) + 2px)}.agenda-row-detail[_ngcontent-%COMP%] textarea[rows="6"][_ngcontent-%COMP%]{min-block-size:calc(6lh + var(--cnp-space-2) + 2px)}.agenda-row-detail-toggle-row[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:center;gap:var(--cnp-space-2)}.agenda-row-detail-drag-handle[_ngcontent-%COMP%]{display:inline-flex;align-items:center;padding:var(--cnp-space-2) 0 0;color:var(--cnp-color-icon-muted);background:transparent;border:0;cursor:grab}.agenda-row-detail-drag-handle[_ngcontent-%COMP%]:active{cursor:grabbing}.agenda-row-detail-reorder-btns[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:var(--cnp-space-1)}.agenda-row-detail-add-row[_ngcontent-%COMP%]{display:flex;align-items:center;gap:var(--cnp-space-2)}.agenda-row-detail-add-row[_ngcontent-%COMP%] input[_ngcontent-%COMP%]{flex:1 1 auto;min-width:0}.agenda-row-detail-toggles[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:var(--cnp-space-3)}.agenda-row-detail-assets[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:var(--cnp-space-2);margin:0;padding:0;list-style:none}.agenda-row-detail-asset-row[_ngcontent-%COMP%]{display:flex;align-items:center;gap:var(--cnp-space-2)}.agenda-row-detail-asset-type[_ngcontent-%COMP%]{flex:1 1 auto;min-width:0;font-size:var(--cnp-font-size-label);color:var(--cnp-color-text-body)}.agenda-row-detail-hint[_ngcontent-%COMP%], .agenda-row-detail-empty[_ngcontent-%COMP%], .agenda-row-detail-file-meta[_ngcontent-%COMP%], .agenda-row-detail-actual[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:center;gap:var(--cnp-space-1);margin:0;font-size:var(--cnp-font-size-label);color:var(--cnp-color-text-muted)}.agenda-row-detail-actual[_ngcontent-%COMP%]{color:var(--cnp-color-text-body)}.agenda-row-detail-summary-text[_ngcontent-%COMP%]{margin:0;max-width:var(--cnp-font-measure-prose);font-size:var(--cnp-font-size-body);line-height:var(--cnp-font-leading-base);color:var(--cnp-color-text-body)}.agenda-row-detail-inline-status[_ngcontent-%COMP%], .agenda-row-detail-notification-status[_ngcontent-%COMP%], .agenda-row-detail-notification-actions[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:center;gap:var(--cnp-space-2);margin:0;font-size:var(--cnp-font-size-label);color:var(--cnp-color-text-secondary)}']})}}return n})();
1var Cn=Wi(Yi());var _s=(n,l)=>l.timestamp+l.description;function Cs(n,l){if(n&1){let e=w();r(0,"cnp-callout",1),p(1),r(2,"cnp-button",4),h("click",function(){g(e);let i=m();return f(i.retry.emit())}),p(3,"Retry"),s()()}if(n&2){let e=m();a(),I(" ",e.error," ")}}function vs(n,l){n&1&&_(0,"cnp-empty-state",2),n&2&&d("headingLevel",3)}function Ss(n,l){if(n&1&&(r(0,"span",7),p(1),s()),n&2){let e=m().$implicit;a(),y(e.actorLabel)}}function ys(n,l){if(n&1&&(r(0,"p",9),p(1),s()),n&2){let e=m().$implicit;a(),y(e.itemTopic)}}function bs(n,l){if(n&1&&(r(0,"li",5)(1,"div",6)(2,"time"),p(3),s(),v(4,Ss,2,1,"span",7),s(),r(5,"p",8),p(6),s(),v(7,ys,2,1,"p",9),s()),n&2){let e=l.$implicit,t=m(2);a(3),y(t.formatTimestamp(e.timestamp)),a(),S(e.actorLabel?4:-1),a(2),y(e.description),a(),S(e.itemTopic?7:-1)}}function xs(n,l){if(n&1&&(r(0,"ul",3),T(1,bs,8,4,"li",5,_s),s()),n&2){let e=m();a(),E(e.entries)}}var Ti=(()=>{class n{constructor(){this.eventService=b(Ce),this.open=!1,this.entries=[],this.error=null,this.closed=new re,this.retry=new re}formatTimestamp(e){let t=this.eventService.data?.timezone;return(t?(0,Cn.default)(e).tz(t):(0,Cn.default)(e)).format("MMM D, h:mm A z")}static{this.\u0275fac=function(t){return new(t||n)}}static{this.\u0275cmp=M({type:n,selectors:[["app-runsheet-changelog-panel"]],inputs:{open:"open",entries:"entries",error:"error"},outputs:{closed:"closed",retry:"retry"},decls:4,vars:2,consts:[["heading","Changelog",3,"openChange","closed","open"],["tone","warning","live","alert"],["icon","history","heading","No changes yet","description","Edits made to this runsheet will appear here.",3,"headingLevel"],[1,"changelog-list"],["cnpCalloutAction","","size","sm","variant","secondary",3,"click"],[1,"changelog-entry"],[1,"changelog-entry-meta"],[1,"changelog-entry-actor"],[1,"changelog-entry-description"],[1,"changelog-entry-topic"]],template:function(t,i){t&1&&(r(0,"cnp-drawer",0),N("openChange",function(c){return R(i.open,c)||(i.open=c),c}),h("closed",function(){return i.closed.emit()}),v(1,Cs,4,1,"cnp-callout",1)(2,vs,1,1,"cnp-empty-state",2)(3,xs,3,0,"ul",3),s()),t&2&&(D("open",i.open),a(),S(i.error?1:i.entries.length?3:2))},dependencies:[L,Y,ze,ve],styles:[".changelog-list[_ngcontent-%COMP%]{list-style:none;margin:0;padding:0}.changelog-entry[_ngcontent-%COMP%]{padding:var(--cnp-space-3) 0;border-block-end:1px solid var(--cnp-color-rule)}.changelog-entry-meta[_ngcontent-%COMP%]{display:flex;align-items:center;gap:var(--cnp-space-2);font-size:var(--cnp-font-size-label);color:var(--cnp-color-text-muted)}.changelog-entry-actor[_ngcontent-%COMP%]{font-weight:var(--cnp-font-weight-semibold);color:var(--cnp-color-text-secondary)}.changelog-entry-description[_ngcontent-%COMP%]{margin:var(--cnp-space-1) 0 0;font-size:var(--cnp-font-size-body);line-height:var(--cnp-font-leading-base)}.changelog-entry-topic[_ngcontent-%COMP%]{margin:var(--cnp-space-1) 0 0;font-size:var(--cnp-font-size-label);color:var(--cnp-color-text-muted);font-style:italic}"]})}}return n})();var ws=(n,l)=>l.key;function Ts(n,l){if(n&1){let e=w();r(0,"cnp-checkbox",5),h("changed",function(){let i=g(e).$implicit,o=m();return f(o.toggleColumn(i.key))}),s()}if(n&2){let e=l.$implicit,t=m();d("inputId","column-toggle-"+e.key)("label",e.label)("checked",t.visibleColumnKeys.includes(e.key))}}var Ei=(()=>{class n{constructor(){this.visibleColumnKeys=[],this.visibilityChange=new re,this.columns=ai,this.open=!1}toggleColumn(e){let t=e,i=this.visibleColumnKeys.includes(t)?this.visibleColumnKeys.filter(o=>o!==t):[...this.visibleColumnKeys,t];this.visibilityChange.emit(i)}static{this.\u0275fac=function(t){return new(t||n)}}static{this.\u0275cmp=M({type:n,selectors:[["app-runsheet-column-toggle"]],inputs:{visibleColumnKeys:"visibleColumnKeys"},outputs:{visibilityChange:"visibilityChange"},decls:7,vars:2,consts:[["heading","Visible columns","ariaLabel","Visible columns","align","end",3,"openChange","open"],["cnpPopoverTrigger","","variant","secondary","size","sm","ariaHasPopup","dialog",3,"click","ariaExpanded"],["name","layers"],[1,"column-toggle-options"],[3,"inputId","label","checked"],[3,"changed","inputId","label","checked"]],template:function(t,i){t&1&&(r(0,"cnp-popover",0),N("openChange",function(c){return R(i.open,c)||(i.open=c),c}),r(1,"cnp-button",1),h("click",function(){return i.open=!i.open}
1),_(2,"cnp-icon",2),p(3," Columns "),s(),r(4,"div",3),T(5,Ts,1,3,"cnp-checkbox",4,ws),s()()),t&2&&(D("open",i.open),a(),d("ariaExpanded",i.open),a(4),E(i.columns))},dependencies:[L,Re,V,Xt,Jt],styles:[".column-toggle-options[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:var(--cnp-space-2);min-width:13rem}"]})}}return n})();function Es(n,l){if(n&1){let e=w();r(0,"cnp-callout",0),p(1),r(2,"cnp-button",1),h("click",function(){g(e);let i=m();return f(i.refresh.emit())}),p(3,"Refresh"),s()()}if(n&2){let e=m();a(),I(" Someone else changed \u201C",e.serverItem.topic||"this item","\u201D while you were editing. Refresh to load the latest version before you continue. ")}}var ki=(()=>{class n{constructor(){this.serverItem=null,this.refresh=new re}static{this.\u0275fac=function(t){return new(t||n)}}static{this.\u0275cmp=M({type:n,selectors:[["app-runsheet-conflict-banner"]],inputs:{serverItem:"serverItem"},outputs:{refresh:"refresh"},decls:1,vars:1,consts:[["tone","warning","heading","Update conflict","live","alert"],["cnpCalloutAction","","size","sm",3,"click"]],template:function(t,i){t&1&&v(0,Es,4,1,"cnp-callout",0),t&2&&S(i.serverItem?0:-1)},dependencies:[L,Y],encapsulation:2})}}return n})();var ks=n=>n.map(l=>l.toString(16).padStart(2,"0").toUpperCase()).join(""),ha=930,ga=(()=>{class n{export(e,t,i){return P(this,null,function*(){let o=mt(e,t,i.eventName,i.agendaTimeFormat);if(!o.flatItems.length)throw new Error("Nothing to export \u2014 the runsheet is empty.");if(!o.columns.length)throw new Error("No columns are visible \u2014 turn on at least one column before exporting.");let c=yield import("./chunk-QQS2KVTU.js"),u=ci(i.primaryColorHex).slice(1).toUpperCase(),C=[];i.banner&&C.push(this.buildBannerParagraph(c,i.banner)),C.push(new c.Paragraph({text:o.eventName,heading:c.HeadingLevel.TITLE}),new c.Paragraph({children:[new c.TextRun({text:We(o.generatedAt,i),size:18,italics:!0})],spacing:{after:200}})),o.groups.forEach(K=>{C.push(...this.buildGroupBlock(c,o,K,u))}),C.push(new c.Paragraph({children:[new c.TextRun({text:"CONFIDENTIAL \u2014 Production Use Only",size:16,italics:!0})],spacing:{before:200}}));let k=new c.Document({creator:"Canapii",title:o.eventName,sections:[{properties:{page:{size:{orientation:c.PageOrientation.LANDSCAPE}}},footers:{default:new c.Footer({children:[new c.Paragraph({alignment:c.AlignmentType.CENTER,children:[new c.TextRun({text:li,size:14,color:"969696"})]})]})},children:C}]}),A=yield c.Packer.toBlob(k);mi(A,pt(i,o.generatedAt,"docx"))})}buildBannerParagraph(e,t){let i=Math.round(t.height/t.width*ha);return new e.Paragraph({alignment:e.AlignmentType.CENTER,spacing:{after:200},children:[new e.ImageRun({type:"png",data:So(t.dataUrl),transformation:{width:ha,height:i}})]})}buildGroupBlock(e,t,i,o){let c=i.timeRangeLabel?`${i.sessionTitle} \u2014 ${i.timeRangeLabel}`:i.sessionTitle,u=new e.Paragraph({heading:e.HeadingLevel.HEADING_2,spacing:{before:240,after:120},children:[new e.TextRun({text:c,bold:!0})]});if(i.rows.length===0){let U=new e.Paragraph({spacing:{after:120},children:[new e.TextRun({text:"No items planned for this session.",italics:!0,color:"787878",size:18})]});return[u,U]}let C=t.columns.map(U=>new e.TableCell({children:[new e.Paragraph({children:[new e.TextRun({text:U.label,bold:!0,color:"FFFFFF"})]})],shading:{fill:o,type:e.ShadingType.CLEAR,color:"auto"}})),k=ui.filter(U=>t.columns.some(ne=>ne.key===U)),A={},K=i.rows.map(U=>{let ne=t.columns.map(H=>{let Fe=U.values[H.key]??"";return H.key==="status"?this.statusCell(e,Fe,U.statusKey):k.includes(H.key)&&A[H.key]&&pi(Fe,A[H.key])?this.italicGreyCell(e,"Same as above"):(Fe&&(A[H.key]=Fe),this.textCell(e,Fe))});return new e.TableRow({children:ne})}),ae=new e.Table({rows:[new e.TableRow({children:C,tableHeader:!0}),...K],width:{size:100,type:e.WidthType.PERCENTAGE}});return[u,ae]}textCell(e,t){return new e.TableCell({children:[new e.Paragraph({children:[new e.TextRun({text:t||"\u2014",size:18})]})]})}italicGreyCell(e,t){return new e.TableCell({children:[new e.Paragraph({children:[new e.TextRun({text:t,italics:!0,color:"787878",size:18})]})]})}statusCell(e,t,i){let o=Tt[i]??[180,180,180];return new e.TableCell({children:[new e.Paragraph({children:[new e.TextRun({text:t,bold:!0,color:"FFFFFF",size:18})]})],shading:{fill:ks(o),type:e.ShadingType.CLEAR,color:"auto"}})}static{this.\u0275fac=function(t){return new(t||n)}}static{this.\u0275prov=X({token:n,factory:n.\u0275fac,providedIn:"root"})}}return n})();var Ps="FFFFFF",As="E8EEF1",Ms="0F2A33",fa=(()=>{class n{export(e,t,i){return P(this,null,function*(){let o=mt(e,t,i.eventName,i.agendaTimeFormat);if(!o.flatItems.length)throw new Error("Nothing to export \u2014 the runsheet is empty.");if(!o.columns.length)throw new Error("No columns are visible \u2014 turn on at least one column before exporting.");let c=(yield import("./chunk-IC4JZCPX.js")).default??(yield import("./chunk-IC4JZCPX.js")),u=new c.Workbook;u.creator="Canapii",u.created=o.generatedAt;let C=`FF${ci(i.primaryColorHex).slice(1).toUpperCase()}`,k=We(o.generatedAt,i);this.addAgendaSheet(u,o,yo("Agenda"),C,k),this.addSpeakersSheet(u,o,C,k);let A=yield u.xlsx.writeBuffer(),K=new Blob([A],{type:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"});mi(K,pt(i,o.generatedAt,"xlsx"))})}addStampAndHeaderRow(e,t,i,o){let c=e.addRow([i]);e.mergeCells(c.number,1,c.number,t.length),c.font={italic:!0,color:{argb:"FF787878"}},c.alignment={vertical:"middle",horizontal:"left"};let u=e.addRow(t);return u.font={bold:!0,color:{argb:`FF${Ps}`}},u.fill={type:"pattern",pattern:"solid",fgColor:{argb:o}},u}addAgendaSheet(e,t,i,o,c){let u=e.addWorksheet(i);this.addPoweredByPrintFooter(u),u.columns=t.columns.map(k=>
1({key:k.key,width:k.widthCh}));let C=this.addStampAndHeaderRow(u,t.columns.map(k=>k.label),c,o);C.alignment={vertical:"middle"},t.groups.forEach(k=>{this.addSessionHeaderRow(u,t,k),k.rows.length===0?this.addEmptyGroupRow(u,t):this.addItemRows(u,t,k)})}addEmptyGroupRow(e,t){let i=e.addRow([]);i.getCell(1).value="No items planned for this session.",e.mergeCells(i.number,1,i.number,t.columns.length),i.font={italic:!0,color:{argb:"FF787878"}},i.alignment={vertical:"middle",horizontal:"left"}}addSessionHeaderRow(e,t,i){let o=[i.sessionTitle];i.timeRangeLabel&&o.push(i.timeRangeLabel);let c=o.join(" \u2014 "),u=e.addRow([]),C=u.getCell(1);C.value=c,e.mergeCells(u.number,1,u.number,t.columns.length),u.font={bold:!0,color:{argb:`FF${Ms}`}},u.fill={type:"pattern",pattern:"solid",fgColor:{argb:`FF${As}`}},u.alignment={vertical:"middle",horizontal:"left",wrapText:!1}}addItemRows(e,t,i){i.rows.forEach(o=>{let c={};t.columns.forEach(C=>{c[C.key]=o.values[C.key]??""});let u=e.addRow(c);u.alignment={vertical:"top",wrapText:!0}})}addSpeakersSheet(e,t,i,o){let c=e.addWorksheet("Speakers");this.addPoweredByPrintFooter(c),c.columns=[{key:"name",width:30},{key:"role",width:20},{key:"topics",width:60}],this.addStampAndHeaderRow(c,["Name","Role","Appears in"],o,i);let u=new Map;t.flatItems.forEach(C=>{let k=C.hostSpeaker;if(k){let A=u.get(k.PK)??{name:k.name,role:"Host",topics:[]};A.topics.push(C.topic||"(untitled)"),u.set(k.PK,A)}else if(C.hostFallback){let A=`fallback:host:${C.hostFallback}`,K=u.get(A)??{name:C.hostFallback,role:"Host (non-speaker)",topics:[]};K.topics.push(C.topic||"(untitled)"),u.set(A,K)}(C.participantSpeakers??[]).forEach(A=>{let K=u.get(A.PK)??{name:A.name,role:"Participant",topics:[]};K.topics.push(C.topic||"(untitled)"),u.set(A.PK,K)}),(C.participantFallbacks??[]).forEach(A=>{let K=`fallback:participant:${A}`,ae=u.get(K)??{name:A,role:"Participant (non-speaker)",topics:[]};ae.topics.push(C.topic||"(untitled)"),u.set(K,ae)})}),Array.from(u.values()).sort((C,k)=>C.name.localeCompare(k.name)).forEach(C=>c.addRow({name:C.name,role:C.role,topics:C.topics.join("; ")}))}addPoweredByPrintFooter(e){e.headerFooter=Z($({},e.headerFooter),{oddFooter:`&C&8${li}`})}static{this.\u0275fac=function(t){return new(t||n)}}static{this.\u0275prov=X({token:n,factory:n.\u0275fac,providedIn:"root"})}}return n})();var Is="CONFIDENTIAL \u2014 Production Use Only",Fs=14,_a=20,vn=_a+7,Ca=(()=>{class n{export(e,t,i){return P(this,null,function*(){let o=mt(e,t,i.eventName,i.agendaTimeFormat);if(!o.flatItems.length)throw new Error("Nothing to export \u2014 the runsheet is empty.");if(!o.columns.length)throw new Error("No columns are visible \u2014 turn on at least one column before exporting.");let{jsPDF:c}=yield import("./chunk-S3LMLFY3.js"),u=yield import("./chunk-FXLKQUMF.js"),C=typeof u.default=="object"&&u.default?u.default:void 0,A=[u.autoTable,typeof u.default=="function"?u.default:void 0,C?.autoTable,C?.default].find(ne=>typeof ne=="function");if(!A)throw new Error("PDF export is unavailable \u2014 autoTable plugin failed to load.");let K=new c({orientation:"landscape",unit:"mm",format:"a4"}),ae=wt(i.primaryColorHex)??_o,U=wt(i.secondaryColorHex)??Co;Ho(K,{eventName:o.eventName,subtitle:i.scopeLabel??this.coverSessionLabel(o),brand:ae,accent:U}),this.renderGroups(K,o,ae,A),Qo(K,{generatedLabel:We(o.generatedAt,i),brand:ae,coverNotice:Is}),K.save(pt(i,o.generatedAt,"pdf"))})}coverSessionLabel(e){return e.groups.length===1?e.groups[0].sessionTitle:"All sessions"}renderGroups(e,t,i,o){let u=e.internal.pageSize.getWidth()-Qe*2,C=t.columns.reduce((K,ae)=>K+ae.widthMm,0),k=C>0?u/C:1,A={};t.columns.forEach((K,ae)=>{A[ae]={cellWidth:K.widthMm*k,halign:K.centered?"center":"left"}}),t.groups.forEach(K=>{e.addPage(),this.drawSessionBanner(e,K,i),K.rows.length===0?this.renderEmptyGroupPlaceholder(e):this.renderGroupTable(e,t,K,i,o,A,u)})}drawSessionBanner(e,t,i){let o=e.internal.pageSize.getWidth(),c=qo(i);e.setFillColor(...i),e.rect(0,0,o,_a,"F");let u=[t.dayLabel,t.timeRangeLabel].filter(Boolean).join(" | ");e.setTextColor(...c),e.setFont("helvetica","normal"),e.setFontSize(9.5);let C=u?e.getTextWidth(u):0;u&&e.text(u,o-Qe,12.5,{align:"right"});let k=o-Qe*2-C-8;e.setFont("helvetica","bold"),e.setFontSize(13);let A=e.splitTextToSize(vo(t.sessionTitle),k),K=A.length>1?`${(A[0]??"").trimEnd()}\u2026`:A[0]??"";e.text(K,Qe,12.5)}renderEmptyGroupPlaceholder(e){e.setFont("helvetica","italic"),e.setFontSize(9),e.setTextColor(120,120,120),e.text("No items planned for this session.",Qe,vn+4),e.setTextColor(20,20,20)}renderGroupTable(e,t,i,o,c,u,C){let k=[t.columns.map(U=>U.label)],A=ui.filter(U=>t.columns.some(ne=>ne.key===U)),K={},ae=i.rows.map(U=>t.columns.map(ne=>{let H=U.values[ne.key]??"";
1return A.includes(ne.key)&&K[ne.key]&&pi(H,K[ne.key])?"Same as above":(H&&(K[ne.key]=H),H)}));c(e,{head:k,body:ae,startY:vn,theme:"grid",styles:{font:"helvetica",fontSize:8,cellPadding:2,overflow:"linebreak",textColor:[40,44,52],lineColor:[223,227,232],lineWidth:.15},headStyles:{fillColor:[255,255,255],textColor:o,fontStyle:"bold"},alternateRowStyles:{fillColor:[246,248,250]},columnStyles:u,tableWidth:C,margin:{top:vn,left:Qe,right:Qe,bottom:Fs},didDrawPage:U=>{U.pageNumber>1&&this.drawSessionBanner(e,i,o)},didParseCell:U=>{if(U.section!=="body")return;let ne=U.column.index,H=t.columns[ne]?.key;if(H){if(H==="status"){let Fe=i.rows[U.row.index]?.statusKey;Fe&&Tt[Fe]&&(U.cell.styles.textColor=Tt[Fe],U.cell.styles.fontStyle="bold")}A.includes(H)&&U.cell.raw==="Same as above"&&(U.cell.styles.fontStyle="italic",U.cell.styles.textColor=[120,120,120])}}})}static{this.\u0275fac=function(t){return new(t||n)}}static{this.\u0275prov=X({token:n,factory:n.\u0275fac,providedIn:"root"})}}return n})();var Ks=(n,l)=>l.key,Ls=(n,l)=>l.format;function Ds(n,l){if(n&1&&(r(0,"option",7),p(1),s()),n&2){let e=l.$implicit;d("value",e.key),a(),y(e.label)}}function Rs(n,l){if(n&1){let e=w();r(0,"li")(1,"cnp-button",9),h("click",function(){let i=g(e).$implicit,o=m();return f(o.trigger(i.format))}),_(2,"cnp-icon",10),p(3),s()()}if(n&2){let e=l.$implicit;a(),d("block",!0),a(),d("name",e.icon),a(),I(" ",e.label," ")}}var Sn="all",Ns="unscheduled",Os=[{format:"pdf",label:"PDF (.pdf)",icon:"file-document"},{format:"xlsx",label:"Excel (.xlsx)",icon:"file-spreadsheet"},{format:"docx",label:"Word (.docx)",icon:"file-document"},{format:"json-snapshot",label:"Full snapshot (.json)",icon:"source-code"}],Pi=(()=>{class n{constructor(){this.pdfService=b(Ca),this.excelService=b(fa),this.docxService=b(ga),this.runsheetService=b(ut),this.eventService=b(Ce),this.choices=Os,this.groups=[],this.visibleColumnKeys=[],this.eventName="Event",this.exportError=new re,this.busy=!1,this.open=!1,this.scopeKey=Sn}get scopeOptions(){return this.groups.map(e=>({key:this.scopeKeyOf(e),label:e.sessionTitle}))}scopeKeyOf(e){return e.topicSessionPK??e.sessionPK??Ns}trigger(e){return P(this,null,function*(){if(e==="json-snapshot"){this.open=!1,yield this.downloadSnapshot();return}let t=this.scopedGroups();if(!t.some(o=>o.items.length>0)){this.exportError.emit("Nothing to export \u2014 no items in the selected sessions.");return}if(!this.visibleColumnKeys.length){this.exportError.emit("No columns are visible \u2014 turn on at least one column before exporting.");return}this.busy=!0;try{let o=yield this.buildBranding(e==="docx",t);switch(e){case"pdf":yield this.pdfService.export(t,this.visibleColumnKeys,o);break;case"xlsx":yield this.excelService.export(t,this.visibleColumnKeys,o);break;case"docx":yield this.docxService.export(t,this.visibleColumnKeys,o);break}}catch(o){let c=o instanceof Error?o.message:"Export failed";this.exportError.emit(c)}finally{this.busy=!1,this.open=!1}})}scopedGroups(){if(this.scopeKey===Sn)return this.groups;let e=this.groups.filter(t=>this.scopeKeyOf(t)===this.scopeKey);return e.length?e:this.groups}buildBranding(e,t){return P(this,null,function*(){let i=this.scopeKey!==Sn&&t.length===1?t[0].sessionTitle:void 0;return xt(this.eventService.data,{includeBanner:e,eventNameFallback:this.eventName,scopeLabel:i})})}downloadSnapshot(){return P(this,null,function*(){this.busy=!0;try{let e=yield Tn(this.runsheetService.exportSnapshot("json"));if(e?.success!==1||e.data===void 0)throw new Error(e?.message??"Empty snapshot response");let t=JSON.stringify(e.data,null,2),i=new Blob([t],{type:"application/json"}),o=URL.createObjectURL(i),c=document.createElement("a");c.href=o;let u=this.eventService.data?.timezone??null;c.download=`${Et(this.eventName)}-agenda-snapshot-${di(new Date,u)}.json`,c.click(),setTimeout(()=>URL.revokeObjectURL(o),1500)}catch(e){let t=e instanceof Error?e.message:"Snapshot download failed";this.exportError.emit(t)}finally{this.busy=!1}})}static{this.\u0275fac=function(t){return new(t||n)}}static{this.\u0275cmp=M({type:n,selectors:[["app-runsheet-export-menu"]],inputs:{groups:"groups",visibleColumnKeys:"visibleColumnKeys",eventName:"eventName"},outputs:{exportError:"exportError"},decls:15,vars:5,consts:[["heading","Export","ariaLabel","Export runsheet","align","end","density","flush",3,"openChange","open"],["cnpPopoverTrigger","","variant","secondary","size","sm","loadingLabel","Generating export","ariaHasPopup","dialog",3,"click","disabled","loading","ariaExpanded"],["name","export"],[1,"export-menu"],["for","runsheetExportScope",1,"export-menu-label"],["id","runsheetExportScope","cnpInput","",3,"ngModelChange","ngModel"],["value","all"],[3,"value"],[1,"export-menu-formats"],["variant","ghost","size","sm",3,"click","block"],[3,"name"]],template:function(t,i){t&1&&(r(0,"cnp-popover",0),N("openChange",function(c){return R(i.open,c)||(i.open=c),c}),r(1,"cnp-button",1),h("click",function(){return i.open=!i.open}),_(2,"cnp-icon",2),p(3," Export "),s(),r(4,"div",3)(5,"label",4),p(6,"Scope"),s(),r(7,"select",5),N("ngModelChange",function(c){return R(i.scopeKey,c)||(i.scopeKey=c),c}),r(8,"option",6),p(9,"All runsheet sessions"),s(),T(10,Ds,2,2,"option",7,Ks),s(),r(12,"ul",8),T(13,Rs,4,3,"li",null,Ls),s()()()),t&2&&(D("open",i.open),a(),d("disabled",i.busy)("loading",i.busy)("ariaExpanded",i.open),a(6),D("ngModel",i.scopeKey),a(3),E(i.scopeOptions),a(3),E(i.choices))}
1,dependencies:[se,ee,te,J,W,pe,L,V,q,Xt,Jt],styles:[".export-menu[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:var(--cnp-space-2);min-width:15rem;padding:var(--cnp-space-4)}.export-menu-label[_ngcontent-%COMP%]{font-size:var(--cnp-font-size-label);font-weight:var(--cnp-font-weight-medium);color:var(--cnp-color-text-secondary)}.export-menu-formats[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:var(--cnp-space-1);margin:0;padding:0;list-style:none;border-block-start:1px solid var(--cnp-color-rule);padding-block-start:var(--cnp-space-2)}"]})}}return n})();function Vs(n,l){if(n&1&&(r(0,"cnp-callout",14),p(1),s()),n&2){let e=m();a(),y(e.submitError)}}var va=/^([01]\d|2[0-3]):[0-5]\d$/,ya=/^\d{4}-\d{2}-\d{2}$/,Sa="Enter a time as HH:mm.";function Bs(n){let l=Ke(n.get("startTime")?.value),e=Ke(n.get("endTime")?.value);return l!==null&&e!==null&&e<=l?{endBeforeStart:!0}:null}function $s(n,l){return e=>{let t=e.value;return!t||!ya.test(t)?null:n&&t<n||l&&t>l?{outOfRange:!0}:null}}var Ai=(()=>{class n{constructor(e,t){this.fb=e,this.activeModal=t,this.sessionTitle="",this.day="",this.startTime="",this.endTime="",this.minDay=null,this.maxDay=null,this.dateformat=null,this.isSaving=!1,this.submitError=""}ngOnInit(){this.form=this.fb.group({day:[this.day,[F.required,F.pattern(ya),$s(this.minDay,this.maxDay)]],startTime:[this.startTime,[F.required,F.pattern(va)]],endTime:[this.endTime,[F.required,F.pattern(va)]]},{validators:[Bs]})}get isInvalid(){return this.form.invalid}onDayChange(e){let t=this.form.controls.day;t.setValue(e??""),t.markAsTouched()}get dayError(){let e=this.form.controls.day;if(!e.touched||e.valid)return"";if(e.hasError("outOfRange")){let t=yt(this.minDay,this.dateformat),i=yt(this.maxDay,this.dateformat);return`Pick a day within the event (${t} to ${i}).`}return"Pick a day."}get startError(){return this.errorFor("startTime",Sa)}
1get endError(){let e=this.errorFor("endTime",Sa);return e||(this.form.hasError("endBeforeStart")&&this.form.controls.endTime.touched?"The end must be after the start.":"")}errorFor(e,t){let i=this.form.controls[e];return i.invalid&&i.touched?t:""}submit(){return P(this,null,function*(){if(this.form.invalid){this.form.markAllAsTouched();return}let e=this.form.getRawValue();if(this.submitError="",!this.submitHandler){this.activeModal.close(e);return}this.isSaving=!0;try{yield this.submitHandler(e),this.activeModal.close(e)}catch(t){this.submitError=t?.message||"Could not save the session time. Try again.",this.isSaving=!1}})}dismiss(){this.activeModal.dismiss()}static{this.\u0275fac=function(t){return new(t||n)(ie(ge),ie(_e))}}static{this.\u0275cmp=M({type:n,selectors:[["app-runsheet-session-time-modal"]],inputs:{sessionTitle:"sessionTitle",day:"day",startTime:"startTime",endTime:"endTime",minDay:"minDay",maxDay:"maxDay",dateformat:"dateformat"},decls:25,vars:23,consts:[[1,"modal-header"],[1,"modal-title"],["variant","ghost","size","sm","ariaLabel","Close",1,"dialog-close",3,"click","iconOnly"],["name","close"],["novalidate","",3,"ngSubmit","formGroup"],[1,"modal-body"],[1,"session-time-modal"],[1,"session-time-intro"],[1,"session-time-row"],["label","Day",3,"valueChange","value","required","min","max","error"],["label","Start","controlId","session-time-start",3,"required","error"],["cnpInput","","id","session-time-start","formControlName","startTime","inputmode","numeric","mask","Hh:m0",3,"showMaskTyped","leadZeroDateTime","dropSpecialCharacters"],["label","End","controlId","session-time-end",3,"required","error"],["cnpInput","","id","session-time-end","formControlName","endTime","inputmode","numeric","mask","Hh:m0",3,"showMaskTyped","leadZeroDateTime","dropSpecialCharacters"],["tone","danger","live","status"],[1,"modal-footer"],["type","button","variant","secondary",3,"click","disabled"],["type","submit","loadingLabel","Saving session time",3,"loading","disabled","disabledReason"]],template:function(t,i){t&1&&(r(0,"div",0)(1,"h5",1),p(2,"Edit session time"),s(),r(3,"cnp-button",2),h("click",function(){return i.dismiss()}),_(4,"cnp-icon",3),s()(),r(5,"form",4),h("ngSubmit",function(){return i.submit()}),r(6,"div",5)(7,"div",6)(8,"p",7),p(9," The runsheet is the only place "),r(10,"strong"),p(11),s(),p(12," is scheduled. Saving here updates the session record, so the agenda, the attendee app and the schedule-driven live features all follow. "),s(),r(13,"div",8)(14,"cnp-date-field",9),h("valueChange",function(c){return i.onDayChange(c)}),s(),r(15,"cnp-field",10),_(16,"input",11),s(),r(17,"cnp-field",12),_(18,"input",13),s()(),v(19,Vs,2,1,"cnp-callout",14),s()(),r(20,"div",15)(21,"cnp-button",16),h("click",function(){return i.dismiss()}),p(22,"Cancel"),s(),r(23,"cnp-button",17),p(24," Save time "),s()()()),t&2&&(a(3),d("iconOnly",!0),a(2),d("formGroup",i.form),a(6),y(i.sessionTitle),a(3),d("value",i.form.value.day||"")("required",!0)("min",i.minDay||"")("max",i.maxDay||"")("error",i.dayError),a(),d("required",!0)("error",i.startError),a(),d("showMaskTyped",!0)("leadZeroDateTime",!0)("dropSpecialCharacters",!1),a(),d("required",!0)("error",i.endError),a(),d("showMaskTyped",!0)("leadZeroDateTime",!0)("dropSpecialCharacters",!1),a(),S(i.submitError?19:-1),a(2),d("disabled",i.isSaving),a(2),d("loading",i.isSaving)("disabled",i.isInvalid)("disabledReason",i.isInvalid?"Complete the day, start and end first":""))},dependencies:[fe,me,Q,W,de,ue,he,Je,L,Y,Zn,j,V,q],styles:[".session-time-modal[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:var(--cnp-space-4)}.session-time-intro[_ngcontent-%COMP%]{margin:0;font-size:var(--cnp-font-size-body);color:var(--cnp-color-text-secondary)}.session-time-row[_ngcontent-%COMP%]{display:grid;grid-template-columns:5fr 3fr 3fr;gap:var(--cnp-space-4);align-items:start}@media (width <= 40rem){.session-time-row[_ngcontent-%COMP%]{grid-template-columns:minmax(0,1fr)}}"]})}}return n})();function zs(n,l){if(n&1){let e=w();r(0,"cnp-dropdown",3),h("select",function(i){g(e);let o=m();return f(o.onAction(i))}),_(1,"cnp-icon",4),s()}if(n&2){let e=m();d("iconOnly",!0)("items",e.actions)}}var ba="open-in-new-tab",Mi=(()=>{class n{constructor(){this.topicSessions=[],this.activePK=null,this.liveBySessionPK=new Map,this.activate=new re,this.openInNewTab=new re,this.actions=[{id:ba,label:"Open in new tab",icon:"open-external"}],this.tabs=[]}ngOnChanges(e){(e.topicSessions||e.liveBySessionPK)&&(this.tabs=(this.topicSessions??[]).map(t=>({id:t.PK,label:this.labelFor(t)})))}onTabChange(e){e&&e!==this.activePK&&this.activate.emit(e)}onAction(e){e===ba&&this.activePK&&this.openInNewTab.emit(this.activePK)}labelFor(e){let t=e.sessionName||"Untitled",i=e.sessionCode?`${t} (${e.sessionCode})`:t;return this.isTabLive(e)?`${i} \xB7 Live`:i}isTabLive(e){return e.sessionPK?this.liveBySessionPK.get(e.sessionPK)??!1:!1}static{this.\u0275fac=function(t){return new(t||n)}}static{this.\u0275cmp=M({type:n,selectors:[["app-runsheet-topic-session-tabs"]],inputs:{topicSessions:"topicSessions",activePK:"activePK",liveBySessionPK:"liveBySessionPK"},outputs:{activate:"activate",openInNewTab:"openInNewTab"}
1,features:[Lt],decls:3,vars:3,consts:[[1,"topic-session-tabs"],["ariaLabel","Topic sessions","idPrefix","topic-session",3,"activeIdChange","tabs","activeId"],["size","sm","align","end","ariaLabel","Topic session actions",3,"iconOnly","items"],["size","sm","align","end","ariaLabel","Topic session actions",3,"select","iconOnly","items"],["name","row-actions-vertical"]],template:function(t,i){t&1&&(r(0,"div",0)(1,"cnp-tabs",1),h("activeIdChange",function(c){return i.onTabChange(c)}),s(),v(2,zs,2,2,"cnp-dropdown",2),s()),t&2&&(a(),d("tabs",i.tabs)("activeId",i.activePK??""),a(),S(i.activePK?2:-1))},dependencies:[Ae,V,nt],styles:[".topic-session-tabs[_ngcontent-%COMP%]{display:flex;align-items:center;gap:var(--cnp-space-2)}.topic-session-tabs[_ngcontent-%COMP%] cnp-tabs[_ngcontent-%COMP%]{flex:1 1 auto;min-width:0}"]})}}return n})();var Us=(n,l)=>["/emp",n,"sessions",l,"transcript-publisher"],Gs=(n,l)=>l.label,Ws=(n,l)=>l.key,qs=(n,l)=>l.itemPK;function Hs(n,l){if(n&1){let e=w();r(0,"cnp-page-header",1)(1,"app-runsheet-topic-session-tabs",35),h("activate",function(i){g(e);let o=m();return f(o.onActivateTopicSession(i))})("openInNewTab",function(i){g(e);let o=m();return f(o.openTopicSessionInNewTab(i))}),s()()}if(n&2){let e=m();d("level",2),a(),d("topicSessions",e.topicSessions)("activePK",e.activeTopicSessionPK)("liveBySessionPK",e.liveBySessionPK)}}function Qs(n,l){if(n&1&&(r(0,"span",37),p(1),s()),n&2){let e=m(2);a(),y(e.header==null?null:e.header.scheduleLabel)}}function js(n,l){if(n&1&&(r(0,"header",3)(1,"h2",36),p(2),s(),v(3,Qs,2,1,"span",37),s()),n&2){let e=m();a(2),y((e.header==null?null:e.header.sessionTitle)||"Topic session"),a(),S(e.header!=null&&e.header.scheduleLabel?3:-1)}}function Ys(n,l){if(n&1&&(r(0,"cnp-status-pill",6),p(1),s()),n&2){let e=l.$implicit;d("tone",e.tone)("icon",e.icon),a(),ce("",e.count," ",e.label)}}function Zs(n,l){if(n&1&&(r(0,"cnp-status-pill",7),p(1),s()),n&2){let e=m();a(),y(e.header==null?null:e.header.scheduleLabel)}}function Xs(n,l){if(n&1){let e=w();r(0,"cnp-button",38),h("click",function(){g(e);let i=m();return f(i.openSessionTimeModal())}),_(1,"cnp-icon",39),p(2," Edit time "),s()}}function Js(n,l){if(n&1){let e=w();r(0,"cnp-tooltip",40)(1,"cnp-status-pill",41),p(2,"Runsheet copy out of date"),s()(),r(3,"cnp-button",42),h("click",function(){g(e);let i=m();return f(i.resyncRunsheetSchedule())}),_(4,"cnp-icon",14),p(5," Re-sync "),s()}if(n&2){let e=l,t=m();d("text","The runsheet's copy of this session's schedule ("+e.runsheet+") differs from the session record ("+e.session+"). The agenda, the attendee app and the schedule follow the session record."),a(3),d("loading",t.isTopicSessionsSaving)}}function el(n,l){if(n&1&&(r(0,"cnp-tooltip",9)(1,"cnp-status-pill",41),p(2),s()()),n&2){let e=m();a(2),y(e.header==null?null:e.header.overflowLabel)}}function tl(n,l){if(n&1){let e=w();r(0,"cnp-dropdown",45),h("select",function(i){g(e);let o=m(2);return f(o.onSwitchSegment(i))}),_(1,"cnp-icon",46),p(2," Switch segment "),s()}if(n&2){let e=m(2);d("items",e.switchSegmentItems)}}function il(n,l){if(n&1&&(r(0,"cnp-tooltip",40)(1,"cnp-status-pill",43),p(2),s()(),v(3,tl,3,1,"cnp-dropdown",44)),n&2){let e=m();d("text",e.onScreenHint),a(),d("tone",l.liveSegment?"success":"neutral"),a(),I(" ",e.onScreenLabel," "),a(),S(e.canSwitchSegment?3:-1)}}function nl(n,l){n&1&&(r(0,"cnp-tooltip",10)(1,"cnp-status-pill",41),p(2,"Live sync off"),s()())}function ol(n,l){if(n&1){let e=w();r(0,"cnp-button",47),h("click",function(){g(e);let i=m();return f(i.toggleFullscreen())}),_(1,"cnp-icon",48),p(2),s()}if(n&2){let e=m();d("ariaLabel",e.isFullscreen?"Exit full screen":"Full screen for live operation"),a(2),I(" ",e.isFullscreen?"Exit":"Full screen"," ")}}function al(n,l){if(n&1&&(r(0,"a",15),_(1,"cnp-icon",49),p(2," Publisher "),s()),n&2){let e=m();d("routerLink",Mn(1,Us,e.eventUrlSlug,e.activeTopicSession==null?null:e.activeTopicSession.sessionPK))}}function rl(n,l){if(n&1&&(r(0,"a",16),_(1,"cnp-icon",50),p(2," Live display "),s()),n&2){let e=m();d("href",e.liveDisplayUrl,we)}}function sl(n,l){if(n&1&&_(0,"cnp-count-badge",18),n&2){let e=m();d("value",e.changelog.length)}}function ll(n,l){if(n&1){let e=w();r(0,"cnp-button",51),h("click",function(){g(e);let i=m();return f(i.downloadBrief("pdf"))}),_(1,"cnp-icon",52),p(2," PDF "),s(),r(3,"cnp-button",53),h("click",function(){g(e);let i=m();return f(i.downloadBrief("docx"))}),_(4,"cnp-icon",52),p(5," DOCX "),s()}}function cl(n,l){if(n&1){let e=w();r(0,"cnp-callout",54),h("dismissed",function(){g(e);let i=m();return f(i.dismissExportError())}),p(1),s()}if(n&2){let e=m();d("dismissible",!0),a(),y(e.exportError)}}function dl(n,l){if(n&1){let e=w();r(0,"app-runsheet-failed-save-banner",55),h("retry",function(){g(e);let i=m();return f(i.retryFailedUpdates())})("discard",function(){g(e);let i=m();return f(i.discardFailedUpdates())}),s()}if(n&2){let e=m();d("failedUpdates",e.failedUpdates)}}function pl(n,l){n&1&&(r(0,"div",32),_(1,"cnp-empty-state",56),s()),n&2&&(a(),d("headingLevel",3))}function ml(n,l){if(n&1){let e=w();r(0,"div",32)(1,"cnp-empty-state",57)(2,"cnp-button",58),h("click",function(){g(e);let i=m();return f(i.openAddItemModal())}),p(3," Add item "),s()()()}if(n&2){let e=m();a(),d("headingLevel",3),a(),d("disabled",!e.activeTopicSessionPK)}}function ul(n,l){if(n&1&&(r(0,"cnp-status-pill",65),p(1),s()),n&2){let e=m(3);d("tone",e.activeSessionIsLive?"success":"neutral")("dot",!0),a(),I(" ",e.activeSessionIsLive?"Transcription live":"Not live"," ")}}function hl(n,l){if(n&1&&(r(0,"th")(1,"span"),p(2),s(),v(3,ul,2,3,"cnp-status-pill",65),s()),n&2){let e=l.$implicit,t=m(2);vt("agenda-grid-th-center",e.kind==="ai-flag"),oe("data-col",e.key),a(2),y(e.label),a(),S(e.kind==="segment-timing"&&(t.activeTopicSession!=null&&t.activeTopicSession.sessionPK)?3:-1)}}function gl(n,l){if(n&1){let e=w();r(0,"tr",67)(1,"td")(2,"app-runsheet-agenda-row-detail",68),h("itemUpdate",function(i){g(e);let o=m().$implicit,c=m(2);return f(c.onRowUpdate(o,i))})("contentChanged",function(){g(e);let i=m(3);return f(i.loadContentSummaries())})("exportQuestions",function(){g(e);let i=m().$implicit,o=m(2);return f(o.exportItemQuestions(i))}),s()()()}if(n&2){let e=m().$implicit,t=m(2);a(),oe("colspan",t.visibleColumnKeys.length+2),a(),d("item",e)("summaries",t.summaries)("notifications",t.notifications)("eventTz",t.eventTz)("agendaTimeFormat",t.agendaTimeFormat)("dateformat",t.dateformat)("sessionPK",(t.activeTopicSession==null?null:t.activeTopicSession.sessionPK)??null)}}function fl(n,l){if(n&1){let e=w();r(0,"tr",66),h("itemUpdate",function(i){let o=g(e).$implicit,c=m(2);return f(c.onRowUpdate(o,i))})("itemStart",function(i){let o=g(e).$implicit,c=m(2);return f(c.onItemStart(o,i))})("itemStop",function(i){let o=g(e).$implicit,c=m(2);return f(c.onItemStop(o,i))})("itemSkip",function(){let i=g(e).$implicit,o=m(2);return f(o.onItemKill(i))})("itemEditTimes",function(i){let o=g(e).$implicit,c=m(2);return f(c.onItemEditTimes(o,i))})("itemReset",function(){let i=g(e).$implicit,o=m(2);return f(o.onItemReset(i))})("insertAbove",function(){let i=g(e).$index,o=m(2);return f(o.insertAbove(i))})("moveUp",function(){let i=g(e).$index,o=m(2);return f(o.moveUp(i))})("moveDown",function(){let i=g(e).$index,o=m(2);return f(o.moveDown(i))}
1)("copyDetails",function(){let i=g(e).$implicit,o=m(2);return f(o.copyRowDetails(i))})("remove",function(){let i=g(e).$implicit,o=m(2);return f(o.remove(i))})("toggleDetail",function(){let i=g(e).$implicit,o=m(2);return f(o.toggleRowDetail(i))}),s(),v(1,gl,3,8,"tr",67)}if(n&2){let e=l.$implicit,t=l.$index,i=m(2);d("cdkDragData",e)("item",e)("startMinutes",i.rowStart(e))("endMinutes",i.rowEnd(e))("contentSummary",i.contentByItem.get(e.itemPK)??null)("visibleColumnKeys",i.visibleColumnKeys)("availableSpeakers",i.availableSpeakers)("autoEditTopic",e.itemPK===i.pendingEditPK)("expanded",i.isExpanded(e))("sessionDateEpochMs",i.sessionDateEpochMs)("eventTz",i.eventTz)("agendaTimeFormat",i.agendaTimeFormat)("canMoveUp",t>0)("canMoveDown",t<i.items.length-1),a(),S(i.isExpanded(e)?1:-1)}}function _l(n,l){if(n&1){let e=w();r(0,"div",33)(1,"table",59)(2,"thead")(3,"tr")(4,"th",60)(5,"span",61),p(6,"Reorder"),s()(),T(7,hl,4,5,"th",62,Ws),r(9,"th",63)(10,"span",61),p(11,"Row actions"),s()()()(),r(12,"tbody",64),h("cdkDropListDropped",function(i){g(e);let o=m();return f(o.onDrop(i))}),T(13,fl,2,15,null,null,qs),s()()()}if(n&2){let e=m();a(7),E(e.visibleColumns),a(5),d("id",e.dropListId)("cdkDropListData",e.items),a(),E(e.items)}}var Cl="09:00",vl="runsheet:columnVisibility:",Sl="runsheet:activeTopicSession:",yl=["contentPermission","aiTranscription","aiSummaries","liveQuestions","autoSendNotification"],yn="cancelled",bl=(n,l)=>n.runtimeStatus==="running"&&l.status===yn,xl=n=>{let l=n.topic||"untitled";return n.runtimeStatus==="running"?`"${l}" is on stage now. Deleting it ends the segment and closes its live questions. This cannot be undone.`:`Delete agenda item "${l}"? This cannot be undone.`},xa="Untitled segment",wl="What the live Q&A display is showing. It follows the live segment \u2014 Start a segment to move it.",Tl="What the live Q&A display is showing. This session follows the schedule, so the display advances with the clock.",El=(n,l)=>{if(n.itemPK===l)return" \xB7 on screen";switch(n.runtimeStatus){case"running":return" \xB7 running";case"done":return" \xB7 done";case"killed":return" \xB7 skipped";default:return""}},Ii=(()=>{class n{constructor(){this.facade=b(Ie),this.topicSessionsFacade=b(He),this.contentAssets=b(_t),this.briefings=b(xo),this.debouncedWriter=b(Go),this.realtime=b(Wo),this.transcriptionLive=b(Xo),this.liveSegments=b(Zo),this.userService=b(zn),this.speakerService=b(lt),this.sessionService=b(ii),this.eventService=b(Ce),this.questionsExport=b(Yo),this.utilitiesService=b(ke),this.toast=b(Se),this.clipboard=b(Jn),this.actions$=b(Ht),this.modal=b(Ee),this.route=b(Bt),this.router=b($t),this.destroy$=new G,this.liveBySessionPK=new Map,this.subscribedLivePKs=new Set,this.liveSegmentBySessionPK=new Map,this.switchSegmentItems=[],this.subscribedSegmentPKs=new Set,this.availableSpeakers=[],this.statusOptions=ct,this.contentByItem=new Map,this.isDownloadingContent=!1,this.isExportingQuestions=!1,this.briefingPK=null,this.briefStatus=null,this.briefGenerating=!1,this.briefPollTimer=null,this.allItems=[],this.items=[],this.header=null,this.visibleColumnKeys=mo.map(e=>e),this.pendingEditPK=null,this.changelogOpen=!1,this.startTimesByPK={},this.endTimesByPK={},this.sessionDateEpochMs=0,this.eventTz=null,this.agendaTimeFormat=null,this.dateformat=null,this.statusCounts=[],this.conflictItem=null,this.failedUpdates=[],this.changelog=[],this.changelogError=null,this.liveSyncDown=!1,this.exportError=null,this.eventName="Event",this.topicSessions=[],this.activeTopicSessionPK=null,this.isTopicSessionsSaving=!1,this.summaries=[],this.notifications=[],this.isFullscreen=!1,this.soloMode=!1,this.expandedItemPKs=new Set,this.sessionsByPK=new Map,this.eventKey=null,this.exportErrorTimeout=null,this.restoredActiveTopicSession=!1,this.isSaving$=this.facade.isSaving$,this.isLoading$=this.facade.isLoading$,this.error$=this.facade.error$,this.dropListId="agenda-grid-items",this.exportGroupsCache=null,this.trackByPK=(e,t)=>t.itemPK}get activeTopicSession(){return this.activeTopicSessionPK?this.topicSessions.find(e=>e.PK===this.activeTopicSessionPK)??null:null}get visibleColumns(){return ai.filter(e=>
1this.visibleColumnKeys.includes(e.key))}get eventUrlSlug(){return this.eventService.data?.url??""}get activeSessionIsLive(){let e=this.activeTopicSession?.sessionPK;return e?this.liveBySessionPK.get(e)??!1:!1}get activeDisplay(){let e=this.activeTopicSession?.sessionPK,t=e?this.liveSegmentBySessionPK.get(e):void 0;return t&&(t.syncMode||t.liveSegment)?t:null}get onScreenLabel(){let e=this.activeDisplay?.liveSegment;return e?`On screen: ${e.topic||xa}`:"No segment on screen"}get onScreenHint(){return this.activeDisplay?.syncMode==="schedule"?Tl:wl}get canSwitchSegment(){return this.activeDisplay?.syncMode==="start-stop"&&this.switchSegmentItems.length>0}get liveDisplayUrl(){let e=this.activeTopicSession?.sessionPK,t=this.userService.profile?.wsToken;return!e||!t||!this.eventUrlSlug?"":`${window.location.origin}${wo(this.eventUrlSlug,e,t)}`}get hasAnyTopicSession(){return this.topicSessions.length>0}get hasItems(){return this.items.length>0}get exportGroups(){let e=this.exportGroupsCache;if(e&&e.items===this.allItems&&e.sessions===this.topicSessions&&e.speakers===this.availableSpeakers&&e.sessionsByPK===this.sessionsByPK)return e.value;let t=new Map(this.availableSpeakers.map(o=>[o.PK,o.name])),i=this.topicSessions.map(o=>{let c=this.itemsForTopicSession(o.PK),u=this.buildHeader(o,c),C=this.sessionDateEpochMsFor(o);return{topicSessionPK:o.PK,sessionPK:u?.linkedSession?.PK??null,sessionTitle:u?.sessionTitle??"Untitled topic session",sessionStart:u?.effectiveStart??null,timeRangeLabel:u?.timeRangeLabel??"",dayLabel:C?new Date(C).toLocaleDateString(void 0,{weekday:"long"}):"",isUnscheduled:!u?.effectiveStart,items:c.map(k=>this.withResolvedSpeakers(k,t))}});return this.exportGroupsCache={items:this.allItems,sessions:this.topicSessions,speakers:this.availableSpeakers,sessionsByPK:this.sessionsByPK,value:i},i}withResolvedSpeakers(e,t){let i=new Map((e.participantSpeakers??[]).map(o=>[o.PK,o.name]));return Z($({},e),{hostSpeaker:e.hostSpeakerPK?{PK:e.hostSpeakerPK,name:t.get(e.hostSpeakerPK)??e.hostSpeaker?.name??""}:e.hostSpeaker??null,participantSpeakers:(e.participantSpeakerPKs??[]).map(o=>({PK:o,name:t.get(o)??i.get(o)??""}))})}ngOnInit(){this.soloMode=this.route.snapshot.queryParamMap.get("solo")==="1",(this.soloMode||this.route.snapshot.queryParamMap.get("fullscreen")==="1")&&this.setFullscreen(!0),this.eventService.eventSubject.pipe(x(this.destroy$)).subscribe(e=>{if(!e)return;let t=e;this.eventName=t.name??this.eventName,this.eventKey=t.PK||t.url||null,this.eventTz=t.timezone??null,this.agendaTimeFormat=t.agendaTimeFormat??null,this.dateformat=t.dateformat??null,this.loadStoredColumnVisibility(),this.replayStoredActiveTopicSession()}),this.speakerService.onChange.pipe(x(this.destroy$)).subscribe(e=>{this.availableSpeakers=(e??[]).map(t=>({PK:t.PK,name:t.name,title:t.title,company:t.company}))}),this.speakerService.load().catch(e=>console.warn("[Runsheet] speaker load failed",e)),this.sessionService.sessionSubject.pipe(x(this.destroy$)).subscribe(e=>{this.sessionsByPK=this.indexSessions(e??[]),this.recomputeView()}),this.sessionService.load().catch(e=>console.warn("[Runsheet] session load failed",e)),this.facade.allAgendaItems$.pipe(x(this.destroy$)).subscribe(e=>{this.allItems=e,this.recomputeView()}),this.topicSessionsFacade.all$.pipe(x(this.destroy$)).subscribe(e=>{this.topicSessions=e,this.replayStoredActiveTopicSession(),this.recomputeView(),this.initLiveTracking(e),this.initLiveSegmentTracking(e)}),this.topicSessionsFacade.activeTopicSessionPK$.pipe(x(this.destroy$)).subscribe(e=>{this.activeTopicSessionPK=e,this.persistActiveTopicSession(e),this.resetBriefState(),this.recomputeView(),e&&(this.facade.loadSummaries(e),this.facade.loadNotifications(e))}),this.topicSessionsFacade.isSaving$.pipe(x(this.destroy$)).subscribe(e=>{this.isTopicSessionsSaving=e}),this.topicSessionsFacade.init(),this.facade.statusCounts$.pipe(x(this.destroy$)).subscribe(e=>{this.statusCounts=ct.map(t=>({label:t.label,count:e[t.key]??0,tone:t.tone,icon:t.icon}))}),this.facade.conflictItem$.pipe(x(this.destroy$)).subscribe(e=>{this.conflictItem=e,e&&this.debouncedWriter.cancelPending(e.itemPK)}),this.facade.changelog$.pipe(x(this.destroy$)).subscribe(e=>this.changelog=e),this.facade.changelogError$.pipe(x(this.destroy$)).subscribe(e=>this.changelogError=e),this.realtime.liveSyncDown$.pipe(x(this.destroy$)).subscribe(e=>this.liveSyncDown=e),this.facade.failedUpdates$.pipe(x(this.destroy$)).subscribe(e=>this.failedUpdates=e),this.facade.summaries$.pipe(x(this.destroy$)).subscribe(e=>{this.summaries=e}),this.facade.notifications$.pipe(x(this.destroy$)).subscribe(e=>{this.notifications=e}),this.actions$.pipe(ye(gi),x(this.destroy$)).subscribe(()=>this.normaliseSequencesIfNeeded()),this.realtime.start(),this.loadContentSummaries()}loadContentSummaries(){this.contentAssets.list({}).pipe(x(this.destroy$)).subscribe({next:e=>{if(e.success!==1)return;let t=new Map;for(let o of e.data??[]){if(o.scopeType!=="agenda-item"||!o.scopeValue)continue;let c=t.get(o.scopeValue)??[];c.push(o.status),t.set(o.scopeValue,c)}let i=new Map;for(let[o,c]of t)i.set(o,{count:c.length,worst:Jo(c)});this.contentByItem=i},error:()=>{}})}exportQuestions(){return P(this,null,function*(){if(this.isExportingQuestions)return;let e=this.activeTopicSessionPK?this.exportGroups.filter(t=>t.topicSessionPK===this.activeTopicSessionPK):this.exportGroups;this.isExportingQuestions=!0;try{let t=yield xt(this.eventService.data,{eventNameFallback:this.eventName,scopeLabel:e.length===1?e[0].sessionTitle:void 0});yield this.questionsExport.export(e,t)}catch(t){this.onExportError(t instanceof Error?t.message:"Questions export failed")}finally{this.isExportingQuestions=!1}})}exportItemQuestions(e){return P(this,null,function*(){try{let t=yield xt(this.eventService.data,{eventNameFallback:this.eventName,scopeLabel:e.topic||void 0}),i=new Map(this.availableSpeakers.map(o=>[o.PK,o.name]));yield this.questionsExport.exportSingleItem(this.withResolvedSpeakers(e,i),this.rowStart(e),this.rowEnd(e),this.activeTopicSession?.sessionName||"Untitled topic session",t)}catch(t){this.onExportError(t instanceof Error?t.message:"Questions export failed")}})}downloadAllContent(){!this.activeTopicSessionPK||this.isDownloadingContent||(this.isDownloadingContent=!0,this.contentAssets.bulkDownloadBySession(this.activeTopicSessionPK).pipe(x(this.destroy$)).subscribe({next:e=>{this.isDownloadingContent=!1,e.success===1&&e.data?.url?window.open(e.data.url,"_blank"):this.onExportError(e.message??"No content to download for this runsheet")},error:e=>{this.isDownloadingContent=!1,this.onExportError(e?.message??"Failed to build the content download")}}))}get briefReady(){return this.briefStatus==="ready"}generatePlenaryBrief(){if(this.briefGenerating||!this.activeTopicSessionPK)return;let e=this.activeTopicSessionPK;this.briefGenerating=!0,this.briefStatus="queued",this.briefings.ensureForTopicSession(e).pipe(x(this.destroy$)).subscribe({next:t=>{if(this.activeTopicSessionPK===e){if(t.success!==1||!t.data){this.failBrief(t.message??"Could not start the briefing");return}this.briefingPK=t.data.PK,this.briefings.generate(this.briefingPK).pipe(x(this.destroy$)).subscribe({next:i=>i.success===1?this.pollBrief(0):this.failBrief(i.message),error:i=>this.failBrief(i?.message)})}},error:t=>{this.activeTopicSessionPK===e&&this.failBrief(t?.message)}})}pollBrief(e){let t=this.briefingPK;t&&this.briefings.view(t).pipe(x(this.destroy$)).subscribe({next:i=>{if(this.briefingPK!==t)return;let o=i.data?.status??null;if(this.briefStatus=o,o==="ready"){this.briefGenerating=!1,this.toast.showSuccess("Briefing ready","The plenary briefing has been generated.");return}if(o==="failed"){this.failBrief("Brief generation failed");return}if(e>=30){this.failBrief("Timed out waiting for the briefing to generate");return}this.briefPollTimer=setTimeout(()=>this.pollBrief(e+1),2e3)},error:i=>this.failBrief(i?.message)})}downloadBrief(e){this.briefingPK&&this.briefings.download(this.briefingPK,e).pipe(x(this.destroy$)).subscribe({next:t=>{t.success===1&&t.data?.url?window.open(t.data.url,"_blank"):this.toast.showDanger("Download failed",t.message??"Could not download the briefing")},error:t=>this.toast.showDanger("Download failed",t?.message??"Could not download the briefing")})}failBrief(e){this.briefGenerating=!1,this.briefStatus="failed",this.toast.showDanger("Briefing failed",e??"Something went wrong generating the briefing")}resetBriefState(){this.briefPollTimer!==null&&(clearTimeout(this.briefPollTimer),this.briefPollTimer=null),this.briefingPK=null,this.briefStatus=null,this.briefGenerating=!1}ngOnDestroy(){this.exportErrorTimeout!==null&&(clearTimeout(this.exportErrorTimeout),this.exportErrorTimeout=null),this.briefPollTimer!==null&&(clearTimeout(this.briefPollTimer),this.briefPollTimer=null),this.debouncedWriter.flushAll(),this.realtime.stop(),this.transcriptionLive.teardown(),this.liveSegments.teardown(),typeof document<"u"&&document.body.classList.remove("runsheet-fullscreen-active"),this.destroy$.next(),this.destroy$.complete()}openAddItemModal(){if(!this.activeTopicSessionPK)return;let e=this.modal.open(yi,{size:"lg",backdrop:"static",windowClass:"cnp-dialog"}),t=e.componentInstance;t.submitHandler=i=>this.dispatchCreateAndAwait(i),e.result.catch(()=>{})}dispatchCreateAndAwait(e){return new Promise((t,i)=>{Ft(this.actions$.pipe(ye(gi),Oe(1),Le(()=>"success")),this.actions$.pipe(ye(To),Oe(1),Le(()=>"failure"))).pipe(x(this.destroy$)).subscribe(o=>{o==="success"?(this.toast.showSuccess("Successfully added","Agenda item created."),t()):(this.toast.showDanger("Could not add item","The agenda item create failed. Please try again."),i(new Error("Agenda item create failed")))}),this.createAgendaItemFromModal(e)})}createAgendaItemFromModal(e){if(!this.activeTopicSessionPK)return;let t;if(e.patch?.preSession){let c=this.items[0];t=c?(c.sequence??0)-.5:0}else{let c=this.items[this.items.length-1];t=c?(c.sequence??0)+.5:this.items.length}let i=this.activeTopicSession?.sessionPK??null,o=Z($($({},nn(t)),e.patch),{sessionPK:i,topicSessionPK:this.activeTopicSessionPK});this.facade.createAgendaItem(o)}
1setColumnVisibility(e){this.visibleColumnKeys=e,this.persistColumnVisibility(e)}toggleChangelog(){this.changelogOpen=!this.changelogOpen}closeChangelog(){this.changelogOpen=!1}reloadChangelog(){this.facade.reloadChangelog()}refresh(){this.facade.refresh(),this.liveSegments.reload(),this.sessionService.load(!0).catch(e=>console.warn("[Runsheet] session refresh failed",e)),this.speakerService.load(!0).catch(e=>console.warn("[Runsheet] speaker refresh failed",e))}refreshAfterConflict(){this.facade.dismissConflict(),this.refresh()}retryFailedUpdates(){this.facade.retryFailedUpdates()}discardFailedUpdates(){this.facade.discardFailedUpdates()}onExportError(e){this.exportErrorTimeout!==null&&clearTimeout(this.exportErrorTimeout),this.exportError=e,this.exportErrorTimeout=setTimeout(()=>{this.exportError=null,this.exportErrorTimeout=null},5e3)}dismissExportError(){this.exportErrorTimeout!==null&&(clearTimeout(this.exportErrorTimeout),this.exportErrorTimeout=null),this.exportError=null}toggleFullscreen(){this.setFullscreen(!this.isFullscreen)}setFullscreen(e){this.isFullscreen=e,typeof document<"u"&&document.body.classList.toggle("runsheet-fullscreen-active",e),this.router.navigate([],{relativeTo:this.route,queryParams:{fullscreen:e?1:null},queryParamsHandling:"merge",replaceUrl:!0})}onEscape(){this.isFullscreen&&!this.soloMode&&this.toggleFullscreen()}openTopicSessionInNewTab(e){if(typeof globalThis.window>"u")return;let t=new URL(globalThis.window.location.href);t.searchParams.set("topicSession",e),t.searchParams.set("solo","1"),t.searchParams.set("fullscreen","1"),globalThis.window.open(t.toString(),"_blank","noopener")}onRowUpdate(e,t){if(this.pendingEditPK===e.itemPK&&"topic"in t.patch&&(this.pendingEditPK=null),bl(e,t.patch)){this.confirmCancelRunningItem(e,t);return}this.applyRowUpdate(e,t)}applyRowUpdate(e,t){this.facade.localAgendaItemPatch(e.itemPK,t.patch),this.debouncedWriter.queueUpdate(e.itemPK,e.topicSessionPK,t.patch,t.description),(this.isAiFlagPatch(t.patch)||"status"in t.patch||t.description===_n)&&this.debouncedWriter.commitNow(e.itemPK)}confirmCancelRunningItem(e,t){return P(this,null,function*(){let i=this.utilitiesService.confirm({header:"Cancel the running segment?",message:`"${e.topic||"untitled"}" is on stage now. Cancelling it ends the segment like Skip: its live questions close and it gets no AI summary or Key Moment.`,confirmMessage:"Cancel segment",confirmButtonClass:"btn-danger"});try{yield i.result}catch{return}let o={runtimeStatus:e.runtimeStatus,actualEndTime:e.actualEndTime??null};this.facade.localAgendaItemPatch(e.itemPK,{runtimeStatus:"killed",actualEndTime:Date.now()}),this.awaitCancelSave(e.itemPK).then(c=>{c||this.facade.localAgendaItemPatch(e.itemPK,o)}),this.applyRowUpdate(e,t)})}awaitCancelSave(e){return new Promise(t=>{Ft(this.actions$.pipe(ye(Eo),Be(({item:i,patch:o})=>i.itemPK===e&&o?.status===yn),Oe(1),Le(()=>!0)),this.actions$.pipe(ye(ko),Be(i=>i.itemPK===e&&i.retryable?.patch?.status===yn),Oe(1),Le(()=>!1))).pipe(x(this.destroy$)).subscribe(i=>t(i))})}isAiFlagPatch(e){let t=Object.keys(e);return t.length>0&&t.every(i=>yl.includes(i))}onItemStart(e,t){let i=$({},e),o=t?.mode==="planned"?t.epochMs:Date.now();this.facade.localAgendaItemPatch(e.itemPK,{runtimeStatus:"running",actualStartTime:o}),this.facade.startAgendaItem(e.itemPK,e.topicSessionPK,i)}onItemStop(e,t){let i=$({},e),o=t?.mode==="planned"?t.epochMs:Date.now();this.facade.localAgendaItemPatch(e.itemPK,{runtimeStatus:"done",actualEndTime:o}),this.facade.stopAgendaItem(e.itemPK,e.topicSessionPK,i)}onItemEditTimes(e,t){let i={actualStartTime:t.startEpochMs,actualEndTime:t.endEpochMs};this.facade.localAgendaItemPatch(e.itemPK,i),this.debouncedWriter.queueUpdate(e.itemPK,e.topicSessionPK,i,"Corrected recorded times")}onItemReset(e){return P(this,null,function*(){if(this.debouncedWriter.commitNow(e.itemPK),!(yield Mo(this.utilitiesService,e.topic)))return;let t=$({},this.items.find(i=>i.itemPK===e.itemPK)??e);this.facade.localAgendaItemPatch(e.itemPK,Ao),this.facade.resetAgendaItem(e.itemPK,e.topicSessionPK,t)})}onItemKill(e){let t=$({},e);this.facade.localAgendaItemPatch(e.itemPK,{runtimeStatus:"killed",actualEndTime:Date.now()}),this.facade.killAgendaItem(e.itemPK,e.topicSessionPK,t)}insertAbove(e){if(!this.activeTopicSessionPK)return;let t=this.items[e];if(!t)return;let i=(t.sequence??0)-.5,o=this.activeTopicSession?.sessionPK??null,c=Z($({},nn(i)),{sessionPK:o,topicSessionPK:this.activeTopicSessionPK});this.facade.createAgendaItem(c),this.actions$.pipe(ye(gi),Oe(1),x(this.destroy$)).subscribe(({item:u})=>{this.pendingEditPK=u.itemPK})}moveUp(e){e<=0||this.swap(e,e-1)}moveDown(e){e>=this.items.length-1||this.swap(e,e+1)}
1copyRowDetails(e){let t=ta(e,{startMinutes:this.rowStart(e),endMinutes:this.rowEnd(e),timezone:this.eventService?.data?.timezone,sessionDateEpochMs:this.sessionDateEpochMs,speakerNamesByPK:new Map(this.availableSpeakers.map(i=>[i.PK,i.name]))});this.clipboard.copy(t)?this.toast.showSuccess("Copied","Agenda item details copied to the clipboard."):this.toast.showDanger("Copy failed","Could not copy the agenda item details to the clipboard.")}remove(e){return P(this,null,function*(){let t=this.utilitiesService.confirm({header:"Delete agenda item",message:xl(e),confirmMessage:"Delete",confirmButtonClass:"btn-danger"});try{yield t.result}catch{return}this.facade.removeAgendaItem(e.itemPK,e.topicSessionPK,e.topic)})}onDrop(e){if(e.previousIndex===e.currentIndex||!this.activeTopicSessionPK)return;let t=this.items.map(c=>c.itemPK),i=[...this.items];et(i,e.previousIndex,e.currentIndex);let o=i.map((c,u)=>({itemPK:c.itemPK,sequence:u}));this.facade.reorderAgendaItems(this.activeTopicSessionPK,o,t)}rowStart(e){return this.startTimesByPK[e.itemPK]??0}rowEnd(e){return this.endTimesByPK[e.itemPK]??0}formatTime(e){return ho(e,this.agendaTimeFormat)}recomputeView(){if(!this.activeTopicSessionPK){this.items=[],this.header=null,this.startTimesByPK={},this.endTimesByPK={},this.switchSegmentItems=[];return}let e=this.itemsForTopicSession(this.activeTopicSessionPK);this.items=e,this.header=this.buildHeader(this.activeTopicSession,e),this.rebuildSwitchSegmentItems(),this.recomputeStartTimes()}itemsForTopicSession(e){return this.allItems.filter(t=>t.topicSessionPK===e).sort((t,i)=>(t.sequence??0)-(i.sequence??0))}buildHeader(e,t){if(!e)return null;let i=e.sessionPK?this.sessionsByPK.get(e.sessionPK)??null:null,o=i?.startTime??e.startTime??null,c=i?.endTime??e.endTime??null,u=i?gn({startTime:i.startTimeIso,endTime:i.endTimeIso,timezone:i.timezone},this.eventTz):null,C=u?.day??e.day??null,k=u&&ra(e,u,this.eventTz)?{runsheet:xi(e,this.dateformat,this.agendaTimeFormat),session:xi(u,this.dateformat,this.agendaTimeFormat)}:null,A=t.filter(H=>!H.preSession).reduce((H,Fe)=>H+(Fe.duration??0),0),K=new Map;for(let H of t)K.set(H.status,(K.get(H.status)??0)+1);let ae=ct.map(H=>({label:H.label,count:K.get(H.key)??0,tone:H.tone,icon:H.icon})),{overflowMinutes:U,overflowLabel:ne}=this.computeOverflow(o,c,A);return{topicSessionPK:e.PK,sessionTitle:e.sessionName||"Untitled topic session",linkedSession:i?{PK:i.PK,title:i.title,startTime:i.startTime,endTime:i.endTime}:null,effectiveStart:o,effectiveEnd:c,timeRangeLabel:this.formatTimeRange(o,c),itemCount:t.length,totalDurationLabel:bt(A),statusCounts:ae,overflowMinutes:U,overflowLabel:ne,schedule:u,scheduleLabel:[ri(C,this.dateformat),this.formatTimeRange(o,c)].filter(Boolean).join(" \xB7 "),scheduleEditable:!!i,runsheetCopyStale:k}}openSessionTimeModal(){let e=this.activeTopicSession,t=this.header;if(!e?.sessionPK||!t?.linkedSession)return;let o=this.sessionsByPK.get(e.sessionPK)?.isRehearsal?null:this.currentEventDayBounds(),c=t.schedule??e,u=this.modal.open(Ai,{backdrop:"static",windowClass:"cnp-dialog"}),C=u.componentInstance;C.sessionTitle=t.linkedSession.title,C.day=c.day??"",C.startTime=c.startTime??"",C.endTime=c.endTime??"",C.minDay=o?.min??null,C.maxDay=o?.max??null,C.dateformat=this.dateformat,C.submitHandler=k=>this.saveSessionTime(e,k),u.result.catch(()=>{})}saveSessionTime(e,t){return P(this,null,function*(){let i=e.sessionPK;if(!i)throw new Error("This topic session is not linked to a session.");let o=yield this.sessionService.loadSession(i);if(!o?.success||!o.data)throw new Error(o?.message||"Could not load the session record.");let c=o.data,u=c.timezone||this.eventTz;if(!u)throw new Error("The event has no timezone to schedule against.");let C=yield this.sessionService.update(sa(c,t,u));if(!C?.success)throw new Error(C?.message||"Could not update the session.");this.toast.showSuccess("Session time saved",`${c.title||e.sessionName} now runs ${xi(t,this.dateformat,this.agendaTimeFormat)}.`);try{yield this.sessionService.load(!0)}catch(k){console.warn("[Runsheet] session refresh failed",k)}this.topicSessionsFacade.update(e.PK,{day:t.day,startTime:t.startTime,endTime:t.endTime})})}resyncRunsheetSchedule(){let e=this.activeTopicSession,t=e?.sessionPK?this.sessionsByPK.get(e.sessionPK):null,i=t?gn({startTime:t.startTimeIso,endTime:t.endTimeIso,timezone:t.timezone},this.eventTz):null;!e||!i||(this.awaitTopicSessionSave(e.PK).then(o=>{o?this.toast.showSuccess("Runsheet re-synced","The runsheet now carries the session record's schedule."):this.toast.showDanger("Re-sync failed","The runsheet copy could not be updated. Try again.")}
1),this.topicSessionsFacade.update(e.PK,i))}awaitTopicSessionSave(e){return new Promise(t=>{Ft(this.actions$.pipe(ye(Lo),Be(({item:i})=>i.PK===e),Oe(1),Le(()=>!0)),this.actions$.pipe(ye(Do),Be(i=>i.topicSessionPK===e),Oe(1),Le(()=>!1)),this.actions$.pipe(ye(Ro),Be(({serverItem:i})=>i.PK===e),Oe(1),Le(()=>!1))).pipe(x(this.destroy$)).subscribe(i=>t(i))})}currentEventDayBounds(){let e=this.eventService.data;return la(e?.startDate,e?.endDate,this.eventTz)}computeOverflow(e,t,i){let o=Ke(e),c=Ke(t);if(o===null||c===null)return{overflowMinutes:0,overflowLabel:""};let u=c>=o?c-o:c+1440-o,C=i-u;return C<=0?{overflowMinutes:0,overflowLabel:""}:{overflowMinutes:C,overflowLabel:`+${bt(C)} over`}}formatTimeRange(e,t){let i=dt(e,this.agendaTimeFormat),o=dt(t,this.agendaTimeFormat);return i&&o?`${i} \u2013 ${o}`:i?`from ${i}`:""}indexSessions(e){let t=this.eventService?.data?.timezone,i=new Map;for(let o of e||[]){let c=o;if(!c?.PK)continue;let u=c.timezone||t;i.set(c.PK,{PK:c.PK,title:c.title||"Untitled session",startTime:St(c.startTime,u)??c.startTime??null,endTime:St(c.endTime,u)??c.endTime??null,startTimeIso:c.startTime??null,endTimeIso:c.endTime??null,timezone:c.timezone??null,isRehearsal:c.isRehearsal===!0})}return i}recomputeStartTimes(){let e=this.header?.effectiveStart||Cl,t=si(this.items,e),i={},o={};for(let c of t)i[c.itemPK]=c.startMinutes,o[c.itemPK]=c.endMinutes;this.startTimesByPK=i,this.endTimesByPK=o,this.sessionDateEpochMs=this.computeSessionDateEpochMs()}computeSessionDateEpochMs(){let e=this.eventService?.data?.timezone,t=this.activeTopicSession,i=t?.sessionPK?this.sessionsByPK.get(t.sessionPK):null;return rn(i?.startTimeIso??null,t?.startTime??null,e??null)}sessionDateEpochMsFor(e){let t=this.eventService?.data?.timezone,i=e?.sessionPK?this.sessionsByPK.get(e.sessionPK):null;return rn(i?.startTimeIso??null,e?.startTime??null,t??null)}storageKeyForEvent(){return this.eventKey?`${vl}${this.eventKey}`:null}loadStoredColumnVisibility(){let e=this.storageKeyForEvent();if(e)try{let t=localStorage.getItem(e);if(!t)return;let i=JSON.parse(t);Array.isArray(i)&&i.every(o=>typeof o=="string")&&(this.visibleColumnKeys=i)}catch(t){console.warn("[Runsheet] failed to read stored column visibility",t)}}persistColumnVisibility(e){let t=this.storageKeyForEvent();if(t)try{localStorage.setItem(t,JSON.stringify(e))}catch(i){console.warn("[Runsheet] failed to persist column visibility",i)}}swap(e,t){if(!this.activeTopicSessionPK)return;let i=this.items.map(u=>u.itemPK),o=[...this.items];[o[e],o[t]]=[o[t],o[e]];let c=o.map((u,C)=>({itemPK:u.itemPK,sequence:C}));this.facade.reorderAgendaItems(this.activeTopicSessionPK,c,i)}normaliseSequencesIfNeeded(){if(!this.activeTopicSessionPK||!this.items.length||!this.items.some((o,c)=>o.sequence!==c))return;let t=this.items.map(o=>o.itemPK),i=this.items.map((o,c)=>({itemPK:o.itemPK,sequence:c}));this.facade.reorderAgendaItems(this.activeTopicSessionPK,i,t)}isExpanded(e){return this.expandedItemPKs.has(e.itemPK)}toggleRowDetail(e){this.expandedItemPKs.has(e.itemPK)?this.expandedItemPKs.delete(e.itemPK):this.expandedItemPKs.add(e.itemPK)}onActivateTopicSession(e){this.topicSessionsFacade.setActive(e)}activeTopicSessionStorageKey(){return this.eventKey?`${Sl}${this.eventKey}`:null}replayStoredActiveTopicSession(){if(this.restoredActiveTopicSession||!this.eventKey||!this.topicSessions.length)return;let e=this.route.snapshot.queryParamMap.get("topicSession");if(e&&this.topicSessions.some(i=>i.PK===e)){this.topicSessionsFacade.setActive(e),this.restoredActiveTopicSession=!0;return}let t=this.activeTopicSessionStorageKey();if(t)try{let i=localStorage.getItem(t);if(i&&this.topicSessions.some(c=>c.PK===i)){this.topicSessionsFacade.setActive(i),this.restoredActiveTopicSession=!0;return}let o=this.topicSessions[0];o&&this.topicSessionsFacade.setActive(o.PK),this.restoredActiveTopicSession=!0}catch(i){console.warn("[Runsheet] failed to read stored active topic-session",i)}}initLiveTracking(e){let t=e.map(i=>i.sessionPK).filter(i=>!!i);this.transcriptionLive.init(t);for(let i of t)this.subscribedLivePKs.has(i)||(this.subscribedLivePKs.add(i),this.transcriptionLive.isLive$(i).pipe(x(this.destroy$)).subscribe(o=>{this.liveBySessionPK=new Map(this.liveBySessionPK).set(i,o)}))}onSwitchSegment(e){let t=this.items.find(i=>i.itemPK===e);!t||t.runtimeStatus||this.onItemStart(t)}initLiveSegmentTracking(e){let t=e.filter(i=>!!i.sessionPK).map(i=>({topicSessionPK:i.PK,sessionPK:i.sessionPK}));this.liveSegments.init(t);for(let{sessionPK:i}of t)this.subscribedSegmentPKs.has(i)||(this.subscribedSegmentPKs.add(i),this.liveSegments.state$(i).pipe(x(this.destroy$)).subscribe(o=>{this.liveSegmentBySessionPK=new Map(this.liveSegmentBySessionPK).set(i,o),this.rebuildSwitchSegmentItems()}))}rebuildSwitchSegmentItems(){let e=this.activeDisplay?.liveSegment?.itemPK??null;this.switchSegmentItems=this.items.map((t,i)=>({id:t.itemPK,label:`${i+1}. ${t.topic||xa}${El(t,e)}`,disabled:t.itemPK===e||!!t.runtimeStatus}))}persistActiveTopicSession(e){let t=this.activeTopicSessionStorageKey();if(t)try{e?localStorage.setItem(t,e):localStorage.removeItem(t)}catch(i){console.warn("[Runsheet] failed to persist active topic-se
1ssion",i)}}static{this.\u0275fac=function(t){return new(t||n)}}static{this.\u0275cmp=M({type:n,selectors:[["app-runsheet-agenda-grid"]],hostBindings:function(t,i){t&1&&h("keydown.escape",function(){return i.onEscape()},kn)},decls:47,vars:36,consts:[[1,"agenda-grid"],["heading","Agenda","description","Per-topic-session running order \u2014 author the per-minute breakdown here.",3,"level"],[1,"agenda-grid-card"],[1,"agenda-grid-solo-header"],[1,"agenda-grid-summary"],[1,"agenda-grid-counts"],[3,"tone","icon"],["tone","neutral","icon","calendar"],["variant","ghost","size","sm","ariaLabel","Edit this session's day, start and end time"],["text","Agenda items run past the scheduled session window (pre-session items excluded)","placement","bottom"],["text","Live sync is unavailable \u2014 changes from other producers won't appear automatically. Use Refresh to pull the latest.","placement","bottom"],[1,"runsheet-actions","agenda-grid-toolbar"],["variant","secondary","size","sm",3,"ariaLabel"],["variant","secondary","size","sm",3,"click"],["name","refresh"],["cnpButton","","variant","secondary","size","sm","ariaLabel","Open transcript publisher for this session","target","_blank","rel","noopener",3,"routerLink"],["cnpButton","","variant","secondary","size","sm","target","_blank","rel","noopener","ariaLabel","Open the live Q&A display for this session in a new tab",3,"href"],["name","history"],["tone","neutral","label","changelog entries",3,"value"],[3,"visibilityChange","visibleColumnKeys"],[3,"exportError","groups","visibleColumnKeys","eventName"],["variant","secondary","size","sm","loadingLabel","Exporting briefing questions",3,"click","loading","ariaLabel"],["name","help"],["variant","secondary","size","sm","loadingLabel","Preparing content download",3,"click","disabled","disabledReason","loading"],["name","file-download"],["variant","secondary","size","sm","loadingLabel","Generating briefing",3,"click","disabled","disabledReason","loading"],["name","article"],["size","sm",3,"click","disabled","disabledReason"],["name","create"],["tone","warning",3,"dismissible"],[3,"refresh","serverItem"],[3,"failedUpdates"],[1,"agenda-grid-empty"],[1,"agenda-grid-table-wrap"],[3,"closed","retry","open","entries","error"],["cnpPageHeaderRail","",3,"activate","openInNewTab","topicSessions","activePK","liveBySessionPK"],[1,"agenda-grid-solo-title"],[1,"agenda-grid-solo-time"],["variant","ghost","size","sm","ariaLabel","Edit this session's day, start and end time",3,"click"],["name","edit"],["placement","bottom",3,"text"],["tone","danger","icon","warning"],["variant","ghost","size","sm","loadingLabel","Re-syncing the runsheet copy","ariaLabel","Re-sync the runsheet's copy of the schedule from the session record",3,"click","loading"],["icon","screen",3,"tone"],["size","sm","ariaLabel","Start another segment \u2014 the display follows the live segment",3,"items"],["size","sm","ariaLabel","Start another segment \u2014 the display follows the live segment",3,"select","items"],["name","forward"],["variant","secondary","size","sm",3,"click","ariaLabel"],["name","fullscreen"],["name","mic"],["name","open-external"],["variant","secondary","size","sm","ariaLabel","Download briefing PDF",3,"click"],["name","file-document"],["variant","secondary","size","sm","ariaLabel","Download briefing DOCX",3,"click"],["tone","warning",3,"dismissed","dismissible"],[3,"retry","discard","failedUpdates"],["icon","calendar","heading","No topic sessions yet","description","Turn on the runsheet toggle on a Canapii session to create one.",3,"headingLevel"],["icon","list-task","heading","No items in this topic session yet","description","Add the first agenda item to start the running order.",3,"headingLevel"],["cnpEmptyStatePrimary","","size","sm",3,"click","disabled"],[1,"agenda-grid-table"],[1,"agenda-grid-handle-col"],["cnpVisuallyHidden",""],[3,"agenda-grid-th-center"],[1,"agenda-grid-actions-col"],["cdkDropList","",1,"agenda-grid-items",3,"cdkDropListDropped","id","cdkDropListData"],[3,"tone","dot"],["app-runsheet-agenda-row","","cdkDrag","","cdkDragPreviewClass","runsheet-drag-preview",3,"itemUpdate","itemStart","itemStop","itemSkip","itemEditTimes","itemReset","insertAbove","moveUp","moveDown","copyDetail
1s","remove","toggleDetail","cdkDragData","item","startMinutes","endMinutes","contentSummary","visibleColumnKeys","availableSpeakers","autoEditTopic","expanded","sessionDateEpochMs","eventTz","agendaTimeFormat","canMoveUp","canMoveDown"],[1,"agenda-grid-detail-row"],[3,"itemUpdate","contentChanged","exportQuestions","item","summaries","notifications","eventTz","agendaTimeFormat","dateformat","sessionPK"]],template:function(t,i){if(t&1&&(r(0,"section",0),v(1,Hs,2,4,"cnp-page-header",1),r(2,"div",2),v(3,js,4,2,"header",3),r(4,"header",4)(5,"div",5),T(6,Ys,2,4,"cnp-status-pill",6,Gs),v(8,Zs,2,1,"cnp-status-pill",7),v(9,Xs,3,0,"cnp-button",8),v(10,Js,6,2),v(11,el,3,1,"cnp-tooltip",9),v(12,il,4,4),v(13,nl,3,0,"cnp-tooltip",10),s(),r(14,"div",11),v(15,ol,3,2,"cnp-button",12),r(16,"cnp-button",13),h("click",function(){return i.refresh()}),_(17,"cnp-icon",14),p(18," Refresh "),s(),v(19,al,3,4,"a",15),v(20,rl,3,1,"a",16),r(21,"cnp-button",13),h("click",function(){return i.toggleChangelog()}),_(22,"cnp-icon",17),p(23," Changelog "),v(24,sl,1,1,"cnp-count-badge",18),s(),r(25,"app-runsheet-column-toggle",19),h("visibilityChange",function(c){return i.setColumnVisibility(c)}),s(),r(26,"app-runsheet-export-menu",20),h("exportError",function(c){return i.onExportError(c)}),s(),r(27,"cnp-button",21),h("click",function(){return i.exportQuestions()}),_(28,"cnp-icon",22),p(29," Questions "),s(),r(30,"cnp-button",23),h("click",function(){return i.downloadAllContent()}),_(31,"cnp-icon",24),p(32," Download all content "),s(),r(33,"cnp-button",25),h("click",function(){return i.generatePlenaryBrief()}),_(34,"cnp-icon",26),p(35," Generate briefing "),s(),v(36,ll,6,0),r(37,"cnp-button",27),h("click",function(){return i.openAddItemModal()}),_(38,"cnp-icon",28),p(39," Add item "),s()()(),v(40,cl,2,2,"cnp-callout",29),r(41,"app-runsheet-conflict-banner",30),h("refresh",function(){return i.refreshAfterConflict()}),s(),v(42,dl,1,1,"app-runsheet-failed-save-banner",31),v(43,pl,2,1,"div",32)(44,ml,4,2,"div",32)(45,_l,15,2,"div",33),r(46,"app-runsheet-changelog-panel",34),h("closed",function(){return i.closeChangelog()})("retry",function(){return i.reloadChangelog()}),s()()()),t&2){let o,c;vt("agenda-grid-fullscreen",i.isFullscreen),a(),S(i.soloMode?-1:1),a(2),S(i.soloMode?3:-1),a(3),E(i.statusCounts),a(2),S(!i.soloMode&&(i.header!=null&&i.header.scheduleLabel)?8:-1),a(),S(i.header!=null&&i.header.scheduleEditable?9:-1),a(),S((o=i.header==null?null:i.header.runsheetCopyStale)?10:-1,o),a(),S(i.header!=null&&i.header.overflowMinutes?11:-1),a(),S((c=i.activeDisplay)?12:-1,c),a(),S(i.liveSyncDown?13:-1),a(2),S(i.soloMode?-1:15),a(4),S(i.activeTopicSession!=null&&i.activeTopicSession.sessionPK?19:-1),a(),S(i.liveDisplayUrl?20:-1),a(4),S(i.changelog.length?24:-1),a(),d("visibleColumnKeys",i.visibleColumnKeys),a(),d("groups",i.exportGroups)("visibleColumnKeys",i.visibleColumnKeys)("eventName",i.eventName),a(),d("loading",i.isExportingQuestions)("ariaLabel",i.activeTopicSessionPK?"Export this session's briefing questions in running order (PDF)":"Export briefing questions for every session (PDF)"),a(3),d("disabled",!i.activeTopicSessionPK)("disabledReason",i.activeTopicSessionPK?"":"Create a topic session first")("loading",i.isDownloadingContent),a(3),d("disabled",!i.activeTopicSessionPK)("disabledReason",i.activeTopicSessionPK?"":"Create a topic session first")("loading",i.briefGenerating),a(3),S(i.briefReady?36:-1),a(),d("disabled",!i.activeTopicSessionPK)("disabledReason",i.activeTopicSessionPK?"":"Create a topic session first"),a(3),S(i.exportError?40:-1),a(),d("serverItem",i.conflictItem),a(),S(i.failedUpdates.length?42:-1),a(),S(i.hasAnyTopicSession?i.hasItems?45:44:43),a(3),d("open",i.changelogOpen)("entries",i.changelog)("error",i.changelogError)}},dependencies:[le,zt,it,tt,L,Yt,Y,Wn,Ae,ve,V,Pe,Zt,Qn,vi,wi,Ti,Ei,ki,Pi,Uo,Mi],styles:['@charset "UTF-8";.runsheet-page[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:var(--cnp-space-5)}.runsheet-actions[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:center;gap:var(--cnp-space-3)}.agenda-grid[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:var(--cnp-space-4);min-width:0}.agenda-grid-fullscreen[_ngcontent-%COMP%]{position:fixed;inset:0;z-index:var(--cnp-z-modal-backdrop);padding:var(--cnp-space-page-gutter-y) var(--cnp-space-page-gutter-x);overflow:auto;background:var(--cnp-color-bg-body)}.agenda-grid-solo-header[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--cnp-space-3)}.agenda-grid-solo-title[_ngcontent-%COMP%]{margin:0;font-size:var(--cnp-font-size-section);font-weight:var(--cnp-font-weight-bold);color:var(--cnp-color-text-heading)}
1.agenda-grid-solo-time[_ngcontent-%COMP%]{font-size:var(--cnp-font-size-body);color:var(--cnp-color-text-muted)}.agenda-grid-card[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:var(--cnp-space-3);min-width:0;padding-block-start:var(--cnp-space-4);padding-block-end:0;background:var(--cnp-color-bg-card);border-radius:var(--cnp-radius-container);box-shadow:var(--cnp-shadow-low)}.agenda-grid-card[_ngcontent-%COMP%] > cnp-callout[_ngcontent-%COMP%], .agenda-grid-card[_ngcontent-%COMP%] > app-runsheet-conflict-banner[_ngcontent-%COMP%], .agenda-grid-card[_ngcontent-%COMP%] > app-runsheet-failed-save-banner[_ngcontent-%COMP%]{margin-inline:var(--cnp-space-4)}.agenda-grid-summary[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--cnp-space-3);padding-inline:var(--cnp-space-4)}.agenda-grid-empty[_ngcontent-%COMP%]{padding:var(--cnp-space-6) var(--cnp-space-4)}.agenda-grid-counts[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:center;gap:var(--cnp-space-2)}.agenda-grid-table-wrap[_ngcontent-%COMP%]{max-width:100%;overflow-x:auto;background:var(--cnp-color-bg-card);border-block-start:1px solid var(--cnp-color-rule);border-radius:0 0 var(--cnp-radius-container) var(--cnp-radius-container)}.agenda-grid-table[_ngcontent-%COMP%]{width:max-content;min-width:100%;border-collapse:collapse}.agenda-grid-table[_ngcontent-%COMP%] thead[_ngcontent-%COMP%] th[_ngcontent-%COMP%]{position:sticky;top:0;z-index:var(--cnp-z-sticky);padding:var(--cnp-space-2) var(--cnp-space-3);font-size:var(--cnp-font-size-label);font-weight:var(--cnp-font-weight-semibold);color:var(--cnp-color-text-secondary);text-align:start;white-space:nowrap;background:var(--cnp-color-bg-surface);box-shadow:inset 0 -1px 0 var(--cnp-color-rule)}.agenda-grid-table[_ngcontent-%COMP%] thead[_ngcontent-%COMP%] th.agenda-grid-th-center[_ngcontent-%COMP%]{text-align:center}.agenda-grid-table[_ngcontent-%COMP%] thead[_ngcontent-%COMP%] th[_ngcontent-%COMP%] cnp-status-pill[_ngcontent-%COMP%]{margin-inline-start:var(--cnp-space-2)}.agenda-grid-handle-col[_ngcontent-%COMP%]{width:var(--cnp-space-6)}.agenda-grid-actions-col[_ngcontent-%COMP%]{width:11rem}.agenda-grid-detail-row[_ngcontent-%COMP%] > td[_ngcontent-%COMP%]{padding:0;background:var(--cnp-color-bg-surface);border-block-end:1px solid var(--cnp-color-rule)}.cdk-drag-placeholder[_ngcontent-%COMP%]{opacity:.3}']})}}return n})();var Fi="agenda",kl=[{id:Fi,label:"Agenda"},{id:"speakers",label:"Speakers"},{id:"speaker-prep",label:"Speaker prep"},{id:"rehearsals",label:"Rehearsals"},{id:"briefing-calls",label:"Briefing calls"},{id:"content",label:"Content"},{id:"briefing-admin",label:"Briefing template"}],Ki=(()=>{class n{constructor(){this.tabs=kl,this.activeTabId=Fi,this.router=b($t),this.route=b(Bt),this.destroy$=new G,this.router.events.pipe(Be(e=>e instanceof Kn),En(null),Le(()=>this.tabIdFromUrl()),x(this.destroy$)).subscribe(e=>this.activeTabId=e)}ngOnDestroy(){this.destroy$.next(),this.destroy$.complete()}onTabChange(e){if(e===this.activeTabId)return;let t=e===Fi?["."]:[e];this.router.navigate(t,{relativeTo:this.route})}tabIdFromUrl(){let t=this.route.snapshot.firstChild?.url[0]?.path??"";return this.tabs.some(i=>i.id===t)?t:Fi}static{this.\u0275fac=function(t){return new(t||n)}}static{this.\u0275cmp=M({type:n,selectors:[["app-runsheet-shell"]],decls:5,vars:2,consts:[[1,"runsheet-shell"],[1,"runsheet-shell-body"],["heading","Runsheet","description","Production running order for this event."],["cnpPageHeaderRail","","ariaLabel","Runsheet sections","idPrefix","runsheet",3,"activeIdChange","tabs","activeId"]],template:function(t,i){t&1&&(r(0,"div",0)(1,"div",1)(2,"cnp-page-header",2)(3,"cnp-tabs",3),h("activeIdChange",function(c){return i.onTabChange(c)}),s()(),_(4,"router-outlet"),s()()),t&2&&(a(3),d("tabs",i.tabs)("activeId",i.activeTabId))},dependencies:[le,nt,Ln],styles:[".runsheet-shell[_ngcontent-%COMP%]{min-height:100%;background:var(--cnp-color-bg-body);color:var(--cnp-color-text-body)}.runsheet-shell-body[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:var(--cnp-space-4);min-width:0;padding:var(--cnp-space-page-gutter-y) var(--cnp-space-page-gutter-x)}"]})}}return n})();function Pl(n,l){if(n&1){let e=w();r(0,"cnp-callout",2),h("dismissed",function(){g(e);let i=m();return f(i.clearError())}),p(1),r(2,"cnp-button",3),h("click",function(){g(e);let i=m();return f(i.retry())}),p(3,"Retry"),s()()}
1n&2&&(d("dismissible",!0),a(),I(" ",l," "))}function Al(n,l){n&1&&(r(0,"cnp-page-header",4)(1,"div",5),_(2,"cnp-skeleton",6),s()(),r(3,"cnp-card"),_(4,"cnp-skeleton",7),s()),n&2&&(d("level",2),a(2),d("rows",1),a(2),d("rows",6))}function Ml(n,l){n&1&&_(0,"app-runsheet-agenda-grid")}var Li=(()=>{class n{constructor(){this.facade=b(Ie),this.destroy$=new G,this.isLoading$=this.facade.isLoading$,this.loaded$=this.facade.loaded$,this.error$=this.facade.error$}ngOnInit(){this.facade.init()}ngOnDestroy(){this.destroy$.next(),this.destroy$.complete()}clearError(){this.facade.clearError()}retry(){this.facade.refresh()}static{this.\u0275fac=function(t){return new(t||n)}}static{this.\u0275cmp=M({type:n,selectors:[["app-runsheet"]],decls:6,vars:6,consts:[[1,"runsheet-page"],["tone","danger",3,"dismissible"],["tone","danger",3,"dismissed","dismissible"],["cnpCalloutAction","","variant","secondary","size","sm",3,"click"],["heading","Agenda","description","Per-topic-session running order \u2014 author the per-minute breakdown here.",3,"level"],["cnpPageHeaderRail","",1,"runsheet-loading-rail"],["preset","text","label","Loading topic sessions",3,"rows"],["preset","table-row","label","Loading runsheet",3,"rows"]],template:function(t,i){if(t&1&&(r(0,"div",0),v(1,Pl,4,2,"cnp-callout",1),Te(2,"async"),v(3,Al,5,3),Te(4,"async"),Pn(5,Ml,1,0,"app-runsheet-agenda-grid"),s()),t&2){let o;a(),S((o=Hi(2,2,i.error$))?1:-1,o),a(2),S(Hi(4,4,i.isLoading$)?3:5)}},dependencies:[le,Me,Ue,Y,L,Ii,In],styles:[".runsheet-page[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:var(--cnp-space-5)}.runsheet-actions[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:center;gap:var(--cnp-space-3)}.runsheet-loading-rail[_ngcontent-%COMP%]{padding:var(--cnp-space-2) var(--cnp-space-4) var(--cnp-space-3)}"]})}}return n})();var wa=(()=>{class n{constructor(){this.http=b(De)}view(){return this.http.get(`${O.api}/briefing-templates`)}upsert(e){return this.http.put(`${O.api}/briefing-templates`,{sections:e})}remove(){return this.http.delete(`${O.api}/briefing-templates`)}branding(){return this.http.get(`${O.api}/briefing-templates/branding`)}updateBranding(e){return this.http.put(`${O.api}/briefing-templates/branding`,e)}static{this.\u0275fac=function(t){return new(t||n)}}static{this.\u0275prov=X({token:n,factory:n.\u0275fac,providedIn:"root"})}}return n})();var Il=()=>({minHeight:"120px"}),Fl=(n,l)=>l.id,Kl=(n,l)=>l.value;function Ll(n,l){if(n&1){let e=w();r(0,"cnp-callout",4),h("dismissed",function(){g(e);let i=m();return f(i.error=null)}),p(1),s()}if(n&2){let e=m();d("dismissible",!0),a(),y(e.error)}}function Dl(n,l){n&1&&(r(0,"p",6),_(1,"cnp-spinner",8),p(2," Loading\u2026 "),s())}function Rl(n,l){if(n&1){let e=w();r(0,"cnp-callout",7),p(1," Nothing has been changed. Try again, or reload the page. "),r(2,"cnp-button",9),h("click",function(){g(e);let i=m(2);return f(i.loadTemplate())}),p(3,"Retry"),s()()}}function Nl(n,l){n&1&&_(0,"cnp-empty-state",14),n&2&&d("headingLevel",4)}function Ol(n,l){if(n&1&&(r(0,"p",32),p(1," Section title is required. "),s()),n&2){let e=m().$implicit,t=m(4);d("id",t.titleErrorId(e))}}function Vl(n,l){if(n&1){let e=w();r(0,"li",20)(1,"div",21)(2,"button",22),_(3,"cnp-icon",23),s(),r(4,"span",24)(5,"cnp-button",25),h("click",function(){let i=g(e).$index,o=m(4);return f(o.moveSection(i,-1))}),_(6,"cnp-icon",26),s(),r(7,"cnp-button",27),h("click",function(){let i=g(e).$index,o=m(4);return f(o.moveSection(i,1))}),_(8,"cnp-icon",28),s()(),r(9,"input",29),N("ngModelChange",function(i){let o=g(e).$implicit;return R(o.title,i)||(o.title=i),f(i)}),s(),r(10,"cnp-button",30),h("click",function(){let i=g(e).$implicit,o=m(4);return f(o.removeSection(i.id))}),_(11,"cnp-icon",31),s()(),v(12,Ol,2,1,"p",32),r(13,"quill-editor",33),N("ngModelChange",function(i){let o=g(e).$implicit;return R(o.defaultContent,i)||(o.defaultContent=i),f(i)}),s()()}if(n&2){let e=l.$implicit,t=l.$index,i=m(4);a(5),d("iconOnly",!0)("disabled",t===0),a(2),d("iconOnly",!0)("disabled",t===i.sectionDrafts.length-1),a(2),D("ngModel",e.title),oe("aria-invalid",i.saveAttempted&&i.isSectionTitleBlank(e)?"true":null)("aria-describedby",i.saveAttempted&&i.isSectionTitleBlank(e)?i.titleErrorId(e):null),a(),d("iconOnly",!0),a(2),S(i.saveAttempted&&i.isSectionTitleBlank(e)?12:-1),a(),d("modules",i.quillModules),D("ngModel",e.defaultContent),d("styles",An(12,Il))}}function Bl(n,l){if(n&1){let e=w();r(0,"ul",19),h("cdkDropListDropped",function(i){g(e);let o=m(3);return f(o.onSectionDrop(i))}),T(1,Vl,14,13,"li",20,Fl),s()}if(n&2){let e=m(3);
1a(),E(e.sectionDrafts)}}function $l(n,l){if(n&1){let e=w();r(0,"cnp-button",34),h("click",function(){g(e);let i=m(3);return f(i.removeTemplate())}),_(1,"cnp-icon",35),p(2," Delete template "),s()}if(n&2){let e=m(3);d("disabled",e.isSavingTemplate)}}function zl(n,l){if(n&1){let e=w();r(0,"div",10)(1,"h3",11),p(2,"Sections"),s(),r(3,"cnp-button",12),h("click",function(){g(e);let i=m(2);return f(i.addSection())}),_(4,"cnp-icon",13),p(5," Add section "),s()(),r(6,"p",5),p(7," Each section becomes an \u201CEvent information\u201D block in the speaker brief and in session briefings, in the order shown here \u2014 drag the handle or use the arrows to reorder. The title is the block's heading; the content below it is what speakers read. "),s(),v(8,Nl,1,1,"cnp-empty-state",14)(9,Bl,3,0,"ul",15),r(10,"footer",16),v(11,$l,3,1,"cnp-button",17),r(12,"cnp-button",18),h("click",function(){g(e);let i=m(2);return f(i.saveTemplate())}),p(13," Save template "),s()()}if(n&2){let e=m(2);a(8),S(e.sectionDrafts.length?9:8),a(3),S(e.template?11:-1),a(),d("loading",e.isSavingTemplate)}}function Ul(n,l){if(n&1&&(r(0,"cnp-card")(1,"p",5),p(2," One briefing template for this event \u2014 its sections appear in every briefing generated for this runsheet, whatever the session type. Use it for the standing content every speaker needs: about the event, dress code, arrival and venue logistics, who to contact on the day, what to expect on stage. "),s(),v(3,Dl,3,0,"p",6)(4,Rl,4,0,"cnp-callout",7)(5,zl,14,3),s()),n&2){let e=m();a(3),S(e.isLoadingTemplate?3:e.templateLoadFailed?4:5)}}function Gl(n,l){n&1&&(r(0,"p",6),_(1,"cnp-spinner",36),p(2," Loading\u2026 "),s())}function Wl(n,l){if(n&1){let e=w();r(0,"div",51),_(1,"img",58),r(2,"cnp-button",59),h("click",function(){g(e);let i=m(3);return f(i.clearImage("headerBannerS3Key"))}),_(3,"cnp-icon",60),s()()}if(n&2){let e=m(3);a(),d("src",e.brandingDraft.headerBannerS3Key,we),a(),d("iconOnly",!0)}}function ql(n,l){if(n&1){let e=w();r(0,"div",51),_(1,"img",61),r(2,"cnp-button",62),h("click",function(){g(e);let i=m(3);return f(i.clearImage("footerLogoS3Key"))}),_(3,"cnp-icon",60),s()()}if(n&2){let e=m(3);a(),d("src",e.brandingDraft.footerLogoS3Key,we),a(),d("iconOnly",!0)}}function Hl(n,l){if(n&1&&(r(0,"option",56),p(1),s()),n&2){let e=l.$implicit;d("ngValue",e.value),a(),y(e.label)}}function Ql(n,l){if(n&1){let e=w();r(0,"div",10)(1,"div")(2,"h3",11),p(3,"Briefing document branding"),s(),r(4,"p",5),p(5," Applied to every generated briefing for this event. Defaults are pre-filled from the event's existing branding \u2014 override here if the briefing pack needs a different look. "),s()(),r(6,"cnp-button",37),h("click",function(){g(e);let i=m(2);return f(i.resetBrandingToEventDefaults())}),_(7,"cnp-icon",38),p(8," Reset to event defaults "),s()(),r(9,"div",39)(10,"div",40)(11,"cnp-field",41)(12,"input",42),N("ngModelChange",function(i){g(e);let o=m(2);return R(o.brandingDraft.primaryColor,i)||(o.brandingDraft.primaryColor=i),f(i)}),s(),r(13,"input",43),N("ngModelChange",function(i){g(e);let o=m(2);return R(o.brandingDraft.primaryColor,i)||(o.brandingDraft.primaryColor=i),f(i)}),s()(),r(14,"cnp-field",44)(15,"input",45),N("ngModelChange",function(i){g(e);let o=m(2);return R(o.brandingDraft.secondaryColor,i)||(o.brandingDraft.secondaryColor=i),f(i)}),s(),r(16,"input",46),N("ngModelChange",function(i){g(e);let o=m(2);return R(o.brandingDraft.secondaryColor,i)||(o.brandingDraft.secondaryColor=i),f(i)}),s()()(),r(17,"div",47)(18,"h4",48),p(19,"Header banner"),s(),r(20,"p",5),p(21," Full-width image across the top of every page. Recommended: 750 \xD7 120 px, PNG or JPG, max 2 MB. Defaults to the event banner. "),s(),r(22,"div",49)(23,"cnp-button",37),h("click",function(){g(e);let i=m(2);return f(i.pickImage("headerBannerS3Key"))}),_(24,"cnp-icon",50),p(25),s(),v(26,Wl,4,2,"div",51),s()(),r(27,"div",47)(28,"h4",48),p(29,"Footer banner (optional)"),s(),r(30,"p",5),p(31," Full-width image across the bottom of every page. Recommended: 750 \xD7 80 px, PNG or JPG, max 2 MB. "),s(),r(32,"div",49)(33,"cnp-button",37),h("click",function(){g(e);let i=m(2);return f(i.pickImage("footerLogoS3Key"))}),_(34,"cnp-icon",50),p(35),s(),v(36,ql,4,2,"div",51),s()(),r(37,"cnp-field",52)(38,"input",53),N("ngModelChange",function(i){g(e);let o=m(2);return R(o.brandingDraft.footerText,i)||(o.brandingDraft.footerText=i),f(i)}),s()(),r(39,"cnp-field",54)(40,"select",55),N("ngModelChange",function(i){g(e);let o=m(2);return R(o.brandingDraft.fontFamily,i)||(o.brandingDraft.fontFamily=i),f(i)}),r(41,"option",56),p(42,"Default"),s(),T(43,Hl,2,2,"option",56,Kl),s()()(),r(45,"footer",16)(46,"cnp-button",57),h("click",function(){g(e);let i=m(2);return f(i.saveBranding())}),p(47," Save branding "),s()()}if(n&2){let e=m(2);a(12),D("ngModel",e.brandingDraft.primaryColor),a(),D("ngModel",e.brandingDraft.primaryColor),a(2),D("ngModel",e.brandingDraft.secondaryColor),a(),D("ngModel",e.brandingDraft.secondaryColor),a(9),I(" ",e.brandingDraft.headerBannerS3Key?"Replace":"Upload"," "),a(),S(e.brandingDraft.headerBannerS3Key?26:-1),a(9),I(" ",e.brandingDraft.footerLogoS3Key?"Replace":"Upload"," "),a(),S(e.brandingDraft.footerLogoS3Key?36:-1),a(),d("optionalMarker",!0),a(),D("ngModel",e.brandingDraft.footerText),a(),d("optionalMarker",!0),a(),D("ngModel",e.brandingDraft.fontFamily),a(),d("ngValue",""),a(2),E(e.supportedFonts),a(3),d("loading",e.isSavingBranding)}}function jl(n,l){if(n&1&&(r(0,"cnp-card"),v(1,Gl,3,0,"p",6)(2,Ql,48,14),s()),n&2){let e=m();a(),S(e.isLoadingBranding?1:2)}}var Yl=["About this event","Event vision and structure","Session objectives & outcomes","Dress code","Arrival time & venue logistics","Who to contact on the day","What to expect on stage (AV & comms)"],Di=(()=>{class n{constructor(){this.service=b(wa),this.modal=b(Ee),this.eventService=b(Ce),this.centralizedFiles=b($n),this.quillUtil=b(bo),this.toast=b(Se),this.utilities=b(ke),this.destroy$=new G,this.quillModules=this.quillUtil.getMinimalModules(),this.supportedFonts=ca,this.activeTab="templates",this.tabs=[{id:"templates",label:"Template"},{id:"branding",label:"Branding"}],this.template=null,this.sectionDrafts=[],this.branding=null,this.brandingDraft={},this.eventDefaults={},this.isLoadingTemplate=!1,this.templateLoadFailed=!1,this.isLoadingBranding=!1,this.isSavingTemplate=!1,this.saveAttempted=!1,this.isSavingBranding=!1,this.error=null,this.sectionIdCounter=0}ngOnInit(){this.captureEventDefaults(),this.loadTemplate(),this.loadBranding()}ngOnDestroy(){this.destroy$.next(),this.destroy$.complete()}setTab(e){this.activeTab=e}addSection(){this.sectionDrafts.push({id:this.nextSectionId(),title:"New section",defaultContent:"",isNew:!0})}nextSectionId(){return this.sectionIdCounter+=1,`section-${Date.now()}-${this.sectionIdCounter}`}removeSection(e){this.sectionDrafts=this.sectionDrafts.filter(t=>t.id!==e)}onSectionDrop(e){this.reorderSection(e.previousIndex,e.currentIndex)}moveSection(e,t){this.reorderSection(e,e+t)}reorderSection(e,t){if(t<0||t>=this.sectionDrafts.length||e===t)return;let i=[...this.sectionDrafts];et(i,e,t),this.sectionDrafts=i}isSectionTitleBlank(e){return!(e.title??"").trim()}titleErrorId(e){return`briefing-section-title-error-${e.id}`}saveTemplate(){if(this.saveAttempted=!0,this.sectionDrafts.some(e=>this.isSectionTitleBlank(e))){this.error="Every section needs a title.",this.toast.showDanger("Could not save template",this.error);return}this.error=null,this.isSavingTemplate=!0,this.service.upsert(this.stripNewFlags(this.sectionDrafts
1)).pipe(x(this.destroy$)).subscribe({next:e=>{this.isSavingTemplate=!1,e.success===1&&e.data?(this.template=e.data,this.toast.showSuccess("Successfully saved","Event briefing template updated.")):(this.error=e.message??"Failed to save template",this.toast.showDanger("Could not save template",this.error))},error:e=>{this.isSavingTemplate=!1,this.error=e?.message??"Failed to save template",this.toast.showDanger("Could not save template",this.error)}})}removeTemplate(){return P(this,null,function*(){let e=this.utilities.confirm({header:"Delete briefing template",message:"Delete the event briefing template? Generated briefings will no longer include its sections. This cannot be undone.",confirmMessage:"Delete",confirmButtonClass:"btn-danger"});try{yield e.result}catch{return}this.isSavingTemplate=!0,this.service.remove().pipe(x(this.destroy$)).subscribe({next:t=>{this.isSavingTemplate=!1,t.success===1?(this.template=null,this.sectionDrafts=this.seedStarterSections(),this.toast.showSuccess("Successfully removed","Event briefing template deleted.")):(this.error=t.message??"Failed to remove template",this.toast.showDanger("Could not remove template",this.error))},error:t=>{this.isSavingTemplate=!1,this.error=t?.message??"Failed to remove template",this.toast.showDanger("Could not remove template",this.error)}})})}resetBrandingToEventDefaults(){this.brandingDraft=Z($({},this.brandingDraft),{primaryColor:this.eventDefaults.primaryColor||"#164874",secondaryColor:this.brandingDraft.secondaryColor||"#ffffff",logoS3Key:this.eventDefaults.logo,headerBannerS3Key:this.eventDefaults.bannerEmail||this.eventDefaults.banner,fontFamily:""})}pickImage(e){let i={logoS3Key:1,headerBannerS3Key:6.25,footerLogoS3Key:9.375}[e],o=this.modal.open(eo,{backdrop:"static",keyboard:!1}),c=o.componentInstance;c.showCentralizedFilesButton=!0,c.customAspectRatio=i,c.allowedExtensions=[".jpg",".jpeg",".png"],c.uploadFunction=u=>P(this,null,function*(){try{let C=yield this.centralizedFiles.handleFileUploadOrCopy({file:u,uploadPathUrl:`${O.api}/core/upload-path`,uploadPathOpts:{uploadType:"image"}});return C.success===1&&C.data?(this.brandingDraft=Z($({},this.brandingDraft),{[e]:C.data}),{success:1}):{success:0,message:C.message??"Upload failed"}}catch(C){return{success:0,message:C.message}}}),o.result.catch(()=>{})}clearImage(e){this.brandingDraft=Z($({},this.brandingDraft),{[e]:""})}saveBranding(){this.isSavingBranding=!0,this.service.updateBranding(this.brandingDraft).pipe(x(this.destroy$)).subscribe({next:e=>{this.isSavingBranding=!1,e.success===1?(this.branding=e.data??null,this.brandingDraft=$({},e.data),this.toast.showSuccess("Successfully saved","Briefing branding updated.")):(this.error=e.message??"Failed to save branding",this.toast.showDanger("Could not save branding",this.error))},error:e=>{this.isSavingBranding=!1,this.error=e?.message??"Failed to save branding",this.toast.showDanger("Could not save branding",this.error)}})}captureEventDefaults(){let e=this.eventService.data??{};this.eventDefaults={primaryColor:e.primaryColor,logo:e.logo,banner:e.banner,bannerEmail:e.bannerEmail}}loadTemplate(){this.isLoadingTemplate=!0,this.templateLoadFailed=!1,this.service.view().pipe(x(this.destroy$)).subscribe({next:e=>{this.isLoadingTemplate=!1,e.success===1?(this.template=e.data??null,this.sectionDrafts=this.template?this.template.sections.map(t=>
1$({},t)):this.seedStarterSections()):(this.templateLoadFailed=!0,this.error=e.message??"Failed to load the template")},error:e=>{this.isLoadingTemplate=!1,this.templateLoadFailed=!0,this.error=e?.message??"Failed to load the template"}})}seedStarterSections(){return Yl.map(e=>({id:this.nextSectionId(),title:e,defaultContent:""}))}loadBranding(){this.isLoadingBranding=!0,this.service.branding().pipe(x(this.destroy$)).subscribe({next:e=>{this.isLoadingBranding=!1,e.success===1&&(this.branding=e.data??null,this.brandingDraft={primaryColor:e.data?.primaryColor??this.eventDefaults.primaryColor??"#164874",secondaryColor:e.data?.secondaryColor??"#ffffff",logoS3Key:e.data?.logoS3Key??this.eventDefaults.logo,headerBannerS3Key:e.data?.headerBannerS3Key??this.eventDefaults.bannerEmail??this.eventDefaults.banner,footerLogoS3Key:e.data?.footerLogoS3Key,footerText:e.data?.footerText,fontFamily:e.data?.fontFamily||""})},error:()=>{this.isLoadingBranding=!1}})}stripNewFlags(e){return e.map(o=>{var c=o,{isNew:t}=c,i=xn(c,["isNew"]);return i})}static{this.\u0275fac=function(t){return new(t||n)}}static{this.\u0275cmp=M({type:n,selectors:[["app-runsheet-briefing-admin"]],decls:6,vars:6,consts:[[1,"runsheet-page"],["heading","Briefing admin","description","Configure the event's briefing template and the branding applied to every exported doc.",3,"level"],["cnpPageHeaderRail","","ariaLabel","Briefing admin sections","idPrefix","briefing-admin",3,"activeIdChange","tabs","activeId"],["tone","warning",3,"dismissible"],["tone","warning",3,"dismissed","dismissible"],[1,"briefing-admin-hint"],["role","status","aria-live","polite",1,"briefing-admin-state"],["tone","danger","heading","Couldn't load the briefing template","live","alert"],["size","sm","label","Loading briefing template"],["cnpCalloutAction","","size","sm","variant","secondary",3,"click"],[1,"briefing-admin-section-head"],[1,"briefing-admin-heading"],["variant","link","size","sm",3,"click"],["name","create"],["icon","layers","heading","No sections yet","description","Add one above to control what blocks appear in the rendered briefing.",3,"headingLevel"],["cdkDropList","",1,"briefing-admin-sections"],[1,"briefing-admin-footer"],["variant","danger","size","sm",3,"disabled"],["size","sm","loadingLabel","Saving template",3,"click","loading"],["cdkDropList","",1,"briefing-admin-sections",3,"cdkDropListDropped"],["cdkDrag","",1,"briefing-admin-section"],[1,"briefing-admin-section-top"],["type","button","cdkDragHandle","","aria-label","Drag to reorder section",1,"briefing-admin-drag-handle"],["name","drag","size","sm"],[1,"briefing-admin-reorder"],["variant","ghost","size","sm","ariaLabel","Move section up",3,"click","iconOnly","disabled"],["name","chevron-up","size","sm"],["variant","ghost","size","sm","ariaLabel","Move section down",3,"click","iconOnly","disabled"],["name","chevron-down","size","sm"],["cnpInput","","type","text","required","","aria-label","Section title","placeholder","Section title (the block's heading, e.g. Dress code)",1,"briefing-admin-section-title",3,"ngModelChange","ngModel"],["variant","danger","size","sm","ariaLabel","Remove section",3,"click","iconOnly"],["name","delete","size","sm"],["role","alert",1,"briefing-admin-section-error",3,"id"],["placeholder","What speakers should read under this heading (producers can still tweak it per briefing)",1,"briefing-admin-editor",3,"ngModelChange","modules","ngModel","styles"],["variant","danger","size","sm",3,"click","disabled"],["name","delete"],["size","sm","label","Loading branding"],["variant","secondary","size","sm",3,"click"],["name","undo"],[1,"briefing-admin-form"],[1,"briefing-admin-grid"],["label","Primary colour","controlId","branding-primary-color"],["cnpInput","","id","branding-primary-color","type","text","placeholder","#164874",3,"ngModelChange","ngModel"],["cnpFieldSuffix","","type","color","aria-label","Pick primary colour",1,"briefing-admin-swatch",3,"ngModelChange","ngModel"],["label","Accent / secondary colour","controlId","branding-secondary-color"],["cnpInput","","id","branding-secondary-color","type","text","placeholder","#ffffff",3,"ngModelChange","ngModel"],["cnpFieldSuffix","","type","color","aria-label","Pick accent colour",1,"briefing-admin-swatch",3,"ngModelChange","ngModel"],[1,"briefing-admin-image-field"],[1,"briefing-admin-field-label"],[1,"briefing-admin-image-slot"],["name","upload-horizontal"],[1,"briefing-admin-thumb"],["label","Footer text","controlId","branding-footer-text",3,"optionalMarker"],["cnpInput","","id","branding-footer-text","type","text","placeholder","\xA9 2026 Canapii \u2014 confidential",3,"ngModelChange","ngModel"],["label","Font family","controlId","branding-font-family","help","Applied to the generated DOCX; PDF maps to the closest built-in font.",3,"optionalMarker"],["cnpInput","","id","branding-font-family",3,"ngModelChange","ngModel"],[3,"ngValue"],["size","sm","loadingLabel","Saving branding",3,"click","loading"],["alt","Header banner preview",3,"src"],["variant","ghost","size","sm","ariaLabel","Remove header banner",3,"click","iconOnly"],["name","close","size","sm"],["alt","Footer banner preview",3,"src"],["variant","ghost","size","sm","ariaLabel","Remove footer banner",3,"click","iconOnly"]],template:function(t,i){t&1&&(r(0,"div",0)(1,"cnp-page-header",1)(2,"cnp-tabs",2),h("activeIdChange",function(c){return i.setTab(c)}),s()(),v(3,Ll,2,2,"cnp-callout",3),v(4,Ul,6,1,"cnp-card"),v(5,jl,3,1,"cnp-card"),s()),t&2&&(a(),d("level",2),a(),d("tabs",i.tabs)("activeId",i.activeTab),a(),S(i.error?3:-1),a(),S(i.activeTab==="templates"?4:-1),a(),S(i.activeTab==="branding"?5:-1))},dependencies:[le,se,ee,te,Q,J,W,Dn,pe,Bn,Vn,it,tt,Qt,L,Y,Me,ve,j,V,q,jt,nt],styles:[".runsheet-page[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:var(--cnp-space-5)}.runsheet-actions[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:center;gap:var(--cnp-space-3)}.briefing-admin-section-head[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:var(--cnp-space-3);margin-block-end:var(--cnp-space-2)}.briefing-admin-heading[_ngcontent-%COMP%]{margin:0;font-size:var(--cnp-font-size-body);font-weight:var(--cnp-font-weight-bold);color:var(--cnp-color-text-heading)}.briefing-admin-field-label[_ngcontent-%COMP%]{margin:0 0 var(--cnp-space-1);font-size:var(--cnp-font-size-label);font-weight:var(--cnp-font-weight-medium);color:var(--cnp-color-text-secondary)}.briefing-admin-hint[_ngcontent-%COMP%]{margin:0 0 var(--cnp-space-4);max-width:var(--cnp-font-measure-prose);font-size:var(--cnp-font-size-label);line-height:var(--cnp-font-leading-base);color:var(--cnp-color-text-muted)}.briefing-admin-state[_ngcontent-%COMP%]{display:flex;align-items:center;gap:var(--cnp-space-2);margin:0;color:var(--cnp-color-text-muted)}.briefing-admin-sections[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:var(--cnp-space-4);margin:0;padding:0;list-style:none}.briefing-admin-section[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:var(--cnp-space-3);padding:var(--cnp-space-card-padding);background:var(--cnp-color-bg-surface);border:1px solid var(--cnp-color-border);border-radius:var(--cnp-radius-container)}.briefing-admin-section-top[_ngcontent-%COMP%]{display:flex;align-items:center;gap:var(--cnp-space-2)}.briefing-admin-section-error[_ngcontent-%COMP%]{margin:0;font-size:var(--cnp-font-size-label);color:var(--cnp-color-danger-fg)}.briefing-admin-section-title[_ngcontent-%COMP%]{flex:1 1 auto;min-width:0}.briefing-admin-drag-handle[_ngcontent-%COMP%]{display:inline-flex;align-items:center;padding:0;color:var(--cnp-color-icon-muted);background:transparent;border:0;cursor:grab}.briefing-admin-drag-handle[_ngcontent-%COMP%]:active{cursor:grabbing}.briefing-admin-reorder[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:var(--cnp-space-1)}.briefing-admin-form[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:var(--cnp-space-5)}.briefing-admin-grid[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--cnp-space-4)}.briefing-admin-image-field[_ngcontent-%COMP%]{display:flex;flex-direction:column}.briefing-admin-image-slot[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:center;gap:var(--cnp-space-3)}.briefing-admin-thumb[_ngcontent-%COMP%]{display:flex;align-items:center;gap:var(--cnp-space-2);padding:var(--cnp-space-2);background:var(--cnp-color-bg-surface);border:1px solid var(--cnp-color-border);border-radius:var(--cnp-radius-element)}.briefing-admin-thumb[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{display:block;max-width:12rem;height:auto}.briefing-admin-swatch[_ngcontent-%COMP%]{inline-size:var(--cnp-size-control);block-size:var(--cnp-size-control);padding:0;background:transparent;border:1px solid var(--cnp-color-border);border-radius:var(--cnp-radius-element);cursor:pointer}.briefing-admin-footer[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;
1gap:var(--cnp-space-2);margin-block-start:var(--cnp-space-5);padding-block-start:var(--cnp-space-4);border-block-start:1px solid var(--cnp-color-rule)}@media (width <= 45rem){.briefing-admin-grid[_ngcontent-%COMP%]{grid-template-columns:minmax(0,1fr)}}"]})}}return n})();var Ta=(()=>{class n{constructor(){this.http=b(De)}list(e={}){let t=new Xe;return e.sessionPK&&(t=t.set("sessionPK",e.sessionPK)),e.topicSessionPK&&(t=t.set("topicSessionPK",e.topicSessionPK)),e.speakerPK&&(t=t.set("speakerPK",e.speakerPK)),e.status&&(t=t.set("status",e.status)),this.http.get(`${O.api}/briefing-calls`,{params:t})}view(e){return this.http.get(`${O.api}/briefing-calls/${e}`)}create(e){return this.http.post(`${O.api}/briefing-calls`,e)}update(e,t){return this.http.put(`${O.api}/briefing-calls/${e}`,t)}remove(e){return this.http.delete(`${O.api}/briefing-calls/${e}`)}setAttendance(e,t,i){return this.http.put(`${O.api}/briefing-calls/${e}/invitees/${t}/attendance`,{attendance:i})}static{this.\u0275fac=function(t){return new(t||n)}}static{this.\u0275prov=X({token:n,factory:n.\u0275fac,providedIn:"root"})}}return n})();var Zl=(n,l)=>l.inviteeId,Xl=(n,l)=>l.PK;function Jl(n,l){if(n&1&&(r(0,"cnp-field",24,1),_(2,"input",32),s()),n&2){let e=Ze(1),t=m();d("required",!0)("error",t.errorFor("locationRoom","Room is required.")),a(2),oe("aria-describedby",e.controlAttrs().describedBy)("aria-invalid",e.controlAttrs().invalid)("aria-required",e.controlAttrs().required)}}function ec(n,l){if(n&1&&(r(0,"cnp-field",25,2),_(2,"input",33),s()),n&2){let e=Ze(1),t=m();d("required",!0)("error",t.locationUrlError),a(2),oe("aria-describedby",e.controlAttrs().describedBy)("aria-invalid",e.controlAttrs().invalid)("aria-required",e.controlAttrs().required)}}function tc(n,l){if(n&1){let e=w();r(0,"li")(1,"cnp-filter-chip",34),h("remove",function(){let i=g(e).$implicit,o=m(2);return f(o.removeInvitee(i.inviteeId))}),p(2),s()()}if(n&2){let e=l.$implicit;a(),d("removable",!0),a(),ce(" ",e.name,"",e.role?" \xB7 "+e.role:""," ")}}function ic(n,l){if(n&1&&(r(0,"ul",26),T(1,tc,3,3,"li",null,Zl),s()),n&2){let e=m();a(),E(e.invitees)}}function nc(n,l){if(n&1){let e=w();r(0,"cnp-checkbox",38),h("changed",function(i){let o=g(e).$implicit,c=m(2);return f(i?c.addSpeakerInvitee(o.PK):c.removeSpeakerInvitee(o.PK))}),s()}if(n&2){let e=l.$implicit,t=m(2);d("label",e.name)("inputId","add-call-speaker-"+e.PK)("checked",t.isSpeakerInvited(e.PK))}}function oc(n,l){if(n&1&&(r(0,"p",35),p(1,"Speakers in the event"),s(),r(2,"div",36),T(3,nc,1,3,"cnp-checkbox",37,Xl),s()),n&2){let e=m();a(3),E(e.speakers)}}function Ri(n){return String(n.value??"").trim()?null:{required:!0}}function Ea(n){let l=String(n.value??"").trim();if(!l)return null;try{let e=new URL(l);return e.protocol==="http:"||e.protocol==="https:"?null:{url:!0}}catch{return{url:!0}}}var Ni=(()=>{class n{errorFor(e,t){let i=this.form.controls[e];return i.invalid&&i.touched?t:""}constructor(e,t){this.fb=e,this.activeModal=t,this.locationSegments=[{value:"zoom",label:"Zoom / URL"},{value:"room",label:"Room"}],this.speakers=[],this.invitees=[],this.speakerNameByPK=new Map,this.isSaving=!1}ngOnInit(){this.speakerNameByPK=new Map(this.speakers.map(i=>[i.PK,i.name]));let e=new Date,t={year:e.getFullYear(),month:e.getMonth()+1,day:e.getDate()};this.form=this.fb.group({title:["",[Ri]],day:[t,[F.required]],startTime:["09:00",[F.required,F.pattern(/^\d{2}:\d{2}$/)]],endTime:["10:00",[F.required,F.pattern(/^\d{2}:\d{2}$/)]],locationType:["zoom",[F.required]],locationUrl:["",[Ri,Ea]],locationRoom:[""],notes:[""]})}get isInvalid(){return this.form.invalid}onLocationTypeChange(e){this.form.controls.locationType.setValue(e);let t=this.form.controls.locationUrl,i=this.form.controls.locationRoom,o=e==="room",[c,u]=o?[i,t]:[t,i];c.setValidators(o?[Ri]:[Ri,Ea]),u.clearValidators(),u.setValue(""),c.updateV
1alueAndValidity(),u.updateValueAndValidity()}get locationUrlError(){let e=this.form.controls.locationUrl;return!e.invalid||!e.touched?"":e.hasError("required")?"Meeting URL is required.":"Enter a valid URL, e.g. https://zoom.us/j/123."}addSpeakerInvitee(e){this.invitees.some(t=>t.speakerPK===e)||this.invitees.push({inviteeId:this.generateInviteeId(),speakerPK:e,name:this.speakerNameByPK.get(e)??e,role:"Speaker"})}removeSpeakerInvitee(e){this.invitees=this.invitees.filter(t=>t.speakerPK!==e)}isSpeakerInvited(e){return this.invitees.some(t=>t.speakerPK===e)}removeInvitee(e){this.invitees=this.invitees.filter(t=>t.inviteeId!==e)}submit(){return P(this,null,function*(){if(this.isInvalid||this.isSaving){this.form.markAllAsTouched();return}let e=this.buildResult();if(!this.submitHandler){this.activeModal.close(e);return}this.isSaving=!0;try{yield this.submitHandler(e),this.activeModal.close(e)}catch{this.isSaving=!1}})}buildResult(){let e=this.form.value,t=e.day,i=e.locationType==="zoom"?{type:"zoom",url:e.locationUrl.trim()}:{type:"room",room:e.locationRoom.trim()},o=this.invitees.map(c=>({inviteeId:c.inviteeId,speakerPK:c.speakerPK,name:c.name,role:c.role||void 0,attendance:"invited"}));return{title:e.title.trim(),day:t?ac(t):void 0,startTime:e.startTime,endTime:e.endTime,location:i,status:"scheduled",invitees:o,notes:(e.notes??"").trim()||void 0}}dismiss(){this.isSaving||this.activeModal.dismiss()}generateInviteeId(){return`inv-${Date.now()}-${Math.random().toString(36).slice(2,8)}`}static{this.\u0275fac=function(t){return new(t||n)(ie(ge),ie(_e))}}static{this.\u0275cmp=M({type:n,selectors:[["app-runsheet-add-briefing-call-modal"]],inputs:{speakers:"speakers"},decls:38,vars:19,consts:[["dp","ngbDatepicker"],["roomField",""],["urlField",""],[1,"modal-header"],[1,"modal-title"],["variant","ghost","size","sm","ariaLabel","Close",1,"dialog-close",3,"click","iconOnly"],["name","close"],["novalidate","",3,"ngSubmit","formGroup"],[1,"modal-body"],[1,"call-modal"],["label","Title","controlId","add-call-title",3,"required","error"],["cnpInput","","id","add-call-title","type","text","formControlName","title","placeholder","e.g. Keynote prep call"],[1,"call-modal-row"],["label","Day","controlId","add-call-day"],["cnpInput","","id","add-call-day","formControlName","day","ngbDatepicker","","container","body","placeholder","YYYY-MM-DD"],["cnpFieldSuffix","","variant","ghost","size","sm","ariaLabel","Open calendar",3,"click","iconOnly"],["name","calendar","size","sm"],["label","Start","controlId","add-call-start"],["cnpInput","","id","add-call-start","formControlName","startTime","mask","Hh:m0",3,"showMaskTyped","leadZeroDateTime","dropSpecialCharacters"],["label","End","controlId","add-call-end"],["cnpInput","","id","add-call-end","formControlName","endTime","mask","Hh:m0",3,"showMaskTyped","leadZeroDateTime","dropSpecialCharacters"],[1,"call-modal-group"],[1,"call-modal-legend"],["ariaLabel","Location type",3,"valueChange","segments","value"],["label","Room","controlId","add-call-room",3,"required","error"],["label","Meeting URL","controlId","add-call-url",3,"required","error"],[1,"call-modal-invitees"],["label","Notes","controlId","add-call-notes"],["cnpInput","","id","add-call-notes","rows","2","formControlName","notes","placeholder","Agenda points, dial-in info, etc."],[1,"modal-footer"],["variant","secondary",3,"click","disabled"],["type","submit","loadingLabel","Scheduling call",3,"disabled","loading"],["cnpInput","","id","add-call-room","type","text","formControlName","locationRoom","placeholder","e.g. Boardroom 3"],["cnpInput","","id","add-call-url","type","url","formControlName","locationUrl","placeholder","https://zoom.us/j/\u2026"],["tone","neutral",3,"remove","removable"],[1,"call-modal-hint"],[1,"call-modal-speakers"],[3,"label","inputId","checked"],[3,"changed","label","inputId","checked"]],template:function(t,i){if(t&1){let o=w();r(0,"div",3)(1,"h5",4),p(2,"Schedule briefing call"),s(),r(3,"cnp-button",5),h("click",function(){return g(o),f(i.dismiss())}),_(4,"cnp-icon",6),s()(),r(5,"form",7),h("ngSubmit",function(){return g(o),f(i.submit())}),r(6,"div",8)(7,"div",9)(8,"cnp-field",10),_(9,"input",11),s(),r(10,"div",12)(11,"cnp-field",13),_(12,"input",14,0),r(14,"cnp-button",15),h("click",function(){g(o);let u=Ze(13);
1return f(u.toggle())}),_(15,"cnp-icon",16),s()(),r(16,"cnp-field",17),_(17,"input",18),s(),r(18,"cnp-field",19),_(19,"input",20),s()(),r(20,"fieldset",21)(21,"legend",22),p(22,"Location"),s(),r(23,"cnp-segmented",23),h("valueChange",function(u){return g(o),f(i.onLocationTypeChange(u))}),s(),v(24,Jl,3,5,"cnp-field",24)(25,ec,3,5,"cnp-field",25),s(),r(26,"fieldset",21)(27,"legend",22),p(28,"Invitees"),s(),v(29,ic,3,0,"ul",26),v(30,oc,5,0),s(),r(31,"cnp-field",27),_(32,"textarea",28),s()()(),r(33,"div",29)(34,"cnp-button",30),h("click",function(){return g(o),f(i.dismiss())}),p(35,"Cancel"),s(),r(36,"cnp-button",31),p(37," Schedule call "),s()()()}t&2&&(a(3),d("iconOnly",!0),a(2),d("formGroup",i.form),a(3),d("required",!0)("error",i.errorFor("title","Title is required.")),a(6),d("iconOnly",!0),a(3),d("showMaskTyped",!0)("leadZeroDateTime",!0)("dropSpecialCharacters",!1),a(2),d("showMaskTyped",!0)("leadZeroDateTime",!0)("dropSpecialCharacters",!1),a(4),d("segments",i.locationSegments)("value",i.form.value.locationType||"zoom"),a(),S(i.form.value.locationType==="room"?24:25),a(5),S(i.invitees.length?29:-1),a(),S(i.speakers.length?30:-1),a(4),d("disabled",i.isSaving),a(2),d("disabled",i.isInvalid)("loading",i.isSaving))},dependencies:[fe,me,Q,W,de,ue,he,qt,Je,L,Re,j,Hn,V,q,st],styles:[".call-modal[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:var(--cnp-space-4)}.call-modal-row[_ngcontent-%COMP%]{display:grid;grid-template-columns:5fr 3fr 3fr;gap:var(--cnp-space-4);align-items:start}.call-modal-group[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:var(--cnp-space-3);margin:0;padding:0;border:0}.call-modal-legend[_ngcontent-%COMP%]{padding:0;font-size:var(--cnp-font-size-label);font-weight:var(--cnp-font-weight-medium);color:var(--cnp-color-text-secondary)}.call-modal-invitees[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;gap:var(--cnp-space-2);margin:0;padding:0;list-style:none}.call-modal-hint[_ngcontent-%COMP%]{margin:0;font-size:var(--cnp-font-size-label);color:var(--cnp-color-text-muted)}.call-modal-speakers[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(auto-fill,minmax(12rem,1fr));gap:var(--cnp-space-2);max-height:14rem;overflow-y:auto}@media (width <= 40rem){.call-modal-row[_ngcontent-%COMP%]{grid-template-columns:minmax(0,1fr)}}"]})}}return n})();function ka(n){return n.toString().padStart(2,"0")}function ac(n){return`${n.year}-${ka(n.month)}-${ka(n.day)}`}var rc=(n,l)=>l.inviteeId;function sc(n,l){if(n&1){let e=w();r(0,"cnp-callout",17),h("dismissed",function(){g(e);let i=m();return f(i.error=null)}),p(1),s()}if(n&2){let e=m();d("dismissible",!0),a(),y(e.error)}}function lc(n,l){if(n&1&&(r(0,"span",18)(1,"span",19),p(2),s(),r(3,"span",20),p(4),s()()),n&2){let e=l.$implicit;a(2),y(e.day||"\u2014"),a(2),ce("",e.startTime||"\u2014","",e.endTime?" \u2192 "+e.endTime:"")}}function cc(n,l){if(n&1&&(r(0,"a",23),p(1,"Zoom link"),s()),n&2){let e=m().$implicit;d("href",e.location.url,we)}}function dc(n,l){if(n&1&&(r(0,"span"),p(1),s()),n&2){let e=m().$implicit;a(),y(e.location.room)}}function pc(n,l){n&1&&(r(0,"span"),p(1,"\u2014"),s())}function mc(n,l){if(n&1&&(r(0,"span",21),_(1,"cnp-icon",22),v(2,cc,2,1,"a",23)(3,dc,2,1,"span")(4,pc,2,0,"span"),s()),n&2){let e=l.$implicit;a(),d("name",e.location.type==="zoom"?"video":"location"),a(),S(e.location.type==="zoom"&&e.location.url?2:e.location.type==="room"?3:4)}}function uc(n,l){if(n&1&&p(0),n&2){let e=l.$implicit,t=m();y(t.sessionTitle(e)||"\u2014")}}function hc(n,l){if(n&1){let e=w();r(0,"cnp-button",24),h("click",function(){let i=g(e).$implicit,o=m();return f(o.openInvitees(i))}),_(1,"cnp-icon",25),p(2),s()}if(n&2){let e=l.$implicit;a(2),ce(" ",e.invitees.length," invitee",e.invitees.length===1?"":"s"," ")}}function gc(n,l){if(n&1){let e=w();r(0,"cnp-dropdown",26),h("select",function(i){let o=g(e).$implicit,c=m();return f(c.setStatus(o,i))}),r(1,"cnp-status-pill",27),p(2),s()()}if(n&2){let e=l.$implicit,t=m();d("ariaLabel","Call status for "+e.title+": "+t.statusLabel(e.status)+". Change status")("items",t.statusMenuItems),a(),d("tone",t.statusTone(e.status)),a(),y(t.statusLabel(e.status))}}function fc(n,l){if(n&1&&(p(0),Te(1,"date")),n&2){let e=l.value,t=m();y(Ve(1,1,t.validDate(e),"MMM d, h:mm a")||"\u2014")}}function _c(n,l){if(n&1){let e=w();r(0,"cnp-button",28),h("click",function(){let i=g(e).$implicit,o=m();return f(o.remove(i))}),_(1,"cnp-icon",29),s()}if(n&2){let e=l.$implicit;d("iconOnly",!0)("ariaLabel","Delete "+e.title)}}function Cc(n,l){if(n&1&&(r(0,"option",35),p(1),s()),n&2){let e=l.$implicit,t=m(4);d("ngValue",e),a(),y(t.attendanceLabels[e])}}function vc(n,l){if(n&1){let e=w();r(0,"li",32),_(1,"cnp-person-row",33),r(2,"select",34),h("ngModelChange",function(i){let o=g(e).$implicit,c=m(3);return f(c.setAttendance(c.expandedCall,o.inviteeId,i))}),T(3,Cc,2,2,"option",35,z),s()()}if(n&2){let e=l.$implicit,t=m(3);a(),d("name",e.name)("roleLabel",e.role||""),a(),d("ngModel",e.attendance),oe("aria-label","Attendance for "+e.name),a(),E(t.attendanceValues)}}function Sc(n,l){if(n&1&&(r(0,"ul",30),T(1,vc,5,4,"li",32,rc),s()),n&2){let e=m(2);a(),E(e.expandedCall.invitees)}}function yc(n,l){n&1&&_(0,"cnp-empty-state",31),n&2&&d("headingLevel",3)}function bc(n,l){if(n&1&&v(0,Sc,3,0,"ul",30)(1,yc,1,1,"cnp-empty-state",31),n&2){let e=m();S(e.expandedCall.invitees.length?0:1)}}var Oi=(()=>{class n{constructor(){this.validDate=Ge,this.statusLabel=Ji,this.statusTone=po,this.statusMenuItems=oo.map(e=>({id:e,label:Ji(e)})),this.attendanceValues=ao,this.attendanceLabels=ro,this.service=b(Ta),this.speakerService=b(lt),this.sessionService=b(ii),this.modal=b(Ee),this.toast=b(Se),this.utilities=b(ke),this.destroy$=new G,this.isLoading=!1,this.error=null,this.calls=[],this.expandedPK=null,this.speakers=[],this.sessions=[],this.sessionTitleByPK=new Map,this.columns=[{key:"title",header:"Call",truncate:!0},{key:"day",header:"When"},{key:"location",header:"Where"},{key:"session",header:"Session",truncate:!0},{key:"invitees",header:"Invitees"},{key:"status",header:"Status"},{key:"lastUpdate",header:"Updated"},{key:"actions",header:"",ariaLabel:"Row actions",align:"end"}],this.rowKey=e=>e.PK}ngOnInit(){this.speakerService.onChange.pipe(x(this.destroy$)).subscribe(e=>{this.speakers=e??[]}),this.sessionService.sessionSubject.pipe(x(this.destroy$)).subscribe(e=>{this.sessions=e??[],this.sessionTitleByPK=new Map(this.sessions.map(t=>[t.PK,t.title]))}),this.speakerService.load().catch(e=>console.warn("[BriefingCalls] speaker load failed",e)),this.sessionService.load().catch(e=>console.warn("[BriefingCalls] session load failed",e)),this.load()}ngOnDestroy(){this.destroy$.next(),this.destroy$.complete()}get expandedCall(){return this.calls.find(e=>e.PK===this.expandedPK)??null}openInvitees(e){this.expandedPK=e.PK}closeInvitees(){this.expandedPK=null}sessionTitle(e){return e.linkedSessionPK?this.sessionTitleByPK.get(e.linkedSessionPK)??null:null}openCreateModal(){let e=this.modal.open(Ni,{size:"lg",backdrop:"static",windowClass:"cnp-dialog"}),t=e.componentInstance;t.speakers=this.speakers.map(i=>({PK:i.PK,name:i.name})),t.submitHandler=i=>this.createCall(i),e.result.catch(()=>{})}createCall(e){return this.error=null,new Promise((t,i)=>
1{this.service.create(e).pipe(x(this.destroy$)).subscribe({next:o=>this.handleCreateResult(o,e,t,i),error:o=>this.handleCreateError(o,i)})})}handleCreateResult(e,t,i,o){if(e.success!==1||!e.data){let c=e.message??"Failed to create briefing call";this.error=c,this.toast.showDanger("Could not schedule call",c),o(new Error(c));return}this.calls=[...this.calls,e.data].sort(Pa),this.toast.showSuccess("Successfully scheduled",`Briefing call "${t.title}" added.`),i()}handleCreateError(e,t){let i=e?.message??"Failed to create briefing call";this.error=i,this.toast.showDanger("Could not schedule call",i),t(e instanceof Error?e:new Error(i))}setStatus(e,t){this.service.update(e.PK,{status:t,expectedVersion:e.version}).pipe(x(this.destroy$)).subscribe({next:i=>{i.success===1&&i.data?this.calls=this.calls.map(o=>o.PK===e.PK?i.data:o):this.error=i.message??"Failed to update status"}})}setAttendance(e,t,i){this.service.setAttendance(e.PK,t,i).pipe(x(this.destroy$)).subscribe({next:o=>{o.success===1&&o.data&&(this.calls=this.calls.map(c=>c.PK===e.PK?o.data:c))}})}remove(e){return P(this,null,function*(){let t=this.utilities.confirm({header:"Delete briefing call",message:`Delete "${e.title||"this briefing call"}"? This cannot be undone.`,confirmMessage:"Delete",confirmButtonClass:"btn-danger"});try{yield t.result}catch{return}this.service.remove(e.PK).pipe(x(this.destroy$)).subscribe({next:i=>{i.success===1?(this.calls=this.calls.filter(o=>o.PK!==e.PK),this.expandedPK===e.PK&&(this.expandedPK=null),this.toast.showSuccess("Successfully removed",`Briefing call "${e.title}" deleted.`)):(this.error=i.message??"Failed to remove briefing call",this.toast.showDanger("Could not remove call",this.error))}})})}load(){this.isLoading=!0,this.error=null,this.service.list().pipe(x(this.destroy$)).subscribe({next:e=>{if(this.isLoading=!1,e.success!==1){this.error=e.message??"Failed to load briefing calls";return}this.calls=(e.data??[]).sort(Pa)},error:e=>{this.isLoading=!1,this.error=e?.message??"Failed to load briefing calls"}})}static{this.\u0275fac=function(t){return new(t||n)}}static{this.\u0275cmp=M({type:n,selectors:[["app-runsheet-briefing-calls-list"]],decls:20,vars:10,consts:[[1,"runsheet-page"],["heading","Briefing calls","description","Schedule prep meetings with speakers and track attendance.",3,"level"],["size","sm",3,"click"],["name","create"],["tone","warning",3,"dismissible"],["padding","none"],["ariaLabel","Briefing calls","loadingLabel","Loading briefing calls",3,"columns","rows","rowKey","loading"],["cnpCell","day"],["cnpCell","location"],["cnpCell","session"],["cnpCell","invitees"],["cnpCell","status"],["cnpCell","lastUpdate"],["cnpCell","actions"],["cnpTableEmpty","","icon","calendar","heading","No briefing calls scheduled yet","description","Schedule a prep meeting and invite the speakers it covers.",3,"headingLevel"],["cnpEmptyStatePrimary","","size","sm",3,"click"],[3,"closed","heading","open"],["tone","warning",3,"dismissed","dismissible"],[1,"calls-when"],[1,"calls-when-day"],[1,"calls-when-time"],[1,"calls-location"],[3,"name"],["target","_blank","rel","noopener",3,"href"],["variant","link","size","sm",3,"click"],["name","people"],["size","sm","align","start",3,"select","ariaLabel","items"],[3,"tone"],["variant","danger","size","sm",3,"click","iconOnly","ariaLabel"],["name","delete","size","sm"],[1,"calls-invitees"],["icon","people","heading","No invitees yet","description","Add speakers to this call when you schedule it.",3,"headingLevel"],[1,"calls-invitee"],["size","sm",3,"name","roleLabel"],["cnpInput","",3,"ngModelChange","ngModel"],[3,"ngValue"]],template:function(t,i){t&1&&(r(0,"div",0)(1,"cnp-page-header",1)(2,"cnp-button",2),h("click",function(){return i.openCreateModal()}),_(3,"cnp-icon",3),p(4," Schedule call "),s()(),v(5,sc,2,2,"cnp-callout",4),r(6,"cnp-card",5)(7,"cnp-table",6),Ye(8,lc,5,3,"ng-template",7)(9,mc,5,2,"ng-template",8)(10,uc,1,1,"ng-template",9)(11,hc,3,2,"ng-template",10)(12,gc,3,4,"ng-template",11)(13,fc,2,4,"ng-template",12)(14,_c,2,2,"ng-template",13),r(15,"cnp-empty-state",14)(16,"cnp-button",15),h("click",function(){return i.openCreateModal()}),p(17,"Schedule call"),s()()()(),r(18,"cnp-drawer",16),h("closed",function(){return i.closeInvitees()}),v(19,bc,2,1),s()()),t&2&&(a(),d("level",2),a(4),S(i.error?5:-1),a(2),d("columns",i.columns)("rows",i.calls)("rowKey",i.rowKey)("loading",i.isLoading),a(8),d("headingLevel",2),a(3),d("heading",i.expandedCall?"Invitees \u2014 "+i.exp
1andedCall.title:"Invitees")("open",!!i.expandedCall),a(),S(i.expandedCall?19:-1))},dependencies:[le,se,ee,te,J,W,pe,L,Y,Me,at,ze,Ae,ve,V,q,ei,Pe,rt,$e],styles:[".runsheet-page[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:var(--cnp-space-5)}.runsheet-actions[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:center;gap:var(--cnp-space-3)}.calls-when[_ngcontent-%COMP%]{display:flex;flex-direction:column}.calls-when-day[_ngcontent-%COMP%]{font-weight:var(--cnp-font-weight-semibold);color:var(--cnp-color-text-body)}.calls-when-time[_ngcontent-%COMP%]{font-size:var(--cnp-font-size-label);font-variant-numeric:tabular-nums;color:var(--cnp-color-text-muted)}.calls-location[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:var(--cnp-space-2)}.calls-location[_ngcontent-%COMP%] cnp-icon[_ngcontent-%COMP%]{color:var(--cnp-color-icon-muted)}.calls-invitees[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:var(--cnp-space-3);margin:0;padding:0;list-style:none}.calls-invitee[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;gap:var(--cnp-space-3)}"]})}}return n})();function Pa(n,l){let e=n.day??"",t=l.day??"";return e!==t?e.localeCompare(t):(n.startTime??"").localeCompare(l.startTime??"")}var xc=(n,l)=>l.PK,wc=(n,l)=>l.itemPK;function Tc(n,l){if(n&1&&(r(0,"option",10),p(1),s()),n&2){let e=l.$implicit;d("value",e.PK),a(),y(e.sessionName)}}function Ec(n,l){if(n&1&&(r(0,"option",10),p(1),s()),n&2){let e=l.$implicit;d("value",e.itemPK),a(),y(e.topic)}}function kc(n,l){if(n&1&&(r(0,"option",16),p(1),s()),n&2){let e=l.$implicit;d("ngValue",e),a(),y(e)}}function Pc(n,l){if(n&1&&(r(0,"option",16),p(1),s()),n&2){let e=l.$implicit,t=m();d("ngValue",e),a(),y(t.statusLabels[e])}}var Vi=(()=>{class n{errorFor(e,t){let i=this.form.controls[e];return i.invalid&&i.touched?t:""}constructor(e){this.activeModal=e,this.assetTypes=ht,this.statuses=gt,this.statusLabels=qe,this.topicSessions=[],this.allAgendaItems=[],this.isSaving=!1,this.fb=b(ge),this.facade=b(Ie),this.topicSessionsFacade=b(He),this.destroy$=new G}ngOnInit(){this.form=this.fb.group({topicSessionPK:["",[F.required]],agendaItemPK:[this.asset.scopeType==="agenda-item"?this.asset.scopeValue??"":"",[F.required]],type:[this.asset.type,[F.required]],status:[this.asset.status,[F.required]],linkUrl:[this.asset.linkUrl??""],notes:[this.notesFromDescription(this.asset.description)]}),this.form.get("topicSessionPK")?.valueChanges.pipe(x(this.destroy$)).subscribe(()=>this.form.patchValue({agendaItemPK:""})),this.loadPickerSources()}ngOnDestroy(){this.destroy$.next(),this.destroy$.complete()}loadPickerSources(){this.facade.init(),this.topicSessionsFacade.init(),this.topicSessionsFacade.all$.pipe(x(this.destroy$)).subscribe(e=>{this.topicSessions=(e??[]).map(t=>({PK:t.PK,sessionName:t.sessionName||"(untitled session)"}))}),this.facade.allAgendaItems$.pipe(x(this.destroy$)).subscribe(e=>{this.allAgendaItems=(e??[]).map(t=>
1({itemPK:t.itemPK,topic:t.topic||"(untitled item)",topicSessionPK:t.topicSessionPK})),this.preselectTopicSession()})}preselectTopicSession(){if(this.form.value.topicSessionPK)return;let e=this.allAgendaItems.find(t=>t.itemPK===this.form.value.agendaItemPK);e&&this.form.patchValue({topicSessionPK:e.topicSessionPK},{emitEvent:!1})}get agendaItems(){let e=this.form?.value.topicSessionPK;return e?this.allAgendaItems.filter(t=>t.topicSessionPK===e):[]}get isInvalid(){return this.form.invalid}submit(){return P(this,null,function*(){if(this.isInvalid||this.isSaving){this.form.markAllAsTouched();return}let e=this.buildResult();if(!this.submitHandler){this.activeModal.close(e);return}this.isSaving=!0;try{yield this.submitHandler(e),this.activeModal.close(e)}catch{this.isSaving=!1}})}dismiss(){this.isSaving||this.activeModal.dismiss()}buildResult(){let e=this.form.value,t=(e.notes??"").trim()||void 0;return{type:e.type,status:e.status,scopeType:"agenda-item",scopeValue:(e.agendaItemPK??"").trim(),linkUrl:e.linkUrl?.trim()||void 0,description:t}}notesFromDescription(e){if(!e)return"";let t=/^Owner:\s*(.+?)\n([\s\S]*)$/.exec(e);return t?t[2].trim():e.startsWith("Owner:")?"":e}static{this.\u0275fac=function(t){return new(t||n)(ie(_e))}}static{this.\u0275cmp=M({type:n,selectors:[["app-runsheet-edit-content-asset-modal"]],inputs:{asset:"asset"},decls:38,vars:13,consts:[[1,"modal-header"],[1,"modal-title"],["variant","ghost","size","sm","ariaLabel","Close",1,"dialog-close",3,"click","iconOnly","disabled"],["name","close"],["novalidate","",3,"ngSubmit","formGroup"],[1,"modal-body"],[1,"content-modal"],["label","Topic session","controlId","edit-ca-topic-session",3,"required","error"],["cnpInput","","id","edit-ca-topic-session","formControlName","topicSessionPK"],["value","","disabled",""],[3,"value"],["label","Agenda line item","controlId","edit-ca-agenda-item","help","The asset's title is inherited from the selected line item.",3,"required","error"],["cnpInput","","id","edit-ca-agenda-item","formControlName","agendaItemPK"],[1,"content-modal-row"],["label","Content type","controlId","edit-ca-type"],["cnpInput","","id","edit-ca-type","formControlName","type"],[3,"ngValue"],["label","Status","controlId","edit-ca-status"],["cnpInput","","id","edit-ca-status","formControlName","status"],["label","Link URL","controlId","edit-ca-link","help","To replace the file itself use \u201CUpload new version\u201D \u2014 that creates a v2/v3/\u2026 so history stays intact.",3,"optionalMarker"],["cnpInput","","id","edit-ca-link","type","url","formControlName","linkUrl","placeholder","https://drive.google.com/\u2026"],["label","Notes","controlId","edit-ca-notes"],["cnpInput","","id","edit-ca-notes","rows","3","formControlName","notes","placeholder","Additional context\u2026"],[1,"modal-footer"],["variant","secondary",3,"click","disabled"],["type","submit","loadingLabel","Saving changes",3,"disabled","loading"]],template:function(t,i){t&1&&(r(0,"div",0)(1,"h5",1),p(2,"Edit content asset"),s(),r(3,"cnp-button",2),h("click",function(){return i.dismiss()}),_(4,"cnp-icon",3),s()(),r(5,"form",4),h("ngSubmit",function(){return i.submit()}),r(6,"div",5)(7,"div",6)(8,"cnp-field",7)(9,"select",8)(10,"option",9),p(11,"Pick a topic session\u2026"),s(),T(12,Tc,2,2,"option",10,xc),s()(),r(14,"cnp-field",11)(15,"select",12)(16,"option",9),p(17),s(),T(18,Ec,2,2,"option",10,wc),s()(),r(20,"div",13)(21,"cnp-field",14)(22,"select",15),T(23,kc,2,2,"option",16,z),s()(),r(25,"cnp-field",17)(26,"select",18),T(27,Pc,2,2,"option",16,z),s()()(),r(29,"cnp-field",19),_(30,"input",20),s(),r(31,"cnp-field",21),_(32,"textarea",22),s()()(),r(33,"div",23)(34,"cnp-button",24),h("click",function(){return i.dismiss()}),p(35,"Cancel"),s(),r(36,"cnp-button",25),p(37," Save changes "),s()()()),t&2&&(a(3),d("iconOnly",!0)("disabled",i.isSaving),a(2),d("formGroup",i.form),a(3),d("required",!0)("error",i.errorFor("topicSessionPK","Select the topic session first.")),a(4),E(i.topicSessions),a(2),d("required",!0)("error",i.errorFor("agendaItemPK","Select the agenda line item this content belongs to.")),a(),oe("disabled",i.form.value.topicSessionPK?null:!0),a(2),I(" ",i.form.value.topicSessionPK?"Pick an agenda line item\u2026":"Pick a topic session first\u2026"," "),a(),E(i.agendaItems),a(5),E(i.assetTypes),a(4),E(i.statuses),a(2),d("optionalMarker",!0),a(5),d("disabled",i.isSaving),a(2),d("disabled",i.isInvalid)("loading",i.isSaving))},dependencies:[fe,me,ee,te,Q,J,W,de,ue,he,L,j,V,q],styles:[".content-modal[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:var(--cnp-space-4)}.content-modal-row[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--cnp-space-4)}.content-modal-source[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:var(--cnp-space-3);margin:0;padding:0;border:0}.content-modal-legend[_ngcontent-%COMP%]{padding:0;font-size:var(--cnp-font-size-label);font-weight:var(--cnp-font-weight-medium);color:var(--cnp-color-text-secondary)}.content-modal-locked[_ngcontent-%COMP%]{display:flex;align-items:flex-start;gap:var(--cnp-space-2);margin:0}.content-modal-locked-label[_ngcontent-%COMP%]{display:block;font-size:var(--cnp-font-size-label);color:var(--cnp-color-text-secondary)}.content-modal-hint[_ngcontent-%COMP%]{display:block;margin:0;font-size:var(--cnp-font-size-label);color:var(--cnp-color-text-muted)}.content-modal-error[_ngcontent-%COMP%]{display:block;margin:0;font-size:var(--cnp-font-size-label);color:var(--cnp-color-danger-fg)}@media (width <= 40rem){.content-modal-row[_ngcontent-%COMP%]{grid-template-columns:minmax(0,1fr)}}"]})}}return n})();var Ac=["fileInput"];function Mc(n,l){n&1&&_(0,"input",12)}function Ic(n,l){if(n&1&&(r(0,"p",17),p(1),s()),n&2){let e=m(2);a(),y(e.fileError)}}function Fc(n,l){if(n&1&&(r(0,"p",8),p(1),s()),n&2){let e=m(2);a(),ce("",e.selectedFile.name," \xB7 ",e.fileSizeLabel)}}function Kc(n,l){if(n&1){let e=w();r(0,"input",16,0),h("change",function(i){g(e);let o=m();return f(o.onFileSelected(i))}),s(),v(2,Ic,2,1,"p",17),r(3,"p",18),p(4),s(),v(5,Fc,2,2,"p",8)}if(n&2){let e=m();d("accept",e.acceptFilter),oe("aria-invalid",e.fileError?!0:null)("aria-describedby",e.fileError?"nv-ca-file-error nv-ca-file-help":"nv-ca-file-help"),a(2),S(e.fileError?2:-1),a(2),I("Accepted formats: ",e.acceptedFormats),a(),S(e.selectedFile?5:-1)}}var Bi=(()=>{class n{get fileSizeLabel(){return this.selectedFile?`${(this.selectedFile.size/1024/1024).toFixed(2)} MB`:""}constructor(e,t){this.fb=e,this.activeModal=t,this.sourceSegments=[{value:"upload",label:"Upload file"},{value:"url",label:"URL"}],this.source="upload",this.selectedFile=null,this.fileError=null,this.isSaving=!1}ngOnInit(){this.form=this.fb.group({linkUrl:[""]}),this.source=this.asset.fileS3Key||this.asset.fileName?"upload":"url"}get isInvalid(){return this.isSaving?!0:this.source==="url"?!this.form.value.linkUrl?.trim():!this.selectedFile}get acceptFilter(){return Ci(this.asset.type)}get acceptedFormats(){return _i(this.asset.type)}get previousLabel(){return this.asset.fileName?this.asset.fileName:this.asset.linkUrl?this.asset.linkUrl:"\u2014"}setSource(e){this.source=e,e==="url"?(this.selectedFile=null,this.fileError=null):this.form.get("linkUrl")?.setValue("")}onFileSelected(e){let i=e.target.files?.[0]??null;this.fileError=i?fi(this.asset.type,i.name):null,this.selectedFile=this.fileError?null:i,this.fileError&&this.fileInput&&(this.fileInput.nativeElement.value="")}submit(){return P(this,null,function*(){if(this.isInvalid){this.form.markAllAsTouched();return}let e=this.buildResult();if(!this.submitHandler){this.activeModal.close(e);return}this.isSaving=!0;try{yield this.submitHandler(e),this.activeModal.close(e)}catch{this.isSaving=!1}})}dismiss(){this.isSaving||this.activeModal.dismiss()}buildResult(){return{input:{status:"pending",linkUrl:this.source==="url"?this.form.value.linkUrl.trim():void 0,upload:this.source==="upload"&&this.selectedFile?{fileName:this.selectedFile.name,mimeType:this.selectedFile.type||"application/octet-stream",size:this.selectedFile.size}:void 0},file:this.source==="upload"?this.selectedFile:null}}static{this.\u0275fac=function(t){return new(t||n)(ie(ge),ie(_e))}}static{this.\u0275cmp=M({type:n,selectors:[["app-runsheet-new-version-content-asset-modal"]],viewQuery:function(t,i){if(t&1&&Nt(Ac,5,Dt),t&2){let o;Ot(o=Vt())&&(i.fileInput=o.first)}},inputs:{asset:"asset"},decls:27,vars:13,consts:[["fileInput",""],[1,"modal-header"],[1,"modal-title"],["variant","ghost","size","sm","ariaLabel","Close",1,"dialog-close",3,"click","iconOnly","disabled"],["name","close"],["novalidate","",3,"ngSubmit","formGroup"],[1,"modal-body"],[1,"content-modal"],[1,"content-modal-hint"],[1,"content-modal-source"],[1,"content-modal-legend"],["ariaLabel","Replacement source",3,"valueChange","segments","value","disabled"],["cnpInput","","type","url","aria-label","Replacement URL","formControlName","linkUrl","placeholder","https://drive.google.com/\u2026"],[1,"modal-footer"],["variant","secondary",3,"click","disabled"],["type","submit","loadingLabel","Uploading new version",3,"disabled","loading"],["cnpInput","","type","file","aria-label","Replacement file",3,"change","accept"],["id","nv-ca-file-error","role","alert",1,"content-modal-error"],["id","nv-ca-file-help",1,"content-modal-hint"]],template:function(t,i){t&1&&(r(0,"div",1)(1,"h5",2),p(2,"Upload new version"),s(),r(3,"cnp-button",3),h("click",function(){return i.dismiss()}),_(4,"cnp-icon",4),s()(),r(5,"form",5),h("ngSubmit",function(){return i.submit()}),r(6,"div",6)(7,"div",7)(8,"p",8),p(9," Adding a new version of "),r(10,"strong"),p(11),s(),p(12,". Current: "),r(13,"strong"),p(14),s(),p(15),s(),r(16,"fieldset",9)(17,"legend",10),p(18,"Replacement"),s(),r(19,"cnp-segmented",11),h("valueChange",function(c){return i.setSource(c)}),s(),v(20,Mc,1,0,"input",12)(21,Kc,6,6),s()()(),r(22,"div",13)(23,"cnp-button",14),h("click",function(){return i.dismiss()}),p(24,"Cancel"),s(),r(25,"cnp-button",15),p(26," Upload new version "),s()()()),t&2&&(a(3),d("iconOnly",!0)("disabled",i.isSaving),a(2),d("formGroup",i.form),a(6),y(i.asset.name),a(3),I("v",i.asset.version),a(),I(" \u2014 ",i.previousLabel,". The previous version stays in the history. "),a(4),d("segments",i.sourceSegments)("value",i.source)("disabled",i.isSaving),a(),S(i.source==="url"?20:21),a(3),d("disabled",i.isSaving),a(2),d("disabled",i.isInvalid)("loading",i.isSaving))},dependencies:[fe,me,Q,W,de,ue,he,L,V,q,st],styles:[".content-modal[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:var(--cnp-space-4)}.content-modal-row[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--cnp-space-4)}.content-modal-source[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:var(--cnp-space-3);margin:0;padding:0;border:0}.content-modal-legend[_ngcontent-%COMP%]{padding:0;font-size:var(--cnp-font-size-label);font-weight:var(--cnp-font-weight-medium);color:var(--cnp-color-text-secondary)}.content-modal-locked[_ngcontent-%COMP%]{display:flex;align-items:flex-start;gap:var(--cnp-space-2);margin:0}.content-modal-locked-label[_ngcontent-%COMP%]{display:block;font-size:var(--cnp-font-size-label);color:var(--cnp-color-text-secondary)}.content-modal-hint[_ngcontent-%COMP%]{display:block;margin:0;font-size:var(--cnp-font-size-label);color:var(--cnp-color-text-muted)}.content-modal-error[_ngcontent-%COMP%]{display:block;margin:0;font-size:var(--cnp-font-size-label);color:var(--cnp-color-danger-fg)}@media (width <= 40rem){.content-modal-row[_ngcontent-%COMP%]{grid-template-columns:minmax(0,1fr)}}"]})}}return n})();var Lc=(n,l)=>l.PK;function Dc(n,l){if(n&1){let e=w();r(0,"cnp-callout",24),h("dismissed",function(){g(e);let i=m();return f(i.error=null)}),p(1),s()}if(n&2){let e=m();d("dismissible",!0),a(),y(e.error)}}function Rc(n,l){if(n&1&&(r(0,"option",10),p(1),s()),n&2){let e=l.$implicit;d("ngValue",e),a(),y(e)}}function Nc(n,l){if(n&1&&(r(0,"option",10),p(1),s()),n&2){let e=l.$implicit,t=m();d("ngValue",e),a(),y(t.statusLabels[e])}}function Oc(n,l){if(n&1){let e=w();r(0,"button",25),h("click",function(){let i=g(e).$implicit,o=m();return f(o.select(i))}),_(1,"cnp-icon",26),p(2),s()}if(n&2){let e=l.$implicit,t=m();a(),d("name",t.iconFor(e.type)),a(),I(" ",t.title(e)," ")}}function Vc(n,l){if(n&1&&p(0),n&2){let e=l.value;I("v",e)}}function Bc(n,l){if(n&1&&(r(0,"cnp-status-pill",27),p(1),s()),n&2){let e=l.value,t=m();d("tone",t.statusTone(e)),a(),y(t.statusLabels[e])}}function $c(n,l){if(n&1&&(p(0),Te(1,"date")),n&2){let e=l.value,t=m();y(Ve(1,1,t.validDate(e),"MMM d, h:mm a")||"\u2014")}}function zc(n,l){if(n&1){let e=w();r(0,"cnp-dropdown",28),h("select",function(i){let o=g(e).$implicit,c=m();return f(c.onRowAction(i,o))}),_(1,"cnp-icon",29),s()}if(n&2){let e=l.$implicit,t=m();d("iconOnly",!0)("ariaLabel","Actions for "+t.title(e))("items",t.rowActions)}}function Uc(n,l){if(n&1&&(r(0,"div")(1,"dt"),p(2,"File"),s(),r(3,"dd"),p(4),s()()),n&2){let e=m(2);
1a(4),ce("",e.selected.fileName," (",e.selected.fileSize??0," bytes)")}}function Gc(n,l){if(n&1&&(r(0,"div")(1,"dt"),p(2,"Link"),s(),r(3,"dd")(4,"a",41),p(5),s()()()),n&2){let e=m(2);a(4),d("href",e.selected.linkUrl,we),a(),y(e.selected.linkUrl)}}function Wc(n,l){if(n&1&&(r(0,"section")(1,"h4",37),p(2,"Description"),s(),r(3,"p",42),p(4),s()()),n&2){let e=m(2);a(4),y(e.selected.description)}}function qc(n,l){n&1&&_(0,"cnp-skeleton",38),n&2&&d("rows",3)}function Hc(n,l){if(n&1){let e=w();r(0,"cnp-button",13),h("click",function(){g(e);let i=m().$implicit,o=m(3);return f(o.select(i))}),p(1,"View"),s()}}function Qc(n,l){if(n&1){let e=w();r(0,"li",44)(1,"span",45),p(2),s(),r(3,"cnp-status-pill",27),p(4),s(),r(5,"span",46),p(6),s(),r(7,"span",47),p(8),Te(9,"date"),s(),v(10,Hc,2,0,"cnp-button",48),r(11,"cnp-button",13),h("click",function(){let i=g(e).$implicit,o=m(3);return f(o.download(i))}),p(12,"Download"),s()()}if(n&2){let e=l.$implicit,t=m(3);vt("content-version-row-current",e.PK===t.selected.PK),a(2),I("v",e.version),a(),d("tone",t.statusTone(e.status)),a(),y(t.statusLabels[e.status]),a(2),y(e.fileName||e.linkUrl||"\u2014"),a(2),y(Ve(9,8,t.validDate(e.updatedAt),"MMM d, h:mm a")||"\u2014"),a(2),S(e.PK!==t.selected.PK?10:-1)}}function jc(n,l){if(n&1&&(r(0,"ul",39),T(1,Qc,13,11,"li",43,Lc),s()),n&2){let e=m(2);a(),E(e.versionChain)}}function Yc(n,l){n&1&&(r(0,"p",40),p(1,"No version history."),s())}function Zc(n,l){if(n&1){let e=w();r(0,"div",23)(1,"div",30)(2,"cnp-button",31),h("click",function(){g(e);let i=m();return f(i.openEditModal(i.selected))}),_(3,"cnp-icon",32),p(4," Edit "),s(),r(5,"cnp-button",31),h("click",function(){g(e);let i=m();return f(i.openNewVersionModal(i.selected))}),_(6,"cnp-icon",33),p(7," Upload new version "),s(),r(8,"cnp-button",31),h("click",function(){g(e);let i=m();return f(i.download(i.selected))}),_(9,"cnp-icon",34),p(10," Download "),s()(),r(11,"dl",35)(12,"div")(13,"dt"),p(14,"Type"),s(),r(15,"dd"),p(16),s()(),r(17,"div")(18,"dt"),p(19,"Status"),s(),r(20,"dd")(21,"cnp-status-pill",27),p(22),s()()(),r(23,"div")(24,"dt"),p(25,"Line item"),s(),r(26,"dd"),p(27),s()(),r(28,"div")(29,"dt"),p(30,"Version"),s(),r(31,"dd"),p(32),s()(),v(33,Uc,5,2,"div"),v(34,Gc,6,2,"div"),s(),v(35,Wc,5,1,"section"),r(36,"section",36)(37,"h4",37),p(38,"Version history"),s(),v(39,qc,1,1,"cnp-skeleton",38)(40,jc,3,0,"ul",39)(41,Yc,2,0,"p",40),s()()}if(n&2){let e=m();a(16),y(e.selected.type),a(5),d("tone",e.statusTone(e.selected.status)),a(),y(e.statusLabels[e.selected.status]),a(5),y(e.selected.agendaItemTopic||"\u2014"),a(5),I("v",e.selected.version),a(),S(e.selected.fileName?33:-1),a(),S(e.selected.linkUrl?34:-1),a(),S(e.selected.description?35:-1),a(4),S(e.isLoadingVersions?39:e.versionChain.length?40:41)}}var $i=(()=>{class n{constructor(){this.validDate=Ge,this.assetTypes=ht,this.statuses=gt,this.statusLabels=qe,this.columns=[{key:"title",header:"Asset",truncate:!0},{key:"type",header:"Type"},{key:"version",header:"Version"},{key:"status",header:"Status"},{key:"agendaItemTopic",header:"Line item",truncate:!0},{key:"updatedAt",header:"Updated"},{key:"actions",header:"",ariaLabel:"Row actions",align:"end"}],this.rowActions=[{id:"edit",label:"Edit",icon:"edit"},{id:"new-version",label:"Upload new version",icon:"upload-horizontal"},{id:"download",label:"Download",icon:"file-download"},{separator:!0},{id:"delete",label:"Delete",icon:"delete",danger:!0}],this.rowKey=e=>e.PK,this.versionChain=[],this.isLoadingVersions=!1,this.service=b(_t),this.modal=b(Ee),this.toast=b(Se),this.utilities=b(ke),this.destroy$=new G,this.isLoading=!1,this.isCreating=!1,this.error=null,this.assets=[],this.selected=null,this.filterType="",this.filterStatus=""}get countLabel(){return`${this.assets.length} ${this.assets.length===1?"asset":"assets"}`}statusTone(e){switch(e){case"on-hold":return"danger";case"in-progress":return"info";case"approved":return"success";default:return"neutral"}}iconFor(e){switch(e){case"Video":case"Prediction Video":return"file-video";case"Presentation":case"Slides":return"screen";case"Script":return"file-document";
1case"Background Animation":case"Lower Third":return"image";case"Countdown":return"clock";default:return"file"}}onRowAction(e,t){switch(e){case"edit":this.openEditModal(t);break;case"new-version":this.openNewVersionModal(t);break;case"download":this.download(t);break;case"delete":this.remove(t);break}}ngOnInit(){this.load()}ngOnDestroy(){this.destroy$.next(),this.destroy$.complete()}trackByPK(e,t){return t.PK}title(e){let t=e.agendaItemTopic||e.name||"\u2014";return e.agendaSessionName?`${e.agendaSessionName} - ${t}`:t}applyFilters(){this.load()}resetFilters(){this.filterType="",this.filterStatus="",this.load()}openCreateModal(){let e=this.modal.open(Ct,{size:"md",backdrop:"static",windowClass:"cnp-dialog"}),t=e.componentInstance;t.submitHandler=i=>this.createAsset(i),e.result.catch(()=>{})}createAsset(e){return this.isCreating=!0,this.error=null,new Promise((t,i)=>{this.service.create(e.input).pipe(x(this.destroy$)).subscribe({next:o=>this.handleCreateResponse(o,e,t,i),error:o=>this.handleCreateError(o,i)})})}handleCreateResponse(e,t,i,o){if(e.success!==1||!e.data){let C=e.message??"Failed to create asset";this.isCreating=!1,this.error=C,this.toast.showDanger("Could not create asset",C),o(new Error(C));return}let{asset:c,uploadTicket:u}=e.data;u&&t.file?this.uploadFile(c,u,t.file,i,o):(this.afterCreate(c),this.toast.showSuccess("Successfully added",`Asset "${this.title(c)}" is ready.`),i())}uploadFile(e,t,i,o,c){this.service.uploadToTicket(t,i).pipe(x(this.destroy$)).subscribe({next:()=>{this.afterCreate(e),this.toast.showSuccess("Successfully uploaded",`Asset "${this.title(e)}" is ready.`),o()},error:u=>{let C=u?.message??"Upload to S3 failed";this.isCreating=!1,this.error=C,this.toast.showDanger("Upload failed",C),c(u instanceof Error?u:new Error(C))}})}handleCreateError(e,t){let i=e?.message??"Failed to create asset";this.isCreating=!1,this.error=i,this.toast.showDanger("Could not create asset",i),t(e instanceof Error?e:new Error(i))}select(e){this.selected=e,this.loadVersionChain(e)}closeDetail(){this.selected=null,this.versionChain=[]}loadVersionChain(e){if(!((e.version??1)>1||!!e.supersedesAssetPK)){this.versionChain=[e];return}this.isLoadingVersions=!0,this.versionChain=[],this.service.versions(e.PK).pipe(x(this.destroy$)).subscribe({next:i=>{this.isLoadingVersions=!1,i.success===1&&i.data&&(this.versionChain=i.data)},error:()=>{this.isLoadingVersions=!1}})}download(e){this.service.download(e.PK).pipe(x(this.destroy$)).subscribe({next:t=>{t.success===1&&t.data?globalThis.open(t.data.url,"_blank"):this.error=t.message??"No download available"}})}openEditModal(e){let t=this.modal.open(Vi,{size:"md",backdrop:"static",windowClass:"cnp-dialog"}),i=t.componentInstance;i.asset=e,i.submitHandler=o=>this.applyEdit(e,o),t.result.catch(()=>{})}applyEdit(e,t){return this.error=null,new Promise((i,o)=>{this.service.update(e.PK,t).pipe(x(this.destroy$)).subscribe({next:c=>{if(c.success!==1||!c.data){let C=c.message??"Failed to update asset";this.error=C,this.toast.showDanger("Could not save changes",C),o(new Error(C));return}let u=c.data;this.assets=this.assets.map(C=>C.PK===u.PK?u:C),this.selected?.PK===u.PK&&(this.selected=u,this.versionChain=this.versionChain.map(C=>C.PK===u.PK?u:C)),this.toast.showSuccess("Successfully saved",`Asset "${this.title(u)}" updated.`),i()},error:c=>{let u=c?.message??"Failed to update asset";this.error=u,this.toast.showDanger("Could not save changes",u),o(c instanceof Error?c:new Error(u))}})})}openNewVersionModal(e){let t=this.modal.open(Bi,{size:"md",backdrop:"static",windowClass:"cnp-dialog"}),i=t.componentInstance;i.asset=e,i.submitHandler=o=>this.applyNewVersion(e,o),t.result.catch(()=>{})}applyNewVersion(e,t){return this.error=null,new Promise((i,o)=>{this.service.createVersion(e.PK,t.input).pipe(x(this.destroy$)).subscribe({next:c=>this.handleNewVersionResponse(e,c,t,i,o),error:c=>{let u=c?.message??"Failed to upload new version";this.error=u,this.toast.showDanger("Could not upload version",u),o(c instanceof Error?c:new Error(u))}})})}handleNewVersionResponse(e,t,i,o,c){if(t.success!==1||!t.data){let k=t.message??"Failed to upload new version";this.error=k,this.toast.showDanger("Could not upload version",k),c(new Error(k));return}let{asset:u,uploadTicket:C}=t.data;if(C&&i.file){this.service.uploadToTicket(C,i.file).pipe(x(this.destroy$)).subscribe({next:()=>{this.afterNewVersion(e,u),this.toast.showSuccess("Successfully uploaded",`v${u.version} of "${this.title(u)}" is ready.`),o()},error:k=>{let A=k?.message??"Upload to S3 failed";this.error=A,this.toast.showDanger("Upload failed",A),c(k instanceof Error?k:new Error(A))}});return}this.afterNewVersion(e,u),this.toast.showSuccess("Successfully added",`v${u.version} of "${this.title(u)}" is ready.`),o()}afterNewVersion(e,t){this.assets=[t,...this.assets.filter(i=>i.PK!==e.PK)],this.selected=t,this.loadVersionChain(t)}remove(e){return P(this,null,function*(){let t=this.utilities.confirm({header:"Remove c
1ontent asset",message:`Delete "${this.title(e)}"? This deletes the asset and cannot be undone.`,confirmMessage:"Remove",confirmButtonClass:"btn-danger"});try{yield t.result}catch{return}this.service.remove(e.PK).pipe(x(this.destroy$)).subscribe({next:i=>{i.success===1?(this.assets=this.assets.filter(o=>o.PK!==e.PK),this.selected?.PK===e.PK&&(this.selected=null),this.toast.showSuccess("Successfully removed",`Asset "${this.title(e)}" deleted.`)):(this.error=i.message??"Failed to remove asset",this.toast.showDanger("Could not remove asset",this.error))}})})}afterCreate(e){this.assets=[e,...this.assets],this.isCreating=!1}load(){this.isLoading=!0,this.error=null;let e={};this.filterType&&(e.type=this.filterType),this.filterStatus&&(e.status=this.filterStatus),this.service.list(e).pipe(x(this.destroy$)).subscribe({next:t=>{if(this.isLoading=!1,t.success!==1){this.error=t.message??"Failed to load content assets";return}this.assets=t.data??[]},error:t=>{this.isLoading=!1,this.error=t?.message??"Failed to load content assets"}})}static{this.\u0275fac=function(t){return new(t||n)}}static{this.\u0275cmp=M({type:n,selectors:[["app-runsheet-content-grid"]],decls:33,vars:14,consts:[[1,"runsheet-page"],["heading","Content assets","description","Videos, decks, scripts and other assets shared across the runsheet.",3,"level"],["size","sm","loadingLabel","Adding content",3,"click","loading"],["name","create"],["tone","warning",3,"dismissible"],["padding","none"],["ariaLabel","Content asset list controls",3,"count"],["cnpToolbarStart","","label","Type","controlId","content-type-filter"],["cnpInput","","id","content-type-filter",3,"ngModelChange","ngModel"],["value",""],[3,"ngValue"],["label","Status","controlId","content-status-filter"],["cnpInput","","id","content-status-filter",3,"ngModelChange","ngModel"],["variant","link","size","sm",3,"click"],["ariaLabel","Content assets","loadingLabel","Loading content assets",3,"columns","rows","rowKey","loading"],["cnpCell","title"],["cnpCell","version"],["cnpCell","status"],["cnpCell","updatedAt"],["cnpCell","actions"],["cnpTableEmpty","","icon","content","heading","No assets yet","description","Add a video, deck or script to share it across the runsheet.",3,"headingLevel"],["cnpEmptyStatePrimary","","size","sm",3,"click"],[3,"closed","heading","open"],[1,"content-detail"],["tone","warning",3,"dismissed","dismissible"],["type","button",1,"content-title-button",3,"click"],[3,"name"],[3,"tone"],["align","end","size","sm",3,"select","iconOnly","ariaLabel","items"],["name","row-actions"],[1,"content-detail-actions"],["variant","secondary","size","sm",3,"click"],["name","edit"],["name","upload-horizontal"],["name","file-download"],[1,"content-detail-meta"],[1,"content-versions"],[1,"content-detail-heading"],["preset","text","label","Loading versions",3,"rows"],[1,"content-version-list"],[1,"content-versions-state"],["target","_blank","rel","noopener",3,"href"],[1,"content-detail-description"],[1,"content-version-row",3,"content-version-row-current"],[1,"content-version-row"],[1,"content-version-tag"],[1,"content-version-file"],[1,"content-version-date"],["variant","link","size","sm"]],template:function(t,i){t&1&&(r(0,"div",0)(1,"cnp-page-header",1)(2,"cnp-button",2),h("click",function(){return i.openCreateModal()}),_(3,"cnp-icon",3),p(4," Add content "),s()(),v(5,Dc,2,2,"cnp-callout",4),r(6,"cnp-card",5)(7,"cnp-toolbar",6)(8,"cnp-field",7)(9,"select",8),N("ngModelChange",function(c){return R(i.filterType,c)||(i.filterType=c),c}),h("ngModelChange",function(){return i.applyFilters()}),r(10,"option",9),p(11,"All"),s(),T(12,Rc,2,2,"option",10,z),s()(),r(14,"cnp-field",11)(15,"select",12),N("ngModelChange",function(c){return R(i.filterStatus,c)||(i.filterStatus=c),c}),h("ngModelChange",function(){return i.applyFilters()}),r(16,"option",9),p(17,"All"),s(),T(18,Nc,2,2,"option",10,z),s()(),r(20,"cnp-button",13),h("click",function(){return i.resetFilters()}),p(21,"Reset"),s()(),r(22,"cnp-table",14),Ye(23,Oc,3,2,"ng-template",15)(24,Vc,1,1,"ng-template",16)(25,Bc,2,2,"ng-template",17)(26,$c,2,4,"ng-template",18)(27,zc,2,3,"ng-template",19),r(28,"cnp-empty-state",20)(29,"cnp-button",21),h("click",function(){return i.openCreateModal()}),p(30,"Add content"),s()()()(),r(31,"cnp-drawer",22),h("closed",function(){return i.closeDetail()}),v(32,Zc,42,9,"div",23),s()()),t&2&&(a(),d("level",2),a(),d("loading",i.isCreating),a(3),S(i.error?5:-1),a(2),d("count",i.countLabel),a(2),D("ngModel",i.filterType),a(3),E(i.assetTypes),a(3),D("ngModel",i.filterStatus),a(3),E(i.statuses),a(4),d("c
1olumns",i.columns)("rows",i.assets)("rowKey",i.rowKey)("loading",i.isLoading),a(6),d("headingLevel",3),a(3),d("heading",i.selected?i.title(i.selected):"Content asset")("open",!!i.selected),a(),S(i.selected?32:-1))},dependencies:[Ue,le,se,ee,te,J,W,pe,L,Y,Me,at,ze,Ae,ve,j,V,q,Pe,rt,ot,$e],styles:[".runsheet-page[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:var(--cnp-space-5)}.runsheet-actions[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:center;gap:var(--cnp-space-3)}.content-title-button[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:var(--cnp-space-2);padding:0;font:inherit;color:var(--cnp-color-link);background:transparent;border:0;cursor:pointer;text-align:start}.content-title-button[_ngcontent-%COMP%]:hover{text-decoration:underline}.content-title-button[_ngcontent-%COMP%]:focus-visible{outline:2px solid var(--cnp-color-focus-ring);outline-offset:2px;border-radius:var(--cnp-radius-element)}.content-detail[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:var(--cnp-space-5)}.content-detail-actions[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;gap:var(--cnp-space-2)}.content-detail-meta[_ngcontent-%COMP%]{display:grid;grid-template-columns:minmax(6rem,auto) 1fr;gap:var(--cnp-space-2) var(--cnp-space-4);margin:0}.content-detail-meta[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{display:contents}.content-detail-meta[_ngcontent-%COMP%] dt[_ngcontent-%COMP%]{font-size:var(--cnp-font-size-label);color:var(--cnp-color-text-muted)}.content-detail-meta[_ngcontent-%COMP%] dd[_ngcontent-%COMP%]{margin:0;font-size:var(--cnp-font-size-body);color:var(--cnp-color-text-body)}.content-detail-heading[_ngcontent-%COMP%]{margin:0 0 var(--cnp-space-2);font-size:var(--cnp-font-size-body);font-weight:var(--cnp-font-weight-bold);color:var(--cnp-color-text-heading)}.content-detail-description[_ngcontent-%COMP%]{margin:0;max-width:var(--cnp-font-measure-prose);line-height:var(--cnp-font-leading-base)}.content-versions-state[_ngcontent-%COMP%]{display:flex;align-items:center;gap:var(--cnp-space-2);margin:0;font-size:var(--cnp-font-size-label);color:var(--cnp-color-text-muted)}.content-version-list[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:var(--cnp-space-2);margin:0;padding:0;list-style:none}.content-version-row[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:center;gap:var(--cnp-space-2);padding:var(--cnp-space-2) var(--cnp-space-3);font-size:var(--cnp-font-size-label);background:var(--cnp-color-bg-card);border:1px solid var(--cnp-color-border);border-radius:var(--cnp-radius-element)}.content-version-row-current[_ngcontent-%COMP%]{border-color:var(--cnp-color-action);background:var(--cnp-color-action-tint)}.content-version-tag[_ngcontent-%COMP%]{font-weight:var(--cnp-font-weight-semibold);color:var(--cnp-color-text-heading)}.content-version-file[_ngcontent-%COMP%]{flex:1 1 8rem;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--cnp-color-text-muted)}.content-version-date[_ngcontent-%COMP%]{color:var(--cnp-color-text-muted);font-variant-numeric:tabular-nums}"]})}}return n})();var Aa=(()=>{class n{constructor(){this.http=b(De)}list(e={}){let t=new Xe;return e.speakerPK&&(t=t.set("speakerPK",e.speakerPK)),e.day&&(t=t.set("day",e.day)),this.http.get(`${O.api}/rehearsals`,{params:t})}view(e){return this.http.get(`${O.api}/rehearsals/${e}`)}create(e){return this.http.post(`${O.api}/rehearsals`,e)}update(e,t){return this.http.put(`${O.api}/rehearsals/${e}`,t)}remove(e){return this.http.delete(`${O.api}/rehearsals/${e}`)}covers(e){return this.http.get(`${O.api}/rehearsals/${e}/covers`)}duplicate(e){return this.http.post(`${O.api}/rehearsals/${e}/duplicate`,{})}static{this.\u0275fac=function(t){return new(t||n)}}static{this.\u0275prov=X({token:n,factory:n.\u0275fac,providedIn:"root"})}}return n})();var Xc=(n,l)=>l.PK;function Jc(n,l){if(n&1&&(r(0,"option",11),p(1),s()),n&2){let e=l.$implicit;d("value",e.PK),a(),y(e.name)}}function ed(n,l){if(n&1&&(r(0,"option",11),p(1),s()),n&2){let e=l.$implicit,t=m();d("value",e),a(),y(t.rehearsalTypeLabels[e])}}var Ui=(()=>{class n{errorFor(e,t){let i=this.form.controls[e];return i.invalid&&i.touched?t:""}get timeMenuItems(){return this.isSaving?this.timeMenuItemsBase.map(e=>Z($({},e),{disabled:!0})):this.timeMenuItemsBase}constructor(e,t){this.fb=e,this.activeModal=t,this.speakers=[],this.timeMenuItemsBase=td().map(i=>({id:i.value,label:i.label})),this.rehearsalTypes=ni,this.rehearsalTypeLabels=oi,this.isSaving=!1}ngOnInit(){let e=new Date,t={year:e.getFullYear(),month:e.getMonth()+1,day:e.getDate()};this.form=this.fb.group({allocatedSpeakerPK:["",[F.required]],day:[t,[F.required]],scheduledTime:["09:00",[F.required,F.pattern(/^\d{2}:\d{2}$/)]],duration:[30,[F.required,F.min(5),F.max(480)]],type:[""],confirmed:[!1],notes:[""]})}
1get isInvalid(){return this.form.invalid}get isConfirmed(){return!!this.form.controls.confirmed.value}setConfirmed(e){this.form.controls.confirmed.setValue(e)}selectTimeFromDropdown(e){this.isSaving||this.form.get("scheduledTime")?.setValue(e)}submit(){return P(this,null,function*(){if(this.form.invalid||this.isSaving){this.form.markAllAsTouched();return}let e=this.form.value,t=e.day,i={allocatedSpeakerPK:e.allocatedSpeakerPK,scheduledTime:e.scheduledTime,duration:Number(e.duration),day:t?id(t):void 0,notes:(e.notes??"").trim()||void 0,type:e.type||void 0,confirmed:!!e.confirmed};if(!this.submitHandler){this.activeModal.close(i);return}this.isSaving=!0,this.form.disable({emitEvent:!1});try{yield this.submitHandler(i),this.activeModal.close(i)}catch{this.isSaving=!1,this.form.enable({emitEvent:!1})}})}dismiss(){this.isSaving||this.activeModal.dismiss()}static{this.\u0275fac=function(t){return new(t||n)(ie(ge),ie(_e))}}static{this.\u0275cmp=M({type:n,selectors:[["app-runsheet-add-rehearsal-modal"]],inputs:{speakers:"speakers"},decls:41,vars:22,consts:[["dp","ngbDatepicker"],[1,"modal-header"],[1,"modal-title"],["variant","ghost","size","sm","ariaLabel","Close",1,"dialog-close",3,"click","iconOnly"],["name","close"],["novalidate","",3,"ngSubmit","formGroup"],[1,"modal-body"],[1,"rehearsal-modal"],["label","Speaker","controlId","add-reh-speaker",3,"required","error"],["cnpInput","","id","add-reh-speaker","formControlName","allocatedSpeakerPK"],["value","","disabled",""],[3,"value"],[1,"rehearsal-modal-row"],["label","Day","controlId","add-reh-day",3,"required","error"],["cnpInput","","id","add-reh-day","formControlName","day","ngbDatepicker","","container","body","placeholder","YYYY-MM-DD"],["cnpFieldSuffix","","variant","ghost","size","sm","ariaLabel","Open calendar",3,"click","iconOnly","disabled"],["name","calendar","size","sm"],["label","Start time","controlId","add-reh-time",3,"error"],["cnpInput","","id","add-reh-time","formControlName","scheduledTime","mask","Hh:m0",3,"showMaskTyped","leadZeroDateTime","dropSpecialCharacters"],["cnpFieldSuffix","","size","sm","align","end","ariaLabel","Pick a preset start time",3,"select","iconOnly","items"],["name","clock","size","sm"],["label","Duration (min)","controlId","add-reh-duration",3,"error"],["cnpInput","","id","add-reh-duration","type","number","formControlName","duration","min","5","max","480","step","5"],[1,"rehearsal-modal-row","rehearsal-modal-row-split"],["label","Type","controlId","add-reh-type",3,"optionalMarker"],["cnpInput","","id","add-reh-type","formControlName","type"],["value",""],["label","Confirmed","inputId","add-reh-confirmed",3,"changed","checked","disabled"],["label","Notes","controlId","add-reh-notes",3,"optionalMarker"],["cnpInput","","id","add-reh-notes","rows","3","formControlName","notes","placeholder","Anything the speaker should know about the rehearsal slot\u2026"],[1,"modal-footer"],["variant","secondary",3,"click","disabled"],["type","submit","loadingLabel","Scheduling rehearsal",3,"disabled","loading"]],template:function(t,i){if(t&1){let o=w();r(0,"div",1)(1,"h5",2),p(2,"Schedule rehearsal"),s(),r(3,"cnp-button",3),h("click",function(){return g(o),f(i.dismiss())}),_(4,"cnp-icon",4),s()(),r(5,"form",5),h("ngSubmit",function(){return g(o),f(i.submit())}),r(6,"div",6)(7,"div",7)(8,"cnp-field",8)(9,"select",9)(10,"option",10),p(11,"Pick a speaker\u2026"),s(),T(12,Jc,2,2,"option",11,Xc),s()(),r(14,"div",12)(15,"cnp-field",13),_(16,"input",14,0),r(18,"cnp-button",15),h("click",function(){g(o);let u=Ze(17);return f(u.toggle())}),_(19,"cnp-icon",16),s()(),r(20,"cnp-field",17),_(21,"input",18),r(22,"cnp-dropdown",19),h("select",function(u){return g(o),f(i.selectTimeFromDropdown(u))}),_(23,"cnp-icon",20),s()(),r(24,"cnp-field",21),_(25,"input",22),s()(),r(26,"div",23)(27,"cnp-field",24)(28,"select",25)(29,"option",26),p(30,"\u2014"),s(),T(31,ed,2,2,"option",11,z),s()(),r(33,"cnp-checkbox",27),h("changed",function(u){return g(o),f(i.setConfirmed(u))}),s()(),r(34,"cnp-field",28),_(35,"textarea",29),s()()(),r(36,"div",30)(37,"cnp-button",31),h("click",function(){return g(o),f(i.dismiss())}),p(38,"Cancel"),s(),r(39,"cnp-button",32),p(40," Schedule rehearsal "),s()()()}t&2&&(a(3),d("iconOnly",!0),a(2),d("formGroup",i.form),a(3),d("required",!0)("error",i.errorFor("allocatedSpeakerPK","Speaker is required.")),a(4),E(i.speakers),a(3),d("required",!0)("error",i.errorFor("day","Day is required.")),a(3),d("iconOnly",!0)("disabled",i.isSaving),a(2),d("error",i.errorFor("scheduledTime","Enter a valid time.")),a(),d("showMaskTyped",!0)("leadZeroDateTime",!0)("dropSpecialCharacters",!1),a(),d("iconOnly",!0)("items",i.timeMenuItems),a(2),d("error",i.errorFor("duration","5 \u2013 480 min.")),a(3),d("optionalMarker",!0),a(4),E(i.rehearsalTypes),a(2),d("checked",i.isConfirmed)("disabled",i.isSaving),a(),d("optionalMarker",!0),a(3),d("disabled",i.isSaving),a(2),d("disabled",i.isInvalid)("loading",i.isSaving))},dependencies:[fe,me,ee,te,Q,Ut,J,W,de,Wt,Gt,ue,he,qt,Je,L,Re,Ae,j,V,q],styles:[".rehearsal
1-modal[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:var(--cnp-space-4)}.rehearsal-modal-row[_ngcontent-%COMP%]{display:grid;grid-template-columns:5fr 4fr 3fr;gap:var(--cnp-space-4);align-items:start}.rehearsal-modal-row-split[_ngcontent-%COMP%]{grid-template-columns:2fr 1fr;align-items:center}@media (width <= 40rem){.rehearsal-modal-row[_ngcontent-%COMP%], .rehearsal-modal-row-split[_ngcontent-%COMP%]{grid-template-columns:minmax(0,1fr)}}"]})}}return n})();function td(){let n=[];for(let l=0;l<24;l++)for(let e=0;e<60;e+=30){let t=`${zi(l)}:${zi(e)}`;n.push({value:t,label:t})}return n}function zi(n){return n.toString().padStart(2,"0")}function id(n){return`${n.year}-${zi(n.month)}-${zi(n.day)}`}var nd=(n,l)=>l.itemPK+":"+l.role;function od(n,l){if(n&1){let e=w();r(0,"cnp-callout",32),h("dismissed",function(){g(e);let i=m();return f(i.error=null)}),p(1),s()}if(n&2){let e=m();d("dismissible",!0),a(),y(e.error)}}function ad(n,l){if(n&1&&(r(0,"option",10),p(1),s()),n&2){let e=l.$implicit,t=m();d("value",e),a(),y(t.rehearsalTypeLabels[e])}}function rd(n,l){if(n&1&&(r(0,"span",33)(1,"span",34),p(2),s(),r(3,"span",35),p(4),s()()),n&2){let e=l.$implicit;a(2),y(e.day||"\u2014"),a(2),ce("",e.scheduledTime||"\u2014"," \xB7 ",e.duration," min")}}function sd(n,l){if(n&1&&_(0,"cnp-person-row",36),n&2){let e=l.$implicit,t=m();d("name",t.speakerName(e))("meta",e.notes||"")}}function ld(n,l){if(n&1&&p(0),n&2){let e=l.$implicit,t=m();I(" ",e.type?t.rehearsalTypeLabels[e.type]:"\u2014"," ")}}function cd(n,l){if(n&1){let e=w();r(0,"cnp-toggle",37),h("toggled",function(){let i=g(e).$implicit,o=m();return f(o.toggleConfirmed(i))}),s()}if(n&2){let e=l.$implicit,t=m();d("checked",!!e.confirmed)("ariaLabel","Confirmed \u2014 "+t.speakerName(e))}}function dd(n,l){if(n&1){let e=w();r(0,"cnp-button",38),h("click",function(){let i=g(e).$implicit,o=m();return f(o.openCovers(i))}),_(1,"cnp-icon",39),p(2),s()}if(n&2){let e=l.$implicit,t=m();a(2),I(" ",t.coversSummary(e)," ")}}function pd(n,l){if(n&1){let e=w();r(0,"cnp-dropdown",40),h("select",function(i){let o=g(e).$implicit,c=m();return f(c.setStatus(o,i))}),r(1,"cnp-status-pill",41),p(2),s()()}if(n&2){let e=l.$implicit,t=m();d("ariaLabel","Rehearsal status for "+t.speakerName(e)+": "+t.statusLabel(e.status)+". Change status")("items",t.statusMenuItems),a(),d("tone",t.statusTone(e.status)),a(),y(t.statusLabel(e.status))}}function md(n,l){if(n&1&&(p(0),Te(1,"date")),n&2){let e=l.value,t=m();y(Ve(1,1,t.validDate(e),"MMM d, h:mm a")||"\u2014")}}function ud(n,l){if(n&1){let e=w();r(0,"cnp-dropdown",42),h("select",function(i){let o=g(e).$implicit,c=m();return f(c.onRowAction(i,o))}),_(1,"cnp-icon",43),s()}if(n&2){let e=l.$implicit,t=m();d("iconOnly",!0)("ariaLabel","Actions for "+t.speakerName(e))("items",t.rowActions)}}function hd(n,l){if(n&1){let e=w();r(0,"cnp-callout",32),h("dismissed",function(){g(e);let i=m();return f(i.error=null)}),p(1),s()}if(n&2){let e=m();d("dismissible",!0),a(),y(e.error)}}function gd(n,l){n&1&&_(0,"cnp-skeleton",26),n&2&&d("rows",3)}function fd(n,l){n&1&&_(0,"cnp-empty-state",27),n&2&&d("headingLevel",3)}function _d(n,l){if(n&1){let e=w();r(0,"li")(1,"cnp-checkbox",44),h("changed",function(){let i=g(e).$implicit,o=m(2);return f(o.toggleCandidate(i))}),s()()}if(n&2){let e=l.$implicit;a(),d("label",e.topic||"(untitled)")("description",e.role+" \xB7 Stage "+e.stage+" \xB7 "+e.duration+"m")("checked",e.selected)}}function Cd(n,l){if(n&1&&(r(0,"ul",28),T(1,_d,2,3,"li",null,nd),s()),n&2){let e=m();a(),E(e.coverCandidates)}}var Gi=(()=>{class n{constructor(){this.validDate=Ge,this.statusLabel=Xi,this.statusTone=co,this.statusMenuItems=so.map(e=>({id:e,label:Xi(e)})),this.rehearsalTypes=ni,this.rehearsalTypeLabels=oi,this.service=b(Aa),this.speakerService=b(lt),this.modal=b(Ee),this.toast=b(Se),this.utilities=b(ke),this.destroy$=new G,this.isLoading=!1,this.error=null,this.rehearsals=[],this.filteredRehearsals=[],this.typeFilter="",this.dayFilter="",this.speakers=[],this.speakerNameByPK=new Map,this.coversForPK=null,this.coverCandidates=[],this.isLoadingCovers=!1,this.isSavingCovers=!1,this.columns=[{key:"day",header:"When"},{key:"speaker",header:"Speaker"},{key:"type",header:"Type"},{key:"confirmed",header:"Confirmed"},{key:"covers",header:"Covers"},{key:"status",header:"Status"},{key:"lastUpdate",header:"Updated"},{key:"actions",header:"",ariaLabel:"Row actions",align:"end"}],this.rowActions=[{id:"duplicate",label:"Duplicate",icon:"copy"},{separator:!0},{id:"delete",label:"Delete",icon:"delete",danger:!0}],this.rowKey=e=>e.PK}ngOnInit(){this.speakerService.onChange.pipe(x(this.destroy$)).subscribe(e=>{this.speakers=e??[],this.speakerNameByPK=new Map(this.speakers.map(t=>[t.PK,t.name]))}),this.speakerService.load().catch(e=>console.warn("[Rehearsals] speaker load failed",e)),this.load()}ngOnDestroy(){this.destroy$.next(),this.destroy$.complete()}get countLabel(){return`${this.filteredRehearsals.length} of ${this.rehearsals.length} rehearsals`}get hasFilters(){return!!this.typeFilter||!!this.dayFilter}onRowAction(e,t){e==="duplicate"?this.duplicate(t):e==="delete"&&this.remove(t)}onEmptyAction(){if(this.hasFilters){this.typeFilter="",this.dayFilter="",this.applyFilters();return}this.openCreateModal()}speakerName(e){return this.speakerNameByPK.get(e.allocatedSpeakerPK)??e.allocatedSpeakerFallback??e.allocatedSpeakerPK}openCreateModal(){let e=this.modal.open(Ui,{size:"md",backdrop:"static",windowClass:"cnp-dialog"}),t=e.componentInstance;t.speakers=this.speakers.map(i=>({PK:i.PK,name:i.name})),t.submitHandler=i=>this.createRehearsal(i),e.result.catch(()=>{})}createRehearsal(e){return this.error=null,new Promise((t,i)=>{this.service.create({allocatedSpeakerPK:e.allocatedSpeakerPK,scheduledTime:e.scheduledTime,duration:e.duration,day:e.day,notes:e.notes,type:e.type,confirmed:e.confirmed,status:"scheduled"}).pipe(x(this.destroy$)).subscribe({next:o=>this.handleCreateResult(o,e,t,i),error:o=>this.handleCreateError(o,i)})})}handleCreateResult(e,t,i,o){if(e.success!==1||!e.data){let c=e.message??"Failed to create rehearsal";this.error=c,this.toast.showDanger("Could not schedule rehearsal",c),o(new Error(c));return}this.rehearsals=[...this.rehearsals,e.data].sort((c,u)=>(c.scheduledTime??"").localeCompare(u.scheduledTime??"")),this.applyFilters(),this.toast.showSuccess("Successfully scheduled",`Rehearsal set for ${t.day??""} ${t.scheduledTime}`.trim()),i()}handleCreateError(e,t){let i=e?.message??"Failed to create rehearsal";this.error=i,this.toast.showDanger("Could not schedule rehearsal",i),t(e instanceof Error?e:new Error(i))}applyFilters(){this.filteredRehearsals=this.rehearsals.filter(e=>!(this.typeFilter&&e.type!==this.typeFilter||this.dayFilter&&e.day!==this.dayFilter))}toggleConfirmed(e){let t=!e.confirmed;this.service.update(e.PK,{confirmed:t}).pipe(x(this.destroy$)).subscribe({next:i=>{i.success===1&&i.data&&(this.rehearsals=this.rehearsals.map(o=>o.PK===e.PK?i.data:o),this.applyFilters())}})}duplicate(e){this.service.duplicate(e.PK).pipe(x(this.destroy$)).subscribe({next:t=>{t.success===1&&t.data?(this.rehearsals=[...this.rehearsals,t.data].sort((i,o)=>(i.scheduledTime??"").localeCompare(o.scheduledTime??"")),this.applyFilters(),this.toast.showSuccess("Successfully duplicated","Confirm with talent before locking the new slot.")):(this.error=t.message??"Failed to duplicate rehearsal",this.toast.showDanger("Could not duplicate rehearsal",this.error))},error:t=>{this.error=t?.message??"Failed to duplicate rehearsal",this.toast.showDanger("Could not duplicate rehearsal",this.error)}})}setStatus(e,t){this.service.update(e.PK,{status:t}).pipe(x(this.destroy$)).subscribe({next:i=>{i.success===1&&i.data&&(this.rehearsals=this.rehearsals.map(o=>o.PK===e.PK?i.data:o),this.applyFilters())}})}remove(e){return P(this,null,function*(){let t=this.utilities.confirm({header:"Delete rehearsal",message:`Delete the ${e.day??""} ${e.scheduledTime??""} rehearsal for ${this.speakerName(e)}? This cannot be undone.`.trim(),confirmMessage:"Delete",confirmButtonClass:"btn-danger"});try{yield t.result}catch{return}this.service.remove(e.PK).pipe(x(this.destroy$)).subscribe({next:i=>{i.success===1?(this.rehearsals=this.rehearsals.filter(o=>o.PK!==e.PK),this.applyFilters(),this.coversForPK===e.PK&&(this.coversForPK=null,this.coverCandidates=[]),this.toast.showSuccess("Successfully removed",`Rehearsal on ${e.day??""} ${e.scheduledTime??""} deleted.`.trim())):(this.error=i.message??"Failed to remove rehearsal",this.toast.showDanger("Could not remove rehearsal",this.error))}})})}openCovers(e){if(this.coversForPK===e.PK){this.closeCovers();return}this.coversForPK=e.PK,this.isLoadingCovers=!0,this.coverCandidates=[],this.service.covers(e.PK).pipe(x(this.destroy$)).subscribe({next:t=>{this.isLoadingCovers=!1,t.success===1?this.coverCandidates=t.data??[]:this.error=t.message??"Failed to load covers"},error:t=>{this.isLoadingCovers=!1,this.error=t?.message??"Failed to load covers"}})}closeCovers(){this.coversForPK=null,this.coverCandidates=[]}toggleCandidate(e){e.selected=!e.selected}saveCovers(){if(!this.coversForPK)return;let e=this.coversForPK,t=this.coverCandidates.filter(i=>i.selected).map(i=>i.itemPK);this.isSavingCovers=!0,this.service.update(e,{coveredEngagementPKs:t}).pipe(x(this.destroy$)).subscribe({next:i=>{this.isSavingCovers=!1,i.success===1&&i.data?(this.rehearsals=this.rehearsals.map(o=>o.PK===e?i.data:o),this.closeCovers()):this.error=i.message??"Failed to save covers"},error:i=>{this.isSavingCovers=!1,this.error=i?.message??"Failed to save covers"}})}coversSummary(e){let t=e.coveredEngagementPKs?.length??0;return t===0?"None":`${t} engagement${t===1?"":"s"}`}load(){this.isLoading=!0,this.error=null,this.service.list().pipe(x(this.destroy$)).subscribe({next:e=>{if(this.isLoading=!1,e.success!==1){this.error=e.message??"Failed to load rehearsals";return}this.rehearsals=e.data??[],this.applyFilters()},error:e=>{this.isLoading=!1,this.error=e?.message??"Failed to load rehearsals"}})}static{this.\u0275fac=function(t){return new(t||n)}}static{this.\u0275cmp=M({type:n,selectors:[["app-runsheet-rehearsals"]],decls:40,vars:19,consts:[[1,"runsheet-page"],["heading","Rehearsals","description","Schedule speaker run-throughs and tag the engagements each one covers.",3,"level"],["size","sm",3,"click"],["name","create"],["tone","warning",3,"dismissible"],["padding","none"],["ariaLabel","Rehearsal list controls",3,"count"],["cnpToolbarStart","","label","Type","controlId","rehearsal
1-type-filter"],["cnpInput","","id","rehearsal-type-filter",3,"ngModelChange","ngModel"],["value",""],[3,"value"],["cnpToolbarStart","","label","Day","controlId","rehearsal-day-filter"],["cnpInput","","id","rehearsal-day-filter","type","date",3,"ngModelChange","ngModel"],["ariaLabel","Rehearsals","loadingLabel","Loading rehearsals",3,"columns","rows","rowKey","loading"],["cnpCell","day"],["cnpCell","speaker"],["cnpCell","type"],["cnpCell","confirmed"],["cnpCell","covers"],["cnpCell","status"],["cnpCell","lastUpdate"],["cnpCell","actions"],["cnpTableEmpty","",3,"icon","heading","description","headingLevel"],["cnpEmptyStatePrimary","","size","sm",3,"click","variant"],["heading","Engagements covered by this rehearsal",3,"closed","open"],[1,"rehearsals-covers-hint"],["preset","text","label","Loading engagements",3,"rows"],["icon","list-task","heading","No engagements for this speaker yet","description","Add them to an agenda item first, then come back.",3,"headingLevel"],[1,"rehearsals-covers-list"],["cnpDrawerFooter",""],["variant","secondary",3,"click"],["loadingLabel","Saving covers",3,"click","loading"],["tone","warning",3,"dismissed","dismissible"],[1,"rehearsals-when"],[1,"rehearsals-when-day"],[1,"rehearsals-when-time"],["size","sm",3,"name","meta"],[3,"toggled","checked","ariaLabel"],["variant","link","size","sm",3,"click"],["name","link"],["size","sm","align","start",3,"select","ariaLabel","items"],[3,"tone"],["align","end","size","sm",3,"select","iconOnly","ariaLabel","items"],["name","row-actions"],[3,"changed","label","description","checked"]],template:function(t,i){t&1&&(r(0,"div",0)(1,"cnp-page-header",1)(2,"cnp-button",2),h("click",function(){return i.openCreateModal()}),_(3,"cnp-icon",3),p(4," Schedule rehearsal "),s()(),v(5,od,2,2,"cnp-callout",4),r(6,"cnp-card",5)(7,"cnp-toolbar",6)(8,"cnp-field",7)(9,"select",8),N("ngModelChange",function(c){return R(i.typeFilter,c)||(i.typeFilter=c),c}),h("ngModelChange",function(){return i.applyFilters()}),r(10,"option",9),p(11,"All"),s(),T(12,ad,2,2,"option",10,z),s()(),r(14,"cnp-field",11)(15,"input",12),N("ngModelChange",function(c){return R(i.dayFilter,c)||
1(i.dayFilter=c),c}),h("ngModelChange",function(){return i.applyFilters()}),s()()(),r(16,"cnp-table",13),Ye(17,rd,5,3,"ng-template",14)(18,sd,1,2,"ng-template",15)(19,ld,1,1,"ng-template",16)(20,cd,1,2,"ng-template",17)(21,dd,3,1,"ng-template",18)(22,pd,3,4,"ng-template",19)(23,md,2,4,"ng-template",20)(24,ud,2,3,"ng-template",21),r(25,"cnp-empty-state",22)(26,"cnp-button",23),h("click",function(){return i.onEmptyAction()}),p(27),s()()()(),r(28,"cnp-drawer",24),h("closed",function(){return i.closeCovers()}),v(29,hd,2,2,"cnp-callout",4),r(30,"p",25),p(31," Tick every engagement this rehearsal run-through covers \u2014 one slot can cover multiple appearances. "),s(),v(32,gd,1,1,"cnp-skeleton",26)(33,fd,1,1,"cnp-empty-state",27)(34,Cd,3,0,"ul",28),r(35,"div",29)(36,"cnp-button",30),h("click",function(){return i.closeCovers()}),p(37,"Cancel"),s(),r(38,"cnp-button",31),h("click",function(){return i.saveCovers()}),p(39,"Save covers"),s()()()()),t&2&&(a(),d("level",2),a(4),S(i.error?5:-1),a(2),d("count",i.countLabel),a(2),D("ngModel",i.typeFilter),a(3),E(i.rehearsalTypes),a(3),D("ngModel",i.dayFilter),a(),d("columns",i.columns)("rows",i.filteredRehearsals)("rowKey",i.rowKey)("loading",i.isLoading),a(9),d("icon",i.hasFilters?"filter":"mic")("heading",i.hasFilters?"No rehearsals match your filters":"No rehearsals scheduled yet")("description",i.hasFilters?"Clear the type or day filter to see the rest.":"Schedule a run-through and tag the engagements it covers.")("headingLevel",2),a(),d("variant",i.hasFilters?"secondary":"primary"),a(),I(" ",i.hasFilters?"Clear filters":"Schedule rehearsal"," "),a(),d("open",!!i.coversForPK),a(),S(i.error?29:-1),a(3),S(i.isLoadingCovers?32:i.coverCandidates.length?34:33),a(6),d("loading",i.isSavingCovers))},dependencies:[Ue,Pe,le,se,ee,te,Q,J,W,pe,L,Y,Me,at,Re,ze,Ae,ve,j,V,q,ei,rt,ti,ot,$e],styles:[".runsheet-page[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:var(--cnp-space-5)}.runsheet-actions[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:center;gap:var(--cnp-space-3)}.rehearsals-when[_ngcontent-%COMP%]{display:flex;flex-direction:column}.rehearsals-when-day[_ngcontent-%COMP%]{font-weight:var(--cnp-font-weight-semibold);color:var(--cnp-color-text-body)}.rehearsals-when-time[_ngcontent-%COMP%]{font-size:var(--cnp-font-size-label);font-variant-numeric:tabular-nums;color:var(--cnp-color-text-muted)}.rehearsals-covers-hint[_ngcontent-%COMP%]{margin:0 0 var(--cnp-space-4);max-width:var(--cnp-font-measure-prose);font-size:var(--cnp-font-size-label);color:var(--cnp-color-text-muted)}.rehearsals-covers-list[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:var(--cnp-space-3);margin:0;padding:0;list-style:none}"]})}}return n})();var Ma=["host","moderator","panelist","speaker","guest","other"],Ia=["headset","handheld","lavalier","lectern","none","other"],Fa=["floor","on-stage","comfort-monitor","none","other"],Ka=["required","optional","not-needed"],La=["pending","received","reviewed","final","not-applicable"],Da=["not-scheduled","scheduled","completed","no-show","cancelled"],Ra=["invited","pending","confirmed","cancelled","declined"],Na=["not-sent","sent","opened","accepted","declined"],Oa=["not-registered","registered","attended","no-show"],Va=["unpublished","published","hidden"],Ba={host:"Host",moderator:"Moderator",panelist:"Panelist",speaker:"Speaker",guest:"Guest",other:"Other"},$a={headset:"Headset",handheld:"Handheld",lavalier:"Lavalier",lectern:"Lectern",none:"None",other:"Other"},za={floor:"Floor","on-stage":"On-stage","comfort-monitor":"Comfort monitor",none:"None",other:"Other"},Ua={required:"Required",optional:"Optional","not-needed":"Not needed"},Ga={pending:"Pending",received:"Received",reviewed:"Reviewed",final:"Final","not-applicable":"Not applicable"},Wa={"not-scheduled":"Not scheduled",scheduled:"Scheduled",completed:"Completed","no-show":"No-show",cancelled:"Cancelled"},qa={invited:"Invited",pending:"Pending",confirmed:"Confirmed",cancelled:"Cancelled",declined:"Declined"},Ha={"not-sent":"Not sent",sent:"Sent",opened:"Opened",accepted:"Accepted",declined:"Declined"},Qa={"not-registered":"Not registered",registered:"Registered",attended:"Attended","no-show":"No-show"},ja={unpublished:"Unpublished",published:"Published",hidden:"Hidden"};var vd=(n,l)=>l.speaker.PK,Sd=(n,l)=>l.label;function yd(n,l){if(n&1){let e=w();r(0,"cnp-callout",14),h("dismissed",function(){g(e);let i=m();return f(i.error=null)}),p(1),s()}if(n&2){let e=m();d("dismissible",!0),a(),y(e.error)}}function bd(n,l){if(n&1&&(r(0,"option",9),p(1),s()),n&2){let e=l.$implicit;d("value",e),a(),y(e)}}function xd(n,l){n&1&&_(0,"cnp-skeleton",11),n&2&&d("rows",6)}function wd(n,l){n&1&&_(0,"cnp-empty-state",12),n&2&&d("headingLevel",3)}function Td(n,l){if(n&1&&(r(0,"cnp-status-pill",19),p(1),s()),n&2){let e=l.$implicit;d("tone",e.tone==="unset"?"neutral":"info"),a(),y(e.label)}}function Ed(n,l){if(n&1&&(r(0,"option",9),p(1),s()),n&2){let e=l.$implicit,t=m(3);d("value",e),a(),y(t.onStageRoleLabels[e])}}function kd(n,l){if(n&1&&(r(0,"option",9),p(1),s()),n&2){let e=l.$implicit,t=m(3);d("value",e),a(),y(t.speakerWorkflowStatusLabels[e])}}function Pd(n,l){if(n&1&&(r(0,"option",9),p(1),s()),n&2){let e=l.$implicit,t=m(3);d("value",e),a(),y(t.invitationStatusLabels[e])}}function Ad(n,l){if(n&1&&(r(0,"option",9),p(1),s()),n&2){let e=l.$implicit,t=m(3);d("value",e),a(),y(t.registrationStatusLabels[e])}}function Md(n,l){if(n&1&&(r(0,"option",9),p(1),s()),n&2){let e=l.$implicit,t=m(3);d("value",e),a(),y(t.websitePublishingStatusLabels[e])}}function Id(n,l){if(n&1&&(r(0,"option",9),p(1),s()),n&2){let e=l.$implicit,t=m(3);d("value",e),a(),y(t.monitorPreferenceLabels[e])}}function Fd(n,l){if(n&1&&(r(0,"option",9),p(1),s()),n&2){let e=l.$implicit,t=m(3);d("value",e),a(),y(t.clockPreferenceLabels[e])}}function Kd(n,l){if(n&1&&(r(0,"option",9),p(1),s()),n&2){let e=l.$implicit,t=m(3);d("value",e),a(),y(t.micPreferenceLabels[e])}}function Ld(n,l){if(n&1&&(r(0,"option",9),p(1),s()),n&2){let e=l.$implicit,t=m(3);d("value",e),a(),y(t.slideStatusLabels[e])}}function Dd(n,l){if(n&1&&(r(0,"option",9),p(1),s()),n&2){let e=l.$implicit,t=m(3);d("value",e),a(),y(t.rehearsalStatusLabels[e])}}function Rd(n,l){if(n&1){let e=w();r(0,"cnp-accordion-item",16),h("expandedChange",function(i){let o=g(e).$implicit,c=m(2);return f(i?c.onRowExpanded(o):c.onRowCollapsed(o))})("click",function(i){let o=g(e).$implicit,c=m(2);return f(c.onItemSurfaceClick(i,o))}),r(1,"div",17)(2,"div",18),T(3,Td,2,2,"cnp-status-pill",19,Sd),s(),r(5,"div",20)(6,"div",21)(7,"span",22),p(8,"Headshot"),s(),_(9,"cnp-avatar",23),s(),r(10,"cnp-field",24),_(11,"input",25),s(),r(12,"cnp-field",26),_(13,"input",25),s(),r(14,"cnp-field",27),_(15,"input",25),s()(),r(16,"div",28)(17,"cnp-field",29)(18,"select",30),N("ngModelChange",function(i){g(e);let o=m(2);return R(o.form.onStageRole,i)||(o.form.onStageRole=i),f(i)}),r(19,"option",8),p(20,"\u2014"),s(),T(21,Ed,2,2,"option",9,z),s()(),r(23,"cnp-field",31)(24,"select",30),N("ngModelChange",function(i){g(e);let o=m(2);return R(o.form.speakerStatus,i)||(o.form.speakerStatus=i),f(i)}),r(25,"option",8),p(26,"\u2014"),s(),T(27,kd,2,2,"option",9,z),s()(),r(29,"cnp-field",32),_(30,"input",25),s()(),r(31,"div",28)(32,"cnp-field",33)(33,"select",30),N("ngModelChange",function(i){g(e);let o=m(2);return R(o.form.invitationStatus,i)||(o.form.invitationStatus=i),f(i)}),r(34,"option",8),p(35,"\u2014"),s(),T(36,Pd,2,2,"option",9,z),s()(),r(38,"cnp-field",34)(39,"select",30),N("ngModelChange",function(i){g(e);let o=m(2);return R(o.form.registrationStatus,i)||(o.form.registrationStatus=i),f(i)}),r(40,"option",8),p(41,"\u2014"),s(),T(42,Ad,2,2,"option",9,z),s()(),r(44,"cnp-field",35)(45,"select",30),N("ngModelChange",function(i){g(e);let o=m(2);return R(o.form.websitePublishingStatus,i)||(o.form.websitePublishingStatus=i),f(i)}),r(46,"option",8),p(47,"\u2014"),s(),T(48,Md,2,2,"option",9,z),s()()(),r(50,"h4",36),p(51,"Production and AV"),s(),r(52,"div",37)(53,"cnp-field",38)(54,"select",30),N("ngModelChange",function(i){g(e);let o=m(2);return R(o.form.monitorPreference,i)||(o.form.monitorPreference=i),f(i)}),r(55,"option",8),p(56,"\u2014"),s(),T(57,Id,2,2,"option",9,z),s()(),r(59,"cnp-field",39)(60,"select",30),N("ngModelChange",function(i){g(e);let o=m(2);return R(o.form.clockPreference,i)||(o.form.clockPreference=i),f(i)}),r(61,"option",8),p(62,"\u2014"),s(),T(63,Fd,2,2,"option",9,z),s()(),r(65,"cnp-field",40)(66,"select",30),N("ngModelChange",function(i){g(e);let o=m(2);return R(o.form.micPreference,i)||(o.form.micPreference=i),f(i)}),r(67,"option",8),p(68,"\u2014"),s(),T(69,Kd,2,2,"option",9,z),s()(),r(71,"cnp-field",41)(72,"select",30),N("ngModelChange",function(i){g(e);let o=m(2);return R(o.form.slideStatus,i)||(o.form.slideStatus=i),f(i)}),r(73,"option",8),p(74,"\u2014"),s(),T(75,Ld,2,2,"option",9,z),s()(),r(77,"cnp-field",42)(78,"select",30),N("ngModelChange",function(i){g(e);let o=m(2);return R(o.form.rehearsalStatus,i)||(o.form.rehearsalStatus=i),f(i)}),r(79,"option",8),p(80,"\u2014"),s(),T(81,Dd,2,2,"option",9,z),s()()(),r(83,"cnp-field",43)(84,"textarea",44),N("ngModelChange",function(i){g(e);let o=m(2);return R(o.form.notes,i)||(o.form.notes=i),f(i)}),s()(),r(85,"footer",45)(86,"span",46),p(87),s(),r(88,"cnp-button",47),h("click",function(){g(e);let i=m(2);return f(i.closeDrawer())}),p(89,"Cancel"),s(),r(90,"cnp-button",48),h("click",function(){g(e);let i=m(2);return f(i.onSave())}),p(91," Save and close "),s()()()()}if(n&2){let e=l.$implicit,t=m(2);d("heading",e.speaker.name)("description",t.metaFor(e))("expanded",(t.activeRow==null||t.activeRow.speaker==null?null:t.activeRow.speaker.PK)===e.speaker.PK),a(3),E(e.summaryTags),a(6),d("name",e.speaker.name)("src",e.speaker.image||""),a(),d("controlId","speaker-name-"+e.speaker.PK),a(),d("id","speaker-name-"+e.speaker.PK)("value",e.speaker.name),a(),d("controlId","speaker-company-"+e.speaker.PK),a(),d("id","speaker-company-"+e.speaker.PK)("value",e.speaker.company||""),a(),d("controlId","speaker-title-"+e.speaker.PK),a(),d("id","speaker-title-"+e.speaker.PK)("value",e.speaker.title||""),a(2),d("controlId","speaker-role-"+e.speaker.PK),a(),d("id","speaker-role-"+e.speaker.PK),D("ngModel",t.form.onStageRole),a(3),E(t.onStageRoles),a(2),d("controlId","speaker-status-"+e.speaker.PK),a(),d("id","speaker-status-"+e.speaker.PK),D("ngModel",t.form.speakerStatus),a(3),E(t.speakerWorkflowStatuses),a(2),d("controlId","speaker-email-"+e.speaker.PK),a(),d("id","speaker-email-"+e.speaker.PK)("value",e.speaker.email||""),a(2),d("controlId","speaker-invitation-"+e.speaker.PK),a(),d("id","speaker-invitation-"+e.speaker.PK),D("ngModel",t.form.invitationStatus),a(3),E(t.invitationStatuses),a(2),d("controlId","speaker-registration-"+e.speaker.PK),a(),d("id","speaker-registration-"+e.speaker.PK),D("ngModel",t.form.registrationStatus),a(3),E(t.registrationStatuses),a(2),d("controlId","speaker-website-"+e.speaker.PK),a(),d("id","speaker-website-"+e.speaker.PK),D("ngModel",t.form.websitePublishingStatus),a(3),E(t.websitePublishingStatuses),a(5),d("controlId","speaker-monitor-"+e.speaker.PK),a(),d("id","speaker-monitor-"+e.speaker.PK),D("ngModel",t.form.monitorPreference),a(3),E(t.monitorPreferences),a(2),d("controlId","speaker-clock-"+e.speaker.PK),a(),d("id","speaker-clock-"+e.speaker.PK),D("ngModel",t.form.clockPreference),a(3),E(t.clockPreferences),a(2),d("controlId","speaker-mic-"+e.speaker.PK),a(),d("id","speaker-mic-"+e.speaker.PK),D("ngModel",t.form.micPreference),a(3),E(t.micPreferences),a(2),d("controlId","speaker-slides-"+e.speaker.PK),a(),d("id","speaker-slides-"+e.speaker.PK),D("ngModel",t.form.slideStatus),a(3),E(t.slideStatuses),a(2),d("controlId","speaker-rehearsal
1-"+e.speaker.PK),a(),d("id","speaker-rehearsal-"+e.speaker.PK),D("ngModel",t.form.rehearsalStatus),a(3),E(t.rehearsalStatuses),a(2),d("controlId","speaker-notes-"+e.speaker.PK),a(),d("id","speaker-notes-"+e.speaker.PK),D("ngModel",t.form.notes),a(3),I("ID: ",e.speaker.PK),a(),d("disabled",t.isSaving),a(2),d("loading",t.isSaving)}}function Nd(n,l){if(n&1&&(r(0,"cnp-accordion",13),T(1,Rd,92,53,"cnp-accordion-item",15,vd),s()),n&2){let e=m();d("headingLevel",3),a(),E(e.filteredRows)}}var bn={onStageRole:"",micPreference:"",clockPreference:"",monitorPreference:"",slideStatus:"",rehearsalStatus:"",speakerStatus:"",invitationStatus:"",registrationStatus:"",websitePublishingStatus:"",notes:""},Ya=(()=>{class n{constructor(){this.service=b(jo),this.toast=b(Se),this.destroy$=new G,this.rows=[],this.filteredRows=[],this.companies=[],this.isLoading=!1,this.isSaving=!1,this.error=null,this.searchText="",this.companyFilter="",this.activeRow=null,this.form=$({},bn),this.onStageRoles=Ma,this.micPreferences=Ia,this.clockPreferences=Fa,this.monitorPreferences=Ka,this.slideStatuses=La,this.rehearsalStatuses=Da,this.speakerWorkflowStatuses=Ra,this.invitationStatuses=Na,this.registrationStatuses=Oa,this.websitePublishingStatuses=Va,this.onStageRoleLabels=Ba,this.micPreferenceLabels=$a,this.clockPreferenceLabels=za,this.monitorPreferenceLabels=Ua,this.slideStatusLabels=Ga,this.rehearsalStatusLabels=Wa,this.speakerWorkflowStatusLabels=qa,this.invitationStatusLabels=Ha,this.registrationStatusLabels=Qa,this.websitePublishingStatusLabels=ja}ngOnInit(){this.load()}ngOnDestroy(){this.destroy$.next(),this.destroy$.complete()}get countLabel(){return`${this.filteredRows.length} of ${this.rows.length} speakers`}metaFor(e){return[e.speaker.title,e.speaker.company].filter(Boolean).join(" \xB7 ")}onSearchChange(e){this.searchText=e,this.applyFilters()}onItemSurfaceClick(e,t){e.target.closest("button.trigger, .panel")||(this.activeRow?.speaker.PK===t.speaker.PK?this.onRowCollapsed(t):this.onRowExpanded(t))}onRowExpanded(e){this.openRow(e)}onRowCollapsed(e){this.activeRow?.speaker.PK===e.speaker.PK&&this.closeDrawer()}rebuildCompanies(){let e=new Set;for(let t of this.rows){let i=t.speaker.company?.trim();i&&e.add(i)}this.companies=Array.from(e).sort((t,i)=>t.localeCompare(i))}applyFilters(){let e=this.searchText.trim().toLowerCase();this.filteredRows=this.rows.filter(t=>this.companyFilter&&(t.speaker.company??"")!==this.companyFilter?!1:e?`${t.speaker.name} ${t.speaker.title??""} ${t.speaker.company??""}`.toLowerCase().includes(e):!0)}openRow(e){this.activeRow=e,this.form=this.formFromProfile(e.profile)}closeDrawer(){this.activeRow=null,this.form=$({},bn)}onSave(){if(!this.activeRow||this.isSaving)return;let e=this.activeRow,t=this.patchFromForm(this.form);this.isSaving=!0,this.service.upsertProfile(e.speaker.PK,t).pipe(x(this.destroy$)).subscribe({next:i=>{if(this.isSaving=!1,i.success!==1||!i.data){this.error=i.message??"Failed to save",this.toast.showDanger("Could not save prep",this.error);return}e.profile=i.data,e.summaryTags=this.buildSummary(i.data),this.applyFilters(),this.toast.showSuccess("Successfully saved","Speaker prep updated."),this.closeDrawer()},error:i=>{this.isSaving=!1,this.error=i?.message??"Failed to save",this.toast.showDanger("Could not save prep",this.error)}})}buildSummary(e){if(!e)return[{label:"No prep yet",tone:"unset"}];let t=[];return e.speakerStatus&&t.push({label:this.speakerWorkflowStatusLabels[e.speakerStatus],tone:"set"}),e.rehearsalStatus&&e.rehearsalStatus!=="not-scheduled"&&t.push({label:this.rehearsalStatusLabels[e.rehearsalStatus],tone:"set"}),e.slideStatus&&e.slideStatus!=="pending"&&t.push({label:this.slideStatusLabels[e.slideStatus],tone:"set"}),t.length||t.push({label:"Prep started",tone:"set"}),t}load(){this.isLoading=!0,this.error=null,this.service.listProfiles().pipe(x(this.destroy$)).subscribe({next:e=>{if(this.isLoading=!1,e.success!==1){this.error=e.message??"Failed to load speakers";return}this.rows=(e.data??[]).map(t=>Z($({},t),{summaryTags:this.buildSummary(t.profile)})),this.rebuildCompanies(),this.applyFilters()},error:e=>{this.isLoading=!1,this.error=e?.message??"Failed to load speakers"}})}formFromProfile(e){return e?{onStageRole:e.onStageRole??"",micPreference:e.micPreference??"",clockPreference:e.clockPreference??"",monitorPreference:e.monitorPreference??"",slideStatus:e.slideStatus??"",rehearsalStatus:e.rehearsalStatus??"",speakerStatus:e.speakerStatus??"",invitationStatus:e.invitationStatus??"",registrationStatus:e.registrationStatus??"",websitePublishingStatus:e.websitePublishingStatus??"",notes:e.notes??""}:$({},bn)}patchFromForm(e){return{onStageRole:e.onStageRole||void 0,micPreference:e.micPreference||void 0,clockPreference:e.clockPreference||void 0,monitorPreference:e.monitorPreference||void 0,slideStatus:e.slideStatus||void 0,rehearsalStatus:e.rehearsalStatus||void 0,speakerStatus:e.speakerStatus||void 0,invitationStatus:e.invitationStatus||void 0,registrationStatus:e.registrationStatus||void 0,websitePublishingStatus:e.websitePublishingStatus||void 0,notes:e.notes||void 0}}static{this.\u0275fac=function(t){return new(t||n)}}static{this.\u0275cmp=M({type:n,selectors:[["app-runsheet-speakers-list"]],decls:17,vars:6,consts:[[1,"runsheet-page"],["heading","Speakers","description","Full event roster. Open a speaker to update runsheet production-prep fields. New speakers are added from the global Speakers section.",3,"level"],["tone","warning",3,"dismissible"],["padding","none"],["ariaLabel","Speaker list controls",3,"count"],["cnpToolbarStart","","label","Search speakers by name or company","placeholder","Search speakers",3,"valueChange","value"],["for","speakers-company-filter",1,"cnp-visually-hidden"],["cnpInput","","id","speakers-company-filter",3,"ngModelChange","ngModel"],["value",""],[3,"value"],[1,"speakers-list-body"],["preset","table-row","label","Loading speakers",3,"rows"],["
1icon","speakers","heading","No speakers match your filter","description","Clear the search or pick a different company.",3,"headingLevel"],[3,"headingLevel"],["tone","warning",3,"dismissed","dismissible"],[3,"heading","description","expanded"],[3,"expandedChange","click","heading","description","expanded"],[1,"speakers-detail"],[1,"speakers-tags"],[3,"tone"],[1,"speakers-grid","speakers-grid-identity"],[1,"speakers-headshot"],[1,"speakers-headshot-label"],["size","lg",3,"name","src"],["label","Full name","help","Edit in the global Speakers section",3,"controlId"],["cnpInput","","type","text","disabled","",3,"id","value"],["label","Company","help","Edit in the global Speakers section",3,"controlId"],["label","Job title","help","Edit in the global Speakers section",3,"controlId"],[1,"speakers-grid","speakers-grid-3"],["label","Role (on stage)",3,"controlId"],["cnpInput","",3,"ngModelChange","id","ngModel"],["label","Speaker status",3,"controlId"],["label","Email","help","Edit in the global Speakers section",3,"controlId"],["label","Invitation status",3,"controlId"],["label","Registered",3,"controlId"],["label","Added to website",3,"controlId"],[1,"speakers-section-title"],[1,"speakers-grid","speakers-grid-5"],["label","Comfort monitor",3,"controlId"],["label","Clock",3,"controlId"],["label","Mic preference",3,"controlId"],["label","Slides",3,"controlId"],["label","Rehearsal",3,"controlId"],["label","Notes",3,"controlId"],["cnpInput","","rows","3","placeholder","Internal notes\u2026",3,"ngModelChange","id","ngModel"],[1,"speakers-footer"],[1,"speakers-id"],["variant","secondary","size","sm",3,"click","disabled"],["size","sm","loadingLabel","Saving speaker",3,"click","loading"]],template:function(t,i){t&1&&(r(0,"div",0),_(1,"cnp-page-header",1),v(2,yd,2,2,"cnp-callout",2),r(3,"cnp-card",3)(4,"cnp-toolbar",4)(5,"cnp-search-field",5),h("valueChange",function(c){return i.onSearchChange(c)}),s(),r(6,"label",6),p(7,"Filter by company"),s(),r(8,"select",7),N("ngModelChange",function(c){return R(i.companyFilter,c)||
1(i.companyFilter=c),c}),h("ngModelChange",function(){return i.applyFilters()}),r(9,"option",8),p(10,"All companies"),s(),T(11,bd,2,2,"option",9,z),s()(),r(13,"div",10),v(14,xd,1,1,"cnp-skeleton",11)(15,wd,1,1,"cnp-empty-state",12)(16,Nd,3,1,"cnp-accordion",13),s()()()),t&2&&(a(),d("level",2),a(),S(i.error?2:-1),a(2),d("count",i.countLabel),a(),d("value",i.searchText),a(3),D("ngModel",i.companyFilter),a(3),E(i.companies),a(3),S(i.isLoading?14:i.filteredRows.length?16:15))},dependencies:[Ue,le,se,ee,te,Q,J,W,pe,Yn,jn,Gn,L,Y,Me,ve,j,q,qn,Pe,ot],styles:[".runsheet-page[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:var(--cnp-space-5)}.runsheet-actions[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:center;gap:var(--cnp-space-3)}.speakers-detail[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:var(--cnp-space-4)}.speakers-tags[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;gap:var(--cnp-space-2)}.speakers-grid[_ngcontent-%COMP%]{display:grid;gap:var(--cnp-space-4);align-items:end}.speakers-grid-identity[_ngcontent-%COMP%]{grid-template-columns:auto repeat(3,1fr)}.speakers-grid-3[_ngcontent-%COMP%]{grid-template-columns:repeat(3,1fr)}.speakers-grid-5[_ngcontent-%COMP%]{grid-template-columns:repeat(5,1fr)}.speakers-headshot[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:var(--cnp-space-2)}.speakers-headshot-label[_ngcontent-%COMP%]{font-size:var(--cnp-font-size-label);font-weight:var(--cnp-font-weight-medium);color:var(--cnp-color-text-secondary)}.speakers-section-title[_ngcontent-%COMP%]{margin:0;padding-block-start:var(--cnp-space-3);border-block-start:1px solid var(--cnp-color-rule);font-size:var(--cnp-font-size-body);font-weight:var(--cnp-font-weight-bold);color:var(--cnp-color-text-heading)}.speakers-footer[_ngcontent-%COMP%]{display:flex;align-items:center;gap:var(--cnp-space-2);padding-block-start:var(--cnp-space-3);border-block-start:1px solid var(--cnp-color-rule)}.speakers-id[_ngcontent-%COMP%]{margin-inline-end:auto;font-size:var(--cnp-font-size-label);color:var(--cnp-color-text-muted);font-family:ui-monospace,monospace}@media (width <= 60rem){.speakers-grid[_ngcontent-%COMP%], .speakers-grid-identity[_ngcontent-%COMP%], .speakers-grid-3[_ngcontent-%COMP%], .speakers-grid-5[_ngcontent-%COMP%]{grid-template-columns:1fr}}.speakers-list-body[_ngcontent-%COMP%]{padding:var(--cnp-space-4)}"]})}}return n})();var Od=[{path:"",component:Ki,children:[{path:"",component:Li},{path:"speakers",component:Ya},{path:"speaker-prep",component:kt},{path:"speaker-prep/:speakerPK",component:kt},{path:"briefing-calls",component:Oi},{path:"briefing-admin",component:Di},{path:"content",component:$i},{path:"rehearsals",component:Gi}]}],Za=(()=>{class n{static{this.\u0275fac=function(t){return new(t||n)}}static{this.\u0275mod=Rt({type:n})}static{this.\u0275inj=Kt({imports:[Qi.forChild(Od),Qi]})}}return n})();var Gf=(()=>{class n{static{this.\u0275fac=function(t){return new(t||n)}}static{this.\u0275mod=Rt({type:n})}static{this.\u0275inj=Kt({providers:[Ie,ut,He,hi],imports:[Fn,se,Nn,Un,Za,ji.forFeature(Io,Fo),ji.forFeature(No,Oo),On.forFeature([Ko,Vo]),Ki,Li,Ii,vi,wi,zo,Bo,$o,ki,Ei,Ti,Pi,yi,Mi,kt,Di,Oi,Ni,Ai,$i,Ct,Vi,Bi,Gi,Ui]})}}return n})();export{Gf as RunsheetModule};
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.