PageSourceSearch

https://overhear-2.firebaseapp.com/js/MeetingsView-_ZwTWLhn.js

js overhear-2.firebaseapp.com collected 2026-10-03 15:12:52 UTC 71,790 bytes, 2 lines download raw bytes

vendor: 4,115 bytes, line 1
1var e=Object.defineProperty,t=Object.defineProperties,n=Object.getOwnPropertyDescriptors,a=Object.getOwnPropertySymbols,i=Object.prototype.hasOwnProperty,l=Object.prototype.propertyIsEnumerable,s=(t,n,a)=>n in t?e(t,n,{enumerable:!0,configurable:!0,writable:!0,value:a}):t[n]=a,r=(e,t)=>{for(var n in t||(t={}))i.call(t,n)&&s(e,n,t[n]);if(a)for(var n of a(t))l.call(t,n)&&s(e,n,t[n]);return e},o=(e,a)=>t(e,n(a)),d=(e,t,n)=>new Promise((a,i)=>{var l=e=>{try{r(n.next(e))}catch(t){i(t)}},s=e=>{try{r(n.throw(e))}catch(t){i(t)}},r=e=>e.done?a(e.value):Promise.resolve(e.value).then(l,s);r((n=n.apply(e,t)).next())});import{u as c,z as u,j as m,g as p,F as g,a2 as h,s as f,bb as y,aV as x,p as v,U as b,q as S,t as C,aU as I,aG as A,bG as k,cF as w,J as $,cH as j,aX as P,cS as M,cG as T,V as E,S as W,aH as D,bD as z,aA as N,ag as O,bH as L}from"./index-C1H6YMPg.js";import{g as B,a as F,h as U}from"./vendor-react-Dv4zGsni.js";import{A as G}from"./Add-DkR88WVz.js";import{G as R,E as H}from"./Event-qxR0q_1g.js";import{E as _}from"./EventAvailable-BnZbXB8J.js";import{aA as K,aB as V,T as q,B as J,e as X,z as Y,Z as Q,M as Z,$ as ee,C as te,a4 as ne,D as ae,d as ie,A as le,q as se,f as re,i as oe,h as de,s as ce,I as ue,aF as me,a2 as pe,X as ge,a3 as he,aY as fe,ah as ye,ai as xe,a0 as ve,p as be,bp as Se,H as Ce,V as Ie,W as Ae}from"./vendor-mui-ygvGNWsM.js";import{r as ke}from"./createSvgIcon-BPkFSdhI.js";import{D as we}from"./Description-CzINMgUk.js";import{S as $e}from"./Search-Rt865ebN.js";import{E as je}from"./EventBusy-CLvaUXyD.js";import{c as Pe,d as Me,e as Te,i as Ee,b as We,a as De,$ as ze,g as Ne,f as Oe,j as Le}from"./muiInputs-CmH5inNT.js";import{b as Be}from"./dateFormatter-B03KhaF6.js";import{h as Fe,i as Ue,j as Ge,k as Re,l as He,m as _e,n as Ke,o as Ve,p as qe,q as Je,r as Xe,s as Ye,t as Qe,u as Ze,v as et,w as tt,x as nt,y as at,z as it,A as lt,B as st,C as rt,D as ot,E as dt,F as ct,G as ut,H as mt}from"./meetingsThemeStyles-BHt-kjJs.js";import{D as pt}from"./Delete-B5dmnCwB.js";import{E as gt}from"./Edit-BJ5LPD5Z.js";import{P as ht}from"./Publish-Bn4cFVqQ.js";import{O as ft}from"./OpenInNew-m8Tk6NT8.js";import{b as yt,C as xt}from"./calendarUtils-DBTnaDwl.js";import{L as vt}from"./LocationOn-DIj3B4oI.js";import{E as bt}from"./Email-BArqh3-M.js";import{A as St,n as Ct,H as It,f as At,q as kt}from"./AdminNavTimeTracker-5f4smhOP.js";import{u as wt}from"./useDialog-B_APQoeN.js";import{a as $t}from"./buttons-Bv5b6vU7.js";import{$ as jt}from"./tabs-CvEPASn6.js";import{T as Pt}from"./ThemedTextField-s368vMV8.js";import{P as Mt}from"./PortalPopup-B2LfDPPM.js";import{W as Tt}from"./WorkStreamEditor-DLdNzVER.js";import{M as Et}from"./MeetingManager-B8RM-b8N.js";import{p as Wt,q as Dt,t as zt,u as Nt,v as Ot,B as Lt,w as Bt,x as Ft,y as Ut,z as Gt,A as Rt,C as Ht,D as _t,E as Kt}from"./BudgetTrackerManager-CN4Q_wRi.js";import{L as Vt}from"./LivingWageHoursManager-4GKsN3So.js";import{r as qt,u as Jt,a as Xt,b as Yt,p as Qt,m as Zt,e as en,i as tn,c as nn}from"./usePlatformAdminUsers-j9qPi9mV.js";import{f as an}from"./vendor-utils-DsbN_A2D.js";import{T as ln}from"./vendor-firebase-DwEaRqD-.js";import"./vendor-i18n-F8-zKps_.js";import{D as sn}from"./DialogActionButtons-FZlbj5Y6.js";import{G as rn}from"./Google-ZsfL6LBg.js";import{s as on,a as dn}from"./errorNotifications-fSaplMDj.js";import{a as cn,P as un,S as mn}from"./Stop-BvYe3O8V.js";import{c as pn}from"./containers-DkHI_mFy.js";import{g as gn,P as hn,k as fn,n as yn,a3 as xn}from"./budgetTrackerCalculations-BEyOsVgf.js";import{J as vn,A as bn,G as Sn,C as Cn,u as In,a as An}from"./useTeamUpdateCallLifecycle-BsFgKfeJ.js";import{P as kn}from"./PersonAdd-CICUGLTt.js";import{D as wn}from"./DeleteConfirmationDialog-BFBkvxSu.js";import{c as $n,b as jn}from"./forms-BTBElMqy.js";import{F as Pn}from"./FolderTreeSelector-D0xycGlp.js";import{G as Mn,O as Tn}from"./OrgFilesManager-GybM1yzF.js";import{W as En}from"./WorkspacePageHero-B0r4je0t.js";import{W as Wn}from"./WorkspacePageStat-ecLUUB2K.js";import{W as Dn}from"./WorkspacePageShell-CJtmdimL.js";import"./DarkModeToggle-SkdZG05H.js";import{u as zn}
1from"./workspacePageStyles-BFgbf9P-.js";import"./vendor-testing-C30BKEh2.js";import"./vendor-mobx-CThWIQRN.js";import"./vendor-editors-Ci64-rGh.js";import"./People-CWz1P5Fv.js";import"./EditNote-C6Ld6Vlm.js";import"./Person-Blk57ZXP.js";import"./RateReview-B4fQLqps.js";import"./Business-xBpTuF1i.js";import"./postboxTestToken-BJ6JHU1v.js";import"./CheckCircle-DxJLhVlt.js";import"./Warning-CoKsHhLL.js";import"./Error-XI1KYy6Z.js";import"./useInterval-Dm4qa002.js";import"./WorkStreamStore-Cqyx2b7j.js";import"./layout-patterns-S6M9RT05.js";import"./overhearContext-D_woNxc-.js";import"./InfoOutlined-DAP9YAsF.js";import"./Info-Ci3FIu8d.js";import"./ContentCopy-ZCNSc2z7.js";import"./layout-Dd_n_0TM.js";import"./OrgFilePicker-CgM6RpzC.js";import"./Close-DcbTmrQx.js";import"./TriadVisualization-CXwsNQDw.js";import"./Send-e-edYO8X.js";import"./useDeleteConfirmation-BZgkECH5.js";import"./stripUndefinedDeep-CCzGKL0y.js";import"./Mic-C39cIVdJ.js";import"./Refresh-B2lBVC8y.js";import"./CheckCircleOutline-D_-_CnXa.js";import"./menus-C6yx7igv.js";import"./ExpandLess-BS8zTI84.js";import"./ExpandMore-D3iI4tlB.js";import"./FolderOpen-BdOEBMhs.js";import"./AdminNav-COrbj6HQ.js";import"./modals-Dy4SoPrM.js";import"./vendor-ui-Db6PmKur.js";var Nn,On={};function Ln(){if(Nn)return On;Nn=1;var e=K();Object.defineProperty(On,"__esModule",{value:!0}),On.default=void 0;var t=e(ke()),n=V();return On.default=(0,t.default)((0,n.jsx)("path",{d:"M19 3h-4.18C14.4 1.84 13.3 1 12 1c-1.3 0-2.4.84-2.82 2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2m-6 15h-2v-2h2zm0-4h-2V8h2zm-1-9c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1"}),"AssignmentLate"),On}const Bn=B(Ln()),Fn={scheduled:"primary",in_progress:"warning",completed:"success",cancelled:"default"},Un={scheduled:"Scheduled",in_progress:"In progress",completed:"Completed",cancelled:"Cancelled"};const Gn=({meetings:e,selectedId:t,onSelect:n})=>{const{themed:a}=c(),[i,l]=F.useState(""),s=F.useMemo(()=>{const t=i.trim().toLowerCase();return t?e.filter(e=>{var n;return e.title.toLowerCase().includes(t)||(null==(n=e.location)?void 0:n.toLowerCase().includes(t))}):e},[e,i]),{upcoming:r,past:o}=F.useMemo(()=>{const e=new Date,t=[],n=[];return s.forEach(a=>{const i=u(a.scheduledAt);i&&i>=e&&"cancelled"!==a.status&&"completed"!==a.status?t.push(a):n.push(a)}),t.sort((e,t)=>{var n,a,i,l;return(null!=(a=null==(n=u(e.scheduledAt))?void 0:n.getTime())?a:0)-(null!=(l=null==(i=u(t.scheduledAt))?void 0:i.getTime())?l:0)}),{upcoming:t,past:n}},[s]),d=e=>{const i=u(e.scheduledAt),l=function(e){return e?{month:e.toLocaleDateString("en-GB",{month:"short"}),day:e.getDate().toString()}:{month:"TBC",day:"—"}}(i),s=i?`${Be(i)} · ${i.toLocaleTimeString("en-GB",{hour:"2-digit",minute:"2-digit"})}`:"Date TBC";return p(J,{sx:a(Ye),children:m(ne,{selected:e.id===t,onClick:()=>n(e),children:[m(J,{sx:a(Je),children:[p(q,{sx:a(Ve),children:l.month}),p(q,{sx:a(qe),children:l.day})]}),p(ee,{primary:e.title,secondary:s,primaryTypographyProps:{noWrap:!0}}),p(te,{label:Un[e.status],size:"small",color:Fn[e.status],sx:a(Xe)})]})},e.id)};return 0===e.length?m(J,{sx:a(Ge),children:[p(je,{sx:a(Fe)}
1),p(q,{variant:"subtitle1",sx:a(Ue),children:"No meetings yet"}),p(q,{variant:"body2",sx:a(Ue),children:"Schedule your first meeting to start building agendas and publishing minutes."})]}):m(J,{sx:a(Ke),children:[p(J,{sx:a(Re),children:p(X,{size:"small",fullWidth:!0,placeholder:"Search meetings…",value:i,onChange:e=>l(e.target.value),InputProps:{startAdornment:p(Y,{position:"start",children:p($e,{fontSize:"small"})})},sx:a(Pe)})}),m(J,{sx:a(_e),children:[r.length>0&&m(g,{children:[m(q,{variant:"overline",sx:a(He),children:["Upcoming (",r.length,")"]}),p(Q,{disablePadding:!0,children:r.map(d)})]}),r.length>0&&o.length>0&&p(Z,{sx:{my:1}}),o.length>0&&m(g,{children:[m(q,{variant:"overline",sx:a(He),children:["Past & completed (",o.length,")"]}),p(Q,{disablePadding:!0,children:o.map(d)})]}),0===r.length&&0===o.length&&p(q,{variant:"body2",sx:a(Ue),children:"No meetings match your search."})]})]})},Rn="Add at least one platform admin attendee before settling meeting hours";function Hn(e){return d(this,null,function*(){const t=yield Lt.listAccessibleTrackers(),n=Ot(e.accrualSummary,t,e.workStreamsById);return yield Lt.syncExpensesForMeetingAccruals({meeting:e.meeting,accrualSummary:n,workStreamsById:e.workStreamsById,settledAt:e.settledAt}),n})}function _n(e,t){return d(this,null,function*(){var n,a,i,l,s;const d=yield Kn(e,t),c=new Map(d.map(e=>[e.id,e]));if(e.livingWageSettledAt){const t=null!=(n=e.accrualSummary)?n:function(e){return{livingWageHoursPerAttendee:0,livingWageTotalHoursDocked:0,livingWageValueGbpPerAttendee:0,projectBudgetHoursPerAttendee:0,projectBudgetValueGbpPerAttendee:0,attendeeUserKeys:zt(e),lines:[]}}(e);try{yield Hn({meeting:e,accrualSummary:t,workStreamsById:c,settledAt:null!=(a=u(e.livingWageSettledAt))?a:new Date})}catch(v){throw console.error("Failed to sync meeting accruals to budget trackers:",v),v instanceof Error?v:new Error("Failed to sync meeting expenses to budget trackers")}return{meeting:e,accrualSummary:t,alreadySettled:!0}}const m=null!=(i=u(e.timerStartedAt))?i:null,p=null!=(l=u(e.timerPausedAt))?l:null,g=Boolean(m&&!p)?Wt({accumulatedSeconds:0,timerStartedAt:m,timerPausedAt:null}):0,h=Dt(e.agenda,e.activeAgendaItemId,g),f=zt(e);if(Nt(h,f))throw new Error(Rn);const y=Ot(Bt({agenda:h,attendeeUserKeys:f,workStreamsById:c}),yield Lt.listAccessibleTrackers(),c),x=yield Vt.settleMeetingAccruals({meeting:o(r({},e),{agenda:h}),accrualSummary:y});try{yield Hn({meeting:e,accrualSummary:x.accrualSummary,workStreamsById:c,settledAt:new Date})}catch(v){throw console.error("Failed to sync meeting accruals to budget trackers:",v),v instanceof Error?v:new Error("Failed to sync meeting expenses to budget trackers")}return{meeting:null!=(s=yield Et.getMeeting(e.id))?s:o(r({},e),{agenda:h,accrualSummary:x.accrualSummary,status:"cancelled"===e.status?e.status:"completed"}),accrualSummary:x.accrualSummary,alreadySettled:x.alreadySettled}})}function Kn(e,t){return d(this,null,function*(){var n;return t&&t.length>0?t:null!=(n=yield h.getWorkStreams(e.organisationId))?n:[]})}function Vn(e){return e.agenda.filter(e=>e.title.trim())}function qn(e){const t=u(e.scheduledAt);return{dateLabel:t?an(t,"EEEE d MMMM yyyy"):"Date TBC",timeLabel:t?an(t,"HH:mm"):""}}function Jn(e,t,n){var a,i;const{dateLabel:l,timeLabel:s}=qn(e),r=Vn(e),o=[n?`Hello ${n},`:"Hello,","",`Please find the agenda for "${e.title}".`,"",`Date: ${l}${s?` at ${s}`:""}`];(null==(a=e.location)?void 0:a.trim())&&o.push(`Location: ${e.location.trim()}`);const d=null!=t?t:e.attendees;return d.length>0&&o.push("","Attendees:",...d.map(e=>`- ${e}`)),(null==(i=e.description)?void 0:i.trim())&&o.push("",e.description.trim()),r.length>0&&(o.push("","Agenda:"),r.forEach((e,t)=>{var n;o.push(`${t+1}. ${e.title.trim()}`),(null==(n=e.notes)?void 0:n.trim())&&o.push(`   ${e.notes.trim()}`)})),o.push("","Best regards,","The Overhear Team"),o.join("\n")}function Xn(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;")}function Yn(e,t,n){var a,i;const{dateLabel:l,timeLabel:s}=qn(e),r=Vn(e),o=n?`Hello ${Xn(n)},`:"Hello,",d=null!=t?t:e.attendees,c=r.map((e,t)=>{var n;const a=(null==(n=e.notes)?void 0:n.trim())?`<p style="margin:4px 0 0 24px;color:#555;">${Xn(e.notes.trim())}</p>`:"";return`<li style="margin-bottom:12px;"><strong>${t+1}. ${Xn(e.title.trim())}</strong>${a}</li>`}).join(""),u=d.length>0?`<p style="margin:16px 0 8px;"><strong>Attendees</strong></p><ul style="margin:0;padding-left:20px;">${d.map(e=>`<li>${Xn(e)}</li>`).join("")}</ul>`:"",m=(null==(a=e.description)?void 0:a.trim())?`<p style="margin:16px 0;color:#444;">
1${Xn(e.description.trim())}</p>`:"",p=(null==(i=e.location)?void 0:i.trim())?`<p style="margin:8px 0 0;"><strong>Location:</strong> ${Xn(e.location.trim())}</p>`:"";return`\n    <div style="font-family:Arial,sans-serif;line-height:1.5;color:#222;max-width:640px;">\n      <p>${o}</p>\n      <p>Please find the agenda for <strong>${Xn(e.title)}</strong>.</p>\n      <p style="margin:16px 0 0;"><strong>Date:</strong> ${Xn(l)}${s?` at ${Xn(s)}`:""}</p>\n      ${p}\n      ${m}\n      ${u}\n      ${r.length>0?`<p style="margin:20px 0 8px;"><strong>Agenda</strong></p><ol style="margin:0;padding-left:20px;">${c}</ol>`:""}\n      <p style="margin:24px 0 0;">Best regards,<br />The Overhear Team</p>\n    </div>\n  `.trim()}function Qn(e){const{dateLabel:t}=qn(e);return`Agenda: ${e.title} — ${t}`}function Zn(e,t="send"){const n=e instanceof Error?e.message:String(null!=e?e:""),a=n.toLowerCase();return a.includes("permission-denied")||a.includes("insufficient permissions")||a.includes("missing or insufficient permissions")?"You do not have permission to complete this action. Ask a super admin to check your access.":a.includes("401")||a.includes("unauthorised")||a.includes("unauthorized")?"The email service could not authorise this send. Please try again, or ask a super admin to check the email configuration.":"save"===t?n.trim()||"Could not save meeting changes before sending the agenda.":"resolve"===t?n.trim()||"Could not load attendee email addresses.":n.startsWith("Failed to send email:")?"Could not send the agenda email. Please try again.":n.trim()||"Failed to email agenda"}const ea=({open:e,meeting:t,attendeeLabels:n,recipients:a,skippedNames:i,sending:l,error:s,onClearError:r,onClose:o,onConfirm:d})=>{var u;const{themed:g}=c(),h=null==(u=a[0])?void 0:u.name,f=t?Qn(t):"",v=F.useMemo(()=>t?Yn(t,n,h):"",[t,n,h]);return t?m(re,{open:e,onClose:l?void 0:o,maxWidth:"md",fullWidth:!0,sx:g(x),slotProps:{backdrop:{sx:g(y)}},PaperProps:{sx:g(Ee)},children:[p(ae,{sx:g(Me),children:"Email agenda to attendees"}),m(ie,{sx:g(ta),children:[m(q,{variant:"body2",sx:g(na),children:["Review the email below before sending to ",a.length," recipient",1===a.length?"":"s","."]}),s?p(le,{severity:"error",onClose:r,children:s}):null,m(J,{sx:g(ia),children:[p(q,{variant:"subtitle2",sx:g(la),children:"Recipients"}),p(J,{sx:g(sa),children:a.map(e=>p(te,{label:`${e.name} · ${e.email}`,size:"small",variant:"outlined"},e.email))})]}),i.length>0&&m(le,{severity:"warning",sx:g(aa),children:["These attendees will not receive the email (no address on file):"," ",i.join(", ")]}),p(q,{variant:"subtitle2",sx:g(la),children:"Subject"}),p(q,{variant:"body2",sx:g(ra),children:f}),p(q,{variant:"subtitle2",sx:g(la),children:"Email preview"}),p(J,{sx:g(oa),children:p(J,{dangerouslySetInnerHTML:{__html:v}})})]}),p(se,{sx:g(Te),children:p(sn,{loading:l,onCancel:o,onSubmit:d,isValid:a.length>0,submitText:"Send agenda email",loadingText:"Sending…"})})]}):null},ta=({colors:e,spacing:t})=>({color:e.text,display:"flex",flexDirection:"column",gap:`${t.sm}px`}),na=({colors:e,spacing:t})=>({color:e.textDim,mb:`${t.xs}px`}),aa=({spacing:e})=>({mb:`${e.sm}px`}),ia=({spacing:e})=>({mb:`${e.xs}px`}),la=({colors:e,spacing:t})=>({color:e.text,fontWeight:600,mt:`${t.xs}px`,mb:`${t.xxs}px`}),sa=({spacing:e})=>({display:"flex",flexWrap:"wrap",gap:`${e.xs}px`}),ra=({colors:e,spacing:t})=>({color:e.text,mb:`${t.sm}px`,fontFamily:"monospace",fontSize:"0.85rem"}),oa=({colors:e,spacing:t,borderRadius:n})=>({border:`1px solid ${e.palette.border}`,borderRadius:n.md,backgroundColor:"#ffffff",color:"#222222",p:`${t.md}px`,maxHeight:420,overflowY:"auto"});const da=({meeting:e,size:t="medium",onSynced:n})=>{const{themed:a}=c(),{isOpen:i,message:l,severity:s,showNotification:r,closeNotification:o}=S(),[g,h]=F.useState(!1),f=Boolean(e&&u(e.scheduledAt)),y=Boolean(null==e?void 0:e.googleCalendarEventId),x=e&&(e.googleCalendarEventId||e.googleCalendarHtmlLink)?yt({htmlLink:e.googleCalendarHtmlLink,eventId:e.googleCalendarEventId}):null,I=e?f?y?"meetings.calendar.updateTooltip":"meetings.calendar.tooltip":"meetings.calendar.noDate":"meetings.calendar.selectMeeting",A=()=>d(null,null,function*(){if(e&&f&&!g){h(!0);try{const t=yield function(e){return d(this,null,function*(){const t=v("syncOverhearCalendarEvent");return(yield t({meetingId:e})).data})}(e.id);null==n||n(function(e){return{googleCalendarEventId:e.eventId,googleCalendarHtmlLink:e.htmlLink,googleCalendarSyncedAt:b(e.syncedAt)}}(t)),on(r,t.updated?"meetings.calendar.updated":"meetings.calendar.added")}catch(t){dn(r,function(e){const t="object"==typeof e&&e&&"code"in e?String(e.code):"";return t.includes("failed-precondition")?"errors.meetingCalendarNotConfigured":t.includes("not-found")?"errors.meetingCalendarNotFound":t.includes("invalid-argument")?"errors.meetingCalendarNoDate":t.includes("permission-denied")||t.includes("unauthenticated")?"errors.meetingCalendarDenied":"errors.meetingCalendarSyncFailed"}(t))}finally{h(!1)}}});return m(J,{component:"span",sx:a(ca),children:[p(ce,{title:C(I),children:p("span",{children:p(oe,{variant:"outlined",size:t,startIcon:g?p(de,{size:"small"===t?14:16}):p(rn,{}),disabled:!e||!f||g,onClick:()=>{A()},sx:a(We),children:C(y?"meetings.calendar.update":"meetings.calendar.add")})})}),null!==x&&p(ce,{title:C("meetings.calendar.openTooltip"),children:p(ue,{size:t,component:"a",href:x,target:"_blank",rel:"noopener noreferrer","aria-label":C("meetings.calendar.open"),sx:a(De),children:p(ft,{fontSize:"small"})})}),p(me,{open:i,autoHideDuration:4e3,onClose:o,anchorOrigin:{vertical:"bottom",horizontal:"center"},children:p(le,{onClose:o,severity:s,variant:"filled",children:l})})]})},ca=({spacing:e})=>({display:"inline-flex",alignItems:"center",gap:`${e.xs}px`,minWidth:0,"& .MuiButton-root":{width:"auto"}});var ua,ma={};function pa(){if(ua)return ma;ua=1;var e=K();Object.defineProperty(ma,"__esModule",{value:!0}),ma.default=void 0;var t=e(ke()),n=V();return ma.default=(0,t.default)((0,n.jsx)("path",{d:"M14 10H3v2h11zm0-4H3v2h11zm4 8v-4h-2v4h-4v2h4v4h2v-4h4v-2zM3 16h7v-2H3z"}),"PlaylistAdd"),ma}const ga=B(pa());var ha,fa={};function ya(){if(ha)return fa;ha=1;var e=K();Object.defineProperty(fa,"__esModule",{value:!0}),fa.default=void 0;var t=e(ke()),n=V();return fa.default=(0,t.default)((0,n.jsx)("path",{d:"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2m0 16H5V5h14zM17.99 9l-1.41-1.42-6.59 6.59-2.58-2.57-1.42 1.41 4 3.99z"}),"CheckBoxOutlined"),fa}const xa=B(ya());function va(e){return d(this,null,function*(){var t;const n=yield h.getWorkStream(e.workStreamId);if(!n)throw new Error("Work stream not found");const a=function(e,t,n){var a;const i=t.text.trim()||"Action from meeting",l=[`From meeting: ${e.title}`];return(null==(a=t.assignee)?void 0:a.trim())&&l.push(`Assignee: ${t.assignee.trim()}
1`),r({id:crypto.randomUUID(),title:i,description:l.join("\n"),status:n?"claimed":"available"},n?{claimedBy:n}:{})}(e.meeting,e.action,e.claimedBy),i=[...null!=(t=n.contributionTasks)?t:[],a],l=yield h.updateWorkStream(e.workStreamId,{contributionTasks:i});if(!l)throw new Error("Failed to update work stream with contribution task");return{workStreamId:e.workStreamId,contributionTaskId:a.id,workStream:l}})}const ba=({meeting:e,action:t,platformAdmins:n,openingWorkStream:a,onOpenWorkStream:i,onStartNewWorkStream:l,onLinked:s})=>{const{themed:u}=c(),{showNotification:f}=S(),v=wt(),b=wt(),[k,w]=F.useState(null),[$,j]=F.useState([]),[P,M]=F.useState(!1),[T,E]=F.useState(null),[W,D]=F.useState(null),[z,N]=F.useState(!1);F.useEffect(()=>{if(!v.open)return;let t=!1;return M(!0),h.getWorkStreams(e.organisationId).then(e=>{t||j(e.filter(e=>"closed"!==e.state&&"completed"!==e.state).slice().sort((e,t)=>e.title.localeCompare(t.title)))}).catch(()=>{t||dn(f,"errors.loadFailed")}).finally(()=>{t||M(!1)}),()=>{t=!0}},[v.open,e.organisationId,f]);const O=F.useMemo(()=>$,[$]),L=qt(t.assignee,t.assigneeUserKey,n),B=()=>w(null),U=n=>d(null,null,function*(){N(!0);try{const a=yield A.createTodo({organisationId:e.organisationId,userKey:n,title:t.text.trim(),source:"meeting",meetingId:e.id,meetingTitle:e.title,meetingActionId:t.id});yield s(t.id,{todoId:a,assigneeUserKey:n}),on(f,"accountability.todos.addedFromMeeting"),b.handleClose()}catch(a){dn(f,"errors.todoSaveFailed")}finally{N(!1)}});return t.workStreamId?p(oe,{size:"small",variant:"outlined",startIcon:p(St,{}),onClick:()=>i(t),disabled:a,sx:u(We),children:C("accountability.todos.openWorkStream")}):t.todoId?p(oe,{size:"small",variant:"outlined",startIcon:p(xa,{}),disabled:!0,sx:u(We),children:C("accountability.todos.addedAsTodo")}):m(g,{children:[p(oe,{size:"small",variant:"outlined",startIcon:p(ga,{}),onClick:e=>w(e.currentTarget),disabled:!t.text.trim(),sx:u(We),children:C("accountability.todos.linkAction")}),m(pe,{anchorEl:k,open:Boolean(k),onClose:B,children:[m(ge,{onClick:()=>{B();const n=function(e,t){var n;const a=e.publishedMinutesPath?[e.publishedMinutesPath]:[];return{title:t.text.trim()||"Action from meeting",intention:`From meeting: ${e.title}`,notes:(null==(n=t.assignee)?void 0:n.trim())?`Assignee: ${t.assignee.trim()}`:void 0,organisationId:e.organisationId,linkedFiles:a,state:"active",affectedPeople:[],whatSilenceMeans:"",fundingType:"unfunded_strategic"}}(e,t);l(t,n)},children:[p(he,{children:p(St,{fontSize:"small"})}),p(ee,{primary:C("accountability.todos.linkNewWorkStream")})]}),m(ge,{onClick:()=>{B(),E(null),v.handleOpen()},children:[p(he,{children:p(ga,{fontSize:"small"})}),p(ee,{primary:C("accountability.todos.linkExistingWorkStream")})]}),m(ge,{onClick:()=>{B(),L?U(L):(D(null),b.handleOpen())},children:[p(he,{children:p(xa,{fontSize:"small"})}),p(ee,{primary:C("accountability.todos.linkAsTodo")})]})]}),m(re,{open:v.open,onClose:v.handleClose,fullWidth:!0,maxWidth:"sm",sx:u(x),slotProps:{backdrop:{sx:u(y)}},PaperProps:{sx:u(I)},children:[p(ae,{children:C("accountability.todos.pickWorkStreamTitle")}),p(ie,{children:P?p(de,{size:24,sx:{m:2}}):p(fe,{options:O,getOptionLabel:e=>e.title,value:T,onChange:(e,t)=>
1E(t),renderInput:e=>p(X,o(r({},e),{label:C("accountability.todos.pickWorkStreamLabel"),margin:"normal",fullWidth:!0}))})}),m(se,{children:[p(oe,{onClick:v.handleClose,disabled:z,children:C("common.actions.cancel")}),p(oe,{variant:"contained",onClick:()=>{d(null,null,function*(){if(T){N(!0);try{const n=yield va({meeting:e,action:t,workStreamId:T.id,claimedBy:L});yield s(t.id,{workStreamId:n.workStreamId,contributionTaskId:n.contributionTaskId}),on(f,"accountability.todos.addedAsTask"),v.handleClose()}catch(n){dn(f,"errors.meetingActionAddTaskFailed")}finally{N(!1)}}})},disabled:!T||z||P,sx:u($t),children:z?p(de,{size:18}):C("common.actions.add")})]})]}),m(re,{open:b.open,onClose:b.handleClose,fullWidth:!0,maxWidth:"sm",sx:u(x),slotProps:{backdrop:{sx:u(y)}},PaperProps:{sx:u(I)},children:[p(ae,{children:C("accountability.todos.pickTodoOwnerTitle")}),p(ie,{children:p(fe,{options:n,getOptionLabel:e=>e.userName,value:W,onChange:(e,t)=>D(t),renderInput:e=>p(X,o(r({},e),{label:C("accountability.todos.pickTodoOwnerLabel"),margin:"normal",fullWidth:!0,helperText:C("accountability.todos.pickTodoOwnerHelp")}))})}),m(se,{children:[p(oe,{onClick:b.handleClose,disabled:z,children:C("common.actions.cancel")}),p(oe,{variant:"contained",onClick:()=>{W&&U(W.userKey)},disabled:!W||z,sx:u($t),children:z?p(de,{size:18}):C("common.actions.add")})]})]})]})},Sa=({agendaDurationSeconds:e,timerStartedAt:t,timerPausedAt:n,activeAgendaTitle:a,disabled:i,settled:l,onStart:s,onPause:r,onResume:o,onStop:d})=>{const{themed:u}=c(),h=Boolean(t&&!n),f=Boolean(t&&n),y=Boolean(t),[x,v]=F.useState(0);F.useEffect(()=>{if(!h)return;const e=window.setInterval(()=>v(e=>e+1),1e3);return()=>window.clearInterval(e)},[h]);const b=Ft({agendaDurationSeconds:e,timerStartedAt:t,timerPausedAt:n});return m(J,{sx:u(Ca),children:[m(J,{sx:u(Ia),children:[p(q,{variant:"h5",sx:u(ka),children:Ct(b)}),p(q,{variant:"body2",sx:u(wa),children:l?"Total of agenda times · accruals settled":a?`Timing: ${a}`:"Select an agenda item to attribute time"})]}),p(J,{sx:u(Aa),children:l?p(te,{size:"small",label:"Settled",color:"success"}):y?m(g,{children:[p(oe,h?{variant:"outlined",startIcon:p(un,{}),onClick:r,disabled:i,sx:u(We),children:"Pause"}:{variant:"contained",startIcon:p(cn,{}),onClick:o,disabled:i,sx:u(ze),children:"Resume"}),p(oe,{variant:"outlined",startIcon:p(mn,{}),onClick:d,disabled:i,sx:u(We),children:"Stop"}),f&&p(te,{size:"small",label:"Paused"})]}):p(oe,{variant:"contained",startIcon:p(cn,{}),onClick:s,disabled:i,sx:u(ze),children:"Start timer"})})]})},Ca=e=>o(r({},pn(e)),{display:"flex",justifyContent:"space-between",alignItems:"center",gap:`${e.spacing.md}px`,p:`${e.spacing.md}px`,mb:`${e.spacing.md}px`,flexWrap:"wrap"}),Ia=({spacing:e})=>({display:"flex",flexDirection:"column",gap:`${e.xs}px`}),Aa=({spacing:e})=>({display:"flex",alignItems:"center",gap:`${e.sm}px`,flexWrap:"wrap"}),ka=({colors:e})=>({color:e.text,fontVariantNumeric:"tabular-nums"}),wa=({colors:e})=>({color:e.textDim}),$a={type:"default",id:"__living_wage__",label:"Paid work (org pool)",group:"Default"};function ja(e,t){if(e.workStreamId){const n=t.find(t=>"work_stream"===t.type&&t.workStream.id===e.workStreamId);if(n)return n}const n=k(e.projectName);if(e.budgetTrackerId||n){const a=t.find(t=>"project"===t.type&&(!(!e.budgetTrackerId||t.trackerId!==e.budgetTrackerId)||Boolean(n)&&t.projectName.toLowerCase()===n.toLowerCase()));if(a)return a}return $a}function Pa({meeting:e,agenda:t,setAgenda:n,onUpdated:a,setSaving:i}){var l,s,c;const[m,p]=F.useState([]),[g,f]=F.useState([]),[y,x]=F.useState(null);F.useEffect(()=>{let t=!1;return h.getWorkStreams(e.organisationId).then(e=>{t||p(e)}).catch(()=>{t||p([])}),()=>{t=!0}},[e.organisationId]),F.useEffect(()=>{let e=!1;return Lt.listAccessibleTrackers().then(t=>{e||f(t)}).catch(()=>{e||f([])}),()=>{e=!0}},[]);const v=F.useMemo(()=>new Map(m.map(e=>[e.id,e])),[m]),b=F.useMemo(()=>m.filter(e=>"closed"!==e.state&&"completed"!==e.state),[m]),S=F.useMemo(()=>function(e){const t=[],n=new Set;for(const i of e.trackers){if(!i.id)continue;const e=gn(i);if(!e)continue;const a=e.toLowerCase();if(n.has(a))continue;n.add(a);const l="number"==typeof i.defaultDayRateGbp&&i.defaultDayRateGbp>0?i.defaultDayRateGbp:hn;t.push({type:"project",id:`project:${i.id}`,label:`${e} · £${l}/day`,group:"Projects",trackerId:i.id,projectName:e,dayRateGbp:l})}t.sort((e,t)=>
1e.label.localeCompare(t.label,void 0,{sensitivity:"base"}));const a=e.workStreams.filter(e=>Boolean(e.id)).map(e=>{const t=k(e.projectName);return{type:"work_stream",id:`stream:${e.id}`,label:t?`${e.title} · ${t}`:e.title,group:"Work streams",workStream:e}}).sort((e,t)=>e.label.localeCompare(t.label,void 0,{sensitivity:"base"}));return[$a,...t,...a]}({trackers:g,workStreams:b}),[g,b]),C=null!=(l=u(e.timerStartedAt))?l:null,I=null!=(s=u(e.timerPausedAt))?s:null,A=null!=(c=e.timerAccumulatedSeconds)?c:0,w=Boolean(e.livingWageSettledAt),$=t.find(t=>t.id===e.activeAgendaItemId),j=F.useCallback(()=>{if(!C||I)return t;const n=Wt({accumulatedSeconds:0,timerStartedAt:C,timerPausedAt:null});return Dt(t,e.activeAgendaItemId,n)},[t,e.activeAgendaItemId,I,C]),P=F.useCallback(t=>d(null,null,function*(){i(!0),x(null);try{yield Et.updateMeeting(e.id,t);const n=r(r(r(r({},e),t.agenda?{agenda:t.agenda}:{}),void 0!==t.timerAccumulatedSeconds?{timerAccumulatedSeconds:t.timerAccumulatedSeconds}:{}),t.status?{status:t.status}:{});null===t.timerStartedAt?delete n.timerStartedAt:t.timerStartedAt&&(n.timerStartedAt=t.timerStartedAt),null===t.timerPausedAt?delete n.timerPausedAt:t.timerPausedAt&&(n.timerPausedAt=t.timerPausedAt),null===t.activeAgendaItemId?delete n.activeAgendaItemId:t.activeAgendaItemId&&(n.activeAgendaItemId=t.activeAgendaItemId),a(n)}catch(n){throw x(n instanceof Error?n.message:"Failed to update meeting timer"),n}finally{i(!1)}}),[e,a,i]),M=F.useCallback(()=>d(null,null,function*(){var n,a,i;const l=ln.now();yield P({timerStartedAt:l,timerPausedAt:null,timerAccumulatedSeconds:A,status:"scheduled"===e.status?"in_progress":e.status,activeAgendaItemId:null!=(i=null!=(a=e.activeAgendaItemId)?a:null==(n=t.find(e=>e.title.trim()))?void 0:n.id)?i:null})}),[A,t,e.activeAgendaItemId,e.status,P]),T=F.useCallback(()=>d(null,null,function*(){var t;const a=j();n(a);const i=Wt({accumulatedSeconds:0,timerStartedAt:C,timerPausedAt:null}),l=A+i,s=ln.now();yield P({agenda:a,timerStartedAt:null!=(t=e.timerStartedAt)?t:s,timerPausedAt:s,timerAccumulatedSeconds:l})}),[A,j,e.timerStartedAt,P,n,C]),E=F.useCallback(()=>d(null,null,function*(){const e=ln.now();yield P({timerStartedAt:e,timerPausedAt:null,timerAccumulatedSeconds:A})}),[A,P]),W=F.useCallback(()=>d(null,null,function*(){var t;const a=j();n(a);const i=C&&!I?Wt({accumulatedSeconds:0,timerStartedAt:C,timerPausedAt:null}):0;yield P({agenda:a,timerStartedAt:null,timerPausedAt:null,timerAccumulatedSeconds:A+i,activeAgendaItemId:null!=(t=e.activeAgendaItemId)?t:null})}),[A,j,e.activeAgendaItemId,P,n,I,C]),D=F.useCallback(a=>d(null,null,function*(){if(w)return;let i=t,l=A;if(C&&!I&&e.activeAgendaItemId){i=j(),n(i);const e=Wt({accumulatedSeconds:0,timerStartedAt:C,timerPausedAt:null});l=A+e}const s=ln.now();yield P(r({agenda:i,activeAgendaItemId:a,timerAccumulatedSeconds:l},C&&!I?{timerStartedAt:s,timerPausedAt:null}:{}))}),[A,t,j,e.activeAgendaItemId,P,n,w,I,C]),z=F.useCallback((e,t)=>{n(n=>n.map(n=>n.id!==e?n:function(e,t,n){const a=r(r({id:e.id,title:e.title},void 0!==e.notes?{notes:e.notes}:{}),"number"==typeof e.durationSeconds?{durationSeconds:e.durationSeconds}:{});if(!t||"default"===t.type)return o(r({},a),{wageBucket:"living_wage"});if("project"===t.type){const e=fn(yn(t.dayRateGbp));return o(r({},a),{budgetTrackerId:t.trackerId,projectName:t.projectName,fundingType:"funded_flexible",hourlyRateGbp:e,wageBucket:"project_budget"})}const i=t.workStream,l=k(i.projectName),s=xn(n,l),d=Ut(i.fundingType,null,s);return o(r(o(r({},a),{workStreamId:i.id,workStreamTitle:i.title}),l?{projectName:l}:{}),{fundingType:i.fundingType,hourlyRateGbp:d.hourlyRateGbp,wageBucket:d.bucket})}(n,t,g)))},[g,n]),N=F.useCallback((e,t)=>{if(!t)return void z(e,null);const n=S.find(e=>"work_stream"===e.type&&e.workStream.id===t.id);z(e,n||{type:"work_stream",id:`stream:${t.id}`,label:t.title,group:"Work streams",workStream:t})},[z,S]),O=F.useCallback(t=>d(null,null,function*(){i(!0),x(null);try{let i=t.agenda;if(C&&!I){const n=Wt({accumulatedSeconds:0,timerStartedAt:C,timerPausedAt:null});i=Dt(t.agenda,e.activeAgendaItemId,n)}yield Et.updateMeeting(e.id,{agenda:i,notes:t.notes,actionItems:t.actionItems});const l=o(r({},e),{agenda:i,notes:t.notes,actionItems:t.actionItems});n(i),a(l);const s=yield _n(l,m);return n(s.meeting.agenda),a(s.meeting),s}catch(l){throw x(l instanceof Error?l.message:"Failed to settle meeting accruals"),l}finally{i(!1)}}),[e,a,n,i,I,C,m]),L=F.useCallback(()=>d(null,null,function*(){i(!0),x(null);try{const i=o(r({},e),{agenda:t,notes:e.notes}),l=yield function(e){return d(this,null,function*(){var t;if(!e.livingWageSettledAt)return{meeting:e,alreadyUnsettled:!0};const n=yield Vt.unsettleMeetingAccruals(e);try{yield Lt.clearExpensesForMeeting(e.id)}catch(l){throw console.error("Failed to clear meeting expenses from budget trackers:",l),l instanceof Error?l:new Error("Failed to clear meeting expenses from budget trackers")}const a=null!=(t=yield Et.getMeeting(e.id))?t:o(r({},e),{livingWageSettledAt:void 0,accrualSummary:void 0,status:"completed"===e.status?"in_progress":e.status}),i=r({},a);return delete i.livingWageSettledAt,delete i.accrualSummary,"completed"===i.status&&(i.status="in_progress"),{meeting:i,alreadyUnsettled:n.alreadyUnsettled}})}(i);return n(l.meeting.agenda),a(l.meeting),l}catch(l){throw x(l instanceof Error?l.message:"Failed to unsettle meeting accruals"),l}finally{i(!1)}}),[t,e,a,n,i]),B=F.useCallback(e=>function(e){const t=e.hourlyRateGbp,n="number"==typeof t&&t>0?` · £${t}/hr`:"";return"project_budget"===e.wageBucket||"funded_flexible"===e.fundingType||"funded_timebound"===e.fundingType?e.projectName&&!e.workStreamId?`Project · ${e.projectName}${n}`:`Project budget${n}`:`Paid work${n||" · £15/hr"}`.replace("£15/hr",n?n.replace(" · ",""):"£15/hr")}(e),[]);return{workStreams:b,workStreamsById:v,budgetTrackers:g,wageLinkOptions:S,timerStartedAt:C,timerPausedAt:I,accumulatedSeconds:A,settled:w,activeAgendaItem:$,timerError:y,setTimerError:x,startTimer:M,pauseTimer:T,resumeTimer:E,stopTimer:W,selectActiveAgendaItem:D,linkAgendaWorkStream:N,linkAgendaWage:z,settleAccruals:O,unsettleAccruals:L,wageLabelForItem:B}}const Ma=({call:e})=>{var t;const{themed:n}=c(),a=U();return e.groupId?m(g,{children:[m(J,{sx:n([Ta,Qe]),children:[m(J,{sx:n(Ea),children:[m(J,{sx:n(Wa),children:[p(R,{fontSize:"small"}),m(J,{children:[p(q,{variant:"subtitle2",sx:n(Da),children:C("meetings.call.title")}),p(q,{variant:"caption",sx:n(Ue),children:C("meetings.call.linkedGroup",{name:e.groupName})})]})]}),m(J,{sx:n(za),children:[p(oe,{size:"small",variant:"outlined",onClick:()=>a(`/team-updates/${e.groupId}`),sx:n(We),children:C("meetings.call.openChat")}),p(vn,{activeCall:e.activeCall,currentUserId:e.userId,groupName:e.groupName,onStartOrJoin:e.openCallTechCheck})]})]}),w(e.activeCall)&&!e.inCall?p(bn,{call:e.activeCall,currentUserId:e.userId,onJoin:e.openCallTechCheck}):null,e.inCall?p(J,{sx:n(Na),children:p(Sn,{localVideoRef:e.localVideoRef,peerStreams:e.peerStreams,isMuted:e.isMuted,isVideoEnabled:e.isVideoEnabled,connectionState:e.connectionState,error:e.error,getParticipantDisplayName:e.getParticipantDisplayName,localDisplayName:(null==(t=e.mentionMembers.find(t=>
1t.userId===e.userId))?void 0:t.name)||C("teamUpdates.call.you",{name:"You"}),initialVideoDeviceId:e.videoDeviceId,initialAudioDeviceId:e.audioDeviceId,onToggleMute:e.toggleMute,onToggleVideo:e.toggleVideo,onSwitchCamera:e.switchCamera,onSwitchMicrophone:e.switchMicrophone,isLastConnected:0===e.peerCount,onLeave:()=>{e.handleLeaveCall()},onReconnect:()=>{e.reconnectCall()}})}):null,e.error&&!e.inCall?p(le,{severity:"error",sx:{mt:1},children:e.error}):null]}),p(Cn,{open:e.callCheckOpen,joining:e.callJoining,onClose:()=>e.setCallCheckOpen(!1),onJoin:t=>{e.handleConfirmJoinCall(t)}})]}):p(J,{sx:n([Ta,Qe]),children:p(q,{variant:"body2",sx:n(Ue),children:C("meetings.call.noGroup")})})},Ta=({spacing:e})=>({display:"flex",flexDirection:"column",gap:`${e.sm}px`,mt:`${e.md}px`}),Ea=()=>({display:"flex",alignItems:"flex-start",justifyContent:"space-between",gap:12,flexWrap:"wrap"}),Wa=({spacing:e,colors:t})=>({display:"flex",alignItems:"flex-start",gap:`${e.sm}px`,color:t.text}),Da=({colors:e})=>({color:e.text,fontWeight:600}),za=({spacing:e})=>({display:"flex",alignItems:"center",gap:`${e.sm}px`,flexWrap:"wrap"}),Na=({spacing:e})=>({mt:`${e.sm}px`}),Oa=({meeting:e,isSuperAdmin:t,onUpdated:n,saving:a,setSaving:i,memberNameById:l})=>{var s;const{themed:u}=c(),{users:g,usersByKey:h,resolveAttendeeLabels:f}=Jt(),[y,x]=F.useState([]),[v,b]=F.useState(!1),S=null!=(s=e.confirmedAttendees)?s:[],I=F.useMemo(()=>S.map(e=>{const t=f([e])[0];if(t&&t!==e)return{userKey:e,label:t};return{userKey:e,label:(null==l?void 0:l.get(e))||t||e}}),[S,f,l]);return m(J,{sx:u([La,Qe]),children:[m(J,{sx:u(Ba),children:[m(J,{sx:u(Fa),children:[p(It,{fontSize:"small"}),p(q,{variant:"subtitle2",sx:u(Ua),children:C("meetings.attendance.title")})]}),t&&!v&&p(oe,{size:"small",variant:"outlined",onClick:()=>{x(S.map(e=>h.get(e)).filter(e=>Boolean(e))),b(!0)},disabled:a,sx:u(We),children:C("meetings.attendance.override")})]}),p(q,{variant:"caption",sx:u(Ue),children:C("meetings.attendance.hint")}),v?m(J,{sx:u(Ra),children:[p(fe,{multiple:!0,options:g,getOptionLabel:e=>e.userName,value:y,onChange:(e,t)=>
1x(t),isOptionEqualToValue:(e,t)=>e.userKey===t.userKey,sx:u(Oe),slotProps:{paper:{sx:u(Ne)}},renderInput:e=>p(X,o(r({},e),{label:C("meetings.attendance.overrideLabel"),size:"small"}))}),m(J,{sx:u(Ha),children:[p(oe,{size:"small",onClick:()=>b(!1),disabled:a,sx:u(We),children:C("meetings.attendance.cancel")}),p(oe,{size:"small",variant:"contained",onClick:()=>{d(null,null,function*(){const t=y.map(e=>e.userKey),a=new Set(g.map(e=>e.userKey)),l=S.filter(e=>!a.has(e)),s=Array.from(new Set([...t,...l]));i(!0);try{yield Et.updateMeeting(e.id,{confirmedAttendees:s}),n(o(r({},e),{confirmedAttendees:s})),b(!1)}finally{i(!1)}})},disabled:a,sx:u($t),children:C("meetings.attendance.save")})]})]}):0===I.length?p(q,{variant:"body2",sx:u(Ue),children:C("meetings.attendance.empty")}):p(J,{sx:u(Ga),children:I.map(({userKey:a,label:l})=>p(te,{label:l,size:"small",color:"success",variant:"outlined",onDelete:t?()=>{(a=>{d(null,null,function*(){if(!t)return;const l=S.filter(e=>e!==a);i(!0);try{yield Et.updateMeeting(e.id,{confirmedAttendees:l}),n(o(r({},e),{confirmedAttendees:l}))}finally{i(!1)}})})(a)}:void 0,sx:u(Le)},a))})]})},La=({spacing:e})=>({display:"flex",flexDirection:"column",gap:`${e.xs}px`,mt:`${e.md}px`}),Ba=()=>({display:"flex",alignItems:"center",justifyContent:"space-between",gap:8,flexWrap:"wrap"}),Fa=({spacing:e,colors:t})=>({display:"flex",alignItems:"center",gap:`${e.xs}px`,color:t.text}),Ua=({colors:e})=>({color:e.text,fontWeight:600}),Ga=({spacing:e})=>({display:"flex",flexWrap:"wrap",gap:`${e.xs}px`}),Ra=({spacing:e})=>({display:"flex",flexDirection:"column",gap:`${e.sm}px`,mt:`${e.xs}px`}),Ha=({spacing:e})=>({display:"flex",justifyContent:"flex-end",gap:`${e.sm}px`});function _a(e){return e.filter(e=>e.text.trim().length>0)}function Ka(e,t){const n=t.map((e,t)=>{var n;const a=(null==(n=e.assignee)?void 0:n.trim())?` — ${e.assignee.trim()}`:"",i=e.completed?" (done)":"";return`${t+1}. ${e.text.trim()}${a}${i}`});return[`Action points from meeting “${e.title.trim()}”:`,"",...n].join("\n")}const Va={scheduled:"primary",in_progress:"warning",completed:"success",cancelled:"default"},qa={scheduled:"Scheduled",in_progress:"In progress",completed:"Completed",cancelled:"Cancelled"};function Ja(){return crypto.randomUUID()}const Xa=({meeting:e,onUpdated:t,onEdit:n,onPublish:a,saving:i,setSaving:l})=>{var s;const{themed:y}=c(),x=U(),v=wt(),{isOpen:b,message:I,severity:A,showNotification:k,closeNotification:W}=S(),{resolveAttendeeLabels:D,users:z,usersByKey:N}=Jt(),O=E(null==(s=$.user)?void 0:s.userRole),[L,B]=F.useState(0),[R,H]=F.useState(e.agenda),[_,K]=F.useState(e.notes),[V,Y]=F.useState(e.actionItems),[Z,ee]=F.useState(!1),[ne,ae]=F.useState(!1),[ie,se]=F.useState(),[re,pe]=F.useState(),[ge,he]=F.useState(null),[Se,Ce]=F.useState(!1),[Ie,Ae]=F.useState(!1),[ke,we]=F.useState(!1),[$e,je]=F.useState(!1),[Pe,Me]=F.useState([]),[Te,Ee]=F.useState([]),[ze,Fe]=F.useState(null),Ge=function({meeting:e,onUpdated:t,showError:n}){var a,i,l,s;const c=(null==(a=e.teamUpdateGroupId)?void 0:a.trim())||"",u=e.id,m=(null==(i=$.user)?void 0:i.userId)||"",p=(null==(l=$.user)?void 0:l.displayName)||(null==(s=$.user)?void 0:s.email)||"Member",[g,h]=F.useState(null),[f,y]=F.useState([]),[x,v]=F.useState(!1),[b,S]=F.useState(!1),[C,I]=F.useState(!1),[A,k]=F.useState({videoEnabled:!0,audioEnabled:!0}),E=F.useRef(!1),W=F.useRef(e);W.current=e;const D=F.useRef(t);D.current=t,F.useEffect(()=>c?(v(!1),S(!1),I(!1),j.observeCall(c,h)):(h(null),v(!1),S(!1),void I(!1)),[c,u]),F.useEffect(()=>{if(!c)return void y([]);let e=!1;return P.getGroup(c).then(t=>d(null,null,function*(){if(!t||e)return;const n=yield P.listGroupMembers(t.memberIds,t.organisationId);e||y(n)})).catch(t=>{console.error("Failed to load meeting call members",t),e||y([])}),()=>{e=!0}},[c]),F.useEffect(()=>{if(!c||!u)return;const e=w(g)?g.participantIds:[];if(!e.length)return;const t=W.current,n=Gt(t.confirmedAttendees,e);Rt(t.confirmedAttendees,n)||E.current||(E.current=!0,Et.updateMeeting(u,{confirmedAttendees:n}).then(()=>{D.current(o(r({},W.current),{confirmedAttendees:n}))}).catch(e=>{console.error("Failed to sync call attendance",e)}).finally(()=>{E.current=!1}))},[null==g?void 0:g.status,null==g?void 0:g.participantIds,c,u]);const z=F.useMemo(()=>f.map(e=>({id:e.userId,name:e.name||e.email||"Member"})),[f]),N=In({sessionId:c?M(c):"",baseSessionId:c,currentUserId:m,participants:z,isActive:x&&!!c&&!!m,mediaPrefs:A}),{leaveCall:O}=An({groupId:c,userId:m,inCall:x,setInCall:v,peerCount:N.peerCount,activeCall:g,presenceKey:`${c}:${u}`,onLeaveError:e=>{console.error(e),n("errors.teamUpdatesCallLeaveFailed")}}),L=F.useCallback(()=>{c&&m&&!x&&S(!0)},[c,m,x]),B=F.useCallback(e=>d(null,null,function*(){if(c&&m){I(!0),k(e);try{yield j.joinCall({groupId:c,userId:m,userName:p}),S(!1),v(!0)}catch(t){console.error(t),n("errors.teamUpdatesCallFailed")}finally{I(!1)}}}),[c,m,p,n]),U=T(g,m);return r({groupId:c,groupName:e.teamUpdateGroupName||"Team chat",userId:m,activeCall:g,inCall:x,userInCall:U,callCheckOpen:b,setCallCheckOpen:S,callJoining:C,openCallTechCheck:L,handleConfirmJoinCall:B,handleLeaveCall:O,mentionMembers:f},N)}({meeting:e,onUpdated:t,showError:e=>dn(k,e)}),Re=F.useMemo(()=>{const e=new Map;
1return Ge.mentionMembers.forEach(t=>{e.set(t.userId,t.name||t.email||t.userId)}),e},[Ge.mentionMembers]),{workStreams:He,wageLinkOptions:_e,timerStartedAt:Ke,timerPausedAt:Ve,settled:qe,activeAgendaItem:Je,timerError:Ye,setTimerError:ut,startTimer:mt,pauseTimer:yt,resumeTimer:St,stopTimer:Ct,selectActiveAgendaItem:It,linkAgendaWage:Wt,settleAccruals:Dt,unsettleAccruals:Ft,wageLabelForItem:Ut}=Pa({meeting:e,agenda:R,setAgenda:H,onUpdated:t,setSaving:l});F.useEffect(()=>{H(e.agenda),K(e.notes),Y(e.actionItems),ee(!1),Fe(null)},[e.id,e.agenda,e.notes,e.actionItems]),F.useEffect(()=>{let t=!1;return 0===e.attendees.length?(Me([]),Ee([]),void je(!1)):(je(!0),Xt(e.attendees,N).then(({recipients:e,skippedNames:n})=>{t||(Me(e),Ee(n))}).catch(e=>{t||(Me([]),Ee([]),Fe({severity:"error",message:Zn(e,"resolve")}))}).finally(()=>{t||je(!1)}),()=>{t=!0})},[e.attendees,N]);const qt=u(e.scheduledAt),Qt=qt?`${Be(qt)} at ${qt.toLocaleTimeString("en-GB",{hour:"2-digit",minute:"2-digit"})}`:"Date TBC",Zt=D(e.attendees),en=F.useMemo(()=>Yt(e.attendees,z,N),[e.attendees,z,N]),tn=()=>d(null,null,function*(){if(qe){yield Et.updateMeeting(e.id,{notes:_,actionItems:V});const n=yield function(e,t,n){return d(this,null,function*(){var a,i,l;const s=zt(e);if(Nt(t,s))throw new Error(Rn);const d=yield Kn(e,n),c=new Map(d.map(e=>[e.id,e])),m=Ot(Bt({agenda:t,attendeeUserKeys:s,workStreamsById:c}),yield Lt.listAccessibleTrackers(),c);if(!e.livingWageSettledAt)return{meeting:o(r({},e),{agenda:t}),accrualSummary:m,adjusted:!1};yield Vt.adjustSettledMeetingAccruals({meeting:o(r({},e),{agenda:t}),accrualSummary:m});try{yield Hn({meeting:e,accrualSummary:m,workStreamsById:c,settledAt:null!=(a=u(e.livingWageSettledAt))?a:new Date})}catch(g){throw console.error("Failed to sync meeting accruals to budget trackers:",g),g instanceof Error?g:new Error("Failed to sync meeting expenses to budget trackers")}const p=null!=(i=yield Et.getMeeting(e.id))?i:o(r({},e),{agenda:t,accrualSummary:m});return{meeting:p,accrualSummary:null!=(l=p.accrualSummary)?l:m,adjusted:!0}})}(o(r({},e),{notes:_,actionItems:V}),R,He);H(n.meeting.agenda);const a=o(r({},n.meeting),{notes:_,actionItems:V});return t(a),on(k,n.adjusted?"meetings.detail.savedWithAccrualSync":"meetings.detail.saved"),ee(!1),a}yield Et.updateMeeting(e.id,{agenda:R,notes:_,actionItems:V});const n=o(r({},e),{agenda:R,notes:_,actionItems:V});return t(n),ee(!1),n}),nn=(e,t)=>{H(n=>n.map(n=>n.id===e?r(r({},n),t):n)),ee(!0)},an=(e,t)=>{Y(n=>n.map(n=>n.id===e?r(r({},n),t):n)),ee(!0)},sn=()=>{ae(!1),se(void 0),pe(void 0),he(null)},rn=(e,t)=>{e.text.trim()&&(he(e.id),se(void 0),pe(t),ae(!0))},cn=(n,a)=>d(null,null,function*(){const i=V.map(e=>e.id===n?r(r({},e),a):e);Y(i),l(!0);try{yield Et.updateMeeting(e.id,{actionItems:i}),t(o(r({},e),{actionItems:i})),ee(!1)}finally{l(!1)}}),un=V.filter(e=>!e.completed).length,mn=F.useMemo(()=>Vn(o(r({},e),{agenda:R})),[e,R]),pn="scheduled"===e.status&&mn.length>0,gn=pn&&Pe.length>0&&!$e,hn="completed"===e.status,fn=pn?$e?"Loading attendee emails…":0===e.attendees.length?"Add attendees in meeting details to email the agenda":0===Pe.length?C("meetings.detail.emailAgendaNoRecipients"):e.agendaEmailedAt?"Resend the compiled agenda to attendees":"Email the compiled agenda to attendees":"",yn=pn&&!$e&&e.attendees.length>0&&0===Pe.length&&!("error"===(null==ze?void 0:ze.severity)),xn=v.open&&"error"===(null==ze?void 0:ze.severity)?ze.message:null,vn=C(hn?e.publishedMinutesPath?"meetings.detail.republishMinutesTooltip":"meetings.detail.publishMinutesTooltip":"meetings.detail.publishRequiresCompleted"),bn=()=>o(r({},e),{agenda:R,notes:_,actionItems:V}),Sn=e.agendaEmailedAt?`Last emailed ${Be(e.agendaEmailedAt)}`:null,Cn=_a(V),kn=Boolean(e.teamUpdateGroupId)&&Cn.length>0&&!ke,wn=e.actionsPostedToChatAt?C("meetings.actions.confirmedAt",{date:Be(e.actionsPostedToChatAt)}):null,$n=()=>d(null,null,function*(){var n,a,i;if(!kn)return;const s=(null==(n=$.user)?void 0:n.userId)||"",c=(null==(a=$.user)?void 0:a.displayName)||(null==(i=$.user)?void 0:i.email)||"Member";if(s){if(Z){l(!0);try{yield Et.updateMeeting(e.id,{agenda:R,notes:_,actionItems:V}),t(o(r({},e),{agenda:R,notes:_,actionItems:V})),ee(!1)}finally{l(!1)}}we(!0);try{const{postedAt:n}=yield function(e){return d(this,null,function*(){var t;const{meeting:n,actionItems:a,authorId:i,authorName:l}=e,s=null==(t=n.teamUpdateGroupId)?void 0:t.trim();if(!s)throw new Error("Meeting is not linked to a team update group");const r=_a(a);if(0===r.length)throw new Error("No action points to post");const o=yield P.createPost({groupId:s,type:"decision",title:`Actions: ${n.title.trim()}`,body:Ka(n,r),authorId:i,authorName:l}),d=ln.now();return yield Et.updateMeeting(n.id,{actionsPostedToChatAt:d}),{postId:o,postedAt:d}})}({meeting:o(r({},e),{agenda:R,notes:_,actionItems:V}),actionItems:V,authorId:s,authorName:c});t(o(r({},e),{agenda:R,notes:_,actionItems:V,actionsPostedToChatAt:n})),on(k,"meetings.actions.postedSuccess")}catch(u){console.error(u),dn(k,"errors.meetingActionsPostFailed")}finally{we(!1)}}});return m(g,{children:[m(J,{sx:y(ct),children:[p(J,{sx:y([Qa,rt]),children:m(J,{sx:y(st),children:[m(J,{sx:y(nt),children:[m(J,{sx:y(Za),children:[p(q,{variant:"h5",sx:y(e
1i),children:e.title}),p(te,{label:qa[e.status],size:"small",color:Va[e.status],sx:y(Xe)})]}),e.description&&p(q,{variant:"body2",sx:y(ti),children:e.description}),m(J,{sx:y(et),children:[m(J,{component:"span",sx:y(Ze),children:[p(xt,{fontSize:"inherit"}),Qt]}),e.location&&m(J,{component:"span",sx:y(Ze),children:[p(vt,{fontSize:"inherit"}),e.location]}),e.teamUpdateGroupName&&m(J,{component:"span",sx:y(Ze),children:[p(At,{fontSize:"inherit"}),e.teamUpdateGroupName]})]}),Zt.length>0&&p(J,{sx:y(tt),children:Zt.map((e,t)=>p(te,{label:e,size:"small",variant:"outlined",sx:y(Le)},`${e}-${t}`))}),Sn&&p(q,{variant:"caption",sx:y(Ue),children:Sn})]}),m(J,{sx:y(lt),children:[p(J,{sx:y(at),children:p(ce,{title:"Edit meeting details",children:p(ue,{onClick:n,"aria-label":"Edit meeting details",sx:y(De),children:p(gt,{})})})}),m(J,{sx:y(it),children:[p(da,{meeting:e,size:"small",onSynced:n=>t(r(r({},e),n))}),pn&&p(ce,{title:fn,children:p("span",{children:p(oe,{variant:"outlined",size:"small",startIcon:Ie||$e?p(de,{size:16}):p(bt,{}),onClick:()=>d(null,null,function*(){if(gn){if(Fe(null),Z){const a=bn();l(!0);try{yield Et.updateMeeting(e.id,{agenda:R,notes:_,actionItems:V}),t(a),ee(!1)}catch(n){return void Fe({severity:"error",message:Zn(n,"save")})}finally{l(!1)}}v.handleOpen()}}),disabled:!gn||Ie||i,sx:y(We),children:C(e.agendaEmailedAt?"meetings.detail.resendAgenda":"meetings.detail.emailAgenda")})})}),p(ce,{title:vn,children:p("span",{children:p(oe,{variant:"contained",size:"small",startIcon:p(ht,{}),onClick:()=>d(null,null,function*(){if("completed"!==e.status)return;let t=o(r({},e),{agenda:R,notes:_,actionItems:V});if(Z){l(!0);try{t=yield tn()}finally{l(!1)}}a(t)}),disabled:!hn||i,sx:y($t),children:C(e.publishedMinutesPath?"meetings.detail.republishMinutes":"meetings.detail.publishMinutes")})})}),e.publishedMinutesPath?p(oe,{variant:"outlined",size:"small",startIcon:p(ft,{}),onClick:()=>x(`/org-files?file=${encodeURIComponent(e.publishedMinutesPath)}`),sx:y(We),children:C("meetings.detail.viewMinutes")}):null]})]})]})}),p(Ma,{call:Ge}),p(Oa,{meeting:e,isSuperAdmin:O,onUpdated:t,saving:i,setSaving:l,memberNameById:Re}),ze&&!(v.open&&"error"===ze.severity)&&p(le,{severity:ze.severity,sx:{mb:2},onClose:()=>Fe(null),children:ze.message}),yn&&p(le,{severity:"warning",sx:{mb:2},children:C("meetings.detail.emailAgendaNoRecipients")}),Ye&&p(le,{severity:"error",sx:{mb:2},onClose:()=>ut(null),children:Ye}),p(Sa,{agendaDurationSeconds:Ht(R),timerStartedAt:Ke,timerPausedAt:Ve,activeAgendaTitle:null==Je?void 0:Je.title,disabled:i||qe,settled:qe,onStart:()=>{mt()},onPause:()=>{yt()},onResume:()=>{St()},onStop:()=>{Ct()}}),!qe&&p(J,{sx:{mb:2,display:"flex",gap:1,flexWrap:"wrap"},children:p(oe,{variant:"outlined",startIcon:p(kt,{}),onClick:()=>{d(null,null,function*(){try{yield Dt({agenda:R,notes:_,actionItems:V}),ee(!1),on(k,"meetings.detail.settledSuccess")}catch(e){}})},disabled:i,sx:y(We),children:C("meetings.detail.settleAccruals")})}),qe&&p(J,{sx:{mb:2,display:"flex",gap:1,flexWrap:"wrap"},children:p(oe,{variant:"outlined",color:"warning",onClick:()=>{d(null,null,function*(){if(window.confirm(C("meetings.detail.unsettleConfirm")))try{yield Ft(),on(k,"meetings.detail.unsettledSuccess")}catch(e){}})},disabled:i,sx:y(We),children:C("meetings.detail.unsettleAccruals")})}),m(ye,{value:L,onChange:(e,t)=>
1B(t),sx:y([ii,jt]),children:[p(xe,{label:"Agenda"+(R.length?` (${R.length})`:"")}),p(xe,{label:"Notes"}),p(xe,{label:"Actions"+(un?` (${un})`:"")})]}),m(J,{sx:y(li),children:[0===L&&m(J,{children:[0===R.length?p(q,{variant:"body2",sx:y(Ue),children:"No agenda items yet. Add topics to discuss."}):p(Q,{disablePadding:!0,children:R.map((t,n)=>m(ve,{sx:y(di),disableGutters:!0,children:[m(J,{sx:y(e.activeAgendaItemId===t.id?[ci,Qe,gi]:[ci,Qe]),children:[m(J,{sx:y(ui),children:[m(q,{variant:"caption",sx:y(hi),children:["Item ",n+1]}),m(J,{sx:y(mi),children:[p(Pt,{label:C("meetings.detail.minutes"),type:"number",size:"small",applyMargin:!1,value:Kt(t.durationSeconds),onChange:e=>nn(t.id,{durationSeconds:_t(e.target.value)}),inputProps:{min:0,step:1},sx:y(pi)}),p(te,{size:"small",label:Ut(t),sx:y(Le)}),!qe&&p(oe,{size:"small",variant:e.activeAgendaItemId===t.id?"contained":"outlined",onClick:()=>{ee(!0),It(t.id)},sx:y(e.activeAgendaItemId===t.id?$t:We),children:e.activeAgendaItemId===t.id?"Timing":"Time this"})]})]}),p(Pt,{label:"Topic",value:t.title,onChange:e=>nn(t.id,{title:e.target.value}),fullWidth:!0,size:"small"}),p(fe,{size:"small",options:(()=>{const e=ja(t,_e);return("work_stream"!==e.type||_e.some(t=>t.id===e.id))&&("project"!==e.type||_e.some(t=>t.id===e.id))?_e:[e,..._e]})(),groupBy:e=>e.group,value:ja(t,_e),onChange:(e,n)=>{Wt(t.id,n),ee(!0)},getOptionLabel:e=>e.label,isOptionEqualToValue:(e,t)=>e.id===t.id,slotProps:{paper:{sx:y(Ne)}},renderInput:e=>p(X,o(r({},e),{label:"Wage charge (project or work stream)",placeholder:"Default: paid work"})),sx:y(Oe)}),p(Pt,{label:"Notes",value:t.notes||"",onChange:e=>nn(t.id,{notes:e.target.value}),fullWidth:!0,multiline:!0,minRows:1,size:"small"})]}),p(ue,{onClick:()=>{return e=t.id,H(t=>t.filter(t=>t.id!==e)),void ee(!0);var e},"aria-label":"Remove agenda item",sx:y(De),children:p(pt,{fontSize:"small"})})]},t.id))}),p(oe,{startIcon:p(G,{}),onClick:()=>{H(e=>[...e,{id:Ja(),title:""}]),ee(!0)},sx:y([ot,ri]),children:"Add agenda item"})]}),1===L&&p(Pt,{label:"Meeting notes",value:_,onChange:e=>{K(e.target.value),ee(!0)},fullWidth:!0,multiline:!0,minRows:12,placeholder:"Capture discussion points, decisions, and context during or after the meeting…"}),2===L&&m(J,{children:[0===V.length?p(q,{variant:"body2",sx:y(Ue),children:"No action items yet."}):p(Q,{disablePadding:!0,children:V.map(t=>{return m(ve,{sx:y(fi),disableGutters:!0,children:[p(be,{checked:t.completed,onChange:e=>an(t.id,{completed:e.target.checked}),sx:y(si)}),m(J,{sx:y(t.completed?[yi,Qe,ai]:[yi,Qe]),children:[p(Pt,{label:"Action",value:t.text,onChange:e=>an(t.id,{text:e.target.value}),fullWidth:!0,size:"small"}),p(fe,{options:en,groupBy:e=>e.group,getOptionLabel:e=>e.label,value:(n=t.assignee,n?null!=(a=en.find(e=>e.label===n))?a:{value:n,label:n,group:"Meeting attendees"}:null),onChange:(e,n)=>{var a;return an(t.id,{assignee:null!=(a=null==n?void 0:n.label)?a:"",assigneeUserKey:null==n?void 0:n.userKey})},renderInput:e=>p(X,o(r({},e),{label:"Assignee",size:"small"})),sx:y([Oe,xi]),slotProps:{paper:{sx:y(Ne)}},size:"small"})]}),m(J,{sx:y(Ya),children:[p(ba,{meeting:e,action:t,platformAdmins:z,openingWorkStream:Se,onOpenWorkStream:e=>{(e=>{d(null,null,function*(){if(e.workStreamId){Ce(!0);try{const t=yield h.getWorkStream(e.workStreamId);if(!t)return;he(null),se(t.id),pe(t),ae(!0)}finally{Ce(!1)}}})})(e)},onStartNewWorkStream:rn,onLinked:cn}),p(ue,{onClick:()=>{return e=t.id,Y(t=>t.filter(t=>t.id!==e)),void ee(!0);var e},"aria-label":"Remove action item",sx:y(De),children:p(pt,{fontSize:"small"})})]})]},t.id);var n,a})}),p(oe,{startIcon:p(G,{}),onClick:()=>{Y(e=>[...e,{id:Ja(),text:"",completed:!1}]),ee(!0)},sx:y([ot,ri]),children:"Add action item"}),m(J,{sx:y(oi),children:[p(ce,{title:e.teamUpdateGroupId?0===Cn.length?C("meetings.actions.needsActions"):C("meetings.actions.confirmToChatHint"):C("meetings.actions.needsGroup"),children:p("span",{children:p(oe,{variant:"contained",startIcon:ke?p(de,{size:16}):p(At,{}),onClick:()=>{$n()},disabled:!kn||i,sx:y($t),children:C("meetings.actions.confirmToChat")})})}),wn&&p(q,{variant:"caption",sx:y(Ue),children:wn})]})]})]}),Z&&m(J,{sx:y(dt),children:[p(q,{variant:"body2",sx:y(ni),children:C(qe?"meetings.detail.unsavedSettledHint":"meetings.detail.unsavedHint")}),p(oe,{variant:"contained",onClick:()=>d(null,null,function*(){l(!0),ut(null);try{yield tn()}catch(e){const t=e instanceof Error?e.message:C("errors.meetingSaveFailed");dn(k,t===Rn?"errors.meetingSettleNeedsAttendees":"errors.meetingSaveFailed"),ut(t)}finally{l(!1)}}),disabled:i,sx:y($t),children:i?"Saving…":"Save changes"})]})]}),ne&&p(Mt,{overlayColor:"rgba(113, 113, 113, 0.3)",placement:"Centered",verticalCenter:!0,zIndex:10002,children:p(Tt,{workStreamId:ie,initialWorkStreamData:re,onClose:sn,onSave:e=>d(null,null,function*(){ge&&e&&(yield cn(ge,{workStreamId:e})),sn()})})}),p(ea,{open:v.open,meeting:bn(),attendeeLabels:Zt,recipients:Pe,skippedNames:Te,sending:Ie,error:xn,onClearError:()=>Fe(null),onClose:v.handleClose,onConfirm:()=>d(null,null,function*(){const n=bn();Ae(!0),Fe(null);try{yield function(e,t,n){return d(this,null,function*(){if(0===t.length)throw new Error("No attendee email addresses available");const a=Qn(e);for(const i of t)yield f({to:i.email,subject:a,text:Jn(e,n,i.name),html:Yn(e,n,i.name)})})}(n,Pe,Zt);const a=ln.now();yield Et.updateMeeting(e.id,{agendaEmailedAt:a}),t(o(r({},n),{agendaEmailedAt:a}));let i=`Agenda emailed to ${Pe.length} attendee${1===Pe.length?"":"s"}.`;Te.length>0&&(i+=` Skipped ${Te.length} without email: ${Te.join(", ")}.`),Fe({severity:Te.length>0?"warning":"success",message:i}),v.handleClose()}catch(a){Fe({severity:"error",message:Zn(a,"send")})}finally{Ae(!1)}})}),p(me,{open:b,autoHideDuration:4e3,onClose:W,anchorOrigin:{vertical:"bottom",horizontal:"center"},children:p(le,{onClose:W,severity:A,variant:"filled",children:I})})]})},Ya=({spacing:e})=>({display:"flex",flexDirection:"column",alignItems:"flex-end",gap:`${e.xs}px`,flexShrink:0}),Qa=()=>({}),Za=({spacing:e})=>({display:"flex",alignItems:"center",flexWrap:"wrap",gap:`${e.sm}px`}),ei=({colors:e})=>({color:e.text,fontWeight:700}),ti=({colors:e,spacing:t})=>({color:e.textDim,mt:`${t.sm}px`}),ni=({colors:e})=>({color:e.textDim}),ai=()=>({opacity:.65}),ii=({spacing:e,colors:t})=>({mb:`${e.md}px`,borderBottom:1,borderColor:t.palette.border}),li=()=>({minHeight:320}),si=({colors:e})=>({color:e.textDim,"&.Mui-checked":{color:e.primary}}),ri=({spacing:e})=>({mt:`${e.sm}px`}),oi=({spacing:e})=>({display:"flex",flexDirection:"column",alignItems:"flex-start",ga
1p:`${e.xs}px`,mt:`${e.md}px`}),di=({spacing:e})=>({alignItems:"flex-start",gap:`${e.sm}px`,mb:`${e.md}px`}),ci=({spacing:e})=>({flex:1,display:"flex",flexDirection:"column",gap:`${e.sm}px`}),ui=()=>({display:"flex",justifyContent:"space-between",alignItems:"center",gap:1,flexWrap:"wrap"}),mi=({spacing:e})=>({display:"flex",alignItems:"center",gap:`${e.xs}px`,flexWrap:"wrap"}),pi=()=>({width:96,"& .MuiInputBase-input":{py:.75}}),gi=({colors:e})=>({outline:`2px solid ${e.primary}`}),hi=({colors:e})=>({color:e.textDim,fontWeight:600}),fi=({spacing:e})=>({alignItems:"flex-start",gap:`${e.xs}px`,mb:`${e.sm}px`}),yi=({spacing:e})=>({flex:1,display:"flex",flexDirection:"column",gap:`${e.sm}px`}),xi=()=>({maxWidth:240}),vi=["scheduled","in_progress","completed","cancelled"],bi={scheduled:"Scheduled",in_progress:"In progress",completed:"Completed",cancelled:"Cancelled"},Si={superAdmin:"Super admin",orgAdmin:"Platform admin"},Ci=({open:e,onClose:t,onSuccess:n,editingMeeting:a,onDeleteSuccess:i})=>{var l,s;const{themed:u}=c(),h=wt(),{users:f,loading:v}=Jt(),[b,S]=F.useState(!1),[I,A]=F.useState(!1),[k,w]=F.useState(null),[j,M]=F.useState(""),[T,L]=F.useState(""),[B,U]=F.useState(""),[G,R]=F.useState(""),[H,_]=F.useState([]),[K,V]=F.useState(""),[Y,Q]=F.useState(""),[Z,ee]=F.useState("scheduled"),[ne,de]=F.useState([]),[ce,ue]=F.useState(!1),[me,pe]=F.useState(null),he=Boolean(a),ye=(null==(l=$.user)?void 0:l.userId)||"",xe=E(null==(s=$.user)?void 0:s.userRole),ve=F.useMemo(()=>{const e=new Map;return f.forEach(t=>e.set(t.userKey,t)),e},[f]),be=F.useMemo(()=>f.map(Qt),[f]),ke=F.useMemo(()=>H.filter(e=>"user"===e.type),[H]),we=e=>"user"===e.type?e.userName:"guest"===e.type?`${e.name} (${e.email})`:e.name;F.useEffect(()=>{if(!e)return;let t=!1;ue(!0);return(xe?P.listAllGroups():ye?P.listGroupsForUser(ye):Promise.resolve([])).then(e=>{t||de(e)}).catch(e=>{console.error(e),t||de([])}).finally(()=>{t||ue(!1)}),()=>{t=!0}},[e,xe,ye]),F.useEffect(()=>{if(e)if(w(null),a)M(a.title),L(a.description||""),U(W(D(a.scheduledAt))),R(a.location||""),ee(a.status),V(""),Q("");else{const e=new Date;e.setMinutes(0,0,0),e.setHours(e.getHours()+1),M(""),L(""),U(W(e)),R(""),_([]),V(""),Q(""),ee("scheduled"),pe(null)}},[e,a]),F.useEffect(()=>{e&&a&&_(Zt(a.attendees||[],ve))},[e,a,ve]),F.useEffect(()=>{if(!e||!(null==a?void 0:a.teamUpdateGroupId))return void(e&&!a&&pe(null));const t=a.teamUpdateGroupId,n=ne.find(e=>e.id===t);pe(null!=n?n:{id:t,name:a.teamUpdateGroupName||t,organisationId:a.organisationId,memberIds:[],createdBy:"",createdAt:a.createdAt,updatedAt:a.updatedAt})},[e,a,ne]);return m(g,{children:[m(re,{open:e,onClose:t,maxWidth:"sm",fullWidth:!0,sx:u(x),slotProps:{backdrop:{sx:u(y)}},PaperProps:{sx:u(Ee)},children:[p(ae,{sx:u(Me),children:he?"Edit meeting":"Schedule meeting"}),m(ie,{sx:u(Ii),children:[k&&p(le,{severity:"error",sx:{mb:2},onClose:()=>w(null),children:k}),p(Pt,{label:"Title",value:j,onChange:e=>M(e.target.value),fullWidth:!0,required:!0,autoFocus:!0,InputLabelProps:{shrink:!0}}),p(Pt,{label:"Description",value:T,onChange:e=>L(e.target.value),fullWidth:!0,multiline:!0,minRows:2}),p(Pt,{label:"Date and time",type:"datetime-local",value:B,onChange:e=>U(e.target.value),fullWidth:!0,required:!0,InputLabelProps:{shrink:!0}}),p(Pt,{label:"Location",value:G,onChange:e=>R(e.target.value),fullWidth:!0,placeholder:"e.g. Zoom link or room name"}),m(J,{sx:u(Ei),children:[p(fe,{options:ne,loading:ce,value:me,onChange:(e,t)=>
1(e=>{pe(e),e&&_(t=>{const n=new Map(t.map(e=>[en(e),e]));for(const a of e.memberIds){if(n.has(a))continue;const e=ve.get(a);e?n.set(a,Qt(e)):n.set(a,{type:"user",userKey:a,userName:a})}return Array.from(n.values()).sort((e,t)=>we(e).localeCompare(we(t)))})})(t),getOptionLabel:e=>e.name,isOptionEqualToValue:(e,t)=>e.id===t.id,componentsProps:{popper:z,paper:{sx:u(Ne)}},sx:u(Oe),renderInput:e=>p(X,o(r({},e),{label:C("meetings.form.teamGroup"),placeholder:C("meetings.form.teamGroupPlaceholder")}))}),p(q,{variant:"caption",sx:u(Wi),children:C("meetings.form.teamGroupHint")})]}),m(J,{sx:u(wi),children:[H.length>0&&p(J,{sx:u($i),children:H.map((e,t)=>p(te,{label:we(e),variant:"outlined",onDelete:()=>{_(e=>e.filter((e,n)=>n!==t))},sx:u(Le)},en(e)))}),p(fe,{multiple:!0,options:be,getOptionLabel:e=>e.userName,value:ke,onChange:(e,t)=>{const n=H.filter(e=>"user"!==e.type),a=new Set,i=t.filter(e=>!a.has(e.userKey)&&(a.add(e.userKey),!0));_([...i,...n].sort((e,t)=>we(e).localeCompare(we(t))))},loading:v,isOptionEqualToValue:(e,t)=>e.userKey===t.userKey,componentsProps:{popper:z,paper:{sx:u(Ne)}},sx:u(Oe),renderInput:e=>p(X,o(r({},e),{label:"Platform admins",placeholder:"Select platform admins"})),renderOption:(e,t)=>Se(J,o(r({component:"li"},e),{key:t.userKey}),m(J,{children:[p(q,{variant:"body2",sx:u(Ai),children:t.userName}),m(q,{variant:"caption",sx:u(ki),children:[Si[t.role],t.email?` · ${t.email}`:""]})]})),renderTags:()=>null}),m(J,{sx:u(ji),children:[p(q,{variant:"subtitle2",sx:u(Pi),children:"Guest attendees"}),p(q,{variant:"caption",sx:u(Mi),children:"Add external attendees with an email address so they receive the agenda."}),m(J,{sx:u(Ti),children:[p(Pt,{label:"Guest name",value:K,onChange:e=>V(e.target.value),size:"small",fullWidth:!0}),p(Pt,{label:"Guest email",type:"email",value:Y,onChange:e=>Q(e.target.value),size:"small",fullWidth:!0}),p(oe,{variant:"outlined",startIcon:p(kn,{}),onClick:()=>{const e=K.trim(),t=Y.trim().toLowerCase();if(!e||!tn(t))return;const n={type:"guest",name:e,email:t},a=en(n);_(e=>e.some(e=>en(e)===a)?e:[...e,n].sort((e,t)=>we(e).localeCompare(we(t)))),V(""),Q("")},disabled:!K.trim()||!tn(Y),sx:{flexShrink:0,whiteSpace:"nowrap"},children:"Add guest"})]})]})]}),he&&m(Ce,{fullWidth:!0,sx:u([Di,jn]),children:[p(Ie,{children:"Status"}),p(Ae,{value:Z,label:"Status",onChange:e=>ee(e.target.value),MenuProps:o(r({},N),{PaperProps:{sx:u(Ne)}}),children:vi.map(e=>p(ge,{value:e,sx:u($n),children:bi[e]},e))})]})]}),m(se,{sx:u([Te,zi]),children:[he?p(oe,{color:"error",onClick:h.handleOpen,disabled:b,children:"Delete"}):p("span",{}),p(sn,{loading:b,onCancel:t,onSubmit:()=>d(null,null,function*(){var e;if(j.trim()&&B){S(!0),w(null);try{const i=(null==(e=$.currentOrganisation)?void 0:e.id)||O,l=new Date(B),s=nn(H),o=me?{teamUpdateGroupId:me.id,teamUpdateGroupName:me.name}:{teamUpdateGroupId:null,teamUpdateGroupName:null};if(a){if(yield Et.updateMeeting(a.id,r({title:j.trim(),description:T.trim()||void 0,scheduledAt:l,location:G.trim()||void 0,attendees:s,status:Z},o)),"completed"===Z&&"completed"!==a.status&&!a.livingWageSettledAt){const e=yield Et.getMeeting(a.id);e&&(yield _n(e))}n(a.id)}else{const e=yield Et.createMeeting(r({title:j.trim(),description:T.trim()||void 0,scheduledAt:l,location:G.trim()||void 0,attendees:s,organisationId:i},me?{teamUpdateGroupId:me.id,teamUpdateGroupName:me.name}:{}));n(e)}t()}catch(i){w(i instanceof Error?i.message:"Failed to save meeting")}finally{S(!1)}}}),isValid:Boolean(j.trim()&&B),isEditMode:he,submitText:he?"Save changes":"Schedule meeting",sx:{p:0}})]})]}),p(wn,{open:h.open,onClose:h.handleClose,onConfirm:()=>d(null,null,function*(){if(a){A(!0);try{yield Et.deleteMeeting(a.id),h.handleClose(),null==i||i(),t()}catch(e){w(e instanceof Error?e.message:"Failed to delete meeting")}finally{A(!1)}}}),title:"Delete meeting",message:`Are you sure you want to delete "${null==a?void 0:a.title}"? This cannot be undone.`,deleting:I})]})},Ii=({colors:e,spacing:t})=>({color:e.text,pt:`${t.lg}px`,overflow:"visible"}),Ai=({colors:e})=>({color:e.text}),ki=({colors:e})=>({color:e.textDim}),wi=({spacing:e})=>({display:"flex",flexDirection:"column",gap:`${e.sm}px`}),$i=({spacing:e})=>({display:"flex",flexWrap:"wrap",gap:`${e.xs}px`}),ji=({spacing:e})=>({display:"flex",flexDirection:"column",gap:`${e.xs}px`,mt:`${e.sm}px`}),Pi=({colors:e})=>({color:e.text,fontWeight:600}),Mi=({colors:e})=>({color:e.textDim}),Ti=({spacing:e})=>({display:"flex",flexWrap:"wrap",alignItems:"flex-end",gap:`${e.sm}px`}),Ei=({spacing:e})=>({display:"flex",flexDirection:"column",gap:`${e.xs}px`,mb:`${e.sm}px`}),Wi=({colors:e})=>({color:e.textDim}),Di=({spacing:e})=>({mt:`${e.md}px`,mb:`${e.md}px`}),zi=({spacing:e})=>({justifyContent:"space-between",px:`${e.lg}px`,pb:`${e.md}px`});const Ni=({open:e,meeting:t,folders:n,onClose:a,onPublished:i})=>{const{themed:l}=c(),{resolveAttendeeLabels:s,loading:g}=Jt(e),[h,f]=F.useState(""),[v,b]=F.useState("meetings/minutes"),[S,I]=F.useState(""),[A,k]=F.useState(!1),[w,$]=F.useState(!1),[j,P]=F.useState(null),[M,T]=F.useState(null);F.useEffect(()=>{if(!e||!t)return;const n=t.publishedMinutesPath||function(e){const t=u(e.scheduledAt);return`meetings/minutes/${t?an(t,"yyyy-MM-dd"):"undated"}-${e.title.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,"").slice(0,60)||"meeting"}.md`}(t),a=n.split("/"),i=a.pop()||"minutes.md";f(i),b(a.join("/")||"meetings/minutes"),g||I(function(e,t){var n;const a=u(e.scheduledAt),i=a?an(a,"d MMMM yyyy"):"Date TBC",l=a?an(a,"HH:mm"):"",s=[`# ${e.title}`,"",`**Date:** ${i}${l?` at ${l}`:""}`];e.location&&s.push(`**Location:** ${e.location}`);const r=null!=t?t:e.attendees;r.length>0&&s.push("","## Attendees","",r.map(e=>`- ${e}`).join("\n")),e.agenda.length>
10&&(s.push("","## Agenda",""),e.agenda.forEach((e,t)=>{var n;s.push(`${t+1}. **${e.title}**`),(null==(n=e.notes)?void 0:n.trim())&&s.push(`   - ${e.notes.trim()}`)})),e.notes.trim()&&s.push("","## Notes","",e.notes.trim());const o=e.actionItems.filter(e=>!e.completed),d=e.actionItems.filter(e=>e.completed);return(o.length>0||d.length>0)&&(s.push("","## Action items",""),o.forEach(e=>{const t=e.assignee?` — *${e.assignee}*`:"";s.push(`- [ ] ${e.text}${t}`)}),d.forEach(e=>{const t=e.assignee?` — *${e.assignee}*`:"";s.push(`- [x] ${e.text}${t}`)})),(null==(n=e.description)?void 0:n.trim())&&s.push("","## Description","",e.description.trim()),s.push("","---",`*Published from Meetings on ${an(new Date,"d MMMM yyyy")}*`),s.join("\n")}(t,s(t.attendees))),P(null),T(null)},[e,t,g,s]);const E=()=>{const e=h.trim()||"minutes.md",t=e.toLowerCase().endsWith(".md")?e:`${e}.md`;return v?`${v}/${t}`:t};F.useEffect(()=>{if(!e)return;(e=>{d(null,null,function*(){var t,n;$(!0);try{const a=yield Mn.getContents(e),i=null!=(t=a.find(e=>"file"===e.type))?t:a[0];T(null!=(n=null==i?void 0:i.sha)?n:null)}catch(a){T(null)}finally{$(!1)}})})(E())},[e,v,h]);return m(re,{open:e,onClose:a,maxWidth:"md",fullWidth:!0,sx:l(x),slotProps:{backdrop:{sx:l(y)}},PaperProps:{sx:l(Ee)},children:[p(ae,{sx:l(Me),children:"Publish minutes to Organisation Files"}),m(ie,{sx:l(Oi),children:[p(q,{variant:"body2",sx:l(Li),children:"Minutes will be saved as a markdown file in Organisation Files, where the team can read and search them."}),j&&p(le,{severity:"error",sx:{mb:2},onClose:()=>P(null),children:j}),M&&p(le,{severity:"info",sx:{mb:2},children:"A file already exists at this path. Publishing will update it."}),p(Pt,{label:"File name",value:h,onChange:e=>f(e.target.value),fullWidth:!0,helperText:`Full path: ${E()}`}),p(Pn,{folders:n,selectedPath:v,onSelect:b,label:"Save to folder:"}),p(Pt,{label:"Minutes content",value:S,onChange:e=>I(e.target.value),fullWidth:!0,multiline:!0,minRows:12,sx:{mt:2}}),w&&m(J,{sx:l(Bi),children:[p(de,{size:20,sx:l(Ui)}),p(q,{variant:"body2",sx:l(Fi),children:"Checking destination…"})]})]}),p(sn,{loading:A,onCancel:a,onSubmit:()=>d(null,null,function*(){if(!t||!S.trim())return;if("completed"!==t.status)return void P(C("meetings.detail.publishRequiresCompleted"));k(!0),P(null);const e=E();try{M?yield Tn.updateFile(e,S,M,`Update meeting minutes: ${t.title}`):yield Tn.createFile(e,S,`Publish meeting minutes: ${t.title}`);const n=ln.now();yield Et.updateMeeting(t.id,{publishedMinutesPath:e,publishedMinutesAt:n});let l=o(r({},t),{publishedMinutesPath:e,publishedMinutesAt:n});if(!t.livingWageSettledAt){const t=yield _n(l);l=o(r({},t.meeting),{publishedMinutesPath:e,publishedMinutesAt:n})}i(l,e),a()}catch(n){P(n instanceof Error?n.message:"Failed to publish minutes")}finally{k(!1)}}),isValid:Boolean(S.trim()&&h.trim()),submitText:"Publish to Organisation Files",sx:l(Te)})]})},Oi=({colors:e})=>({color:e.text}),Li=({colors:e,spacing:t})=>({color:e.textDim,mb:`${t.md}px`}),Bi=({spacing:e})=>({display:"flex",alignItems:"center",gap:`${e.sm}px`,mt:`${e.md}px`}),Fi=({colors:e})=>({color:e.textDim}),Ui=({colors:e})=>({color:e.primary}),Gi=()=>{var e;const{themed:t}=c(),n=U(),a=wt(),i=wt(),l=wt(),[s,r]=F.useState([]),[o,h]=F.useState(null),[f,y]=F.useState(null),[x,v]=F.useState(!0),[b,S]=F.useState(!1),[C,I]=F.useState(null),[A,k]=F.useState([]),[w,j]=F.useState(null),[P,M]=F.useState(null),T=F.useCallback(()=>d(null,null,function*(){var e;const t=(null==(e=$.currentOrganisation)?void 0:e.id)||O,n=yield Et.getMeetingsByOrganisation(t);return r(n),n}),[]),E=F.useCallback(()=>d(null,null,function*(){try{const e=yield Tn.getRepositoryTree("main",!1,!0);if(!(null==e?void 0:e.tree))return;const t=e.tree.filter(e=>"tree"===e.type&&!Tn.shouldIgnorePath(e.path)).map(e=>({path:e.path,label:e.path.split("/").pop()||e.path}));k(t)}catch(e){k([{path:"meetings/minutes",label:"minutes"}])}}),[]),W=F.useMemo(()=>{const e=new Date;let t=0,n=0,a=0;return s.forEach(i=>{const l=u(i.scheduledAt);l&&l>=e&&"cancelled"!==i.status&&"completed"!==i.status&&(t+=1),n+=i.actionItems.filter(e=>!e.completed).length,i.publishedMinutesPath&&(a+=1)}),{upcoming:t,openActions:n,published:a,total:s.length}},[s]);F.useEffect(()=>{let e=!1;return d(null,null,function*(){v(!0),I(null);try{const t=yield T();!e&&t.length>0&&!o&&h(t[0]),yield E()}catch(t){e||I(t instanceof Error?t.message:"Failed to load meetings")}finally{e||v(!1)}}),()=>{e=!0}},[T,E]);const D=e=>d(null,null,function*(){const t=(yield T()).find(t=>
1t.id===e);t&&h(t)}),z=e=>{r(t=>t.map(t=>t.id===e.id?e:t)),h(e)};return m(Dn,{children:[p(En,{icon:H,title:"Meetings",subtitle:"Schedule meetings linked to Team Updates, run video calls, confirm attendance, and publish minutes.",stats:!x&&s.length>0?m(g,{children:[p(Wn,{icon:p(_,{color:"primary",fontSize:"small"}),value:W.upcoming,label:"Upcoming"}),p(Wn,{icon:p(Bn,{color:"warning",fontSize:"small"}),value:W.openActions,label:"Open actions"}),p(Wn,{icon:p(we,{color:"success",fontSize:"small"}),value:W.published,label:"Published"})]}):void 0,actions:p(g,{children:p(oe,{variant:"contained",startIcon:p(G,{}),onClick:a.handleOpen,sx:t($t),children:"Schedule meeting"})})}),C&&p(le,{severity:"error",sx:{mb:2},onClose:()=>I(null),children:C}),P&&p(le,{severity:"success",sx:{mb:2},onClose:()=>M(null),action:p(oe,{color:"inherit",size:"small",onClick:()=>n(`/org-files?file=${encodeURIComponent(P)}`),children:"Open in Organisation Files"}),children:"Minutes published successfully."}),x?p(J,{sx:t(zn),children:p(de,{sx:t(L)})}):m(J,{sx:t(mt),children:[p(Gn,{meetings:s,selectedId:null!=(e=null==o?void 0:o.id)?e:null,onSelect:h}),o?p(Xa,{meeting:o,onUpdated:z,onEdit:()=>{o&&(y(o),i.handleOpen())},onPublish:e=>{j(e),l.handleOpen()},saving:b,setSaving:S}):m(J,{sx:t(ut),children:[p(H,{sx:t(Fe)}),p(q,{variant:"h6",sx:t(Ri),children:"No meeting selected"}),p(q,{variant:"body2",sx:t(Ue),children:"Choose a meeting from the list, or schedule a new one to get started."}),p(oe,{variant:"contained",startIcon:p(G,{}),onClick:a.handleOpen,sx:t($t),children:"Schedule meeting"})]})]}),p(Ci,{open:a.open,onClose:a.handleClose,onSuccess:D}),p(Ci,{open:i.open,onClose:()=>{i.handleClose(),y(null)},onSuccess:D,editingMeeting:f,onDeleteSuccess:()=>{h(null),T()}}),p(Ni,{open:l.open,meeting:null!=w?w:o,folders:A,onClose:()=>{l.handleClose(),j(null)},onPublished:(e,t)=>{z(e),M(t)}})]})},Ri=({colors:e})=>({color:e.text,fontWeight:600});export{Gi as default};
2//# sourceMappingURL=MeetingsView-_ZwTWLhn.js.map

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.