@remit/web-client-dist 0.0.658 → 0.0.659

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (159) hide show
  1. package/assets/{BriefPane-DTnPypWR.js → BriefPane-BdrK2exQ.js} +1 -1
  2. package/assets/{CalendarComposePane-B5vgWbn2.js → CalendarComposePane-C4QJ-2yz.js} +1 -1
  3. package/assets/{CalendarComposeSeed-CvfYDo6K.js → CalendarComposeSeed-DDQ_6KwG.js} +1 -1
  4. package/assets/{CalendarShell-CNCnuYI7.js → CalendarShell-BxWfrZ1K.js} +1 -1
  5. package/assets/{EmptyState-DCvsovpV.js → EmptyState-DfgfTFyx.js} +1 -1
  6. package/assets/{ErrorState-BVvZa9Hj.js → ErrorState-BxamrMX4.js} +1 -1
  7. package/assets/{FlaggedPane-CmOkn_je.js → FlaggedPane-B81F-Ius.js} +1 -1
  8. package/assets/{FullCompose-C-kYe1x_.js → FullCompose-CGEtdvHI.js} +1 -1
  9. package/assets/{MailListHeader-qqqmfyRg.js → MailListHeader-DKQDxTr-.js} +1 -1
  10. package/assets/{MailNav-UWoxDID1.js → MailNav-BtDjmyjz.js} +1 -1
  11. package/assets/{MailShell-D1RYjXBs.js → MailShell-Bz1hiaGc.js} +1 -1
  12. package/assets/{MailViewChrome-CyrIkwO-.js → MailViewChrome-jgVI0MNT.js} +1 -1
  13. package/assets/{MailboxPane-sVCHNXDC.js → MailboxPane-xtVMKMJI.js} +1 -1
  14. package/assets/{NavMenuButton-tjQzgXI6.js → NavMenuButton-D9CW9yXs.js} +1 -1
  15. package/assets/{OnboardingWizard-DC3VOl45.js → OnboardingWizard-C4yhjGtR.js} +1 -1
  16. package/assets/{OpenCalendarEvent-DIV9Zaoz.js → OpenCalendarEvent-GIzII9CD.js} +1 -1
  17. package/assets/{OutboxPane-DYMpq8YL.js → OutboxPane-CGpgJAXw.js} +1 -1
  18. package/assets/{SignInAgain-BroDYbz-.js → SignInAgain-jn58nQP6.js} +1 -1
  19. package/assets/_calendarObjectId-nxT9Cd4b.js +1 -0
  20. package/assets/_mailboxId-oLYxQCD3.js +1 -0
  21. package/assets/_messageId-CCO8nZeh.js +1 -0
  22. package/assets/_messageId-i0DWT1LI.js +1 -0
  23. package/assets/_messageId-mRTnvK5c.js +1 -0
  24. package/assets/_outboxMessageId-ChboPh8E.js +1 -0
  25. package/assets/_recurrenceId-BGJ8Sm-l.js +1 -0
  26. package/assets/_threadId-CaYtB_WN.js +1 -0
  27. package/assets/_threadId-OVejPT9k.js +1 -0
  28. package/assets/_threadId-fRx1zVFy.js +1 -0
  29. package/assets/{_view._date-DWJzo3Lb.js → _view._date-CIup_Q5W.js} +1 -1
  30. package/assets/{accounts-BnWAstqJ.js → accounts-SAuzFQ3C.js} +1 -1
  31. package/assets/{advanced-CO3uos8-.js → advanced-DQMn-u_6.js} +1 -1
  32. package/assets/{appearance-l54q8jn2.js → appearance-GEiZelw-.js} +1 -1
  33. package/assets/{attendee-row-D2LMbq_7.js → attendee-row-uWc3noHO.js} +1 -1
  34. package/assets/{avatar-BEy9bmfT.js → avatar-DcDIT3A8.js} +1 -1
  35. package/assets/{bell-off-o-5HqpFD.js → bell-off-DUtdhBfF.js} +1 -1
  36. package/assets/{bottom-sheet-BQrIuUAp.js → bottom-sheet-l0no0Avc.js} +1 -1
  37. package/assets/brief-BDAlZsbh.js +1 -0
  38. package/assets/{brief-BRyi3cpm.js → brief-CrG0TXf-.js} +1 -1
  39. package/assets/{bug-CiMAHRp3.js → bug-DucI4vmB.js} +1 -1
  40. package/assets/{calendar-CUTV9vSe.js → calendar-boBQgeWi.js} +1 -1
  41. package/assets/{calendar-clash-strip-BbznG7yo.js → calendar-clash-strip-BpOMxYTS.js} +1 -1
  42. package/assets/{calendar-format-BZ1D5Ywu.js → calendar-format-D-v5Wjn8.js} +1 -1
  43. package/assets/{calendar-report-1ttmpioo.js → calendar-report-BTxDp0XA.js} +1 -1
  44. package/assets/{calendar-suggestion-DJ5uMZX8.js → calendar-suggestion-j6PFwg_2.js} +1 -1
  45. package/assets/{calendars-Db5I-yCU.js → calendars-BRMCZNMT.js} +1 -1
  46. package/assets/{card-BKgdv2bH.js → card-VSc_eLI7.js} +1 -1
  47. package/assets/{checkbox-p9mLPjVs.js → checkbox-DyheZb9X.js} +1 -1
  48. package/assets/chevron-left-DYU2nQOC.js +1 -0
  49. package/assets/{circle-check-big-Cc1ertAI.js → circle-check-big-3kpPwCgK.js} +1 -1
  50. package/assets/{circle-check-6Bb3NNZS.js → circle-check-makGBNzJ.js} +1 -1
  51. package/assets/{circle-help-C0X0r4BQ.js → circle-help-De0-XbHV.js} +1 -1
  52. package/assets/{clock-BDHe3TX8.js → clock-tuesWj8Y.js} +1 -1
  53. package/assets/compose._-_outboxMessageId_-D3PM2hJA.js +1 -0
  54. package/assets/compose._-_outboxMessageId_-D3dfLj3E.js +1 -0
  55. package/assets/compose._-_outboxMessageId_-by9UvleU.js +1 -0
  56. package/assets/compose._-_outboxMessageId_-t0uDuGCl.js +1 -0
  57. package/assets/{config-import-DH8GC5mw.js → config-import-D3RZSoC0.js} +1 -1
  58. package/assets/{confirm-dialog-BmiOsB9N.js → confirm-dialog-DyvhMD1R.js} +1 -1
  59. package/assets/{copy-B89b-33D.js → copy-Zm_0Ajof.js} +1 -1
  60. package/assets/{credential-steps-CKcZdVNd.js → credential-steps-ub2ww0ge.js} +1 -1
  61. package/assets/{download-53lT8mTP.js → download-B8H9UItJ.js} +1 -1
  62. package/assets/{external-link-NCezTZkT.js → external-link-CGtw0pwj.js} +1 -1
  63. package/assets/{file-json-ofsJkIbX.js → file-json-BTzNgrHv.js} +1 -1
  64. package/assets/{filters-aur8iSET.js → filters-B12L_wOK.js} +1 -1
  65. package/assets/flagged-CB_iIMnJ.js +1 -0
  66. package/assets/{flagged-gRZxDkLX.js → flagged-DglDNhoh.js} +1 -1
  67. package/assets/{folders-17G_KhLm.js → folders-C2jVZZ1E.js} +1 -1
  68. package/assets/{help-copy-CADUhLzQ.js → help-copy-ETAaDkc7.js} +1 -1
  69. package/assets/{import-CdvuJtNy.js → import-BeylQ7Mh.js} +1 -1
  70. package/assets/{index-DDSpdJ8F.js → index-BD0xR1To.js} +4 -4
  71. package/assets/index-BLnfv0a9.js +1 -0
  72. package/assets/index-CFZD4Llh.js +1 -0
  73. package/assets/index-CcJMBsLJ.js +1 -0
  74. package/assets/index-CtuiSaCS.js +1 -0
  75. package/assets/{index-BngpvrPX.js → index-Cw5aGFb4.js} +1 -1
  76. package/assets/{index-BDIVfNXM.js → index-D0DzGa5J.js} +3 -3
  77. package/assets/index-T7UWz5y9.js +1 -0
  78. package/assets/index-WIu9MfmE.js +1 -0
  79. package/assets/index-WRGoXiDS.js +1 -0
  80. package/assets/index-i0DWT1LI.js +1 -0
  81. package/assets/index-mRTnvK5c.js +1 -0
  82. package/assets/{kbd-BTTdW6-z.js → kbd-BHwdDuqC.js} +1 -1
  83. package/assets/{labels-DoKExISZ.js → labels-CYFWEYMz.js} +1 -1
  84. package/assets/{mail-bV9GGVUQ.js → mail-DPTdQBcn.js} +1 -1
  85. package/assets/{mail--BAAD5Tl.js → mail-Hxhm7JAo.js} +1 -1
  86. package/assets/{map-pin-Bme-miZ2.js → map-pin-DxzepqfO.js} +1 -1
  87. package/assets/{menu-DQ-pJ4eT.js → menu-rin4kYB3.js} +1 -1
  88. package/assets/minus-BnkvlNMP.js +1 -0
  89. package/assets/{new-B4HXKzav.js → new-BCF8EX_O.js} +1 -1
  90. package/assets/onboarding-BJbB8X0X.js +1 -0
  91. package/assets/{onboarding-completion-5Y5D9Jbr.js → onboarding-completion-6rCRGnvt.js} +1 -1
  92. package/assets/outbox-e5Vzaasr.js +1 -0
  93. package/assets/{pencil-D3GOCGCB.js → pencil-3eT8l-dG.js} +1 -1
  94. package/assets/{popover-menu-BRPef6re.js → popover-menu-CIQ9EMwG.js} +1 -1
  95. package/assets/{refresh-cw-BQa9I63p.js → refresh-cw-C9XDa0FY.js} +1 -1
  96. package/assets/{result-count-C11MdZzg.js → result-count-DKmjOSbb.js} +1 -1
  97. package/assets/{rich-text-BxJPXURQ.js → rich-text-D9jhmnjK.js} +1 -1
  98. package/assets/{rich-text-spellcheck-worker-provider-BL2Dc5f1.js → rich-text-spellcheck-worker-provider-DJhYkD50.js} +1 -1
  99. package/assets/{rotate-ccw-BzM31Pwc.js → rotate-ccw-VkL9A6f1.js} +1 -1
  100. package/assets/{roving-focus-DyhhSwbQ.js → roving-focus-DprxQ_bn.js} +1 -1
  101. package/assets/{row-actions-BtiK9OA9.js → row-actions-D_7JYBtJ.js} +1 -1
  102. package/assets/{search-mirror-CJ0qbKsO.js → search-mirror-BysDlccX.js} +1 -1
  103. package/assets/{search-query-hRPzdZsl.js → search-query-DwbiCfJg.js} +1 -1
  104. package/assets/{search-token-index-C1Z6zA5N.js → search-token-index-BvfhQWOt.js} +1 -1
  105. package/assets/{sections-FEvJ4c2c.js → sections-BDzSu1iK.js} +1 -1
  106. package/assets/{senders-DtHgpQ3C.js → senders-CpVur9bb.js} +1 -1
  107. package/assets/settings-D3ZXcAs5.js +1 -0
  108. package/assets/{settings-screen-B51b9lvj.js → settings-screen-Bj41qBzw.js} +1 -1
  109. package/assets/{shield-check-CgX3iFVl.js → shield-check-CIfUEzg6.js} +1 -1
  110. package/assets/{suggested-vips-CZ7lFymc.js → suggested-vips-BmIFp0CH.js} +1 -1
  111. package/assets/{suggestion._suggestionId-YuPshPzz.js → suggestion._suggestionId-Dxf5-pZK.js} +1 -1
  112. package/assets/{undo-2-DkaYLmdO.js → undo-2-M8rPT8DL.js} +1 -1
  113. package/assets/{useCalendarData-BQoK5111.js → useCalendarData-BXOzhj4q.js} +1 -1
  114. package/assets/{useCalendarFreeBusy-d-s_-0eR.js → useCalendarFreeBusy-Lcu0PN0A.js} +1 -1
  115. package/assets/{useCalendarWrites-xN5WbPCM.js → useCalendarWrites-DLWNbspq.js} +1 -1
  116. package/assets/{useCalendars-CqOpDn21.js → useCalendars-C0yLfYxq.js} +1 -1
  117. package/assets/{useDebouncedValue-CTq8lKtR.js → useDebouncedValue-DKRtYZvq.js} +1 -1
  118. package/assets/{useFilters-Oiv4LZCZ.js → useFilters-DUTq-e5L.js} +1 -1
  119. package/assets/{useLabels-DLtLZsv9.js → useLabels-oOwVRlpl.js} +1 -1
  120. package/assets/{useLayoutTier-94OSKAiu.js → useLayoutTier-BQZGFMh6.js} +1 -1
  121. package/assets/{useMessageBodyContent-BTmHg9m0.js → useMessageBodyContent-UsHOXnjm.js} +1 -1
  122. package/assets/{useQueries-DFq_6laq.js → useQueries-C45-CTu6.js} +1 -1
  123. package/assets/{useRefreshControl-DzEBgWRZ.js → useRefreshControl-ayWr09Y0.js} +1 -1
  124. package/assets/{useResultFolderIndex-DqH89sZ0.js → useResultFolderIndex-jVeEM1tT.js} +1 -1
  125. package/assets/{useSearchTokenContext-BYEkwdSc.js → useSearchTokenContext-CWaQeo6z.js} +1 -1
  126. package/assets/{useSignature-V-VSVmYl.js → useSignature-DGhao7OD.js} +1 -1
  127. package/assets/{warnings-rdkIsd04.js → warnings-DRuw_qoM.js} +1 -1
  128. package/index.html +1 -1
  129. package/package.json +1 -1
  130. package/assets/_calendarObjectId-vj5yYITL.js +0 -1
  131. package/assets/_mailboxId-Cd2gcjfj.js +0 -1
  132. package/assets/_messageId-CKLpxaGL.js +0 -1
  133. package/assets/_messageId-otRrahEY.js +0 -1
  134. package/assets/_messageId-r661xgv7.js +0 -1
  135. package/assets/_outboxMessageId-DDWh3QXk.js +0 -1
  136. package/assets/_recurrenceId-Dmg0Y1yT.js +0 -1
  137. package/assets/_threadId-CatNqDrS.js +0 -1
  138. package/assets/_threadId-CtFGotoc.js +0 -1
  139. package/assets/_threadId-bIsty-QI.js +0 -1
  140. package/assets/brief-CubStJH7.js +0 -1
  141. package/assets/chevron-left-iD9K0p2O.js +0 -1
  142. package/assets/compose._-_outboxMessageId_-BAjHEoO7.js +0 -1
  143. package/assets/compose._-_outboxMessageId_-BjU_oGCR.js +0 -1
  144. package/assets/compose._-_outboxMessageId_-C-wPU4AM.js +0 -1
  145. package/assets/compose._-_outboxMessageId_-OEkiz68p.js +0 -1
  146. package/assets/flagged-Cr5tlDf5.js +0 -1
  147. package/assets/index-69yokqv5.js +0 -1
  148. package/assets/index-BFBfS7ek.js +0 -1
  149. package/assets/index-BRntGNJA.js +0 -1
  150. package/assets/index-Cg4p98vB.js +0 -1
  151. package/assets/index-RmCPyEb8.js +0 -1
  152. package/assets/index-bYkeiMeC.js +0 -1
  153. package/assets/index-otRrahEY.js +0 -1
  154. package/assets/index-r661xgv7.js +0 -1
  155. package/assets/index-tN5HaTuq.js +0 -1
  156. package/assets/minus-kSr1dVnA.js +0 -1
  157. package/assets/onboarding-Bsm3JVIj.js +0 -1
  158. package/assets/outbox-BfHInRjp.js +0 -1
  159. package/assets/settings-DO0FWB3_.js +0 -1
@@ -1 +1 @@
1
- import{dk as Ya,e as ie,r as c,j as t,$ as ke,a0 as Ss,t as T,a1 as Za,L as vn,g as Ce,dl as Xa,dm as yn,dn as jn,dp as Is,a8 as er,f as $,X as _e,a4 as ss,aC as Rs,v as Ms,Z as sr,b5 as tr,dj as Ts,dq as kn,_ as Ue,dr as Cn,bG as lt,ds as nr,bn as ar,dt as rr,du as or,dv as ir,dw as lr,dx as wn,dc as cr,aN as dr,dy as ur,B as Nn,dz as mr,dA as fr,dB as hr,dC as pr,dD as gr,dE as xr,y as br,cK as Sn,d7 as In,c as te,d as ts,N as ns,dF as vr,dG as yr,dH as As,h as ue,au as be,i as xe,K as we,M as Ne,S as as,cB as Se,dI as Es,dJ as Ze,aK as jr,dK as rs,dL as Ie,dM as os,dN as is,dO as ls,dP as kr,dQ as Cr,dR as Rt,cI as wr,s as Rn,dS as Nr,dT as Sr,dU as Ir,b3 as Rr,cs as Mr,d1 as Mn,d2 as Tr,dV as Ar,bm as ct,bo as Tn,bj as An,bp as En,bq as Fn,br as Er,dW as Fr,ac as Dn,cR as Dr,dX as Xe,dY as Lr,aI as Or,aJ as zr,dZ as Pr,bb as Ln,d_ as _r,d$ as Br,e0 as On,e1 as Ur,w as zn,e2 as $r,bP as dt,e3 as Kr,e4 as Pn,bR as qr,e5 as Hs,e6 as Qr,bQ as Hr,U as Wr,q as Gr,D as Vr,e7 as Jr,e8 as Yr,e9 as Zr,d6 as Mt,bA as Xr,ea as eo,eb as so,aw as to,cV as no,d4 as ao,cT as Fs,aj as ro,d5 as oo,ec as io,ed as lo,ee as co,ef as uo,G as cs,eg as mo,eh as fo,ei as Tt,ej as ho,ek as po,el as go,em as xo,ai as bo,x as _n,di as vo,en as Bn,eo as yo,ep as jo,ct as ko,cq as Co,eq as wo,bS as No,er as Un,cu as So}from"./index-BDIVfNXM.js";import{u as Io,L as Ro,a as Mo}from"./roving-focus-DyhhSwbQ.js";import{j as To,S as $n,f as Ao,a as Eo,t as Ge,c as Fo,k as Do,l as Lo,m as Oo,u as zo}from"./search-token-index-C1Z6zA5N.js";import{K as Po}from"./kbd-BTTdW6-z.js";import{E as Zs}from"./EmptyState-DCvsovpV.js";import{E as De}from"./ErrorState-BVvZa9Hj.js";import{c as Kn,P as _o,E as Bo}from"./popover-menu-BRPef6re.js";import{M as qn}from"./mail-bV9GGVUQ.js";import{A as es}from"./avatar-BEy9bmfT.js";import{M as Uo,a as $o,b as Qn,c as Hn,s as Wn,d as Gn,e as Ko,f as qo,S as At,g as Vn,u as Jn,p as Qo,r as Ho}from"./useSearchTokenContext-BYEkwdSc.js";import{P as Ds,f as Wo,C as Go,D as ze,s as Vo,a as Jo,e as Et,b as Yo,c as Zo,d as Xo,g as Ft,i as ei,u as si}from"./index-DDSpdJ8F.js";import{U as ti}from"./undo-2-DkaYLmdO.js";import{o as ni,i as Dt,h as ai}from"./useMessageBodyContent-BTmHg9m0.js";import{D as ri}from"./download-53lT8mTP.js";import{s as oi,b as ii,Z as li,E as ci,C as di,e as ui,u as mi,d as fi}from"./useCalendarFreeBusy-d-s_-0eR.js";import{C as Xs,m as hi,j as pi,n as gi,o as Lt,k as Ot,p as xi,s as zt,q as bi,v as vi,t as yi,x as ji}from"./calendar-suggestion-DJ5uMZX8.js";import{c as ki,t as Ci,v as wi,x as Ni,y as Si,z as Pt}from"./calendar-format-BZ1D5Ywu.js";import{R as Ii}from"./attendee-row-D2LMbq_7.js";import{C as Ri}from"./calendar-clash-strip-BbznG7yo.js";import{C as Yn}from"./clock-BDHe3TX8.js";import{M as Mi}from"./map-pin-Bme-miZ2.js";import{B as Zn}from"./bell-off-o-5HqpFD.js";import{S as Be,u as Ti,i as Ai}from"./useLayoutTier-94OSKAiu.js";import{S as Ei,C as Xn}from"./shield-check-CgX3iFVl.js";import{u as Fi,a as Di,i as Li,t as Oi,d as zi,r as Pi}from"./useCalendars-CqOpDn21.js";import{c as _i}from"./calendar-report-1ttmpioo.js";import{u as ea}from"./useDebouncedValue-CTq8lKtR.js";import{u as Bi,a as Ui,j as $i,n as Ki,o as qi,k as Qi,S as Hi}from"./useFilters-Oiv4LZCZ.js";import{u as ut}from"./useQueries-DFq_6laq.js";import{C as Wi}from"./checkbox-p9mLPjVs.js";import{C as gs}from"./confirm-dialog-BmiOsB9N.js";import{r as Gi,a as Vi}from"./search-scope-UI1H6AzA.js";import{M as Ji}from"./menu-DQ-pJ4eT.js";function Yi(...e){return(...s)=>{for(let n of e)typeof n=="function"&&n(...s)}}let et=new Map;typeof FinalizationRegistry<"u"&&new FinalizationRegistry(e=>{et.delete(e)});function Zi(e,s){if(e===s)return e;let n=et.get(e);if(n)return n.forEach(a=>a.current=s),s;let r=et.get(s);return r?(r.forEach(a=>a.current=e),e):s}function Xi(...e){return e.length===1&&e[0]?e[0]:s=>{let n=!1;const r=e.map(a=>{const o=_t(a,s);return n||=typeof o=="function",o});if(n)return()=>{r.forEach((a,o)=>{typeof a=="function"?a():_t(e[o],null)})}}}function _t(e,s){if(typeof e=="function")return e(s);e!=null&&(e.current=s)}function sa(...e){let s={...e[0]};for(let n=1;n<e.length;n++){let r=e[n];for(let a in r){let o=s[a],i=r[a];typeof o=="function"&&typeof i=="function"&&a[0]==="o"&&a[1]==="n"&&a.charCodeAt(2)>=65&&a.charCodeAt(2)<=90?s[a]=Yi(o,i):(a==="className"||a==="UNSAFE_className")&&typeof o=="string"&&typeof i=="string"?s[a]=Ya(o,i):a==="id"&&o&&i?s.id=Zi(o,i):a==="ref"&&o&&i?s.ref=Xi(o,i):s[a]=i!==void 0?i:o}}return s}const Ls=ie("BadgeCheck",[["path",{d:"M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z",key:"3c2336"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]]);const el=ie("Calendar",[["path",{d:"M8 2v4",key:"1cmpym"}],["path",{d:"M16 2v4",key:"4m81vk"}],["rect",{width:"18",height:"18",x:"3",y:"4",rx:"2",key:"1hopcy"}],["path",{d:"M3 10h18",key:"8toen8"}]]);const sl=ie("CodeXml",[["path",{d:"m18 16 4-4-4-4",key:"1inbqp"}],["path",{d:"m6 8-4 4 4 4",key:"15zrgr"}],["path",{d:"m14.5 4-5 16",key:"e7oirm"}]]);const ta=ie("Code",[["polyline",{points:"16 18 22 12 16 6",key:"z7tu5w"}],["polyline",{points:"8 6 2 12 8 18",key:"1eg1df"}]]);const na=ie("Forward",[["polyline",{points:"15 17 20 12 15 7",key:"1w3sku"}],["path",{d:"M4 18v-2a4 4 0 0 1 4-4h12",key:"jmiej9"}]]);const tl=ie("History",[["path",{d:"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"1357e3"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}],["path",{d:"M12 7v5l4 2",key:"1fdv2h"}]]);const nl=ie("MailCheck",[["path",{d:"M22 13V6a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v12c0 1.1.9 2 2 2h8",key:"12jkf8"}],["path",{d:"m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7",key:"1ocrg3"}],["path",{d:"m16 19 2 2 4-4",key:"1b14m6"}]]);const mt=ie("MailOpen",[["path",{d:"M21.2 8.4c.5.38.8.97.8 1.6v10a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V10a2 2 0 0 1 .8-1.6l8-6a2 2 0 0 1 2.4 0l8 6Z",key:"1jhwl8"}],["path",{d:"m22 10-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 10",key:"1qfld7"}]]);const aa=ie("ReplyAll",[["polyline",{points:"7 17 2 12 7 7",key:"t83bqg"}],["polyline",{points:"12 17 7 12 12 7",key:"1g4ajm"}],["path",{d:"M22 18v-2a4 4 0 0 0-4-4H7",key:"1fcyog"}]]);const ft=ie("Reply",[["polyline",{points:"9 17 4 12 9 7",key:"hvgpf2"}],["path",{d:"M20 18v-2a4 4 0 0 0-4-4H4",key:"5vmcpk"}]]);const $e=ie("ShieldAlert",[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}],["path",{d:"M12 8v4",key:"1got3b"}],["path",{d:"M12 16h.01",key:"1drbdi"}]]);const al=ie("ShieldQuestion",[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}],["path",{d:"M9.1 9a3 3 0 0 1 5.82 1c0 2-3 3-3 3",key:"mhlwft"}],["path",{d:"M12 17h.01",key:"p32p05"}]]);const rl=ie("ShieldX",[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}],["path",{d:"m14.5 9.5-5 5",key:"17q4r4"}],["path",{d:"m9.5 9.5 5 5",key:"18nt4w"}]]);const ol=ie("TextSearch",[["path",{d:"M21 6H3",key:"1jwq7v"}],["path",{d:"M10 12H3",key:"1ulcyk"}],["path",{d:"M10 18H3",key:"13769t"}],["circle",{cx:"17",cy:"15",r:"3",key:"1upz2a"}],["path",{d:"m21 19-1.9-1.9",key:"dwi7p8"}]]),il=({address:e,showTrustedBadge:s=!1})=>{const n=s?t.jsx(Ls,{className:"inline-block size-4 ml-1 -mt-0.5 text-positive","aria-label":"Trusted sender","data-testid":"trusted-sender-badge"}):null;return e.displayName?t.jsxs("span",{children:[t.jsx("span",{className:"text-fg",children:e.displayName}),t.jsxs("span",{className:"text-fg-muted",children:[" ","<",e.normalizedEmail,">"]}),n]}):t.jsxs("span",{className:"text-fg",children:[e.normalizedEmail,n]})},ll=({label:e,addresses:s,showTrustedBadge:n=!1})=>{const[r,a]=c.useState(!1);if(s.length===0)return null;const o=s.length>3,i=l=>{const f=n&&l.flags?.trusted?.value===!0;return t.jsx(il,{address:l,showTrustedBadge:f})};return t.jsxs("div",{className:"flex gap-2 text-sm",children:[t.jsxs("span",{className:"text-fg-muted shrink-0 w-12",children:[e,":"]}),t.jsx("div",{className:"flex-1 min-w-0",children:r?t.jsx("div",{className:"flex flex-wrap gap-1",children:s.map((l,f)=>t.jsxs("span",{children:[i(l),f<s.length-1&&", "]},f))}):t.jsx("div",{className:"truncate",children:s.map((l,f)=>t.jsxs("span",{children:[i(l),f<s.length-1&&", "]},f))})}),o&&t.jsx("button",{type:"button",onClick:l=>{l.stopPropagation(),a(!r)},className:"shrink-0 text-fg-muted hover:text-fg transition-colors","aria-label":r?"Collapse":"Expand",children:r?t.jsx(ke,{className:"h-4 w-4"}):t.jsx(Ss,{className:"h-4 w-4"})})]})};function cl({state:e,onRetry:s}){return t.jsxs("div",{role:"alert","data-testid":"attachment-error",className:"flex items-start gap-2 border-t border-danger/30 bg-danger-soft px-2 py-2 text-xs",children:[t.jsx(Za,{className:"mt-0.5 size-3.5 shrink-0 text-danger","aria-hidden":!0}),t.jsxs("div",{className:"min-w-0 flex-1",children:[t.jsx("p",{className:"font-medium text-danger",children:e.title}),t.jsx("p",{className:"mt-0.5 text-fg-muted",children:e.detail})]}),t.jsxs("div",{className:"flex shrink-0 items-center gap-3",children:[t.jsx("button",{type:"button",onClick:s,className:"font-medium text-accent hover:underline",children:"Try again"}),e.reportUrl&&t.jsx("a",{href:e.reportUrl,target:"_blank",rel:"noreferrer",className:"font-medium text-accent hover:underline",children:"Report this"})]})]})}function Bt({attachment:e}){return t.jsxs("span",{className:"min-w-0 flex-1",children:[t.jsx("bdi",{className:"block truncate text-sm text-fg",title:e.filename,children:e.filename}),t.jsxs("span",{className:"block truncate text-2xs text-fg-subtle",children:[e.typeLabel," · ",Wo(e.sizeOctets)]})]})}function dl({isDownloading:e}){return e?t.jsx(vn,{className:"size-4 shrink-0 animate-spin text-fg-subtle","aria-hidden":!0}):t.jsx(ri,{className:"size-4 shrink-0 text-fg-subtle","aria-hidden":!0})}function ul({attachments:e,onDownload:s,hasUnlistedAttachment:n=!1,onToggleOpen:r,opened:a,className:o}){return e.length===0&&!n?null:t.jsxs("section",{"aria-label":"Attachments","data-testid":"attachment-list",className:T("space-y-1.5",o),children:[t.jsxs("h3",{className:"flex items-center gap-1.5 text-2xs font-semibold uppercase tracking-wider text-fg-subtle",children:[t.jsx(Ds,{className:"size-3","aria-hidden":!0}),e.length===0?"Attachment":e.length===1?"1 attachment":`${e.length} attachments`]}),e.length>0&&t.jsx("ul",{className:"overflow-hidden rounded-sm border border-line bg-surface",children:e.map(i=>{const l=i.download.status==="downloading",f=i.kind==="message",y=f&&a?.attachmentId===i.attachmentId,v=j=>t.jsxs("button",{type:"button",onClick:()=>s(i.attachmentId),disabled:l,"data-testid":"attachment-download","aria-label":`Download ${i.filename}`,className:T("px-2 py-2 transition-colors hover:bg-surface-sunken disabled:cursor-progress disabled:opacity-60",j),children:[f?null:t.jsx(Bt,{attachment:i}),t.jsx(dl,{isDownloading:l})]});return t.jsxs("li",{className:"border-t border-line first:border-t-0",children:[f?t.jsxs("div",{className:"flex items-center",children:[t.jsxs("button",{type:"button",onClick:()=>r(i.attachmentId),"aria-expanded":y,"data-testid":"attachment-open","aria-label":`${y?"Close":"Open"} ${i.filename}`,className:"flex min-w-0 flex-1 items-center gap-2 px-2 py-2 text-left transition-colors hover:bg-surface-sunken",children:[y?t.jsx(ke,{className:"size-4 shrink-0 text-fg-subtle","aria-hidden":!0}):t.jsx(Ss,{className:"size-4 shrink-0 text-fg-subtle","aria-hidden":!0}),t.jsx(qn,{className:"size-4 shrink-0 text-fg-subtle","aria-hidden":!0}),t.jsx(Bt,{attachment:i})]}),v("shrink-0")]}):v("flex w-full items-center gap-2 text-left"),y&&a&&t.jsx("section",{"aria-label":`Forwarded message ${i.filename}`,"data-testid":"forwarded-message",className:"border-t border-line px-3 py-3",children:a.content}),i.download.status==="failed"&&t.jsx(cl,{state:i.download,onRetry:()=>s(i.attachmentId)})]},i.attachmentId)})}),n&&t.jsx("p",{role:"alert","data-testid":"attachment-unlisted",className:"rounded-sm border border-line bg-surface px-2 py-2 text-xs text-fg-muted",children:"The mail server says this message carries an attachment, but none of its parts describe one. Re-sync the account from Settings; if the attachment still does not appear, the message is worth reporting."})]})}function ml({label:e,onUndo:s,undoLabel:n="Undo",filtersHref:r,className:a}){return t.jsxs(Ce,{tone:"accent",className:T("py-1 text-xs",a),children:[t.jsx(ti,{className:"size-3.5 shrink-0","aria-hidden":!0}),t.jsx("span",{children:e}),s&&t.jsx("button",{type:"button",onClick:o=>{o.stopPropagation(),s()},className:"font-semibold underline decoration-dotted underline-offset-2 hover:decoration-solid",children:n}),r&&t.jsx("a",{href:r,onClick:o=>{o.stopPropagation()},className:"font-semibold underline decoration-dotted underline-offset-2 hover:decoration-solid",children:"Manage filter"})]})}const Ut=10,fl={kind:"unknown"},Ws=e=>e.toLocaleString();function hl({section:e,Row:s,selectedThreadId:n,initialExpanded:r=!1,initialCollapsed:a=!1,onShowAll:o,onRetry:i,onSelectThread:l}){const[f,y]=c.useState(r),[v,j]=c.useState(a),p=e.threads,x=e.loading===!0,g=e.error===!0,h=p.length>Ut,u=!f&&h?p.slice(0,Ut):p,b=e.total??fl,m=b.kind==="exact"&&(p.length>0||x)&&!g?Ws(b.value):void 0,k=b.kind==="exact"?b.value>u.length:e.atCap===!0,C=o!==void 0&&u.length>0&&k?b.kind==="exact"?`Show all ${Ws(b.value)}`:"Show all":void 0,w=p.length-u.length;return t.jsxs("div",{children:[e.label&&t.jsxs("button",{type:"button","data-section-header":"","aria-expanded":!v,onClick:()=>j(M=>!M),className:"sticky top-0 z-10 flex h-section-row w-full items-center gap-1.5 border-b border-line bg-surface-sunken px-row-inset text-left outline-none transition-colors hover:bg-surface focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-inset",children:[t.jsx("span",{className:"flex-1 text-2xs font-semibold uppercase tracking-wider text-fg-subtle",children:e.label}),m!==void 0&&t.jsx("span",{className:"text-2xs text-fg-subtle tabular-nums",children:m}),t.jsx(ke,{className:T("size-3 shrink-0 text-fg-subtle transition-transform duration-200",v?"rotate-0":"rotate-180")})]}),!v&&t.jsxs(t.Fragment,{children:[p.length===0?g?t.jsxs("div",{className:"flex flex-col items-center gap-1 border-b border-line px-row-inset py-4 text-center text-2xs text-danger",children:[t.jsx("span",{children:`Couldn't load ${e.label??"these messages"}`}),i&&t.jsx("button",{type:"button",onClick:i,className:"font-medium text-accent underline outline-none focus-visible:ring-2 focus-visible:ring-ring",children:"Try again"})]}):x?t.jsx("div",{className:"animate-pulse divide-y divide-line",children:[0,1,2].map(M=>t.jsx("div",{className:"px-row-inset py-3",children:t.jsx("div",{className:"h-3 w-2/3 rounded bg-surface-sunken"})},M))}):t.jsx("p",{className:"border-b border-line px-row-inset py-4 text-center text-2xs text-fg-subtle",children:e.label?`No ${e.label} mail in this brief.`:"No mail in this brief."}):t.jsx("div",{className:"divide-y divide-line",children:u.map(M=>t.jsx(s,{thread:M,active:M.id===n,onClick:()=>l?.(M.id)},M.id))}),C!==void 0?t.jsxs("button",{type:"button",onClick:o,className:"flex w-full items-center justify-center border-b border-line px-row-inset py-1.5 text-2xs font-medium text-accent outline-none transition-colors hover:bg-surface focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-inset",children:[C,t.jsx(Ss,{className:"ml-1 size-3"})]}):h&&t.jsxs("button",{type:"button",onClick:()=>y(M=>!M),className:"flex w-full items-center justify-center border-b border-line px-row-inset py-1.5 text-2xs font-medium text-accent outline-none transition-colors hover:bg-surface focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-inset",children:[f?"Show less":`Show ${Ws(w)} more`,!f&&t.jsx(ke,{className:"ml-1 size-3"})]})]})]})}function lf({sections:e,briefCategory:s="all",selectedThreadId:n,Row:r,keyboard:a,onSelectThread:o,onShowAllSection:i,onRetrySection:l,flat:f=!1,onSelectBriefCategory:y,sources:v,sourcesNote:j,onSelectSource:p,activeFilters:x,onToggleFilter:g,onClearFilters:h,hideChrome:d,defaultExpanded:u=!1}){const[b,m]=c.useState(u),k=c.useRef(null);Io({containerRef:k,itemSelector:Ro,enabled:!Xa(a)});const C=!f&&(s==="all"||e.some(A=>A.total!==void 0)),w=e.filter(A=>A.threads.length>0||A.total!==void 0||A.loading===!0||A.error===!0),M=e.flatMap(A=>A.threads),N=jn,R=C?w.length===0:M.length===0,E=t.jsxs("div",{ref:k,children:[C?w.map(A=>t.jsx(hl,{section:A,Row:r,selectedThreadId:n,onSelectThread:o,onShowAll:i?()=>i(A.id):void 0,onRetry:l?()=>l(A.id):void 0},A.id)):t.jsx("div",{className:"divide-y divide-line",children:M.map(A=>t.jsx(r,{thread:A,active:A.id===n,onClick:()=>o?.(A.id)},A.id))}),R&&t.jsx("div",{className:"px-row-inset py-6 text-center text-2xs text-fg-subtle",children:"No threads match these filters."})]});return t.jsx(yn,{categories:[...Is],filters:N,sources:v,sourcesNote:j,selectedCategory:s,activeFilters:x,expanded:b,onExpandedChange:m,onSelectCategory:A=>y?.(A),onSelectSource:p,onToggleFilter:A=>g(A),onClear:h,hideChrome:d,children:E})}const pl={ics:"Attached invitation",markup:"Structured markup",pattern:"Read from the words"},gl={ics:er,markup:sl,pattern:ol},xl={ics:"border-positive/50 text-positive",markup:"border-accent-2/50 text-accent-2",pattern:"border-warning/50 text-warning"};function bl({method:e,className:s}){const n=gl[e];return t.jsxs("span",{className:T("inline-flex items-center gap-1 rounded-sm border px-1.5 py-0.5 text-2xs font-medium",xl[e],s),children:[t.jsx(n,{className:"size-3","aria-hidden":!0}),pl[e]]})}const vl=["accepted","tentative","declined","noReply"],yl={accepted:"coming",tentative:"maybe",declined:"not coming",noReply:"no reply"},jl=(e,s)=>e==="dismissed"?"You dismissed this":s==="declined"?"You declined":"On your calendar";function kl({invite:e,whenText:s,calendarName:n,color:r,clashes:a,rsvp:o,onAdd:i,onTentative:l,onDecline:f,onReopen:y,onOfferOtherTimes:v,mute:j,onRemove:p,onOpenNewer:x,guests:g,busy:h=!1,failure:d="",reportHref:u,addBlocked:b,touch:m,className:k}){const C=ki(r),w=e.state==="superseded"||e.state==="cancelled",M=e.proposed.attendees,N=vl.map(R=>({state:R,count:M.filter(E=>E.rsvp===R).length})).filter(R=>R.count>0).map(R=>`${R.count} ${yl[R.state]}`).join(" · ");return t.jsxs("section",{className:T("flex flex-col gap-3 rounded-lg border border-line bg-surface-raised p-3",k),children:[t.jsxs("div",{className:"flex items-center gap-2",children:[t.jsx("span",{className:T("size-2.5 shrink-0 rounded-full",C.solid)}),t.jsxs("span",{className:"min-w-0 flex-1 truncate text-2xs uppercase tracking-wider text-fg-subtle",children:["Invitation from ",e.organizerName," · ",n]}),t.jsx(bl,{method:e.method})]}),t.jsxs("div",{className:T(w&&"opacity-60"),children:[t.jsx("h3",{className:"text-md font-semibold text-fg",children:e.proposed.title}),t.jsxs("p",{className:"mt-1 flex items-center gap-2 text-sm text-fg",children:[t.jsx(Yn,{className:"size-4 shrink-0 text-fg-subtle","aria-hidden":!0}),s]}),e.proposed.location!==""&&t.jsxs("p",{className:"mt-1 flex items-center gap-2 text-sm text-fg-muted",children:[t.jsx(Mi,{className:"size-4 shrink-0 text-fg-subtle","aria-hidden":!0}),e.proposed.location]})]}),e.state==="superseded"&&t.jsxs("div",{className:"flex items-start gap-2 rounded-md border border-warning/40 bg-warning-soft p-2",children:[t.jsx(tl,{className:"mt-0.5 size-4 shrink-0 text-warning","aria-hidden":!0}),t.jsxs("div",{className:"min-w-0 flex-1",children:[t.jsxs("p",{className:"text-xs font-semibold text-warning",children:[e.organizerName," has sent a newer version of this."]}),t.jsxs("p",{className:"mt-1 text-xs text-fg",children:["This one is revision ",e.sequence," and is out of date. The newer message carries the one to answer."]}),x&&t.jsx($,{variant:"secondary",size:m?"md":"sm",onClick:x,className:T("mt-2",m&&"min-h-11"),children:"Open the newer invitation"})]})]}),e.state==="cancelled"&&t.jsxs("div",{className:"flex items-start gap-2 rounded-md border border-danger/40 bg-danger-soft p-2",children:[t.jsx(_e,{className:"mt-0.5 size-4 shrink-0 text-danger","aria-hidden":!0}),t.jsxs("div",{className:"min-w-0 flex-1",children:[t.jsxs("p",{className:"text-xs font-semibold text-danger",children:[e.organizerName," cancelled this."]}),t.jsx("p",{className:"mt-1 text-xs text-fg",children:"It is still on your calendar. Nothing comes off it until you say so."}),p&&t.jsxs("div",{className:T("mt-2 flex gap-2",m&&"flex-wrap"),children:[t.jsx($,{variant:"primary",size:m?"md":"sm",icon:t.jsx(ss,{className:"size-3.5"}),onClick:p,disabled:h||b!==void 0,className:T(m&&"min-h-11 flex-1"),children:"Remove from calendar"}),y&&t.jsx($,{variant:"secondary",size:m?"md":"sm",onClick:y,disabled:h,className:T(m&&"min-h-11 flex-1"),children:"Keep it"})]})]})]}),!w&&t.jsx(Ri,{clashes:a}),g??(M.length>0&&t.jsxs("p",{className:"text-2xs uppercase tracking-wider text-fg-subtle",children:[M.length," guests",N===""?"":` · ${N}`]})),d!==""&&t.jsx(Xs,{text:d,reportHref:u}),b!==void 0&&t.jsx("div",{className:"rounded-md border border-warning/40 bg-warning-soft p-2 text-xs text-fg",children:b}),!w&&(o==="noReply"&&e.state!=="dismissed"?t.jsxs("div",{className:"flex flex-col gap-2 border-t border-line pt-3",children:[t.jsxs("div",{className:T("flex gap-2",m&&"flex-wrap"),children:[t.jsx($,{variant:"primary",size:m?"md":"sm",icon:t.jsx(el,{className:"size-3.5"}),onClick:i,disabled:h||b!==void 0,className:T(m&&"min-h-11 flex-1"),children:"Add to calendar"}),l&&t.jsx($,{variant:"secondary",size:m?"md":"sm",onClick:l,disabled:h||b!==void 0,className:T(m&&"min-h-11 flex-1"),children:"Maybe"}),t.jsx($,{variant:"secondary",size:m?"md":"sm",icon:t.jsx(_e,{className:"size-3.5"}),onClick:f,disabled:h,className:T(m&&"min-h-11 flex-1"),children:"Decline"})]}),t.jsx($,{variant:"ghost",size:m?"md":"sm",onClick:v,className:T("self-start",m&&"min-h-11 w-full"),children:"Offer other times"}),j&&t.jsx($,{variant:"ghost",size:m?"md":"sm",icon:t.jsx(Zn,{className:"size-3.5"}),onClick:j.onMute,disabled:h,className:T("self-start",m&&"min-h-11 w-full"),children:`Stop offering invitations from ${j.sender}`}),t.jsxs("p",{className:"text-2xs text-fg-subtle",children:[e.organizerName," is not notified. Reader writes this to your calendar and sends no reply — tell them in the thread."]})]}):t.jsxs("div",{className:"flex flex-col gap-2 border-t border-line pt-3",children:[t.jsxs("div",{className:"flex flex-wrap items-center gap-3",children:[t.jsxs("span",{className:"flex items-center gap-1.5 text-sm text-fg",children:[jl(e.state,o),e.state!=="dismissed"&&t.jsx(Ii,{rsvp:o})]}),y&&t.jsx($,{variant:"ghost",size:m?"md":"sm",onClick:y,disabled:h,className:m?"min-h-11":"",children:"Change"}),o==="declined"&&t.jsx($,{variant:"secondary",size:m?"md":"sm",onClick:v,className:m?"min-h-11":"",children:"Offer other times"})]}),t.jsxs("p",{className:"flex items-start gap-1.5 text-2xs text-fg-subtle",children:[t.jsx(Rs,{className:"mt-0.5 size-3 shrink-0","aria-hidden":!0}),e.organizerName," was not notified."]})]}))]})}function Cl({slots:e,picked:s,onToggle:n,emptyText:r="Nothing free that day at this length.",touch:a,scroll:o,className:i}){return e.length===0?t.jsx("p",{className:T("text-xs text-fg-muted",i),children:r}):t.jsx("div",{className:T("flex gap-2",o?"overflow-x-auto pb-1":"flex-wrap",i),children:e.map(l=>{const f=s.has(l.startTime);return t.jsxs("button",{type:"button","aria-pressed":f,onClick:()=>n(l),className:T("shrink-0 rounded-md border px-2 text-xs tabular-nums outline-none transition-colors focus-visible:ring-2 focus-visible:ring-ring",a?"min-h-11 px-3":"h-7",f?"border-accent bg-accent-soft font-semibold text-accent":"border-line bg-surface text-fg-muted hover:border-line-strong hover:text-fg"),children:[l.startTime," – ",l.endTime]},l.startTime)})})}const wl=({trigger:e,children:s,align:n="right"})=>{const[r,a]=c.useState(!1),o=c.useRef(null),i=c.useCallback(l=>{o.current&&!o.current.contains(l.target)&&a(!1)},[]);return Ms({id:"dropdown-menu",open:r,answers:{back:()=>a(!1)}}),c.useEffect(()=>(r&&document.addEventListener("mousedown",i),()=>document.removeEventListener("mousedown",i)),[r,i]),t.jsxs("div",{ref:o,className:"relative",children:[t.jsx("button",{type:"button",onClick:l=>{l.stopPropagation(),a(!r)},className:T("p-1.5 min-h-11 min-w-11 inline-flex items-center justify-center rounded-md transition-colors","hover:bg-surface-raised text-fg-muted hover:text-fg"),children:e}),r&&t.jsx("div",{className:T("absolute z-50 mt-1 min-w-[180px] py-1","bg-surface border border-line rounded-md shadow-lg",n==="right"?"right-0":"left-0"),children:s})]})},xs=({onClick:e,disabled:s,destructive:n,children:r})=>t.jsx("button",{type:"button",onClick:a=>{a.stopPropagation(),s||e()},disabled:s,className:T("w-full px-3 py-2 text-left text-sm transition-colors","flex items-center gap-2",s&&"opacity-50 cursor-not-allowed",!s&&"hover:bg-surface-raised",n&&"text-danger hover:text-danger"),children:r}),Nl=()=>t.jsx("div",{className:"my-1 h-px bg-line"});function ye({label:e,children:s,className:n}){return t.jsxs("section",{className:T("border-b border-line px-row-inset py-3",n),children:[t.jsx("h3",{className:"text-2xs font-semibold uppercase tracking-wider text-fg-subtle",children:e}),t.jsx("div",{className:"mt-2",children:s})]})}function Sl({data:e,actions:s,selectedEventId:n="",touch:r,className:a}){const{invite:o,prose:i,suggestions:l,day:f,dayLabel:y,suggestionsBusy:v=!1,failure:j="",suggestionsFailure:p="",reportHref:x,addBlocked:g}=e,{onReviewSuggestion:h,onOpenThread:d}=s,[u,b]=c.useState({}),m=l[0],k=m===void 0?"":u[m.suggestion.id]??"",C=m===void 0?void 0:oi(m.suggestion,k),w=new Set(i?.picked??[]);return j===""&&o===void 0&&i===void 0&&l.length===0&&f.length===0?t.jsxs("div",{className:T("flex flex-1 flex-col items-center justify-center gap-2 px-row-inset py-10 text-center",a),children:[t.jsx(sr,{className:"size-6 text-fg-subtle","aria-hidden":!0}),t.jsx("p",{className:"text-sm text-fg-muted",children:"Nothing in this message is about a time."}),t.jsx("p",{className:"text-2xs text-fg-subtle",children:"An invitation, a booking or a thread proposing hours would show up here, with the day it lands on."})]}):t.jsxs("div",{className:T("flex flex-col",a),children:[j!==""&&t.jsx(Xs,{text:j,reportHref:x,className:"mx-row-inset mt-3"}),o&&t.jsx(ye,{label:"Invitation",children:t.jsx(kl,{invite:o.invite,whenText:o.whenText,calendarName:o.calendarName,color:o.color,clashes:o.clashes,rsvp:o.rsvp,busy:o.busy,failure:o.failure,reportHref:o.reportHref,addBlocked:o.addBlocked,mute:s.onMuteInvite&&o.sender?{sender:o.sender,onMute:s.onMuteInvite}:void 0,onAdd:s.onAddInvite,onTentative:s.onTentativeInvite,onDecline:s.onDeclineInvite,onReopen:s.onReopenInvite,onOfferOtherTimes:s.onOfferOtherTimes,onRemove:s.onRemoveInvite,onOpenNewer:s.onOpenNewerInvite,touch:r})}),i&&t.jsxs(ye,{label:i.proposals.length>0?`Times named · ${i.dayLabel}`:`Other times · ${i.dayLabel}`,children:[t.jsx("ul",{className:T("flex flex-col gap-1",i.proposals.length===0&&"hidden"),children:i.proposals.map(N=>t.jsxs("li",{className:"flex items-baseline gap-2 text-xs",children:[t.jsx("span",{className:"w-24 shrink-0 truncate tabular-nums text-fg",children:N.phrase}),N.clashTitle===""?t.jsx("span",{className:"min-w-0 flex-1 truncate text-positive",children:"Nothing booked"}):t.jsxs("span",{className:"min-w-0 flex-1 truncate text-danger",children:[N.clashTitle," is already there"]})]},N.id))}),t.jsx("p",{className:"mt-3 pb-1.5 text-2xs uppercase tracking-wider text-fg-subtle",children:"Free, half an hour each"}),t.jsx(Cl,{slots:i.slots,picked:w,onToggle:s.onToggleSlot,touch:r,scroll:!0}),s.onReplyWithSlots?t.jsxs("div",{className:"mt-2 flex flex-col gap-1.5",children:[t.jsx($,{variant:"secondary",size:r?"md":"sm",icon:t.jsx(ft,{className:"size-3.5"}),onClick:s.onReplyWithSlots,disabled:w.size===0,className:T("self-start",r&&"min-h-11"),children:"Reply with these times"}),t.jsx("p",{className:"text-2xs text-fg-subtle",children:"Picked slots go into the reply as plain text. Nothing is booked."})]}):t.jsx("p",{className:"mt-1.5 text-2xs text-fg-subtle",children:"Picked slots go into the reply as plain text. Nothing is booked."})]}),l.length>0&&t.jsxs(ye,{label:"Read out of this thread",children:[t.jsx(ii,{hasCard:m!==void 0,remaining:l.length,blocked:C!==void 0&&!C.settled,blockedReason:li,onConfirm:()=>{m&&C?.settled&&g===void 0&&s.onAddSuggestion(m.suggestion.id,C.timeZone)},onReject:()=>{m&&s.onDismissSuggestion(m.suggestion.id)},children:m&&t.jsx(ci,{suggestion:m.suggestion,whenText:m.whenText,addLabel:"Add to calendar",zoneChoice:k,onZoneChoice:N=>b(R=>({...R,[m.suggestion.id]:N})),onAdd:N=>s.onAddSuggestion(m.suggestion.id,N),onReview:h&&(N=>h(m.suggestion.id,N)),onDismiss:()=>s.onDismissSuggestion(m.suggestion.id),onOpenThread:d&&(()=>d(m.suggestion.threadId)),busy:v,addBlocked:g!==void 0,touch:r})}),g!==void 0&&t.jsx("div",{className:"mt-2 rounded-md border border-warning/40 bg-warning-soft p-2 text-xs text-fg",children:g}),p!==""&&t.jsx(Xs,{text:p,reportHref:x,className:"mt-2"}),t.jsx("p",{className:"mt-2 text-2xs text-fg-subtle",children:"None of this is on your calendar, and none of it will be until you say so."})]}),f.length>0&&t.jsx(ye,{label:y,className:"border-b-0",children:t.jsx("ul",{className:"flex flex-col gap-1",children:f.map(N=>t.jsx("li",{children:t.jsx(di,{title:N.event.title,timeText:N.timeText,color:N.color,layout:"row",density:"compact",rsvp:N.event.myRsvp,status:N.event.status,hasThread:N.event.threadId!=="",isRecurring:N.event.recurrenceRule!=="",zoneCertainty:N.event.zoneCertainty,selected:N.event.id===n,onClick:()=>s.onSelectEvent(N.event.id)})},N.event.id))})})]})}const Il=[{value:"sender",label:"Sender"},{value:"calendar",label:"Calendar"}],Rl={unknown:{label:"Unknown sender",tone:"neutral"},wellknown:{label:"Known sender",tone:"positive"},vip:{label:"VIP",tone:"accent"}};function Ml({sender:e}){const s=Rl[e.trust],n=e.inboundCount==null?null:(e.replyCount??0)>0?`${e.inboundCount} received · you replied ${e.replyCount}×`:`${e.inboundCount} received · you've never replied`;return t.jsxs("div",{children:[t.jsxs("div",{className:"flex items-center gap-3",children:[t.jsx(es,{name:e.name,email:e.email,size:"md"}),t.jsxs("div",{className:"min-w-0",children:[t.jsx("div",{className:"truncate text-sm font-semibold text-fg",children:e.name}),t.jsx("div",{className:"truncate text-2xs text-fg-subtle",children:e.email})]})]}),t.jsx("div",{className:"mt-2 flex items-center gap-2",children:e.addressUnverified?t.jsx(Ce,{tone:"danger",dot:!0,children:"Address couldn't be verified"}):t.jsx(Ce,{tone:s.tone,dot:!0,children:s.label})}),t.jsxs("p",{className:"mt-2 text-xs text-fg-muted",children:["First seen ",e.firstSeenLabel,n?` · ${n}`:""]})]})}function Tl({auth:e}){if(e.verdict==="aligned")return t.jsxs("div",{className:"flex items-start gap-2 text-xs text-fg-muted",children:[t.jsx(Ei,{className:"mt-0.5 size-3.5 shrink-0 text-positive"}),t.jsx("span",{children:e.summary})]});if(e.verdict==="caution")return t.jsxs("div",{className:"flex items-start gap-2 rounded-md bg-warning/10 p-3 text-warning",children:[t.jsx(al,{className:"mt-0.5 size-4 shrink-0"}),t.jsx("p",{className:"text-xs leading-relaxed",children:e.summary})]});const s=e.addressUnreadable?"This sender can't be verified":"This message may be impersonating someone";return t.jsx("div",{className:"rounded-md bg-danger-soft p-3",children:t.jsxs("div",{className:"flex items-start gap-2",children:[t.jsx($e,{className:"mt-0.5 size-4 shrink-0 text-danger"}),t.jsxs("div",{className:"min-w-0",children:[t.jsx("p",{className:"text-sm font-semibold text-danger",children:s}),t.jsx("p",{className:"mt-1 text-xs leading-relaxed text-fg",children:e.summary}),!e.addressUnreadable&&e.dkimDomain&&t.jsxs("p",{className:"mt-1 text-2xs text-fg-muted",children:["Sent from"," ",t.jsx("code",{className:"rounded bg-surface px-1 py-0.5",children:e.dkimDomain}),", claims to be"," ",t.jsx("code",{className:"rounded bg-surface px-1 py-0.5",children:e.fromDomain})]})]})]})})}function bs({icon:e,label:s,active:n,danger:r,onClick:a,pending:o}){const i=a===void 0||o===!0;return t.jsxs("button",{type:"button",onClick:a,disabled:i,className:T("flex items-center gap-2 rounded-md border px-2 py-1 text-xs transition-colors",n?"border-accent-2 bg-accent-2-soft text-accent-2":"border-line text-fg-muted hover:border-line-strong hover:text-fg",r&&!n&&"text-danger hover:bg-danger-soft",i&&"cursor-not-allowed opacity-50 hover:border-line"),children:[e,s]})}function ra({data:e,onClose:s,actions:n,className:r,hideCloseButton:a=!1,reportSpamPending:o=!1,notSpamPending:i=!1,calendar:l,tab:f,onTabChange:y,defaultTab:v="sender",touch:j}){const{sender:p,authenticity:x,category:g,flags:h={}}=e,[d,u]=c.useState(v),b=c.useId(),m=f??d,k=l!==void 0&&m==="calendar"?l:void 0;return t.jsxs("aside",{className:T("flex w-76 shrink-0 flex-col overflow-y-auto border-l border-line bg-surface",r),children:[t.jsxs("header",{className:"flex h-pane-header shrink-0 items-center justify-between border-b border-line px-row-inset",children:[t.jsx("span",{className:"text-2xs font-semibold uppercase tracking-wider text-fg-subtle",children:"Intelligence"}),!a&&t.jsx($,{variant:"ghost",size:"sm",icon:t.jsx(_e,{className:"size-3.5"}),onClick:s,"aria-label":"Collapse intelligence sidebar"})]}),l&&t.jsx("div",{className:"flex shrink-0 justify-center border-b border-line px-row-inset py-2",children:t.jsx(tr,{name:b,"aria-label":"What this panel is showing",size:"sm",options:Il,value:m,onChange:C=>{f===void 0&&u(C),y?.(C)}})}),k&&t.jsx(Sl,{data:k.data,actions:k.actions,selectedEventId:k.selectedEventId,touch:j}),k===void 0&&t.jsxs(t.Fragment,{children:[t.jsx(ye,{label:"Sender",children:t.jsx(Ml,{sender:p})}),t.jsx(ye,{label:"Authenticity",children:t.jsx(Tl,{auth:x})}),t.jsx(ye,{label:"Category",children:t.jsxs("div",{className:"flex items-center gap-2",children:[t.jsx(Ce,{tone:kn[g.value],children:Ts[g.value]}),g.overridden&&t.jsx("span",{className:"text-2xs text-fg-subtle",children:"your override"}),t.jsx("button",{type:"button",className:T("ml-auto text-2xs text-accent hover:underline",!n?.onReclassify&&"cursor-not-allowed opacity-50 hover:no-underline"),disabled:!n?.onReclassify,onClick:n?.onReclassify,children:"reclassify"})]})}),t.jsxs(ye,{label:"Quick actions",children:[t.jsxs("div",{className:"flex flex-wrap gap-1.5",children:[t.jsx(bs,{icon:t.jsx(Ue,{className:"size-3.5"}),label:"VIP",active:h.vip,onClick:n?.onToggleVip}),t.jsx(bs,{icon:t.jsx(Zn,{className:"size-3.5"}),label:"Mute",active:h.muted,onClick:n?.onToggleMute}),n?.onNotSpam&&t.jsx(bs,{icon:t.jsx(nl,{className:"size-3.5"}),label:i?"Undoing…":"Not spam",active:!0,onClick:n.onNotSpam,pending:i}),n?.onReportSpam&&t.jsx(bs,{icon:t.jsx(rl,{className:"size-3.5"}),label:o?"Reporting…":"Report spam",danger:!0,onClick:n.onReportSpam,pending:o})]}),n?.onNotSpam&&t.jsx("p",{className:"mt-1.5 text-2xs text-fg-subtle",children:"You reported this message as spam"})]}),t.jsx(ye,{label:"Coming soon",className:"border-b-0 opacity-70",children:t.jsxs("div",{className:"space-y-2",children:[t.jsxs("div",{className:"flex items-start gap-2 rounded-md border border-dashed border-line p-2",children:[t.jsx(Be,{className:"mt-0.5 size-3.5 shrink-0 text-fg-subtle"}),t.jsxs("div",{children:[t.jsx("div",{className:"text-xs font-medium text-fg-muted",children:"Suggested actions"}),t.jsx("div",{className:"text-2xs text-fg-subtle",children:'"Create a filter for messages like this" — on-device model'})]})]}),t.jsxs("div",{className:"flex items-start gap-2 rounded-md border border-dashed border-line p-2",children:[t.jsx(Be,{className:"mt-0.5 size-3.5 shrink-0 text-fg-subtle"}),t.jsxs("div",{children:[t.jsx("div",{className:"text-xs font-medium text-fg-muted",children:"Thread summary"}),t.jsx("div",{className:"text-2xs text-fg-subtle",children:"One-paragraph digest — Bedrock"})]})]})]})})]})]})}function Al({open:e=!1,enabled:s=!0,onToggle:n,className:r}){return t.jsx($,{variant:"ghost",size:"sm",icon:t.jsx(Cn,{className:"size-4"}),title:"Intelligence","aria-label":e?"Hide intelligence sidebar":"Show intelligence sidebar","aria-pressed":e,disabled:!s,onClick:n,className:T(e&&"bg-accent-2-soft text-accent-2",r)})}function cf({hints:e=To,className:s}){return e.length===0?null:t.jsx("footer",{className:T("flex items-center gap-2 border-t border-line px-row-inset py-1 text-2xs text-fg-subtle",s),children:e.map(n=>t.jsx(El,{hint:n},n.label))})}function El({hint:e}){return t.jsxs("span",{className:"flex items-center gap-1",children:[e.keys.map(s=>t.jsx(Po,{children:s},s)),t.jsx("span",{children:e.label})]})}function Fl({hasThread:e,onUnavailable:s,unavailableHint:n,isStarred:r,showTriage:a=!0,onReply:o,onReplyAll:i,onForward:l,onDelete:f,onToggleStar:y,moveSlot:v,onMove:j,replyTitle:p="Reply (r)",replyAllTitle:x="Reply all (a)",forwardTitle:g="Forward (f)",deleteTitle:h="Move to Trash (#)",flagTitle:d="Star (s)",children:u,className:b}){const m=(k,C)=>()=>{if(!e||!C){s?.(k);return}C()};return t.jsxs("div",{className:"relative",children:[t.jsxs("header",{className:T("flex h-pane-header shrink-0 items-center gap-1 border-b border-line bg-surface px-3",b),children:[t.jsx($,{variant:"ghost",size:"sm",icon:t.jsx(ft,{className:"size-4"}),title:p,"aria-label":"Reply",onClick:m("reply",o)}),t.jsx($,{variant:"ghost",size:"sm",icon:t.jsx(aa,{className:"size-4"}),title:x,"aria-label":"Reply all",onClick:m("replyAll",i)}),t.jsx($,{variant:"ghost",size:"sm",icon:t.jsx(na,{className:"size-4"}),title:g,"aria-label":"Forward",onClick:m("forward",l)}),a&&t.jsxs(t.Fragment,{children:[t.jsx("span",{className:"mx-1 h-4 w-px bg-line","aria-hidden":!0}),t.jsx($,{variant:"ghost",size:"sm",icon:t.jsx(ss,{className:"size-4"}),title:h,"aria-label":"Move to Trash",onClick:m("delete",f)}),v??t.jsx($,{variant:"ghost",size:"sm",icon:t.jsx(lt,{className:"size-4"}),title:"Move to mailbox","aria-label":"Move to mailbox",onClick:m("move",j)}),t.jsx($,{variant:"ghost",size:"sm",icon:t.jsx(Ue,{className:T("size-4",r&&"fill-warning text-warning")}),title:d,"aria-label":"Star","aria-pressed":r,onClick:m("flag",y)})]}),t.jsx("div",{className:"flex-1"}),u]}),n&&t.jsx("p",{role:"status",className:"border-b border-line bg-surface-sunken px-3 py-1 text-2xs text-fg-subtle",children:n})]})}const st=e=>({shiftKey:e.shiftKey,metaKey:e.metaKey,ctrlKey:e.ctrlKey}),$t=e=>e.shiftKey||e.metaKey||e.ctrlKey,Dl=e=>e.shiftKey?"range":e.metaKey||e.ctrlKey?"toggle":"open",Ll=(e,s)=>!s&&e>0,Ol=(e,s,n)=>{const r=e.indexOf(n);if(r===-1)return[];const a=s===void 0?-1:e.indexOf(s);if(a===-1)return[n];const o=Math.min(a,r),i=Math.max(a,r);return e.slice(o,i+1)},zl=(e,s,n,r)=>s!==void 0&&e.includes(s)?s:n!==void 0&&e.includes(n)?n:r,Pl=(e,s)=>{const n=new Set(s),r=new Set;for(const a of e)n.has(a)&&r.add(a);return r},_l=(e,s,n)=>{if(e.length===0)return;const r=s===void 0?-1:e.indexOf(s);if(r===-1)return n>0?e[0]:e[e.length-1];const a=Math.min(Math.max(r+n,0),e.length-1);return e[a]},Bl=e=>{const[s,n]=c.useState(()=>new Set(e?.initialSelectedIds)),[r,a]=c.useState(void 0),o=c.useCallback(h=>s.has(h),[s]),i=c.useCallback(h=>{a(h),n(d=>{const u=new Set(d);return u.has(h)?u.delete(h):u.add(h),u})},[]),l=c.useCallback(h=>{a(h),n(d=>{if(d.has(h))return d;const u=new Set(d);return u.add(h),u})},[]),f=c.useCallback(h=>{n(d=>{if(!d.has(h))return d;const u=new Set(d);return u.delete(h),u})},[]),y=c.useCallback(h=>{n(new Set(h))},[]),v=c.useCallback(()=>{a(void 0),n(new Set)},[]),j=c.useCallback(h=>{n(d=>h.every(b=>d.has(b))?new Set:new Set(h))},[]),p=c.useCallback(h=>{a(h)},[]),x=c.useCallback(h=>{n(d=>{if(d.size===0)return d;const u=Pl(d,h);return u.size===d.size?d:u})},[]),g=c.useCallback((h,d,u)=>{const b=zl(h,r,u,d);n(m=>{const k=Ol(h,b,d);if(k.length===0)return m;const C=new Set(m);for(const w of k)C.add(w);return C}),a(b)},[r]);return{selectedIds:s,selectedCount:s.size,hasSelection:s.size>0,isSelected:o,toggle:i,select:l,deselect:f,selectAll:y,clearSelection:v,toggleAll:j,selectRange:g,setAnchor:p,anchorId:r,intersectWith:x}},Cs={delete_failed:{label:"Not deleted",title:"This message was not deleted",detail:"Remit removed it here first, then refused to finish the delete on the mail server — most often because the Trash folder it was headed for is not there any more. The message is back in this folder because that is where the server still has it.",retryLabel:"Delete again",retryPendingLabel:"Deleting…"},move_failed:{label:"Not moved",title:"This message was not moved",detail:"Remit filed it here first, then could not finish the move on the mail server and stopped trying. The message is back in this folder because that is where the server still has it. The folder you picked is not recorded, so moving it again means choosing one.",retryLabel:"Move again",retryPendingLabel:"Moving…"}};function oa({settlement:e,className:s}){const n=Cs[e];return t.jsxs(Ce,{tone:"danger",className:T("shrink-0",s),title:n.title,"data-settlement":e,children:[t.jsx(Xn,{className:"size-3 shrink-0","aria-hidden":!0}),t.jsx("span",{children:n.label})]})}function Ul({settlement:e,onRetry:s,action:n,retryPending:r,reportHref:a,className:o}){const i=Cs[e];return t.jsxs("div",{role:"alert","data-testid":"message-settlement-notice","data-settlement":e,className:T("flex items-start gap-2 rounded-md border border-danger/40 bg-danger-soft px-3 py-2 text-sm",o),children:[t.jsx(Xn,{className:"mt-0.5 size-4 shrink-0 text-danger","aria-hidden":!0}),t.jsxs("div",{className:"min-w-0 flex-1",children:[t.jsx("p",{className:"font-medium text-danger",children:i.title}),t.jsx("p",{className:"mt-1 break-words text-fg-muted",children:i.detail}),t.jsxs("div",{className:"mt-1 flex flex-wrap items-center gap-3",children:[n,s&&t.jsx("button",{type:"button",onClick:s,disabled:r,className:"font-medium text-accent hover:underline disabled:opacity-50",children:r?i.retryPendingLabel:i.retryLabel}),a&&t.jsx("a",{href:a,target:"_blank",rel:"noreferrer",className:"font-medium text-accent hover:underline",children:"Report an issue"})]})]})]})}const ia="outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-inset",la=({active:e,focused:s})=>T("relative flex h-8 w-full items-center gap-2 px-row-inset text-left",ia,e?"bg-accent-2-soft":s?"bg-surface-sunken":"hover:bg-surface-sunken",s&&!e&&"before:absolute before:inset-y-0 before:left-0 before:w-0.5 before:bg-accent-2"),ht=({active:e,focused:s})=>T("relative flex w-full items-start gap-3 py-2 pl-5 pr-row-inset text-left transition-colors",ia,e?"bg-accent-2-soft":s?"bg-surface-sunken":"hover:bg-surface-sunken",s&&!e&&"before:absolute before:inset-y-0 before:left-0 before:w-0.5 before:bg-accent-2");function ca({thread:e}){const s=!e.isRead;return t.jsxs(t.Fragment,{children:[t.jsx("span",{className:"flex w-4 shrink-0 items-center justify-center",children:e.suspicious?t.jsx($e,{className:"size-3.5 text-danger"}):e.starred?t.jsx(Ue,{className:"size-3 fill-warning text-warning"}):s?t.jsx("span",{className:"size-1.5 rounded-full bg-accent"}):null}),t.jsx("span",{className:T("w-36 shrink-0 truncate text-xs",s?"font-semibold text-fg":"text-fg-muted"),children:e.fromName}),t.jsxs("span",{className:"min-w-0 flex-1 truncate text-xs",children:[t.jsx("span",{className:T(s?"font-medium text-fg":"text-fg-muted"),children:e.subject}),t.jsxs("span",{className:"text-fg-subtle",children:[" — ",e.snippet]})]}),e.hasAttachment&&t.jsx(Ds,{className:"size-3 shrink-0 text-fg-subtle",role:"img","aria-label":"Has an attachment"}),e.settlement&&t.jsx(oa,{settlement:e.settlement}),t.jsx("span",{className:"w-11 shrink-0 text-right text-2xs text-fg-subtle tabular-nums",children:e.timeLabel})]})}function Kt(e,s){const n=s?.trim();if(!n)return e;const r=e.toLowerCase(),a=n.toLowerCase(),o=[];let i=0,l=r.indexOf(a,i),f=0;for(;l!==-1;)l>i&&o.push(e.slice(i,l)),o.push(t.jsx("mark",{className:"bg-transparent font-semibold text-fg",children:e.slice(l,l+a.length)},f++)),i=l+a.length,l=r.indexOf(a,i);return i<e.length&&o.push(e.slice(i)),o}function $l({thread:e,badge:s,highlightQuery:n}){const r=!e.isRead;return t.jsxs("span",{className:"min-w-0 flex-1",children:[t.jsxs("span",{className:"flex items-baseline justify-between gap-2",children:[t.jsxs("span",{className:T("flex min-w-0 items-center gap-1.5 truncate text-sm",r?"font-semibold text-fg":"font-medium text-fg-muted"),children:[e.trust==="vip"&&t.jsx("span",{className:"size-1.5 shrink-0 rounded-full bg-accent-2"}),t.jsx("span",{className:"truncate",children:e.fromName}),e.messageCount!=null&&e.messageCount>1&&t.jsx("span",{className:"shrink-0 text-2xs font-normal text-fg-subtle",children:e.messageCount})]}),t.jsx("span",{className:"shrink-0 text-2xs text-fg-subtle tabular-nums",children:e.timeLabel})]}),t.jsxs("span",{className:"flex items-center gap-1.5",children:[t.jsx("span",{className:T("truncate text-sm",r?"text-fg":"text-fg-muted"),children:Kt(e.subject,n)}),e.suspicious&&t.jsx($e,{className:"size-3.5 shrink-0 text-danger"}),e.starred&&t.jsx(Ue,{className:"size-3 shrink-0 fill-warning text-warning"}),e.hasAttachment&&t.jsx(Ds,{className:"size-3 shrink-0 text-fg-subtle",role:"img","aria-label":"Has an attachment"})]}),t.jsxs("span",{className:"flex items-center gap-1.5",children:[t.jsx("span",{className:"line-clamp-1 min-w-0 flex-1 text-xs text-fg-subtle",children:Kt(e.snippet,n)}),e.category&&e.category!=="personal"&&t.jsx(Ce,{tone:kn[e.category],className:"shrink-0",children:nr(e.category)}),e.labels?.map(a=>t.jsx(ar,{label:a,className:"max-w-20"},a.labelId)),e.settlement&&t.jsx(oa,{settlement:e.settlement}),s]})]})}function Kl({thread:e,selection:s}){if(!s)return t.jsx(es,{name:e.fromName,email:e.fromEmail,size:"sm"});const{checked:n,alwaysVisible:r}=s;return t.jsxs("span",{className:"relative size-7 shrink-0",children:[t.jsx(es,{name:e.fromName,email:e.fromEmail,size:"sm",className:T("absolute inset-0 transition-opacity sm:group-hover:opacity-0",(n||r)&&"opacity-0")}),t.jsx("span",{role:"button",tabIndex:-1,onClick:s.onToggle,onKeyDown:a=>{a.key!=="Enter"&&a.key!==" "||(a.preventDefault(),a.stopPropagation(),s.onToggle(a))},className:T("absolute inset-0 size-7 items-center justify-center rounded-full border transition-opacity",r?"flex":"hidden sm:flex",n?"bg-accent border-accent text-accent-fg opacity-100":r?"border-fg-subtle/40 bg-canvas opacity-100":"border-fg-subtle/40 bg-canvas opacity-0 group-hover:opacity-100"),"aria-label":n?"Deselect message":"Select message",children:n&&t.jsx(Rs,{className:"size-3"})})]})}function pt({thread:e,selection:s,badge:n,highlightQuery:r}){const a=!e.isRead;return t.jsxs(t.Fragment,{children:[a&&t.jsx("span",{className:"absolute left-1.5 top-1/2 size-1.5 -translate-y-1/2 rounded-full bg-accent"}),t.jsx(Kl,{thread:e,selection:s}),t.jsx($l,{thread:e,badge:n,highlightQuery:r})]})}const da=e=>({...Mo,[rr]:"","data-message-id":e.id});function df({thread:e,active:s,focused:n,tabIndex:r,onClick:a}){return t.jsx("button",{type:"button",...da(e),tabIndex:r,onClick:a,className:la({active:s,focused:n}),children:t.jsx(ca,{thread:e})})}function uf({thread:e,active:s,focused:n,tabIndex:r,selection:a,onClick:o}){return t.jsx("button",{type:"button",...da(e),tabIndex:r,onClick:o,className:T("group",ht({active:s,focused:n})),children:t.jsx(pt,{thread:e,selection:a})})}let Pe;const ua=5e3;function ma(e){e.preventDefault(),ws()}function ws(){Pe!==void 0&&(clearTimeout(Pe),Pe=void 0,document.removeEventListener("contextmenu",ma,!0),document.removeEventListener("pointerup",ws,!0))}function ql(){Pe===void 0?(document.addEventListener("contextmenu",ma,!0),document.addEventListener("pointerup",ws,!0)):clearTimeout(Pe),Pe=setTimeout(ws,ua)}let ks;function fa(e){e.preventDefault(),e.stopPropagation(),Je()}function Je(){ks!==void 0&&(clearTimeout(ks),ks=void 0,document.removeEventListener("click",fa,!0),document.removeEventListener("pointerdown",Je,!0))}function Ql(){Je(),document.addEventListener("click",fa,!0),document.addEventListener("pointerdown",Je,!0),ks=setTimeout(Je,ua)}const Hl=500,Wl=36,Gl=e=>({delay:e,threshold:Wl,triggerAllEvents:!0,pointer:{keys:!1}}),Vl=e=>e.event.type==="pointerdown"&&e.first,Jl={onPointerDown:e=>{e.pointerType!=="touch"&&e.pointerType!=="pen"||ql()}};function Yl({onLongPress:e,isDisabled:s,delayMs:n=Hl,accessibilityDescription:r}){const a=or(o=>{Vl(o)&&(Ql(),e())},{...Gl(n),enabled:!s});return{longPressProps:sa(a(),Jl,{"aria-description":r})}}const Ve="min-h-11 min-w-11 px-0";function ha({hasThread:e,onReply:s,onReplyAll:n,onForward:r,isStarred:a,onToggleStar:o,onDelete:i,isRead:l,onToggleRead:f,moveSlot:y,overflowItems:v=[],onUnavailable:j,unavailableHint:p,className:x}){const g=(d,u)=>()=>{if(!e){j?.(d);return}u?.()},h=f?[{key:"toggle-read",label:l?"Mark as unread":"Mark as read",icon:l?t.jsx(qn,{className:"size-4"}):t.jsx(mt,{className:"size-4"}),onSelect:g("toggleRead",f)}]:[];return t.jsxs("div",{className:T("relative",x),children:[t.jsxs("div",{className:"flex h-12 shrink-0 items-center gap-0.5 bg-canvas px-1",children:[s&&t.jsx($,{variant:"ghost",size:"sm",icon:t.jsx(ft,{className:"size-5"}),onClick:g("reply",s),"aria-label":"Reply",title:"Reply",className:Ve}),n&&t.jsx($,{variant:"ghost",size:"sm",icon:t.jsx(aa,{className:"size-5"}),onClick:g("replyAll",n),"aria-label":"Reply all",title:"Reply all",className:Ve}),r&&t.jsx($,{variant:"ghost",size:"sm",icon:t.jsx(na,{className:"size-5"}),onClick:g("forward",r),"aria-label":"Forward",title:"Forward",className:Ve}),t.jsx("div",{className:"flex-1"}),o&&t.jsx($,{variant:"ghost",size:"sm",icon:t.jsx(Ue,{className:T("size-5",a&&"fill-warning text-warning")}),onClick:g("star",o),"aria-label":a?"Unstar":"Star","aria-pressed":a,title:a?"Unstar":"Star",className:Ve}),y,i&&t.jsx($,{variant:"ghost",size:"sm",icon:t.jsx(ss,{className:"size-5"}),onClick:g("delete",i),"aria-label":"Move to Trash",title:"Move to Trash",className:Ve}),t.jsx(Kn,{triggerLabel:"More actions",items:[...h,...v]})]}),!e&&p&&t.jsx("p",{role:"status",className:"bg-surface-sunken px-3 py-1 text-2xs text-fg-subtle",children:p})]})}function pa({message:e,onClick:s,isFocused:n,isUnread:r,trailing:a}){const o=t.jsxs(t.Fragment,{children:[t.jsx(Ss,{className:"size-3.5 shrink-0 text-fg-subtle"}),t.jsxs("div",{className:"relative shrink-0",children:[t.jsx(es,{name:e.fromName,email:e.fromEmail,size:"md"}),r&&t.jsx("span",{className:"absolute -top-0.5 -right-0.5 size-2 rounded-full border border-canvas bg-accent"})]}),t.jsx("span",{className:T("w-36 shrink-0 truncate text-sm",r?"font-semibold text-fg":"font-medium text-fg-muted"),children:e.fromName}),t.jsx("span",{className:"min-w-0 flex-1 truncate text-xs text-fg-subtle",children:e.snippet}),a??t.jsx("span",{className:"shrink-0 text-2xs text-fg-subtle tabular-nums",children:e.dateLabel})]}),i=T("group flex h-section-row w-full items-center gap-3 border-b border-line px-2 text-left transition-colors hover:bg-surface-sunken lg:px-4",n&&"bg-surface-sunken ring-1 ring-inset ring-accent/30");return s?t.jsx("div",{role:"button",tabIndex:0,"aria-expanded":!1,onClick:s,onKeyDown:l=>{ir(l)&&(l.preventDefault(),s())},className:T(i,"cursor-pointer"),children:o}):t.jsx("div",{className:i,children:o})}function ga({message:e,warning:s,onHeaderClick:n,isFocused:r,senderBadge:a,trailing:o,to:i,indicators:l,actionMenu:f,actionBar:y,body:v}){const j=t.jsxs(t.Fragment,{children:[t.jsxs("div",{className:"flex items-baseline justify-between gap-2",children:[t.jsxs("span",{className:"text-sm font-semibold text-fg",children:[e.fromName,a]}),o??t.jsx("span",{className:"text-2xs text-fg-subtle",children:e.dateLabel})]}),t.jsx("div",{className:"text-xs text-fg-subtle",children:e.fromEmail}),i!==null&&t.jsx("div",{className:"text-xs text-fg-subtle",children:i??t.jsxs(t.Fragment,{children:["to ",e.toLabel]})})]});return t.jsxs("div",{className:"px-2 py-3 lg:px-4",children:[t.jsxs("div",{className:T("-mx-2 -my-1 flex items-start gap-3 rounded-sm px-2 py-1",r&&"ring-1 ring-inset ring-accent/30"),children:[n?t.jsx("button",{type:"button",onClick:n,"aria-expanded":!0,"aria-label":"Collapse message",className:"mt-1 shrink-0 text-fg-subtle transition-colors hover:text-fg",children:t.jsx(ke,{className:"size-3.5"})}):t.jsx(ke,{className:"mt-1 size-3.5 shrink-0 text-fg-subtle"}),t.jsx(es,{name:e.fromName,email:e.fromEmail,size:"md"}),t.jsxs("div",{className:"min-w-0 flex-1",children:[n?t.jsx("button",{type:"button",onClick:n,className:"w-full text-left",children:j}):j,l]}),f&&t.jsx("div",{className:"shrink-0",children:f})]}),s&&t.jsxs("div",{className:"mt-3 flex items-start gap-3 rounded-md bg-danger-soft p-3",children:[t.jsx($e,{className:"mt-0.5 size-4 shrink-0 text-danger"}),t.jsxs("div",{className:"text-sm text-fg",children:[t.jsx("span",{className:"font-semibold text-danger",children:"Caution: "}),s," ",t.jsx("button",{type:"button",className:"text-accent underline",children:"Why?"})]})]}),y&&t.jsx("div",{className:"mt-3 -mx-2 lg:-mx-4",children:y}),t.jsx(Uo,{children:v??t.jsx($o,{className:"mt-3",html:e.bodyHtml,category:e.framed?"newsletter":"personal",allowImages:!0})})]})}function Zl({thread:e,onBack:s,intelligence:n,intelligenceOpen:r,onToggleIntelligence:a,actions:o,children:i,onSwipeNext:l,onSwipePrevious:f}){const y=lr({onSwipeLeft:l,onSwipeRight:f}),[v,j]=c.useState(!1),p=a!==void 0,x=p?r??!1:v,g=!!n||p,h=()=>{if(p){a?.();return}j(u=>!u)},d=()=>{if(p){x&&a?.();return}j(!1)};return t.jsxs("article",{className:"flex h-full w-full min-w-0 flex-col bg-canvas",children:[t.jsxs("header",{className:"flex h-pane-header shrink-0 items-center gap-2 border-b border-line bg-surface px-row-inset",children:[t.jsx($,{variant:"ghost",size:"sm",icon:t.jsx(wn,{className:"size-4"}),onClick:s,"aria-label":"Back to messages",className:"-ml-1 shrink-0"}),t.jsx("h2",{className:"min-w-0 flex-1 truncate text-sm font-semibold text-fg",children:e.subject}),g&&t.jsx($,{variant:"ghost",size:"sm",icon:t.jsx(Cn,{className:"size-4"}),onClick:h,"aria-label":x?"Hide intelligence panel":"Show intelligence panel","aria-pressed":x,title:"Intelligence",className:T("shrink-0",x&&"bg-accent-2-soft text-accent-2")})]}),t.jsx(cr.Provider,{value:y.enabled,children:t.jsx("div",{ref:y.ref,className:"flex-1 overflow-y-auto",style:{touchAction:y.touchAction},...y.bind(),children:i??[...e.messages].reverse().map(u=>{const b=m=>m?()=>m(u.id):void 0;return u.expanded?t.jsx(ga,{message:u,warning:e.warning,onHeaderClick:b(o?.onToggleExpand),actionBar:t.jsx(ha,{hasThread:!0,onReply:b(o?.onReply),onReplyAll:b(o?.onReplyAll),onForward:b(o?.onForward),onToggleStar:b(o?.onToggleStar),onDelete:b(o?.onDelete),onToggleRead:b(o?.onToggleRead),moveSlot:o?.moveSlot?.(u.id)})},u.id):t.jsx(pa,{message:u,onClick:b(o?.onToggleExpand)},u.id)})})}),n&&!p&&t.jsx(dr,{open:x,onClose:d,title:"Intelligence",anchor:"right",className:"p-0",children:t.jsx(ra,{data:n,onClose:d,className:"h-full w-full border-l-0"})})]})}function Xl(e){return{id:e.id,fromName:e.sender,fromEmail:e.senderEmail??e.sender,subject:e.subject,snippet:e.snippet,timeLabel:e.date,isRead:!e.unread,starred:e.flagged,...e.mailboxId?{mailboxId:e.mailboxId}:{}}}function ec({result:e,onClick:s,query:n,showFolder:r=!0}){const a=r&&e.folder?ur(e.folder):void 0;return t.jsx("button",{type:"button",onClick:s,className:T("group",ht({}),"border-b border-line"),children:t.jsx(pt,{thread:Xl(e),highlightQuery:n,badge:t.jsxs(t.Fragment,{children:[a&&t.jsx(Ce,{tone:"neutral",className:"shrink-0",children:a}),e.category&&t.jsx(Ce,{tone:e.category.tone??"neutral",className:"shrink-0",children:e.category.label})]})})})}const sc=e=>e===1?"result":"results";function tc({count:e,onScopeToSpam:s}){return t.jsx(Nn,{tone:"info",variant:"soft",className:"items-center justify-between gap-3 rounded-none border-b border-line",children:t.jsxs("div",{className:"flex items-center justify-between gap-3",children:[t.jsx("p",{className:"min-w-0 text-xs text-fg-muted",children:e.kind==="exact"?t.jsxs(t.Fragment,{children:[t.jsx("span",{className:"font-semibold text-fg tabular-nums",children:e.value.toLocaleString()})," ",`${sc(e.value)} from Spam`]}):"Results from Spam"}),t.jsx($,{variant:"ghost",size:"sm",onClick:s,className:"shrink-0 text-accent",children:"Go to Spam"})]})})}const qt=6,nc={kind:"global"},Qt={kind:"unknown"},ac=e=>e.kind==="folder"&&e.role==="junk",rc=e=>e.folder?.role==="junk";function oc(e){const s=[],n=[];for(const r of e)rc(r)?n.push(r):s.push(r);return{kept:s,spam:n}}function xa({onClick:e,blockedReason:s}){const n=c.useId(),[r,a]=c.useState(!1);return t.jsxs("div",{className:"border-b border-line px-row-inset py-1.5",children:[t.jsxs("button",{type:"button",onClick:()=>{if(s){a(!0);return}e()},"aria-describedby":s?n:void 0,className:T("flex w-full items-center gap-1.5 rounded-md px-2 py-1.5 text-left text-xs font-medium transition-colors",s?"text-fg-subtle opacity-55":"text-accent hover:bg-surface-sunken"),children:[t.jsx(mr,{className:"size-3.5 shrink-0","aria-hidden":"true"}),t.jsx("span",{children:"Make this a filter"})]}),s&&t.jsx(fr,{id:n,reason:s,nudged:r,className:"px-2 pt-1 text-2xs text-warning"})]})}function ic({section:e,query:s,onSelectResult:n,showFolder:r}){const[a,o]=c.useState(e.initialCollapsed??!1),[i,l]=c.useState(!1),f=e.results.length>qt,v=!i&&f?e.results.slice(0,qt):e.results,j=e.results.length-v.length;return t.jsxs("div",{children:[t.jsxs("button",{type:"button","aria-expanded":!a,onClick:()=>o(p=>!p),className:"sticky top-0 z-10 flex h-section-row w-full items-center gap-1.5 border-b border-line bg-surface-sunken px-row-inset text-left transition-colors hover:bg-surface",children:[t.jsx("span",{className:"flex-1 text-2xs font-semibold uppercase tracking-wider text-fg-subtle",children:e.label}),t.jsx("span",{className:"text-2xs text-fg-subtle tabular-nums",children:e.results.length}),t.jsx(ke,{className:T("size-3 shrink-0 text-fg-subtle transition-transform duration-200",a?"rotate-0":"rotate-180")})]}),!a&&t.jsxs(t.Fragment,{children:[v.map(p=>t.jsx(ec,{result:p,query:s,showFolder:r,onClick:n?()=>n(p):void 0},p.id)),f&&t.jsxs("button",{type:"button",onClick:()=>l(p=>!p),className:"flex w-full items-center justify-center border-b border-line px-row-inset py-1.5 text-2xs font-medium text-accent transition-colors hover:bg-surface",children:[i?"Show less":`Show ${j} more`,!i&&t.jsx(ke,{className:"ml-1 size-3"})]})]})]})}function ba({value:e,recentSearches:s,onPickRecent:n,sections:r,loading:a,onSelectResult:o,tokens:i,scope:l=nc,makeFilter:f}){if(!(e.trim().length>0))return s&&s.length>0?t.jsxs("div",{className:"flex flex-col",children:[t.jsx("h3",{className:"px-row-inset pb-1 pt-3 text-2xs font-semibold uppercase tracking-wide text-fg-subtle",children:"Recent searches"}),s.map(R=>t.jsxs("button",{type:"button",onClick:()=>n?.(R),className:"flex w-full items-center gap-2.5 border-b border-line px-row-inset py-2.5 text-left transition-colors hover:bg-surface-sunken",children:[t.jsx(Yn,{className:"size-4 shrink-0 text-fg-subtle"}),t.jsx("span",{className:"min-w-0 flex-1 truncate text-sm text-fg-muted",children:R})]},R))]}):t.jsx("p",{className:"px-row-inset py-6 text-center text-sm text-fg-subtle",children:"Search across your mail by sender, subject or words in the message."});const v=i&&i.length>0&&t.jsx(hr,{tokens:i}),j=f&&t.jsx(xa,{...f});if(a)return t.jsxs("div",{className:"flex flex-col",children:[j,v,t.jsx("div",{className:"flex flex-col gap-3 px-row-inset py-4",children:[0,1,2,3].map(R=>t.jsxs("div",{className:"flex flex-col gap-1.5",children:[t.jsx("div",{className:"h-3 w-1/3 animate-pulse rounded bg-surface-sunken"}),t.jsx("div",{className:"h-3 w-2/3 animate-pulse rounded bg-surface-sunken"}),t.jsx("div",{className:"h-2.5 w-1/2 animate-pulse rounded bg-surface-sunken"})]},R))})]});const p=l.kind==="global",x=ac(l)||l.kind==="collection",g=p||l.kind==="collection",h=(r??[]).map(R=>{if(x)return{section:R,spam:[]};const{kept:E,spam:A}=oc(R.results);return{section:{...R,results:E},spam:A}}),d=h.map(R=>R.section),u=h.reduce((R,E)=>R+E.spam.length,0),m=(l.kind==="global"?l.spamCount:void 0)??Qt,k=u>0||m.kind==="exact"&&m.value>0,w=m.kind==="exact"&&m.value===0&&u>0?Qt:m,M=l.kind==="global"&&k&&l.onScopeToSpam!==void 0?t.jsx(tc,{count:w,onScopeToSpam:l.onScopeToSpam}):void 0;return d.some(R=>R.results.length>0)?t.jsxs("div",{className:"flex flex-col",children:[j,v,M,d.filter(R=>R.results.length>0).map(R=>t.jsx(ic,{section:R,query:e,showFolder:g,onSelectResult:o},R.id))]}):t.jsxs("div",{className:"flex flex-col",children:[j,v,M,t.jsxs("div",{className:"px-row-inset py-10 text-center",children:[t.jsxs("p",{className:"text-sm font-medium text-fg",children:["No matches for “",e,"”"]}),t.jsx("p",{className:"mt-1 text-xs text-fg-subtle",children:"Try a different word, or adjust the filters above."})]})]})}function lc({value:e,onChange:s,onClear:n,onCancel:r,filter:a,recentSearches:o,onPickRecent:i,sections:l,loading:f,onSelectResult:y,tokens:v,chips:j,onRemoveChip:p,scope:x,makeFilter:g,suggest:h,suggestList:d}){const u=t.jsx(ba,{value:e,recentSearches:o,onPickRecent:i,sections:l,loading:f,onSelectResult:y,tokens:v,scope:x,makeFilter:g});return t.jsxs("article",{className:"flex h-full w-full min-w-0 flex-col bg-canvas",children:[t.jsxs("header",{className:"flex h-pane-header shrink-0 items-center gap-2 border-b border-line bg-surface px-row-inset",children:[t.jsx("div",{className:"min-w-0 flex-1",children:t.jsx($n,{value:e,onChange:s,onClear:n,chips:j,onRemoveChip:p,globalFocusKey:!1,showClearButton:!1,suggest:h})}),t.jsx($,{variant:"ghost",size:"sm",icon:t.jsx(_e,{className:"size-4"}),onClick:r,"aria-label":"Clear and close search",className:"-mr-1 shrink-0"})]}),d,a&&e.trim().length===0?t.jsx(pr,{children:t.jsx(yn,{...a,children:u})}):t.jsx("div",{className:"flex-1 overflow-y-auto",children:u})]})}const Ht=e=>e.toLocaleString();function Wt({selectAll:e,selecting:s,className:n}){return t.jsx(Wi,{className:n,checked:e.checked,indeterminate:e.indeterminate,onChange:e.onChange,label:t.jsx("span",{className:"font-medium text-accent",children:e.checked&&s?"Deselect all":"Select all"})})}function cc({title:e,count:s,onCancel:n,onDelete:r,onMove:a,onOrganize:o,onJunk:i,onMarkRead:l,navSlot:f,titleMeta:y,searchSlot:v,searchField:j,idleSlot:p,overflowSlot:x,isBusy:g=!1,isCounting:h=!1,selectAll:d,statusLabel:u,progress:b,notice:m}){const k=s>0||h,C=d?.checked?`All ${Ht(s)} loaded selected`:`${Ht(s)} ${s===1?"message":"messages"} selected`,w=[];return i&&!g&&!h&&w.push({key:"junk",label:"Junk",icon:t.jsx($e,{className:"size-4"}),onSelect:i}),l&&!g&&!h&&w.push({key:"mark-read",label:"Mark read",icon:t.jsx(mt,{className:"size-4"}),onSelect:l}),t.jsxs("header",{"data-selection-bar":"",className:"flex shrink-0 flex-col border-b border-line bg-surface-sunken",children:[t.jsxs("div",{"data-selection-bar-row":"actions",className:"flex h-pane-header items-center gap-1 px-row-inset",children:[k?t.jsx($,{variant:"ghost",size:"touch",icon:t.jsx(wn,{className:"size-5"}),onClick:n,"aria-label":"Cancel selection",className:"-ml-2 shrink-0"}):f,d&&t.jsx(Wt,{selectAll:d,selecting:k,className:"hidden shrink-0 pr-2 md:flex"}),k?t.jsx("span",{"data-selection-count":"",className:"min-w-0 flex-1 truncate px-1 text-sm font-medium text-fg",role:"status","aria-live":"polite",children:u??C}):j?t.jsx("div",{className:"flex min-w-0 flex-1 items-center gap-1",children:j}):t.jsxs(t.Fragment,{children:[t.jsx("h1",{className:"min-w-0 flex-1 truncate px-1 text-sm font-semibold text-fg",children:e}),y,v]}),k&&!h&&t.jsxs(t.Fragment,{children:[t.jsx($,{variant:"ghost",size:"touch",icon:g?t.jsx(vn,{className:"size-5 animate-spin"}):t.jsx(ss,{className:"size-5 text-danger"}),onClick:g?void 0:r,"aria-label":"Move selected messages to Trash","aria-busy":g||void 0,className:"shrink-0"}),!g&&a&&t.jsx($,{variant:"ghost",size:"touch",icon:t.jsx(lt,{className:"size-5"}),onClick:a,"aria-label":"Move selected messages",className:"shrink-0"}),!g&&o&&t.jsx($,{variant:"ghost",size:"touch",icon:t.jsx(Be,{className:"size-5"}),onClick:o,"aria-label":"Organize selected messages",className:"shrink-0"})]}),k&&t.jsx(Kn,{triggerLabel:"More actions",items:w,className:"shrink-0",children:!g&&!h&&x})]}),!k&&p,k&&d&&t.jsx("div",{"data-selection-bar-row":"select-all",className:"px-row-inset pb-2 md:hidden",children:t.jsx(Wt,{selectAll:d,selecting:k,className:"w-full"})}),b&&t.jsx("div",{className:"px-row-inset pb-2",children:t.jsx(gr,{value:b.value,max:b.max,tone:b.tone})}),m&&t.jsx(Nn,{"data-selection-notice":"",tone:m.tone,variant:"soft",role:"status","aria-live":"polite",className:"mx-row-inset mb-2",children:t.jsxs("div",{className:"flex items-center justify-between gap-2",children:[m.text&&t.jsx("span",{children:m.text}),m.action&&t.jsx($,{variant:"ghost",size:"md",onClick:m.action.onClick,className:"-my-1 min-h-11 shrink-0",children:m.action.label})]})})]})}const va={id:"unread",label:"Unread"},dc={id:"flagged",label:"Starred"},ya={id:"attachment",label:"Has attachment"};function uc(e){if(!(e.length<=1))return e.map(s=>({id:s.id,label:s.label,count:s.count,active:s.active}))}function mf(e=[]){return{categories:[...Is],filters:jn,sources:uc(e)}}function ff(){return{categories:[...Is],filters:[va,dc,ya]}}function hf(){return{categories:[...Is],filters:[va,ya]}}function mc(e,s){return e.endsWith(s)?e.length===s.length||e[e.length-s.length-1]===".":!1}function fc(e,s){const n=e.length-s.length-2,r=e.lastIndexOf(".",n);return r===-1?e:e.slice(r+1)}function hc(e,s,n){if(n.validHosts!==null){const a=n.validHosts;for(const o of a)if(mc(s,o))return o}let r=0;if(s.startsWith("."))for(;r<s.length&&s[r]===".";)r+=1;return e.length===s.length-r?null:fc(s,e)}const Gs=/[\t\n\r]/g;let tt=!1;function Gt(e){return e>=97&&e<=122||e>=48&&e<=57||e>127||e>=65&&e<=90||e===45||e===95}function Vt(e,s,n){const r=n-s,a=e.charCodeAt(s)|32;if(r===2)return a===119&&(e.charCodeAt(s+1)|32)===115?1:0;if(r===3){const o=e.charCodeAt(s+1)|32,i=e.charCodeAt(s+2)|32;return a===119&&o===115&&i===115||a===102&&o===116&&i===112?1:0}else if(r===4){const o=e.charCodeAt(s+1)|32,i=e.charCodeAt(s+2)|32,l=e.charCodeAt(s+3)|32;return a===104&&o===116&&i===116&&l===112?1:a===102&&o===105&&i===108&&l===101?2:0}else if(r===5)return a===104&&(e.charCodeAt(s+1)|32)===116&&(e.charCodeAt(s+2)|32)===116&&(e.charCodeAt(s+3)|32)===112&&(e.charCodeAt(s+4)|32)===115?1:0;return 0}function Ye(e,s,n=!1){let r=0,a=e.length,o=!1,i=!1;if(tt=!1,!s){if(e.startsWith("data:"))return null;for(;r<e.length&&e.charCodeAt(r)<=32;)r+=1;for(;a>r+1&&e.charCodeAt(a-1)<=32;)a-=1;if(e.charCodeAt(r)===47&&e.charCodeAt(r+1)===47)r+=2;else{const d=e.indexOf(":/",r);if(d!==-1){const u=Vt(e,r,d);if(u===1)for(i=!0,r=d+2;e.charCodeAt(r)===47||e.charCodeAt(r)===92;)r+=1;else if(u===2){i=!0,r=d+1;let b=0;for(;(e.charCodeAt(r)===47||e.charCodeAt(r)===92)&&b<2;)r+=1,b+=1;if(b<2)return null}else{for(let b=r;b<d;b+=1){const m=e.charCodeAt(b)|32;if(!(m>=97&&m<=122||m>=48&&m<=57||m===46||m===45||m===43)){const k=e.charCodeAt(b);return k===9||k===10||k===13?Ye(e.replace(Gs,""),s,n):null}}if(e.charCodeAt(d+2)===47)r=d+3;else return null}}else if(e.charCodeAt(r)!==91){let u=-1;for(let b=r;b<a;b+=1){const m=e.charCodeAt(b);if(m===9||m===10||m===13)return Ye(e.replace(Gs,""),s,n);if(m===58){u=b;break}if(m===47||m===92||m===63||m===35)break}if(u!==-1){let b=!1;for(let m=u+1;m<a;m+=1){const k=e.charCodeAt(m);if(k===47||k===92||k===63||k===35)break;if(k===64){b=!0;break}}if(!b){let m=!0,k=u+1;for(;k<a;k+=1){const C=e.charCodeAt(k);if(C===47||C===92||C===63||C===35)break;if(C<48||C>57){m=!1;break}}if(k===u+1&&(m=!1),!m){const C=Vt(e,r,u);if(C===0){let w=!1;for(let M=u+1;M<a;M+=1){const N=e.charCodeAt(M);if(N===47||N===92||N===63||N===35)break;if(N===58){w=!0;break}}if(!w)return null}else if(i=!0,r=u+1,C===2){let w=0;for(;(e.charCodeAt(r)===47||e.charCodeAt(r)===92)&&w<2;)r+=1,w+=1;if(w<2)return null}else for(;e.charCodeAt(r)===47||e.charCodeAt(r)===92;)r+=1}}}}}let f=-1,y=-1,v=-1,j=-1,p=!1,x=n,g=r-1,h=-1;if(n&&r<a){const d=e.charCodeAt(r);(!(Gt(d)||d===46||d===95)||d===45)&&(x=!1)}for(let d=r;d<a;d+=1){const u=e.charCodeAt(d);if(u<64)if(u===47||u===35||u===63){a=d;break}else u===58?(j===-1&&(j=d),v=d):u===9||u===10||u===13?p=!0:n&&(u===46?((d-g>64||h===46||h===45)&&(x=!1),g=d):(u<48||u>57)&&(u!==45||h===46)&&(x=!1));else if(i&&u===92){a=d;break}else u===64?(f=d,j=-1):u===93?y=d:u>=65&&u<=90?o=!0:n&&!Gt(u)&&(x=!1);n&&(h=u)}if(p)return Ye(e.replace(Gs,""),s,n);if(f!==-1&&f>=r&&f<a&&(r=f+1),e.charCodeAt(r)===91)return y!==-1?e.slice(r+1,y).toLowerCase():null;if(v!==-1&&v>r&&v<a&&j===v&&(a=v),r>=a)return null;n&&x&&f===-1&&v===-1&&y===-1&&e.charCodeAt(a-1)!==46&&a-r<=255&&a-g-1<=63&&h!==45&&(tt=!0)}for(;a>r+1&&e.charCodeAt(a-1)===46;)a-=1;const l=r!==0||a!==e.length?e.slice(r,a):e;return o?l.toLowerCase():l}function pc(e){if(e.length<7||e.length>15)return!1;let s=0;for(let n=0;n<e.length;n+=1){const r=e.charCodeAt(n);if(r===46)s+=1;else if(r<48||r>57)return!1}return s===3&&e.charCodeAt(0)!==46&&e.charCodeAt(e.length-1)!==46}function gc(e){if(e.length<3)return!1;let s=e.startsWith("[")?1:0,n=e.length;if(e[n-1]==="]"&&(n-=1),n-s>39)return!1;let r=!1;for(;s<n;s+=1){const a=e.charCodeAt(s);if(a===58)r=!0;else if(!(a>=48&&a<=57||a>=97&&a<=102||a>=65&&a<=70))return!1}return r}function xc(e){return gc(e)||pc(e)}function Jt(e){return e>=97&&e<=122||e>=48&&e<=57||e>127}function Yt(e){if(e.length>255||e.length===0||!Jt(e.charCodeAt(0))&&e.charCodeAt(0)!==46&&e.charCodeAt(0)!==95)return!1;let s=-1,n=-1;const r=e.length;for(let a=0;a<r;a+=1){const o=e.charCodeAt(a);if(o===46){if(a-s>64||n===46||n===45)return!1;s=a}else if(!(Jt(o)||o===45||o===95)||o===45&&n===46)return!1;n=o}return r-s-1<=63&&n!==45}function bc({allowIcannDomains:e=!0,allowPrivateDomains:s=!1,detectIp:n=!0,detectSpecialUse:r=!1,extractHostname:a=!0,mixedInputs:o=!0,validHosts:i=null,validateHostname:l=!0}){return{allowIcannDomains:e,allowPrivateDomains:s,detectIp:n,detectSpecialUse:r,extractHostname:a,mixedInputs:o,validHosts:i,validateHostname:l}}const vc=bc({});function yc(e){return vc}function jc(){return{domain:null,domainWithoutSuffix:null,hostname:null,isIcann:null,isIp:null,isPrivate:null,isSpecialUse:null,publicSuffix:null,subdomain:null}}function kc(e){e.domain=null,e.domainWithoutSuffix=null,e.hostname=null,e.isIcann=null,e.isIp=null,e.isPrivate=null,e.isSpecialUse=null,e.publicSuffix=null,e.subdomain=null}function Cc(e,s,n,r,a){const o=yc();if(typeof e!="string")return a;let i=!1;return o.extractHostname?o.mixedInputs?(i=Yt(e),a.hostname=Ye(e,i,o.validateHostname)):a.hostname=Ye(e,!1,o.validateHostname):a.hostname=e,o.detectIp&&a.hostname!==null&&(a.isIp=xc(a.hostname),a.isIp)?a:o.validateHostname&&o.extractHostname&&a.hostname!==null&&!(i&&a.hostname===e)&&!tt&&!Yt(a.hostname)?(a.hostname=null,a):(a.hostname===null||(n(a.hostname,o,a),a.publicSuffix===null)||(a.domain=hc(a.publicSuffix,a.hostname,o)),a)}const Zt=jc();function wc(e,s){return kc(Zt),Cc(e,3,xr,s,Zt).domain}const gt=e=>{const s=new Set,n=[];for(const r of e){const a=r.trim();if(a==="")continue;const o=a.toLowerCase();s.has(o)||(s.add(o),n.push(a))}return n},Nc=e=>{const s=e.lastIndexOf("@");return s>=0?e.slice(s+1):e},ja=e=>wc(Nc(e.trim())),Sc=e=>{const s=gt(e);if(s.length<2)return null;let n=null;for(const r of s){const a=ja(r);if(a===null)return null;if(n===null)n=a;else if(n!==a)return null}return n},Ic=e=>{const s=Sc(e);return s!==null?[{field:"FromDomain",value:s}]:gt(e).map(n=>({field:"From",value:n}))},Rc=e=>{const s=new Map;for(const a of e){const o=a.normalizedEmail.trim().toLowerCase();if(o==="")continue;const i=s.get(o);i?i.count+=1:s.set(o,{sender:a,count:1})}let n,r=0;for(const{sender:a,count:o}of s.values())o<=r||(n=a,r=o);return n},ka=e=>e.displayName?.trim()||e.normalizedEmail,Mc=/^\s*(?:(?:re|aw|fwd?|vs|sv|antw|res|enc|tr)\s*(?:\[\d+\])?\s*:|\[[^\]]{1,32}\])\s*/i,Tc=e=>{let s=e.replace(/\s+/g," ").trim();for(;;){const n=s.replace(Mc,"");if(n===s)return s.trim();s=n}},Ac=new Set(["a","an","and","are","as","at","be","by","for","from","has","have","in","is","it","me","my","new","of","on","or","our","the","this","to","was","we","with","you","your"]),Ec=3,Vs=e=>e.split(" ").filter(s=>s!==""),Xt=e=>e.length===0||e.join(" ").length<Ec?!1:e.some(s=>!Ac.has(s.toLowerCase())),Fc=(e,s)=>e.findIndex((n,r)=>s.every((a,o)=>e[r+o]?.toLowerCase()===a.toLowerCase())),Dc=e=>{const s=e.map(Tc).filter(o=>o!=="");if(s.length===0)return;const[n,...r]=s;if(r.length===0)return Xt(Vs(n))?n:void 0;const a=Vs(n);for(let o=a.length;o>0;o-=1)for(let i=0;i+o<=a.length;i+=1){const l=a.slice(i,i+o);if(Xt(l)&&r.every(f=>Fc(Vs(f),l)>=0))return l.join(" ")}},Lc=(e,s)=>{const n=Ic(e);if(gt(e).length===1||n.length===1&&n[0].field==="FromDomain")return n;const r=Dc(s);return r!==void 0?[{field:"Subject",value:r}]:n},Oc=({match:e,sender:s,folder:n})=>{const r=e??s;return r?n?`${r} → ${n}`:e?`Mail matching ${e}`:`Mail from ${r}`:n?`Mail to ${n}`:""},zc=e=>e.clauses.length>0,Pc=e=>({scopedOutFolder:e.scopedOut?.label,droppedFacets:e.droppedFacets.map(s=>s.label)}),_c=({orderedIds:e,isDesktop:s,initialFocusedId:n,initialSelectedIds:r,onExitSelection:a})=>{const[o,i]=c.useState(n),[l,f]=c.useState(),y=c.useCallback(D=>{f(z=>z===D?z:void 0),i(D)},[]),v=Bl({initialSelectedIds:r}),{selectedCount:j,toggle:p,clearSelection:x,selectRange:g,setAnchor:h,selectAll:d}=v,u=Ll(j,s),b=c.useRef(null),m=c.useRef(!1),k=c.useCallback(()=>{a?.(),x()},[x,a]),C=c.useMemo(()=>o?e.indexOf(o):-1,[e,o]),w=c.useCallback(D=>{if(D<0||D>=e.length)return;const z=e[D];if(u){p(z);return}b.current=z,m.current=!1,f(z),i(z)},[e,u,p]),M=c.useCallback(()=>{e.length!==0&&w(C<0?0:Math.min(C+1,e.length-1))},[e.length,C,w]),N=c.useCallback(()=>{e.length!==0&&w(C<=0?0:C-1)},[e.length,C,w]),R=c.useCallback(()=>w(0),[w]),E=c.useCallback(()=>w(e.length-1),[w,e.length]),A=c.useCallback(()=>{o&&p(o)},[o,p]),U=c.useCallback((D,z)=>{const P=Dl(z);return P==="range"?(g(e,D,o),!0):P==="toggle"?(p(D),!0):(k(),h(D),!1)},[e,o,g,p,k,h]),F=c.useCallback(D=>{const z=_l(e,o,D);z!==void 0&&(g(e,z),b.current=z,m.current=!1,f(void 0),i(z))},[e,o,g]),B=c.useCallback(()=>F(-1),[F]),q=c.useCallback(()=>F(1),[F]),Q=c.useCallback(()=>{e.length>0&&d(e)},[e,d]);return{focusedMessageId:o,setFocusedMessageId:y,keyboardFocusedMessageId:l,focusIndex:C,pendingDomFocusRef:b,cursorMovedByPointerRef:m,selection:v,isMultiSelectMode:u,exitSelection:k,moveFocusToIndex:w,focusNext:M,focusPrevious:N,focusFirst:R,focusLast:E,toggleFocusedSelection:A,extendRangeUp:B,extendRangeDown:q,selectAllLoaded:Q,handleRowSelect:U}};function Bc(e,s){if(e===void 0)return{shouldBlockFn:()=>!0,withResolver:!1};if("shouldBlockFn"in e)return e;if(typeof e=="function")return{shouldBlockFn:async()=>await e(),enableBeforeUnload:!0,withResolver:!1};const n=!!(e.condition??!0),r=e.blockerFn;return{shouldBlockFn:async()=>n&&r!==void 0?await r():n,enableBeforeUnload:n,withResolver:r===void 0}}function Uc(e,s){const{shouldBlockFn:n,enableBeforeUnload:r=!0,disabled:a=!1,withResolver:o=!1}=Bc(e),i=br(),{history:l}=i,[f,y]=c.useState({status:"idle",current:void 0,next:void 0,action:void 0,proceed:void 0,reset:void 0});return c.useEffect(()=>{const v=async j=>{function p(u){const b=i.parseLocation(u),m=i.getMatchedRoutes(b.pathname);return m.foundRoute===void 0?{routeId:"__notFound__",fullPath:b.pathname,pathname:b.pathname,params:m.routeParams,search:i.options.parseSearch(u.search)}:{routeId:m.foundRoute.id,fullPath:m.foundRoute.fullPath,pathname:b.pathname,params:m.routeParams,search:i.options.parseSearch(u.search)}}const x=p(j.currentLocation),g=p(j.nextLocation);if(x.routeId==="__notFound__"&&g.routeId!=="__notFound__")return!1;const h=await n({action:j.action,current:x,next:g});if(!o)return h;if(!h)return!1;const d=await new Promise(u=>{y({status:"blocked",current:x,next:g,action:j.action,proceed:()=>u(!1),reset:()=>u(!0)})});return y({status:"idle",current:void 0,next:void 0,action:void 0,proceed:void 0,reset:void 0}),d};return a?void 0:l.block({blockerFn:v,enableBeforeUnload:r})},[n,r,a,o,l,i]),f}function pf(){const{insertIntoOpenReply:e}=Sn(),s=In();return c.useCallback((n,r)=>{e(n.messageId,r)||s({...n,mode:"reply"},{body:r})},[e,s])}const Os=e=>{const{data:s,isLoading:n}=te({...ts(),staleTime:1/0,enabled:!!e}),r=c.useMemo(()=>(s?.accounts??[]).map(l=>l.accountId),[s?.accounts]),a=ut({queries:r.map(l=>({...ns({path:{accountId:l}}),staleTime:1/0,enabled:!!e}))}),o=n||a.some(l=>l.isLoading);return{accountId:c.useMemo(()=>{if(e){for(let l=0;l<r.length;l++)if((a[l].data?.items??[]).some(v=>v.mailboxId===e))return r[l]}},[e,r,a]),isLoading:o}},$c=({surface:e})=>{const s=vr(),n=yr(),{registerOpenReply:r}=Sn(),[a,o]=c.useState(),i=c.useCallback(p=>o(x=>({version:(x?.version??0)+1,text:p})),[]),l=e.sourceMessageId;c.useEffect(()=>r(l,i),[l,i,r]);const{data:f}=te({...As({path:{messageId:e.sourceMessageId}})}),{data:y}=te({...ts(),staleTime:1/0}),{accountId:v}=Os(f?.message.mailboxId),j=y?.accounts?.find(p=>p.accountId===v);return t.jsx("div",{className:"border-b border-line bg-canvas",children:t.jsx(Go,{layout:"flow",mode:e.mode,account:j,sourceMessage:f,outboxMessageId:e.outboxMessageId,seed:e.seed,insertion:a,onDraftCreated:s,onClose:n},e.sourceMessageId)})},Kc=3e3,qc=(e,s,n)=>{if(e.length===0)return()=>{};const r=setTimeout(()=>n(e),s);return()=>clearTimeout(r)},xt=(e,s,n)=>{const r=new Map(s.map(o=>[o.messageId,o.mailboxId])),a=new Set;for(const o of e)a.add(r.get(o)??n);return[...a]},Ns=(e,s,n)=>e.map(r=>s.has(r.messageId)?{...r,isRead:n}:r),Qc=(e,s,n,r)=>e.filter(a=>!a.isRead&&s.has(a.threadMessageId)&&!n.has(a.messageId)&&!r.has(a.messageId)).map(a=>a.messageId),Hc=({messages:e,expandedIds:s,threadId:n,mailboxId:r,accountId:a})=>{const o=ue(),{pushError:i}=be(),l=c.useRef(new Set),f=c.useRef(new Set),{mutate:y}=xe({...Es(),meta:jr,onMutate:async p=>{const x=new Set(p.body.messageIds??[]),g=p.body.isRead??!0,h=Ie({path:{threadId:n}}),d=Ne(xt(x,e,r));await Promise.all([o.cancelQueries({queryKey:h}),os(o,d)]);const u=o.getQueriesData({queryKey:h}).filter(m=>m[1]!==void 0).map(([m,k])=>({queryKey:m,data:k})),b=is(o,d);return o.setQueriesData({queryKey:h},m=>m&&{...m,items:Ns(m.items,x,g)}),ls(o,d,m=>Ns(m,x,g)),{threadMessagesPrefix:h,listPrefixes:d,previousThreadMessages:u,previousThreadsList:b}},onSuccess:(p,x)=>{const g=x.body.messageIds??[];for(const h of g)l.current.add(h),f.current.delete(h)},onError:(p,x,g)=>{const h=x.body.messageIds??[];for(const u of h)f.current.delete(u);if(g){for(const u of g.previousThreadMessages)o.setQueryData(u.queryKey,u.data);rs(o,g.previousThreadsList)}const d=x.body.isRead??!0;i({title:d?"Couldn't mark as read":"Couldn't mark as unread",detail:Se(p),error:p})},onSettled:(p,x,g,h)=>{h&&(o.invalidateQueries({queryKey:h.threadMessagesPrefix}),we(o,h.listPrefixes),a&&o.invalidateQueries({queryKey:as({path:{accountId:a}})}))}}),v=c.useCallback(p=>{const x=p.filter(g=>!l.current.has(g)&&!f.current.has(g));if(x.length!==0){for(const g of x)f.current.add(g);y({body:{messageIds:x,isRead:!0}})}},[y]),j=c.useMemo(()=>Qc(e,s,l.current,f.current),[e,s]);c.useEffect(()=>qc(j,Kc,v),[j,v]),c.useEffect(()=>{l.current.clear(),f.current.clear()},[n])},gf=e=>{const{mailboxId:s,accountId:n,messages:r}=e,a=ue(),{pushError:o}=be(),{mutateAsync:i,isPending:l}=xe({...Es(),onError:(y,v)=>{const j=v.body.isRead??!0;o({title:j?"Couldn't mark as read":"Couldn't mark as unread",detail:Se(y),error:y})},onSettled:(y,v,j)=>{we(a,Ne(xt(j.body.messageIds??[],r??[],s))),n&&a.invalidateQueries({queryKey:as({path:{accountId:n}})})}});return{toggleReadFor:c.useCallback((y,v)=>{y.length!==0&&Ze(y,j=>i({body:{messageIds:j,isRead:v}}))},[i]),isPending:l}},Wc=(e,s,n)=>s?.find(r=>r.messageId===e)?.mailboxId??n,en=(e,s,n)=>e.map(r=>r.messageId===s?{...r,hasStars:n}:r),Ca=({threadId:e,mailboxId:s,messages:n})=>{const r=ue(),{pushError:a}=be(),{mutate:o,isPending:i,variables:l}=xe({...Cr(),onMutate:async y=>{const v=y.path.messageId,j=y.body.isStarred??!1,p=Ie({path:{threadId:e}}),x=Ne([Wc(v,n,s)]);await Promise.all([r.cancelQueries({queryKey:p}),os(r,x)]);const g=r.getQueriesData({queryKey:p}).filter(d=>d[1]!==void 0).map(([d,u])=>({queryKey:d,data:u})),h=is(r,x);return r.setQueriesData({queryKey:p},d=>kr(d,u=>en(u,v,j))),ls(r,x,d=>en(d,v,j)),{threadMessagesPrefix:p,listPrefixes:x,previousThreadMessages:g,previousThreadsList:h}},onError:(y,v,j)=>{if(j){for(const x of j.previousThreadMessages)r.setQueryData(x.queryKey,x.data);rs(r,j.previousThreadsList)}const p=v.body.isStarred??!1;a({title:p?"Couldn't star message":"Couldn't unstar message",detail:Se(y),error:y})},onSettled:(y,v,j,p)=>{p&&(r.invalidateQueries({queryKey:p.threadMessagesPrefix}),we(r,p.listPrefixes))}});return{toggleStar:(y,v)=>{o({path:{messageId:y},body:{isStarred:!v}})},isPending:i,pendingMessageId:i?l?.path.messageId:void 0}};function sn({authenticity:e,onOpenIntelligence:s}){return e.dkimMismatch?t.jsxs("div",{className:"flex items-start gap-2 rounded-none border-b border-danger/20 bg-danger-soft px-5 py-2.5 text-sm",children:[t.jsx($e,{className:"mt-0.5 size-4 shrink-0 text-danger"}),t.jsxs("p",{className:"flex-1 leading-snug text-fg",children:["This message claims to be from"," ",t.jsx("span",{className:"font-semibold",children:e.fromDomain})," but was sent",e.dkimDomain?` via ${e.dkimDomain}`:" from a different domain","."," ",s&&t.jsx("button",{type:"button",onClick:s,className:"font-medium text-danger hover:underline",children:"Why?"})]})]}):null}function wa(e){return e===void 0?"uncategorized":e}const Gc={inbox:"Inbox",junk:"Junk"},bt=e=>e.destinationMailboxId!==void 0,Vc=(e,s)=>{if(bt(e))return`Moved from ${s??"another folder"} by Remit`;const n=e.fromPlacement??"";return`Moved from ${Gc[n]??"another folder"} by Remit`},Jc=(e,s)=>{if(e===Rt.MoveToInbox)return s.inboxMailboxId;if(e===Rt.MoveToJunk)return s.junkMailboxId},Yc=(e,s,n)=>{if(!e||!s)return!1;const r=bt(e)?e.destinationMailboxId:Jc(e.action,n);return r!==void 0&&r===s},Zc="Reported as spam",Xc=(e,s)=>{if(e){if(bt(e))return e.fromMailboxId;if(e.fromPlacement==="inbox")return s.inboxMailboxId;if(e.fromPlacement==="junk")return s.junkMailboxId}},ds=(e,s)=>{const{data:n,isLoading:r}=te({...ts(),staleTime:1/0,enabled:!!e});return{mailboxId:c.useMemo(()=>e?n?.accounts.find(i=>i.accountId===e)?.folderAppointments.find(i=>i.role===s)?.mailboxId:void 0,[n,e,s]),isLoading:r}},xf=e=>{const{mailboxId:s,isLoading:n}=ds(e,"Archive");return{archiveMailboxId:s,isLoading:n}},bf=e=>{const{mailboxId:s,isLoading:n}=ds(e,"Drafts");return{draftsMailboxId:s,isLoading:n}},Na=e=>{const{mailboxId:s,isLoading:n}=ds(e,"Inbox");return{inboxMailboxId:s,isLoading:n}},Sa=e=>{const{mailboxId:s,isLoading:n}=ds(e,"Junk");return{junkMailboxId:s,isLoading:n}},vf=e=>{const{mailboxId:s,isLoading:n}=ds(e,"Trash");return{trashMailboxId:s,isLoading:n}},ed=()=>{const{data:e,isError:s}=te({...ts(),staleTime:1/0});return{trashByAccount:c.useMemo(()=>{const r=new Map;for(const a of e?.accounts??[]){const o=a.folderAppointments.find(i=>i.role==="Trash");r.set(a.accountId,{mailboxId:o?.mailboxId,source:o?.source??"None",staleFolderPath:o?.staleAppointmentPath})}return r},[e]),hasAppointments:e!==void 0,isError:s}},Ia=e=>{const{data:s}=te({...ts(),staleTime:1/0,enabled:!!e});return c.useMemo(()=>s?.accounts.find(n=>n.accountId===e)?.folderAppointments??[],[s,e])},sd=new Set(["in_flight"]),tn=(e,s)=>{const n=e?.[s];return typeof n=="string"?n:void 0},Ra=e=>{const s=wr(e);if(s?.code!=="message_placement_unsettled")return;const{details:n}=s;if(!n)return;const r=tn(n,"reason"),a=tn(n,"messageId");if(!(!r||!sd.has(r)||!a))return{reason:r,messageId:a}},Ma=(e,s,n)=>({severity:"warning",title:s>1?`Couldn't ${n} ${s} messages yet`:`Couldn't ${n} this message yet`,detail:"It is still being moved on the mail server. Try again in a moment."}),nn=(e,s)=>e.filter(n=>!s.has(n.messageId)),us=({mailboxId:e,threadId:s,accountId:n,onAfterOptimisticRemove:r})=>{const a=ue(),{pushError:o}=be(),{mutateAsync:i,isPending:l,isError:f}=xe({...Nr(),meta:Rn(409),onMutate:async v=>{const j=new Set(v.body.messageIds??[]),p=s?Ie({path:{threadId:s}}):[],x=Ne([e,v.body.destinationMailboxId]);await Promise.all([...s?[a.cancelQueries({queryKey:p})]:[],os(a,x)]);const g=s?a.getQueriesData({queryKey:p}).filter(d=>d[1]!==void 0).map(([d,u])=>({queryKey:d,data:u})):[],h=is(a,x);return s&&a.setQueriesData({queryKey:p},d=>d&&{...d,items:nn(d.items,j)}),ls(a,x,d=>nn(d,j)),r?.(Array.from(j)),{threadMessagesPrefix:p,listPrefixes:x,previousThreadMessages:g,previousThreadsList:h}},onError:(v,j,p)=>{if(p){for(const h of p.previousThreadMessages)a.setQueryData(h.queryKey,h.data);rs(a,p.previousThreadsList)}const x=j.body.messageIds?.length??0,g=Ra(v);if(g){o(Ma(g,x,"move"));return}o({title:x>1?`Couldn't move ${x} messages`:"Couldn't move this message",detail:Se(v),error:v})},onSettled:(v,j,p,x)=>{x&&(s&&a.invalidateQueries({queryKey:x.threadMessagesPrefix}),we(a,x.listPrefixes),n&&a.invalidateQueries({queryKey:as({path:{accountId:n}})}))}});return{moveMessages:c.useCallback((v,j)=>{v.length!==0&&Ze(v,p=>i({body:{messageIds:p,destinationMailboxId:j}}))},[i]),isPending:l,isError:f}},td="This message could not be processed. Please try again. If it keeps failing, report it.",nd=(e,s)=>e.replace(`Message ${s}'s`,"This message's"),an=e=>{if(e.failureCount===0)return;const s=e.failures?.[0],n=s?.reason??td,r=s?nd(n,s.messageId):n;throw new Rr(r,422)};function Ta({mailboxId:e,threadId:s,accountId:n,onAfterOptimisticRemove:r}){const a=ue(),{pushError:o}=be(),i=Ne([e]),l=s?Ie({path:{threadId:s}}):[],f=()=>{s&&a.invalidateQueries({queryKey:l}),we(a,i),n&&a.invalidateQueries({queryKey:as({path:{accountId:n}})})},y=()=>(h,d)=>{f(),r?.(d.body.messageIds)},v=h=>(d,u)=>{o({title:h(u.body.messageIds.length),detail:Se(d),error:d})},j=xe({mutationFn:async h=>{const{data:d}=await Sr({...h,throwOnError:!0});return an(d),d},meta:{softError:!0},onSuccess:y(),onError:v(h=>h>1?`Couldn't report ${h} messages as spam`:"Couldn't report this message as spam")}),p=xe({mutationFn:async h=>{const{data:d}=await Ir({...h,throwOnError:!0});return an(d),d},meta:{softError:!0},onSuccess:y(),onError:v(h=>h>1?`Couldn't undo the spam report for ${h} messages`:"Couldn't undo the spam report")}),x=c.useCallback(h=>{h.length!==0&&Ze(h,d=>j.mutateAsync({body:{messageIds:d}}))},[j.mutateAsync]),g=c.useCallback(h=>{h.length!==0&&Ze(h,d=>p.mutateAsync({body:{messageIds:d}}))},[p.mutateAsync]);return{reportSpam:x,notSpam:g,isReporting:j.isPending,isRestoring:p.isPending}}const ad=({accountId:e,messageId:s,threadId:n,mailboxId:r,autoMoved:a,spamReport:o})=>{const{inboxMailboxId:i}=Na(e),{junkMailboxId:l}=Sa(e),{moveMessages:f,isPending:y}=us({mailboxId:r,threadId:n,accountId:e}),{notSpam:v,isRestoring:j}=Ta({mailboxId:r,threadId:n,accountId:e}),{data:p}=te({...ns({path:{accountId:e??""}}),staleTime:1/0,enabled:!!e&&a?.fromMailboxId!==void 0}),x={inboxMailboxId:i,junkMailboxId:l},g=Xc(a,x),h=c.useCallback(()=>{g&&f([s],g)},[f,s,g]),d=c.useCallback(()=>{v([s])},[v,s]);if(o)return{show:!0,label:Zc,onUndo:d,isUndoing:j};if(!Yc(a,r,x)||!a)return{show:!1,label:"",isUndoing:!1};const b=a.fromMailboxId?p?.items.filter(m=>m.mailboxId===a.fromMailboxId).map(m=>Mr(m))[0]:void 0;return{show:!0,label:Vc(a,b),onUndo:g?h:void 0,isUndoing:y,...a.filterId?{filtersHref:"/settings/filters"}:{}}};function rd({accountId:e,messageId:s,threadId:n,mailboxId:r,autoMoved:a,spamReport:o}){const i=ad({accountId:e,messageId:s,threadId:n,mailboxId:r,autoMoved:a,spamReport:o});return i.show?t.jsx(ml,{label:i.label,onUndo:i.onUndo,undoLabel:i.isUndoing?"Undoing…":"Undo",filtersHref:i.filtersHref}):null}const rn=(e,s)=>e.filter(n=>!s.has(n.messageId)),yf=e=>e.filter(s=>s.isDeleted!==!0),zs=({mailboxId:e,threadId:s,accountId:n,messages:r,onAfterOptimisticRemove:a})=>{const o=ue(),{pushError:i}=be(),{requestAppointment:l}=Mn(),f=c.useRef([]),y=c.useRef(async()=>{}),{mutateAsync:v,isPending:j}=xe({...Ar(),meta:Rn(409),onMutate:async g=>{const h=new Set(g.body.messageIds??[]),d=s?Ie({path:{threadId:s}}):[],u=Ne(xt(h,r??[],e));await Promise.all([o.cancelQueries({queryKey:d}),os(o,u)]);const b=s?o.getQueriesData({queryKey:d}).filter(k=>k[1]!==void 0).map(([k,C])=>({queryKey:k,data:C})):[],m=is(o,u);return s&&o.setQueriesData({queryKey:d},k=>k&&{...k,items:rn(k.items,h)}),ls(o,u,k=>rn(k,h)),a?.(Array.from(h)),{threadMessagesPrefix:d,listPrefixes:u,previousThreadMessages:b,previousThreadsList:m}},onSuccess:(g,h)=>{const d=g?.failureCount??0;if(d===0)return;const u=h.body.messageIds?.length??0;i({severity:"warning",title:d>1?`Couldn't delete ${d} of ${u} messages yet`:"Couldn't delete this message yet",detail:"Something else moved it while the delete was being prepared. It is back where it now sits — try again."})},onError:(g,h,d)=>{if(d){for(const k of d.previousThreadMessages)o.setQueryData(k.queryKey,k.data);rs(o,d.previousThreadsList)}const u=Tr(g);if(u){const k=f.current;l({accountId:u.accountId,role:u.role,reason:u.reason,action:{kind:"delete",count:k.length},onAppointed:()=>y.current(k)});return}const b=h.body.messageIds?.length??0,m=Ra(g);if(m){i(Ma(m,b,"delete"));return}i({title:b>1?`Couldn't delete ${b} messages`:"Couldn't delete this message",detail:Se(g),error:g})},onSettled:(g,h,d,u)=>{u&&(s&&o.invalidateQueries({queryKey:u.threadMessagesPrefix}),we(o,u.listPrefixes),n&&o.invalidateQueries({queryKey:as({path:{accountId:n}})}))}}),p=c.useCallback(g=>Ze(g,h=>v({body:{messageIds:h}})),[v]);return c.useEffect(()=>{y.current=p},[p]),{deleteMessages:c.useCallback(g=>{g.length!==0&&(f.current=g,p(g))},[p]),isPending:j}},Aa="inline-flex items-center justify-center transition-colors",od=T(Aa,"min-h-11 min-w-11 rounded hover:bg-surface-raised"),id=T(Aa,"min-h-11 gap-1.5 px-3 rounded text-sm font-medium hover:bg-surface-raised"),Ps=({accountId:e,currentMailboxId:s,onMove:n,disabled:r=!1,disabledHint:a,variant:o="icon-only",label:i,defaultOpen:l=!1})=>{const[f,y]=c.useState(l),[v,j]=c.useState(),p=ct(),x=c.useRef(null),g=c.useRef(null),h=c.useRef(null),d=i??"Move to folder",u=c.useId(),b=Tn(),{data:m,isLoading:k,isError:C,error:w,refetch:M}=te({...ns({path:{accountId:e}}),staleTime:1/0,enabled:f}),N=Ia(e),{createFolderIn:R}=An(e),E=c.useMemo(()=>En({mailboxes:m?.items??[],folderAppointments:N,currentMailboxId:s,translator:b}),[m?.items,N,s,b]),A=Fn(m?.items??[]),U=E.find(_=>_.id===v),F=c.useCallback(()=>{y(!1),j(void 0);const _=document.activeElement;_&&g.current?.contains(_)&&h.current?.focus()},[]),B=c.useCallback(()=>{U&&(F(),n(U.id))},[U,F,n]);Ms({id:"move-to",open:f,answers:{back:F}}),c.useEffect(()=>{if(!f||!p)return;const _=Y=>{const H=Y.target;x.current?.contains(H)||g.current?.contains(H)||F()};return document.addEventListener("mousedown",_),()=>document.removeEventListener("mousedown",_)},[f,p,F]);const q=()=>x.current?.getBoundingClientRect()??null,Q=r||!!a,D=t.jsxs("button",{type:"button",ref:h,onClick:_=>{_.stopPropagation(),!Q&&y(Y=>!Y)},"aria-label":d,"aria-haspopup":p?"tree":"dialog","aria-expanded":f,"aria-controls":f?u:void 0,title:a,className:o==="icon-only"?od:id,children:[t.jsx(lt,{className:o==="icon-only"?"size-5":"size-4"}),o==="compact"&&t.jsx("span",{className:"hidden sm:inline",children:"Move"})]}),z=k?t.jsx("div",{className:"px-3 py-5 text-sm text-fg-muted",children:"Loading folders…"}):C?t.jsx("div",{className:"p-3",children:t.jsx(De,{variant:"inline",title:"Couldn't load folders",error:w,onRetry:()=>M()})}):t.jsx(Er,{folders:E,selectedId:v,delimiter:A,onSelect:j,onCreateFolder:R,onCancel:F,autoFocusFilter:p,labels:{filterPlaceholder:"Filter folders…",filterAriaLabel:"Filter folders"}}),P=U&&t.jsx("div",{className:"shrink-0 border-t border-line p-2",children:t.jsx($,{variant:"primary",onClick:B,className:"h-11 w-full font-semibold",children:`Move to ${U.label}`})});return p?t.jsxs("div",{ref:x,className:"relative inline-block",children:[D,t.jsx(_o,{open:f,align:"end",panelRef:g,getAnchor:q,children:t.jsxs("div",{id:u,ref:g,className:T("w-72 max-h-96 flex flex-col","bg-surface border border-line rounded-md shadow-lg"),children:[z,P]})})]}):t.jsxs(t.Fragment,{children:[D,t.jsx(ze.Root,{open:f,onOpenChange:_=>_?y(!0):F(),children:t.jsxs(ze.Portal,{children:[t.jsx(ze.Overlay,{className:"fixed inset-0 z-40 bg-black/40"}),t.jsxs(ze.Content,{className:"fixed inset-x-0 bottom-0 z-50 flex flex-col rounded-t-lg bg-canvas pb-[env(safe-area-inset-bottom,0px)]",style:{maxHeight:"85dvh"},id:u,children:[t.jsx(ze.Handle,{className:"mx-auto mt-2 mb-1 h-1.5 w-12 rounded-full bg-fg-subtle/30"}),t.jsx(ze.Title,{className:"px-4 py-2 text-base font-semibold border-b border-line",children:"Move to folder"}),t.jsx("div",{className:"flex min-h-0 flex-1 overflow-hidden",children:z}),P]})]})})]})},ld=({messageId:e,threadId:s,mailboxId:n,isRead:r,accountId:a,fromAddressId:o,isTrusted:i=!1,showRaw:l=!1,onToggleRaw:f})=>{const y=ue(),v=Ao(),{pushError:j}=be(),p=Eo()?.messageId,{mutate:x,isPending:g}=xe({...Es(),onMutate:async q=>{const Q=q.body.isRead??!0,D=new Set(q.body.messageIds??[]),z=Ie({path:{threadId:s}}),P=Ne([n]);await Promise.all([y.cancelQueries({queryKey:z}),os(y,P)]);const _=y.getQueriesData({queryKey:z}).filter(H=>H[1]!==void 0).map(([H,G])=>({queryKey:H,data:G})),Y=is(y,P);return y.setQueriesData({queryKey:z},H=>H&&{...H,items:Ns(H.items,D,Q)}),ls(y,P,H=>Ns(H,D,Q)),{threadMessagesPrefix:z,listPrefixes:P,previousThreadMessages:_,previousThreadsList:Y}},onError:(q,Q,D)=>{if(D){for(const P of D.previousThreadMessages)y.setQueryData(P.queryKey,P.data);rs(y,D.previousThreadsList)}const z=Q.body.isRead??!0;j({title:z?"Couldn't mark as read":"Couldn't mark as unread",detail:Se(q),error:q})},onSettled:(q,Q,D,z)=>{z&&(y.invalidateQueries({queryKey:z.threadMessagesPrefix}),we(y,z.listPrefixes))}}),h=c.useCallback(q=>{p&&q.includes(p)&&v()},[p,v]),{deleteMessages:d,isPending:u}=zs({mailboxId:n,threadId:s,onAfterOptimisticRemove:h}),{moveMessages:b,isPending:m}=us({mailboxId:n,threadId:s,accountId:a,onAfterOptimisticRemove:h}),{toggleTrusted:k,isPending:C,error:w,reset:M}=Qn({messageId:e}),N=()=>{x({body:{messageIds:[e],isRead:!1}})},R=()=>{d([e])},E=()=>{o&&k(o,i)},A=g||u||m||C,U=A||!o,F=c.useCallback(q=>{b([e],q)},[b,e]),B=o?void 0:"Sender has no parseable address";return t.jsxs("div",{className:"flex flex-col items-end gap-1",children:[t.jsxs("div",{className:"flex items-center gap-1",children:[a&&t.jsx(Ps,{accountId:a,currentMailboxId:n,onMove:F,disabled:A,label:"Move this message"}),t.jsxs(wl,{trigger:t.jsx(Bo,{className:"size-4"}),children:[t.jsxs(xs,{onClick:E,disabled:U,children:[i?t.jsx(Ls,{className:"size-4 text-positive"}):t.jsx(Rs,{className:"size-4 opacity-0"}),t.jsx("span",{title:B,children:"Trusted sender"})]}),r&&t.jsxs(xs,{onClick:N,disabled:A,children:[t.jsx(mt,{className:"size-4"}),"Mark as unread"]}),f&&t.jsxs(xs,{onClick:f,children:[t.jsx(ta,{className:"size-4"}),l?"Show formatted":"Show raw email"]}),t.jsx(Nl,{}),t.jsxs(xs,{onClick:R,disabled:A,destructive:!0,children:[t.jsx(ss,{className:"size-4"}),"Delete"]})]})]}),w&&t.jsx("div",{className:"w-64",children:t.jsx(De,{variant:"inline",title:"Couldn't update trust",error:w,onRetry:()=>{M(),E()}})})]})},cd=(e,s)=>{if(e==="message")return"MESSAGE";const n=s.toUpperCase();return n==="OCTET-STREAM"?"FILE":n},dd=e=>{const s=e.toLowerCase().replace(/[^a-z0-9]/g,"");return s.length>0?`attachment.${s}`:"attachment"},on=e=>ni(e).filter(s=>!s.isMultipart&&(s.disposition===Fr.Attachment||Dt(s))&&s.contentUrl.length>0).map(s=>{const n=Dt(s)?"message":"file";return{bodyPartId:s.bodyPartId,partPath:s.partPath,kind:n,filename:Vo(s.dispositionFilename??"",dd(s.mediaSubtype)),typeLabel:cd(n,s.mediaSubtype),sizeOctets:s.sizeOctets,contentUrl:s.contentUrl}}),ln={status:"idle"},Ea=({messageId:e,bodyParts:s,hasAttachment:n=!1,className:r})=>{const{getToken:a}=Dn(),o=ue(),[i,l]=c.useState({}),[f,y]=c.useState(null),v=c.useMemo(()=>on(s??[]),[s]),j=Dr({path:{messageId:e}}),p=b=>Ft(b.contentUrl,a).catch(m=>{if(!ei(Et(m)))throw m;return o.refetchQueries({queryKey:j}).then(()=>{const k=o.getQueryData(j),C=k?on(k.bodyParts).find(w=>w.bodyPartId===b.bodyPartId):void 0;return Ft(C?.contentUrl??b.contentUrl,a)})}),x=(b,m)=>l(k=>({...k,[b]:m})),g=b=>{const m=v.find(k=>k.bodyPartId===b);if(!m)throw new Error(`No attachment part ${b} on message ${e}`);x(b,{status:"downloading"}),p(m).then(k=>{Jo(k,m.filename),x(b,ln)}).catch(k=>{const C=Et(k),w=Yo(k),{title:M,detail:N}=Zo(C,m.filename,w);x(b,{status:"failed",title:M,detail:N,reportUrl:Xo(C,m.filename,w)})})},h=n&&s!==void 0&&v.length===0,d=v.find(b=>b.kind==="message"&&b.bodyPartId===f),u=d?ai(s??[],d.partPath):[];return t.jsx(ul,{className:r,attachments:v.map(b=>({attachmentId:b.bodyPartId,kind:b.kind,filename:b.filename,typeLabel:b.typeLabel,sizeOctets:b.sizeOctets,download:i[b.bodyPartId]??ln})),onDownload:g,hasUnlistedAttachment:h,onToggleOpen:b=>y(m=>m===b?null:b),opened:d?{attachmentId:d.bodyPartId,content:t.jsxs(t.Fragment,{children:[t.jsx(Hn,{bodyParts:u,messageId:e}),t.jsx(Ea,{messageId:e,bodyParts:u,className:"mt-4"})]})}:void 0})},Fa=e=>e.syncStatus===Lr.abandoned?e.abandonedMutation:Xe.none;function ud({threadMessage:e,accountId:s,className:n}){const r=Fa(e),a=r===Xe.delete?"delete_failed":r===Xe.move?"move_failed":void 0,{accountId:o}=Os(a==="move_failed"&&!s?e.mailboxId:void 0),i=s??o,{deleteMessages:l,isPending:f}=zs({mailboxId:e.mailboxId,threadId:e.threadId,accountId:i,messages:[e]}),{moveMessages:y,isPending:v}=us({mailboxId:e.mailboxId,threadId:e.threadId,accountId:i}),j=c.useCallback(()=>{l([e.messageId])},[l,e.messageId]),p=c.useCallback(g=>{y([e.messageId],g)},[y,e.messageId]),x=c.useMemo(()=>a?Or(zr({title:Cs[a].title,errorMessage:`Message ${e.messageId}: status=${e.status} syncStatus=${e.syncStatus} abandonedMutation=${e.abandonedMutation}`})):void 0,[a,e.messageId,e.status,e.syncStatus,e.abandonedMutation]);return a?t.jsx(Ul,{settlement:a,onRetry:a==="delete_failed"?j:void 0,action:a==="move_failed"&&i?t.jsx(Ps,{accountId:i,currentMailboxId:e.mailboxId,onMove:p,disabled:v,variant:"compact",label:Cs.move_failed.retryLabel}):void 0,retryPending:a==="delete_failed"?f:v,reportHref:x,className:n}):null}const md=({messageId:e,threadId:s,mailboxId:n,accountId:r,isRead:a,isStarred:o,onToggleStar:i,fromAddressId:l,isTrusted:f,showRaw:y,onToggleRaw:v,onReply:j,onReplyAll:p,onForward:x})=>{const g=ue(),{deleteMessages:h}=zs({mailboxId:n,threadId:s}),{moveMessages:d}=us({mailboxId:n,threadId:s,accountId:r}),{toggleTrusted:u}=Qn({messageId:e}),{mutate:b}=xe({...Es(),onSettled:()=>{g.invalidateQueries({queryKey:Ie({path:{threadId:s}})}),we(g,Ne([n]))}}),m=c.useCallback(M=>{d([e],M)},[d,e]),k=c.useCallback(()=>{h([e])},[h,e]),C=c.useCallback(()=>{b({body:{messageIds:[e],isRead:!a}})},[b,e,a]),w=[];return l&&w.push({key:"trusted",label:f?"Trusted sender":"Mark sender trusted",icon:f?t.jsx(Ls,{className:"size-4 text-positive"}):t.jsx(Rs,{className:"size-4"}),onSelect:()=>u(l,f)}),v&&w.push({key:"raw",label:y?"Show formatted":"Show raw email",icon:t.jsx(ta,{className:"size-4"}),onSelect:v}),t.jsx(ha,{hasThread:!0,onReply:j,onReplyAll:p,onForward:x,isStarred:o,onToggleStar:i,onDelete:k,isRead:a,onToggleRead:C,overflowItems:w,moveSlot:r?t.jsx(Ps,{accountId:r,currentMailboxId:n,onMove:m,label:"Move this message"}):void 0})},fd=()=>t.jsxs("div",{className:"animate-pulse space-y-2",role:"status","aria-label":"Loading raw email",children:[t.jsx("div",{className:"h-4 bg-surface-sunken rounded w-full"}),t.jsx("div",{className:"h-4 bg-surface-sunken rounded w-11/12"}),t.jsx("div",{className:"h-4 bg-surface-sunken rounded w-5/6"}),t.jsx("div",{className:"h-4 bg-surface-sunken rounded w-3/4"})]}),hd=({messageId:e,enabled:s=!0})=>{const{data:n,isLoading:r,isError:a,error:o,refetch:i}=te({...Pr({path:{messageId:e}}),enabled:s});if(r)return t.jsx("div",{className:"message-body",children:t.jsx(fd,{})});if(a)return t.jsx("div",{className:"message-body",children:t.jsx(De,{variant:"inline",title:"Couldn't load the raw email",error:o,onRetry:()=>i()})});const l=n?.raw??"";return l===""?t.jsx("div",{className:"message-body",children:t.jsx("p",{className:"text-fg-muted text-sm italic",children:"No raw source available for this message."})}):t.jsx("div",{className:"message-body",children:t.jsx("pre",{className:"email-text whitespace-pre-wrap break-words text-sm leading-relaxed bg-surface-sunken rounded-md p-3 max-h-[32rem] overflow-auto",children:l})})},pd=()=>t.jsx(Ls,{className:"inline-block size-4 ml-1 -mt-0.5 text-positive align-middle","aria-label":"Trusted sender","data-testid":"trusted-sender-badge"}),Da=(e,s)=>({id:e.messageId,fromName:e.fromName??e.fromEmail??"?",fromEmail:e.fromEmail??"",toLabel:"",dateLabel:s,snippet:e.snippet||"",bodyHtml:""}),La=({isStarred:e,onToggleStar:s,isStarPending:n,hoverReveal:r})=>t.jsx("button",{type:"button",onClick:a=>{a.stopPropagation(),s()},disabled:n,"aria-label":e?"Remove star":"Add star",className:T("shrink-0 p-0.5 rounded transition-colors",e?"text-warning":T("text-fg-subtle hover:text-warning",r&&"opacity-0 group-hover:opacity-100 focus:opacity-100"),n&&"opacity-50"),children:t.jsx(Ue,{className:T("size-3.5",e&&"fill-current")})}),gd=({threadMessage:e,isFocused:s,onToggle:n,onToggleStar:r,isStarPending:a})=>{const o=Ln(e.sentDate,"datetime"),i=Da(e,o);return t.jsx(pa,{message:i,onClick:n,isFocused:s,isUnread:!e.isRead,trailing:t.jsxs(t.Fragment,{children:[e.hasAttachment&&t.jsx(Ds,{className:"size-3 shrink-0 text-fg-subtle",role:"img","aria-label":"Has an attachment"}),t.jsx(La,{isStarred:e.hasStars,onToggleStar:r,isStarPending:a,hoverReveal:!0}),t.jsx("span",{"data-testid":"message-date",className:"shrink-0 text-2xs text-fg-subtle tabular-nums",children:o})]})})},xd=({threadMessage:e,messageData:s,isLoading:n,isError:r,error:a,onRetry:o,isFocused:i,onToggle:l,onToggleStar:f,isStarPending:y,accountId:v,showRaw:j,onToggleRaw:p,mobile:x,onReply:g,onReplyAll:h,onForward:d})=>{const u=Ln(e.sentDate,"long"),b=!e.isRead,m=s?.envelope.from[0]?.flags?.trusted?.value===!0,k=s?.envelope.from[0]?.flags?.blocked?.value===!0,C=s?.envelope.from[0]?.addressId,w=Da(e,u),M=e.autoMoved||e.spamReport?t.jsx(rd,{accountId:v,messageId:e.messageId,threadId:e.threadId,mailboxId:e.mailboxId,autoMoved:e.autoMoved,spamReport:e.spamReport}):null;return t.jsx(ga,{message:w,isFocused:x?!1:i,onHeaderClick:l,senderBadge:m&&!k?t.jsx(pd,{}):void 0,trailing:t.jsx("span",{"data-testid":"message-date",className:"text-2xs text-fg-subtle",children:u}),to:s?t.jsx(ll,{label:"To",addresses:s.envelope.to}):null,indicators:M||!x?t.jsxs("div",{className:"flex flex-wrap items-center gap-1.5 mt-0.5",children:[M,!x&&t.jsxs(t.Fragment,{children:[t.jsx("div",{className:"flex items-center justify-end gap-1",children:t.jsx(La,{isStarred:e.hasStars,onToggleStar:f,isStarPending:y})}),b&&t.jsx("span",{className:"size-1.5 rounded-full bg-accent","aria-label":"Unread"})]})]}):void 0,actionMenu:x?void 0:t.jsx(ld,{messageId:e.messageId,threadId:e.threadId,mailboxId:e.mailboxId,isRead:e.isRead,accountId:v,fromAddressId:C,isTrusted:m,showRaw:j,onToggleRaw:p}),actionBar:x?t.jsx(md,{messageId:e.messageId,threadId:e.threadId,mailboxId:e.mailboxId,accountId:v,isRead:e.isRead,isStarred:e.hasStars,onToggleStar:f,fromAddressId:C,isTrusted:m,showRaw:j,onToggleRaw:p,onReply:g,onReplyAll:h,onForward:d}):void 0,body:t.jsxs(t.Fragment,{children:[t.jsx(ud,{threadMessage:e,accountId:v,className:"mt-3"}),n?t.jsxs("div",{className:"mt-3 animate-pulse space-y-2",children:[t.jsx("div",{className:"h-4 bg-surface-sunken rounded w-full"}),t.jsx("div",{className:"h-4 bg-surface-sunken rounded w-3/4"}),t.jsx("div",{className:"h-4 bg-surface-sunken rounded w-1/2"})]}):r&&_r(a)?t.jsx("div",{className:"mt-3",children:t.jsx(Zs,{message:"This message is no longer on the mail server. It was moved or deleted in another mail app."})}):r&&Br(a)?t.jsx("div",{className:"mt-3",children:t.jsx(Zs,{message:"This message has been deleted"})}):r?t.jsx("div",{className:"mt-3",children:t.jsx(De,{variant:"inline",title:"Couldn't load this message",error:a,onRetry:o})}):j?t.jsx("div",{className:"mt-3",children:t.jsx(hd,{messageId:e.messageId})}):t.jsxs("div",{className:"mt-3",children:[t.jsx(Hn,{bodyParts:s?.bodyParts,messageId:e.messageId,fromAddressId:s?.envelope.from[0]?.addressId,isTrusted:m,isBlocked:k,category:wa(e.category)}),t.jsx(Ea,{messageId:e.messageId,bodyParts:s?.bodyParts,hasAttachment:e.hasAttachment,className:"mt-4"})]})]})})},bd=({threadMessage:e,isExpanded:s,isFocused:n,onToggle:r,onToggleStar:a,isStarPending:o,accountId:i,mobile:l,onReply:f,onReplyAll:y,onForward:v})=>{const[j,p]=c.useState(!1),{data:x,isLoading:g,isError:h,error:d,refetch:u}=te({...As({path:{messageId:e.messageId}}),enabled:s,meta:{softError:!0}});return s?t.jsx(xd,{threadMessage:e,messageData:x,isLoading:g,isError:h,error:d,onRetry:()=>u(),isFocused:n,onToggle:r,onToggleStar:a,isStarPending:o,accountId:i,showRaw:j,onToggleRaw:()=>p(b=>!b),mobile:l,onReply:f,onReplyAll:y,onForward:v}):t.jsx(gd,{threadMessage:e,isFocused:n,onToggle:r,onToggleStar:a,isStarPending:o})},vd=()=>t.jsxs("div",{className:"animate-pulse p-4",children:[t.jsx("div",{className:"h-6 bg-surface-sunken rounded w-3/4 mb-5"}),t.jsx("div",{className:"space-y-4",children:Array.from({length:2}).map((e,s)=>t.jsxs("div",{className:"flex gap-3 py-3",children:[t.jsx("div",{className:"size-10 bg-surface-sunken rounded-full shrink-0"}),t.jsxs("div",{className:"flex-1",children:[t.jsx("div",{className:"h-4 bg-surface-sunken rounded w-32 mb-2"}),t.jsx("div",{className:"h-3 bg-surface-sunken rounded w-48"})]})]},s))})]}),jf=({threadId:e,mailboxId:s,subject:n,selectedMessageId:r,authenticity:a,onOpenIntelligence:o,onBack:i,onSwipeNext:l,onSwipePrevious:f,mobileIntelligenceOpen:y,listOnScreen:v=!1})=>{const j=ct(),{accountId:p}=Os(s),{data:x,isLoading:g,isError:h,error:d,refetch:u}=te({...On({path:{threadId:e}})}),b=c.useMemo(()=>x?.items??[],[x?.items]),m=b[b.length-1],k=c.useMemo(()=>[...b].reverse(),[b]),C=c.useRef(new Map),[w,M]=c.useState(new Set),[N,R]=c.useState(null),[E,A]=c.useState(0);c.useEffect(()=>{if(b.length>0&&e!==N){R(e);const I=new Set([b[b.length-1].threadMessageId]);if(r){const O=b.find(J=>J.messageId===r);O&&I.add(O.threadMessageId)}M(I),A(0)}},[e,b,N,r]);const U=c.useCallback(I=>{M(O=>{const J=new Set(O);return J.has(I)?J.delete(I):J.add(I),J})},[]),F=c.useCallback(I=>{const O=k[I];if(!O)return;C.current.get(O.threadMessageId)?.scrollIntoView({behavior:"smooth",block:"nearest"})},[k]),B=c.useCallback(()=>{if(k.length===0)return;const I=Math.min(E+1,k.length-1);A(I),F(I)},[k.length,E,F]),q=c.useCallback(()=>{if(k.length===0)return;const I=Math.max(E-1,0);A(I),F(I)},[k.length,E,F]),Q=c.useCallback(()=>{const I=k[E];I&&U(I.threadMessageId)},[k,E,U]);Hc({messages:b,expandedIds:w,threadId:e,mailboxId:s,accountId:p});const{toggleStar:D,isPending:z,pendingMessageId:P}=Ca({threadId:e,mailboxId:s,messages:b}),_=Ur(),Y=In(),H=r??m?.messageId,G=c.useCallback((I,O)=>{O&&Y({threadId:e,messageId:O,mode:I})},[Y,e]),me=c.useCallback(()=>G("reply",H),[G,H]),pe=c.useCallback(()=>G("reply-all",H),[G,H]),ae=c.useCallback(()=>G("forward",H),[G,H]),se=c.useRef(null),X=_?.kind==="reply"?`${_.mode}:${_.sourceMessageId}`:void 0;if(c.useEffect(()=>{X&&se.current?.scrollIntoView({behavior:"smooth",block:"start"})},[X]),si({enabled:!g&&b.length>0&&_===void 0,bindings:[...v?[]:[{key:"j",action:"focusNext",handler:B,preventDefault:!0},{key:"ArrowDown",action:"focusNext",handler:B,preventDefault:!0},{key:"k",action:"focusPrevious",handler:q,preventDefault:!0},{key:"ArrowUp",action:"focusPrevious",handler:q,preventDefault:!0},{key:"Enter",action:"openFocused",handler:Q,preventDefault:!0},{key:"o",action:"openFocused",handler:Q,preventDefault:!0}],{key:"r",action:"reply",handler:me,preventDefault:!0},{key:"R",action:"replyAll",handler:pe,noModifiers:!1,preventDefault:!0},{key:"f",action:"forward",handler:ae,preventDefault:!0}]}),g)return t.jsx(vd,{});if(h)return t.jsx("div",{className:"flex h-full items-center justify-center",children:t.jsx(De,{title:_?"Couldn't load this conversation, so there is nothing to answer":"Couldn't load this conversation",error:d,onRetry:()=>u()})});if(b.length===0)return t.jsx("div",{className:"flex h-full items-center justify-center p-4",children:_?t.jsx(De,{variant:"inline",title:"There is nothing here to answer",error:"This conversation has no messages left. Another mail client may have moved or deleted them."}):t.jsx(Zs,{message:"No messages in this thread"})});const re=n||b[0]?.subject||"(No subject)",ee=b.length,le=I=>t.jsx("div",{"data-testid":"conversation-messages",children:k.map((O,J)=>t.jsx("div",{ref:fe=>{fe&&C.current.set(O.threadMessageId,fe)},children:t.jsx(bd,{threadMessage:O,isExpanded:w.has(O.threadMessageId),isFocused:J===E,onToggle:()=>U(O.threadMessageId),onToggleStar:()=>D(O.messageId,O.hasStars),isStarPending:z&&P===O.messageId,accountId:p,mobile:I,onReply:I?()=>G("reply",O.messageId):void 0,onReplyAll:I?()=>G("reply-all",O.messageId):void 0,onForward:I?()=>G("forward",O.messageId):void 0})},O.threadMessageId))}),ce=_&&t.jsx("div",{ref:se,children:_.kind==="reply"?t.jsx($c,{surface:_}):t.jsx("div",{className:"border-b border-line bg-canvas p-4",children:t.jsx(De,{variant:"inline",title:"That is not a way to answer a message",error:`"${_.segment}" is not reply, reply-all or forward.`})})}),K=t.jsxs("header",{className:"border-b border-line px-5 pt-5 pb-3",children:[t.jsx("h1",{className:"max-w-2xl text-lg font-semibold leading-snug text-fg",children:re}),t.jsxs("p",{className:"mt-1 text-2xs text-fg-subtle",children:[ee," ",ee===1?"message":"messages"]})]});return j?t.jsxs("article",{className:"h-full flex flex-col",children:[K,a?.dkimMismatch&&t.jsx(sn,{authenticity:a,onOpenIntelligence:o}),t.jsxs("div",{className:"min-h-0 flex-1 overflow-auto",children:[ce,le(!1)]})]}):t.jsxs(Zl,{thread:{subject:re,messages:[]},onBack:i??(()=>{}),intelligenceOpen:y,onToggleIntelligence:o,onSwipeNext:l,onSwipePrevious:f,children:[a?.dkimMismatch&&t.jsx(sn,{authenticity:a,onOpenIntelligence:o}),ce,le(!0)]})},yd=e=>{switch(Fa(e)){case Xe.delete:return{settlement:"delete_failed"};case Xe.move:return{settlement:"move_failed"};default:return{}}},jd=({isOpen:e,onClose:s,children:n,ariaLabel:r="Navigation",side:a="left",widthClassName:o="w-[80vw] max-w-[320px]",answers:i})=>{const l=c.useRef(null);if(Ms({id:"drawer",open:e,answers:{back:s,...i}}),zn(l,e),c.useEffect(()=>{if(!e)return;const y=document.body.style.overflow;return document.body.style.overflow="hidden",()=>{document.body.style.overflow=y}},[e]),!e)return null;const f=a==="left"?"left-0 border-r animate-in slide-in-from-left duration-150":"right-0 border-l animate-in slide-in-from-right duration-150";return t.jsxs("div",{className:"fixed inset-0 z-50",role:"dialog","aria-modal":"true","aria-label":r,children:[t.jsx("button",{type:"button","aria-label":"Close menu",onClick:s,className:"absolute inset-0 bg-black/40 animate-in fade-in duration-150 cursor-default"}),t.jsxs("div",{ref:l,tabIndex:-1,className:T("safe-area-frame absolute top-0 bottom-0 bg-canvas border-line shadow-xl flex flex-col",o,f),children:[t.jsx("div",{className:"flex items-center justify-end h-12 px-2 border-b border-line shrink-0",children:t.jsx("button",{type:"button",onClick:s,className:"p-2 rounded-md hover:bg-surface-raised transition-colors min-h-11 min-w-11 inline-flex items-center justify-center","aria-label":"Close menu",children:t.jsx(_e,{className:"size-5"})})}),t.jsx("div",{className:"flex-1 overflow-y-auto",children:n})]})]})},vs=e=>({messageId:e,tab:void 0,offering:!1,picked:[],answering:"",failure:{suggestionId:"",text:""}}),kd=(e,s)=>{const n=+(s.state==="Pending")-+(e.state==="Pending");return n!==0?n:s.sequence-e.sequence},Cd=(e,s)=>s.kind==="refused"?`Couldn't ${e}: ${s.message} Try again, or answer from your calendar app.`:"";function wd(e,s,n){const r=e.messageId,{suggestions:a,isLoading:o,error:i}=hi(r),l=Fi(),{calendars:f,defaultCalendarId:y,colorByCalendarId:v,timeZoneByCalendarId:j}=l,p=ui(l),x=pi(),g=Ci(),h=wi(),[d,u]=c.useState(()=>vs(r)),b=d.messageId===r?d:vs(r),m=c.useRef(r);m.current=r;const k=I=>{m.current===r&&u(O=>({...O.messageId===r?O:vs(r),...I}))},C=c.useMemo(()=>a.filter(gi).filter(I=>Lt(I)!==void 0).sort(kd)[0],[a]),w=a.filter(I=>I!==C&&I.state==="Pending"),M=C??w[0],N=M?Ot(M):"",R=Di(N===""?"1970-01-01":N,1),E=Ni({...R,calendarIds:[],enabled:N!==""}),A=mi(N===""?[]:[R]),U={threadId:e.threadId,threadSubject:e.subject??"",calendarId:y},F=e.fromName??e.fromEmail??"",B=_i(b.failure.text||"the invitations in a message could not be read"),q=fi(p,B),Q=(I,O,J)=>{k({answering:I,failure:{suggestionId:I,text:""}}),J().then(fe=>k({answering:"",failure:{suggestionId:I,text:Cd(O,fe)}}))},D=C?.suggestionId??"",z=b.failure.suggestionId===D?b.failure.text:"",P=b.failure.suggestionId===D?"":b.failure.text,_=C?Lt(C):void 0,Y=C&&_?{invite:bi(C,_.state,{...U,senderName:F}),whenText:zt(C),calendarName:f.find(I=>I.id===y)?.name??"Calendar",color:v[y]??"cal-1",clashes:_.state==="pending"?xi({start:C.dtStart,end:C.dtEnd},A.spans):[],rsvp:_.rsvp,busy:b.answering===C.suggestionId,failure:z,reportHref:B,addBlocked:q,sender:F}:void 0,H=N===""?[]:vi(N,A.spans),G=E.instances.filter(Li).filter(I=>!I.allDay).sort((I,O)=>I.start.localeCompare(O.start)).map(I=>({event:Oi(I,j[I.calendarId]??"",zi()),timeText:Si(I.start),color:v[I.calendarId]??"cal-1"})),me=w.map(I=>({suggestion:yi(I,{...U,sender:F}),whenText:zt(I)})),pe=i===null?"":"Couldn't read the invitations in this message. Reopen it to try again.",ae=C?.method==="Cancel",se=I=>{const O=a.find(J=>J.suggestionId===I);O&&h(Ot(O),I)},X=I=>{const O=a.find(J=>J.suggestionId===I);return O?.zoneCertainty==="Ambiguous"&&O.method!=="Cancel"},re=N===""?"":ji(N,H,b.picked),ee=C!==void 0&&C.answerOvertakenBy!==$r.None,le={onAddInvite:()=>{if(X(D)){se(D);return}Q(D,"add this to your calendar",()=>x.accept(D,y))},onTentativeInvite:ae?void 0:()=>Q(D,"add this as a maybe",()=>x.tentative(D,y)),onDeclineInvite:()=>Q(D,"decline this",()=>x.decline(D)),onMuteInvite:()=>Q(D,"stop these invitations",()=>x.dismiss(D,!0)),onRemoveInvite:ae?()=>Q(D,"take this off your calendar",()=>x.accept(D,y)):void 0,onReopenInvite:ae?()=>Q(D,"keep this on your calendar",()=>x.dismiss(D,!1)):ee?void 0:()=>Q(D,"take this answer back",()=>x.reopen(D)),onOpenNewerInvite:n&&C&&C.supersededByThreadId!==""?()=>n({threadId:C.supersededByThreadId,messageId:C.supersededByMessageId}):void 0,onOfferOtherTimes:()=>k({offering:!0}),onToggleSlot:I=>k({picked:b.picked.includes(I.startTime)?b.picked.filter(O=>O!==I.startTime):[...b.picked,I.startTime]}),onReplyWithSlots:s?()=>s({threadId:e.threadId,messageId:r},re):void 0,onAddSuggestion:I=>{if(X(I)){se(I);return}Q(I,"add this to your calendar",()=>x.accept(I,y))},onReviewSuggestion:w[0]?.method==="Cancel"?void 0:se,onDismissSuggestion:I=>Q(I,"dismiss this",()=>x.dismiss(I,!1)),onSelectEvent:I=>{const{calendarObjectId:O,recurrenceId:J}=Pi(I);g(N,O,J)}},ce=Y!==void 0||me.length>0||i!==null,K=b.tab!==void 0;return c.useEffect(()=>{o||K||u(I=>I.messageId===r&&I.tab!==void 0?I:{...I.messageId===r?I:vs(r),tab:ce?"calendar":"sender"})},[o,K,ce,r]),{surface:{data:{invite:Y,prose:b.offering&&N!==""?{dayLabel:Pt(N),proposals:[],slots:H,picked:b.picked}:void 0,suggestions:me,day:G,dayLabel:N===""?"":Pt(N),suggestionsBusy:b.answering!==""&&!Y?.busy,failure:pe,suggestionsFailure:P,reportHref:B,addBlocked:q},actions:le},tab:b.tab??"sender",onTabChange:I=>k({tab:I})}}const Nd=10,Oa=e=>({q:e?.toLowerCase()??"",limit:Nd}),Sd=(e,s)=>{if(!s)return;const n=s.toLowerCase();return e?.find(r=>r.normalizedEmail===n)};function Id(e){const s=new Date(e),n=new Date;return s.toDateString()===n.toDateString()?"today":qr(s,{month:"short",year:"numeric"})}function za(e){if(!e)return!0;const[,s]=e.split("@");return s?!s.includes("."):!0}const Rd="We can't verify the sender of this email, which could mean it's from an insecure source.",Md="We couldn't read this sender's address, so we can't confirm who really sent this message.";function Td(e,s){const n=e.category??"personal";return{value:Pn(n)?n:"uncategorized",overridden:s?.flags?.category?.value!=null&&s.flags.category.value!==e.category}}function Ad(e,s){return{name:e.fromName??e.fromEmail??"Unknown",email:e.fromEmail??"",trust:e.senderTrust,firstSeenLabel:s?Id(s.createdAt):"unknown",inboundCount:s?.inboundCount,replyCount:s?.replyCount,addressUnverified:za(e.fromEmail)}}function Ed(e){return e?.flags?{vip:e.flags.vip?.value===!0,muted:e.flags.muted?.value===!0,blocked:e.flags.blocked?.value===!0}:{}}function cn(e){if(e.fromName&&e.fromName!==e.fromEmail)return e.fromName}function Fd(e){return e.length===1?e[0]:`${e.slice(0,-1).join(", ")} and ${e[e.length-1]}`}function Dd(e,s){const n=[],r=e.displayNameCorrespondence;s&&(r===Hs.Unrelated?n.push(`The name it shows, "${s}", has nothing to do with ${e.fromDomain}.`):r===Hs.Lookalike?n.push(`The name it shows, "${s}", only looks like ${e.fromDomain}.`):r===Hs.ForeignAddress&&n.push(`The name it shows, "${s}", is an address ${e.fromDomain} cannot send from.`));const a=Ld(e.offDomainLinkDomains);return a.length>0&&n.push(`Its links go to ${Fd(a.slice(0,3))}.`),n}function Ld(e){return Array.isArray(e)?e.filter(s=>typeof s=="string"&&s.length>0):[]}function Od(e){if(za(e.fromEmail))return{verdict:"mismatch",fromDomain:"",addressUnreadable:!0,summary:Md};const s=e.authenticity;if(!s)return{verdict:"caution",fromDomain:e.fromEmail?.split("@")[1]??"",summary:Rd};if(!s.dkimMismatch){const l=cn(e),f=Dd(s,l);return f.length>0?{verdict:"caution",fromDomain:s.fromDomain,dkimDomain:s.dkimDomain,claimedBrand:l,summary:f.join(" ")}:{verdict:"aligned",fromDomain:s.fromDomain,dkimDomain:s.dkimDomain,summary:s.dkimDomain?`This message was signed by ${s.dkimDomain}.`:"Nothing looks unusual about this sender."}}const n=s.fromDomain,r=s.dkimDomain,a=cn(e),o=r?`it was actually sent from ${r}`:"its signature failed to verify",i=a?`The display name claims "${a}", but ${o}${r?` — not ${n}`:""}. Real senders use their own address.`:`This message claims to be from ${n}, but ${o}.`;return{verdict:"mismatch",fromDomain:n,dkimDomain:r,claimedBrand:a,summary:i}}function zd(e){const s=e?.fromEmail??null,{data:n,error:r}=te({...dt({query:Oa(s??void 0)}),enabled:!!s,staleTime:3e4}),a=Sd(n?.items,s??void 0);return{data:c.useMemo(()=>{if(!e)return null;const i=Ad(e,a),l=Od(e),f=Td(e,a),y=Ed(a);return{sender:i,authenticity:l,category:f,flags:y}},[e,a]),addressErrorIsFatal:Kr(r),addressId:a?.addressId,address:a}}function Pd(e,s,n=[]){const r={...e??{}};for(const[a,o]of Object.entries(s))o==null?delete r[a]:r[a]={...o,setAt:o.setAt??Date.now()};for(const a of n)delete r[a];return r}function _d({addressId:e,senderEmail:s}){const n=ue(),{pushError:r}=be(),a=Qr({query:Oa(s)}),{mutate:o,isPending:i}=xe({...Hr(),onMutate:async v=>{const j=v.body.flags??{},p=v.body.clearFlags??[];await n.cancelQueries({queryKey:a});const x=n.getQueryData(a);return n.setQueryData(a,g=>g&&{...g,items:g.items.map(h=>h.addressId===v.path.addressId?{...h,flags:Pd(h.flags,j,p)}:h)}),{previous:x}},onError:(v,j,p)=>{p?.previous!==void 0&&n.setQueryData(a,p.previous),r({title:"Couldn't update sender preference",detail:Se(v),error:v})},onSettled:()=>{n.invalidateQueries({queryKey:a})}}),l=c.useCallback(v=>{if(!e){Wr(new Error(`Quick action fired but the sender's address record did not resolve (sender: ${s??"unknown"}). This should never happen — the address row exists.`));return}o({path:{addressId:e},body:v})},[e,o,s]),f=c.useCallback(v=>l({flags:v}),[l]),y=c.useCallback(v=>l({clearFlags:v}),[l]);return{updateFlags:f,clearFlags:y,isPending:i}}const kf=e=>e==="vip"?"A sender you know":e==="wellknown"?"You've emailed them before":"Passed authentication",Bd=e=>e.senderTrust!=="vip"&&e.senderTrust!=="wellknown"?!1:e.authenticity?.dkimMismatch!==!0;function Cf(e,s){e.recordEvent("rescue.candidates_surfaced",{count:String(s)})}function wf(e,s){e.recordEvent("rescue.flow_opened",{count:String(s)})}function Nf(e,s){e.recordEvent("rescue.committed",{selected:String(s.selected),total:String(s.total),destination:s.toInbox?"inbox":"other"})}function Ud(e,s){e.recordEvent("rescue.sent_to_junk",{count:String(s.count),senderTrust:s.senderTrust,wasRescuable:String(s.wasRescuable)})}const $d=e=>e!=="uncategorized",Kd=Jr.map(e=>e.category).filter($d),qd=e=>e.spamReport?"notSpam":"reportSpam";function Qd(){return t.jsxs("aside",{className:"flex h-full w-full flex-col bg-surface-sunken",children:[t.jsxs("header",{className:"flex h-pane-header shrink-0 items-center gap-1.5 border-b border-line px-row-inset",children:[t.jsx(Be,{className:"size-3.5 text-fg-subtle"}),t.jsx("span",{className:"text-2xs font-semibold uppercase tracking-wider text-fg-subtle",children:"Intelligence"})]}),t.jsxs("div",{className:"flex-1 animate-pulse space-y-4 p-4",children:[t.jsxs("div",{className:"space-y-2",children:[t.jsx("div",{className:"h-2.5 rounded bg-surface w-1/4"}),t.jsxs("div",{className:"flex gap-3",children:[t.jsx("div",{className:"size-10 rounded-full bg-surface shrink-0"}),t.jsxs("div",{className:"flex-1 space-y-1.5",children:[t.jsx("div",{className:"h-3 rounded bg-surface w-3/4"}),t.jsx("div",{className:"h-2.5 rounded bg-surface w-1/2"})]})]})]}),t.jsxs("div",{className:"space-y-2",children:[t.jsx("div",{className:"h-2.5 rounded bg-surface w-1/4"}),t.jsx("div",{className:"h-8 rounded bg-surface"})]}),t.jsxs("div",{className:"space-y-2",children:[t.jsx("div",{className:"h-2.5 rounded bg-surface w-1/4"}),t.jsx("div",{className:"flex gap-1.5 flex-wrap",children:Array.from({length:5}).map((e,s)=>t.jsx("div",{className:"h-6 w-16 rounded bg-surface"},s))})]})]})]})}function Hd({isOpen:e,current:s,hasOverride:n,onSelect:r,onClear:a,onCancel:o}){const i=c.useRef(null);return zn(i,e),e?t.jsxs("div",{className:"fixed inset-0 z-50 flex items-center justify-center",children:[t.jsx(Vr,{label:"Dismiss reclassify sender",onDismiss:o,className:"backdrop-blur-sm"}),t.jsxs("div",{ref:i,role:"dialog","aria-modal":"true","aria-label":"Reclassify sender",tabIndex:-1,className:"relative z-10 w-full max-w-sm rounded-sm border border-line bg-surface p-6 shadow-lg",children:[t.jsx("h2",{className:"text-lg font-semibold",children:"Reclassify this sender"}),t.jsx("p",{className:"mt-2 text-sm text-fg-muted",children:"Set a category override for future messages from this sender."}),t.jsxs("div",{className:"mt-4 flex flex-col gap-1",children:[Kd.map(l=>t.jsxs("button",{type:"button",onClick:()=>r(l),className:`flex min-h-11 items-center justify-between rounded px-3 text-left text-sm transition-colors hover:bg-surface-raised ${l===s?"font-semibold text-accent":"text-fg"}`,children:[Ts[l],l===s&&t.jsx("span",{className:"text-2xs text-fg-subtle",children:"current"})]},l)),n&&t.jsx("button",{type:"button",onClick:a,className:"mt-1 flex min-h-11 items-center rounded border-t border-line px-3 text-left text-sm text-fg transition-colors hover:bg-surface-raised",children:"Remove override — classify automatically again"})]}),t.jsx("div",{className:"mt-6 flex justify-end",children:t.jsx("button",{type:"button",onClick:o,className:"inline-flex min-h-11 items-center justify-center rounded border border-line px-4 text-sm font-medium transition-colors hover:bg-surface-raised",children:"Cancel"})})]})]}):null}function Wd({thread:e,onClose:s,accountId:n,hideCloseButton:r,onAfterOptimisticRemove:a,onReplyWithText:o,onOpenThread:i}){const{data:l,address:f,addressId:y}=zd(e),v=wd(e,o,i),[j,p]=c.useState(!1),x=e.fromEmail??void 0,{updateFlags:g,clearFlags:h}=_d({addressId:y,senderEmail:x}),{reportSpam:d,notSpam:u,isReporting:b,isRestoring:m}=Ta({mailboxId:e.mailboxId,threadId:e.threadId,accountId:n,onAfterOptimisticRemove:a}),k=Gr(),C=qd(e),w=c.useCallback(()=>{u([e.messageId])},[u,e.messageId]),M=c.useCallback(()=>{Ud(k,{count:1,senderTrust:e.senderTrust,wasRescuable:Bd(e)}),d([e.messageId])},[d,e,k]),N=c.useCallback(()=>{const B=l?.flags?.vip!==!0;g({vip:{value:B}})},[l?.flags?.vip,g]),R=c.useCallback(()=>{const B=l?.flags?.muted!==!0;g({muted:{value:B}})},[l?.flags?.muted,g]),E=c.useCallback(B=>{p(!1),g({category:{value:B}})},[g]),A=c.useCallback(()=>{p(!1),h(["category"])},[h]),U=y!==void 0,F={onToggleVip:U?N:void 0,onToggleMute:U?R:void 0,onReclassify:U?()=>p(!0):void 0,onNotSpam:C==="notSpam"?w:void 0,onReportSpam:C==="reportSpam"?M:void 0};return l?t.jsxs(t.Fragment,{children:[t.jsx(ra,{data:l,calendar:v.surface,tab:v.tab,onTabChange:v.onTabChange,onClose:s,hideCloseButton:r,actions:F,reportSpamPending:b,notSpamPending:m,className:"border-l-0 h-full w-full"}),t.jsx(Hd,{isOpen:j,current:l.category.value,hasOverride:f?.flags?.category?.value!=null,onSelect:E,onClear:A,onCancel:()=>p(!1)})]}):t.jsx(Qd,{})}const Gd=({onClose:e,thread:s,accountId:n,hideCloseButton:r,onAfterOptimisticRemove:a,onReplyWithText:o,onOpenThread:i})=>s?t.jsx(Wd,{thread:s,onClose:e,accountId:n,hideCloseButton:r,onAfterOptimisticRemove:a,onReplyWithText:o,onOpenThread:i}):t.jsxs("aside",{className:"flex h-full w-full flex-col bg-surface-sunken",children:[t.jsxs("header",{className:"flex h-pane-header shrink-0 items-center gap-1.5 border-b border-line px-row-inset",children:[t.jsx(Be,{className:"size-3.5 text-fg-subtle"}),t.jsx("span",{className:"text-2xs font-semibold uppercase tracking-wider text-fg-subtle",children:"Intelligence"})]}),t.jsxs("div",{className:"flex flex-1 flex-col items-center justify-center px-row-inset text-center",children:[t.jsx(Be,{className:"size-8 text-fg-subtle"}),t.jsx("p",{className:"mt-3 text-sm text-fg-muted",children:"Intelligence"}),t.jsx("p",{className:"mt-1 text-2xs text-fg-subtle",children:"Sender trust and authenticity will appear here."})]})]});function Sf({isOpen:e,onClose:s,thread:n,accountId:r,onAfterOptimisticRemove:a,onReplyWithText:o,onOpenThread:i}){return t.jsx(jd,{isOpen:e,onClose:s,ariaLabel:"Message details",side:"right",answers:{toggleIntelligence:s},children:t.jsx(Gd,{onClose:s,thread:n,accountId:r,hideCloseButton:!0,onAfterOptimisticRemove:a,onReplyWithText:o,onOpenThread:i})})}const Vd=e=>{const{trashByAccount:s,hasAppointments:n,isError:r}=ed();return c.useMemo(()=>{const a=Yr({targets:e,trashByAccount:s,hasAppointments:n,isError:r}),o=i=>i.accountId?s.get(i.accountId):void 0;return{outcome:a,staleFolderLabel:e.map(o).find(i=>i?.source==="Stale")?.staleFolderPath,guessedMailboxId:a==="unconfirmed"?e.find(i=>o(i)?.mailboxId===i.mailboxId)?.mailboxId:void 0}},[e,s,n,r])},Jd=100,Yd=({mailboxId:e,mailboxLabel:s,accountId:n,enabled:r,predicateKey:a,searchQuery:o,reportEnding:i})=>{const[l,f]=c.useState({kind:"idle"}),y=c.useRef(void 0),{run:v,start:j,stop:p}=Zr(),{pushError:x}=be(),g=v?.mailboxId===e?v:void 0,h=g!==void 0,d=c.useRef(!1);d.current=h,c.useEffect(()=>{y.current?.abort(),f({kind:"idle"})},[r,a]);const u=c.useRef(o);u.current=o;const b=c.useCallback(R=>async(E,A)=>{const{data:U}=await Mt({path:{mailboxId:e},query:{...R,continuationToken:E,limit:Jd},signal:A,throwOnError:!0});return{ids:(U.items??[]).map(F=>F.messageId),continuationToken:U.continuationToken}},[e]),m=c.useCallback(async R=>{const{data:E}=await Mt({path:{mailboxId:e},query:{...u.current,count:!0,results:!1},signal:R,throwOnError:!0});if(E.count===void 0)throw new Error("the search returned no count for the selection");return E.count},[e]),k=c.useCallback(R=>async(E,A)=>{if(R.kind==="move"){const{data:F}=await Xr({body:{messageIds:E,destinationMailboxId:R.destinationMailboxId},signal:A,throwOnError:!0});return F}if(R.kind==="markRead"){const{data:F}=await eo({body:{messageIds:E,isRead:!0},signal:A,throwOnError:!0});return F}const{data:U}=await so({body:{messageIds:E},signal:A,throwOnError:!0});return U},[]),C=c.useCallback(()=>{const R=new AbortController;y.current=R,f({kind:"counting"}),m(R.signal).then(E=>{if(R.signal.aborted){f({kind:"idle"});return}f({kind:"escalated",total:E})},E=>{if(R.signal.aborted){f({kind:"idle"});return}x(to("Couldn't count matching messages","The count didn't finish.",E)),f({kind:"idle"})})},[m,x]),w=c.useCallback(()=>{y.current?.abort(),d.current&&p(e)},[p,e]),M=c.useCallback(()=>{d.current||(y.current?.abort(),f({kind:"idle"}))},[]),N=c.useCallback(async(R,E,A)=>{const U=E?.length??(l.kind==="escalated"?l.total:0),F=E!==void 0?{kind:"targets",targets:E}:{kind:"predicate",fetchPage:b(u.current)},B=await j({action:R,mailboxId:e,mailboxLabel:s,accountId:n,matched:U,source:F,applyBatch:k(R),reportEnding:i,claimEnding:A});return B.kind==="ran"&&f({kind:"idle"}),B},[k,b,l,e,s,n,i,j]);return{phase:l,escalate:C,stop:w,clear:M,isRunning:h,runningAction:g?.action,progress:g?.progress,runAction:N}},Zd=120,Xd=({keyboardFocusedMessageId:e,openMessageId:s,enabled:n,open:r,delayMs:a=Zd})=>{const o=c.useRef(r);o.current=r;const i=c.useRef(void 0);c.useEffect(()=>{const l=e;if(!n){i.current=l;return}if(l===void 0||l===s)return;if(l===i.current){i.current=void 0;return}const f=setTimeout(()=>o.current(l),a);return()=>clearTimeout(f)},[n,e,s,a])},Pa="This account has no Junk folder appointed, so there is nowhere to file these. Appoint one under Settings › Folder roles.",eu="These are already in Junk, so there is nowhere to file them.",su=(e,s)=>e!==void 0&&e!==s?e:void 0,If=(e,s)=>{if(su(e,s)===void 0)return e===void 0?Pa:eu};function tu(e,s){if(e.length!==0)return s!==void 0&&e.includes(s)?s:e[0]}const nu={title:"",navSlot:null,titleMeta:null,searchSlot:null,searchField:null,searchResults:null,makeFilterSlot:null},nt=c.createContext(nu),au=()=>c.useContext(nt),ru=({isOpen:e,messageIds:s,outcome:n,accountId:r,trashFolderLabel:a,staleFolderLabel:o,guessedMailboxId:i,isDeleting:l=!1,onConfirm:f,onCancel:y})=>{const{Account:v}=Dn(),{requestAppointment:j}=Mn(),p=s.length,x=()=>f([...s]),g=no(p,n,{trashFolderLabel:a,staleFolderLabel:o});if(n==="noTrash"||n==="staleTrash"||n==="unconfirmed"){const h=n==="noTrash"?"none":n==="staleTrash"?"stale":"unconfirmed";return t.jsx(gs,{isOpen:e,...g,onConfirm:()=>{if(!r)return x();const d=[...s];y(),j({accountId:r,role:"Trash",reason:h,action:{kind:"delete",count:p},staleFolderLabel:o,trashFolderLabel:a,guessedMailboxId:i,onAppointed:async()=>f(d)})},onCancel:y})}return n==="unavailable"?t.jsx(v,{fallback:t.jsx(gs,{isOpen:e,...g,confirmLabel:"Reload reader",onConfirm:()=>window.location.reload(),onCancel:y}),children:({signOut:h})=>t.jsx(gs,{isOpen:e,...g,onConfirm:()=>h(),onCancel:y})}):t.jsx(gs,{isOpen:e,...g,destructive:!0,isBusy:l||n==="unknown",onConfirm:x,onCancel:y})},_a=8,Ba=e=>e==="From"||e==="FromDomain",ou=e=>({value:e.email,label:e.displayName??e.email,...e.displayName?{hint:e.email}:{},...e.fromSelection?{source:"selected"}:{}}),iu=e=>{const s=ja(e.email);if(s!==null)return{value:s,...e.fromSelection?{source:"selected"}:{}}},lu=(e,s)=>e.value.toLowerCase().includes(s)||(e.label??"").toLowerCase().includes(s),cu=(e,s,n)=>{if(!Ba(e))return[];const r=s.trim().toLowerCase(),a=new Set,o=[];for(const i of n){if(i.email.trim()==="")continue;const l=e==="From"?ou(i):iu(i);if(!l)continue;const f=l.value.toLowerCase();if(!(f===""||a.has(f))&&(a.add(f),f!==r&&!(r!==""&&!lu(l,r))&&(o.push(l),o.length===_a)))break}return o},du=250,uu=2,mu=(e,s,n)=>{const r=s.trim(),a=ea(r,du),o=e!==void 0&&Ba(e),{data:i}=te({...dt({query:{q:a,limit:_a}}),enabled:o&&a.length>=uu});if(!o||e===void 0)return[];const l=[...n.map(f=>({email:f,fromSelection:!0})),...(i?.items??[]).map(f=>({email:f.normalizedEmail,...f.displayName?{displayName:f.displayName}:{}}))];return cu(e,r,l)},Ua=12,fu=e=>{const{envelope:s}=e,n=s.from[0];return{id:s.messageId,sender:n?ka({normalizedEmail:n.normalizedEmail,displayName:n.displayName}):"Unknown",subject:s.subject??"(No subject)",date:Fs(s.date)}},hu=(e,s)=>{const n=e!==void 0&&s!==void 0,{data:r,isLoading:a}=te({...ao({path:{mailboxId:e??""},query:{...s,limit:Ua}}),enabled:n,staleTime:3e4});return{messages:(r?.items??[]).map(pu),isPending:n&&a}},pu=e=>({id:e.messageId,sender:e.fromName||e.fromEmail||"Unknown",subject:e.subject??"(No subject)",date:Fs(e.sentDate)}),gu=e=>ut({queries:e.slice(0,Ua).map(s=>({...As({path:{messageId:s}}),staleTime:Number.POSITIVE_INFINITY})),combine:s=>({messages:s.map(n=>n.data).filter(n=>n!==void 0).map(fu),isPending:s.some(n=>n.isPending)})}),xu=()=>[ro({path:{mailboxId:""}}),oo({path:{mailboxId:""}}),io()].map(e=>[{_id:e[0]._id}]),bu=e=>lo(e)?e.pages:co(e)?[e]:[],vu=e=>typeof e=="object"&&e!==null&&typeof e.messageId=="string",yu=(e,s)=>{const n=new Set(s),r=new Map;for(const a of e)for(const o of bu(a))for(const i of o.items){if(!vu(i)||!n.has(i.messageId))continue;const l=i.subject?.trim();l&&r.set(i.messageId,l)}return s.map(a=>r.get(a)).filter(a=>a!==void 0)},ju=e=>{const s=ue(),n=e.join("\0");return c.useMemo(()=>{const r=xu().flatMap(a=>s.getQueriesData({queryKey:a}).map(([,o])=>o));return yu(r,e)},[s,n])},ku=new Set(["hasAttachment","isUnread","isRead","isStarred","category","before","after"]),Cu=e=>ku.has(e),wu=e=>{const s=[],n=[];let r,a;for(const l of e.tokens){if(l.type==="from"){s.push({field:"From",value:l.value});continue}if(l.type==="subject"){s.push({field:"Subject",value:l.value});continue}if(l.type==="in"){r={mailboxId:l.mailboxId,label:l.value};continue}if(l.type==="account"){a=l.accountId;continue}Cu(l.type)&&n.push({type:l.type,label:Wn(l)})}const o=e.freeText.trim(),i=o.length>0;return i&&s.push({field:"HasWords",value:o}),{clauses:s,matchOperator:"all",scopedOut:r,droppedFacets:n,targetAccountId:a,keptTerms:i}},Nu=(e,s,n)=>e.targetAccountId??s??n[0]?.accountId,at=c.createContext(void 0),Su=()=>c.useContext(at),dn={matched:0,applied:0,failed:0,failedIds:[]},Iu=({matched:e,outcome:s,failureReason:n,progressDone:r})=>{if(n!==void 0)return{...dn,state:"commitFailed",failureReason:n};if(!s)return{state:"backApplyRunning",matched:Math.max(e,r),applied:r,failed:0,failedIds:[]};if(!s.cancelled&&s.error===void 0)return{state:"backApplyComplete",matched:Math.max(e,s.done),applied:s.done,failed:0,failedIds:[]};if(!s.cancelled&&s.done===0)return{...dn,state:"commitFailed"};const a=s.failedIds.length>0?s.failedIds.length:Math.max(e-s.done,1);return{state:"runStopped",matched:Math.max(e,s.done),applied:s.done,failed:a,failedIds:s.failedIds}},Ru=({failure:e,isStarting:s,isRunning:n,isDone:r,failedCount:a,ruleSaved:o})=>e?.kind==="restartFailed"?"backApplyRestartFailed":e?.kind==="startFailed"?o?"backApplyStartFailed":"commitFailed":r?a>0?"backApplyFailed":"backApplyComplete":e?.kind==="statusUnreadable"?"statusUnknown":s||n?"backApplyRunning":"saving",Mu=e=>{if(e.runState==="statusUnknown")return{kind:"refreshStatus"};if(e.isEscalated)return{kind:"rerunEscalated"};if(e.committedScope==="standing"||e.committedScope==="temporary")return e.createFilterFailed?{kind:"resetAndResend"}:e.backApplyPending?{kind:"startBackApply"}:{kind:"waitOnJob"};if(e.committedScope==="all-like-these"&&e.widenRunsAsJob)return{kind:"resend"};const s=new Set(e.failedIds);return{kind:"rerunBulk",targets:s.size>0?e.sent.filter(n=>s.has(n.id)):e.sent}},Tu=e=>e!==void 0&&e.outcome===void 0&&e.failureReason===void 0,Au=(e,s)=>{if(e){e.stop();return}s()},Eu=(e,s)=>e==="run"?s.dismiss:s.cancel,Fu={clauses:[],matchOperator:"any"},Du={clauses:[],matchOperator:"all",droppedFacets:[],keptTerms:!1},Lu=[],Ou=(e,s,n)=>({verb:"organize",accountId:Nu(e,s.accountId,n),selection:Lu,selectionRestriction:void 0,escalated:void 0,searchConversion:e}),ys={state:"saving",matched:0,applied:0,failed:0,failures:[]},un=(e,s)=>e.map((n,r)=>({...n,id:`${s}-${r}`})),mn=(e,s,n)=>{if(e==="delete")return{kind:"delete"};if(e==="markRead")return{kind:"markRead"};const r=e==="junk"?n:s;return r?{kind:"move",destinationMailboxId:r}:void 0},Js=e=>e==="move"||e==="junk"||e==="organize",fn=e=>e==="junk"?Pa:"No destination was chosen, so there is nowhere to file these. Go back and pick a folder.";function zu({verb:e,accountId:s,mailboxId:n,mailboxLabel:r,selection:a,selectionRestriction:o,escalated:i,escalatedProgress:l,searchConversion:f,onFinished:y,onRunEnded:v,step:j,goToStep:p,goBack:x,closeWizard:g}){const[h]=c.useState(()=>f),[d]=c.useState(()=>i),u=h!==void 0,[b,m]=c.useState(u?"properties":"selected"),k=d?"escalated":b,[C,w]=c.useState(()=>h?{clauses:un(h.clauses,"search"),matchOperator:h.matchOperator}:Fu),[M,N]=c.useState(void 0),[R,E]=c.useState(void 0),[A,U]=c.useState(void 0),[F,B]=c.useState(void 0),q=c.useRef(!1),Q=c.useMemo(()=>a.map(S=>S.id),[a]),D=c.useMemo(()=>a.map(S=>({id:S.id,accountId:S.accountId})),[a]),z=c.useMemo(()=>a.map(S=>S.email).filter(Boolean),[a]),P=ju(Q),{junkMailboxId:_}=Sa(s),{inboxMailboxId:Y}=Na(s),H=c.useMemo(()=>Y?a.filter(S=>S.mailboxId!==void 0&&S.mailboxId!==Y).map(S=>({id:S.id,accountId:S.accountId})):[],[a,Y]),G=k==="properties",me=c.useMemo(()=>({matchOperator:C.matchOperator==="all"?"And":"Or",literalClauses:C.clauses.map(S=>({field:S.field,value:S.value}))}),[C.clauses,C.matchOperator]),{count:pe,matchedIds:ae}=Bi(G?s:void 0,me),se=gu(G?ae:[]),X=hu(d?n:void 0,d?.searchQuery),re=d?{status:"ready",count:d.total}:G?pe:{status:"ready",count:a.length},{data:ee}=te({...ns({path:{accountId:s??""}}),enabled:!!s,staleTime:Number.POSITIVE_INFINITY}),le=Ia(s),ce=Tn(),K=c.useMemo(()=>En({mailboxes:ee?.items??[],folderAppointments:le,currentMailboxId:n,translator:ce}),[ee?.items,le,n,ce]),{createFolderIn:I}=An(s),O=K.find(S=>S.id===C.moveMailboxId)?.label,J=Rc(a.map(S=>({normalizedEmail:S.email,displayName:S.sender}))),fe=Oc({match:k==="properties"&&C.clauses[0]?.value.trim()||void 0,sender:J?ka(J):void 0,folder:O}),W=c.useMemo(()=>({...C,name:C.name??fe}),[C,fe]),Ke=mu(M?.draft.field,M?.draft.value??"",z),Re=c.useRef(void 0),Me=c.useCallback(S=>{Re.current?.(),Re.current=S},[]);c.useEffect(()=>()=>{Re.current?.(),Re.current=void 0},[]);const de=Ui(s),he=$i(s),Te=Yd({mailboxId:n??"",mailboxLabel:r,accountId:s,enabled:!1,predicateKey:"selection-wizard",searchQuery:{},reportEnding:v}),{runAction:Le}=Te,oe=fo({verb:e,mode:k,scope:C.scope,fromSearch:u}),Z=oe[Tt(oe,j)],Ae=ho(s,o),Ee=po(k,Ae),je=(S=>{if(S==="folder")return Ae.destination;if(S==="rule")return W.scope==="standing"||W.scope==="until"?Ee:void 0})(Z)??go(Z,W,re),qe=c.useCallback(()=>un(Lc(z,P),"seed"),[z,P]),ms=c.useCallback(S=>{m(S),w(L=>S==="properties"&&L.clauses.length===0?{...L,clauses:qe()}:L)},[qe]),fs=c.useCallback(()=>{N({mode:"add",draft:{field:"From",value:""}})},[]),Oe=c.useCallback(S=>{const L=C.clauses.find(V=>V.id===S);L&&N({mode:"edit",clauseId:S,draft:{field:L.field,value:L.value}})},[C.clauses]),Bs=c.useCallback(S=>{w(L=>({...L,clauses:L.clauses.filter(V=>V.id!==S)}))},[]),hs=c.useCallback(S=>{N(L=>L&&{...L,draft:S})},[]),Qe=c.useCallback(()=>{N(S=>{if(!S)return;const L=Ki(S.draft.field,S.draft.value),V={...S.draft,value:L};w(We=>({...We,clauses:S.clauseId?We.clauses.map(Qs=>Qs.id===S.clauseId?{...Qs,...V}:Qs):[...We.clauses,{id:crypto.randomUUID(),...V}]}))})},[]),He=c.useCallback(()=>{if(je){E(Z);return}E(void 0);const S=oe[Tt(oe,Z)+1];S&&p(S)},[je,Z,oe,p]),ve=c.useCallback(async S=>{const L=mn(e,W.moveMailboxId,_);if(!L){B({matched:S.length,sent:S,failureReason:fn(e)});return}B({matched:S.length,sent:S});const V=await Le(L,S,Me);B({matched:S.length,sent:S,outcome:V.kind==="ran"?V.outcome:void 0,failureReason:V.kind==="refused"?V.reason:void 0})},[e,W.moveMailboxId,_,Le,Me]),ne=c.useCallback(async()=>{if(!d)return;const S=mn(e,W.moveMailboxId,_);if(!S){B({matched:d.total,sent:[],failureReason:fn(e)});return}B({matched:d.total,sent:[]});const L=await d.run(S,Me);B({matched:d.total,sent:[],outcome:L.kind==="ran"?L.outcome:void 0,failureReason:L.kind==="refused"?L.reason:void 0})},[d,e,W.moveMailboxId,_,Me]),{start:ge,watch:jt}=de,{createFilterAsync:kt}=he,ps=c.useCallback(()=>{if(d){ne();return}const S=qi({mode:b,ruleScope:W.scope}),L=Qi({ruleScope:W.scope,clauses:W.clauses,matchOperator:W.matchOperator,moveMailboxId:W.moveMailboxId,until:W.until});if(U(S),S==="standing"||S==="temporary"){kt(L,S,(W.name??"").trim()).then(V=>{V&&(jt(V.organizeJobId),H.length>0&&ve(H))});return}if(S==="all-like-these"&&Js(e)){ge(L);return}ve(S==="just-these"?D:ae.map(V=>({id:V,accountId:s})))},[d,ne,b,W,e,s,D,ae,kt,jt,H,ge,ve]),Wa=c.useCallback(()=>{if(je){E(Z);return}q.current||(q.current=!0,p("run"),ps())},[je,Z,p,ps]),Ct=c.useCallback(S=>{const L=de.progress,V=Ru({failure:de.failure,isStarting:de.isStarting,isRunning:de.isRunning,isDone:de.isDone,failedCount:L.failedCount,ruleSaved:S});return V==="saving"||V==="commitFailed"||V==="backApplyStartFailed"?{...ys,state:V}:{state:V,matched:L.matchedCount,applied:L.appliedCount,failed:V==="backApplyFailed"||V==="backApplyRestartFailed"?L.failedCount:0,failures:[]}},[de]),wt=c.useMemo(()=>{const S=new Map;for(const L of[...a,...se.messages,...X.messages])S.set(L.id,L);return S},[a,se.messages,X.messages]),Nt=d?l:Te.progress,Us=c.useCallback(()=>{if(!F)return ys;const S=Iu({matched:F.matched,outcome:F.outcome,failureReason:F.failureReason,progressDone:Nt?.done??0});return{state:S.state,matched:S.matched,applied:S.applied,failed:S.failed,failures:S.failedIds.map(L=>wt.get(L)).filter(L=>L!==void 0),failureReason:S.failureReason}},[F,Nt,wt]),$s=he.data,St=F!==void 0&&(F.failureReason!==void 0||(F.outcome?.failedIds.length??0)>0),Fe=d?Us():A==="standing"||A==="temporary"?he.isError?{...ys,state:"commitFailed"}:he.isSuccess?St?Us():Ct(!0):ys:A==="all-like-these"&&Js(e)?Ct(!1):Us(),Ga=()=>{if((A==="standing"||A==="temporary")&&St&&F){const V=new Set(F.outcome?.failedIds??[]);ve(V.size>0?F.sent.filter(We=>V.has(We.id)):F.sent);return}const L=Mu({runState:Fe.state,isEscalated:d!==void 0,committedScope:A,createFilterFailed:he.isError,backApplyPending:$s!==void 0,widenRunsAsJob:Js(e),failedIds:F?.outcome?.failedIds??[],sent:F?.sent??D});switch(L.kind){case"refreshStatus":de.refreshStatus();return;case"rerunEscalated":ne();return;case"resetAndResend":he.reset(),ps();return;case"resend":ps();return;case"startBackApply":$s&&de.startForFilter($s.filterId);return;case"waitOnJob":return;case"rerunBulk":ve(L.targets);return}},Va=c.useCallback(()=>{g(oe,Z)},[g,oe,Z]),Ks=c.useCallback(()=>{g(oe,Z),y()},[g,oe,Z,y]),{stop:It}=Te,Ja=c.useCallback(()=>{Au(d,It)},[d,It]);Uc({shouldBlockFn:({action:S})=>S!=="BACK"?!1:(Ks(),!0),enableBeforeUnload:!1,disabled:Z!=="run"});const qs={messages:d?X.messages:G?se.messages:a,count:re,label:k==="selected"?"Your selection":"A sample of what matches",loading:d?X.isPending:G&&(re.status==="loading"||se.isPending)};return t.jsx(xo,{verb:e,steps:oe,step:Z,blockedReason:je,nudged:R===Z,onBack:x,onExit:Eu(Z,{dismiss:Ks,cancel:Va}),onContinue:He,onCommit:Wa,match:{selectedCount:a.length,mode:k,accountId:Ae.accountId,onModeChange:ms,escalatedScope:d?.scope,sample:qs},properties:{clauses:W.clauses,matchOperator:W.matchOperator,onMatchOperatorChange:S=>w(L=>({...L,matchOperator:S})),clauseEdit:M,onStartAddClause:fs,onStartEditClause:Oe,onRemoveClause:Bs,onChangeDraft:hs,onSubmitClause:Qe,onCancelClause:()=>N(void 0),clauseFields:Hi,clauseSuggestions:Ke,conversionNotice:h?Pc(h):void 0,sample:{...qs,label:"What this matches"}},folder:{folders:K,mailboxId:W.moveMailboxId,delimiter:Fn(ee?.items??[]),onSelect:S=>w(L=>({...L,moveMailboxId:S})),onCreateFolder:s?I:void 0,restriction:Ae.destination},rule:{draft:W,onScopeChange:S=>w(L=>({...L,scope:S})),onUntilChange:S=>w(L=>({...L,until:S})),restriction:Ee},name:{name:W.name??"",onNameChange:S=>w(L=>({...L,name:S})),nudged:R===Z},review:{verb:e,mode:k,selectedCount:a.length,clauses:W.clauses,matchOperator:W.matchOperator,folder:O,scope:W.scope,until:W.until,ruleName:oe.includes("name")?W.name:void 0,escalatedScope:d?.scope,sample:qs},run:{state:Fe.state,verb:e,scope:W.scope,matched:Fe.matched,applied:Fe.applied,failedCount:Fe.failed,failures:Fe.failures,failureReason:Fe.failureReason,onRetry:Ga,onDismiss:Ks,onCancelRun:Tu(F)?Ja:void 0}})}function Rf(e){const s=uo()==="search",n=Su(),{accounts:r}=cs(),{step:a,goToStep:o,goBack:i,closeWizard:l}=mo(s?"properties":"match");if(Ms({id:"selection-wizard",open:a!==void 0}),!a)return null;const f=s?n??Du:void 0;return t.jsx(zu,{...e,...f?Ou(f,e,r):{},step:a,goToStep:o,goBack:i,closeWizard:l})}const Pu=[],vt=c.createContext(null),_u=e=>{const s=c.useContext(vt);return s?s.rowInteraction(e):null},Bu=()=>{const e=c.useContext(vt);if(!e)throw new Error("useThreadListSelection must be used inside <ThreadListInteraction>");return e},Uu="[data-message-id]",$u=e=>Array.from(e.querySelectorAll(Uu)).map(s=>s.dataset.messageId).filter(s=>s!==void 0),Ku=(e,s)=>e.length===s.length&&e.every((n,r)=>n===s[r]),qu=e=>{const[s,n]=c.useState([]);return c.useEffect(()=>{const r=e.current;if(!r)return;const a=()=>{const i=$u(r);n(l=>Ku(l,i)?l:i)};a();const o=new MutationObserver(a);return o.observe(r,{childList:!0,subtree:!0}),()=>o.disconnect()},[e]),s};function Mf({selectedMessageId:e,rows:s,onOpen:n,onDeleteMessages:r,onSelectionVerb:a,isDeleting:o=!1,commandsRef:i,onTriageContextChange:l,children:f}){const y=ct(),{pushError:v}=be(),j=c.useRef(null),p=qu(j),x=_c({orderedIds:p,isDesktop:y,initialFocusedId:e}),{focusedMessageId:g,setFocusedMessageId:h,pendingDomFocusRef:d,cursorMovedByPointerRef:u,selection:b,isMultiSelectMode:m,exitSelection:k,handleRowSelect:C}=x,{selectedIds:w,selectedCount:M,isSelected:N,toggle:R,select:E,toggleAll:A}=b,U=p.length>0&&p.every(K=>w.has(K)),F=c.useCallback(()=>{p.length>0&&A(p)},[p,A]),{intersectWith:B}=b;c.useEffect(()=>{B(p)},[B,p]),c.useEffect(()=>{const K=d.current;K!==null&&(d.current=null,j.current?.querySelector(`[data-message-id="${K}"]`)?.focus())});const q=c.useCallback(K=>{u.current=!0,h(K)},[u,h]),Q=c.useCallback(K=>{y||E(K)},[y,E]),D=c.useCallback(()=>{g&&n(g)},[g,n]),z=c.useCallback(K=>n(K,{replace:!0}),[n]);Xd({keyboardFocusedMessageId:x.keyboardFocusedMessageId,openMessageId:e,enabled:y&&M===0,open:z});const[P,_]=c.useState(null),{outcome:Y,staleFolderLabel:H,guessedMailboxId:G}=Vd(P?.targets??Pu),me=c.useCallback(K=>{if(P!==null)return!0;if(M>0)return a(K),!0;if(K!=="delete"||!g)return!1;const I=s.find(O=>O.id===g);return!I?.mailboxId||!I.accountId?(v({title:"Couldn't delete this message",detail:"This list has lost track of which account and folder it is in, so reader can't tell whether deleting it would move it to Trash or erase it. Nothing was deleted.",action:{label:"Reload the list",href:window.location.href}}),!0):(_({ids:[g],targets:[{accountId:I.accountId,mailboxId:I.mailboxId}]}),!0)},[P,M,a,g,s,v]),pe=c.useCallback(K=>{K.length!==0&&(r(K),_(null),k())},[r,k]),ae=c.useCallback(()=>_(null),[]),se=c.useCallback(()=>M===0?!1:(k(),!0),[M,k]),X=p.length>0;c.useEffect(()=>{if(i){if(!X){i.current=null;return}return i.current={focusNext:x.focusNext,focusPrevious:x.focusPrevious,focusFirst:x.focusFirst,focusLast:x.focusLast,openFocused:D,toggleSelect:x.toggleFocusedSelection,extendSelectDown:x.extendRangeDown,extendSelectUp:x.extendRangeUp,selectAll:x.selectAllLoaded,clearSelection:se,requestVerb:me,toggleDensity:()=>{}},()=>{i.current=null}}},[i,X,x.focusNext,x.focusPrevious,x.focusFirst,x.focusLast,x.toggleFocusedSelection,x.extendRangeDown,x.extendRangeUp,x.selectAllLoaded,D,se,me]);const re=c.useMemo(()=>Array.from(w),[w]),ee=P!==null;c.useEffect(()=>{l?.({focusedMessageId:g,selectedIds:re,orderedIds:p,hasList:X})},[l,g,re,p,X]);const le=tu(p,g),ce=c.useMemo(()=>({selectedIds:w,selectedCount:M,exitSelection:k,startSelectionVerb:a,orderedIds:p,allSelected:U,toggleAllLoaded:F,rowInteraction:K=>({focused:K===g,isTabStop:K===le,isDesktop:y,onFocusRow:q,selection:{isChecked:N(K),onToggleCheck:R,onRowSelect:C,isMultiSelectMode:m,onLongPress:Q}})}),[w,M,k,a,p,U,F,g,le,y,q,N,R,C,m,Q]);return t.jsxs(vt.Provider,{value:ce,children:[t.jsx("div",{ref:j,className:"contents",children:f}),t.jsx(ru,{isOpen:ee,messageIds:P?.ids??[],outcome:Y,accountId:P?.targets[0]?.accountId,staleFolderLabel:H,guessedMailboxId:G,isDeleting:o,onConfirm:pe,onCancel:ae})]})}function Tf({title:e,isDeleting:s}){const n=au(),{selectedCount:r,exitSelection:a,startSelectionVerb:o,orderedIds:i,allSelected:l,toggleAllLoaded:f}=Bu();return t.jsx(cc,{title:n.title||e,navSlot:n.navSlot,titleMeta:n.titleMeta,searchSlot:n.searchSlot,searchField:n.searchField,idleSlot:n.makeFilterSlot,count:r,onCancel:a,onDelete:()=>o("delete"),onMarkRead:()=>o("markRead"),isBusy:s,selectAll:i.length>0?{checked:l,indeterminate:r>0&&!l,onChange:f}:void 0})}const Ys=e=>{e.preventDefault(),e.stopPropagation()},Qu=(e,s)=>{const n=c.useRef(!1),r=c.useCallback(i=>{if(n.current=!1,i.button!==0)return;const l=st(i);$t(l)&&s?.(e,l)&&(Ys(i),n.current=!0,i.currentTarget.focus(),l.shiftKey&&window.getSelection()?.removeAllRanges())},[s,e]),a=c.useCallback(i=>{!i.ctrlKey||!s||i.preventDefault()},[s]),o=c.useCallback(i=>{if(n.current)return n.current=!1,Ys(i),!0;const l=st(i);return!$t(l)||!s?.(e,l)?!1:(Ys(i),l.shiftKey&&window.getSelection()?.removeAllRanges(),!0)},[s,e]);return{onMouseDown:r,onContextMenu:a,claimClick:o}},Hu=({thread:e,active:s=!1,focused:n,isTabStop:r,density:a="comfortable",isDesktop:o,badge:i,selection:l,inListbox:f=!1,link:y,onClick:v,onFocusRow:j})=>{const p=ue(),x=e.id,g=_u(x),h=n??g?.focused??!1,d=r??g?.isTabStop??!1,u=l??g?.selection,b=j??g?.onFocusRow,m=o??g?.isDesktop??!0,k=u?.isChecked??!1,C=u?.isMultiSelectMode??!1,w=u?.onToggleCheck,M=u?.onRowSelect,N=u?.onLongPress,R=c.useCallback(P=>{P.preventDefault(),P.stopPropagation(),w?.(x)},[w,x]),E=Qu(x,M),A=c.useCallback(P=>{if(!E.claimClick(P)){if(!m){if(C){P.preventDefault(),P.stopPropagation(),w?.(x);return}v?.();return}M?.(x,st(P)),v?.()}},[E,m,C,w,M,v,x]),U=c.useCallback(()=>{N?.(x)},[N,x]),{longPressProps:F}=Yl({onLongPress:U,accessibilityDescription:k?"Deselect message":"Select message"}),B=c.useCallback(()=>{p.prefetchQuery(As({path:{messageId:x}}))},[p,x]),q=c.useCallback(()=>{B(),b?.(x)},[B,b,x]),Q=sa({"data-list-row":"","data-message-row":!0,"data-message-id":x,...f?{role:"option","aria-selected":k}:{},tabIndex:d?0:-1,onClick:A,onMouseDown:E.onMouseDown,onContextMenu:E.onContextMenu,onMouseEnter:B,onFocus:q},m||!u?{}:F),D=T(a==="compact"?la({active:s,focused:h}):T("group",ht({active:s,focused:h})),"outline-none focus-visible:ring-2 focus-visible:ring-accent focus-visible:ring-inset",k&&"bg-accent-soft",!m&&"min-h-11 select-none [-webkit-touch-callout:none]"),z=a==="compact"?t.jsx(ca,{thread:e}):t.jsx(pt,{thread:e,badge:i,selection:u?{checked:k,alwaysVisible:C,onToggle:R}:void 0});return y===void 0?t.jsx("button",{type:"button",...Q,className:D,children:z}):t.jsx(bo,{to:"/mail/$mailboxId/$threadId/$messageId",params:{...y,messageId:x},search:P=>P,variant:"row",...Q,className:D,children:z})},Af=c.memo(Hu),Wu="Open a message first",Gu="This conversation hasn't loaded yet",Vu="The mailbox list hasn't loaded yet",Ju="Couldn't find this mailbox's account — reload to try again",Yu={reply:"Reply",replyAll:"Reply all",forward:"Forward",delete:"Move to Trash",move:"Move to mailbox",flag:"Star"},Ef=({hasThread:e,messageId:s,intelligenceOpen:n,canToggleIntelligence:r,onToggleIntelligence:a,onReply:o,onReplyAll:i,onForward:l,onDelete:f,onToggleStar:y,isStarred:v,moveContext:j,moveContextLoading:p})=>{const[x,g]=c.useState(null),h=s??null,d=N=>e?N==="move"?j?null:p?Vu:Ju:{reply:o,replyAll:i,forward:l,delete:f,flag:y}[N]?null:Gu:Wu,u=x&&x.messageId===h?x:null,b=u?d(u.action):null,m=u?.action==="move"&&u.overThread&&!!j,k=b??(u&&!m?`${Yu[u.action]} is ready — press it again`:null),C=N=>g({action:N,messageId:h,overThread:e}),w=N=>()=>C(N),M=(N,R)=>R?()=>{g(null),R()}:w(N);return t.jsx(Fl,{hasThread:e,isStarred:v,onUnavailable:C,unavailableHint:k,replyTitle:`Reply ${Ge("reply")}`,replyAllTitle:`Reply all ${Ge("replyAll")}`,forwardTitle:`Forward ${Ge("forward")}`,deleteTitle:`Move to Trash ${Ge("delete")}`,flagTitle:`Star ${Ge("toggleStar")}`,onReply:M("reply",o),onReplyAll:M("replyAll",i),onForward:M("forward",l),onDelete:M("delete",f),onToggleStar:M("flag",y),onMove:w("move"),moveSlot:j?t.jsx(Ps,{accountId:j.accountId,currentMailboxId:j.currentMailboxId,onMove:j.onMove,label:"Move to mailbox",defaultOpen:m}):void 0,children:t.jsx(Al,{open:n,enabled:r,onToggle:a})})};function Zu(e){const[s,n]=c.useState(null);s!==null&&s!==e&&n(null);const r=e!==null&&s===e,a=c.useCallback(()=>n(null),[]),o=c.useCallback(()=>n(e),[e]),i=c.useCallback(()=>n(r?null:e),[r,e]);return{isOpen:r,open:o,close:a,toggle:i}}const Ff=e=>{const{intelligenceOpen:s,onToggleIntelligence:n,onRaiseIntelligence:r}=cs(),a=_n()?.showIntelligencePane??!1,o=e??null,i=Zu(o),l=!a&&i.isOpen,{open:f,toggle:y}=i,v=c.useCallback(()=>{if(a){n();return}y()},[a,n,y]),j=c.useCallback(()=>{!a||s||r()},[a,s,r]),p=c.useCallback(()=>{if(!a){f();return}j()},[a,f,j]);return{canToggle:o!==null,isShowing:o!==null&&(a?s:l),toggle:v,open:p,drawerOpen:l,closeDrawer:i.close,railFits:a,openRail:j}},Df=(e,{toggle:s,open:n})=>{c.useEffect(()=>(e.current={toggle:s,open:n},()=>{e.current=null}),[e,s,n])},Xu=()=>{const e=ue();return c.useCallback(s=>{const n=Ie({path:{threadId:s.threadId}}),a=e.getQueriesData({queryKey:n}).flatMap(([,o])=>o?.items.map(i=>i.messageId)??[]);return a.length>0?a:[s.messageId]},[e])},em=[],$a=e=>{const{data:s}=te({...On({path:{threadId:e??""}}),enabled:!!e});return s?.items??em},Lf=(e,s)=>{const n=$a(e),r=s?n.find(o=>o.messageId===s):void 0,a=n.length>0?n[n.length-1]:void 0;return r??a},Of=({thread:e,isOpen:s=!1,mailboxId:n,accountId:r,onAfterOptimisticRemove:a})=>{const o=n??e?.mailboxId,i=r??e?.accountId,{accountId:l}=Os(i?void 0:o),f=i??l,y=Xu(),{deleteMessages:v}=zs({mailboxId:o??"",threadId:e?.threadId,accountId:f,onAfterOptimisticRemove:a}),{moveMessages:j}=us({mailboxId:o??"",threadId:e?.threadId,accountId:f,onAfterOptimisticRemove:a}),p=$a(s?e?.threadId:void 0),g=p.find(m=>m.messageId===e?.messageId)?.hasStars??e?.hasStars,{toggleStar:h}=Ca({threadId:e?.threadId??"",mailboxId:o??"",messages:p}),d=c.useCallback(()=>{e&&v(y(e))},[e,y,v]),u=c.useCallback(m=>{e&&j(y(e),m)},[e,y,j]),b=c.useCallback(()=>{e&&h(e.messageId,g??!1)},[e,g,h]);return{mailboxId:o,accountId:f,isStarred:g,deleteThread:d,moveThread:u,toggleStar:b}},hn=(e,s,n)=>{if(!s)return null;const r=e.indexOf(s);if(r===-1)return null;const a=n==="next"?r+1:r-1;return a<0||a>=e.length?null:e[a]},zf=()=>{const[e,s]=c.useState(void 0),[n,r]=c.useState([]),[a,o]=c.useState([]),i=c.useRef(null),[l,f]=c.useState(!1),y=c.useCallback(v=>{s(v.focusedMessageId),r(v.selectedIds),v.orderedIds&&o(v.orderedIds),f(v.hasList)},[]);return{listCommandsRef:i,onTriageContextChange:y,focusedMessageId:e,selectedIds:n,orderedIds:a,hasList:l}},Pf=({context:e,orderedIds:s,selectedMessageId:n,enabled:r=!0,onClose:a,handlers:o,hasOpenThread:i=!1})=>{const{listCommandsRef:l,hasList:f}=e,y=c.useCallback(()=>{l.current?.clearSelection()||n&&a()},[l,n,a]),{reply:v,replyAll:j,forward:p,...x}=o;return Fo({enabled:r,handlers:{...f?{focusNext:()=>l.current?.focusNext(),focusPrevious:()=>l.current?.focusPrevious(),focusFirst:()=>l.current?.focusFirst(),focusLast:()=>l.current?.focusLast(),openFocused:()=>l.current?.openFocused(),toggleSelect:()=>l.current?.toggleSelect(),extendSelectDown:()=>l.current?.extendSelectDown(),extendSelectUp:()=>l.current?.extendSelectUp(),selectAll:()=>l.current?.selectAll(),toggleDensity:()=>l.current?.toggleDensity()}:{},back:y,...x,...i?{}:{reply:v,replyAll:j,forward:p}}}),{goBack:y,nextMessageId:hn(s,n,"next")??void 0,previousMessageId:hn(s,n,"previous")??void 0}},sm={unread:"unread",flagged:"starred",attachment:"attachments"},tm=new Set(Object.values(vo)),Ka=e=>tm.has(e),_f=e=>Ka(e.category)||e.attributes.size>0,Bf=e=>{const s={};Ka(e.category)&&(s.category=[e.category]);for(const n of e.attributes){const r=sm[n];r&&(s[r]=!0)}return s},Uf=e=>(e.senderTrust?.length??0)>0||e.dkimMismatch!==void 0?"loaded-pages":"whole-folder",nm=["category","unread","starred","attachments","accountId","muted"],pn=e=>JSON.stringify(nm.map(s=>e?.[s]??null)),am=e=>{if(!Array.isArray(e))return;const[s]=e;if(typeof s!="object"||s===null)return;const n=s.query;if(!(typeof n!="object"||n===null))return n},$f=(e,s)=>{const n=am(e);return n?pn(n)===pn(s):!1},Kf=e=>Pn(e)?Ts[e]:void 0;function qf(e,s){const{folder:n}=Bn(s,[e.mailboxId]);return{id:e.messageId,sender:e.fromName??e.fromEmail??"Unknown",...e.fromEmail?{senderEmail:e.fromEmail}:{},subject:e.subject??"(No subject)",snippet:e.snippet??"",date:Fs(e.sentDate),unread:!e.isRead,flagged:e.hasStars===!0,threadId:e.threadId,mailboxId:e.mailboxId,...n?{folder:n}:{}}}function Qf(e,s){const{folder:n}=Bn(s,e.mailboxId?[e.mailboxId]:[]);return{id:e.id,sender:e.fromName,...e.fromEmail?{senderEmail:e.fromEmail}:{},subject:e.subject,snippet:e.snippet,date:e.timeLabel,unread:!e.isRead,flagged:e.starred===!0,...e.threadId?{threadId:e.threadId}:{},...e.mailboxId?{mailboxId:e.mailboxId}:{},...n?{folder:n}:{}}}function rm(e){const s=e.authenticity?.dkimMismatch===!0;return{id:e.messageId,accountId:e.accountId,mailboxId:e.mailboxId,threadId:e.threadId,fromName:e.fromName??e.fromEmail??"Unknown",fromEmail:e.fromEmail??"",subject:e.subject??"(No subject)",snippet:e.snippet??"",timeLabel:Fs(e.sentDate),sentDate:e.sentDate,isRead:e.isRead,hasAttachment:e.hasAttachment,starred:e.hasStars===!0,trust:e.senderTrust,category:wa(e.category),suspicious:s,...yd(e)}}const om=yo;function Hf(e){const s=new Map(e.map(r=>[r.category,r])),n=[];for(const r of om){const a=s.get(r);!a||!(a.loading||a.failed||a.rows.length>0||a.total.kind==="exact"&&a.total.value>0)||n.push({id:r,label:Ts[r],threads:a.rows,total:a.total,atCap:a.atCap,loading:a.loading,error:a.failed})}return n}function im(e,s){return s.every(n=>{switch(n.type){case"from":{const r=n.value.toLowerCase();return e.fromEmail.toLowerCase().includes(r)||e.fromName.toLowerCase().includes(r)}case"subject":return e.subject.toLowerCase().includes(n.value.toLowerCase());case"category":return(e.category??"uncategorized")===n.category;case"hasAttachment":return e.hasAttachment===!0;case"isUnread":return!e.isRead;case"isRead":return e.isRead===!0;case"isStarred":return e.starred===!0;case"after":return e.sentDate!=null&&e.sentDate>=n.epochSeconds*1e3;case"before":return e.sentDate!=null&&e.sentDate<n.epochSeconds*1e3;case"in":return e.mailboxId===n.mailboxId;case"account":return e.accountId===n.accountId;default:return!1}})}const lm=["from","subject","category","unread","starred","attachments"],js=e=>e[0],cm=e=>{const s=js(e.filter(l=>l.type==="from").map(l=>l.value)),n=js(e.filter(l=>l.type==="subject").map(l=>l.value)),r=js(e.filter(l=>l.type==="category").map(l=>l.category)),a=js(e.filter(l=>l.type==="isUnread"||l.type==="isRead").map(l=>l.type==="isUnread")),o=e.some(l=>l.type==="isStarred")?!0:void 0,i=e.some(l=>l.type==="hasAttachment")?!0:void 0;return{...s!==void 0?{from:s}:{},...n!==void 0?{subject:n}:{},...r!==void 0?{category:[r]}:{},...a!==void 0?{unread:a}:{},...o!==void 0?{starred:o}:{},...i!==void 0?{attachments:i}:{}}},dm=(e,s)=>{switch(s.type){case"from":return e.from?.toLowerCase()===s.value.toLowerCase();case"subject":return e.subject?.toLowerCase()===s.value.toLowerCase();case"category":return e.category?.length===1&&e.category[0]===s.category;case"isUnread":return e.unread===!0;case"isRead":return e.unread===!1;case"isStarred":return e.starred===!0;case"hasAttachment":return e.attachments===!0;case"before":case"after":case"in":case"account":return!1}},gn=(e,s)=>Object.fromEntries(Object.entries(e).filter(([n])=>s.includes(n)));function Wf(e,s={},n=lm){const r=gn(cm(e),n),a={...r,...gn(s,n)};return{params:r,residual:e.filter(o=>!dm(a,o))}}function Gf(e,s,n){if(s.length===0)return e;const r=[...s];return e.filter(a=>{const o=rm(a);return im({...o,accountId:o.accountId??n},r)})}const qa=8;function yt(e,s){const n=Math.max(0,Math.min(s,e.length)),r=Ko(e).find(o=>n>=o.start&&n<=o.end);if(!r)return{start:n,end:n,raw:""};const a=qo(r.raw);return a?{start:r.start,end:r.end,raw:r.raw,name:a.name,value:a.value}:{start:r.start,end:r.end,raw:r.raw}}function um(e,s){const n=yt(e,s);if(n.name===void 0)return{kind:"token",query:n.raw};const r=Gn(n.name);if(r)return{kind:"value",token:r.name,source:r.values,query:n.value??""}}const mm={mailbox:"mailboxes",account:"accounts",contact:"contacts"},fm=(e,s)=>{if(e.values==="fixed")return e.options??[];const n=mm[e.values];return n?s[n]??[]:[]},hm=(e,s)=>{if(s==="")return 1;const n=e.toLowerCase();return n.startsWith(s)?0:n.includes(s)?1:-1},rt=(e,...s)=>{let n=-1;for(const r of s){if(r===void 0)continue;const a=hm(r,e);a<0||(n<0||a<n)&&(n=a)}return n},Qa=e=>{const s=new Set;return e.filter(n=>n.rank>=0).sort((n,r)=>n.rank-r.rank).filter(n=>{const r=n.suggestion.value.toLowerCase();return s.has(r)?!1:(s.add(r),!0)}).slice(0,qa).map(n=>n.suggestion)},xn=e=>({value:`${e.name}:`,label:`${e.name}:`,hint:e.label});function pm(e){const s=e.trim().toLowerCase();if(s==="")return At.map(xn);const n=[];for(const r of At)if(n.push({rank:rt(s,`${r.name}:`,r.label),suggestion:xn(r)}),r.values==="fixed")for(const a of r.options??[]){const o=Vn(r.name,a.value);n.push({rank:rt(s,o,a.label),suggestion:{value:o,label:a.label??o,hint:o}})}return Qa(n)}function gm(e,s,n){const r=s.trim().toLowerCase(),a=fm(e,n).map(o=>({rank:rt(r,o.value,o.label),suggestion:{value:Vn(e.name,o.value),label:o.label??o.value,...o.hint?{hint:o.hint}:{}}}));return Qa(a)}function xm(e,s,n={}){const r=yt(e,s);if(r.name===void 0)return pm(r.raw);const a=Gn(r.name);return a?gm(a,r.value??"",n):[]}function bm(e,s,n){const r=yt(e,s),a=!n.value.endsWith(":"),o=/\s/.test(e.slice(r.end,r.end+1)),i=a&&!o?`${n.value} `:n.value;return{query:e.slice(0,r.start)+i+e.slice(r.end),cursor:r.start+i.length+(a&&o?1:0)}}const vm=e=>({value:e.normalizedEmail,...e.displayName?{label:e.displayName,hint:e.normalizedEmail}:{}}),ym=250,jm=2;function km({query:e,cursor:s,enabled:n}){const{accounts:r}=cs(),{mailboxesByName:a}=Jn(),o=a!==void 0,i=n?um(e,s):void 0,l=i?.source==="contact"?i.query.trim():"",f=ea(l,ym),{data:y}=te({...dt({query:{q:f,limit:qa}}),enabled:f.length>=jm}),v=ut({queries:r.map(g=>({...ns({path:{accountId:g.accountId}}),staleTime:1/0}))}),j=c.useMemo(()=>o?Do(v.map(g=>g.data?.items??[]),r):[],[o,v,r]),p=c.useMemo(()=>Lo(r),[r]),x=c.useMemo(()=>(y?.items??[]).map(vm),[y]);return c.useMemo(()=>{if(!n)return[];const g=xm(e,s,{mailboxes:j,accounts:p,contacts:x});return o?g:g.filter(h=>h.value!=="in:")},[n,e,s,j,p,x,o])}const Ha="remit.recentSearches",Cm=5;function ot(){try{const e=localStorage.getItem(Ha);if(!e)return[];const s=JSON.parse(e);return Array.isArray(s)?s.filter(n=>typeof n=="string"):[]}catch{return[]}}function bn(e){const s=e.trim();if(!s)return ot();const n=[s,...ot().filter(r=>r!==s)].slice(0,Cm);try{localStorage.setItem(Ha,JSON.stringify(n))}catch{return n}return n}const wm=e=>e.tier!=="phone"&&e.hasLiveInput&&!(e.bodyRendersCommittedResults&&e.hasCommittedQuery),it=c.createContext(null);function Nm(){const e=c.useContext(it),{searchInput:s,onSearchChange:n,onSearchClear:r}=cs();if(!e)throw new Error("ListHeaderSearchField rendered outside MailListHeader's HeaderSearchContext provider");return t.jsxs(t.Fragment,{children:[t.jsx("div",{className:"min-w-0 flex-1",children:t.jsx($n,{value:s,onChange:n,onClear:r,globalFocusKey:!1,showClearButton:!1,suggest:e.suggest})}),t.jsx($,{variant:"ghost",size:"touch",icon:t.jsx(_e,{className:"size-5"}),onClick:e.onClose,"aria-label":"Close search",className:"shrink-0"}),t.jsx(Un,{})]})}function Vf({title:e,unreadCount:s,children:n,selectionBar:r,paneOverlay:a,footer:o,searchFilter:i,searchResults:l,searchLoading:f,onSelectSearchResult:y,searchResultsLabel:v="Top matches",searchResultsInBody:j=!1,spamOffer:p,refreshControl:x}){const{accounts:g,resultFolderIndex:h,searchQuery:d,searchInput:u,onSearchChange:b,onSearchClear:m,searchViewKey:k}=cs(),C=Jn(),w=Oo(),M=_n(),N=Ti(),[R,E]=c.useState(!1),[A,U]=c.useState(ot),F=jo(),B=c.useRef(k);c.useEffect(()=>{B.current!==k&&(B.current=k,E(!1))},[k]);const[q,Q]=c.useState(0),[D,z]=c.useState(!1),[P,_]=c.useState(void 0),Y=km({query:u,cursor:q,enabled:D&&u.trim().length>0}),H=c.useCallback(ne=>{const ge=bm(u,q,ne);b(ge.query),_({cursor:ge.cursor})},[u,q,b]),G=ko({count:Y.length,onAccept:ne=>{const ge=Y[ne];ge&&H(ge)}}),{comboboxProps:me,handleKeyDown:pe}=G,ae=c.useMemo(()=>({comboboxProps:me,onKeyDown:pe,onCaretChange:Q,onFocusChange:z,...P?{caret:P}:{}}),[me,pe,P]),se=c.useCallback(()=>{m(),E(!1)},[m]),X=c.useMemo(()=>({suggest:ae,onClose:se}),[ae,se]),re=G.open?t.jsx(So,{id:G.listId,suggestions:Y,activeIndex:G.activeIndex,optionId:G.optionId,onPick:H,onHighlight:G.setActiveIndex,label:"Search suggestions",className:"mx-row-inset mt-1 shrink-0"}):null,ee=u.trim().length>0,{mailboxesByName:le,accountsByName:ce}=C,K=c.useMemo(()=>Qo(u,{mailboxesByName:le,accountsByName:ce}),[u,le,ce]),I=c.useMemo(()=>K.tokens.map(ne=>({label:Wn(ne),onRemove:()=>b(Ho(u,ne))})),[K,u,b]),O=c.useMemo(()=>l??[],[l]),J=c.useMemo(()=>ee?[{id:"top",label:v,results:O}]:[],[ee,v,O]),fe=O.length===0&&f===!0,{scope:W}=zo(g),Ke=Co(),Re=Gi(Ke),Me=Re?h.get(Re)?.role:void 0,de=c.useMemo(()=>Vi(Ke,W,Me),[Ke,W,Me]),he=de.kind==="global"?p:void 0,Te=c.useMemo(()=>he?{kind:"global",spamCount:he.count,onScopeToSpam:()=>w(he.mailboxId,d)}:de,[he,de,w,d]),Le=c.useMemo(()=>wu(K),[K]),oe=ee?Le:void 0,Z=c.useCallback(()=>{E(!1),F("properties","search")},[F]),Ae=zc(Le)?void 0:wo(Le.droppedFacets.map(ne=>ne.label)),Ee=c.useMemo(()=>ee?{onClick:Z,blockedReason:Ae}:void 0,[ee,Ae,Z]),_s=c.useMemo(()=>Ee?t.jsx(xa,{...Ee}):null,[Ee]),je=wm({tier:N,hasLiveInput:ee,hasCommittedQuery:d.trim().length>0,bodyRendersCommittedResults:j}),qe=c.useCallback(ne=>{U(bn(u)),y?.(ne)},[u,y]),ms=c.useMemo(()=>t.jsx(ba,{value:u,sections:J,loading:fe,onSelectResult:qe,tokens:I,scope:Te}),[u,J,fe,qe,I,Te]),fs=r===void 0,Oe=c.useMemo(()=>je?t.jsx("div",{className:"h-full overflow-y-auto",children:ms}):null,[je,ms]),Bs=Oe&&!fs?Oe:n,hs=Oe&&fs?Oe:null,Qe=Ai(N),He=Qe&&(R||ee),ve=c.useMemo(()=>({title:e,searchResults:hs,makeFilterSlot:_s,navSlot:M&&!M.showNavPane&&t.jsx($,{variant:"ghost",size:"touch",icon:t.jsx(Ji,{className:"size-5"}),onClick:()=>M.openNav(),"aria-label":"Menu",className:"-ml-2 shrink-0"}),titleMeta:t.jsxs(t.Fragment,{children:[s===null?null:t.jsxs("span",{className:"shrink-0 text-2xs text-fg-subtle",children:[s.toLocaleString()," unread"]}),t.jsx(Un,{}),x]}),searchSlot:Qe&&!He&&t.jsx($,{variant:"ghost",size:"touch",icon:t.jsx(No,{className:"size-5"}),onClick:()=>E(!0),"aria-label":"Search",className:"shrink-0"}),searchField:He&&t.jsx(Nm,{})}),[e,s,M,Qe,He,hs,_s,x]);if(N==="phone"&&R){const ne=ge=>{U(bn(u)),E(!1),y?.(ge)};return t.jsx(it.Provider,{value:X,children:t.jsx(at.Provider,{value:oe,children:t.jsxs(nt.Provider,{value:ve,children:[t.jsx(lc,{value:u,onChange:b,onClear:m,onCancel:()=>{E(!1),m()},filter:i,recentSearches:A,onPickRecent:b,makeFilter:Ee,sections:J,loading:fe,onSelectResult:ne,tokens:I,scope:Te,suggest:ae,suggestList:re}),a]})})})}return t.jsx(it.Provider,{value:X,children:t.jsx(at.Provider,{value:oe,children:t.jsx(nt.Provider,{value:ve,children:t.jsxs("section",{className:"relative flex h-full w-full flex-col bg-surface",children:[r?.(ve),re,t.jsx("div",{className:"min-h-0 flex-1",children:Bs}),o,a]})})})})}export{jf as $,_f as A,Wf as B,$l as C,ru as D,Os as E,Gf as F,yf as G,Uf as H,Lf as I,zs as J,us as K,zf as L,Af as M,Of as N,bf as O,xf as P,Xu as Q,Ca as R,cc as S,zd as T,_d as U,Ud as V,Bd as W,Pf as X,pf as Y,Zu as Z,Df as _,au as a,Sf as a0,Gd as a1,Ff as a2,Ef as a3,ff as a4,vf as a5,qf as a6,$f as a7,sa as a8,mt as a9,Tf as aA,Jl as aa,Gl as ab,Hl as ac,Vl as ad,Ql as ae,st as af,df as ag,uf as ah,lf as ai,cf as aj,Kf as ak,Vf as al,xt as am,om as an,rm as ao,im as ap,Qf as aq,oc as ar,Hf as as,mf as at,wm as au,tc as av,Mf as aw,Ut as ax,Bu as ay,hf as az,gf as b,ht as c,Sa as d,Vd as e,Bl as f,Yd as g,Xd as h,Uc as i,If as j,tu as k,Rf as l,Ll as m,_l as n,su as o,Na as p,Ia as q,yd as r,Cf as s,wa as t,Qu as u,wf as v,Nf as w,ed as x,kf as y,Bf as z};
1
+ import{dk as Ya,e as ie,r as c,j as t,$ as ke,a0 as Ss,t as T,a1 as Za,L as vn,g as Ce,dl as Xa,dm as yn,dn as jn,dp as Is,a8 as er,f as $,X as _e,a4 as ss,aC as Rs,v as Ms,Z as sr,b5 as tr,dj as Ts,dq as kn,_ as Ue,dr as Cn,bG as lt,ds as nr,bn as ar,dt as rr,du as or,dv as ir,dw as lr,dx as wn,dc as cr,aN as dr,dy as ur,B as Nn,dz as mr,dA as fr,dB as hr,dC as pr,dD as gr,dE as xr,y as br,cK as Sn,d7 as In,c as te,d as ts,N as ns,dF as vr,dG as yr,dH as As,h as ue,au as be,i as xe,K as we,M as Ne,S as as,cB as Se,dI as Es,dJ as Ze,aK as jr,dK as rs,dL as Ie,dM as os,dN as is,dO as ls,dP as kr,dQ as Cr,dR as Rt,cI as wr,s as Rn,dS as Nr,dT as Sr,dU as Ir,b3 as Rr,cs as Mr,d1 as Mn,d2 as Tr,dV as Ar,bm as ct,bo as Tn,bj as An,bp as En,bq as Fn,br as Er,dW as Fr,ac as Dn,cR as Dr,dX as Xe,dY as Lr,aI as Or,aJ as zr,dZ as Pr,bb as Ln,d_ as _r,d$ as Br,e0 as On,e1 as Ur,w as zn,e2 as $r,bP as dt,e3 as Kr,e4 as Pn,bR as qr,e5 as Hs,e6 as Qr,bQ as Hr,U as Wr,q as Gr,D as Vr,e7 as Jr,e8 as Yr,e9 as Zr,d6 as Mt,bA as Xr,ea as eo,eb as so,aw as to,cV as no,d4 as ao,cT as Fs,aj as ro,d5 as oo,ec as io,ed as lo,ee as co,ef as uo,G as cs,eg as mo,eh as fo,ei as Tt,ej as ho,ek as po,el as go,em as xo,ai as bo,x as _n,di as vo,en as Bn,eo as yo,ep as jo,ct as ko,cq as Co,eq as wo,bS as No,er as Un,cu as So}from"./index-D0DzGa5J.js";import{u as Io,L as Ro,a as Mo}from"./roving-focus-DprxQ_bn.js";import{j as To,S as $n,f as Ao,a as Eo,t as Ge,c as Fo,k as Do,l as Lo,m as Oo,u as zo}from"./search-token-index-BvfhQWOt.js";import{K as Po}from"./kbd-BHwdDuqC.js";import{E as Zs}from"./EmptyState-DfgfTFyx.js";import{E as De}from"./ErrorState-BxamrMX4.js";import{c as Kn,P as _o,E as Bo}from"./popover-menu-CIQ9EMwG.js";import{M as qn}from"./mail-DPTdQBcn.js";import{A as es}from"./avatar-DcDIT3A8.js";import{M as Uo,a as $o,b as Qn,c as Hn,s as Wn,d as Gn,e as Ko,f as qo,S as At,g as Vn,u as Jn,p as Qo,r as Ho}from"./useSearchTokenContext-CWaQeo6z.js";import{P as Ds,f as Wo,C as Go,D as ze,s as Vo,a as Jo,e as Et,b as Yo,c as Zo,d as Xo,g as Ft,i as ei,u as si}from"./index-BD0xR1To.js";import{U as ti}from"./undo-2-M8rPT8DL.js";import{o as ni,i as Dt,h as ai}from"./useMessageBodyContent-UsHOXnjm.js";import{D as ri}from"./download-B8H9UItJ.js";import{s as oi,b as ii,Z as li,E as ci,C as di,e as ui,u as mi,d as fi}from"./useCalendarFreeBusy-Lcu0PN0A.js";import{C as Xs,m as hi,j as pi,n as gi,o as Lt,k as Ot,p as xi,s as zt,q as bi,v as vi,t as yi,x as ji}from"./calendar-suggestion-j6PFwg_2.js";import{c as ki,t as Ci,v as wi,x as Ni,y as Si,z as Pt}from"./calendar-format-D-v5Wjn8.js";import{R as Ii}from"./attendee-row-uWc3noHO.js";import{C as Ri}from"./calendar-clash-strip-BpOMxYTS.js";import{C as Yn}from"./clock-tuesWj8Y.js";import{M as Mi}from"./map-pin-DxzepqfO.js";import{B as Zn}from"./bell-off-DUtdhBfF.js";import{S as Be,u as Ti,i as Ai}from"./useLayoutTier-BQZGFMh6.js";import{S as Ei,C as Xn}from"./shield-check-CIfUEzg6.js";import{u as Fi,a as Di,i as Li,t as Oi,d as zi,r as Pi}from"./useCalendars-C0yLfYxq.js";import{c as _i}from"./calendar-report-BTxDp0XA.js";import{u as ea}from"./useDebouncedValue-DKRtYZvq.js";import{u as Bi,a as Ui,j as $i,n as Ki,o as qi,k as Qi,S as Hi}from"./useFilters-DUTq-e5L.js";import{u as ut}from"./useQueries-C45-CTu6.js";import{C as Wi}from"./checkbox-DyheZb9X.js";import{C as gs}from"./confirm-dialog-DyvhMD1R.js";import{r as Gi,a as Vi}from"./search-scope-UI1H6AzA.js";import{M as Ji}from"./menu-rin4kYB3.js";function Yi(...e){return(...s)=>{for(let n of e)typeof n=="function"&&n(...s)}}let et=new Map;typeof FinalizationRegistry<"u"&&new FinalizationRegistry(e=>{et.delete(e)});function Zi(e,s){if(e===s)return e;let n=et.get(e);if(n)return n.forEach(a=>a.current=s),s;let r=et.get(s);return r?(r.forEach(a=>a.current=e),e):s}function Xi(...e){return e.length===1&&e[0]?e[0]:s=>{let n=!1;const r=e.map(a=>{const o=_t(a,s);return n||=typeof o=="function",o});if(n)return()=>{r.forEach((a,o)=>{typeof a=="function"?a():_t(e[o],null)})}}}function _t(e,s){if(typeof e=="function")return e(s);e!=null&&(e.current=s)}function sa(...e){let s={...e[0]};for(let n=1;n<e.length;n++){let r=e[n];for(let a in r){let o=s[a],i=r[a];typeof o=="function"&&typeof i=="function"&&a[0]==="o"&&a[1]==="n"&&a.charCodeAt(2)>=65&&a.charCodeAt(2)<=90?s[a]=Yi(o,i):(a==="className"||a==="UNSAFE_className")&&typeof o=="string"&&typeof i=="string"?s[a]=Ya(o,i):a==="id"&&o&&i?s.id=Zi(o,i):a==="ref"&&o&&i?s.ref=Xi(o,i):s[a]=i!==void 0?i:o}}return s}const Ls=ie("BadgeCheck",[["path",{d:"M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z",key:"3c2336"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]]);const el=ie("Calendar",[["path",{d:"M8 2v4",key:"1cmpym"}],["path",{d:"M16 2v4",key:"4m81vk"}],["rect",{width:"18",height:"18",x:"3",y:"4",rx:"2",key:"1hopcy"}],["path",{d:"M3 10h18",key:"8toen8"}]]);const sl=ie("CodeXml",[["path",{d:"m18 16 4-4-4-4",key:"1inbqp"}],["path",{d:"m6 8-4 4 4 4",key:"15zrgr"}],["path",{d:"m14.5 4-5 16",key:"e7oirm"}]]);const ta=ie("Code",[["polyline",{points:"16 18 22 12 16 6",key:"z7tu5w"}],["polyline",{points:"8 6 2 12 8 18",key:"1eg1df"}]]);const na=ie("Forward",[["polyline",{points:"15 17 20 12 15 7",key:"1w3sku"}],["path",{d:"M4 18v-2a4 4 0 0 1 4-4h12",key:"jmiej9"}]]);const tl=ie("History",[["path",{d:"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"1357e3"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}],["path",{d:"M12 7v5l4 2",key:"1fdv2h"}]]);const nl=ie("MailCheck",[["path",{d:"M22 13V6a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v12c0 1.1.9 2 2 2h8",key:"12jkf8"}],["path",{d:"m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7",key:"1ocrg3"}],["path",{d:"m16 19 2 2 4-4",key:"1b14m6"}]]);const mt=ie("MailOpen",[["path",{d:"M21.2 8.4c.5.38.8.97.8 1.6v10a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V10a2 2 0 0 1 .8-1.6l8-6a2 2 0 0 1 2.4 0l8 6Z",key:"1jhwl8"}],["path",{d:"m22 10-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 10",key:"1qfld7"}]]);const aa=ie("ReplyAll",[["polyline",{points:"7 17 2 12 7 7",key:"t83bqg"}],["polyline",{points:"12 17 7 12 12 7",key:"1g4ajm"}],["path",{d:"M22 18v-2a4 4 0 0 0-4-4H7",key:"1fcyog"}]]);const ft=ie("Reply",[["polyline",{points:"9 17 4 12 9 7",key:"hvgpf2"}],["path",{d:"M20 18v-2a4 4 0 0 0-4-4H4",key:"5vmcpk"}]]);const $e=ie("ShieldAlert",[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}],["path",{d:"M12 8v4",key:"1got3b"}],["path",{d:"M12 16h.01",key:"1drbdi"}]]);const al=ie("ShieldQuestion",[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}],["path",{d:"M9.1 9a3 3 0 0 1 5.82 1c0 2-3 3-3 3",key:"mhlwft"}],["path",{d:"M12 17h.01",key:"p32p05"}]]);const rl=ie("ShieldX",[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}],["path",{d:"m14.5 9.5-5 5",key:"17q4r4"}],["path",{d:"m9.5 9.5 5 5",key:"18nt4w"}]]);const ol=ie("TextSearch",[["path",{d:"M21 6H3",key:"1jwq7v"}],["path",{d:"M10 12H3",key:"1ulcyk"}],["path",{d:"M10 18H3",key:"13769t"}],["circle",{cx:"17",cy:"15",r:"3",key:"1upz2a"}],["path",{d:"m21 19-1.9-1.9",key:"dwi7p8"}]]),il=({address:e,showTrustedBadge:s=!1})=>{const n=s?t.jsx(Ls,{className:"inline-block size-4 ml-1 -mt-0.5 text-positive","aria-label":"Trusted sender","data-testid":"trusted-sender-badge"}):null;return e.displayName?t.jsxs("span",{children:[t.jsx("span",{className:"text-fg",children:e.displayName}),t.jsxs("span",{className:"text-fg-muted",children:[" ","<",e.normalizedEmail,">"]}),n]}):t.jsxs("span",{className:"text-fg",children:[e.normalizedEmail,n]})},ll=({label:e,addresses:s,showTrustedBadge:n=!1})=>{const[r,a]=c.useState(!1);if(s.length===0)return null;const o=s.length>3,i=l=>{const f=n&&l.flags?.trusted?.value===!0;return t.jsx(il,{address:l,showTrustedBadge:f})};return t.jsxs("div",{className:"flex gap-2 text-sm",children:[t.jsxs("span",{className:"text-fg-muted shrink-0 w-12",children:[e,":"]}),t.jsx("div",{className:"flex-1 min-w-0",children:r?t.jsx("div",{className:"flex flex-wrap gap-1",children:s.map((l,f)=>t.jsxs("span",{children:[i(l),f<s.length-1&&", "]},f))}):t.jsx("div",{className:"truncate",children:s.map((l,f)=>t.jsxs("span",{children:[i(l),f<s.length-1&&", "]},f))})}),o&&t.jsx("button",{type:"button",onClick:l=>{l.stopPropagation(),a(!r)},className:"shrink-0 text-fg-muted hover:text-fg transition-colors","aria-label":r?"Collapse":"Expand",children:r?t.jsx(ke,{className:"h-4 w-4"}):t.jsx(Ss,{className:"h-4 w-4"})})]})};function cl({state:e,onRetry:s}){return t.jsxs("div",{role:"alert","data-testid":"attachment-error",className:"flex items-start gap-2 border-t border-danger/30 bg-danger-soft px-2 py-2 text-xs",children:[t.jsx(Za,{className:"mt-0.5 size-3.5 shrink-0 text-danger","aria-hidden":!0}),t.jsxs("div",{className:"min-w-0 flex-1",children:[t.jsx("p",{className:"font-medium text-danger",children:e.title}),t.jsx("p",{className:"mt-0.5 text-fg-muted",children:e.detail})]}),t.jsxs("div",{className:"flex shrink-0 items-center gap-3",children:[t.jsx("button",{type:"button",onClick:s,className:"font-medium text-accent hover:underline",children:"Try again"}),e.reportUrl&&t.jsx("a",{href:e.reportUrl,target:"_blank",rel:"noreferrer",className:"font-medium text-accent hover:underline",children:"Report this"})]})]})}function Bt({attachment:e}){return t.jsxs("span",{className:"min-w-0 flex-1",children:[t.jsx("bdi",{className:"block truncate text-sm text-fg",title:e.filename,children:e.filename}),t.jsxs("span",{className:"block truncate text-2xs text-fg-subtle",children:[e.typeLabel," · ",Wo(e.sizeOctets)]})]})}function dl({isDownloading:e}){return e?t.jsx(vn,{className:"size-4 shrink-0 animate-spin text-fg-subtle","aria-hidden":!0}):t.jsx(ri,{className:"size-4 shrink-0 text-fg-subtle","aria-hidden":!0})}function ul({attachments:e,onDownload:s,hasUnlistedAttachment:n=!1,onToggleOpen:r,opened:a,className:o}){return e.length===0&&!n?null:t.jsxs("section",{"aria-label":"Attachments","data-testid":"attachment-list",className:T("space-y-1.5",o),children:[t.jsxs("h3",{className:"flex items-center gap-1.5 text-2xs font-semibold uppercase tracking-wider text-fg-subtle",children:[t.jsx(Ds,{className:"size-3","aria-hidden":!0}),e.length===0?"Attachment":e.length===1?"1 attachment":`${e.length} attachments`]}),e.length>0&&t.jsx("ul",{className:"overflow-hidden rounded-sm border border-line bg-surface",children:e.map(i=>{const l=i.download.status==="downloading",f=i.kind==="message",y=f&&a?.attachmentId===i.attachmentId,v=j=>t.jsxs("button",{type:"button",onClick:()=>s(i.attachmentId),disabled:l,"data-testid":"attachment-download","aria-label":`Download ${i.filename}`,className:T("px-2 py-2 transition-colors hover:bg-surface-sunken disabled:cursor-progress disabled:opacity-60",j),children:[f?null:t.jsx(Bt,{attachment:i}),t.jsx(dl,{isDownloading:l})]});return t.jsxs("li",{className:"border-t border-line first:border-t-0",children:[f?t.jsxs("div",{className:"flex items-center",children:[t.jsxs("button",{type:"button",onClick:()=>r(i.attachmentId),"aria-expanded":y,"data-testid":"attachment-open","aria-label":`${y?"Close":"Open"} ${i.filename}`,className:"flex min-w-0 flex-1 items-center gap-2 px-2 py-2 text-left transition-colors hover:bg-surface-sunken",children:[y?t.jsx(ke,{className:"size-4 shrink-0 text-fg-subtle","aria-hidden":!0}):t.jsx(Ss,{className:"size-4 shrink-0 text-fg-subtle","aria-hidden":!0}),t.jsx(qn,{className:"size-4 shrink-0 text-fg-subtle","aria-hidden":!0}),t.jsx(Bt,{attachment:i})]}),v("shrink-0")]}):v("flex w-full items-center gap-2 text-left"),y&&a&&t.jsx("section",{"aria-label":`Forwarded message ${i.filename}`,"data-testid":"forwarded-message",className:"border-t border-line px-3 py-3",children:a.content}),i.download.status==="failed"&&t.jsx(cl,{state:i.download,onRetry:()=>s(i.attachmentId)})]},i.attachmentId)})}),n&&t.jsx("p",{role:"alert","data-testid":"attachment-unlisted",className:"rounded-sm border border-line bg-surface px-2 py-2 text-xs text-fg-muted",children:"The mail server says this message carries an attachment, but none of its parts describe one. Re-sync the account from Settings; if the attachment still does not appear, the message is worth reporting."})]})}function ml({label:e,onUndo:s,undoLabel:n="Undo",filtersHref:r,className:a}){return t.jsxs(Ce,{tone:"accent",className:T("py-1 text-xs",a),children:[t.jsx(ti,{className:"size-3.5 shrink-0","aria-hidden":!0}),t.jsx("span",{children:e}),s&&t.jsx("button",{type:"button",onClick:o=>{o.stopPropagation(),s()},className:"font-semibold underline decoration-dotted underline-offset-2 hover:decoration-solid",children:n}),r&&t.jsx("a",{href:r,onClick:o=>{o.stopPropagation()},className:"font-semibold underline decoration-dotted underline-offset-2 hover:decoration-solid",children:"Manage filter"})]})}const Ut=10,fl={kind:"unknown"},Ws=e=>e.toLocaleString();function hl({section:e,Row:s,selectedThreadId:n,initialExpanded:r=!1,initialCollapsed:a=!1,onShowAll:o,onRetry:i,onSelectThread:l}){const[f,y]=c.useState(r),[v,j]=c.useState(a),p=e.threads,x=e.loading===!0,g=e.error===!0,h=p.length>Ut,u=!f&&h?p.slice(0,Ut):p,b=e.total??fl,m=b.kind==="exact"&&(p.length>0||x)&&!g?Ws(b.value):void 0,k=b.kind==="exact"?b.value>u.length:e.atCap===!0,C=o!==void 0&&u.length>0&&k?b.kind==="exact"?`Show all ${Ws(b.value)}`:"Show all":void 0,w=p.length-u.length;return t.jsxs("div",{children:[e.label&&t.jsxs("button",{type:"button","data-section-header":"","aria-expanded":!v,onClick:()=>j(M=>!M),className:"sticky top-0 z-10 flex h-section-row w-full items-center gap-1.5 border-b border-line bg-surface-sunken px-row-inset text-left outline-none transition-colors hover:bg-surface focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-inset",children:[t.jsx("span",{className:"flex-1 text-2xs font-semibold uppercase tracking-wider text-fg-subtle",children:e.label}),m!==void 0&&t.jsx("span",{className:"text-2xs text-fg-subtle tabular-nums",children:m}),t.jsx(ke,{className:T("size-3 shrink-0 text-fg-subtle transition-transform duration-200",v?"rotate-0":"rotate-180")})]}),!v&&t.jsxs(t.Fragment,{children:[p.length===0?g?t.jsxs("div",{className:"flex flex-col items-center gap-1 border-b border-line px-row-inset py-4 text-center text-2xs text-danger",children:[t.jsx("span",{children:`Couldn't load ${e.label??"these messages"}`}),i&&t.jsx("button",{type:"button",onClick:i,className:"font-medium text-accent underline outline-none focus-visible:ring-2 focus-visible:ring-ring",children:"Try again"})]}):x?t.jsx("div",{className:"animate-pulse divide-y divide-line",children:[0,1,2].map(M=>t.jsx("div",{className:"px-row-inset py-3",children:t.jsx("div",{className:"h-3 w-2/3 rounded bg-surface-sunken"})},M))}):t.jsx("p",{className:"border-b border-line px-row-inset py-4 text-center text-2xs text-fg-subtle",children:e.label?`No ${e.label} mail in this brief.`:"No mail in this brief."}):t.jsx("div",{className:"divide-y divide-line",children:u.map(M=>t.jsx(s,{thread:M,active:M.id===n,onClick:()=>l?.(M.id)},M.id))}),C!==void 0?t.jsxs("button",{type:"button",onClick:o,className:"flex w-full items-center justify-center border-b border-line px-row-inset py-1.5 text-2xs font-medium text-accent outline-none transition-colors hover:bg-surface focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-inset",children:[C,t.jsx(Ss,{className:"ml-1 size-3"})]}):h&&t.jsxs("button",{type:"button",onClick:()=>y(M=>!M),className:"flex w-full items-center justify-center border-b border-line px-row-inset py-1.5 text-2xs font-medium text-accent outline-none transition-colors hover:bg-surface focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-inset",children:[f?"Show less":`Show ${Ws(w)} more`,!f&&t.jsx(ke,{className:"ml-1 size-3"})]})]})]})}function lf({sections:e,briefCategory:s="all",selectedThreadId:n,Row:r,keyboard:a,onSelectThread:o,onShowAllSection:i,onRetrySection:l,flat:f=!1,onSelectBriefCategory:y,sources:v,sourcesNote:j,onSelectSource:p,activeFilters:x,onToggleFilter:g,onClearFilters:h,hideChrome:d,defaultExpanded:u=!1}){const[b,m]=c.useState(u),k=c.useRef(null);Io({containerRef:k,itemSelector:Ro,enabled:!Xa(a)});const C=!f&&(s==="all"||e.some(A=>A.total!==void 0)),w=e.filter(A=>A.threads.length>0||A.total!==void 0||A.loading===!0||A.error===!0),M=e.flatMap(A=>A.threads),N=jn,R=C?w.length===0:M.length===0,E=t.jsxs("div",{ref:k,children:[C?w.map(A=>t.jsx(hl,{section:A,Row:r,selectedThreadId:n,onSelectThread:o,onShowAll:i?()=>i(A.id):void 0,onRetry:l?()=>l(A.id):void 0},A.id)):t.jsx("div",{className:"divide-y divide-line",children:M.map(A=>t.jsx(r,{thread:A,active:A.id===n,onClick:()=>o?.(A.id)},A.id))}),R&&t.jsx("div",{className:"px-row-inset py-6 text-center text-2xs text-fg-subtle",children:"No threads match these filters."})]});return t.jsx(yn,{categories:[...Is],filters:N,sources:v,sourcesNote:j,selectedCategory:s,activeFilters:x,expanded:b,onExpandedChange:m,onSelectCategory:A=>y?.(A),onSelectSource:p,onToggleFilter:A=>g(A),onClear:h,hideChrome:d,children:E})}const pl={ics:"Attached invitation",markup:"Structured markup",pattern:"Read from the words"},gl={ics:er,markup:sl,pattern:ol},xl={ics:"border-positive/50 text-positive",markup:"border-accent-2/50 text-accent-2",pattern:"border-warning/50 text-warning"};function bl({method:e,className:s}){const n=gl[e];return t.jsxs("span",{className:T("inline-flex items-center gap-1 rounded-sm border px-1.5 py-0.5 text-2xs font-medium",xl[e],s),children:[t.jsx(n,{className:"size-3","aria-hidden":!0}),pl[e]]})}const vl=["accepted","tentative","declined","noReply"],yl={accepted:"coming",tentative:"maybe",declined:"not coming",noReply:"no reply"},jl=(e,s)=>e==="dismissed"?"You dismissed this":s==="declined"?"You declined":"On your calendar";function kl({invite:e,whenText:s,calendarName:n,color:r,clashes:a,rsvp:o,onAdd:i,onTentative:l,onDecline:f,onReopen:y,onOfferOtherTimes:v,mute:j,onRemove:p,onOpenNewer:x,guests:g,busy:h=!1,failure:d="",reportHref:u,addBlocked:b,touch:m,className:k}){const C=ki(r),w=e.state==="superseded"||e.state==="cancelled",M=e.proposed.attendees,N=vl.map(R=>({state:R,count:M.filter(E=>E.rsvp===R).length})).filter(R=>R.count>0).map(R=>`${R.count} ${yl[R.state]}`).join(" · ");return t.jsxs("section",{className:T("flex flex-col gap-3 rounded-lg border border-line bg-surface-raised p-3",k),children:[t.jsxs("div",{className:"flex items-center gap-2",children:[t.jsx("span",{className:T("size-2.5 shrink-0 rounded-full",C.solid)}),t.jsxs("span",{className:"min-w-0 flex-1 truncate text-2xs uppercase tracking-wider text-fg-subtle",children:["Invitation from ",e.organizerName," · ",n]}),t.jsx(bl,{method:e.method})]}),t.jsxs("div",{className:T(w&&"opacity-60"),children:[t.jsx("h3",{className:"text-md font-semibold text-fg",children:e.proposed.title}),t.jsxs("p",{className:"mt-1 flex items-center gap-2 text-sm text-fg",children:[t.jsx(Yn,{className:"size-4 shrink-0 text-fg-subtle","aria-hidden":!0}),s]}),e.proposed.location!==""&&t.jsxs("p",{className:"mt-1 flex items-center gap-2 text-sm text-fg-muted",children:[t.jsx(Mi,{className:"size-4 shrink-0 text-fg-subtle","aria-hidden":!0}),e.proposed.location]})]}),e.state==="superseded"&&t.jsxs("div",{className:"flex items-start gap-2 rounded-md border border-warning/40 bg-warning-soft p-2",children:[t.jsx(tl,{className:"mt-0.5 size-4 shrink-0 text-warning","aria-hidden":!0}),t.jsxs("div",{className:"min-w-0 flex-1",children:[t.jsxs("p",{className:"text-xs font-semibold text-warning",children:[e.organizerName," has sent a newer version of this."]}),t.jsxs("p",{className:"mt-1 text-xs text-fg",children:["This one is revision ",e.sequence," and is out of date. The newer message carries the one to answer."]}),x&&t.jsx($,{variant:"secondary",size:m?"md":"sm",onClick:x,className:T("mt-2",m&&"min-h-11"),children:"Open the newer invitation"})]})]}),e.state==="cancelled"&&t.jsxs("div",{className:"flex items-start gap-2 rounded-md border border-danger/40 bg-danger-soft p-2",children:[t.jsx(_e,{className:"mt-0.5 size-4 shrink-0 text-danger","aria-hidden":!0}),t.jsxs("div",{className:"min-w-0 flex-1",children:[t.jsxs("p",{className:"text-xs font-semibold text-danger",children:[e.organizerName," cancelled this."]}),t.jsx("p",{className:"mt-1 text-xs text-fg",children:"It is still on your calendar. Nothing comes off it until you say so."}),p&&t.jsxs("div",{className:T("mt-2 flex gap-2",m&&"flex-wrap"),children:[t.jsx($,{variant:"primary",size:m?"md":"sm",icon:t.jsx(ss,{className:"size-3.5"}),onClick:p,disabled:h||b!==void 0,className:T(m&&"min-h-11 flex-1"),children:"Remove from calendar"}),y&&t.jsx($,{variant:"secondary",size:m?"md":"sm",onClick:y,disabled:h,className:T(m&&"min-h-11 flex-1"),children:"Keep it"})]})]})]}),!w&&t.jsx(Ri,{clashes:a}),g??(M.length>0&&t.jsxs("p",{className:"text-2xs uppercase tracking-wider text-fg-subtle",children:[M.length," guests",N===""?"":` · ${N}`]})),d!==""&&t.jsx(Xs,{text:d,reportHref:u}),b!==void 0&&t.jsx("div",{className:"rounded-md border border-warning/40 bg-warning-soft p-2 text-xs text-fg",children:b}),!w&&(o==="noReply"&&e.state!=="dismissed"?t.jsxs("div",{className:"flex flex-col gap-2 border-t border-line pt-3",children:[t.jsxs("div",{className:T("flex gap-2",m&&"flex-wrap"),children:[t.jsx($,{variant:"primary",size:m?"md":"sm",icon:t.jsx(el,{className:"size-3.5"}),onClick:i,disabled:h||b!==void 0,className:T(m&&"min-h-11 flex-1"),children:"Add to calendar"}),l&&t.jsx($,{variant:"secondary",size:m?"md":"sm",onClick:l,disabled:h||b!==void 0,className:T(m&&"min-h-11 flex-1"),children:"Maybe"}),t.jsx($,{variant:"secondary",size:m?"md":"sm",icon:t.jsx(_e,{className:"size-3.5"}),onClick:f,disabled:h,className:T(m&&"min-h-11 flex-1"),children:"Decline"})]}),t.jsx($,{variant:"ghost",size:m?"md":"sm",onClick:v,className:T("self-start",m&&"min-h-11 w-full"),children:"Offer other times"}),j&&t.jsx($,{variant:"ghost",size:m?"md":"sm",icon:t.jsx(Zn,{className:"size-3.5"}),onClick:j.onMute,disabled:h,className:T("self-start",m&&"min-h-11 w-full"),children:`Stop offering invitations from ${j.sender}`}),t.jsxs("p",{className:"text-2xs text-fg-subtle",children:[e.organizerName," is not notified. Reader writes this to your calendar and sends no reply — tell them in the thread."]})]}):t.jsxs("div",{className:"flex flex-col gap-2 border-t border-line pt-3",children:[t.jsxs("div",{className:"flex flex-wrap items-center gap-3",children:[t.jsxs("span",{className:"flex items-center gap-1.5 text-sm text-fg",children:[jl(e.state,o),e.state!=="dismissed"&&t.jsx(Ii,{rsvp:o})]}),y&&t.jsx($,{variant:"ghost",size:m?"md":"sm",onClick:y,disabled:h,className:m?"min-h-11":"",children:"Change"}),o==="declined"&&t.jsx($,{variant:"secondary",size:m?"md":"sm",onClick:v,className:m?"min-h-11":"",children:"Offer other times"})]}),t.jsxs("p",{className:"flex items-start gap-1.5 text-2xs text-fg-subtle",children:[t.jsx(Rs,{className:"mt-0.5 size-3 shrink-0","aria-hidden":!0}),e.organizerName," was not notified."]})]}))]})}function Cl({slots:e,picked:s,onToggle:n,emptyText:r="Nothing free that day at this length.",touch:a,scroll:o,className:i}){return e.length===0?t.jsx("p",{className:T("text-xs text-fg-muted",i),children:r}):t.jsx("div",{className:T("flex gap-2",o?"overflow-x-auto pb-1":"flex-wrap",i),children:e.map(l=>{const f=s.has(l.startTime);return t.jsxs("button",{type:"button","aria-pressed":f,onClick:()=>n(l),className:T("shrink-0 rounded-md border px-2 text-xs tabular-nums outline-none transition-colors focus-visible:ring-2 focus-visible:ring-ring",a?"min-h-11 px-3":"h-7",f?"border-accent bg-accent-soft font-semibold text-accent":"border-line bg-surface text-fg-muted hover:border-line-strong hover:text-fg"),children:[l.startTime," – ",l.endTime]},l.startTime)})})}const wl=({trigger:e,children:s,align:n="right"})=>{const[r,a]=c.useState(!1),o=c.useRef(null),i=c.useCallback(l=>{o.current&&!o.current.contains(l.target)&&a(!1)},[]);return Ms({id:"dropdown-menu",open:r,answers:{back:()=>a(!1)}}),c.useEffect(()=>(r&&document.addEventListener("mousedown",i),()=>document.removeEventListener("mousedown",i)),[r,i]),t.jsxs("div",{ref:o,className:"relative",children:[t.jsx("button",{type:"button",onClick:l=>{l.stopPropagation(),a(!r)},className:T("p-1.5 min-h-11 min-w-11 inline-flex items-center justify-center rounded-md transition-colors","hover:bg-surface-raised text-fg-muted hover:text-fg"),children:e}),r&&t.jsx("div",{className:T("absolute z-50 mt-1 min-w-[180px] py-1","bg-surface border border-line rounded-md shadow-lg",n==="right"?"right-0":"left-0"),children:s})]})},xs=({onClick:e,disabled:s,destructive:n,children:r})=>t.jsx("button",{type:"button",onClick:a=>{a.stopPropagation(),s||e()},disabled:s,className:T("w-full px-3 py-2 text-left text-sm transition-colors","flex items-center gap-2",s&&"opacity-50 cursor-not-allowed",!s&&"hover:bg-surface-raised",n&&"text-danger hover:text-danger"),children:r}),Nl=()=>t.jsx("div",{className:"my-1 h-px bg-line"});function ye({label:e,children:s,className:n}){return t.jsxs("section",{className:T("border-b border-line px-row-inset py-3",n),children:[t.jsx("h3",{className:"text-2xs font-semibold uppercase tracking-wider text-fg-subtle",children:e}),t.jsx("div",{className:"mt-2",children:s})]})}function Sl({data:e,actions:s,selectedEventId:n="",touch:r,className:a}){const{invite:o,prose:i,suggestions:l,day:f,dayLabel:y,suggestionsBusy:v=!1,failure:j="",suggestionsFailure:p="",reportHref:x,addBlocked:g}=e,{onReviewSuggestion:h,onOpenThread:d}=s,[u,b]=c.useState({}),m=l[0],k=m===void 0?"":u[m.suggestion.id]??"",C=m===void 0?void 0:oi(m.suggestion,k),w=new Set(i?.picked??[]);return j===""&&o===void 0&&i===void 0&&l.length===0&&f.length===0?t.jsxs("div",{className:T("flex flex-1 flex-col items-center justify-center gap-2 px-row-inset py-10 text-center",a),children:[t.jsx(sr,{className:"size-6 text-fg-subtle","aria-hidden":!0}),t.jsx("p",{className:"text-sm text-fg-muted",children:"Nothing in this message is about a time."}),t.jsx("p",{className:"text-2xs text-fg-subtle",children:"An invitation, a booking or a thread proposing hours would show up here, with the day it lands on."})]}):t.jsxs("div",{className:T("flex flex-col",a),children:[j!==""&&t.jsx(Xs,{text:j,reportHref:x,className:"mx-row-inset mt-3"}),o&&t.jsx(ye,{label:"Invitation",children:t.jsx(kl,{invite:o.invite,whenText:o.whenText,calendarName:o.calendarName,color:o.color,clashes:o.clashes,rsvp:o.rsvp,busy:o.busy,failure:o.failure,reportHref:o.reportHref,addBlocked:o.addBlocked,mute:s.onMuteInvite&&o.sender?{sender:o.sender,onMute:s.onMuteInvite}:void 0,onAdd:s.onAddInvite,onTentative:s.onTentativeInvite,onDecline:s.onDeclineInvite,onReopen:s.onReopenInvite,onOfferOtherTimes:s.onOfferOtherTimes,onRemove:s.onRemoveInvite,onOpenNewer:s.onOpenNewerInvite,touch:r})}),i&&t.jsxs(ye,{label:i.proposals.length>0?`Times named · ${i.dayLabel}`:`Other times · ${i.dayLabel}`,children:[t.jsx("ul",{className:T("flex flex-col gap-1",i.proposals.length===0&&"hidden"),children:i.proposals.map(N=>t.jsxs("li",{className:"flex items-baseline gap-2 text-xs",children:[t.jsx("span",{className:"w-24 shrink-0 truncate tabular-nums text-fg",children:N.phrase}),N.clashTitle===""?t.jsx("span",{className:"min-w-0 flex-1 truncate text-positive",children:"Nothing booked"}):t.jsxs("span",{className:"min-w-0 flex-1 truncate text-danger",children:[N.clashTitle," is already there"]})]},N.id))}),t.jsx("p",{className:"mt-3 pb-1.5 text-2xs uppercase tracking-wider text-fg-subtle",children:"Free, half an hour each"}),t.jsx(Cl,{slots:i.slots,picked:w,onToggle:s.onToggleSlot,touch:r,scroll:!0}),s.onReplyWithSlots?t.jsxs("div",{className:"mt-2 flex flex-col gap-1.5",children:[t.jsx($,{variant:"secondary",size:r?"md":"sm",icon:t.jsx(ft,{className:"size-3.5"}),onClick:s.onReplyWithSlots,disabled:w.size===0,className:T("self-start",r&&"min-h-11"),children:"Reply with these times"}),t.jsx("p",{className:"text-2xs text-fg-subtle",children:"Picked slots go into the reply as plain text. Nothing is booked."})]}):t.jsx("p",{className:"mt-1.5 text-2xs text-fg-subtle",children:"Picked slots go into the reply as plain text. Nothing is booked."})]}),l.length>0&&t.jsxs(ye,{label:"Read out of this thread",children:[t.jsx(ii,{hasCard:m!==void 0,remaining:l.length,blocked:C!==void 0&&!C.settled,blockedReason:li,onConfirm:()=>{m&&C?.settled&&g===void 0&&s.onAddSuggestion(m.suggestion.id,C.timeZone)},onReject:()=>{m&&s.onDismissSuggestion(m.suggestion.id)},children:m&&t.jsx(ci,{suggestion:m.suggestion,whenText:m.whenText,addLabel:"Add to calendar",zoneChoice:k,onZoneChoice:N=>b(R=>({...R,[m.suggestion.id]:N})),onAdd:N=>s.onAddSuggestion(m.suggestion.id,N),onReview:h&&(N=>h(m.suggestion.id,N)),onDismiss:()=>s.onDismissSuggestion(m.suggestion.id),onOpenThread:d&&(()=>d(m.suggestion.threadId)),busy:v,addBlocked:g!==void 0,touch:r})}),g!==void 0&&t.jsx("div",{className:"mt-2 rounded-md border border-warning/40 bg-warning-soft p-2 text-xs text-fg",children:g}),p!==""&&t.jsx(Xs,{text:p,reportHref:x,className:"mt-2"}),t.jsx("p",{className:"mt-2 text-2xs text-fg-subtle",children:"None of this is on your calendar, and none of it will be until you say so."})]}),f.length>0&&t.jsx(ye,{label:y,className:"border-b-0",children:t.jsx("ul",{className:"flex flex-col gap-1",children:f.map(N=>t.jsx("li",{children:t.jsx(di,{title:N.event.title,timeText:N.timeText,color:N.color,layout:"row",density:"compact",rsvp:N.event.myRsvp,status:N.event.status,hasThread:N.event.threadId!=="",isRecurring:N.event.recurrenceRule!=="",zoneCertainty:N.event.zoneCertainty,selected:N.event.id===n,onClick:()=>s.onSelectEvent(N.event.id)})},N.event.id))})})]})}const Il=[{value:"sender",label:"Sender"},{value:"calendar",label:"Calendar"}],Rl={unknown:{label:"Unknown sender",tone:"neutral"},wellknown:{label:"Known sender",tone:"positive"},vip:{label:"VIP",tone:"accent"}};function Ml({sender:e}){const s=Rl[e.trust],n=e.inboundCount==null?null:(e.replyCount??0)>0?`${e.inboundCount} received · you replied ${e.replyCount}×`:`${e.inboundCount} received · you've never replied`;return t.jsxs("div",{children:[t.jsxs("div",{className:"flex items-center gap-3",children:[t.jsx(es,{name:e.name,email:e.email,size:"md"}),t.jsxs("div",{className:"min-w-0",children:[t.jsx("div",{className:"truncate text-sm font-semibold text-fg",children:e.name}),t.jsx("div",{className:"truncate text-2xs text-fg-subtle",children:e.email})]})]}),t.jsx("div",{className:"mt-2 flex items-center gap-2",children:e.addressUnverified?t.jsx(Ce,{tone:"danger",dot:!0,children:"Address couldn't be verified"}):t.jsx(Ce,{tone:s.tone,dot:!0,children:s.label})}),t.jsxs("p",{className:"mt-2 text-xs text-fg-muted",children:["First seen ",e.firstSeenLabel,n?` · ${n}`:""]})]})}function Tl({auth:e}){if(e.verdict==="aligned")return t.jsxs("div",{className:"flex items-start gap-2 text-xs text-fg-muted",children:[t.jsx(Ei,{className:"mt-0.5 size-3.5 shrink-0 text-positive"}),t.jsx("span",{children:e.summary})]});if(e.verdict==="caution")return t.jsxs("div",{className:"flex items-start gap-2 rounded-md bg-warning/10 p-3 text-warning",children:[t.jsx(al,{className:"mt-0.5 size-4 shrink-0"}),t.jsx("p",{className:"text-xs leading-relaxed",children:e.summary})]});const s=e.addressUnreadable?"This sender can't be verified":"This message may be impersonating someone";return t.jsx("div",{className:"rounded-md bg-danger-soft p-3",children:t.jsxs("div",{className:"flex items-start gap-2",children:[t.jsx($e,{className:"mt-0.5 size-4 shrink-0 text-danger"}),t.jsxs("div",{className:"min-w-0",children:[t.jsx("p",{className:"text-sm font-semibold text-danger",children:s}),t.jsx("p",{className:"mt-1 text-xs leading-relaxed text-fg",children:e.summary}),!e.addressUnreadable&&e.dkimDomain&&t.jsxs("p",{className:"mt-1 text-2xs text-fg-muted",children:["Sent from"," ",t.jsx("code",{className:"rounded bg-surface px-1 py-0.5",children:e.dkimDomain}),", claims to be"," ",t.jsx("code",{className:"rounded bg-surface px-1 py-0.5",children:e.fromDomain})]})]})]})})}function bs({icon:e,label:s,active:n,danger:r,onClick:a,pending:o}){const i=a===void 0||o===!0;return t.jsxs("button",{type:"button",onClick:a,disabled:i,className:T("flex items-center gap-2 rounded-md border px-2 py-1 text-xs transition-colors",n?"border-accent-2 bg-accent-2-soft text-accent-2":"border-line text-fg-muted hover:border-line-strong hover:text-fg",r&&!n&&"text-danger hover:bg-danger-soft",i&&"cursor-not-allowed opacity-50 hover:border-line"),children:[e,s]})}function ra({data:e,onClose:s,actions:n,className:r,hideCloseButton:a=!1,reportSpamPending:o=!1,notSpamPending:i=!1,calendar:l,tab:f,onTabChange:y,defaultTab:v="sender",touch:j}){const{sender:p,authenticity:x,category:g,flags:h={}}=e,[d,u]=c.useState(v),b=c.useId(),m=f??d,k=l!==void 0&&m==="calendar"?l:void 0;return t.jsxs("aside",{className:T("flex w-76 shrink-0 flex-col overflow-y-auto border-l border-line bg-surface",r),children:[t.jsxs("header",{className:"flex h-pane-header shrink-0 items-center justify-between border-b border-line px-row-inset",children:[t.jsx("span",{className:"text-2xs font-semibold uppercase tracking-wider text-fg-subtle",children:"Intelligence"}),!a&&t.jsx($,{variant:"ghost",size:"sm",icon:t.jsx(_e,{className:"size-3.5"}),onClick:s,"aria-label":"Collapse intelligence sidebar"})]}),l&&t.jsx("div",{className:"flex shrink-0 justify-center border-b border-line px-row-inset py-2",children:t.jsx(tr,{name:b,"aria-label":"What this panel is showing",size:"sm",options:Il,value:m,onChange:C=>{f===void 0&&u(C),y?.(C)}})}),k&&t.jsx(Sl,{data:k.data,actions:k.actions,selectedEventId:k.selectedEventId,touch:j}),k===void 0&&t.jsxs(t.Fragment,{children:[t.jsx(ye,{label:"Sender",children:t.jsx(Ml,{sender:p})}),t.jsx(ye,{label:"Authenticity",children:t.jsx(Tl,{auth:x})}),t.jsx(ye,{label:"Category",children:t.jsxs("div",{className:"flex items-center gap-2",children:[t.jsx(Ce,{tone:kn[g.value],children:Ts[g.value]}),g.overridden&&t.jsx("span",{className:"text-2xs text-fg-subtle",children:"your override"}),t.jsx("button",{type:"button",className:T("ml-auto text-2xs text-accent hover:underline",!n?.onReclassify&&"cursor-not-allowed opacity-50 hover:no-underline"),disabled:!n?.onReclassify,onClick:n?.onReclassify,children:"reclassify"})]})}),t.jsxs(ye,{label:"Quick actions",children:[t.jsxs("div",{className:"flex flex-wrap gap-1.5",children:[t.jsx(bs,{icon:t.jsx(Ue,{className:"size-3.5"}),label:"VIP",active:h.vip,onClick:n?.onToggleVip}),t.jsx(bs,{icon:t.jsx(Zn,{className:"size-3.5"}),label:"Mute",active:h.muted,onClick:n?.onToggleMute}),n?.onNotSpam&&t.jsx(bs,{icon:t.jsx(nl,{className:"size-3.5"}),label:i?"Undoing…":"Not spam",active:!0,onClick:n.onNotSpam,pending:i}),n?.onReportSpam&&t.jsx(bs,{icon:t.jsx(rl,{className:"size-3.5"}),label:o?"Reporting…":"Report spam",danger:!0,onClick:n.onReportSpam,pending:o})]}),n?.onNotSpam&&t.jsx("p",{className:"mt-1.5 text-2xs text-fg-subtle",children:"You reported this message as spam"})]}),t.jsx(ye,{label:"Coming soon",className:"border-b-0 opacity-70",children:t.jsxs("div",{className:"space-y-2",children:[t.jsxs("div",{className:"flex items-start gap-2 rounded-md border border-dashed border-line p-2",children:[t.jsx(Be,{className:"mt-0.5 size-3.5 shrink-0 text-fg-subtle"}),t.jsxs("div",{children:[t.jsx("div",{className:"text-xs font-medium text-fg-muted",children:"Suggested actions"}),t.jsx("div",{className:"text-2xs text-fg-subtle",children:'"Create a filter for messages like this" — on-device model'})]})]}),t.jsxs("div",{className:"flex items-start gap-2 rounded-md border border-dashed border-line p-2",children:[t.jsx(Be,{className:"mt-0.5 size-3.5 shrink-0 text-fg-subtle"}),t.jsxs("div",{children:[t.jsx("div",{className:"text-xs font-medium text-fg-muted",children:"Thread summary"}),t.jsx("div",{className:"text-2xs text-fg-subtle",children:"One-paragraph digest — Bedrock"})]})]})]})})]})]})}function Al({open:e=!1,enabled:s=!0,onToggle:n,className:r}){return t.jsx($,{variant:"ghost",size:"sm",icon:t.jsx(Cn,{className:"size-4"}),title:"Intelligence","aria-label":e?"Hide intelligence sidebar":"Show intelligence sidebar","aria-pressed":e,disabled:!s,onClick:n,className:T(e&&"bg-accent-2-soft text-accent-2",r)})}function cf({hints:e=To,className:s}){return e.length===0?null:t.jsx("footer",{className:T("flex items-center gap-2 border-t border-line px-row-inset py-1 text-2xs text-fg-subtle",s),children:e.map(n=>t.jsx(El,{hint:n},n.label))})}function El({hint:e}){return t.jsxs("span",{className:"flex items-center gap-1",children:[e.keys.map(s=>t.jsx(Po,{children:s},s)),t.jsx("span",{children:e.label})]})}function Fl({hasThread:e,onUnavailable:s,unavailableHint:n,isStarred:r,showTriage:a=!0,onReply:o,onReplyAll:i,onForward:l,onDelete:f,onToggleStar:y,moveSlot:v,onMove:j,replyTitle:p="Reply (r)",replyAllTitle:x="Reply all (a)",forwardTitle:g="Forward (f)",deleteTitle:h="Move to Trash (#)",flagTitle:d="Star (s)",children:u,className:b}){const m=(k,C)=>()=>{if(!e||!C){s?.(k);return}C()};return t.jsxs("div",{className:"relative",children:[t.jsxs("header",{className:T("flex h-pane-header shrink-0 items-center gap-1 border-b border-line bg-surface px-3",b),children:[t.jsx($,{variant:"ghost",size:"sm",icon:t.jsx(ft,{className:"size-4"}),title:p,"aria-label":"Reply",onClick:m("reply",o)}),t.jsx($,{variant:"ghost",size:"sm",icon:t.jsx(aa,{className:"size-4"}),title:x,"aria-label":"Reply all",onClick:m("replyAll",i)}),t.jsx($,{variant:"ghost",size:"sm",icon:t.jsx(na,{className:"size-4"}),title:g,"aria-label":"Forward",onClick:m("forward",l)}),a&&t.jsxs(t.Fragment,{children:[t.jsx("span",{className:"mx-1 h-4 w-px bg-line","aria-hidden":!0}),t.jsx($,{variant:"ghost",size:"sm",icon:t.jsx(ss,{className:"size-4"}),title:h,"aria-label":"Move to Trash",onClick:m("delete",f)}),v??t.jsx($,{variant:"ghost",size:"sm",icon:t.jsx(lt,{className:"size-4"}),title:"Move to mailbox","aria-label":"Move to mailbox",onClick:m("move",j)}),t.jsx($,{variant:"ghost",size:"sm",icon:t.jsx(Ue,{className:T("size-4",r&&"fill-warning text-warning")}),title:d,"aria-label":"Star","aria-pressed":r,onClick:m("flag",y)})]}),t.jsx("div",{className:"flex-1"}),u]}),n&&t.jsx("p",{role:"status",className:"border-b border-line bg-surface-sunken px-3 py-1 text-2xs text-fg-subtle",children:n})]})}const st=e=>({shiftKey:e.shiftKey,metaKey:e.metaKey,ctrlKey:e.ctrlKey}),$t=e=>e.shiftKey||e.metaKey||e.ctrlKey,Dl=e=>e.shiftKey?"range":e.metaKey||e.ctrlKey?"toggle":"open",Ll=(e,s)=>!s&&e>0,Ol=(e,s,n)=>{const r=e.indexOf(n);if(r===-1)return[];const a=s===void 0?-1:e.indexOf(s);if(a===-1)return[n];const o=Math.min(a,r),i=Math.max(a,r);return e.slice(o,i+1)},zl=(e,s,n,r)=>s!==void 0&&e.includes(s)?s:n!==void 0&&e.includes(n)?n:r,Pl=(e,s)=>{const n=new Set(s),r=new Set;for(const a of e)n.has(a)&&r.add(a);return r},_l=(e,s,n)=>{if(e.length===0)return;const r=s===void 0?-1:e.indexOf(s);if(r===-1)return n>0?e[0]:e[e.length-1];const a=Math.min(Math.max(r+n,0),e.length-1);return e[a]},Bl=e=>{const[s,n]=c.useState(()=>new Set(e?.initialSelectedIds)),[r,a]=c.useState(void 0),o=c.useCallback(h=>s.has(h),[s]),i=c.useCallback(h=>{a(h),n(d=>{const u=new Set(d);return u.has(h)?u.delete(h):u.add(h),u})},[]),l=c.useCallback(h=>{a(h),n(d=>{if(d.has(h))return d;const u=new Set(d);return u.add(h),u})},[]),f=c.useCallback(h=>{n(d=>{if(!d.has(h))return d;const u=new Set(d);return u.delete(h),u})},[]),y=c.useCallback(h=>{n(new Set(h))},[]),v=c.useCallback(()=>{a(void 0),n(new Set)},[]),j=c.useCallback(h=>{n(d=>h.every(b=>d.has(b))?new Set:new Set(h))},[]),p=c.useCallback(h=>{a(h)},[]),x=c.useCallback(h=>{n(d=>{if(d.size===0)return d;const u=Pl(d,h);return u.size===d.size?d:u})},[]),g=c.useCallback((h,d,u)=>{const b=zl(h,r,u,d);n(m=>{const k=Ol(h,b,d);if(k.length===0)return m;const C=new Set(m);for(const w of k)C.add(w);return C}),a(b)},[r]);return{selectedIds:s,selectedCount:s.size,hasSelection:s.size>0,isSelected:o,toggle:i,select:l,deselect:f,selectAll:y,clearSelection:v,toggleAll:j,selectRange:g,setAnchor:p,anchorId:r,intersectWith:x}},Cs={delete_failed:{label:"Not deleted",title:"This message was not deleted",detail:"Remit removed it here first, then refused to finish the delete on the mail server — most often because the Trash folder it was headed for is not there any more. The message is back in this folder because that is where the server still has it.",retryLabel:"Delete again",retryPendingLabel:"Deleting…"},move_failed:{label:"Not moved",title:"This message was not moved",detail:"Remit filed it here first, then could not finish the move on the mail server and stopped trying. The message is back in this folder because that is where the server still has it. The folder you picked is not recorded, so moving it again means choosing one.",retryLabel:"Move again",retryPendingLabel:"Moving…"}};function oa({settlement:e,className:s}){const n=Cs[e];return t.jsxs(Ce,{tone:"danger",className:T("shrink-0",s),title:n.title,"data-settlement":e,children:[t.jsx(Xn,{className:"size-3 shrink-0","aria-hidden":!0}),t.jsx("span",{children:n.label})]})}function Ul({settlement:e,onRetry:s,action:n,retryPending:r,reportHref:a,className:o}){const i=Cs[e];return t.jsxs("div",{role:"alert","data-testid":"message-settlement-notice","data-settlement":e,className:T("flex items-start gap-2 rounded-md border border-danger/40 bg-danger-soft px-3 py-2 text-sm",o),children:[t.jsx(Xn,{className:"mt-0.5 size-4 shrink-0 text-danger","aria-hidden":!0}),t.jsxs("div",{className:"min-w-0 flex-1",children:[t.jsx("p",{className:"font-medium text-danger",children:i.title}),t.jsx("p",{className:"mt-1 break-words text-fg-muted",children:i.detail}),t.jsxs("div",{className:"mt-1 flex flex-wrap items-center gap-3",children:[n,s&&t.jsx("button",{type:"button",onClick:s,disabled:r,className:"font-medium text-accent hover:underline disabled:opacity-50",children:r?i.retryPendingLabel:i.retryLabel}),a&&t.jsx("a",{href:a,target:"_blank",rel:"noreferrer",className:"font-medium text-accent hover:underline",children:"Report an issue"})]})]})]})}const ia="outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-inset",la=({active:e,focused:s})=>T("relative flex h-8 w-full items-center gap-2 px-row-inset text-left",ia,e?"bg-accent-2-soft":s?"bg-surface-sunken":"hover:bg-surface-sunken",s&&!e&&"before:absolute before:inset-y-0 before:left-0 before:w-0.5 before:bg-accent-2"),ht=({active:e,focused:s})=>T("relative flex w-full items-start gap-3 py-2 pl-5 pr-row-inset text-left transition-colors",ia,e?"bg-accent-2-soft":s?"bg-surface-sunken":"hover:bg-surface-sunken",s&&!e&&"before:absolute before:inset-y-0 before:left-0 before:w-0.5 before:bg-accent-2");function ca({thread:e}){const s=!e.isRead;return t.jsxs(t.Fragment,{children:[t.jsx("span",{className:"flex w-4 shrink-0 items-center justify-center",children:e.suspicious?t.jsx($e,{className:"size-3.5 text-danger"}):e.starred?t.jsx(Ue,{className:"size-3 fill-warning text-warning"}):s?t.jsx("span",{className:"size-1.5 rounded-full bg-accent"}):null}),t.jsx("span",{className:T("w-36 shrink-0 truncate text-xs",s?"font-semibold text-fg":"text-fg-muted"),children:e.fromName}),t.jsxs("span",{className:"min-w-0 flex-1 truncate text-xs",children:[t.jsx("span",{className:T(s?"font-medium text-fg":"text-fg-muted"),children:e.subject}),t.jsxs("span",{className:"text-fg-subtle",children:[" — ",e.snippet]})]}),e.hasAttachment&&t.jsx(Ds,{className:"size-3 shrink-0 text-fg-subtle",role:"img","aria-label":"Has an attachment"}),e.settlement&&t.jsx(oa,{settlement:e.settlement}),t.jsx("span",{className:"w-11 shrink-0 text-right text-2xs text-fg-subtle tabular-nums",children:e.timeLabel})]})}function Kt(e,s){const n=s?.trim();if(!n)return e;const r=e.toLowerCase(),a=n.toLowerCase(),o=[];let i=0,l=r.indexOf(a,i),f=0;for(;l!==-1;)l>i&&o.push(e.slice(i,l)),o.push(t.jsx("mark",{className:"bg-transparent font-semibold text-fg",children:e.slice(l,l+a.length)},f++)),i=l+a.length,l=r.indexOf(a,i);return i<e.length&&o.push(e.slice(i)),o}function $l({thread:e,badge:s,highlightQuery:n}){const r=!e.isRead;return t.jsxs("span",{className:"min-w-0 flex-1",children:[t.jsxs("span",{className:"flex items-baseline justify-between gap-2",children:[t.jsxs("span",{className:T("flex min-w-0 items-center gap-1.5 truncate text-sm",r?"font-semibold text-fg":"font-medium text-fg-muted"),children:[e.trust==="vip"&&t.jsx("span",{className:"size-1.5 shrink-0 rounded-full bg-accent-2"}),t.jsx("span",{className:"truncate",children:e.fromName}),e.messageCount!=null&&e.messageCount>1&&t.jsx("span",{className:"shrink-0 text-2xs font-normal text-fg-subtle",children:e.messageCount})]}),t.jsx("span",{className:"shrink-0 text-2xs text-fg-subtle tabular-nums",children:e.timeLabel})]}),t.jsxs("span",{className:"flex items-center gap-1.5",children:[t.jsx("span",{className:T("truncate text-sm",r?"text-fg":"text-fg-muted"),children:Kt(e.subject,n)}),e.suspicious&&t.jsx($e,{className:"size-3.5 shrink-0 text-danger"}),e.starred&&t.jsx(Ue,{className:"size-3 shrink-0 fill-warning text-warning"}),e.hasAttachment&&t.jsx(Ds,{className:"size-3 shrink-0 text-fg-subtle",role:"img","aria-label":"Has an attachment"})]}),t.jsxs("span",{className:"flex items-center gap-1.5",children:[t.jsx("span",{className:"line-clamp-1 min-w-0 flex-1 text-xs text-fg-subtle",children:Kt(e.snippet,n)}),e.category&&e.category!=="personal"&&t.jsx(Ce,{tone:kn[e.category],className:"shrink-0",children:nr(e.category)}),e.labels?.map(a=>t.jsx(ar,{label:a,className:"max-w-20"},a.labelId)),e.settlement&&t.jsx(oa,{settlement:e.settlement}),s]})]})}function Kl({thread:e,selection:s}){if(!s)return t.jsx(es,{name:e.fromName,email:e.fromEmail,size:"sm"});const{checked:n,alwaysVisible:r}=s;return t.jsxs("span",{className:"relative size-7 shrink-0",children:[t.jsx(es,{name:e.fromName,email:e.fromEmail,size:"sm",className:T("absolute inset-0 transition-opacity sm:group-hover:opacity-0",(n||r)&&"opacity-0")}),t.jsx("span",{role:"button",tabIndex:-1,onClick:s.onToggle,onKeyDown:a=>{a.key!=="Enter"&&a.key!==" "||(a.preventDefault(),a.stopPropagation(),s.onToggle(a))},className:T("absolute inset-0 size-7 items-center justify-center rounded-full border transition-opacity",r?"flex":"hidden sm:flex",n?"bg-accent border-accent text-accent-fg opacity-100":r?"border-fg-subtle/40 bg-canvas opacity-100":"border-fg-subtle/40 bg-canvas opacity-0 group-hover:opacity-100"),"aria-label":n?"Deselect message":"Select message",children:n&&t.jsx(Rs,{className:"size-3"})})]})}function pt({thread:e,selection:s,badge:n,highlightQuery:r}){const a=!e.isRead;return t.jsxs(t.Fragment,{children:[a&&t.jsx("span",{className:"absolute left-1.5 top-1/2 size-1.5 -translate-y-1/2 rounded-full bg-accent"}),t.jsx(Kl,{thread:e,selection:s}),t.jsx($l,{thread:e,badge:n,highlightQuery:r})]})}const da=e=>({...Mo,[rr]:"","data-message-id":e.id});function df({thread:e,active:s,focused:n,tabIndex:r,onClick:a}){return t.jsx("button",{type:"button",...da(e),tabIndex:r,onClick:a,className:la({active:s,focused:n}),children:t.jsx(ca,{thread:e})})}function uf({thread:e,active:s,focused:n,tabIndex:r,selection:a,onClick:o}){return t.jsx("button",{type:"button",...da(e),tabIndex:r,onClick:o,className:T("group",ht({active:s,focused:n})),children:t.jsx(pt,{thread:e,selection:a})})}let Pe;const ua=5e3;function ma(e){e.preventDefault(),ws()}function ws(){Pe!==void 0&&(clearTimeout(Pe),Pe=void 0,document.removeEventListener("contextmenu",ma,!0),document.removeEventListener("pointerup",ws,!0))}function ql(){Pe===void 0?(document.addEventListener("contextmenu",ma,!0),document.addEventListener("pointerup",ws,!0)):clearTimeout(Pe),Pe=setTimeout(ws,ua)}let ks;function fa(e){e.preventDefault(),e.stopPropagation(),Je()}function Je(){ks!==void 0&&(clearTimeout(ks),ks=void 0,document.removeEventListener("click",fa,!0),document.removeEventListener("pointerdown",Je,!0))}function Ql(){Je(),document.addEventListener("click",fa,!0),document.addEventListener("pointerdown",Je,!0),ks=setTimeout(Je,ua)}const Hl=500,Wl=36,Gl=e=>({delay:e,threshold:Wl,triggerAllEvents:!0,pointer:{keys:!1}}),Vl=e=>e.event.type==="pointerdown"&&e.first,Jl={onPointerDown:e=>{e.pointerType!=="touch"&&e.pointerType!=="pen"||ql()}};function Yl({onLongPress:e,isDisabled:s,delayMs:n=Hl,accessibilityDescription:r}){const a=or(o=>{Vl(o)&&(Ql(),e())},{...Gl(n),enabled:!s});return{longPressProps:sa(a(),Jl,{"aria-description":r})}}const Ve="min-h-11 min-w-11 px-0";function ha({hasThread:e,onReply:s,onReplyAll:n,onForward:r,isStarred:a,onToggleStar:o,onDelete:i,isRead:l,onToggleRead:f,moveSlot:y,overflowItems:v=[],onUnavailable:j,unavailableHint:p,className:x}){const g=(d,u)=>()=>{if(!e){j?.(d);return}u?.()},h=f?[{key:"toggle-read",label:l?"Mark as unread":"Mark as read",icon:l?t.jsx(qn,{className:"size-4"}):t.jsx(mt,{className:"size-4"}),onSelect:g("toggleRead",f)}]:[];return t.jsxs("div",{className:T("relative",x),children:[t.jsxs("div",{className:"flex h-12 shrink-0 items-center gap-0.5 bg-canvas px-1",children:[s&&t.jsx($,{variant:"ghost",size:"sm",icon:t.jsx(ft,{className:"size-5"}),onClick:g("reply",s),"aria-label":"Reply",title:"Reply",className:Ve}),n&&t.jsx($,{variant:"ghost",size:"sm",icon:t.jsx(aa,{className:"size-5"}),onClick:g("replyAll",n),"aria-label":"Reply all",title:"Reply all",className:Ve}),r&&t.jsx($,{variant:"ghost",size:"sm",icon:t.jsx(na,{className:"size-5"}),onClick:g("forward",r),"aria-label":"Forward",title:"Forward",className:Ve}),t.jsx("div",{className:"flex-1"}),o&&t.jsx($,{variant:"ghost",size:"sm",icon:t.jsx(Ue,{className:T("size-5",a&&"fill-warning text-warning")}),onClick:g("star",o),"aria-label":a?"Unstar":"Star","aria-pressed":a,title:a?"Unstar":"Star",className:Ve}),y,i&&t.jsx($,{variant:"ghost",size:"sm",icon:t.jsx(ss,{className:"size-5"}),onClick:g("delete",i),"aria-label":"Move to Trash",title:"Move to Trash",className:Ve}),t.jsx(Kn,{triggerLabel:"More actions",items:[...h,...v]})]}),!e&&p&&t.jsx("p",{role:"status",className:"bg-surface-sunken px-3 py-1 text-2xs text-fg-subtle",children:p})]})}function pa({message:e,onClick:s,isFocused:n,isUnread:r,trailing:a}){const o=t.jsxs(t.Fragment,{children:[t.jsx(Ss,{className:"size-3.5 shrink-0 text-fg-subtle"}),t.jsxs("div",{className:"relative shrink-0",children:[t.jsx(es,{name:e.fromName,email:e.fromEmail,size:"md"}),r&&t.jsx("span",{className:"absolute -top-0.5 -right-0.5 size-2 rounded-full border border-canvas bg-accent"})]}),t.jsx("span",{className:T("w-36 shrink-0 truncate text-sm",r?"font-semibold text-fg":"font-medium text-fg-muted"),children:e.fromName}),t.jsx("span",{className:"min-w-0 flex-1 truncate text-xs text-fg-subtle",children:e.snippet}),a??t.jsx("span",{className:"shrink-0 text-2xs text-fg-subtle tabular-nums",children:e.dateLabel})]}),i=T("group flex h-section-row w-full items-center gap-3 border-b border-line px-2 text-left transition-colors hover:bg-surface-sunken lg:px-4",n&&"bg-surface-sunken ring-1 ring-inset ring-accent/30");return s?t.jsx("div",{role:"button",tabIndex:0,"aria-expanded":!1,onClick:s,onKeyDown:l=>{ir(l)&&(l.preventDefault(),s())},className:T(i,"cursor-pointer"),children:o}):t.jsx("div",{className:i,children:o})}function ga({message:e,warning:s,onHeaderClick:n,isFocused:r,senderBadge:a,trailing:o,to:i,indicators:l,actionMenu:f,actionBar:y,body:v}){const j=t.jsxs(t.Fragment,{children:[t.jsxs("div",{className:"flex items-baseline justify-between gap-2",children:[t.jsxs("span",{className:"text-sm font-semibold text-fg",children:[e.fromName,a]}),o??t.jsx("span",{className:"text-2xs text-fg-subtle",children:e.dateLabel})]}),t.jsx("div",{className:"text-xs text-fg-subtle",children:e.fromEmail}),i!==null&&t.jsx("div",{className:"text-xs text-fg-subtle",children:i??t.jsxs(t.Fragment,{children:["to ",e.toLabel]})})]});return t.jsxs("div",{className:"px-2 py-3 lg:px-4",children:[t.jsxs("div",{className:T("-mx-2 -my-1 flex items-start gap-3 rounded-sm px-2 py-1",r&&"ring-1 ring-inset ring-accent/30"),children:[n?t.jsx("button",{type:"button",onClick:n,"aria-expanded":!0,"aria-label":"Collapse message",className:"mt-1 shrink-0 text-fg-subtle transition-colors hover:text-fg",children:t.jsx(ke,{className:"size-3.5"})}):t.jsx(ke,{className:"mt-1 size-3.5 shrink-0 text-fg-subtle"}),t.jsx(es,{name:e.fromName,email:e.fromEmail,size:"md"}),t.jsxs("div",{className:"min-w-0 flex-1",children:[n?t.jsx("button",{type:"button",onClick:n,className:"w-full text-left",children:j}):j,l]}),f&&t.jsx("div",{className:"shrink-0",children:f})]}),s&&t.jsxs("div",{className:"mt-3 flex items-start gap-3 rounded-md bg-danger-soft p-3",children:[t.jsx($e,{className:"mt-0.5 size-4 shrink-0 text-danger"}),t.jsxs("div",{className:"text-sm text-fg",children:[t.jsx("span",{className:"font-semibold text-danger",children:"Caution: "}),s," ",t.jsx("button",{type:"button",className:"text-accent underline",children:"Why?"})]})]}),y&&t.jsx("div",{className:"mt-3 -mx-2 lg:-mx-4",children:y}),t.jsx(Uo,{children:v??t.jsx($o,{className:"mt-3",html:e.bodyHtml,category:e.framed?"newsletter":"personal",allowImages:!0})})]})}function Zl({thread:e,onBack:s,intelligence:n,intelligenceOpen:r,onToggleIntelligence:a,actions:o,children:i,onSwipeNext:l,onSwipePrevious:f}){const y=lr({onSwipeLeft:l,onSwipeRight:f}),[v,j]=c.useState(!1),p=a!==void 0,x=p?r??!1:v,g=!!n||p,h=()=>{if(p){a?.();return}j(u=>!u)},d=()=>{if(p){x&&a?.();return}j(!1)};return t.jsxs("article",{className:"flex h-full w-full min-w-0 flex-col bg-canvas",children:[t.jsxs("header",{className:"flex h-pane-header shrink-0 items-center gap-2 border-b border-line bg-surface px-row-inset",children:[t.jsx($,{variant:"ghost",size:"sm",icon:t.jsx(wn,{className:"size-4"}),onClick:s,"aria-label":"Back to messages",className:"-ml-1 shrink-0"}),t.jsx("h2",{className:"min-w-0 flex-1 truncate text-sm font-semibold text-fg",children:e.subject}),g&&t.jsx($,{variant:"ghost",size:"sm",icon:t.jsx(Cn,{className:"size-4"}),onClick:h,"aria-label":x?"Hide intelligence panel":"Show intelligence panel","aria-pressed":x,title:"Intelligence",className:T("shrink-0",x&&"bg-accent-2-soft text-accent-2")})]}),t.jsx(cr.Provider,{value:y.enabled,children:t.jsx("div",{ref:y.ref,className:"flex-1 overflow-y-auto",style:{touchAction:y.touchAction},...y.bind(),children:i??[...e.messages].reverse().map(u=>{const b=m=>m?()=>m(u.id):void 0;return u.expanded?t.jsx(ga,{message:u,warning:e.warning,onHeaderClick:b(o?.onToggleExpand),actionBar:t.jsx(ha,{hasThread:!0,onReply:b(o?.onReply),onReplyAll:b(o?.onReplyAll),onForward:b(o?.onForward),onToggleStar:b(o?.onToggleStar),onDelete:b(o?.onDelete),onToggleRead:b(o?.onToggleRead),moveSlot:o?.moveSlot?.(u.id)})},u.id):t.jsx(pa,{message:u,onClick:b(o?.onToggleExpand)},u.id)})})}),n&&!p&&t.jsx(dr,{open:x,onClose:d,title:"Intelligence",anchor:"right",className:"p-0",children:t.jsx(ra,{data:n,onClose:d,className:"h-full w-full border-l-0"})})]})}function Xl(e){return{id:e.id,fromName:e.sender,fromEmail:e.senderEmail??e.sender,subject:e.subject,snippet:e.snippet,timeLabel:e.date,isRead:!e.unread,starred:e.flagged,...e.mailboxId?{mailboxId:e.mailboxId}:{}}}function ec({result:e,onClick:s,query:n,showFolder:r=!0}){const a=r&&e.folder?ur(e.folder):void 0;return t.jsx("button",{type:"button",onClick:s,className:T("group",ht({}),"border-b border-line"),children:t.jsx(pt,{thread:Xl(e),highlightQuery:n,badge:t.jsxs(t.Fragment,{children:[a&&t.jsx(Ce,{tone:"neutral",className:"shrink-0",children:a}),e.category&&t.jsx(Ce,{tone:e.category.tone??"neutral",className:"shrink-0",children:e.category.label})]})})})}const sc=e=>e===1?"result":"results";function tc({count:e,onScopeToSpam:s}){return t.jsx(Nn,{tone:"info",variant:"soft",className:"items-center justify-between gap-3 rounded-none border-b border-line",children:t.jsxs("div",{className:"flex items-center justify-between gap-3",children:[t.jsx("p",{className:"min-w-0 text-xs text-fg-muted",children:e.kind==="exact"?t.jsxs(t.Fragment,{children:[t.jsx("span",{className:"font-semibold text-fg tabular-nums",children:e.value.toLocaleString()})," ",`${sc(e.value)} from Spam`]}):"Results from Spam"}),t.jsx($,{variant:"ghost",size:"sm",onClick:s,className:"shrink-0 text-accent",children:"Go to Spam"})]})})}const qt=6,nc={kind:"global"},Qt={kind:"unknown"},ac=e=>e.kind==="folder"&&e.role==="junk",rc=e=>e.folder?.role==="junk";function oc(e){const s=[],n=[];for(const r of e)rc(r)?n.push(r):s.push(r);return{kept:s,spam:n}}function xa({onClick:e,blockedReason:s}){const n=c.useId(),[r,a]=c.useState(!1);return t.jsxs("div",{className:"border-b border-line px-row-inset py-1.5",children:[t.jsxs("button",{type:"button",onClick:()=>{if(s){a(!0);return}e()},"aria-describedby":s?n:void 0,className:T("flex w-full items-center gap-1.5 rounded-md px-2 py-1.5 text-left text-xs font-medium transition-colors",s?"text-fg-subtle opacity-55":"text-accent hover:bg-surface-sunken"),children:[t.jsx(mr,{className:"size-3.5 shrink-0","aria-hidden":"true"}),t.jsx("span",{children:"Make this a filter"})]}),s&&t.jsx(fr,{id:n,reason:s,nudged:r,className:"px-2 pt-1 text-2xs text-warning"})]})}function ic({section:e,query:s,onSelectResult:n,showFolder:r}){const[a,o]=c.useState(e.initialCollapsed??!1),[i,l]=c.useState(!1),f=e.results.length>qt,v=!i&&f?e.results.slice(0,qt):e.results,j=e.results.length-v.length;return t.jsxs("div",{children:[t.jsxs("button",{type:"button","aria-expanded":!a,onClick:()=>o(p=>!p),className:"sticky top-0 z-10 flex h-section-row w-full items-center gap-1.5 border-b border-line bg-surface-sunken px-row-inset text-left transition-colors hover:bg-surface",children:[t.jsx("span",{className:"flex-1 text-2xs font-semibold uppercase tracking-wider text-fg-subtle",children:e.label}),t.jsx("span",{className:"text-2xs text-fg-subtle tabular-nums",children:e.results.length}),t.jsx(ke,{className:T("size-3 shrink-0 text-fg-subtle transition-transform duration-200",a?"rotate-0":"rotate-180")})]}),!a&&t.jsxs(t.Fragment,{children:[v.map(p=>t.jsx(ec,{result:p,query:s,showFolder:r,onClick:n?()=>n(p):void 0},p.id)),f&&t.jsxs("button",{type:"button",onClick:()=>l(p=>!p),className:"flex w-full items-center justify-center border-b border-line px-row-inset py-1.5 text-2xs font-medium text-accent transition-colors hover:bg-surface",children:[i?"Show less":`Show ${j} more`,!i&&t.jsx(ke,{className:"ml-1 size-3"})]})]})]})}function ba({value:e,recentSearches:s,onPickRecent:n,sections:r,loading:a,onSelectResult:o,tokens:i,scope:l=nc,makeFilter:f}){if(!(e.trim().length>0))return s&&s.length>0?t.jsxs("div",{className:"flex flex-col",children:[t.jsx("h3",{className:"px-row-inset pb-1 pt-3 text-2xs font-semibold uppercase tracking-wide text-fg-subtle",children:"Recent searches"}),s.map(R=>t.jsxs("button",{type:"button",onClick:()=>n?.(R),className:"flex w-full items-center gap-2.5 border-b border-line px-row-inset py-2.5 text-left transition-colors hover:bg-surface-sunken",children:[t.jsx(Yn,{className:"size-4 shrink-0 text-fg-subtle"}),t.jsx("span",{className:"min-w-0 flex-1 truncate text-sm text-fg-muted",children:R})]},R))]}):t.jsx("p",{className:"px-row-inset py-6 text-center text-sm text-fg-subtle",children:"Search across your mail by sender, subject or words in the message."});const v=i&&i.length>0&&t.jsx(hr,{tokens:i}),j=f&&t.jsx(xa,{...f});if(a)return t.jsxs("div",{className:"flex flex-col",children:[j,v,t.jsx("div",{className:"flex flex-col gap-3 px-row-inset py-4",children:[0,1,2,3].map(R=>t.jsxs("div",{className:"flex flex-col gap-1.5",children:[t.jsx("div",{className:"h-3 w-1/3 animate-pulse rounded bg-surface-sunken"}),t.jsx("div",{className:"h-3 w-2/3 animate-pulse rounded bg-surface-sunken"}),t.jsx("div",{className:"h-2.5 w-1/2 animate-pulse rounded bg-surface-sunken"})]},R))})]});const p=l.kind==="global",x=ac(l)||l.kind==="collection",g=p||l.kind==="collection",h=(r??[]).map(R=>{if(x)return{section:R,spam:[]};const{kept:E,spam:A}=oc(R.results);return{section:{...R,results:E},spam:A}}),d=h.map(R=>R.section),u=h.reduce((R,E)=>R+E.spam.length,0),m=(l.kind==="global"?l.spamCount:void 0)??Qt,k=u>0||m.kind==="exact"&&m.value>0,w=m.kind==="exact"&&m.value===0&&u>0?Qt:m,M=l.kind==="global"&&k&&l.onScopeToSpam!==void 0?t.jsx(tc,{count:w,onScopeToSpam:l.onScopeToSpam}):void 0;return d.some(R=>R.results.length>0)?t.jsxs("div",{className:"flex flex-col",children:[j,v,M,d.filter(R=>R.results.length>0).map(R=>t.jsx(ic,{section:R,query:e,showFolder:g,onSelectResult:o},R.id))]}):t.jsxs("div",{className:"flex flex-col",children:[j,v,M,t.jsxs("div",{className:"px-row-inset py-10 text-center",children:[t.jsxs("p",{className:"text-sm font-medium text-fg",children:["No matches for “",e,"”"]}),t.jsx("p",{className:"mt-1 text-xs text-fg-subtle",children:"Try a different word, or adjust the filters above."})]})]})}function lc({value:e,onChange:s,onClear:n,onCancel:r,filter:a,recentSearches:o,onPickRecent:i,sections:l,loading:f,onSelectResult:y,tokens:v,chips:j,onRemoveChip:p,scope:x,makeFilter:g,suggest:h,suggestList:d}){const u=t.jsx(ba,{value:e,recentSearches:o,onPickRecent:i,sections:l,loading:f,onSelectResult:y,tokens:v,scope:x,makeFilter:g});return t.jsxs("article",{className:"flex h-full w-full min-w-0 flex-col bg-canvas",children:[t.jsxs("header",{className:"flex h-pane-header shrink-0 items-center gap-2 border-b border-line bg-surface px-row-inset",children:[t.jsx("div",{className:"min-w-0 flex-1",children:t.jsx($n,{value:e,onChange:s,onClear:n,chips:j,onRemoveChip:p,globalFocusKey:!1,showClearButton:!1,suggest:h})}),t.jsx($,{variant:"ghost",size:"sm",icon:t.jsx(_e,{className:"size-4"}),onClick:r,"aria-label":"Clear and close search",className:"-mr-1 shrink-0"})]}),d,a&&e.trim().length===0?t.jsx(pr,{children:t.jsx(yn,{...a,children:u})}):t.jsx("div",{className:"flex-1 overflow-y-auto",children:u})]})}const Ht=e=>e.toLocaleString();function Wt({selectAll:e,selecting:s,className:n}){return t.jsx(Wi,{className:n,checked:e.checked,indeterminate:e.indeterminate,onChange:e.onChange,label:t.jsx("span",{className:"font-medium text-accent",children:e.checked&&s?"Deselect all":"Select all"})})}function cc({title:e,count:s,onCancel:n,onDelete:r,onMove:a,onOrganize:o,onJunk:i,onMarkRead:l,navSlot:f,titleMeta:y,searchSlot:v,searchField:j,idleSlot:p,overflowSlot:x,isBusy:g=!1,isCounting:h=!1,selectAll:d,statusLabel:u,progress:b,notice:m}){const k=s>0||h,C=d?.checked?`All ${Ht(s)} loaded selected`:`${Ht(s)} ${s===1?"message":"messages"} selected`,w=[];return i&&!g&&!h&&w.push({key:"junk",label:"Junk",icon:t.jsx($e,{className:"size-4"}),onSelect:i}),l&&!g&&!h&&w.push({key:"mark-read",label:"Mark read",icon:t.jsx(mt,{className:"size-4"}),onSelect:l}),t.jsxs("header",{"data-selection-bar":"",className:"flex shrink-0 flex-col border-b border-line bg-surface-sunken",children:[t.jsxs("div",{"data-selection-bar-row":"actions",className:"flex h-pane-header items-center gap-1 px-row-inset",children:[k?t.jsx($,{variant:"ghost",size:"touch",icon:t.jsx(wn,{className:"size-5"}),onClick:n,"aria-label":"Cancel selection",className:"-ml-2 shrink-0"}):f,d&&t.jsx(Wt,{selectAll:d,selecting:k,className:"hidden shrink-0 pr-2 md:flex"}),k?t.jsx("span",{"data-selection-count":"",className:"min-w-0 flex-1 truncate px-1 text-sm font-medium text-fg",role:"status","aria-live":"polite",children:u??C}):j?t.jsx("div",{className:"flex min-w-0 flex-1 items-center gap-1",children:j}):t.jsxs(t.Fragment,{children:[t.jsx("h1",{className:"min-w-0 flex-1 truncate px-1 text-sm font-semibold text-fg",children:e}),y,v]}),k&&!h&&t.jsxs(t.Fragment,{children:[t.jsx($,{variant:"ghost",size:"touch",icon:g?t.jsx(vn,{className:"size-5 animate-spin"}):t.jsx(ss,{className:"size-5 text-danger"}),onClick:g?void 0:r,"aria-label":"Move selected messages to Trash","aria-busy":g||void 0,className:"shrink-0"}),!g&&a&&t.jsx($,{variant:"ghost",size:"touch",icon:t.jsx(lt,{className:"size-5"}),onClick:a,"aria-label":"Move selected messages",className:"shrink-0"}),!g&&o&&t.jsx($,{variant:"ghost",size:"touch",icon:t.jsx(Be,{className:"size-5"}),onClick:o,"aria-label":"Organize selected messages",className:"shrink-0"})]}),k&&t.jsx(Kn,{triggerLabel:"More actions",items:w,className:"shrink-0",children:!g&&!h&&x})]}),!k&&p,k&&d&&t.jsx("div",{"data-selection-bar-row":"select-all",className:"px-row-inset pb-2 md:hidden",children:t.jsx(Wt,{selectAll:d,selecting:k,className:"w-full"})}),b&&t.jsx("div",{className:"px-row-inset pb-2",children:t.jsx(gr,{value:b.value,max:b.max,tone:b.tone})}),m&&t.jsx(Nn,{"data-selection-notice":"",tone:m.tone,variant:"soft",role:"status","aria-live":"polite",className:"mx-row-inset mb-2",children:t.jsxs("div",{className:"flex items-center justify-between gap-2",children:[m.text&&t.jsx("span",{children:m.text}),m.action&&t.jsx($,{variant:"ghost",size:"md",onClick:m.action.onClick,className:"-my-1 min-h-11 shrink-0",children:m.action.label})]})})]})}const va={id:"unread",label:"Unread"},dc={id:"flagged",label:"Starred"},ya={id:"attachment",label:"Has attachment"};function uc(e){if(!(e.length<=1))return e.map(s=>({id:s.id,label:s.label,count:s.count,active:s.active}))}function mf(e=[]){return{categories:[...Is],filters:jn,sources:uc(e)}}function ff(){return{categories:[...Is],filters:[va,dc,ya]}}function hf(){return{categories:[...Is],filters:[va,ya]}}function mc(e,s){return e.endsWith(s)?e.length===s.length||e[e.length-s.length-1]===".":!1}function fc(e,s){const n=e.length-s.length-2,r=e.lastIndexOf(".",n);return r===-1?e:e.slice(r+1)}function hc(e,s,n){if(n.validHosts!==null){const a=n.validHosts;for(const o of a)if(mc(s,o))return o}let r=0;if(s.startsWith("."))for(;r<s.length&&s[r]===".";)r+=1;return e.length===s.length-r?null:fc(s,e)}const Gs=/[\t\n\r]/g;let tt=!1;function Gt(e){return e>=97&&e<=122||e>=48&&e<=57||e>127||e>=65&&e<=90||e===45||e===95}function Vt(e,s,n){const r=n-s,a=e.charCodeAt(s)|32;if(r===2)return a===119&&(e.charCodeAt(s+1)|32)===115?1:0;if(r===3){const o=e.charCodeAt(s+1)|32,i=e.charCodeAt(s+2)|32;return a===119&&o===115&&i===115||a===102&&o===116&&i===112?1:0}else if(r===4){const o=e.charCodeAt(s+1)|32,i=e.charCodeAt(s+2)|32,l=e.charCodeAt(s+3)|32;return a===104&&o===116&&i===116&&l===112?1:a===102&&o===105&&i===108&&l===101?2:0}else if(r===5)return a===104&&(e.charCodeAt(s+1)|32)===116&&(e.charCodeAt(s+2)|32)===116&&(e.charCodeAt(s+3)|32)===112&&(e.charCodeAt(s+4)|32)===115?1:0;return 0}function Ye(e,s,n=!1){let r=0,a=e.length,o=!1,i=!1;if(tt=!1,!s){if(e.startsWith("data:"))return null;for(;r<e.length&&e.charCodeAt(r)<=32;)r+=1;for(;a>r+1&&e.charCodeAt(a-1)<=32;)a-=1;if(e.charCodeAt(r)===47&&e.charCodeAt(r+1)===47)r+=2;else{const d=e.indexOf(":/",r);if(d!==-1){const u=Vt(e,r,d);if(u===1)for(i=!0,r=d+2;e.charCodeAt(r)===47||e.charCodeAt(r)===92;)r+=1;else if(u===2){i=!0,r=d+1;let b=0;for(;(e.charCodeAt(r)===47||e.charCodeAt(r)===92)&&b<2;)r+=1,b+=1;if(b<2)return null}else{for(let b=r;b<d;b+=1){const m=e.charCodeAt(b)|32;if(!(m>=97&&m<=122||m>=48&&m<=57||m===46||m===45||m===43)){const k=e.charCodeAt(b);return k===9||k===10||k===13?Ye(e.replace(Gs,""),s,n):null}}if(e.charCodeAt(d+2)===47)r=d+3;else return null}}else if(e.charCodeAt(r)!==91){let u=-1;for(let b=r;b<a;b+=1){const m=e.charCodeAt(b);if(m===9||m===10||m===13)return Ye(e.replace(Gs,""),s,n);if(m===58){u=b;break}if(m===47||m===92||m===63||m===35)break}if(u!==-1){let b=!1;for(let m=u+1;m<a;m+=1){const k=e.charCodeAt(m);if(k===47||k===92||k===63||k===35)break;if(k===64){b=!0;break}}if(!b){let m=!0,k=u+1;for(;k<a;k+=1){const C=e.charCodeAt(k);if(C===47||C===92||C===63||C===35)break;if(C<48||C>57){m=!1;break}}if(k===u+1&&(m=!1),!m){const C=Vt(e,r,u);if(C===0){let w=!1;for(let M=u+1;M<a;M+=1){const N=e.charCodeAt(M);if(N===47||N===92||N===63||N===35)break;if(N===58){w=!0;break}}if(!w)return null}else if(i=!0,r=u+1,C===2){let w=0;for(;(e.charCodeAt(r)===47||e.charCodeAt(r)===92)&&w<2;)r+=1,w+=1;if(w<2)return null}else for(;e.charCodeAt(r)===47||e.charCodeAt(r)===92;)r+=1}}}}}let f=-1,y=-1,v=-1,j=-1,p=!1,x=n,g=r-1,h=-1;if(n&&r<a){const d=e.charCodeAt(r);(!(Gt(d)||d===46||d===95)||d===45)&&(x=!1)}for(let d=r;d<a;d+=1){const u=e.charCodeAt(d);if(u<64)if(u===47||u===35||u===63){a=d;break}else u===58?(j===-1&&(j=d),v=d):u===9||u===10||u===13?p=!0:n&&(u===46?((d-g>64||h===46||h===45)&&(x=!1),g=d):(u<48||u>57)&&(u!==45||h===46)&&(x=!1));else if(i&&u===92){a=d;break}else u===64?(f=d,j=-1):u===93?y=d:u>=65&&u<=90?o=!0:n&&!Gt(u)&&(x=!1);n&&(h=u)}if(p)return Ye(e.replace(Gs,""),s,n);if(f!==-1&&f>=r&&f<a&&(r=f+1),e.charCodeAt(r)===91)return y!==-1?e.slice(r+1,y).toLowerCase():null;if(v!==-1&&v>r&&v<a&&j===v&&(a=v),r>=a)return null;n&&x&&f===-1&&v===-1&&y===-1&&e.charCodeAt(a-1)!==46&&a-r<=255&&a-g-1<=63&&h!==45&&(tt=!0)}for(;a>r+1&&e.charCodeAt(a-1)===46;)a-=1;const l=r!==0||a!==e.length?e.slice(r,a):e;return o?l.toLowerCase():l}function pc(e){if(e.length<7||e.length>15)return!1;let s=0;for(let n=0;n<e.length;n+=1){const r=e.charCodeAt(n);if(r===46)s+=1;else if(r<48||r>57)return!1}return s===3&&e.charCodeAt(0)!==46&&e.charCodeAt(e.length-1)!==46}function gc(e){if(e.length<3)return!1;let s=e.startsWith("[")?1:0,n=e.length;if(e[n-1]==="]"&&(n-=1),n-s>39)return!1;let r=!1;for(;s<n;s+=1){const a=e.charCodeAt(s);if(a===58)r=!0;else if(!(a>=48&&a<=57||a>=97&&a<=102||a>=65&&a<=70))return!1}return r}function xc(e){return gc(e)||pc(e)}function Jt(e){return e>=97&&e<=122||e>=48&&e<=57||e>127}function Yt(e){if(e.length>255||e.length===0||!Jt(e.charCodeAt(0))&&e.charCodeAt(0)!==46&&e.charCodeAt(0)!==95)return!1;let s=-1,n=-1;const r=e.length;for(let a=0;a<r;a+=1){const o=e.charCodeAt(a);if(o===46){if(a-s>64||n===46||n===45)return!1;s=a}else if(!(Jt(o)||o===45||o===95)||o===45&&n===46)return!1;n=o}return r-s-1<=63&&n!==45}function bc({allowIcannDomains:e=!0,allowPrivateDomains:s=!1,detectIp:n=!0,detectSpecialUse:r=!1,extractHostname:a=!0,mixedInputs:o=!0,validHosts:i=null,validateHostname:l=!0}){return{allowIcannDomains:e,allowPrivateDomains:s,detectIp:n,detectSpecialUse:r,extractHostname:a,mixedInputs:o,validHosts:i,validateHostname:l}}const vc=bc({});function yc(e){return vc}function jc(){return{domain:null,domainWithoutSuffix:null,hostname:null,isIcann:null,isIp:null,isPrivate:null,isSpecialUse:null,publicSuffix:null,subdomain:null}}function kc(e){e.domain=null,e.domainWithoutSuffix=null,e.hostname=null,e.isIcann=null,e.isIp=null,e.isPrivate=null,e.isSpecialUse=null,e.publicSuffix=null,e.subdomain=null}function Cc(e,s,n,r,a){const o=yc();if(typeof e!="string")return a;let i=!1;return o.extractHostname?o.mixedInputs?(i=Yt(e),a.hostname=Ye(e,i,o.validateHostname)):a.hostname=Ye(e,!1,o.validateHostname):a.hostname=e,o.detectIp&&a.hostname!==null&&(a.isIp=xc(a.hostname),a.isIp)?a:o.validateHostname&&o.extractHostname&&a.hostname!==null&&!(i&&a.hostname===e)&&!tt&&!Yt(a.hostname)?(a.hostname=null,a):(a.hostname===null||(n(a.hostname,o,a),a.publicSuffix===null)||(a.domain=hc(a.publicSuffix,a.hostname,o)),a)}const Zt=jc();function wc(e,s){return kc(Zt),Cc(e,3,xr,s,Zt).domain}const gt=e=>{const s=new Set,n=[];for(const r of e){const a=r.trim();if(a==="")continue;const o=a.toLowerCase();s.has(o)||(s.add(o),n.push(a))}return n},Nc=e=>{const s=e.lastIndexOf("@");return s>=0?e.slice(s+1):e},ja=e=>wc(Nc(e.trim())),Sc=e=>{const s=gt(e);if(s.length<2)return null;let n=null;for(const r of s){const a=ja(r);if(a===null)return null;if(n===null)n=a;else if(n!==a)return null}return n},Ic=e=>{const s=Sc(e);return s!==null?[{field:"FromDomain",value:s}]:gt(e).map(n=>({field:"From",value:n}))},Rc=e=>{const s=new Map;for(const a of e){const o=a.normalizedEmail.trim().toLowerCase();if(o==="")continue;const i=s.get(o);i?i.count+=1:s.set(o,{sender:a,count:1})}let n,r=0;for(const{sender:a,count:o}of s.values())o<=r||(n=a,r=o);return n},ka=e=>e.displayName?.trim()||e.normalizedEmail,Mc=/^\s*(?:(?:re|aw|fwd?|vs|sv|antw|res|enc|tr)\s*(?:\[\d+\])?\s*:|\[[^\]]{1,32}\])\s*/i,Tc=e=>{let s=e.replace(/\s+/g," ").trim();for(;;){const n=s.replace(Mc,"");if(n===s)return s.trim();s=n}},Ac=new Set(["a","an","and","are","as","at","be","by","for","from","has","have","in","is","it","me","my","new","of","on","or","our","the","this","to","was","we","with","you","your"]),Ec=3,Vs=e=>e.split(" ").filter(s=>s!==""),Xt=e=>e.length===0||e.join(" ").length<Ec?!1:e.some(s=>!Ac.has(s.toLowerCase())),Fc=(e,s)=>e.findIndex((n,r)=>s.every((a,o)=>e[r+o]?.toLowerCase()===a.toLowerCase())),Dc=e=>{const s=e.map(Tc).filter(o=>o!=="");if(s.length===0)return;const[n,...r]=s;if(r.length===0)return Xt(Vs(n))?n:void 0;const a=Vs(n);for(let o=a.length;o>0;o-=1)for(let i=0;i+o<=a.length;i+=1){const l=a.slice(i,i+o);if(Xt(l)&&r.every(f=>Fc(Vs(f),l)>=0))return l.join(" ")}},Lc=(e,s)=>{const n=Ic(e);if(gt(e).length===1||n.length===1&&n[0].field==="FromDomain")return n;const r=Dc(s);return r!==void 0?[{field:"Subject",value:r}]:n},Oc=({match:e,sender:s,folder:n})=>{const r=e??s;return r?n?`${r} → ${n}`:e?`Mail matching ${e}`:`Mail from ${r}`:n?`Mail to ${n}`:""},zc=e=>e.clauses.length>0,Pc=e=>({scopedOutFolder:e.scopedOut?.label,droppedFacets:e.droppedFacets.map(s=>s.label)}),_c=({orderedIds:e,isDesktop:s,initialFocusedId:n,initialSelectedIds:r,onExitSelection:a})=>{const[o,i]=c.useState(n),[l,f]=c.useState(),y=c.useCallback(D=>{f(z=>z===D?z:void 0),i(D)},[]),v=Bl({initialSelectedIds:r}),{selectedCount:j,toggle:p,clearSelection:x,selectRange:g,setAnchor:h,selectAll:d}=v,u=Ll(j,s),b=c.useRef(null),m=c.useRef(!1),k=c.useCallback(()=>{a?.(),x()},[x,a]),C=c.useMemo(()=>o?e.indexOf(o):-1,[e,o]),w=c.useCallback(D=>{if(D<0||D>=e.length)return;const z=e[D];if(u){p(z);return}b.current=z,m.current=!1,f(z),i(z)},[e,u,p]),M=c.useCallback(()=>{e.length!==0&&w(C<0?0:Math.min(C+1,e.length-1))},[e.length,C,w]),N=c.useCallback(()=>{e.length!==0&&w(C<=0?0:C-1)},[e.length,C,w]),R=c.useCallback(()=>w(0),[w]),E=c.useCallback(()=>w(e.length-1),[w,e.length]),A=c.useCallback(()=>{o&&p(o)},[o,p]),U=c.useCallback((D,z)=>{const P=Dl(z);return P==="range"?(g(e,D,o),!0):P==="toggle"?(p(D),!0):(k(),h(D),!1)},[e,o,g,p,k,h]),F=c.useCallback(D=>{const z=_l(e,o,D);z!==void 0&&(g(e,z),b.current=z,m.current=!1,f(void 0),i(z))},[e,o,g]),B=c.useCallback(()=>F(-1),[F]),q=c.useCallback(()=>F(1),[F]),Q=c.useCallback(()=>{e.length>0&&d(e)},[e,d]);return{focusedMessageId:o,setFocusedMessageId:y,keyboardFocusedMessageId:l,focusIndex:C,pendingDomFocusRef:b,cursorMovedByPointerRef:m,selection:v,isMultiSelectMode:u,exitSelection:k,moveFocusToIndex:w,focusNext:M,focusPrevious:N,focusFirst:R,focusLast:E,toggleFocusedSelection:A,extendRangeUp:B,extendRangeDown:q,selectAllLoaded:Q,handleRowSelect:U}};function Bc(e,s){if(e===void 0)return{shouldBlockFn:()=>!0,withResolver:!1};if("shouldBlockFn"in e)return e;if(typeof e=="function")return{shouldBlockFn:async()=>await e(),enableBeforeUnload:!0,withResolver:!1};const n=!!(e.condition??!0),r=e.blockerFn;return{shouldBlockFn:async()=>n&&r!==void 0?await r():n,enableBeforeUnload:n,withResolver:r===void 0}}function Uc(e,s){const{shouldBlockFn:n,enableBeforeUnload:r=!0,disabled:a=!1,withResolver:o=!1}=Bc(e),i=br(),{history:l}=i,[f,y]=c.useState({status:"idle",current:void 0,next:void 0,action:void 0,proceed:void 0,reset:void 0});return c.useEffect(()=>{const v=async j=>{function p(u){const b=i.parseLocation(u),m=i.getMatchedRoutes(b.pathname);return m.foundRoute===void 0?{routeId:"__notFound__",fullPath:b.pathname,pathname:b.pathname,params:m.routeParams,search:i.options.parseSearch(u.search)}:{routeId:m.foundRoute.id,fullPath:m.foundRoute.fullPath,pathname:b.pathname,params:m.routeParams,search:i.options.parseSearch(u.search)}}const x=p(j.currentLocation),g=p(j.nextLocation);if(x.routeId==="__notFound__"&&g.routeId!=="__notFound__")return!1;const h=await n({action:j.action,current:x,next:g});if(!o)return h;if(!h)return!1;const d=await new Promise(u=>{y({status:"blocked",current:x,next:g,action:j.action,proceed:()=>u(!1),reset:()=>u(!0)})});return y({status:"idle",current:void 0,next:void 0,action:void 0,proceed:void 0,reset:void 0}),d};return a?void 0:l.block({blockerFn:v,enableBeforeUnload:r})},[n,r,a,o,l,i]),f}function pf(){const{insertIntoOpenReply:e}=Sn(),s=In();return c.useCallback((n,r)=>{e(n.messageId,r)||s({...n,mode:"reply"},{body:r})},[e,s])}const Os=e=>{const{data:s,isLoading:n}=te({...ts(),staleTime:1/0,enabled:!!e}),r=c.useMemo(()=>(s?.accounts??[]).map(l=>l.accountId),[s?.accounts]),a=ut({queries:r.map(l=>({...ns({path:{accountId:l}}),staleTime:1/0,enabled:!!e}))}),o=n||a.some(l=>l.isLoading);return{accountId:c.useMemo(()=>{if(e){for(let l=0;l<r.length;l++)if((a[l].data?.items??[]).some(v=>v.mailboxId===e))return r[l]}},[e,r,a]),isLoading:o}},$c=({surface:e})=>{const s=vr(),n=yr(),{registerOpenReply:r}=Sn(),[a,o]=c.useState(),i=c.useCallback(p=>o(x=>({version:(x?.version??0)+1,text:p})),[]),l=e.sourceMessageId;c.useEffect(()=>r(l,i),[l,i,r]);const{data:f}=te({...As({path:{messageId:e.sourceMessageId}})}),{data:y}=te({...ts(),staleTime:1/0}),{accountId:v}=Os(f?.message.mailboxId),j=y?.accounts?.find(p=>p.accountId===v);return t.jsx("div",{className:"border-b border-line bg-canvas",children:t.jsx(Go,{layout:"flow",mode:e.mode,account:j,sourceMessage:f,outboxMessageId:e.outboxMessageId,seed:e.seed,insertion:a,onDraftCreated:s,onClose:n},e.sourceMessageId)})},Kc=3e3,qc=(e,s,n)=>{if(e.length===0)return()=>{};const r=setTimeout(()=>n(e),s);return()=>clearTimeout(r)},xt=(e,s,n)=>{const r=new Map(s.map(o=>[o.messageId,o.mailboxId])),a=new Set;for(const o of e)a.add(r.get(o)??n);return[...a]},Ns=(e,s,n)=>e.map(r=>s.has(r.messageId)?{...r,isRead:n}:r),Qc=(e,s,n,r)=>e.filter(a=>!a.isRead&&s.has(a.threadMessageId)&&!n.has(a.messageId)&&!r.has(a.messageId)).map(a=>a.messageId),Hc=({messages:e,expandedIds:s,threadId:n,mailboxId:r,accountId:a})=>{const o=ue(),{pushError:i}=be(),l=c.useRef(new Set),f=c.useRef(new Set),{mutate:y}=xe({...Es(),meta:jr,onMutate:async p=>{const x=new Set(p.body.messageIds??[]),g=p.body.isRead??!0,h=Ie({path:{threadId:n}}),d=Ne(xt(x,e,r));await Promise.all([o.cancelQueries({queryKey:h}),os(o,d)]);const u=o.getQueriesData({queryKey:h}).filter(m=>m[1]!==void 0).map(([m,k])=>({queryKey:m,data:k})),b=is(o,d);return o.setQueriesData({queryKey:h},m=>m&&{...m,items:Ns(m.items,x,g)}),ls(o,d,m=>Ns(m,x,g)),{threadMessagesPrefix:h,listPrefixes:d,previousThreadMessages:u,previousThreadsList:b}},onSuccess:(p,x)=>{const g=x.body.messageIds??[];for(const h of g)l.current.add(h),f.current.delete(h)},onError:(p,x,g)=>{const h=x.body.messageIds??[];for(const u of h)f.current.delete(u);if(g){for(const u of g.previousThreadMessages)o.setQueryData(u.queryKey,u.data);rs(o,g.previousThreadsList)}const d=x.body.isRead??!0;i({title:d?"Couldn't mark as read":"Couldn't mark as unread",detail:Se(p),error:p})},onSettled:(p,x,g,h)=>{h&&(o.invalidateQueries({queryKey:h.threadMessagesPrefix}),we(o,h.listPrefixes),a&&o.invalidateQueries({queryKey:as({path:{accountId:a}})}))}}),v=c.useCallback(p=>{const x=p.filter(g=>!l.current.has(g)&&!f.current.has(g));if(x.length!==0){for(const g of x)f.current.add(g);y({body:{messageIds:x,isRead:!0}})}},[y]),j=c.useMemo(()=>Qc(e,s,l.current,f.current),[e,s]);c.useEffect(()=>qc(j,Kc,v),[j,v]),c.useEffect(()=>{l.current.clear(),f.current.clear()},[n])},gf=e=>{const{mailboxId:s,accountId:n,messages:r}=e,a=ue(),{pushError:o}=be(),{mutateAsync:i,isPending:l}=xe({...Es(),onError:(y,v)=>{const j=v.body.isRead??!0;o({title:j?"Couldn't mark as read":"Couldn't mark as unread",detail:Se(y),error:y})},onSettled:(y,v,j)=>{we(a,Ne(xt(j.body.messageIds??[],r??[],s))),n&&a.invalidateQueries({queryKey:as({path:{accountId:n}})})}});return{toggleReadFor:c.useCallback((y,v)=>{y.length!==0&&Ze(y,j=>i({body:{messageIds:j,isRead:v}}))},[i]),isPending:l}},Wc=(e,s,n)=>s?.find(r=>r.messageId===e)?.mailboxId??n,en=(e,s,n)=>e.map(r=>r.messageId===s?{...r,hasStars:n}:r),Ca=({threadId:e,mailboxId:s,messages:n})=>{const r=ue(),{pushError:a}=be(),{mutate:o,isPending:i,variables:l}=xe({...Cr(),onMutate:async y=>{const v=y.path.messageId,j=y.body.isStarred??!1,p=Ie({path:{threadId:e}}),x=Ne([Wc(v,n,s)]);await Promise.all([r.cancelQueries({queryKey:p}),os(r,x)]);const g=r.getQueriesData({queryKey:p}).filter(d=>d[1]!==void 0).map(([d,u])=>({queryKey:d,data:u})),h=is(r,x);return r.setQueriesData({queryKey:p},d=>kr(d,u=>en(u,v,j))),ls(r,x,d=>en(d,v,j)),{threadMessagesPrefix:p,listPrefixes:x,previousThreadMessages:g,previousThreadsList:h}},onError:(y,v,j)=>{if(j){for(const x of j.previousThreadMessages)r.setQueryData(x.queryKey,x.data);rs(r,j.previousThreadsList)}const p=v.body.isStarred??!1;a({title:p?"Couldn't star message":"Couldn't unstar message",detail:Se(y),error:y})},onSettled:(y,v,j,p)=>{p&&(r.invalidateQueries({queryKey:p.threadMessagesPrefix}),we(r,p.listPrefixes))}});return{toggleStar:(y,v)=>{o({path:{messageId:y},body:{isStarred:!v}})},isPending:i,pendingMessageId:i?l?.path.messageId:void 0}};function sn({authenticity:e,onOpenIntelligence:s}){return e.dkimMismatch?t.jsxs("div",{className:"flex items-start gap-2 rounded-none border-b border-danger/20 bg-danger-soft px-5 py-2.5 text-sm",children:[t.jsx($e,{className:"mt-0.5 size-4 shrink-0 text-danger"}),t.jsxs("p",{className:"flex-1 leading-snug text-fg",children:["This message claims to be from"," ",t.jsx("span",{className:"font-semibold",children:e.fromDomain})," but was sent",e.dkimDomain?` via ${e.dkimDomain}`:" from a different domain","."," ",s&&t.jsx("button",{type:"button",onClick:s,className:"font-medium text-danger hover:underline",children:"Why?"})]})]}):null}function wa(e){return e===void 0?"uncategorized":e}const Gc={inbox:"Inbox",junk:"Junk"},bt=e=>e.destinationMailboxId!==void 0,Vc=(e,s)=>{if(bt(e))return`Moved from ${s??"another folder"} by Remit`;const n=e.fromPlacement??"";return`Moved from ${Gc[n]??"another folder"} by Remit`},Jc=(e,s)=>{if(e===Rt.MoveToInbox)return s.inboxMailboxId;if(e===Rt.MoveToJunk)return s.junkMailboxId},Yc=(e,s,n)=>{if(!e||!s)return!1;const r=bt(e)?e.destinationMailboxId:Jc(e.action,n);return r!==void 0&&r===s},Zc="Reported as spam",Xc=(e,s)=>{if(e){if(bt(e))return e.fromMailboxId;if(e.fromPlacement==="inbox")return s.inboxMailboxId;if(e.fromPlacement==="junk")return s.junkMailboxId}},ds=(e,s)=>{const{data:n,isLoading:r}=te({...ts(),staleTime:1/0,enabled:!!e});return{mailboxId:c.useMemo(()=>e?n?.accounts.find(i=>i.accountId===e)?.folderAppointments.find(i=>i.role===s)?.mailboxId:void 0,[n,e,s]),isLoading:r}},xf=e=>{const{mailboxId:s,isLoading:n}=ds(e,"Archive");return{archiveMailboxId:s,isLoading:n}},bf=e=>{const{mailboxId:s,isLoading:n}=ds(e,"Drafts");return{draftsMailboxId:s,isLoading:n}},Na=e=>{const{mailboxId:s,isLoading:n}=ds(e,"Inbox");return{inboxMailboxId:s,isLoading:n}},Sa=e=>{const{mailboxId:s,isLoading:n}=ds(e,"Junk");return{junkMailboxId:s,isLoading:n}},vf=e=>{const{mailboxId:s,isLoading:n}=ds(e,"Trash");return{trashMailboxId:s,isLoading:n}},ed=()=>{const{data:e,isError:s}=te({...ts(),staleTime:1/0});return{trashByAccount:c.useMemo(()=>{const r=new Map;for(const a of e?.accounts??[]){const o=a.folderAppointments.find(i=>i.role==="Trash");r.set(a.accountId,{mailboxId:o?.mailboxId,source:o?.source??"None",staleFolderPath:o?.staleAppointmentPath})}return r},[e]),hasAppointments:e!==void 0,isError:s}},Ia=e=>{const{data:s}=te({...ts(),staleTime:1/0,enabled:!!e});return c.useMemo(()=>s?.accounts.find(n=>n.accountId===e)?.folderAppointments??[],[s,e])},sd=new Set(["in_flight"]),tn=(e,s)=>{const n=e?.[s];return typeof n=="string"?n:void 0},Ra=e=>{const s=wr(e);if(s?.code!=="message_placement_unsettled")return;const{details:n}=s;if(!n)return;const r=tn(n,"reason"),a=tn(n,"messageId");if(!(!r||!sd.has(r)||!a))return{reason:r,messageId:a}},Ma=(e,s,n)=>({severity:"warning",title:s>1?`Couldn't ${n} ${s} messages yet`:`Couldn't ${n} this message yet`,detail:"It is still being moved on the mail server. Try again in a moment."}),nn=(e,s)=>e.filter(n=>!s.has(n.messageId)),us=({mailboxId:e,threadId:s,accountId:n,onAfterOptimisticRemove:r})=>{const a=ue(),{pushError:o}=be(),{mutateAsync:i,isPending:l,isError:f}=xe({...Nr(),meta:Rn(409),onMutate:async v=>{const j=new Set(v.body.messageIds??[]),p=s?Ie({path:{threadId:s}}):[],x=Ne([e,v.body.destinationMailboxId]);await Promise.all([...s?[a.cancelQueries({queryKey:p})]:[],os(a,x)]);const g=s?a.getQueriesData({queryKey:p}).filter(d=>d[1]!==void 0).map(([d,u])=>({queryKey:d,data:u})):[],h=is(a,x);return s&&a.setQueriesData({queryKey:p},d=>d&&{...d,items:nn(d.items,j)}),ls(a,x,d=>nn(d,j)),r?.(Array.from(j)),{threadMessagesPrefix:p,listPrefixes:x,previousThreadMessages:g,previousThreadsList:h}},onError:(v,j,p)=>{if(p){for(const h of p.previousThreadMessages)a.setQueryData(h.queryKey,h.data);rs(a,p.previousThreadsList)}const x=j.body.messageIds?.length??0,g=Ra(v);if(g){o(Ma(g,x,"move"));return}o({title:x>1?`Couldn't move ${x} messages`:"Couldn't move this message",detail:Se(v),error:v})},onSettled:(v,j,p,x)=>{x&&(s&&a.invalidateQueries({queryKey:x.threadMessagesPrefix}),we(a,x.listPrefixes),n&&a.invalidateQueries({queryKey:as({path:{accountId:n}})}))}});return{moveMessages:c.useCallback((v,j)=>{v.length!==0&&Ze(v,p=>i({body:{messageIds:p,destinationMailboxId:j}}))},[i]),isPending:l,isError:f}},td="This message could not be processed. Please try again. If it keeps failing, report it.",nd=(e,s)=>e.replace(`Message ${s}'s`,"This message's"),an=e=>{if(e.failureCount===0)return;const s=e.failures?.[0],n=s?.reason??td,r=s?nd(n,s.messageId):n;throw new Rr(r,422)};function Ta({mailboxId:e,threadId:s,accountId:n,onAfterOptimisticRemove:r}){const a=ue(),{pushError:o}=be(),i=Ne([e]),l=s?Ie({path:{threadId:s}}):[],f=()=>{s&&a.invalidateQueries({queryKey:l}),we(a,i),n&&a.invalidateQueries({queryKey:as({path:{accountId:n}})})},y=()=>(h,d)=>{f(),r?.(d.body.messageIds)},v=h=>(d,u)=>{o({title:h(u.body.messageIds.length),detail:Se(d),error:d})},j=xe({mutationFn:async h=>{const{data:d}=await Sr({...h,throwOnError:!0});return an(d),d},meta:{softError:!0},onSuccess:y(),onError:v(h=>h>1?`Couldn't report ${h} messages as spam`:"Couldn't report this message as spam")}),p=xe({mutationFn:async h=>{const{data:d}=await Ir({...h,throwOnError:!0});return an(d),d},meta:{softError:!0},onSuccess:y(),onError:v(h=>h>1?`Couldn't undo the spam report for ${h} messages`:"Couldn't undo the spam report")}),x=c.useCallback(h=>{h.length!==0&&Ze(h,d=>j.mutateAsync({body:{messageIds:d}}))},[j.mutateAsync]),g=c.useCallback(h=>{h.length!==0&&Ze(h,d=>p.mutateAsync({body:{messageIds:d}}))},[p.mutateAsync]);return{reportSpam:x,notSpam:g,isReporting:j.isPending,isRestoring:p.isPending}}const ad=({accountId:e,messageId:s,threadId:n,mailboxId:r,autoMoved:a,spamReport:o})=>{const{inboxMailboxId:i}=Na(e),{junkMailboxId:l}=Sa(e),{moveMessages:f,isPending:y}=us({mailboxId:r,threadId:n,accountId:e}),{notSpam:v,isRestoring:j}=Ta({mailboxId:r,threadId:n,accountId:e}),{data:p}=te({...ns({path:{accountId:e??""}}),staleTime:1/0,enabled:!!e&&a?.fromMailboxId!==void 0}),x={inboxMailboxId:i,junkMailboxId:l},g=Xc(a,x),h=c.useCallback(()=>{g&&f([s],g)},[f,s,g]),d=c.useCallback(()=>{v([s])},[v,s]);if(o)return{show:!0,label:Zc,onUndo:d,isUndoing:j};if(!Yc(a,r,x)||!a)return{show:!1,label:"",isUndoing:!1};const b=a.fromMailboxId?p?.items.filter(m=>m.mailboxId===a.fromMailboxId).map(m=>Mr(m))[0]:void 0;return{show:!0,label:Vc(a,b),onUndo:g?h:void 0,isUndoing:y,...a.filterId?{filtersHref:"/settings/filters"}:{}}};function rd({accountId:e,messageId:s,threadId:n,mailboxId:r,autoMoved:a,spamReport:o}){const i=ad({accountId:e,messageId:s,threadId:n,mailboxId:r,autoMoved:a,spamReport:o});return i.show?t.jsx(ml,{label:i.label,onUndo:i.onUndo,undoLabel:i.isUndoing?"Undoing…":"Undo",filtersHref:i.filtersHref}):null}const rn=(e,s)=>e.filter(n=>!s.has(n.messageId)),yf=e=>e.filter(s=>s.isDeleted!==!0),zs=({mailboxId:e,threadId:s,accountId:n,messages:r,onAfterOptimisticRemove:a})=>{const o=ue(),{pushError:i}=be(),{requestAppointment:l}=Mn(),f=c.useRef([]),y=c.useRef(async()=>{}),{mutateAsync:v,isPending:j}=xe({...Ar(),meta:Rn(409),onMutate:async g=>{const h=new Set(g.body.messageIds??[]),d=s?Ie({path:{threadId:s}}):[],u=Ne(xt(h,r??[],e));await Promise.all([o.cancelQueries({queryKey:d}),os(o,u)]);const b=s?o.getQueriesData({queryKey:d}).filter(k=>k[1]!==void 0).map(([k,C])=>({queryKey:k,data:C})):[],m=is(o,u);return s&&o.setQueriesData({queryKey:d},k=>k&&{...k,items:rn(k.items,h)}),ls(o,u,k=>rn(k,h)),a?.(Array.from(h)),{threadMessagesPrefix:d,listPrefixes:u,previousThreadMessages:b,previousThreadsList:m}},onSuccess:(g,h)=>{const d=g?.failureCount??0;if(d===0)return;const u=h.body.messageIds?.length??0;i({severity:"warning",title:d>1?`Couldn't delete ${d} of ${u} messages yet`:"Couldn't delete this message yet",detail:"Something else moved it while the delete was being prepared. It is back where it now sits — try again."})},onError:(g,h,d)=>{if(d){for(const k of d.previousThreadMessages)o.setQueryData(k.queryKey,k.data);rs(o,d.previousThreadsList)}const u=Tr(g);if(u){const k=f.current;l({accountId:u.accountId,role:u.role,reason:u.reason,action:{kind:"delete",count:k.length},onAppointed:()=>y.current(k)});return}const b=h.body.messageIds?.length??0,m=Ra(g);if(m){i(Ma(m,b,"delete"));return}i({title:b>1?`Couldn't delete ${b} messages`:"Couldn't delete this message",detail:Se(g),error:g})},onSettled:(g,h,d,u)=>{u&&(s&&o.invalidateQueries({queryKey:u.threadMessagesPrefix}),we(o,u.listPrefixes),n&&o.invalidateQueries({queryKey:as({path:{accountId:n}})}))}}),p=c.useCallback(g=>Ze(g,h=>v({body:{messageIds:h}})),[v]);return c.useEffect(()=>{y.current=p},[p]),{deleteMessages:c.useCallback(g=>{g.length!==0&&(f.current=g,p(g))},[p]),isPending:j}},Aa="inline-flex items-center justify-center transition-colors",od=T(Aa,"min-h-11 min-w-11 rounded hover:bg-surface-raised"),id=T(Aa,"min-h-11 gap-1.5 px-3 rounded text-sm font-medium hover:bg-surface-raised"),Ps=({accountId:e,currentMailboxId:s,onMove:n,disabled:r=!1,disabledHint:a,variant:o="icon-only",label:i,defaultOpen:l=!1})=>{const[f,y]=c.useState(l),[v,j]=c.useState(),p=ct(),x=c.useRef(null),g=c.useRef(null),h=c.useRef(null),d=i??"Move to folder",u=c.useId(),b=Tn(),{data:m,isLoading:k,isError:C,error:w,refetch:M}=te({...ns({path:{accountId:e}}),staleTime:1/0,enabled:f}),N=Ia(e),{createFolderIn:R}=An(e),E=c.useMemo(()=>En({mailboxes:m?.items??[],folderAppointments:N,currentMailboxId:s,translator:b}),[m?.items,N,s,b]),A=Fn(m?.items??[]),U=E.find(_=>_.id===v),F=c.useCallback(()=>{y(!1),j(void 0);const _=document.activeElement;_&&g.current?.contains(_)&&h.current?.focus()},[]),B=c.useCallback(()=>{U&&(F(),n(U.id))},[U,F,n]);Ms({id:"move-to",open:f,answers:{back:F}}),c.useEffect(()=>{if(!f||!p)return;const _=Y=>{const H=Y.target;x.current?.contains(H)||g.current?.contains(H)||F()};return document.addEventListener("mousedown",_),()=>document.removeEventListener("mousedown",_)},[f,p,F]);const q=()=>x.current?.getBoundingClientRect()??null,Q=r||!!a,D=t.jsxs("button",{type:"button",ref:h,onClick:_=>{_.stopPropagation(),!Q&&y(Y=>!Y)},"aria-label":d,"aria-haspopup":p?"tree":"dialog","aria-expanded":f,"aria-controls":f?u:void 0,title:a,className:o==="icon-only"?od:id,children:[t.jsx(lt,{className:o==="icon-only"?"size-5":"size-4"}),o==="compact"&&t.jsx("span",{className:"hidden sm:inline",children:"Move"})]}),z=k?t.jsx("div",{className:"px-3 py-5 text-sm text-fg-muted",children:"Loading folders…"}):C?t.jsx("div",{className:"p-3",children:t.jsx(De,{variant:"inline",title:"Couldn't load folders",error:w,onRetry:()=>M()})}):t.jsx(Er,{folders:E,selectedId:v,delimiter:A,onSelect:j,onCreateFolder:R,onCancel:F,autoFocusFilter:p,labels:{filterPlaceholder:"Filter folders…",filterAriaLabel:"Filter folders"}}),P=U&&t.jsx("div",{className:"shrink-0 border-t border-line p-2",children:t.jsx($,{variant:"primary",onClick:B,className:"h-11 w-full font-semibold",children:`Move to ${U.label}`})});return p?t.jsxs("div",{ref:x,className:"relative inline-block",children:[D,t.jsx(_o,{open:f,align:"end",panelRef:g,getAnchor:q,children:t.jsxs("div",{id:u,ref:g,className:T("w-72 max-h-96 flex flex-col","bg-surface border border-line rounded-md shadow-lg"),children:[z,P]})})]}):t.jsxs(t.Fragment,{children:[D,t.jsx(ze.Root,{open:f,onOpenChange:_=>_?y(!0):F(),children:t.jsxs(ze.Portal,{children:[t.jsx(ze.Overlay,{className:"fixed inset-0 z-40 bg-black/40"}),t.jsxs(ze.Content,{className:"fixed inset-x-0 bottom-0 z-50 flex flex-col rounded-t-lg bg-canvas pb-[env(safe-area-inset-bottom,0px)]",style:{maxHeight:"85dvh"},id:u,children:[t.jsx(ze.Handle,{className:"mx-auto mt-2 mb-1 h-1.5 w-12 rounded-full bg-fg-subtle/30"}),t.jsx(ze.Title,{className:"px-4 py-2 text-base font-semibold border-b border-line",children:"Move to folder"}),t.jsx("div",{className:"flex min-h-0 flex-1 overflow-hidden",children:z}),P]})]})})]})},ld=({messageId:e,threadId:s,mailboxId:n,isRead:r,accountId:a,fromAddressId:o,isTrusted:i=!1,showRaw:l=!1,onToggleRaw:f})=>{const y=ue(),v=Ao(),{pushError:j}=be(),p=Eo()?.messageId,{mutate:x,isPending:g}=xe({...Es(),onMutate:async q=>{const Q=q.body.isRead??!0,D=new Set(q.body.messageIds??[]),z=Ie({path:{threadId:s}}),P=Ne([n]);await Promise.all([y.cancelQueries({queryKey:z}),os(y,P)]);const _=y.getQueriesData({queryKey:z}).filter(H=>H[1]!==void 0).map(([H,G])=>({queryKey:H,data:G})),Y=is(y,P);return y.setQueriesData({queryKey:z},H=>H&&{...H,items:Ns(H.items,D,Q)}),ls(y,P,H=>Ns(H,D,Q)),{threadMessagesPrefix:z,listPrefixes:P,previousThreadMessages:_,previousThreadsList:Y}},onError:(q,Q,D)=>{if(D){for(const P of D.previousThreadMessages)y.setQueryData(P.queryKey,P.data);rs(y,D.previousThreadsList)}const z=Q.body.isRead??!0;j({title:z?"Couldn't mark as read":"Couldn't mark as unread",detail:Se(q),error:q})},onSettled:(q,Q,D,z)=>{z&&(y.invalidateQueries({queryKey:z.threadMessagesPrefix}),we(y,z.listPrefixes))}}),h=c.useCallback(q=>{p&&q.includes(p)&&v()},[p,v]),{deleteMessages:d,isPending:u}=zs({mailboxId:n,threadId:s,onAfterOptimisticRemove:h}),{moveMessages:b,isPending:m}=us({mailboxId:n,threadId:s,accountId:a,onAfterOptimisticRemove:h}),{toggleTrusted:k,isPending:C,error:w,reset:M}=Qn({messageId:e}),N=()=>{x({body:{messageIds:[e],isRead:!1}})},R=()=>{d([e])},E=()=>{o&&k(o,i)},A=g||u||m||C,U=A||!o,F=c.useCallback(q=>{b([e],q)},[b,e]),B=o?void 0:"Sender has no parseable address";return t.jsxs("div",{className:"flex flex-col items-end gap-1",children:[t.jsxs("div",{className:"flex items-center gap-1",children:[a&&t.jsx(Ps,{accountId:a,currentMailboxId:n,onMove:F,disabled:A,label:"Move this message"}),t.jsxs(wl,{trigger:t.jsx(Bo,{className:"size-4"}),children:[t.jsxs(xs,{onClick:E,disabled:U,children:[i?t.jsx(Ls,{className:"size-4 text-positive"}):t.jsx(Rs,{className:"size-4 opacity-0"}),t.jsx("span",{title:B,children:"Trusted sender"})]}),r&&t.jsxs(xs,{onClick:N,disabled:A,children:[t.jsx(mt,{className:"size-4"}),"Mark as unread"]}),f&&t.jsxs(xs,{onClick:f,children:[t.jsx(ta,{className:"size-4"}),l?"Show formatted":"Show raw email"]}),t.jsx(Nl,{}),t.jsxs(xs,{onClick:R,disabled:A,destructive:!0,children:[t.jsx(ss,{className:"size-4"}),"Delete"]})]})]}),w&&t.jsx("div",{className:"w-64",children:t.jsx(De,{variant:"inline",title:"Couldn't update trust",error:w,onRetry:()=>{M(),E()}})})]})},cd=(e,s)=>{if(e==="message")return"MESSAGE";const n=s.toUpperCase();return n==="OCTET-STREAM"?"FILE":n},dd=e=>{const s=e.toLowerCase().replace(/[^a-z0-9]/g,"");return s.length>0?`attachment.${s}`:"attachment"},on=e=>ni(e).filter(s=>!s.isMultipart&&(s.disposition===Fr.Attachment||Dt(s))&&s.contentUrl.length>0).map(s=>{const n=Dt(s)?"message":"file";return{bodyPartId:s.bodyPartId,partPath:s.partPath,kind:n,filename:Vo(s.dispositionFilename??"",dd(s.mediaSubtype)),typeLabel:cd(n,s.mediaSubtype),sizeOctets:s.sizeOctets,contentUrl:s.contentUrl}}),ln={status:"idle"},Ea=({messageId:e,bodyParts:s,hasAttachment:n=!1,className:r})=>{const{getToken:a}=Dn(),o=ue(),[i,l]=c.useState({}),[f,y]=c.useState(null),v=c.useMemo(()=>on(s??[]),[s]),j=Dr({path:{messageId:e}}),p=b=>Ft(b.contentUrl,a).catch(m=>{if(!ei(Et(m)))throw m;return o.refetchQueries({queryKey:j}).then(()=>{const k=o.getQueryData(j),C=k?on(k.bodyParts).find(w=>w.bodyPartId===b.bodyPartId):void 0;return Ft(C?.contentUrl??b.contentUrl,a)})}),x=(b,m)=>l(k=>({...k,[b]:m})),g=b=>{const m=v.find(k=>k.bodyPartId===b);if(!m)throw new Error(`No attachment part ${b} on message ${e}`);x(b,{status:"downloading"}),p(m).then(k=>{Jo(k,m.filename),x(b,ln)}).catch(k=>{const C=Et(k),w=Yo(k),{title:M,detail:N}=Zo(C,m.filename,w);x(b,{status:"failed",title:M,detail:N,reportUrl:Xo(C,m.filename,w)})})},h=n&&s!==void 0&&v.length===0,d=v.find(b=>b.kind==="message"&&b.bodyPartId===f),u=d?ai(s??[],d.partPath):[];return t.jsx(ul,{className:r,attachments:v.map(b=>({attachmentId:b.bodyPartId,kind:b.kind,filename:b.filename,typeLabel:b.typeLabel,sizeOctets:b.sizeOctets,download:i[b.bodyPartId]??ln})),onDownload:g,hasUnlistedAttachment:h,onToggleOpen:b=>y(m=>m===b?null:b),opened:d?{attachmentId:d.bodyPartId,content:t.jsxs(t.Fragment,{children:[t.jsx(Hn,{bodyParts:u,messageId:e}),t.jsx(Ea,{messageId:e,bodyParts:u,className:"mt-4"})]})}:void 0})},Fa=e=>e.syncStatus===Lr.abandoned?e.abandonedMutation:Xe.none;function ud({threadMessage:e,accountId:s,className:n}){const r=Fa(e),a=r===Xe.delete?"delete_failed":r===Xe.move?"move_failed":void 0,{accountId:o}=Os(a==="move_failed"&&!s?e.mailboxId:void 0),i=s??o,{deleteMessages:l,isPending:f}=zs({mailboxId:e.mailboxId,threadId:e.threadId,accountId:i,messages:[e]}),{moveMessages:y,isPending:v}=us({mailboxId:e.mailboxId,threadId:e.threadId,accountId:i}),j=c.useCallback(()=>{l([e.messageId])},[l,e.messageId]),p=c.useCallback(g=>{y([e.messageId],g)},[y,e.messageId]),x=c.useMemo(()=>a?Or(zr({title:Cs[a].title,errorMessage:`Message ${e.messageId}: status=${e.status} syncStatus=${e.syncStatus} abandonedMutation=${e.abandonedMutation}`})):void 0,[a,e.messageId,e.status,e.syncStatus,e.abandonedMutation]);return a?t.jsx(Ul,{settlement:a,onRetry:a==="delete_failed"?j:void 0,action:a==="move_failed"&&i?t.jsx(Ps,{accountId:i,currentMailboxId:e.mailboxId,onMove:p,disabled:v,variant:"compact",label:Cs.move_failed.retryLabel}):void 0,retryPending:a==="delete_failed"?f:v,reportHref:x,className:n}):null}const md=({messageId:e,threadId:s,mailboxId:n,accountId:r,isRead:a,isStarred:o,onToggleStar:i,fromAddressId:l,isTrusted:f,showRaw:y,onToggleRaw:v,onReply:j,onReplyAll:p,onForward:x})=>{const g=ue(),{deleteMessages:h}=zs({mailboxId:n,threadId:s}),{moveMessages:d}=us({mailboxId:n,threadId:s,accountId:r}),{toggleTrusted:u}=Qn({messageId:e}),{mutate:b}=xe({...Es(),onSettled:()=>{g.invalidateQueries({queryKey:Ie({path:{threadId:s}})}),we(g,Ne([n]))}}),m=c.useCallback(M=>{d([e],M)},[d,e]),k=c.useCallback(()=>{h([e])},[h,e]),C=c.useCallback(()=>{b({body:{messageIds:[e],isRead:!a}})},[b,e,a]),w=[];return l&&w.push({key:"trusted",label:f?"Trusted sender":"Mark sender trusted",icon:f?t.jsx(Ls,{className:"size-4 text-positive"}):t.jsx(Rs,{className:"size-4"}),onSelect:()=>u(l,f)}),v&&w.push({key:"raw",label:y?"Show formatted":"Show raw email",icon:t.jsx(ta,{className:"size-4"}),onSelect:v}),t.jsx(ha,{hasThread:!0,onReply:j,onReplyAll:p,onForward:x,isStarred:o,onToggleStar:i,onDelete:k,isRead:a,onToggleRead:C,overflowItems:w,moveSlot:r?t.jsx(Ps,{accountId:r,currentMailboxId:n,onMove:m,label:"Move this message"}):void 0})},fd=()=>t.jsxs("div",{className:"animate-pulse space-y-2",role:"status","aria-label":"Loading raw email",children:[t.jsx("div",{className:"h-4 bg-surface-sunken rounded w-full"}),t.jsx("div",{className:"h-4 bg-surface-sunken rounded w-11/12"}),t.jsx("div",{className:"h-4 bg-surface-sunken rounded w-5/6"}),t.jsx("div",{className:"h-4 bg-surface-sunken rounded w-3/4"})]}),hd=({messageId:e,enabled:s=!0})=>{const{data:n,isLoading:r,isError:a,error:o,refetch:i}=te({...Pr({path:{messageId:e}}),enabled:s});if(r)return t.jsx("div",{className:"message-body",children:t.jsx(fd,{})});if(a)return t.jsx("div",{className:"message-body",children:t.jsx(De,{variant:"inline",title:"Couldn't load the raw email",error:o,onRetry:()=>i()})});const l=n?.raw??"";return l===""?t.jsx("div",{className:"message-body",children:t.jsx("p",{className:"text-fg-muted text-sm italic",children:"No raw source available for this message."})}):t.jsx("div",{className:"message-body",children:t.jsx("pre",{className:"email-text whitespace-pre-wrap break-words text-sm leading-relaxed bg-surface-sunken rounded-md p-3 max-h-[32rem] overflow-auto",children:l})})},pd=()=>t.jsx(Ls,{className:"inline-block size-4 ml-1 -mt-0.5 text-positive align-middle","aria-label":"Trusted sender","data-testid":"trusted-sender-badge"}),Da=(e,s)=>({id:e.messageId,fromName:e.fromName??e.fromEmail??"?",fromEmail:e.fromEmail??"",toLabel:"",dateLabel:s,snippet:e.snippet||"",bodyHtml:""}),La=({isStarred:e,onToggleStar:s,isStarPending:n,hoverReveal:r})=>t.jsx("button",{type:"button",onClick:a=>{a.stopPropagation(),s()},disabled:n,"aria-label":e?"Remove star":"Add star",className:T("shrink-0 p-0.5 rounded transition-colors",e?"text-warning":T("text-fg-subtle hover:text-warning",r&&"opacity-0 group-hover:opacity-100 focus:opacity-100"),n&&"opacity-50"),children:t.jsx(Ue,{className:T("size-3.5",e&&"fill-current")})}),gd=({threadMessage:e,isFocused:s,onToggle:n,onToggleStar:r,isStarPending:a})=>{const o=Ln(e.sentDate,"datetime"),i=Da(e,o);return t.jsx(pa,{message:i,onClick:n,isFocused:s,isUnread:!e.isRead,trailing:t.jsxs(t.Fragment,{children:[e.hasAttachment&&t.jsx(Ds,{className:"size-3 shrink-0 text-fg-subtle",role:"img","aria-label":"Has an attachment"}),t.jsx(La,{isStarred:e.hasStars,onToggleStar:r,isStarPending:a,hoverReveal:!0}),t.jsx("span",{"data-testid":"message-date",className:"shrink-0 text-2xs text-fg-subtle tabular-nums",children:o})]})})},xd=({threadMessage:e,messageData:s,isLoading:n,isError:r,error:a,onRetry:o,isFocused:i,onToggle:l,onToggleStar:f,isStarPending:y,accountId:v,showRaw:j,onToggleRaw:p,mobile:x,onReply:g,onReplyAll:h,onForward:d})=>{const u=Ln(e.sentDate,"long"),b=!e.isRead,m=s?.envelope.from[0]?.flags?.trusted?.value===!0,k=s?.envelope.from[0]?.flags?.blocked?.value===!0,C=s?.envelope.from[0]?.addressId,w=Da(e,u),M=e.autoMoved||e.spamReport?t.jsx(rd,{accountId:v,messageId:e.messageId,threadId:e.threadId,mailboxId:e.mailboxId,autoMoved:e.autoMoved,spamReport:e.spamReport}):null;return t.jsx(ga,{message:w,isFocused:x?!1:i,onHeaderClick:l,senderBadge:m&&!k?t.jsx(pd,{}):void 0,trailing:t.jsx("span",{"data-testid":"message-date",className:"text-2xs text-fg-subtle",children:u}),to:s?t.jsx(ll,{label:"To",addresses:s.envelope.to}):null,indicators:M||!x?t.jsxs("div",{className:"flex flex-wrap items-center gap-1.5 mt-0.5",children:[M,!x&&t.jsxs(t.Fragment,{children:[t.jsx("div",{className:"flex items-center justify-end gap-1",children:t.jsx(La,{isStarred:e.hasStars,onToggleStar:f,isStarPending:y})}),b&&t.jsx("span",{className:"size-1.5 rounded-full bg-accent","aria-label":"Unread"})]})]}):void 0,actionMenu:x?void 0:t.jsx(ld,{messageId:e.messageId,threadId:e.threadId,mailboxId:e.mailboxId,isRead:e.isRead,accountId:v,fromAddressId:C,isTrusted:m,showRaw:j,onToggleRaw:p}),actionBar:x?t.jsx(md,{messageId:e.messageId,threadId:e.threadId,mailboxId:e.mailboxId,accountId:v,isRead:e.isRead,isStarred:e.hasStars,onToggleStar:f,fromAddressId:C,isTrusted:m,showRaw:j,onToggleRaw:p,onReply:g,onReplyAll:h,onForward:d}):void 0,body:t.jsxs(t.Fragment,{children:[t.jsx(ud,{threadMessage:e,accountId:v,className:"mt-3"}),n?t.jsxs("div",{className:"mt-3 animate-pulse space-y-2",children:[t.jsx("div",{className:"h-4 bg-surface-sunken rounded w-full"}),t.jsx("div",{className:"h-4 bg-surface-sunken rounded w-3/4"}),t.jsx("div",{className:"h-4 bg-surface-sunken rounded w-1/2"})]}):r&&_r(a)?t.jsx("div",{className:"mt-3",children:t.jsx(Zs,{message:"This message is no longer on the mail server. It was moved or deleted in another mail app."})}):r&&Br(a)?t.jsx("div",{className:"mt-3",children:t.jsx(Zs,{message:"This message has been deleted"})}):r?t.jsx("div",{className:"mt-3",children:t.jsx(De,{variant:"inline",title:"Couldn't load this message",error:a,onRetry:o})}):j?t.jsx("div",{className:"mt-3",children:t.jsx(hd,{messageId:e.messageId})}):t.jsxs("div",{className:"mt-3",children:[t.jsx(Hn,{bodyParts:s?.bodyParts,messageId:e.messageId,fromAddressId:s?.envelope.from[0]?.addressId,isTrusted:m,isBlocked:k,category:wa(e.category)}),t.jsx(Ea,{messageId:e.messageId,bodyParts:s?.bodyParts,hasAttachment:e.hasAttachment,className:"mt-4"})]})]})})},bd=({threadMessage:e,isExpanded:s,isFocused:n,onToggle:r,onToggleStar:a,isStarPending:o,accountId:i,mobile:l,onReply:f,onReplyAll:y,onForward:v})=>{const[j,p]=c.useState(!1),{data:x,isLoading:g,isError:h,error:d,refetch:u}=te({...As({path:{messageId:e.messageId}}),enabled:s,meta:{softError:!0}});return s?t.jsx(xd,{threadMessage:e,messageData:x,isLoading:g,isError:h,error:d,onRetry:()=>u(),isFocused:n,onToggle:r,onToggleStar:a,isStarPending:o,accountId:i,showRaw:j,onToggleRaw:()=>p(b=>!b),mobile:l,onReply:f,onReplyAll:y,onForward:v}):t.jsx(gd,{threadMessage:e,isFocused:n,onToggle:r,onToggleStar:a,isStarPending:o})},vd=()=>t.jsxs("div",{className:"animate-pulse p-4",children:[t.jsx("div",{className:"h-6 bg-surface-sunken rounded w-3/4 mb-5"}),t.jsx("div",{className:"space-y-4",children:Array.from({length:2}).map((e,s)=>t.jsxs("div",{className:"flex gap-3 py-3",children:[t.jsx("div",{className:"size-10 bg-surface-sunken rounded-full shrink-0"}),t.jsxs("div",{className:"flex-1",children:[t.jsx("div",{className:"h-4 bg-surface-sunken rounded w-32 mb-2"}),t.jsx("div",{className:"h-3 bg-surface-sunken rounded w-48"})]})]},s))})]}),jf=({threadId:e,mailboxId:s,subject:n,selectedMessageId:r,authenticity:a,onOpenIntelligence:o,onBack:i,onSwipeNext:l,onSwipePrevious:f,mobileIntelligenceOpen:y,listOnScreen:v=!1})=>{const j=ct(),{accountId:p}=Os(s),{data:x,isLoading:g,isError:h,error:d,refetch:u}=te({...On({path:{threadId:e}})}),b=c.useMemo(()=>x?.items??[],[x?.items]),m=b[b.length-1],k=c.useMemo(()=>[...b].reverse(),[b]),C=c.useRef(new Map),[w,M]=c.useState(new Set),[N,R]=c.useState(null),[E,A]=c.useState(0);c.useEffect(()=>{if(b.length>0&&e!==N){R(e);const I=new Set([b[b.length-1].threadMessageId]);if(r){const O=b.find(J=>J.messageId===r);O&&I.add(O.threadMessageId)}M(I),A(0)}},[e,b,N,r]);const U=c.useCallback(I=>{M(O=>{const J=new Set(O);return J.has(I)?J.delete(I):J.add(I),J})},[]),F=c.useCallback(I=>{const O=k[I];if(!O)return;C.current.get(O.threadMessageId)?.scrollIntoView({behavior:"smooth",block:"nearest"})},[k]),B=c.useCallback(()=>{if(k.length===0)return;const I=Math.min(E+1,k.length-1);A(I),F(I)},[k.length,E,F]),q=c.useCallback(()=>{if(k.length===0)return;const I=Math.max(E-1,0);A(I),F(I)},[k.length,E,F]),Q=c.useCallback(()=>{const I=k[E];I&&U(I.threadMessageId)},[k,E,U]);Hc({messages:b,expandedIds:w,threadId:e,mailboxId:s,accountId:p});const{toggleStar:D,isPending:z,pendingMessageId:P}=Ca({threadId:e,mailboxId:s,messages:b}),_=Ur(),Y=In(),H=r??m?.messageId,G=c.useCallback((I,O)=>{O&&Y({threadId:e,messageId:O,mode:I})},[Y,e]),me=c.useCallback(()=>G("reply",H),[G,H]),pe=c.useCallback(()=>G("reply-all",H),[G,H]),ae=c.useCallback(()=>G("forward",H),[G,H]),se=c.useRef(null),X=_?.kind==="reply"?`${_.mode}:${_.sourceMessageId}`:void 0;if(c.useEffect(()=>{X&&se.current?.scrollIntoView({behavior:"smooth",block:"start"})},[X]),si({enabled:!g&&b.length>0&&_===void 0,bindings:[...v?[]:[{key:"j",action:"focusNext",handler:B,preventDefault:!0},{key:"ArrowDown",action:"focusNext",handler:B,preventDefault:!0},{key:"k",action:"focusPrevious",handler:q,preventDefault:!0},{key:"ArrowUp",action:"focusPrevious",handler:q,preventDefault:!0},{key:"Enter",action:"openFocused",handler:Q,preventDefault:!0},{key:"o",action:"openFocused",handler:Q,preventDefault:!0}],{key:"r",action:"reply",handler:me,preventDefault:!0},{key:"R",action:"replyAll",handler:pe,noModifiers:!1,preventDefault:!0},{key:"f",action:"forward",handler:ae,preventDefault:!0}]}),g)return t.jsx(vd,{});if(h)return t.jsx("div",{className:"flex h-full items-center justify-center",children:t.jsx(De,{title:_?"Couldn't load this conversation, so there is nothing to answer":"Couldn't load this conversation",error:d,onRetry:()=>u()})});if(b.length===0)return t.jsx("div",{className:"flex h-full items-center justify-center p-4",children:_?t.jsx(De,{variant:"inline",title:"There is nothing here to answer",error:"This conversation has no messages left. Another mail client may have moved or deleted them."}):t.jsx(Zs,{message:"No messages in this thread"})});const re=n||b[0]?.subject||"(No subject)",ee=b.length,le=I=>t.jsx("div",{"data-testid":"conversation-messages",children:k.map((O,J)=>t.jsx("div",{ref:fe=>{fe&&C.current.set(O.threadMessageId,fe)},children:t.jsx(bd,{threadMessage:O,isExpanded:w.has(O.threadMessageId),isFocused:J===E,onToggle:()=>U(O.threadMessageId),onToggleStar:()=>D(O.messageId,O.hasStars),isStarPending:z&&P===O.messageId,accountId:p,mobile:I,onReply:I?()=>G("reply",O.messageId):void 0,onReplyAll:I?()=>G("reply-all",O.messageId):void 0,onForward:I?()=>G("forward",O.messageId):void 0})},O.threadMessageId))}),ce=_&&t.jsx("div",{ref:se,children:_.kind==="reply"?t.jsx($c,{surface:_}):t.jsx("div",{className:"border-b border-line bg-canvas p-4",children:t.jsx(De,{variant:"inline",title:"That is not a way to answer a message",error:`"${_.segment}" is not reply, reply-all or forward.`})})}),K=t.jsxs("header",{className:"border-b border-line px-5 pt-5 pb-3",children:[t.jsx("h1",{className:"max-w-2xl text-lg font-semibold leading-snug text-fg",children:re}),t.jsxs("p",{className:"mt-1 text-2xs text-fg-subtle",children:[ee," ",ee===1?"message":"messages"]})]});return j?t.jsxs("article",{className:"h-full flex flex-col",children:[K,a?.dkimMismatch&&t.jsx(sn,{authenticity:a,onOpenIntelligence:o}),t.jsxs("div",{className:"min-h-0 flex-1 overflow-auto",children:[ce,le(!1)]})]}):t.jsxs(Zl,{thread:{subject:re,messages:[]},onBack:i??(()=>{}),intelligenceOpen:y,onToggleIntelligence:o,onSwipeNext:l,onSwipePrevious:f,children:[a?.dkimMismatch&&t.jsx(sn,{authenticity:a,onOpenIntelligence:o}),ce,le(!0)]})},yd=e=>{switch(Fa(e)){case Xe.delete:return{settlement:"delete_failed"};case Xe.move:return{settlement:"move_failed"};default:return{}}},jd=({isOpen:e,onClose:s,children:n,ariaLabel:r="Navigation",side:a="left",widthClassName:o="w-[80vw] max-w-[320px]",answers:i})=>{const l=c.useRef(null);if(Ms({id:"drawer",open:e,answers:{back:s,...i}}),zn(l,e),c.useEffect(()=>{if(!e)return;const y=document.body.style.overflow;return document.body.style.overflow="hidden",()=>{document.body.style.overflow=y}},[e]),!e)return null;const f=a==="left"?"left-0 border-r animate-in slide-in-from-left duration-150":"right-0 border-l animate-in slide-in-from-right duration-150";return t.jsxs("div",{className:"fixed inset-0 z-50",role:"dialog","aria-modal":"true","aria-label":r,children:[t.jsx("button",{type:"button","aria-label":"Close menu",onClick:s,className:"absolute inset-0 bg-black/40 animate-in fade-in duration-150 cursor-default"}),t.jsxs("div",{ref:l,tabIndex:-1,className:T("safe-area-frame absolute top-0 bottom-0 bg-canvas border-line shadow-xl flex flex-col",o,f),children:[t.jsx("div",{className:"flex items-center justify-end h-12 px-2 border-b border-line shrink-0",children:t.jsx("button",{type:"button",onClick:s,className:"p-2 rounded-md hover:bg-surface-raised transition-colors min-h-11 min-w-11 inline-flex items-center justify-center","aria-label":"Close menu",children:t.jsx(_e,{className:"size-5"})})}),t.jsx("div",{className:"flex-1 overflow-y-auto",children:n})]})]})},vs=e=>({messageId:e,tab:void 0,offering:!1,picked:[],answering:"",failure:{suggestionId:"",text:""}}),kd=(e,s)=>{const n=+(s.state==="Pending")-+(e.state==="Pending");return n!==0?n:s.sequence-e.sequence},Cd=(e,s)=>s.kind==="refused"?`Couldn't ${e}: ${s.message} Try again, or answer from your calendar app.`:"";function wd(e,s,n){const r=e.messageId,{suggestions:a,isLoading:o,error:i}=hi(r),l=Fi(),{calendars:f,defaultCalendarId:y,colorByCalendarId:v,timeZoneByCalendarId:j}=l,p=ui(l),x=pi(),g=Ci(),h=wi(),[d,u]=c.useState(()=>vs(r)),b=d.messageId===r?d:vs(r),m=c.useRef(r);m.current=r;const k=I=>{m.current===r&&u(O=>({...O.messageId===r?O:vs(r),...I}))},C=c.useMemo(()=>a.filter(gi).filter(I=>Lt(I)!==void 0).sort(kd)[0],[a]),w=a.filter(I=>I!==C&&I.state==="Pending"),M=C??w[0],N=M?Ot(M):"",R=Di(N===""?"1970-01-01":N,1),E=Ni({...R,calendarIds:[],enabled:N!==""}),A=mi(N===""?[]:[R]),U={threadId:e.threadId,threadSubject:e.subject??"",calendarId:y},F=e.fromName??e.fromEmail??"",B=_i(b.failure.text||"the invitations in a message could not be read"),q=fi(p,B),Q=(I,O,J)=>{k({answering:I,failure:{suggestionId:I,text:""}}),J().then(fe=>k({answering:"",failure:{suggestionId:I,text:Cd(O,fe)}}))},D=C?.suggestionId??"",z=b.failure.suggestionId===D?b.failure.text:"",P=b.failure.suggestionId===D?"":b.failure.text,_=C?Lt(C):void 0,Y=C&&_?{invite:bi(C,_.state,{...U,senderName:F}),whenText:zt(C),calendarName:f.find(I=>I.id===y)?.name??"Calendar",color:v[y]??"cal-1",clashes:_.state==="pending"?xi({start:C.dtStart,end:C.dtEnd},A.spans):[],rsvp:_.rsvp,busy:b.answering===C.suggestionId,failure:z,reportHref:B,addBlocked:q,sender:F}:void 0,H=N===""?[]:vi(N,A.spans),G=E.instances.filter(Li).filter(I=>!I.allDay).sort((I,O)=>I.start.localeCompare(O.start)).map(I=>({event:Oi(I,j[I.calendarId]??"",zi()),timeText:Si(I.start),color:v[I.calendarId]??"cal-1"})),me=w.map(I=>({suggestion:yi(I,{...U,sender:F}),whenText:zt(I)})),pe=i===null?"":"Couldn't read the invitations in this message. Reopen it to try again.",ae=C?.method==="Cancel",se=I=>{const O=a.find(J=>J.suggestionId===I);O&&h(Ot(O),I)},X=I=>{const O=a.find(J=>J.suggestionId===I);return O?.zoneCertainty==="Ambiguous"&&O.method!=="Cancel"},re=N===""?"":ji(N,H,b.picked),ee=C!==void 0&&C.answerOvertakenBy!==$r.None,le={onAddInvite:()=>{if(X(D)){se(D);return}Q(D,"add this to your calendar",()=>x.accept(D,y))},onTentativeInvite:ae?void 0:()=>Q(D,"add this as a maybe",()=>x.tentative(D,y)),onDeclineInvite:()=>Q(D,"decline this",()=>x.decline(D)),onMuteInvite:()=>Q(D,"stop these invitations",()=>x.dismiss(D,!0)),onRemoveInvite:ae?()=>Q(D,"take this off your calendar",()=>x.accept(D,y)):void 0,onReopenInvite:ae?()=>Q(D,"keep this on your calendar",()=>x.dismiss(D,!1)):ee?void 0:()=>Q(D,"take this answer back",()=>x.reopen(D)),onOpenNewerInvite:n&&C&&C.supersededByThreadId!==""?()=>n({threadId:C.supersededByThreadId,messageId:C.supersededByMessageId}):void 0,onOfferOtherTimes:()=>k({offering:!0}),onToggleSlot:I=>k({picked:b.picked.includes(I.startTime)?b.picked.filter(O=>O!==I.startTime):[...b.picked,I.startTime]}),onReplyWithSlots:s?()=>s({threadId:e.threadId,messageId:r},re):void 0,onAddSuggestion:I=>{if(X(I)){se(I);return}Q(I,"add this to your calendar",()=>x.accept(I,y))},onReviewSuggestion:w[0]?.method==="Cancel"?void 0:se,onDismissSuggestion:I=>Q(I,"dismiss this",()=>x.dismiss(I,!1)),onSelectEvent:I=>{const{calendarObjectId:O,recurrenceId:J}=Pi(I);g(N,O,J)}},ce=Y!==void 0||me.length>0||i!==null,K=b.tab!==void 0;return c.useEffect(()=>{o||K||u(I=>I.messageId===r&&I.tab!==void 0?I:{...I.messageId===r?I:vs(r),tab:ce?"calendar":"sender"})},[o,K,ce,r]),{surface:{data:{invite:Y,prose:b.offering&&N!==""?{dayLabel:Pt(N),proposals:[],slots:H,picked:b.picked}:void 0,suggestions:me,day:G,dayLabel:N===""?"":Pt(N),suggestionsBusy:b.answering!==""&&!Y?.busy,failure:pe,suggestionsFailure:P,reportHref:B,addBlocked:q},actions:le},tab:b.tab??"sender",onTabChange:I=>k({tab:I})}}const Nd=10,Oa=e=>({q:e?.toLowerCase()??"",limit:Nd}),Sd=(e,s)=>{if(!s)return;const n=s.toLowerCase();return e?.find(r=>r.normalizedEmail===n)};function Id(e){const s=new Date(e),n=new Date;return s.toDateString()===n.toDateString()?"today":qr(s,{month:"short",year:"numeric"})}function za(e){if(!e)return!0;const[,s]=e.split("@");return s?!s.includes("."):!0}const Rd="We can't verify the sender of this email, which could mean it's from an insecure source.",Md="We couldn't read this sender's address, so we can't confirm who really sent this message.";function Td(e,s){const n=e.category??"personal";return{value:Pn(n)?n:"uncategorized",overridden:s?.flags?.category?.value!=null&&s.flags.category.value!==e.category}}function Ad(e,s){return{name:e.fromName??e.fromEmail??"Unknown",email:e.fromEmail??"",trust:e.senderTrust,firstSeenLabel:s?Id(s.createdAt):"unknown",inboundCount:s?.inboundCount,replyCount:s?.replyCount,addressUnverified:za(e.fromEmail)}}function Ed(e){return e?.flags?{vip:e.flags.vip?.value===!0,muted:e.flags.muted?.value===!0,blocked:e.flags.blocked?.value===!0}:{}}function cn(e){if(e.fromName&&e.fromName!==e.fromEmail)return e.fromName}function Fd(e){return e.length===1?e[0]:`${e.slice(0,-1).join(", ")} and ${e[e.length-1]}`}function Dd(e,s){const n=[],r=e.displayNameCorrespondence;s&&(r===Hs.Unrelated?n.push(`The name it shows, "${s}", has nothing to do with ${e.fromDomain}.`):r===Hs.Lookalike?n.push(`The name it shows, "${s}", only looks like ${e.fromDomain}.`):r===Hs.ForeignAddress&&n.push(`The name it shows, "${s}", is an address ${e.fromDomain} cannot send from.`));const a=Ld(e.offDomainLinkDomains);return a.length>0&&n.push(`Its links go to ${Fd(a.slice(0,3))}.`),n}function Ld(e){return Array.isArray(e)?e.filter(s=>typeof s=="string"&&s.length>0):[]}function Od(e){if(za(e.fromEmail))return{verdict:"mismatch",fromDomain:"",addressUnreadable:!0,summary:Md};const s=e.authenticity;if(!s)return{verdict:"caution",fromDomain:e.fromEmail?.split("@")[1]??"",summary:Rd};if(!s.dkimMismatch){const l=cn(e),f=Dd(s,l);return f.length>0?{verdict:"caution",fromDomain:s.fromDomain,dkimDomain:s.dkimDomain,claimedBrand:l,summary:f.join(" ")}:{verdict:"aligned",fromDomain:s.fromDomain,dkimDomain:s.dkimDomain,summary:s.dkimDomain?`This message was signed by ${s.dkimDomain}.`:"Nothing looks unusual about this sender."}}const n=s.fromDomain,r=s.dkimDomain,a=cn(e),o=r?`it was actually sent from ${r}`:"its signature failed to verify",i=a?`The display name claims "${a}", but ${o}${r?` — not ${n}`:""}. Real senders use their own address.`:`This message claims to be from ${n}, but ${o}.`;return{verdict:"mismatch",fromDomain:n,dkimDomain:r,claimedBrand:a,summary:i}}function zd(e){const s=e?.fromEmail??null,{data:n,error:r}=te({...dt({query:Oa(s??void 0)}),enabled:!!s,staleTime:3e4}),a=Sd(n?.items,s??void 0);return{data:c.useMemo(()=>{if(!e)return null;const i=Ad(e,a),l=Od(e),f=Td(e,a),y=Ed(a);return{sender:i,authenticity:l,category:f,flags:y}},[e,a]),addressErrorIsFatal:Kr(r),addressId:a?.addressId,address:a}}function Pd(e,s,n=[]){const r={...e??{}};for(const[a,o]of Object.entries(s))o==null?delete r[a]:r[a]={...o,setAt:o.setAt??Date.now()};for(const a of n)delete r[a];return r}function _d({addressId:e,senderEmail:s}){const n=ue(),{pushError:r}=be(),a=Qr({query:Oa(s)}),{mutate:o,isPending:i}=xe({...Hr(),onMutate:async v=>{const j=v.body.flags??{},p=v.body.clearFlags??[];await n.cancelQueries({queryKey:a});const x=n.getQueryData(a);return n.setQueryData(a,g=>g&&{...g,items:g.items.map(h=>h.addressId===v.path.addressId?{...h,flags:Pd(h.flags,j,p)}:h)}),{previous:x}},onError:(v,j,p)=>{p?.previous!==void 0&&n.setQueryData(a,p.previous),r({title:"Couldn't update sender preference",detail:Se(v),error:v})},onSettled:()=>{n.invalidateQueries({queryKey:a})}}),l=c.useCallback(v=>{if(!e){Wr(new Error(`Quick action fired but the sender's address record did not resolve (sender: ${s??"unknown"}). This should never happen — the address row exists.`));return}o({path:{addressId:e},body:v})},[e,o,s]),f=c.useCallback(v=>l({flags:v}),[l]),y=c.useCallback(v=>l({clearFlags:v}),[l]);return{updateFlags:f,clearFlags:y,isPending:i}}const kf=e=>e==="vip"?"A sender you know":e==="wellknown"?"You've emailed them before":"Passed authentication",Bd=e=>e.senderTrust!=="vip"&&e.senderTrust!=="wellknown"?!1:e.authenticity?.dkimMismatch!==!0;function Cf(e,s){e.recordEvent("rescue.candidates_surfaced",{count:String(s)})}function wf(e,s){e.recordEvent("rescue.flow_opened",{count:String(s)})}function Nf(e,s){e.recordEvent("rescue.committed",{selected:String(s.selected),total:String(s.total),destination:s.toInbox?"inbox":"other"})}function Ud(e,s){e.recordEvent("rescue.sent_to_junk",{count:String(s.count),senderTrust:s.senderTrust,wasRescuable:String(s.wasRescuable)})}const $d=e=>e!=="uncategorized",Kd=Jr.map(e=>e.category).filter($d),qd=e=>e.spamReport?"notSpam":"reportSpam";function Qd(){return t.jsxs("aside",{className:"flex h-full w-full flex-col bg-surface-sunken",children:[t.jsxs("header",{className:"flex h-pane-header shrink-0 items-center gap-1.5 border-b border-line px-row-inset",children:[t.jsx(Be,{className:"size-3.5 text-fg-subtle"}),t.jsx("span",{className:"text-2xs font-semibold uppercase tracking-wider text-fg-subtle",children:"Intelligence"})]}),t.jsxs("div",{className:"flex-1 animate-pulse space-y-4 p-4",children:[t.jsxs("div",{className:"space-y-2",children:[t.jsx("div",{className:"h-2.5 rounded bg-surface w-1/4"}),t.jsxs("div",{className:"flex gap-3",children:[t.jsx("div",{className:"size-10 rounded-full bg-surface shrink-0"}),t.jsxs("div",{className:"flex-1 space-y-1.5",children:[t.jsx("div",{className:"h-3 rounded bg-surface w-3/4"}),t.jsx("div",{className:"h-2.5 rounded bg-surface w-1/2"})]})]})]}),t.jsxs("div",{className:"space-y-2",children:[t.jsx("div",{className:"h-2.5 rounded bg-surface w-1/4"}),t.jsx("div",{className:"h-8 rounded bg-surface"})]}),t.jsxs("div",{className:"space-y-2",children:[t.jsx("div",{className:"h-2.5 rounded bg-surface w-1/4"}),t.jsx("div",{className:"flex gap-1.5 flex-wrap",children:Array.from({length:5}).map((e,s)=>t.jsx("div",{className:"h-6 w-16 rounded bg-surface"},s))})]})]})]})}function Hd({isOpen:e,current:s,hasOverride:n,onSelect:r,onClear:a,onCancel:o}){const i=c.useRef(null);return zn(i,e),e?t.jsxs("div",{className:"fixed inset-0 z-50 flex items-center justify-center",children:[t.jsx(Vr,{label:"Dismiss reclassify sender",onDismiss:o,className:"backdrop-blur-sm"}),t.jsxs("div",{ref:i,role:"dialog","aria-modal":"true","aria-label":"Reclassify sender",tabIndex:-1,className:"relative z-10 w-full max-w-sm rounded-sm border border-line bg-surface p-6 shadow-lg",children:[t.jsx("h2",{className:"text-lg font-semibold",children:"Reclassify this sender"}),t.jsx("p",{className:"mt-2 text-sm text-fg-muted",children:"Set a category override for future messages from this sender."}),t.jsxs("div",{className:"mt-4 flex flex-col gap-1",children:[Kd.map(l=>t.jsxs("button",{type:"button",onClick:()=>r(l),className:`flex min-h-11 items-center justify-between rounded px-3 text-left text-sm transition-colors hover:bg-surface-raised ${l===s?"font-semibold text-accent":"text-fg"}`,children:[Ts[l],l===s&&t.jsx("span",{className:"text-2xs text-fg-subtle",children:"current"})]},l)),n&&t.jsx("button",{type:"button",onClick:a,className:"mt-1 flex min-h-11 items-center rounded border-t border-line px-3 text-left text-sm text-fg transition-colors hover:bg-surface-raised",children:"Remove override — classify automatically again"})]}),t.jsx("div",{className:"mt-6 flex justify-end",children:t.jsx("button",{type:"button",onClick:o,className:"inline-flex min-h-11 items-center justify-center rounded border border-line px-4 text-sm font-medium transition-colors hover:bg-surface-raised",children:"Cancel"})})]})]}):null}function Wd({thread:e,onClose:s,accountId:n,hideCloseButton:r,onAfterOptimisticRemove:a,onReplyWithText:o,onOpenThread:i}){const{data:l,address:f,addressId:y}=zd(e),v=wd(e,o,i),[j,p]=c.useState(!1),x=e.fromEmail??void 0,{updateFlags:g,clearFlags:h}=_d({addressId:y,senderEmail:x}),{reportSpam:d,notSpam:u,isReporting:b,isRestoring:m}=Ta({mailboxId:e.mailboxId,threadId:e.threadId,accountId:n,onAfterOptimisticRemove:a}),k=Gr(),C=qd(e),w=c.useCallback(()=>{u([e.messageId])},[u,e.messageId]),M=c.useCallback(()=>{Ud(k,{count:1,senderTrust:e.senderTrust,wasRescuable:Bd(e)}),d([e.messageId])},[d,e,k]),N=c.useCallback(()=>{const B=l?.flags?.vip!==!0;g({vip:{value:B}})},[l?.flags?.vip,g]),R=c.useCallback(()=>{const B=l?.flags?.muted!==!0;g({muted:{value:B}})},[l?.flags?.muted,g]),E=c.useCallback(B=>{p(!1),g({category:{value:B}})},[g]),A=c.useCallback(()=>{p(!1),h(["category"])},[h]),U=y!==void 0,F={onToggleVip:U?N:void 0,onToggleMute:U?R:void 0,onReclassify:U?()=>p(!0):void 0,onNotSpam:C==="notSpam"?w:void 0,onReportSpam:C==="reportSpam"?M:void 0};return l?t.jsxs(t.Fragment,{children:[t.jsx(ra,{data:l,calendar:v.surface,tab:v.tab,onTabChange:v.onTabChange,onClose:s,hideCloseButton:r,actions:F,reportSpamPending:b,notSpamPending:m,className:"border-l-0 h-full w-full"}),t.jsx(Hd,{isOpen:j,current:l.category.value,hasOverride:f?.flags?.category?.value!=null,onSelect:E,onClear:A,onCancel:()=>p(!1)})]}):t.jsx(Qd,{})}const Gd=({onClose:e,thread:s,accountId:n,hideCloseButton:r,onAfterOptimisticRemove:a,onReplyWithText:o,onOpenThread:i})=>s?t.jsx(Wd,{thread:s,onClose:e,accountId:n,hideCloseButton:r,onAfterOptimisticRemove:a,onReplyWithText:o,onOpenThread:i}):t.jsxs("aside",{className:"flex h-full w-full flex-col bg-surface-sunken",children:[t.jsxs("header",{className:"flex h-pane-header shrink-0 items-center gap-1.5 border-b border-line px-row-inset",children:[t.jsx(Be,{className:"size-3.5 text-fg-subtle"}),t.jsx("span",{className:"text-2xs font-semibold uppercase tracking-wider text-fg-subtle",children:"Intelligence"})]}),t.jsxs("div",{className:"flex flex-1 flex-col items-center justify-center px-row-inset text-center",children:[t.jsx(Be,{className:"size-8 text-fg-subtle"}),t.jsx("p",{className:"mt-3 text-sm text-fg-muted",children:"Intelligence"}),t.jsx("p",{className:"mt-1 text-2xs text-fg-subtle",children:"Sender trust and authenticity will appear here."})]})]});function Sf({isOpen:e,onClose:s,thread:n,accountId:r,onAfterOptimisticRemove:a,onReplyWithText:o,onOpenThread:i}){return t.jsx(jd,{isOpen:e,onClose:s,ariaLabel:"Message details",side:"right",answers:{toggleIntelligence:s},children:t.jsx(Gd,{onClose:s,thread:n,accountId:r,hideCloseButton:!0,onAfterOptimisticRemove:a,onReplyWithText:o,onOpenThread:i})})}const Vd=e=>{const{trashByAccount:s,hasAppointments:n,isError:r}=ed();return c.useMemo(()=>{const a=Yr({targets:e,trashByAccount:s,hasAppointments:n,isError:r}),o=i=>i.accountId?s.get(i.accountId):void 0;return{outcome:a,staleFolderLabel:e.map(o).find(i=>i?.source==="Stale")?.staleFolderPath,guessedMailboxId:a==="unconfirmed"?e.find(i=>o(i)?.mailboxId===i.mailboxId)?.mailboxId:void 0}},[e,s,n,r])},Jd=100,Yd=({mailboxId:e,mailboxLabel:s,accountId:n,enabled:r,predicateKey:a,searchQuery:o,reportEnding:i})=>{const[l,f]=c.useState({kind:"idle"}),y=c.useRef(void 0),{run:v,start:j,stop:p}=Zr(),{pushError:x}=be(),g=v?.mailboxId===e?v:void 0,h=g!==void 0,d=c.useRef(!1);d.current=h,c.useEffect(()=>{y.current?.abort(),f({kind:"idle"})},[r,a]);const u=c.useRef(o);u.current=o;const b=c.useCallback(R=>async(E,A)=>{const{data:U}=await Mt({path:{mailboxId:e},query:{...R,continuationToken:E,limit:Jd},signal:A,throwOnError:!0});return{ids:(U.items??[]).map(F=>F.messageId),continuationToken:U.continuationToken}},[e]),m=c.useCallback(async R=>{const{data:E}=await Mt({path:{mailboxId:e},query:{...u.current,count:!0,results:!1},signal:R,throwOnError:!0});if(E.count===void 0)throw new Error("the search returned no count for the selection");return E.count},[e]),k=c.useCallback(R=>async(E,A)=>{if(R.kind==="move"){const{data:F}=await Xr({body:{messageIds:E,destinationMailboxId:R.destinationMailboxId},signal:A,throwOnError:!0});return F}if(R.kind==="markRead"){const{data:F}=await eo({body:{messageIds:E,isRead:!0},signal:A,throwOnError:!0});return F}const{data:U}=await so({body:{messageIds:E},signal:A,throwOnError:!0});return U},[]),C=c.useCallback(()=>{const R=new AbortController;y.current=R,f({kind:"counting"}),m(R.signal).then(E=>{if(R.signal.aborted){f({kind:"idle"});return}f({kind:"escalated",total:E})},E=>{if(R.signal.aborted){f({kind:"idle"});return}x(to("Couldn't count matching messages","The count didn't finish.",E)),f({kind:"idle"})})},[m,x]),w=c.useCallback(()=>{y.current?.abort(),d.current&&p(e)},[p,e]),M=c.useCallback(()=>{d.current||(y.current?.abort(),f({kind:"idle"}))},[]),N=c.useCallback(async(R,E,A)=>{const U=E?.length??(l.kind==="escalated"?l.total:0),F=E!==void 0?{kind:"targets",targets:E}:{kind:"predicate",fetchPage:b(u.current)},B=await j({action:R,mailboxId:e,mailboxLabel:s,accountId:n,matched:U,source:F,applyBatch:k(R),reportEnding:i,claimEnding:A});return B.kind==="ran"&&f({kind:"idle"}),B},[k,b,l,e,s,n,i,j]);return{phase:l,escalate:C,stop:w,clear:M,isRunning:h,runningAction:g?.action,progress:g?.progress,runAction:N}},Zd=120,Xd=({keyboardFocusedMessageId:e,openMessageId:s,enabled:n,open:r,delayMs:a=Zd})=>{const o=c.useRef(r);o.current=r;const i=c.useRef(void 0);c.useEffect(()=>{const l=e;if(!n){i.current=l;return}if(l===void 0||l===s)return;if(l===i.current){i.current=void 0;return}const f=setTimeout(()=>o.current(l),a);return()=>clearTimeout(f)},[n,e,s,a])},Pa="This account has no Junk folder appointed, so there is nowhere to file these. Appoint one under Settings › Folder roles.",eu="These are already in Junk, so there is nowhere to file them.",su=(e,s)=>e!==void 0&&e!==s?e:void 0,If=(e,s)=>{if(su(e,s)===void 0)return e===void 0?Pa:eu};function tu(e,s){if(e.length!==0)return s!==void 0&&e.includes(s)?s:e[0]}const nu={title:"",navSlot:null,titleMeta:null,searchSlot:null,searchField:null,searchResults:null,makeFilterSlot:null},nt=c.createContext(nu),au=()=>c.useContext(nt),ru=({isOpen:e,messageIds:s,outcome:n,accountId:r,trashFolderLabel:a,staleFolderLabel:o,guessedMailboxId:i,isDeleting:l=!1,onConfirm:f,onCancel:y})=>{const{Account:v}=Dn(),{requestAppointment:j}=Mn(),p=s.length,x=()=>f([...s]),g=no(p,n,{trashFolderLabel:a,staleFolderLabel:o});if(n==="noTrash"||n==="staleTrash"||n==="unconfirmed"){const h=n==="noTrash"?"none":n==="staleTrash"?"stale":"unconfirmed";return t.jsx(gs,{isOpen:e,...g,onConfirm:()=>{if(!r)return x();const d=[...s];y(),j({accountId:r,role:"Trash",reason:h,action:{kind:"delete",count:p},staleFolderLabel:o,trashFolderLabel:a,guessedMailboxId:i,onAppointed:async()=>f(d)})},onCancel:y})}return n==="unavailable"?t.jsx(v,{fallback:t.jsx(gs,{isOpen:e,...g,confirmLabel:"Reload reader",onConfirm:()=>window.location.reload(),onCancel:y}),children:({signOut:h})=>t.jsx(gs,{isOpen:e,...g,onConfirm:()=>h(),onCancel:y})}):t.jsx(gs,{isOpen:e,...g,destructive:!0,isBusy:l||n==="unknown",onConfirm:x,onCancel:y})},_a=8,Ba=e=>e==="From"||e==="FromDomain",ou=e=>({value:e.email,label:e.displayName??e.email,...e.displayName?{hint:e.email}:{},...e.fromSelection?{source:"selected"}:{}}),iu=e=>{const s=ja(e.email);if(s!==null)return{value:s,...e.fromSelection?{source:"selected"}:{}}},lu=(e,s)=>e.value.toLowerCase().includes(s)||(e.label??"").toLowerCase().includes(s),cu=(e,s,n)=>{if(!Ba(e))return[];const r=s.trim().toLowerCase(),a=new Set,o=[];for(const i of n){if(i.email.trim()==="")continue;const l=e==="From"?ou(i):iu(i);if(!l)continue;const f=l.value.toLowerCase();if(!(f===""||a.has(f))&&(a.add(f),f!==r&&!(r!==""&&!lu(l,r))&&(o.push(l),o.length===_a)))break}return o},du=250,uu=2,mu=(e,s,n)=>{const r=s.trim(),a=ea(r,du),o=e!==void 0&&Ba(e),{data:i}=te({...dt({query:{q:a,limit:_a}}),enabled:o&&a.length>=uu});if(!o||e===void 0)return[];const l=[...n.map(f=>({email:f,fromSelection:!0})),...(i?.items??[]).map(f=>({email:f.normalizedEmail,...f.displayName?{displayName:f.displayName}:{}}))];return cu(e,r,l)},Ua=12,fu=e=>{const{envelope:s}=e,n=s.from[0];return{id:s.messageId,sender:n?ka({normalizedEmail:n.normalizedEmail,displayName:n.displayName}):"Unknown",subject:s.subject??"(No subject)",date:Fs(s.date)}},hu=(e,s)=>{const n=e!==void 0&&s!==void 0,{data:r,isLoading:a}=te({...ao({path:{mailboxId:e??""},query:{...s,limit:Ua}}),enabled:n,staleTime:3e4});return{messages:(r?.items??[]).map(pu),isPending:n&&a}},pu=e=>({id:e.messageId,sender:e.fromName||e.fromEmail||"Unknown",subject:e.subject??"(No subject)",date:Fs(e.sentDate)}),gu=e=>ut({queries:e.slice(0,Ua).map(s=>({...As({path:{messageId:s}}),staleTime:Number.POSITIVE_INFINITY})),combine:s=>({messages:s.map(n=>n.data).filter(n=>n!==void 0).map(fu),isPending:s.some(n=>n.isPending)})}),xu=()=>[ro({path:{mailboxId:""}}),oo({path:{mailboxId:""}}),io()].map(e=>[{_id:e[0]._id}]),bu=e=>lo(e)?e.pages:co(e)?[e]:[],vu=e=>typeof e=="object"&&e!==null&&typeof e.messageId=="string",yu=(e,s)=>{const n=new Set(s),r=new Map;for(const a of e)for(const o of bu(a))for(const i of o.items){if(!vu(i)||!n.has(i.messageId))continue;const l=i.subject?.trim();l&&r.set(i.messageId,l)}return s.map(a=>r.get(a)).filter(a=>a!==void 0)},ju=e=>{const s=ue(),n=e.join("\0");return c.useMemo(()=>{const r=xu().flatMap(a=>s.getQueriesData({queryKey:a}).map(([,o])=>o));return yu(r,e)},[s,n])},ku=new Set(["hasAttachment","isUnread","isRead","isStarred","category","before","after"]),Cu=e=>ku.has(e),wu=e=>{const s=[],n=[];let r,a;for(const l of e.tokens){if(l.type==="from"){s.push({field:"From",value:l.value});continue}if(l.type==="subject"){s.push({field:"Subject",value:l.value});continue}if(l.type==="in"){r={mailboxId:l.mailboxId,label:l.value};continue}if(l.type==="account"){a=l.accountId;continue}Cu(l.type)&&n.push({type:l.type,label:Wn(l)})}const o=e.freeText.trim(),i=o.length>0;return i&&s.push({field:"HasWords",value:o}),{clauses:s,matchOperator:"all",scopedOut:r,droppedFacets:n,targetAccountId:a,keptTerms:i}},Nu=(e,s,n)=>e.targetAccountId??s??n[0]?.accountId,at=c.createContext(void 0),Su=()=>c.useContext(at),dn={matched:0,applied:0,failed:0,failedIds:[]},Iu=({matched:e,outcome:s,failureReason:n,progressDone:r})=>{if(n!==void 0)return{...dn,state:"commitFailed",failureReason:n};if(!s)return{state:"backApplyRunning",matched:Math.max(e,r),applied:r,failed:0,failedIds:[]};if(!s.cancelled&&s.error===void 0)return{state:"backApplyComplete",matched:Math.max(e,s.done),applied:s.done,failed:0,failedIds:[]};if(!s.cancelled&&s.done===0)return{...dn,state:"commitFailed"};const a=s.failedIds.length>0?s.failedIds.length:Math.max(e-s.done,1);return{state:"runStopped",matched:Math.max(e,s.done),applied:s.done,failed:a,failedIds:s.failedIds}},Ru=({failure:e,isStarting:s,isRunning:n,isDone:r,failedCount:a,ruleSaved:o})=>e?.kind==="restartFailed"?"backApplyRestartFailed":e?.kind==="startFailed"?o?"backApplyStartFailed":"commitFailed":r?a>0?"backApplyFailed":"backApplyComplete":e?.kind==="statusUnreadable"?"statusUnknown":s||n?"backApplyRunning":"saving",Mu=e=>{if(e.runState==="statusUnknown")return{kind:"refreshStatus"};if(e.isEscalated)return{kind:"rerunEscalated"};if(e.committedScope==="standing"||e.committedScope==="temporary")return e.createFilterFailed?{kind:"resetAndResend"}:e.backApplyPending?{kind:"startBackApply"}:{kind:"waitOnJob"};if(e.committedScope==="all-like-these"&&e.widenRunsAsJob)return{kind:"resend"};const s=new Set(e.failedIds);return{kind:"rerunBulk",targets:s.size>0?e.sent.filter(n=>s.has(n.id)):e.sent}},Tu=e=>e!==void 0&&e.outcome===void 0&&e.failureReason===void 0,Au=(e,s)=>{if(e){e.stop();return}s()},Eu=(e,s)=>e==="run"?s.dismiss:s.cancel,Fu={clauses:[],matchOperator:"any"},Du={clauses:[],matchOperator:"all",droppedFacets:[],keptTerms:!1},Lu=[],Ou=(e,s,n)=>({verb:"organize",accountId:Nu(e,s.accountId,n),selection:Lu,selectionRestriction:void 0,escalated:void 0,searchConversion:e}),ys={state:"saving",matched:0,applied:0,failed:0,failures:[]},un=(e,s)=>e.map((n,r)=>({...n,id:`${s}-${r}`})),mn=(e,s,n)=>{if(e==="delete")return{kind:"delete"};if(e==="markRead")return{kind:"markRead"};const r=e==="junk"?n:s;return r?{kind:"move",destinationMailboxId:r}:void 0},Js=e=>e==="move"||e==="junk"||e==="organize",fn=e=>e==="junk"?Pa:"No destination was chosen, so there is nowhere to file these. Go back and pick a folder.";function zu({verb:e,accountId:s,mailboxId:n,mailboxLabel:r,selection:a,selectionRestriction:o,escalated:i,escalatedProgress:l,searchConversion:f,onFinished:y,onRunEnded:v,step:j,goToStep:p,goBack:x,closeWizard:g}){const[h]=c.useState(()=>f),[d]=c.useState(()=>i),u=h!==void 0,[b,m]=c.useState(u?"properties":"selected"),k=d?"escalated":b,[C,w]=c.useState(()=>h?{clauses:un(h.clauses,"search"),matchOperator:h.matchOperator}:Fu),[M,N]=c.useState(void 0),[R,E]=c.useState(void 0),[A,U]=c.useState(void 0),[F,B]=c.useState(void 0),q=c.useRef(!1),Q=c.useMemo(()=>a.map(S=>S.id),[a]),D=c.useMemo(()=>a.map(S=>({id:S.id,accountId:S.accountId})),[a]),z=c.useMemo(()=>a.map(S=>S.email).filter(Boolean),[a]),P=ju(Q),{junkMailboxId:_}=Sa(s),{inboxMailboxId:Y}=Na(s),H=c.useMemo(()=>Y?a.filter(S=>S.mailboxId!==void 0&&S.mailboxId!==Y).map(S=>({id:S.id,accountId:S.accountId})):[],[a,Y]),G=k==="properties",me=c.useMemo(()=>({matchOperator:C.matchOperator==="all"?"And":"Or",literalClauses:C.clauses.map(S=>({field:S.field,value:S.value}))}),[C.clauses,C.matchOperator]),{count:pe,matchedIds:ae}=Bi(G?s:void 0,me),se=gu(G?ae:[]),X=hu(d?n:void 0,d?.searchQuery),re=d?{status:"ready",count:d.total}:G?pe:{status:"ready",count:a.length},{data:ee}=te({...ns({path:{accountId:s??""}}),enabled:!!s,staleTime:Number.POSITIVE_INFINITY}),le=Ia(s),ce=Tn(),K=c.useMemo(()=>En({mailboxes:ee?.items??[],folderAppointments:le,currentMailboxId:n,translator:ce}),[ee?.items,le,n,ce]),{createFolderIn:I}=An(s),O=K.find(S=>S.id===C.moveMailboxId)?.label,J=Rc(a.map(S=>({normalizedEmail:S.email,displayName:S.sender}))),fe=Oc({match:k==="properties"&&C.clauses[0]?.value.trim()||void 0,sender:J?ka(J):void 0,folder:O}),W=c.useMemo(()=>({...C,name:C.name??fe}),[C,fe]),Ke=mu(M?.draft.field,M?.draft.value??"",z),Re=c.useRef(void 0),Me=c.useCallback(S=>{Re.current?.(),Re.current=S},[]);c.useEffect(()=>()=>{Re.current?.(),Re.current=void 0},[]);const de=Ui(s),he=$i(s),Te=Yd({mailboxId:n??"",mailboxLabel:r,accountId:s,enabled:!1,predicateKey:"selection-wizard",searchQuery:{},reportEnding:v}),{runAction:Le}=Te,oe=fo({verb:e,mode:k,scope:C.scope,fromSearch:u}),Z=oe[Tt(oe,j)],Ae=ho(s,o),Ee=po(k,Ae),je=(S=>{if(S==="folder")return Ae.destination;if(S==="rule")return W.scope==="standing"||W.scope==="until"?Ee:void 0})(Z)??go(Z,W,re),qe=c.useCallback(()=>un(Lc(z,P),"seed"),[z,P]),ms=c.useCallback(S=>{m(S),w(L=>S==="properties"&&L.clauses.length===0?{...L,clauses:qe()}:L)},[qe]),fs=c.useCallback(()=>{N({mode:"add",draft:{field:"From",value:""}})},[]),Oe=c.useCallback(S=>{const L=C.clauses.find(V=>V.id===S);L&&N({mode:"edit",clauseId:S,draft:{field:L.field,value:L.value}})},[C.clauses]),Bs=c.useCallback(S=>{w(L=>({...L,clauses:L.clauses.filter(V=>V.id!==S)}))},[]),hs=c.useCallback(S=>{N(L=>L&&{...L,draft:S})},[]),Qe=c.useCallback(()=>{N(S=>{if(!S)return;const L=Ki(S.draft.field,S.draft.value),V={...S.draft,value:L};w(We=>({...We,clauses:S.clauseId?We.clauses.map(Qs=>Qs.id===S.clauseId?{...Qs,...V}:Qs):[...We.clauses,{id:crypto.randomUUID(),...V}]}))})},[]),He=c.useCallback(()=>{if(je){E(Z);return}E(void 0);const S=oe[Tt(oe,Z)+1];S&&p(S)},[je,Z,oe,p]),ve=c.useCallback(async S=>{const L=mn(e,W.moveMailboxId,_);if(!L){B({matched:S.length,sent:S,failureReason:fn(e)});return}B({matched:S.length,sent:S});const V=await Le(L,S,Me);B({matched:S.length,sent:S,outcome:V.kind==="ran"?V.outcome:void 0,failureReason:V.kind==="refused"?V.reason:void 0})},[e,W.moveMailboxId,_,Le,Me]),ne=c.useCallback(async()=>{if(!d)return;const S=mn(e,W.moveMailboxId,_);if(!S){B({matched:d.total,sent:[],failureReason:fn(e)});return}B({matched:d.total,sent:[]});const L=await d.run(S,Me);B({matched:d.total,sent:[],outcome:L.kind==="ran"?L.outcome:void 0,failureReason:L.kind==="refused"?L.reason:void 0})},[d,e,W.moveMailboxId,_,Me]),{start:ge,watch:jt}=de,{createFilterAsync:kt}=he,ps=c.useCallback(()=>{if(d){ne();return}const S=qi({mode:b,ruleScope:W.scope}),L=Qi({ruleScope:W.scope,clauses:W.clauses,matchOperator:W.matchOperator,moveMailboxId:W.moveMailboxId,until:W.until});if(U(S),S==="standing"||S==="temporary"){kt(L,S,(W.name??"").trim()).then(V=>{V&&(jt(V.organizeJobId),H.length>0&&ve(H))});return}if(S==="all-like-these"&&Js(e)){ge(L);return}ve(S==="just-these"?D:ae.map(V=>({id:V,accountId:s})))},[d,ne,b,W,e,s,D,ae,kt,jt,H,ge,ve]),Wa=c.useCallback(()=>{if(je){E(Z);return}q.current||(q.current=!0,p("run"),ps())},[je,Z,p,ps]),Ct=c.useCallback(S=>{const L=de.progress,V=Ru({failure:de.failure,isStarting:de.isStarting,isRunning:de.isRunning,isDone:de.isDone,failedCount:L.failedCount,ruleSaved:S});return V==="saving"||V==="commitFailed"||V==="backApplyStartFailed"?{...ys,state:V}:{state:V,matched:L.matchedCount,applied:L.appliedCount,failed:V==="backApplyFailed"||V==="backApplyRestartFailed"?L.failedCount:0,failures:[]}},[de]),wt=c.useMemo(()=>{const S=new Map;for(const L of[...a,...se.messages,...X.messages])S.set(L.id,L);return S},[a,se.messages,X.messages]),Nt=d?l:Te.progress,Us=c.useCallback(()=>{if(!F)return ys;const S=Iu({matched:F.matched,outcome:F.outcome,failureReason:F.failureReason,progressDone:Nt?.done??0});return{state:S.state,matched:S.matched,applied:S.applied,failed:S.failed,failures:S.failedIds.map(L=>wt.get(L)).filter(L=>L!==void 0),failureReason:S.failureReason}},[F,Nt,wt]),$s=he.data,St=F!==void 0&&(F.failureReason!==void 0||(F.outcome?.failedIds.length??0)>0),Fe=d?Us():A==="standing"||A==="temporary"?he.isError?{...ys,state:"commitFailed"}:he.isSuccess?St?Us():Ct(!0):ys:A==="all-like-these"&&Js(e)?Ct(!1):Us(),Ga=()=>{if((A==="standing"||A==="temporary")&&St&&F){const V=new Set(F.outcome?.failedIds??[]);ve(V.size>0?F.sent.filter(We=>V.has(We.id)):F.sent);return}const L=Mu({runState:Fe.state,isEscalated:d!==void 0,committedScope:A,createFilterFailed:he.isError,backApplyPending:$s!==void 0,widenRunsAsJob:Js(e),failedIds:F?.outcome?.failedIds??[],sent:F?.sent??D});switch(L.kind){case"refreshStatus":de.refreshStatus();return;case"rerunEscalated":ne();return;case"resetAndResend":he.reset(),ps();return;case"resend":ps();return;case"startBackApply":$s&&de.startForFilter($s.filterId);return;case"waitOnJob":return;case"rerunBulk":ve(L.targets);return}},Va=c.useCallback(()=>{g(oe,Z)},[g,oe,Z]),Ks=c.useCallback(()=>{g(oe,Z),y()},[g,oe,Z,y]),{stop:It}=Te,Ja=c.useCallback(()=>{Au(d,It)},[d,It]);Uc({shouldBlockFn:({action:S})=>S!=="BACK"?!1:(Ks(),!0),enableBeforeUnload:!1,disabled:Z!=="run"});const qs={messages:d?X.messages:G?se.messages:a,count:re,label:k==="selected"?"Your selection":"A sample of what matches",loading:d?X.isPending:G&&(re.status==="loading"||se.isPending)};return t.jsx(xo,{verb:e,steps:oe,step:Z,blockedReason:je,nudged:R===Z,onBack:x,onExit:Eu(Z,{dismiss:Ks,cancel:Va}),onContinue:He,onCommit:Wa,match:{selectedCount:a.length,mode:k,accountId:Ae.accountId,onModeChange:ms,escalatedScope:d?.scope,sample:qs},properties:{clauses:W.clauses,matchOperator:W.matchOperator,onMatchOperatorChange:S=>w(L=>({...L,matchOperator:S})),clauseEdit:M,onStartAddClause:fs,onStartEditClause:Oe,onRemoveClause:Bs,onChangeDraft:hs,onSubmitClause:Qe,onCancelClause:()=>N(void 0),clauseFields:Hi,clauseSuggestions:Ke,conversionNotice:h?Pc(h):void 0,sample:{...qs,label:"What this matches"}},folder:{folders:K,mailboxId:W.moveMailboxId,delimiter:Fn(ee?.items??[]),onSelect:S=>w(L=>({...L,moveMailboxId:S})),onCreateFolder:s?I:void 0,restriction:Ae.destination},rule:{draft:W,onScopeChange:S=>w(L=>({...L,scope:S})),onUntilChange:S=>w(L=>({...L,until:S})),restriction:Ee},name:{name:W.name??"",onNameChange:S=>w(L=>({...L,name:S})),nudged:R===Z},review:{verb:e,mode:k,selectedCount:a.length,clauses:W.clauses,matchOperator:W.matchOperator,folder:O,scope:W.scope,until:W.until,ruleName:oe.includes("name")?W.name:void 0,escalatedScope:d?.scope,sample:qs},run:{state:Fe.state,verb:e,scope:W.scope,matched:Fe.matched,applied:Fe.applied,failedCount:Fe.failed,failures:Fe.failures,failureReason:Fe.failureReason,onRetry:Ga,onDismiss:Ks,onCancelRun:Tu(F)?Ja:void 0}})}function Rf(e){const s=uo()==="search",n=Su(),{accounts:r}=cs(),{step:a,goToStep:o,goBack:i,closeWizard:l}=mo(s?"properties":"match");if(Ms({id:"selection-wizard",open:a!==void 0}),!a)return null;const f=s?n??Du:void 0;return t.jsx(zu,{...e,...f?Ou(f,e,r):{},step:a,goToStep:o,goBack:i,closeWizard:l})}const Pu=[],vt=c.createContext(null),_u=e=>{const s=c.useContext(vt);return s?s.rowInteraction(e):null},Bu=()=>{const e=c.useContext(vt);if(!e)throw new Error("useThreadListSelection must be used inside <ThreadListInteraction>");return e},Uu="[data-message-id]",$u=e=>Array.from(e.querySelectorAll(Uu)).map(s=>s.dataset.messageId).filter(s=>s!==void 0),Ku=(e,s)=>e.length===s.length&&e.every((n,r)=>n===s[r]),qu=e=>{const[s,n]=c.useState([]);return c.useEffect(()=>{const r=e.current;if(!r)return;const a=()=>{const i=$u(r);n(l=>Ku(l,i)?l:i)};a();const o=new MutationObserver(a);return o.observe(r,{childList:!0,subtree:!0}),()=>o.disconnect()},[e]),s};function Mf({selectedMessageId:e,rows:s,onOpen:n,onDeleteMessages:r,onSelectionVerb:a,isDeleting:o=!1,commandsRef:i,onTriageContextChange:l,children:f}){const y=ct(),{pushError:v}=be(),j=c.useRef(null),p=qu(j),x=_c({orderedIds:p,isDesktop:y,initialFocusedId:e}),{focusedMessageId:g,setFocusedMessageId:h,pendingDomFocusRef:d,cursorMovedByPointerRef:u,selection:b,isMultiSelectMode:m,exitSelection:k,handleRowSelect:C}=x,{selectedIds:w,selectedCount:M,isSelected:N,toggle:R,select:E,toggleAll:A}=b,U=p.length>0&&p.every(K=>w.has(K)),F=c.useCallback(()=>{p.length>0&&A(p)},[p,A]),{intersectWith:B}=b;c.useEffect(()=>{B(p)},[B,p]),c.useEffect(()=>{const K=d.current;K!==null&&(d.current=null,j.current?.querySelector(`[data-message-id="${K}"]`)?.focus())});const q=c.useCallback(K=>{u.current=!0,h(K)},[u,h]),Q=c.useCallback(K=>{y||E(K)},[y,E]),D=c.useCallback(()=>{g&&n(g)},[g,n]),z=c.useCallback(K=>n(K,{replace:!0}),[n]);Xd({keyboardFocusedMessageId:x.keyboardFocusedMessageId,openMessageId:e,enabled:y&&M===0,open:z});const[P,_]=c.useState(null),{outcome:Y,staleFolderLabel:H,guessedMailboxId:G}=Vd(P?.targets??Pu),me=c.useCallback(K=>{if(P!==null)return!0;if(M>0)return a(K),!0;if(K!=="delete"||!g)return!1;const I=s.find(O=>O.id===g);return!I?.mailboxId||!I.accountId?(v({title:"Couldn't delete this message",detail:"This list has lost track of which account and folder it is in, so reader can't tell whether deleting it would move it to Trash or erase it. Nothing was deleted.",action:{label:"Reload the list",href:window.location.href}}),!0):(_({ids:[g],targets:[{accountId:I.accountId,mailboxId:I.mailboxId}]}),!0)},[P,M,a,g,s,v]),pe=c.useCallback(K=>{K.length!==0&&(r(K),_(null),k())},[r,k]),ae=c.useCallback(()=>_(null),[]),se=c.useCallback(()=>M===0?!1:(k(),!0),[M,k]),X=p.length>0;c.useEffect(()=>{if(i){if(!X){i.current=null;return}return i.current={focusNext:x.focusNext,focusPrevious:x.focusPrevious,focusFirst:x.focusFirst,focusLast:x.focusLast,openFocused:D,toggleSelect:x.toggleFocusedSelection,extendSelectDown:x.extendRangeDown,extendSelectUp:x.extendRangeUp,selectAll:x.selectAllLoaded,clearSelection:se,requestVerb:me,toggleDensity:()=>{}},()=>{i.current=null}}},[i,X,x.focusNext,x.focusPrevious,x.focusFirst,x.focusLast,x.toggleFocusedSelection,x.extendRangeDown,x.extendRangeUp,x.selectAllLoaded,D,se,me]);const re=c.useMemo(()=>Array.from(w),[w]),ee=P!==null;c.useEffect(()=>{l?.({focusedMessageId:g,selectedIds:re,orderedIds:p,hasList:X})},[l,g,re,p,X]);const le=tu(p,g),ce=c.useMemo(()=>({selectedIds:w,selectedCount:M,exitSelection:k,startSelectionVerb:a,orderedIds:p,allSelected:U,toggleAllLoaded:F,rowInteraction:K=>({focused:K===g,isTabStop:K===le,isDesktop:y,onFocusRow:q,selection:{isChecked:N(K),onToggleCheck:R,onRowSelect:C,isMultiSelectMode:m,onLongPress:Q}})}),[w,M,k,a,p,U,F,g,le,y,q,N,R,C,m,Q]);return t.jsxs(vt.Provider,{value:ce,children:[t.jsx("div",{ref:j,className:"contents",children:f}),t.jsx(ru,{isOpen:ee,messageIds:P?.ids??[],outcome:Y,accountId:P?.targets[0]?.accountId,staleFolderLabel:H,guessedMailboxId:G,isDeleting:o,onConfirm:pe,onCancel:ae})]})}function Tf({title:e,isDeleting:s}){const n=au(),{selectedCount:r,exitSelection:a,startSelectionVerb:o,orderedIds:i,allSelected:l,toggleAllLoaded:f}=Bu();return t.jsx(cc,{title:n.title||e,navSlot:n.navSlot,titleMeta:n.titleMeta,searchSlot:n.searchSlot,searchField:n.searchField,idleSlot:n.makeFilterSlot,count:r,onCancel:a,onDelete:()=>o("delete"),onMarkRead:()=>o("markRead"),isBusy:s,selectAll:i.length>0?{checked:l,indeterminate:r>0&&!l,onChange:f}:void 0})}const Ys=e=>{e.preventDefault(),e.stopPropagation()},Qu=(e,s)=>{const n=c.useRef(!1),r=c.useCallback(i=>{if(n.current=!1,i.button!==0)return;const l=st(i);$t(l)&&s?.(e,l)&&(Ys(i),n.current=!0,i.currentTarget.focus(),l.shiftKey&&window.getSelection()?.removeAllRanges())},[s,e]),a=c.useCallback(i=>{!i.ctrlKey||!s||i.preventDefault()},[s]),o=c.useCallback(i=>{if(n.current)return n.current=!1,Ys(i),!0;const l=st(i);return!$t(l)||!s?.(e,l)?!1:(Ys(i),l.shiftKey&&window.getSelection()?.removeAllRanges(),!0)},[s,e]);return{onMouseDown:r,onContextMenu:a,claimClick:o}},Hu=({thread:e,active:s=!1,focused:n,isTabStop:r,density:a="comfortable",isDesktop:o,badge:i,selection:l,inListbox:f=!1,link:y,onClick:v,onFocusRow:j})=>{const p=ue(),x=e.id,g=_u(x),h=n??g?.focused??!1,d=r??g?.isTabStop??!1,u=l??g?.selection,b=j??g?.onFocusRow,m=o??g?.isDesktop??!0,k=u?.isChecked??!1,C=u?.isMultiSelectMode??!1,w=u?.onToggleCheck,M=u?.onRowSelect,N=u?.onLongPress,R=c.useCallback(P=>{P.preventDefault(),P.stopPropagation(),w?.(x)},[w,x]),E=Qu(x,M),A=c.useCallback(P=>{if(!E.claimClick(P)){if(!m){if(C){P.preventDefault(),P.stopPropagation(),w?.(x);return}v?.();return}M?.(x,st(P)),v?.()}},[E,m,C,w,M,v,x]),U=c.useCallback(()=>{N?.(x)},[N,x]),{longPressProps:F}=Yl({onLongPress:U,accessibilityDescription:k?"Deselect message":"Select message"}),B=c.useCallback(()=>{p.prefetchQuery(As({path:{messageId:x}}))},[p,x]),q=c.useCallback(()=>{B(),b?.(x)},[B,b,x]),Q=sa({"data-list-row":"","data-message-row":!0,"data-message-id":x,...f?{role:"option","aria-selected":k}:{},tabIndex:d?0:-1,onClick:A,onMouseDown:E.onMouseDown,onContextMenu:E.onContextMenu,onMouseEnter:B,onFocus:q},m||!u?{}:F),D=T(a==="compact"?la({active:s,focused:h}):T("group",ht({active:s,focused:h})),"outline-none focus-visible:ring-2 focus-visible:ring-accent focus-visible:ring-inset",k&&"bg-accent-soft",!m&&"min-h-11 select-none [-webkit-touch-callout:none]"),z=a==="compact"?t.jsx(ca,{thread:e}):t.jsx(pt,{thread:e,badge:i,selection:u?{checked:k,alwaysVisible:C,onToggle:R}:void 0});return y===void 0?t.jsx("button",{type:"button",...Q,className:D,children:z}):t.jsx(bo,{to:"/mail/$mailboxId/$threadId/$messageId",params:{...y,messageId:x},search:P=>P,variant:"row",...Q,className:D,children:z})},Af=c.memo(Hu),Wu="Open a message first",Gu="This conversation hasn't loaded yet",Vu="The mailbox list hasn't loaded yet",Ju="Couldn't find this mailbox's account — reload to try again",Yu={reply:"Reply",replyAll:"Reply all",forward:"Forward",delete:"Move to Trash",move:"Move to mailbox",flag:"Star"},Ef=({hasThread:e,messageId:s,intelligenceOpen:n,canToggleIntelligence:r,onToggleIntelligence:a,onReply:o,onReplyAll:i,onForward:l,onDelete:f,onToggleStar:y,isStarred:v,moveContext:j,moveContextLoading:p})=>{const[x,g]=c.useState(null),h=s??null,d=N=>e?N==="move"?j?null:p?Vu:Ju:{reply:o,replyAll:i,forward:l,delete:f,flag:y}[N]?null:Gu:Wu,u=x&&x.messageId===h?x:null,b=u?d(u.action):null,m=u?.action==="move"&&u.overThread&&!!j,k=b??(u&&!m?`${Yu[u.action]} is ready — press it again`:null),C=N=>g({action:N,messageId:h,overThread:e}),w=N=>()=>C(N),M=(N,R)=>R?()=>{g(null),R()}:w(N);return t.jsx(Fl,{hasThread:e,isStarred:v,onUnavailable:C,unavailableHint:k,replyTitle:`Reply ${Ge("reply")}`,replyAllTitle:`Reply all ${Ge("replyAll")}`,forwardTitle:`Forward ${Ge("forward")}`,deleteTitle:`Move to Trash ${Ge("delete")}`,flagTitle:`Star ${Ge("toggleStar")}`,onReply:M("reply",o),onReplyAll:M("replyAll",i),onForward:M("forward",l),onDelete:M("delete",f),onToggleStar:M("flag",y),onMove:w("move"),moveSlot:j?t.jsx(Ps,{accountId:j.accountId,currentMailboxId:j.currentMailboxId,onMove:j.onMove,label:"Move to mailbox",defaultOpen:m}):void 0,children:t.jsx(Al,{open:n,enabled:r,onToggle:a})})};function Zu(e){const[s,n]=c.useState(null);s!==null&&s!==e&&n(null);const r=e!==null&&s===e,a=c.useCallback(()=>n(null),[]),o=c.useCallback(()=>n(e),[e]),i=c.useCallback(()=>n(r?null:e),[r,e]);return{isOpen:r,open:o,close:a,toggle:i}}const Ff=e=>{const{intelligenceOpen:s,onToggleIntelligence:n,onRaiseIntelligence:r}=cs(),a=_n()?.showIntelligencePane??!1,o=e??null,i=Zu(o),l=!a&&i.isOpen,{open:f,toggle:y}=i,v=c.useCallback(()=>{if(a){n();return}y()},[a,n,y]),j=c.useCallback(()=>{!a||s||r()},[a,s,r]),p=c.useCallback(()=>{if(!a){f();return}j()},[a,f,j]);return{canToggle:o!==null,isShowing:o!==null&&(a?s:l),toggle:v,open:p,drawerOpen:l,closeDrawer:i.close,railFits:a,openRail:j}},Df=(e,{toggle:s,open:n})=>{c.useEffect(()=>(e.current={toggle:s,open:n},()=>{e.current=null}),[e,s,n])},Xu=()=>{const e=ue();return c.useCallback(s=>{const n=Ie({path:{threadId:s.threadId}}),a=e.getQueriesData({queryKey:n}).flatMap(([,o])=>o?.items.map(i=>i.messageId)??[]);return a.length>0?a:[s.messageId]},[e])},em=[],$a=e=>{const{data:s}=te({...On({path:{threadId:e??""}}),enabled:!!e});return s?.items??em},Lf=(e,s)=>{const n=$a(e),r=s?n.find(o=>o.messageId===s):void 0,a=n.length>0?n[n.length-1]:void 0;return r??a},Of=({thread:e,isOpen:s=!1,mailboxId:n,accountId:r,onAfterOptimisticRemove:a})=>{const o=n??e?.mailboxId,i=r??e?.accountId,{accountId:l}=Os(i?void 0:o),f=i??l,y=Xu(),{deleteMessages:v}=zs({mailboxId:o??"",threadId:e?.threadId,accountId:f,onAfterOptimisticRemove:a}),{moveMessages:j}=us({mailboxId:o??"",threadId:e?.threadId,accountId:f,onAfterOptimisticRemove:a}),p=$a(s?e?.threadId:void 0),g=p.find(m=>m.messageId===e?.messageId)?.hasStars??e?.hasStars,{toggleStar:h}=Ca({threadId:e?.threadId??"",mailboxId:o??"",messages:p}),d=c.useCallback(()=>{e&&v(y(e))},[e,y,v]),u=c.useCallback(m=>{e&&j(y(e),m)},[e,y,j]),b=c.useCallback(()=>{e&&h(e.messageId,g??!1)},[e,g,h]);return{mailboxId:o,accountId:f,isStarred:g,deleteThread:d,moveThread:u,toggleStar:b}},hn=(e,s,n)=>{if(!s)return null;const r=e.indexOf(s);if(r===-1)return null;const a=n==="next"?r+1:r-1;return a<0||a>=e.length?null:e[a]},zf=()=>{const[e,s]=c.useState(void 0),[n,r]=c.useState([]),[a,o]=c.useState([]),i=c.useRef(null),[l,f]=c.useState(!1),y=c.useCallback(v=>{s(v.focusedMessageId),r(v.selectedIds),v.orderedIds&&o(v.orderedIds),f(v.hasList)},[]);return{listCommandsRef:i,onTriageContextChange:y,focusedMessageId:e,selectedIds:n,orderedIds:a,hasList:l}},Pf=({context:e,orderedIds:s,selectedMessageId:n,enabled:r=!0,onClose:a,handlers:o,hasOpenThread:i=!1})=>{const{listCommandsRef:l,hasList:f}=e,y=c.useCallback(()=>{l.current?.clearSelection()||n&&a()},[l,n,a]),{reply:v,replyAll:j,forward:p,...x}=o;return Fo({enabled:r,handlers:{...f?{focusNext:()=>l.current?.focusNext(),focusPrevious:()=>l.current?.focusPrevious(),focusFirst:()=>l.current?.focusFirst(),focusLast:()=>l.current?.focusLast(),openFocused:()=>l.current?.openFocused(),toggleSelect:()=>l.current?.toggleSelect(),extendSelectDown:()=>l.current?.extendSelectDown(),extendSelectUp:()=>l.current?.extendSelectUp(),selectAll:()=>l.current?.selectAll(),toggleDensity:()=>l.current?.toggleDensity()}:{},back:y,...x,...i?{}:{reply:v,replyAll:j,forward:p}}}),{goBack:y,nextMessageId:hn(s,n,"next")??void 0,previousMessageId:hn(s,n,"previous")??void 0}},sm={unread:"unread",flagged:"starred",attachment:"attachments"},tm=new Set(Object.values(vo)),Ka=e=>tm.has(e),_f=e=>Ka(e.category)||e.attributes.size>0,Bf=e=>{const s={};Ka(e.category)&&(s.category=[e.category]);for(const n of e.attributes){const r=sm[n];r&&(s[r]=!0)}return s},Uf=e=>(e.senderTrust?.length??0)>0||e.dkimMismatch!==void 0?"loaded-pages":"whole-folder",nm=["category","unread","starred","attachments","accountId","muted"],pn=e=>JSON.stringify(nm.map(s=>e?.[s]??null)),am=e=>{if(!Array.isArray(e))return;const[s]=e;if(typeof s!="object"||s===null)return;const n=s.query;if(!(typeof n!="object"||n===null))return n},$f=(e,s)=>{const n=am(e);return n?pn(n)===pn(s):!1},Kf=e=>Pn(e)?Ts[e]:void 0;function qf(e,s){const{folder:n}=Bn(s,[e.mailboxId]);return{id:e.messageId,sender:e.fromName??e.fromEmail??"Unknown",...e.fromEmail?{senderEmail:e.fromEmail}:{},subject:e.subject??"(No subject)",snippet:e.snippet??"",date:Fs(e.sentDate),unread:!e.isRead,flagged:e.hasStars===!0,threadId:e.threadId,mailboxId:e.mailboxId,...n?{folder:n}:{}}}function Qf(e,s){const{folder:n}=Bn(s,e.mailboxId?[e.mailboxId]:[]);return{id:e.id,sender:e.fromName,...e.fromEmail?{senderEmail:e.fromEmail}:{},subject:e.subject,snippet:e.snippet,date:e.timeLabel,unread:!e.isRead,flagged:e.starred===!0,...e.threadId?{threadId:e.threadId}:{},...e.mailboxId?{mailboxId:e.mailboxId}:{},...n?{folder:n}:{}}}function rm(e){const s=e.authenticity?.dkimMismatch===!0;return{id:e.messageId,accountId:e.accountId,mailboxId:e.mailboxId,threadId:e.threadId,fromName:e.fromName??e.fromEmail??"Unknown",fromEmail:e.fromEmail??"",subject:e.subject??"(No subject)",snippet:e.snippet??"",timeLabel:Fs(e.sentDate),sentDate:e.sentDate,isRead:e.isRead,hasAttachment:e.hasAttachment,starred:e.hasStars===!0,trust:e.senderTrust,category:wa(e.category),suspicious:s,...yd(e)}}const om=yo;function Hf(e){const s=new Map(e.map(r=>[r.category,r])),n=[];for(const r of om){const a=s.get(r);!a||!(a.loading||a.failed||a.rows.length>0||a.total.kind==="exact"&&a.total.value>0)||n.push({id:r,label:Ts[r],threads:a.rows,total:a.total,atCap:a.atCap,loading:a.loading,error:a.failed})}return n}function im(e,s){return s.every(n=>{switch(n.type){case"from":{const r=n.value.toLowerCase();return e.fromEmail.toLowerCase().includes(r)||e.fromName.toLowerCase().includes(r)}case"subject":return e.subject.toLowerCase().includes(n.value.toLowerCase());case"category":return(e.category??"uncategorized")===n.category;case"hasAttachment":return e.hasAttachment===!0;case"isUnread":return!e.isRead;case"isRead":return e.isRead===!0;case"isStarred":return e.starred===!0;case"after":return e.sentDate!=null&&e.sentDate>=n.epochSeconds*1e3;case"before":return e.sentDate!=null&&e.sentDate<n.epochSeconds*1e3;case"in":return e.mailboxId===n.mailboxId;case"account":return e.accountId===n.accountId;default:return!1}})}const lm=["from","subject","category","unread","starred","attachments"],js=e=>e[0],cm=e=>{const s=js(e.filter(l=>l.type==="from").map(l=>l.value)),n=js(e.filter(l=>l.type==="subject").map(l=>l.value)),r=js(e.filter(l=>l.type==="category").map(l=>l.category)),a=js(e.filter(l=>l.type==="isUnread"||l.type==="isRead").map(l=>l.type==="isUnread")),o=e.some(l=>l.type==="isStarred")?!0:void 0,i=e.some(l=>l.type==="hasAttachment")?!0:void 0;return{...s!==void 0?{from:s}:{},...n!==void 0?{subject:n}:{},...r!==void 0?{category:[r]}:{},...a!==void 0?{unread:a}:{},...o!==void 0?{starred:o}:{},...i!==void 0?{attachments:i}:{}}},dm=(e,s)=>{switch(s.type){case"from":return e.from?.toLowerCase()===s.value.toLowerCase();case"subject":return e.subject?.toLowerCase()===s.value.toLowerCase();case"category":return e.category?.length===1&&e.category[0]===s.category;case"isUnread":return e.unread===!0;case"isRead":return e.unread===!1;case"isStarred":return e.starred===!0;case"hasAttachment":return e.attachments===!0;case"before":case"after":case"in":case"account":return!1}},gn=(e,s)=>Object.fromEntries(Object.entries(e).filter(([n])=>s.includes(n)));function Wf(e,s={},n=lm){const r=gn(cm(e),n),a={...r,...gn(s,n)};return{params:r,residual:e.filter(o=>!dm(a,o))}}function Gf(e,s,n){if(s.length===0)return e;const r=[...s];return e.filter(a=>{const o=rm(a);return im({...o,accountId:o.accountId??n},r)})}const qa=8;function yt(e,s){const n=Math.max(0,Math.min(s,e.length)),r=Ko(e).find(o=>n>=o.start&&n<=o.end);if(!r)return{start:n,end:n,raw:""};const a=qo(r.raw);return a?{start:r.start,end:r.end,raw:r.raw,name:a.name,value:a.value}:{start:r.start,end:r.end,raw:r.raw}}function um(e,s){const n=yt(e,s);if(n.name===void 0)return{kind:"token",query:n.raw};const r=Gn(n.name);if(r)return{kind:"value",token:r.name,source:r.values,query:n.value??""}}const mm={mailbox:"mailboxes",account:"accounts",contact:"contacts"},fm=(e,s)=>{if(e.values==="fixed")return e.options??[];const n=mm[e.values];return n?s[n]??[]:[]},hm=(e,s)=>{if(s==="")return 1;const n=e.toLowerCase();return n.startsWith(s)?0:n.includes(s)?1:-1},rt=(e,...s)=>{let n=-1;for(const r of s){if(r===void 0)continue;const a=hm(r,e);a<0||(n<0||a<n)&&(n=a)}return n},Qa=e=>{const s=new Set;return e.filter(n=>n.rank>=0).sort((n,r)=>n.rank-r.rank).filter(n=>{const r=n.suggestion.value.toLowerCase();return s.has(r)?!1:(s.add(r),!0)}).slice(0,qa).map(n=>n.suggestion)},xn=e=>({value:`${e.name}:`,label:`${e.name}:`,hint:e.label});function pm(e){const s=e.trim().toLowerCase();if(s==="")return At.map(xn);const n=[];for(const r of At)if(n.push({rank:rt(s,`${r.name}:`,r.label),suggestion:xn(r)}),r.values==="fixed")for(const a of r.options??[]){const o=Vn(r.name,a.value);n.push({rank:rt(s,o,a.label),suggestion:{value:o,label:a.label??o,hint:o}})}return Qa(n)}function gm(e,s,n){const r=s.trim().toLowerCase(),a=fm(e,n).map(o=>({rank:rt(r,o.value,o.label),suggestion:{value:Vn(e.name,o.value),label:o.label??o.value,...o.hint?{hint:o.hint}:{}}}));return Qa(a)}function xm(e,s,n={}){const r=yt(e,s);if(r.name===void 0)return pm(r.raw);const a=Gn(r.name);return a?gm(a,r.value??"",n):[]}function bm(e,s,n){const r=yt(e,s),a=!n.value.endsWith(":"),o=/\s/.test(e.slice(r.end,r.end+1)),i=a&&!o?`${n.value} `:n.value;return{query:e.slice(0,r.start)+i+e.slice(r.end),cursor:r.start+i.length+(a&&o?1:0)}}const vm=e=>({value:e.normalizedEmail,...e.displayName?{label:e.displayName,hint:e.normalizedEmail}:{}}),ym=250,jm=2;function km({query:e,cursor:s,enabled:n}){const{accounts:r}=cs(),{mailboxesByName:a}=Jn(),o=a!==void 0,i=n?um(e,s):void 0,l=i?.source==="contact"?i.query.trim():"",f=ea(l,ym),{data:y}=te({...dt({query:{q:f,limit:qa}}),enabled:f.length>=jm}),v=ut({queries:r.map(g=>({...ns({path:{accountId:g.accountId}}),staleTime:1/0}))}),j=c.useMemo(()=>o?Do(v.map(g=>g.data?.items??[]),r):[],[o,v,r]),p=c.useMemo(()=>Lo(r),[r]),x=c.useMemo(()=>(y?.items??[]).map(vm),[y]);return c.useMemo(()=>{if(!n)return[];const g=xm(e,s,{mailboxes:j,accounts:p,contacts:x});return o?g:g.filter(h=>h.value!=="in:")},[n,e,s,j,p,x,o])}const Ha="remit.recentSearches",Cm=5;function ot(){try{const e=localStorage.getItem(Ha);if(!e)return[];const s=JSON.parse(e);return Array.isArray(s)?s.filter(n=>typeof n=="string"):[]}catch{return[]}}function bn(e){const s=e.trim();if(!s)return ot();const n=[s,...ot().filter(r=>r!==s)].slice(0,Cm);try{localStorage.setItem(Ha,JSON.stringify(n))}catch{return n}return n}const wm=e=>e.tier!=="phone"&&e.hasLiveInput&&!(e.bodyRendersCommittedResults&&e.hasCommittedQuery),it=c.createContext(null);function Nm(){const e=c.useContext(it),{searchInput:s,onSearchChange:n,onSearchClear:r}=cs();if(!e)throw new Error("ListHeaderSearchField rendered outside MailListHeader's HeaderSearchContext provider");return t.jsxs(t.Fragment,{children:[t.jsx("div",{className:"min-w-0 flex-1",children:t.jsx($n,{value:s,onChange:n,onClear:r,globalFocusKey:!1,showClearButton:!1,suggest:e.suggest})}),t.jsx($,{variant:"ghost",size:"touch",icon:t.jsx(_e,{className:"size-5"}),onClick:e.onClose,"aria-label":"Close search",className:"shrink-0"}),t.jsx(Un,{})]})}function Vf({title:e,unreadCount:s,children:n,selectionBar:r,paneOverlay:a,footer:o,searchFilter:i,searchResults:l,searchLoading:f,onSelectSearchResult:y,searchResultsLabel:v="Top matches",searchResultsInBody:j=!1,spamOffer:p,refreshControl:x}){const{accounts:g,resultFolderIndex:h,searchQuery:d,searchInput:u,onSearchChange:b,onSearchClear:m,searchViewKey:k}=cs(),C=Jn(),w=Oo(),M=_n(),N=Ti(),[R,E]=c.useState(!1),[A,U]=c.useState(ot),F=jo(),B=c.useRef(k);c.useEffect(()=>{B.current!==k&&(B.current=k,E(!1))},[k]);const[q,Q]=c.useState(0),[D,z]=c.useState(!1),[P,_]=c.useState(void 0),Y=km({query:u,cursor:q,enabled:D&&u.trim().length>0}),H=c.useCallback(ne=>{const ge=bm(u,q,ne);b(ge.query),_({cursor:ge.cursor})},[u,q,b]),G=ko({count:Y.length,onAccept:ne=>{const ge=Y[ne];ge&&H(ge)}}),{comboboxProps:me,handleKeyDown:pe}=G,ae=c.useMemo(()=>({comboboxProps:me,onKeyDown:pe,onCaretChange:Q,onFocusChange:z,...P?{caret:P}:{}}),[me,pe,P]),se=c.useCallback(()=>{m(),E(!1)},[m]),X=c.useMemo(()=>({suggest:ae,onClose:se}),[ae,se]),re=G.open?t.jsx(So,{id:G.listId,suggestions:Y,activeIndex:G.activeIndex,optionId:G.optionId,onPick:H,onHighlight:G.setActiveIndex,label:"Search suggestions",className:"mx-row-inset mt-1 shrink-0"}):null,ee=u.trim().length>0,{mailboxesByName:le,accountsByName:ce}=C,K=c.useMemo(()=>Qo(u,{mailboxesByName:le,accountsByName:ce}),[u,le,ce]),I=c.useMemo(()=>K.tokens.map(ne=>({label:Wn(ne),onRemove:()=>b(Ho(u,ne))})),[K,u,b]),O=c.useMemo(()=>l??[],[l]),J=c.useMemo(()=>ee?[{id:"top",label:v,results:O}]:[],[ee,v,O]),fe=O.length===0&&f===!0,{scope:W}=zo(g),Ke=Co(),Re=Gi(Ke),Me=Re?h.get(Re)?.role:void 0,de=c.useMemo(()=>Vi(Ke,W,Me),[Ke,W,Me]),he=de.kind==="global"?p:void 0,Te=c.useMemo(()=>he?{kind:"global",spamCount:he.count,onScopeToSpam:()=>w(he.mailboxId,d)}:de,[he,de,w,d]),Le=c.useMemo(()=>wu(K),[K]),oe=ee?Le:void 0,Z=c.useCallback(()=>{E(!1),F("properties","search")},[F]),Ae=zc(Le)?void 0:wo(Le.droppedFacets.map(ne=>ne.label)),Ee=c.useMemo(()=>ee?{onClick:Z,blockedReason:Ae}:void 0,[ee,Ae,Z]),_s=c.useMemo(()=>Ee?t.jsx(xa,{...Ee}):null,[Ee]),je=wm({tier:N,hasLiveInput:ee,hasCommittedQuery:d.trim().length>0,bodyRendersCommittedResults:j}),qe=c.useCallback(ne=>{U(bn(u)),y?.(ne)},[u,y]),ms=c.useMemo(()=>t.jsx(ba,{value:u,sections:J,loading:fe,onSelectResult:qe,tokens:I,scope:Te}),[u,J,fe,qe,I,Te]),fs=r===void 0,Oe=c.useMemo(()=>je?t.jsx("div",{className:"h-full overflow-y-auto",children:ms}):null,[je,ms]),Bs=Oe&&!fs?Oe:n,hs=Oe&&fs?Oe:null,Qe=Ai(N),He=Qe&&(R||ee),ve=c.useMemo(()=>({title:e,searchResults:hs,makeFilterSlot:_s,navSlot:M&&!M.showNavPane&&t.jsx($,{variant:"ghost",size:"touch",icon:t.jsx(Ji,{className:"size-5"}),onClick:()=>M.openNav(),"aria-label":"Menu",className:"-ml-2 shrink-0"}),titleMeta:t.jsxs(t.Fragment,{children:[s===null?null:t.jsxs("span",{className:"shrink-0 text-2xs text-fg-subtle",children:[s.toLocaleString()," unread"]}),t.jsx(Un,{}),x]}),searchSlot:Qe&&!He&&t.jsx($,{variant:"ghost",size:"touch",icon:t.jsx(No,{className:"size-5"}),onClick:()=>E(!0),"aria-label":"Search",className:"shrink-0"}),searchField:He&&t.jsx(Nm,{})}),[e,s,M,Qe,He,hs,_s,x]);if(N==="phone"&&R){const ne=ge=>{U(bn(u)),E(!1),y?.(ge)};return t.jsx(it.Provider,{value:X,children:t.jsx(at.Provider,{value:oe,children:t.jsxs(nt.Provider,{value:ve,children:[t.jsx(lc,{value:u,onChange:b,onClear:m,onCancel:()=>{E(!1),m()},filter:i,recentSearches:A,onPickRecent:b,makeFilter:Ee,sections:J,loading:fe,onSelectResult:ne,tokens:I,scope:Te,suggest:ae,suggestList:re}),a]})})})}return t.jsx(it.Provider,{value:X,children:t.jsx(at.Provider,{value:oe,children:t.jsx(nt.Provider,{value:ve,children:t.jsxs("section",{className:"relative flex h-full w-full flex-col bg-surface",children:[r?.(ve),re,t.jsx("div",{className:"min-h-0 flex-1",children:Bs}),o,a]})})})})}export{jf as $,_f as A,Wf as B,$l as C,ru as D,Os as E,Gf as F,yf as G,Uf as H,Lf as I,zs as J,us as K,zf as L,Af as M,Of as N,bf as O,xf as P,Xu as Q,Ca as R,cc as S,zd as T,_d as U,Ud as V,Bd as W,Pf as X,pf as Y,Zu as Z,Df as _,au as a,Sf as a0,Gd as a1,Ff as a2,Ef as a3,ff as a4,vf as a5,qf as a6,$f as a7,sa as a8,mt as a9,Tf as aA,Jl as aa,Gl as ab,Hl as ac,Vl as ad,Ql as ae,st as af,df as ag,uf as ah,lf as ai,cf as aj,Kf as ak,Vf as al,xt as am,om as an,rm as ao,im as ap,Qf as aq,oc as ar,Hf as as,mf as at,wm as au,tc as av,Mf as aw,Ut as ax,Bu as ay,hf as az,gf as b,ht as c,Sa as d,Vd as e,Bl as f,Yd as g,Xd as h,Uc as i,If as j,tu as k,Rf as l,Ll as m,_l as n,su as o,Na as p,Ia as q,yd as r,Cf as s,wa as t,Qu as u,wf as v,Nf as w,ed as x,kf as y,Bf as z};