@remit/web-client-dist 0.0.673 → 0.0.674

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 (207) hide show
  1. package/assets/BriefPane-zWXuK_Pj.js +1 -0
  2. package/assets/CalendarComposePane-Bz_-lcWc.js +1 -0
  3. package/assets/{CalendarComposeSeed-B0PN5iBD.js → CalendarComposeSeed-DrUkfGTc.js} +1 -1
  4. package/assets/CalendarShell-BATnya1t.js +1 -0
  5. package/assets/{EmptyState-Do3nwfV4.js → EmptyState-DjcO1Fvj.js} +1 -1
  6. package/assets/ErrorState-Bi4vrhhQ.js +1 -0
  7. package/assets/FlaggedPane-Doc9iLZn.js +1 -0
  8. package/assets/FullCompose-D6Xef8Ur.js +1 -0
  9. package/assets/{LabelApplyTrigger-BNJ7ewFc.js → LabelApplyTrigger-BnPNejnI.js} +1 -1
  10. package/assets/MailNav-C8EZGG4u.js +1 -0
  11. package/assets/MailShell-Dc5V-rLi.js +1 -0
  12. package/assets/MailViewChrome-CJkUbWPO.js +1 -0
  13. package/assets/MailboxPane-Bzn-4kym.js +1 -0
  14. package/assets/{MessageBody-xzQttW18.js → MessageBody-AvWIklnv.js} +3 -3
  15. package/assets/MessageToolbar-CvC2dLSg.js +1 -0
  16. package/assets/NavMenuButton-DSpTQKmQ.js +1 -0
  17. package/assets/{OnboardingWizard-hiUJAJmS.js → OnboardingWizard-DzR2uArY.js} +1 -1
  18. package/assets/OpenCalendarEvent-DuKGo-jF.js +2 -0
  19. package/assets/OutboxPane-Bf8T7dxW.js +1 -0
  20. package/assets/{SignInAgain-CZ5gXYZu.js → SignInAgain-CCZnH9Mt.js} +1 -1
  21. package/assets/_calendarObjectId-BGZWGcp9.js +1 -0
  22. package/assets/_mailboxId-GGJA-jVS.js +1 -0
  23. package/assets/_messageId-C5LRx072.js +1 -0
  24. package/assets/_messageId-CCba-TdT.js +1 -0
  25. package/assets/_messageId-TW2iI02X.js +1 -0
  26. package/assets/_outboxMessageId-BwVgR2h4.js +1 -0
  27. package/assets/_recurrenceId-pJxBSSXe.js +1 -0
  28. package/assets/_threadId-B_SsLFXa.js +1 -0
  29. package/assets/_threadId-CL2HHRtw.js +1 -0
  30. package/assets/_threadId-DLvgcvlr.js +1 -0
  31. package/assets/_view._date-wBuxk5kG.js +1 -0
  32. package/assets/accounts-Dc5147aO.js +1 -0
  33. package/assets/{advanced-CmQPXUBR.js → advanced-C3zdMHK5.js} +1 -1
  34. package/assets/{appearance-Bj0VbMeI.js → appearance-Df1fh0eu.js} +1 -1
  35. package/assets/attendee-row-r-oUgLyi.js +1 -0
  36. package/assets/{avatar-CDZx9RcB.js → avatar-qD7fcqFf.js} +1 -1
  37. package/assets/bell-off-DNCJLc9z.js +1 -0
  38. package/assets/{bottom-sheet-B-kTBnyv.js → bottom-sheet-B_7iO-ln.js} +1 -1
  39. package/assets/brief-ClYJePmh.js +1 -0
  40. package/assets/{brief-BnVwi6Bh.js → brief-RK0pe25_.js} +1 -1
  41. package/assets/{bug-rutCyt-b.js → bug-D6xXLRSh.js} +1 -1
  42. package/assets/calendar-Dg7vWWgr.js +1 -0
  43. package/assets/{calendar-clash-strip-DBNuXhBt.js → calendar-clash-strip-C9X1djbQ.js} +1 -1
  44. package/assets/{calendar-report-OI80fkc1.js → calendar-report-BRGottVJ.js} +1 -1
  45. package/assets/{calendar-suggestion-B5sKDqe0.js → calendar-suggestion-qEC_UasM.js} +1 -1
  46. package/assets/calendars-DBDN0ptk.js +1 -0
  47. package/assets/card-C9cgHaft.js +1 -0
  48. package/assets/{checkbox-DJpIppZD.js → checkbox-CiQllE1Y.js} +1 -1
  49. package/assets/chevron-left-Bt4eJ35K.js +1 -0
  50. package/assets/{circle-check-Nj7sUGPS.js → circle-check-CQPt1U9q.js} +1 -1
  51. package/assets/circle-check-big-ZwVj0mbk.js +1 -0
  52. package/assets/circle-help-BtMu5xYr.js +1 -0
  53. package/assets/{clock-99u2Mdmy.js → clock-B-eYdLBT.js} +1 -1
  54. package/assets/compose._-_outboxMessageId_-BMq7tjfo.js +1 -0
  55. package/assets/compose._-_outboxMessageId_-CbnOP01x.js +1 -0
  56. package/assets/compose._-_outboxMessageId_-CoBJDS24.js +1 -0
  57. package/assets/compose._-_outboxMessageId_-Cr5hBZLH.js +1 -0
  58. package/assets/{config-import-CAmEPP05.js → config-import-DhLbROIb.js} +1 -1
  59. package/assets/{confirm-dialog-PhUq_oc3.js → confirm-dialog-AppxcVfC.js} +1 -1
  60. package/assets/copy-BCzZpML3.js +1 -0
  61. package/assets/{credential-steps-BES-y0iD.js → credential-steps-DCjuFFo-.js} +1 -1
  62. package/assets/download-C6M2pRs1.js +1 -0
  63. package/assets/{external-link-BsYxbrL5.js → external-link-tmwz3hf0.js} +1 -1
  64. package/assets/{file-json-C0JfxlBX.js → file-json-BgVPDajK.js} +1 -1
  65. package/assets/filters-CwblOGNb.js +1 -0
  66. package/assets/flagged-DvOlELtX.js +1 -0
  67. package/assets/{flagged-BTJq-RZj.js → flagged-IHM3vv4x.js} +1 -1
  68. package/assets/folders-lF0pnG5O.js +1 -0
  69. package/assets/{help-copy-BUCBLhdW.js → help-copy-BN4-5aIP.js} +1 -1
  70. package/assets/import-BT72aUBc.js +1 -0
  71. package/assets/index-BDcVKyir.js +1 -0
  72. package/assets/index-C5LRx072.js +1 -0
  73. package/assets/index-CCba-TdT.js +1 -0
  74. package/assets/index-CVKDJurZ.js +1 -0
  75. package/assets/index-CXrVnh7V.js +1 -0
  76. package/assets/index-CXzCthHG.js +349 -0
  77. package/assets/{index-BBaBlwlN.js → index-Cb2UJhnj.js} +7 -7
  78. package/assets/{index-XWbwFOgn.js → index-DRT_I4p4.js} +1 -1
  79. package/assets/index-DSNc3rHB.js +1 -0
  80. package/assets/index-T04Kj7bC.js +1 -0
  81. package/assets/index-TW2iI02X.js +1 -0
  82. package/assets/index-u72ANhps.js +1 -0
  83. package/assets/kbd-DxdiA2Fl.js +1 -0
  84. package/assets/labels-CTSVGM1M.js +1 -0
  85. package/assets/mail-BLRLmM-I.js +1 -0
  86. package/assets/mail-CHopLOA-.js +1 -0
  87. package/assets/{map-pin-C0usgYas.js → map-pin-DbNUeHlR.js} +1 -1
  88. package/assets/menu-ouYQ8aI9.js +1 -0
  89. package/assets/minus-COyPQ5q9.js +1 -0
  90. package/assets/{new-BEBqxznp.js → new-DRfIDZVL.js} +1 -1
  91. package/assets/onboarding-U6yiJPWH.js +1 -0
  92. package/assets/onboarding-completion-h9meGJrm.js +1 -0
  93. package/assets/outbox-DFxDZsE8.js +1 -0
  94. package/assets/{pencil-CoAnhAKI.js → pencil-D0Kwpd2W.js} +1 -1
  95. package/assets/{popover-menu-BHNjsQiI.js → popover-menu-CTiORP1p.js} +1 -1
  96. package/assets/refresh-cw-aweb7slK.js +1 -0
  97. package/assets/reply-B9-kr45N.js +1 -0
  98. package/assets/{rich-text-D9hn7JQa.js → rich-text-BlpPNJ69.js} +14 -14
  99. package/assets/{rich-text-spellcheck-worker-provider-BqOsf6u-.js → rich-text-spellcheck-worker-provider-BVC2WqOs.js} +1 -1
  100. package/assets/rotate-ccw-cFCdZR4R.js +1 -0
  101. package/assets/{roving-focus-B9mHbGbD.js → roving-focus-iNw1K_A-.js} +1 -1
  102. package/assets/{row-actions-BkhFe3TY.js → row-actions-CsY_49bo.js} +1 -1
  103. package/assets/search-mirror-Bg0i4bJE.js +1 -0
  104. package/assets/{search-query-0wEBmb1P.js → search-query-Dq2--dgF.js} +1 -1
  105. package/assets/search-token-index-JnwciDu0.js +1 -0
  106. package/assets/{sections-ClqQBEFv.js → sections-By63r1y_.js} +1 -1
  107. package/assets/{senders-DuUfs3Pf.js → senders-BollE7le.js} +1 -1
  108. package/assets/settings-aPDqsj-M.js +1 -0
  109. package/assets/{settings-screen-BjSyVU2l.js → settings-screen-DxN6mICP.js} +1 -1
  110. package/assets/shield-check-C6K5BNfE.js +1 -0
  111. package/assets/suggested-vips-DnRYIdD0.js +1 -0
  112. package/assets/{suggestion._suggestionId-BnW2e786.js → suggestion._suggestionId-m9OzQCaR.js} +1 -1
  113. package/assets/{undo-2-WqFuHEgY.js → undo-2-BV0sKXdu.js} +1 -1
  114. package/assets/{useCalendarData-C3g6QMEH.js → useCalendarData-BQ_jLMR7.js} +1 -1
  115. package/assets/useCalendarEvents-lDPF_B6_.js +1 -0
  116. package/assets/useCalendarFreeBusy-BFq23gzr.js +1 -0
  117. package/assets/{useCalendarWrites-LwW_U-yG.js → useCalendarWrites-CIJUCBzo.js} +1 -1
  118. package/assets/{useCalendars-B1migLvB.js → useCalendars-BgSJfw8G.js} +1 -1
  119. package/assets/{useDebouncedValue-nmGpghjy.js → useDebouncedValue--u19KX6h.js} +1 -1
  120. package/assets/{useFilters-zdrGUBZF.js → useFilters-Cmf0Cndn.js} +1 -1
  121. package/assets/{useLabels-CesUuQey.js → useLabels-CN56tbCw.js} +1 -1
  122. package/assets/useLayoutTier-CUyuK30O.js +1 -0
  123. package/assets/useMediaQuery-DB2OdJvp.js +1 -0
  124. package/assets/useMessageBodyContent-Gq_pdN4f.js +1 -0
  125. package/assets/{useQueries-BDOaD0Tu.js → useQueries-gpmd3w5y.js} +1 -1
  126. package/assets/useRefreshControl-DdZILsE1.js +1 -0
  127. package/assets/{useResultFolderIndex-D44p4QVU.js → useResultFolderIndex-EOtkNq1e.js} +1 -1
  128. package/assets/{useSignature-BMl5h116.js → useSignature-37xUEwqG.js} +1 -1
  129. package/assets/{warnings-L0tU6MHK.js → warnings-BYDfjgnx.js} +5 -5
  130. package/index.html +1 -1
  131. package/package.json +1 -1
  132. package/assets/BriefPane-DqtL8KK7.js +0 -1
  133. package/assets/CalendarComposePane-Sr72cVvW.js +0 -1
  134. package/assets/CalendarShell-_yGJJZGQ.js +0 -1
  135. package/assets/ErrorState-DcwvjIQG.js +0 -1
  136. package/assets/FlaggedPane-Cmhk0gcN.js +0 -1
  137. package/assets/FullCompose-aUTiTI79.js +0 -1
  138. package/assets/MailNav-BdiWAfH_.js +0 -1
  139. package/assets/MailShell-DTW4ysuk.js +0 -1
  140. package/assets/MailViewChrome-BOp09SXr.js +0 -1
  141. package/assets/MailboxPane-CbM92Ovm.js +0 -1
  142. package/assets/MessageToolbar-D_XXU4rk.js +0 -1
  143. package/assets/NavMenuButton-D-YzcNLk.js +0 -1
  144. package/assets/OpenCalendarEvent-DI9FmufS.js +0 -2
  145. package/assets/OutboxPane-5Tg_XaNz.js +0 -1
  146. package/assets/_calendarObjectId-vCwbJTnk.js +0 -1
  147. package/assets/_mailboxId-Cfuu19RK.js +0 -1
  148. package/assets/_messageId-CgycoOJ5.js +0 -1
  149. package/assets/_messageId-D-b80c2N.js +0 -1
  150. package/assets/_messageId-DRetwfpf.js +0 -1
  151. package/assets/_outboxMessageId-Bn0dQ4xZ.js +0 -1
  152. package/assets/_recurrenceId-Cnhx2TOl.js +0 -1
  153. package/assets/_threadId-Cng5uaoZ.js +0 -1
  154. package/assets/_threadId-DOrkCv20.js +0 -1
  155. package/assets/_threadId-DXMeaFS2.js +0 -1
  156. package/assets/_view._date-CbKJy0l4.js +0 -1
  157. package/assets/accounts-Cq3q9zT9.js +0 -1
  158. package/assets/attendee-row-CPJnqwGs.js +0 -1
  159. package/assets/bell-off-Bzm-PBgf.js +0 -1
  160. package/assets/brief-smZMIU_D.js +0 -1
  161. package/assets/calendar-Badl9o28.js +0 -1
  162. package/assets/calendars-CUfsifTm.js +0 -1
  163. package/assets/card-WnranLyn.js +0 -1
  164. package/assets/chevron-left-CF03ieoO.js +0 -1
  165. package/assets/circle-check-big-Bkno0zML.js +0 -1
  166. package/assets/circle-help-DqnCeQ17.js +0 -1
  167. package/assets/compose._-_outboxMessageId_-BKdFP0ao.js +0 -1
  168. package/assets/compose._-_outboxMessageId_-BtlHF3xu.js +0 -1
  169. package/assets/compose._-_outboxMessageId_-D0RsY9X4.js +0 -1
  170. package/assets/compose._-_outboxMessageId_-D388BLER.js +0 -1
  171. package/assets/copy-CLKRqvl9.js +0 -1
  172. package/assets/download-DS8Ui8jJ.js +0 -1
  173. package/assets/filters-BAZYluMO.js +0 -1
  174. package/assets/flagged-CoNpo9-C.js +0 -1
  175. package/assets/folders-C-gfrylt.js +0 -1
  176. package/assets/import-D5avZjYG.js +0 -1
  177. package/assets/index-B-6f2NO7.js +0 -1
  178. package/assets/index-BCw2cMz0.js +0 -1
  179. package/assets/index-BVmS60uo.js +0 -1
  180. package/assets/index-Bnka257H.js +0 -1
  181. package/assets/index-CBHO_oxW.js +0 -1
  182. package/assets/index-CgycoOJ5.js +0 -1
  183. package/assets/index-D-b80c2N.js +0 -1
  184. package/assets/index-D7VpR8Bx.js +0 -293
  185. package/assets/index-DYyayMku.js +0 -1
  186. package/assets/index-DZZWB09x.js +0 -1
  187. package/assets/kbd-DzZig-MJ.js +0 -1
  188. package/assets/labels-dyDIPXoj.js +0 -1
  189. package/assets/mail-BiL0g7on.js +0 -1
  190. package/assets/mail-Bir39SMd.js +0 -1
  191. package/assets/menu-liPRY-HF.js +0 -1
  192. package/assets/minus-Cs2PKH6V.js +0 -1
  193. package/assets/onboarding-CHwAu1ha.js +0 -1
  194. package/assets/onboarding-completion-CYRjdQQn.js +0 -1
  195. package/assets/outbox-C0EOKXQq.js +0 -1
  196. package/assets/refresh-cw-CpnxiYht.js +0 -1
  197. package/assets/rotate-ccw-Cj4SUyhN.js +0 -1
  198. package/assets/search-mirror-DQmL3P3k.js +0 -1
  199. package/assets/search-token-index-CXQQu5cA.js +0 -1
  200. package/assets/settings-KZn9t_aP.js +0 -1
  201. package/assets/shield-check-CD-wbm99.js +0 -1
  202. package/assets/suggested-vips-B7UuI1d0.js +0 -1
  203. package/assets/useCalendarEvents-BQ8pmFV8.js +0 -1
  204. package/assets/useCalendarFreeBusy-CrTlSUQQ.js +0 -1
  205. package/assets/useLayoutTier-B0zSRsSh.js +0 -1
  206. package/assets/useMessageBodyContent-DPlXjxls.js +0 -1
  207. package/assets/useRefreshControl-CSd_fo15.js +0 -1
@@ -0,0 +1 @@
1
+ import{j as r,L as Mt,eN as Ue,eO as ne,e4 as re,r as a,a as Ge,w as ie,cV as jt,E as kt,dD as Et,eP as Ot,eQ as Ft,T as $e,ej as At,eR as Nt}from"./index-CXzCthHG.js";import{f as Ve,d as Bt,e as Ye,u as Lt,p as qt,R as Dt}from"./MessageBody-AvWIklnv.js";import{a6 as Pt,z as _t,B as Qt,am as zt,an as Wt,ao as Ht,ap as De,aq as Kt,ar as Ut,as as Gt,at as $t,au as Vt,ah as Yt,M as Jt,av as Zt,ai as Xt,aw as es,ax as ts,f as ss,q as os,ak as ns,o as rs,S as as,H as is,L as Pe,K as cs,I as ls,e as ds,W as us,X as xe,Y as fs,_ as Je,$ as Ze,a0 as ms,a1 as hs,a2 as gs}from"./MessageToolbar-CvC2dLSg.js";import{g as ps,n as xs,r as Is}from"./reply-B9-kr45N.js";import{a as ys}from"./useMessageBodyContent-Gq_pdN4f.js";import{m as vs,e as bs,f as Ss}from"./search-token-index-JnwciDu0.js";import{u as Xe}from"./sections-By63r1y_.js";import{S as Ts,u as Cs}from"./useLayoutTier-CUyuK30O.js";import{u as ws,a as Rs,R as Ms,b as js,c as ks}from"./useRefreshControl-DdZILsE1.js";import{u as ae}from"./useQueries-gpmd3w5y.js";import{t as et,s as Es,r as Os,L as Fs}from"./LabelApplyTrigger-BnPNejnI.js";import{a as As}from"./useLabels-CN56tbCw.js";import{u as Ns}from"./useMediaQuery-DB2OdJvp.js";import{d as Bs,w as Ls}from"./wizard-selection-zWa1qc6-.js";import{R as qs}from"./refresh-cw-aweb7slK.js";function Ds({sync:e}){return e?r.jsxs("div",{className:"flex h-full flex-col items-center justify-center gap-2 py-12 text-center px-4",role:"status","aria-live":"polite",children:[r.jsx(Mt,{className:"size-8 animate-spin text-fg-subtle","aria-hidden":"true"}),r.jsx("p",{className:"text-sm font-medium text-fg",children:"Still syncing your mail"}),r.jsx("p",{className:"text-xs text-fg-subtle",children:Ps(e)})]}):r.jsxs("div",{className:"flex h-full flex-col items-center justify-center gap-2 py-12 text-center px-4",children:[r.jsx(Ts,{className:"size-8 text-fg-subtle","aria-hidden":"true"}),r.jsx("p",{className:"text-sm font-medium text-fg",children:"You're caught up"}),r.jsx("p",{className:"text-xs text-fg-subtle",children:"Nothing needs attention."})]})}function Ps({synced:e,total:t}){return t>0?`${e.toLocaleString()} of ${t.toLocaleString()} messages downloaded. This list fills in as they arrive.`:"Downloading your messages. This list fills in as they arrive."}const tt=[{id:"unread",name:"is",value:"unread"},{id:"attachment",name:"has",value:"attachment"}],st="category",_s={unclassified:"uncategorized"},H=e=>Bt(e).map(t=>t.raw),W=e=>e.join(" "),Ie=e=>{const t=Ye(e);if(t)return tt.find(s=>s.name===t.name&&s.value===t.value.toLowerCase())?.id},ye=e=>{const t=Ye(e);if(!t||t.name!==st)return;const s=t.value.toLowerCase(),n=_s[s];if(n)return n;if(!(!Ue(s)||s==="all"))return s},ot=e=>tt.find(t=>t.id===e),nt=e=>ot(e)!==void 0,Qs=e=>{const t=new Set;for(const s of H(e)){const n=Ie(s);n&&t.add(n)}return t},zs=e=>{let t="all";for(const s of H(e)){const n=ye(s);n&&(t=n)}return t},Ws=(e,t)=>{const s=ot(t);if(!s)return;const n=H(e),i=n.filter(d=>Ie(d)!==t);return i.length<n.length?W(i):W([...n,Ve(s.name,s.value)])},Hs=(e,t)=>{const s=H(e).filter(n=>!ye(n));return W(t==="all"?s:[...s,Ve(st,t)])},Ks=e=>W(H(e).filter(t=>!Ie(t)&&!ye(t))),rt=e=>e.trim().length>0,_e=e=>{if(!rt(e.query))return e.ownFilters;const t=new Set(Qs(e.query));for(const s of e.ownFilters)nt(s)||t.add(s);return t},Qe=e=>rt(e.query)?zs(e.query):e.ownCategory,ze=6e4,Us=3e4,Gs={kind:"unknown"},We=e=>(t,s)=>Pt(s?.queryKey,e)?t:void 0,$s=(e,t,s)=>({...e,category:[t],limit:s,order:"desc"}),Vs=(e,t)=>({...e,category:[t],order:"desc",count:!0,results:!1}),He=(e,t)=>({category:[t],...e.unread!==void 0?{unread:e.unread}:{},...e.starred!==void 0?{starred:e.starred}:{},...e.attachments!==void 0?{attachments:e.attachments}:{},...e.accountId!==void 0?{accountId:e.accountId}:{},...e.muted!==void 0?{muted:e.muted}:{}});function Ys({categories:e,criteria:t,limit:s,counted:n}){const i=ae({queries:e.map(c=>{const h=$s(t,c,s),u=He(t,c);return{queryKey:re({query:h}),queryFn:async()=>{const{data:v}=await ne({query:h,throwOnError:!0});return v},placeholderData:We(u),staleTime:ze}})}),d=ae({queries:e.map(c=>{const h=Vs(t,c),u=He(t,c);return{queryKey:re({query:h}),queryFn:async()=>{const{data:v}=await ne({query:h,throwOnError:!0});return v},enabled:n,placeholderData:We(u),staleTime:ze}})}),m=a.useMemo(()=>e.map((c,h)=>{const u=i[h],v=d[h],p=u?.data?.items??[];return{category:c,rows:p,atCap:p.length>=s,total:n?et(v?.data?.count):Gs,loading:u?.isPending??!0,failed:u?.isError??!1,retry:()=>{u?.refetch(),n&&v?.refetch()}}}),[e,i,d,n,s]),l=a.useCallback(()=>{for(const c of i)c.refetch();for(const c of d)c.refetch()},[i,d]);return{sections:m,isLoading:i.length>0&&i.every(c=>c.isPending),isError:i.length>0&&i.every(c=>c.isError),refetch:l}}function Js(e,t,s){const n={...e,limit:t,order:"desc"},{data:i,isLoading:d,isError:m,refetch:l}=Ge({queryKey:re({query:n}),queryFn:async()=>{const{data:h}=await ne({query:n,throwOnError:!0});return h},enabled:s,staleTime:Us});return{rows:a.useMemo(()=>s?i?.items??[]:[],[i,s]),isLoading:s&&d,isError:s&&m,refetch:a.useCallback(()=>{l()},[l])}}const Zs=3e4,Xs={kind:"unknown"},eo=(e,t)=>({...e,mailboxId:t,order:"desc",count:!0,results:!1});function to({criteria:e,junkMailboxIds:t,enabled:s}){const n=ae({queries:t.map(i=>{const d=eo(e,i);return{queryKey:re({query:d}),queryFn:async()=>{const{data:m}=await ne({query:d,throwOnError:!0});return m},enabled:s,staleTime:Zs}})});return a.useMemo(()=>t.map((i,d)=>({mailboxId:i,count:s?et(n[d]?.data?.count):Xs,failed:s?n[d]?.isError??!1:!1})),[t,n,s])}const so=(e,t)=>e.createdAt!==t.createdAt?e.createdAt-t.createdAt:e.accountId.localeCompare(t.accountId),oo=e=>[...e].sort(so),no=["from","subject","category","unread","starred","attachments"],at=["contacts","today"],ro=e=>new Set(at.filter(t=>e.has(t))),ao=(e,t,s,n)=>{const i=_t({category:e,attributes:t}),{params:d,residual:m}=Qt(s,i,no),l={...d,...i},c={muted:!1};return l.from!==void 0&&(c.from=l.from),l.subject!==void 0&&(c.subject=l.subject),l.unread!==void 0&&(c.unread=l.unread),l.starred!==void 0&&(c.starred=l.starred),l.attachments!==void 0&&(c.attachments=l.attachments),n!==void 0&&(c.accountId=n),{criteria:c,residual:m}},io=({residual:e,attributes:t})=>e.length===0&&!at.some(s=>t.has(s)),se=e=>e.count.kind==="exact"&&e.count.value>0?3:e.pageRows>0?2:e.count.kind==="unknown"?1:0,oe=e=>e.count.kind==="exact"?e.count.value:0,co=(e,t)=>se(e)!==se(t)?se(e)>se(t):oe(e)!==oe(t)?oe(e)>oe(t):e.pageRows>t.pageRows;function lo(e,{pageRowsByMailbox:t}){const s=e.map(u=>({...u,pageRows:t.get(u.mailboxId)??0}));for(const[u,v]of t)v<=0||s.some(p=>p.mailboxId===u)||s.push({mailboxId:u,count:{kind:"unknown"},failed:!1,pageRows:v});const n=s[0];if(!n)return;let i=0,d=!0,m=n;for(const u of s)u.count.kind==="unknown"?d=!1:i+=u.count.value,co(u,m)&&(m=u);const l=s.some(u=>u.pageRows>0),c=s.some(u=>u.failed);if(i===0&&!l&&(d||!c))return;const h=d&&i===0&&l;return{mailboxId:m.mailboxId,count:d&&!h?{kind:"exact",value:i}:{kind:"unknown"}}}const uo=50,fo=200,mo=[],Ke=()=>r.jsx("div",{className:"animate-pulse",children:Array.from({length:3}).map((e,t)=>r.jsxs("div",{className:"flex items-start gap-3 py-2 pl-5 pr-4 border-b border-line",children:[r.jsx("div",{className:"size-7 rounded-full bg-surface-sunken shrink-0 mt-0.5"}),r.jsxs("div",{className:"flex-1 space-y-1.5",children:[r.jsxs("div",{className:"flex justify-between gap-2",children:[r.jsx("div",{className:"h-3.5 bg-surface-sunken rounded w-28"}),r.jsx("div",{className:"h-3 bg-surface-sunken rounded w-12"})]}),r.jsx("div",{className:"h-3.5 bg-surface-sunken rounded w-48"}),r.jsx("div",{className:"h-3 bg-surface-sunken rounded w-full"})]})]},t))}),ho=({accountEmail:e})=>{const t=Xe();return r.jsxs("div",{className:"flex items-center gap-2 px-row-inset py-2 border-b border-line bg-danger-soft/40 text-xs text-danger",children:[r.jsx($e,{className:"size-3.5 shrink-0"}),r.jsxs("span",{className:"flex-1 truncate",children:[e," can't connect"]}),r.jsx("button",{type:"button",onClick:()=>t("accounts"),className:"shrink-0 underline text-danger hover:opacity-80",children:"Reconnect"})]})},go=(e,t)=>{if(t.size===0)return{};const s=e.filter(d=>t.has(d.id)),n=Os(s.map(d=>d.accountId));if(n.restriction)return n;const i=new Set;for(const d of s)d.mailboxId&&i.add(d.mailboxId);return i.size>1?{accountId:n.accountId,restriction:"spansFolders",moveDisabledHint:`Move only works within one folder — this selection spans ${i.size} folders`}:{accountId:n.accountId,mailboxId:i.size===1?[...i][0]:void 0}};function po({header:e,rows:t,wizard:s,children:n}){const{selectedIds:i,selectedCount:d,exitSelection:m,orderedIds:l,allSelected:c,toggleAllLoaded:h}=ts(),u=a.useMemo(()=>go(t,i),[t,i]),{junkMailboxId:v}=ss(u.accountId),{labels:p}=As(u.accountId),b=a.useMemo(()=>Array.from(i),[i]),L=a.useMemo(()=>Ls(t,i),[t,i]),x=os(v,u.mailboxId),S=a.useMemo(()=>l.length>0?{checked:c,indeterminate:d>0&&!c,onChange:h}:void 0,[l.length,c,d,h]),A=u.moveDisabledHint?{tone:"warning",text:u.moveDisabledHint}:void 0,T=R=>r.jsx(as,{title:R.title,navSlot:R.navSlot,titleMeta:R.titleMeta,searchSlot:R.searchSlot,searchField:R.searchField,idleSlot:R.makeFilterSlot,count:d,onCancel:m,onDelete:()=>s.start("delete"),onMove:()=>s.start("move"),onOrganize:()=>s.start("organize"),onJunk:x?()=>s.start("junk"):void 0,onMarkRead:()=>s.start("markRead"),overflowSlot:u.accountId&&u.mailboxId&&d>0&&p.length>0?r.jsx(Fs,{accountId:u.accountId,mailboxId:u.mailboxId,messageIds:b}):void 0,selectAll:S,notice:A});return r.jsx(ns,{...e,selectionBar:T,paneOverlay:r.jsx(rs,{verb:s.verb,accountId:u.accountId,mailboxId:u.mailboxId,selection:L,selectionRestriction:u.restriction,onFinished:m}),children:n})}function xo({accounts:e,selectedMessageId:t,onOpenThread:s,commandsRef:n,onTriageContextChange:i,onDeleteMessages:d}){const{searchQuery:m,searchInput:l,resultFolderIndex:c,onSearchChange:h}=ie(),u=Lt(),v=Ns(),p=Cs(),b=jt(),L=vs(),x=a.useMemo(()=>oo(e.filter(o=>!o.muted?.value)),[e]),[S,A]=a.useState("all"),[T,R]=a.useState("all"),[N,q]=a.useState(new Set),[le,M]=a.useState(!1),D=a.useCallback(o=>{q(f=>{const g=new Set(f);return g.has(o)?g.delete(o):g.add(o),g})},[]),K=a.useCallback(()=>q(new Set),[]),E=l.trim().length>0,{freeText:w,tokens:P}=qt(m.trim().toLowerCase(),u),y=w.length>0,_=a.useMemo(()=>_e({query:l,ownFilters:N}),[l,N]),Q=a.useMemo(()=>Qe({query:l,ownCategory:T}),[l,T]),F=a.useMemo(()=>_e({query:m,ownFilters:N}),[m,N]),C=a.useMemo(()=>Qe({query:m,ownCategory:T}),[m,T]),I=a.useCallback(o=>{if(!E||!nt(o)){D(o);return}const f=Ws(l,o);f!==void 0&&h(f)},[E,l,h,D]),j=a.useCallback(o=>{if(!E){R(o);return}h(Hs(l,o))},[E,l,h]),de=a.useMemo(()=>C==="all"&&!y?o=>{Ue(o)&&j(o)}:void 0,[C,y,j]),ue=a.useCallback(()=>{R("all"),A("all"),K(),E&&h(Ks(l))},[E,l,h,K]),U=ae({queries:x.map(o=>({...kt({path:{accountId:o.accountId}}),staleTime:1/0,meta:{softError:!0}}))}),G=a.useMemo(()=>{const o=new Map;for(let f=0;f<x.length;f++){const g=x[f].accountId,te=(U[f]?.data?.items??[]).reduce((O,Rt)=>O+(Rt.unseenCount??0),0);o.set(g,te)}return o},[x,U]),lt=a.useMemo(()=>x.filter((o,f)=>{const g=U[f];return g?.isError?!Et(g.error):!1}),[x,U]),{criteria:fe,residual:$}=a.useMemo(()=>ao(C,F,P,S==="all"?void 0:S),[C,F,P,S]),dt=a.useMemo(()=>C==="all"?[...zt]:[C],[C]),ve=a.useMemo(()=>({...fe,query:w,...C==="all"?{}:{category:[C]}}),[fe,w,C]),be=io({residual:$,attributes:F}),{sections:V,isLoading:ut,isError:ft,refetch:Se}=Ys({categories:y?mo:dt,criteria:fe,limit:C==="all"?es:uo,counted:be}),{rows:Te,isLoading:mt,isError:ht,refetch:Ce}=Js(ve,fo,y),me=y?mt:ut,we=y?ht:ft,Re=a.useCallback(()=>{if(y){Ce();return}Se()},[y,Ce,Se]),Me=a.useMemo(()=>ro(F),[F]),Y=a.useCallback(o=>Bs(o).map(Wt).filter(f=>Ot(f,Me)&&Ht(f,$)),[Me,$]),J=a.useMemo(()=>V.map(o=>({category:o.category,total:o.total,atCap:o.atCap,loading:o.loading,failed:o.failed,rows:Y(o.rows)})),[V,Y]),Z=a.useMemo(()=>Y(Te),[Te,Y]),gt=a.useCallback(o=>{V.find(f=>f.category===o)?.retry()},[V]),k=a.useMemo(()=>y?Z:J.flatMap(o=>o.rows),[y,Z,J]),pt=a.useMemo(()=>Ft(c),[c]),je=to({criteria:ve,junkMailboxIds:pt,enabled:be&&Es({hasSearchQuery:y,freeText:w,residualTokenCount:$.length})}),{spamIds:he,briefSpamOffer:X}=a.useMemo(()=>{const o={spamIds:void 0,briefSpamOffer:void 0};if(!w)return o;const f=k.map(O=>De(O,c)),{spam:g}=Kt(f),B=new Map;for(const O of g)O.mailboxId&&B.set(O.mailboxId,(B.get(O.mailboxId)??0)+1);const te=lo(je,{pageRowsByMailbox:B});return g.length===0&&!te?o:{spamIds:g.length>0?new Set(g.map(O=>O.id)):void 0,briefSpamOffer:te}},[k,w,c,je]),ke=a.useMemo(()=>{const o=f=>he===void 0?f:f.filter(g=>!he.has(g.id));return y?[{id:"matches",threads:o(Z)}]:Ut(J.map(f=>({...f,rows:o(f.rows)})))},[y,Z,J,he]),Ee=a.useCallback((o,f)=>{const g=k.find(B=>B.id===o)?.threadId;g&&s?.({threadId:g,messageId:o},f)},[k,s]),xt=a.useCallback(o=>{const f=o.threadId??k.find(g=>g.id===o.id)?.threadId;f&&s?.({threadId:f,messageId:o.id})},[k,s]),ge=a.useMemo(()=>x.length<=1?[]:[{id:"all",label:"All",active:S==="all"},...x.map(o=>({id:o.accountId,label:o.email.split("@")[0]??o.email,count:G.get(o.accountId),active:S===o.accountId}))],[x,G,S]),z=a.useMemo(()=>e.filter(o=>o.muted?.value).length,[e]),It=a.useMemo(()=>Array.from(G.values()).reduce((o,f)=>o+f,0),[G]),pe=a.useMemo(()=>x.map(o=>o.accountId),[x]),{hasNewMail:Oe}=ws(),{state:Fe,errorMessage:Ae,refresh:Ne}=Rs(pe,{onSettled:()=>Re()}),yt=a.useMemo(()=>r.jsx(Ms,{state:Fe,onRefresh:Ne,label:"Refresh daily brief",errorMessage:Ae,hasUpdate:Oe(pe)}),[Fe,Ne,Ae,Oe,pe]),vt=a.useMemo(()=>k.map(o=>De(o,c)),[k,c]),bt=a.useMemo(()=>{const o=Gt(ge.map(f=>({id:f.id,label:f.label,count:f.count,active:f.active})));return{categories:o.categories,filters:o.filters,sources:o.sources,sourcesNote:z>0?`+${z} muted`:void 0,selectedCategory:Q,activeFilters:_,expanded:le,onExpandedChange:M,onSelectCategory:f=>j(f),onSelectSource:A,onToggleFilter:f=>I(f),onClear:ue}},[ge,z,Q,_,le,I,j,ue]),Be=ke.length===0&&S==="all"&&w.length===0&&P.length===0,St=a.useMemo(()=>x.map(o=>o.accountId),[x]),Tt=a.useMemo(()=>x.some(o=>js(o.syncPhase)),[x]),ee=ks(St,Be||Tt),Le=r.jsxs("div",{className:"h-full overflow-y-auto",children:[r.jsx(Ke,{}),r.jsx(Ke,{})]}),qe=!me&&!we&&!Be,Ct=$t({tier:p,hasLiveInput:E,hasCommittedQuery:m.trim().length>0,bodyRendersCommittedResults:!0}),wt=qe?r.jsxs("div",{className:"flex h-full min-h-0 flex-col",children:[X&&r.jsx(Vt,{count:X.count,onScopeToSpam:()=>L(X.mailboxId,m)}),r.jsx("div",{className:"min-h-0 flex-1",children:r.jsx(Yt,{sections:ke,briefCategory:Q,Row:Jt,selectedThreadId:t,onSelectThread:Ee,onShowAllSection:de,onRetrySection:gt,flat:y,onSelectBriefCategory:j,sources:ge,sourcesNote:z>0?`+${z} muted`:void 0,onSelectSource:A,activeFilters:_,onToggleFilter:I,onClearFilters:ue})})]}):me?Le:we?r.jsxs("div",{className:"flex h-full flex-col items-center justify-center gap-3 py-12 text-sm text-fg-muted",children:[r.jsx($e,{className:"size-8 text-danger"}),r.jsx("p",{children:"Couldn't load your messages"}),r.jsxs("button",{type:"button",onClick:()=>Re(),className:"flex items-center gap-1 text-accent underline text-xs",children:[r.jsx(qs,{className:"size-3.5"}),"Try again"]})]}):ee.resolved?r.jsx(Ds,{sync:ee.syncing?{synced:ee.synced,total:ee.total}:void 0}):Le;return r.jsx(At,{hasSheet:qe&&!Ct,children:r.jsx(Zt,{selectedMessageId:t,rows:k,onOpen:Ee,onDeleteMessages:d,onSelectionVerb:b.start,commandsRef:n,onTriageContextChange:i,children:r.jsx(po,{wizard:b,header:{title:"Daily brief",unreadCount:It,footer:v?r.jsx(Xt,{}):void 0,searchFilter:bt,searchResults:vt,searchLoading:me,onSelectSearchResult:xt,spamOffer:X,searchResultsInBody:!0,refreshControl:yt},rows:k,children:r.jsxs("div",{className:"flex h-full flex-col",children:[lt.map(o=>r.jsx(ho,{accountEmail:o.email,accountId:o.accountId},o.accountId)),r.jsx("div",{className:"min-h-0 flex-1",children:wt})]})})})})}const it=a.createContext(null);function ce(){const e=a.useContext(it);if(!e)throw new Error("BriefPane.* must be used inside <BriefPane>");return e}function Io({thread:e,children:t}){const s=bs(),n=Ss(),i=Xe(),{searchInput:d}=ie(),m=e?.threadId,l=e?.messageId,{data:c}=Ge({...Nt(),staleTime:6e4}),h=a.useMemo(()=>c?.items??[],[c]),u=a.useMemo(()=>{if(m)return h.find(I=>I.messageId===l)??h.find(I=>I.threadId===m)},[h,m,l]),v=is(m,l),p=u??v,b=l??p?.messageId,L=a.useMemo(()=>{if(m)return{threadId:m,mailboxId:p?.mailboxId??"",subject:p?.subject,messageId:b,authenticity:p?.authenticity}},[m,p,b]),x=a.useCallback((I,j)=>{s(I,{replace:j?.replace,query:d})},[s,d]),S=a.useCallback(I=>{b&&I.includes(b)&&n()},[b,n]),A=Pe({thread:p,isOpen:!0,onAfterOptimisticRemove:S}),T=cs(),{deleteMessages:R}=ls({mailboxId:p?.mailboxId??"",messages:h,onAfterOptimisticRemove:S}),{toggleReadFor:N}=ds({mailboxId:p?.mailboxId??"",messages:h}),q=T.focusedMessageId,M=a.useMemo(()=>h.find(I=>I.messageId===q),[h,q])??p,D=Pe({thread:M,isOpen:M?.messageId===b}),K=ys(),E=ps(),w=xs(),P=a.useMemo(()=>Is(w,m,b),[w,m,b]),y=a.useMemo(()=>{if(M)return I=>w({threadId:M.threadId,messageId:M.messageId,mode:I})},[w,M]),{nextMessageId:_,previousMessageId:Q}=us({context:T,orderedIds:T.orderedIds,selectedMessageId:b,enabled:!K&&!E,hasOpenThread:m!==void 0,onClose:n,handlers:{reply:()=>y?.("reply"),replyAll:()=>y?.("reply-all"),forward:()=>y?.("forward"),delete:()=>{T.listCommandsRef.current?.requestVerb("delete")||D.deleteThread()},toggleStar:D.toggleStar,toggleRead:()=>{T.listCommandsRef.current?.requestVerb("markRead")||M&&N([M.messageId],!M.isRead)},goFlagged:()=>i("flagged"),goSettings:()=>i("settings")}}),F=a.useCallback(I=>{if(!I)return;const j=h.find(de=>de.messageId===I);return j?{threadId:j.threadId,messageId:I}:void 0},[h]),C={selectedMessageId:b,selectedThread:p,conversation:L,onOpenThread:x,onCloseThread:n,nextThread:F(_),previousThread:F(Q),actions:A,onReply:P,triage:T,onDeleteMessages:R,handleDeselectIfRemoved:S};return r.jsx(it.Provider,{value:C,children:t})}function ct(){const{selectedMessageId:e,onOpenThread:t,triage:s,onDeleteMessages:n}=ce(),{accounts:i}=ie();return r.jsx(xo,{accounts:i,selectedMessageId:e,onOpenThread:t,commandsRef:s.listCommandsRef,onTriageContextChange:s.onTriageContextChange,onDeleteMessages:n})}function yo(){const e=xe(),{conversation:t,selectedThread:s,actions:n,onReply:i,handleDeselectIfRemoved:d,onOpenThread:m}=ce(),l=!!t,c=hs(t?.threadId);return r.jsxs(r.Fragment,{children:[r.jsxs("section",{className:"flex h-full w-full min-w-0 flex-col bg-canvas",children:[r.jsx(gs,{hasThread:l,intelligenceOpen:c.isShowing,canToggleIntelligence:c.canToggle,onToggleIntelligence:c.toggle,onReply:i?()=>i("reply"):void 0,onReplyAll:i?()=>i("reply-all"):void 0,onForward:i?()=>i("forward"):void 0,onDelete:l?n.deleteThread:void 0,onToggleStar:l?n.toggleStar:void 0,isStarred:n.isStarred,moveContext:l&&n.accountId&&n.mailboxId?{accountId:n.accountId,currentMailboxId:n.mailboxId,onMove:n.moveThread}:void 0}),r.jsx("div",{className:"min-h-0 flex-1 overflow-hidden",children:t?r.jsx(Je,{threadId:t.threadId,mailboxId:t.mailboxId,subject:t.subject,selectedMessageId:t.messageId,authenticity:t.authenticity,onOpenIntelligence:c.open,listOnScreen:!0}):r.jsx(Dt,{})})]}),r.jsx(Ze,{isOpen:c.drawerOpen,onClose:c.closeDrawer,thread:s,accountId:s?.accountId,onAfterOptimisticRemove:d,onReplyWithText:e,onOpenThread:m})]})}function vo(){const e=xe(),{selectedThread:t,handleDeselectIfRemoved:s,onOpenThread:n}=ce(),{onToggleIntelligence:i}=ie();return r.jsx(ms,{onClose:i,thread:t,accountId:t?.accountId,onAfterOptimisticRemove:s,onReplyWithText:e,onOpenThread:n})}function bo(){const e=xe(),{selectedThread:t,conversation:s,onOpenThread:n,onCloseThread:i,nextThread:d,previousThread:m,handleDeselectIfRemoved:l}=ce(),c=fs(s?.threadId??null);return s?r.jsxs(r.Fragment,{children:[r.jsx(Je,{threadId:s.threadId,mailboxId:s.mailboxId,subject:s.subject,selectedMessageId:s.messageId,authenticity:s.authenticity,onBack:i,onOpenIntelligence:c.toggle,onSwipeNext:d?()=>n(d):void 0,onSwipePrevious:m?()=>n(m):void 0,mobileIntelligenceOpen:c.isOpen}),r.jsx(Ze,{isOpen:c.isOpen,onClose:c.close,thread:t,accountId:t?.accountId,onAfterOptimisticRemove:l,onReplyWithText:e,onOpenThread:n})]}):r.jsx("div",{className:"h-full",children:r.jsx(ct,{})})}const qo=Object.assign(Io,{List:ct,Reading:yo,Intelligence:vo,Phone:bo});export{qo as B};
@@ -0,0 +1 @@
1
+ import{j as n,d as C,o as m,Q as X,R as ee,as as N,r as w,ar as te,X as ne,af as se,T as ae}from"./index-CXzCthHG.js";import{R as _,k as $,J as ie,c as re,K as oe,x as le,L as ce,G as de}from"./useCalendarEvents-lDPF_B6_.js";import{e as ue,g as j,h as me,u as he,b as U,d as xe,i as pe,t as ye,U as ve}from"./useCalendars-BgSJfw8G.js";import{C as ge}from"./calendar-clash-strip-C9X1djbQ.js";const De=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],Ne=["January","February","March","April","May","June","July","August","September","October","November","December"],Te=["first","second","third","fourth","last"],k="";function fe(e,t){if(!/^\d{4}-\d{2}-\d{2}$/.test(e))return[];const[s,a,r]=e.split("-").map(Number),o=new Date(Date.UTC(s,a-1,r)),i=De[o.getUTCDay()],c=Te[Math.min(Math.floor((r-1)/7),4)],l=t===""?"":`, ${t}`,d=o.getUTCDay()>=1&&o.getUTCDay()<=5;return[`Every day${l}`,...d?[`Every weekday${l}`]:[],`Every week on ${i}${l}`,`Every month on the ${c} ${i}${l}`,`Every year on ${r} ${Ne[a-1]}${l}`]}const be="w-full rounded-md border border-line bg-surface-sunken px-3 py-2 text-sm text-fg outline-none placeholder:text-fg-subtle focus-visible:border-line-strong focus-visible:ring-2 focus-visible:ring-ring/30",p=({draft:e,onChange:t},s,a)=>t({...e,[s]:a});function D({label:e,children:t}){return n.jsxs("div",{className:"flex flex-col gap-2",children:[n.jsx("span",{className:"text-2xs font-semibold uppercase tracking-wider text-fg-subtle",children:e}),t]})}function je({draft:e,onChange:t,layout:s="compact",touch:a}){const r=s==="pane";return n.jsx(N,{value:e.title,placeholder:"Title","aria-label":"Title",onChange:o=>p({draft:e,onChange:t},"title",o.target.value),className:m(r?"text-lg font-medium":"text-md font-medium",r?"h-11":a?"min-h-11":"")})}function P(e){return e.date===""||e.endDate===""?!1:e.allDay?e.endDate<e.date:e.startTime===""||e.endTime===""?!1:`${e.endDate}T${e.endTime}`<`${e.date}T${e.startTime}`}function Ee(e,t){return t===""?{...e,date:t}:e.endDate===""?{...e,date:t,endDate:t}:e.date===""?{...e,date:t}:{...e,date:t,endDate:$(t,ie(e.date,e.endDate))}}function Ce(e,t){const s=e.date!==""&&e.endDate===$(e.date,1)&&e.startTime!==""&&e.endTime!==""&&e.endTime<e.startTime;return t&&s?{...e,allDay:t,endDate:e.date}:!t&&e.date!==""&&e.endDate===e.date&&e.startTime!==""&&e.endTime!==""&&e.endTime<e.startTime?{...e,allDay:t,endDate:$(e.date,1)}:{...e,allDay:t}}function $e({draft:e,onChange:t,touch:s}){const a=s?"min-h-11":"",r=P(e),o=w.useId(),i={"aria-invalid":r,"aria-describedby":r?o:void 0},c=m("w-40",a,r&&"border-danger/60"),l=m("w-28",a,r&&"border-danger/60");return n.jsxs("div",{className:"flex flex-col gap-1.5",children:[n.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[n.jsx(N,{type:"date",value:e.date,"aria-label":"Date",...i,onChange:d=>t(Ee(e,d.target.value)),className:c}),!e.allDay&&n.jsx(N,{type:"time",value:e.startTime,"aria-label":"Start time",...i,onChange:d=>p({draft:e,onChange:t},"startTime",d.target.value),className:l}),n.jsx("span",{className:"text-sm text-fg-subtle",children:"to"}),n.jsx(N,{type:"date",value:e.endDate,"aria-label":"End date",min:e.date===""?void 0:e.date,...i,onChange:d=>p({draft:e,onChange:t},"endDate",d.target.value),className:c}),!e.allDay&&n.jsx(N,{type:"time",value:e.endTime,"aria-label":"End time",...i,onChange:d=>p({draft:e,onChange:t},"endTime",d.target.value),className:l}),n.jsxs("label",{className:"flex items-center gap-2 text-sm text-fg-muted",children:[n.jsx("input",{type:"checkbox",checked:e.allDay,onChange:d=>t(Ce(e,d.target.checked)),className:"size-4 accent-current"}),"All day"]})]}),r&&n.jsx("p",{id:o,className:"text-xs text-danger",role:"alert",children:e.allDay?`Ends before it starts. Move the end to ${e.date} or later.`:`Ends before it starts. Move the end past ${e.date} ${e.startTime}, or start earlier.`})]})}function ke({draft:e,onChange:t,calendars:s,touch:a}){return n.jsx(Fe,{calendars:s,value:e.calendarId,onChange:r=>p({draft:e,onChange:t},"calendarId",r),touch:a})}function we({draft:e,onChange:t,touch:s,repeatEditable:a=!0,onCustom:r}){return a?n.jsx(Re,{value:e.repeat,date:e.date,startTime:e.startTime,onChange:o=>p({draft:e,onChange:t},"repeat",o),onCustom:r,className:s?"min-h-11":""}):n.jsxs("p",{className:"flex items-center gap-2 text-sm text-fg-muted",children:[n.jsx(_,{className:"size-4 shrink-0 text-fg-subtle","aria-hidden":!0}),e.repeat===k?"Does not repeat":e.repeat]})}function Ye({draft:e,onChange:t,touch:s}){return n.jsx(N,{value:e.location,placeholder:"Location","aria-label":"Location",onChange:a=>p({draft:e,onChange:t},"location",a.target.value),className:s?"min-h-11":""})}function Ae({draft:e,onChange:t,touch:s}){return n.jsx(N,{value:e.guests,placeholder:"Guests, comma separated","aria-label":"Guests",onChange:a=>p({draft:e,onChange:t},"guests",a.target.value),className:s?"min-h-11":""})}function Oe({draft:e,onChange:t,layout:s="compact"}){return n.jsx("textarea",{value:e.notes,placeholder:"Notes","aria-label":"Notes",onChange:a=>p({draft:e,onChange:t},"notes",a.target.value),rows:s==="pane"?6:3,className:be})}function Me({draft:e,onChange:t,calendars:s,layout:a="compact",expanded:r=!1,onToggleExpanded:o,onSave:i,onCancel:c,onDelete:l,saveLabel:d="Add",header:h,repeatEditable:u=!0,guestsEditable:x=!1,calendarEditable:y=!0,onCustomRepeat:b,touch:v,className:A}){const f=a==="pane",g={draft:e,onChange:t,layout:a,touch:v},O=n.jsx(je,{...g}),M=n.jsx($e,{...g}),R=n.jsx(ke,{...g,calendars:s}),F=n.jsx(we,{...g,repeatEditable:u,onCustom:b}),S=n.jsx(Ye,{...g}),I=n.jsx(Ae,{...g}),L=n.jsx(Oe,{...g}),B=n.jsxs("div",{className:m("flex items-center gap-2",f?"pt-2":"pt-1"),children:[n.jsx(C,{variant:"primary",size:v||f?"md":"sm",onClick:i,disabled:P(e),className:v?"min-h-11 flex-1":"",children:d}),n.jsx(C,{variant:"ghost",size:v||f?"md":"sm",onClick:c,className:v?"min-h-11":"",children:"Cancel"}),l&&n.jsx(C,{variant:"ghost",size:v||f?"md":"sm",onClick:l,className:m("ml-auto text-danger",v&&"min-h-11"),children:"Delete"})]});if(f)return n.jsxs("div",{className:m("flex flex-col gap-5",A),children:[h,n.jsx(D,{label:"Title",children:O}),n.jsx(D,{label:"When",children:M}),y&&n.jsx(D,{label:"Calendar",children:R}),n.jsx(D,{label:"Repeat",children:F}),n.jsx(D,{label:"Location",children:S}),x&&n.jsx(D,{label:"Guests",children:I}),n.jsx(D,{label:"Notes",children:L}),B]});const q=o!==void 0&&!r;return n.jsxs("div",{className:m("flex flex-col gap-3",A),children:[h,O,M,y&&R,o&&n.jsxs("button",{type:"button",onClick:o,"aria-expanded":r,className:m("flex items-center gap-1 self-start rounded-sm text-xs font-medium text-fg-muted outline-none hover:text-fg focus-visible:ring-2 focus-visible:ring-ring",v&&"min-h-11"),children:[r?n.jsx(X,{className:"size-3.5"}):n.jsx(ee,{className:"size-3.5"}),r?"Fewer details":"More details"]}),!q&&n.jsxs("div",{className:"flex flex-col gap-2 border-t border-line pt-3",children:[S,x&&I,F,L]}),B]})}const W="__custom__";function Re({value:e,date:t,startTime:s,onChange:a,onCustom:r,className:o}){const i=fe(t,s),c=e===k||i.includes(e)?i:[e,...i];return n.jsxs(te,{icon:n.jsx(_,{className:"size-4"}),"aria-label":"Repeat",value:e,onChange:l=>{if(l.target.value===W){r?.();return}a(l.target.value)},className:o,children:[n.jsx("option",{value:k,children:"Does not repeat"}),c.map(l=>n.jsx("option",{value:l,children:l},l)),r&&n.jsx("option",{value:W,children:"Custom…"})]})}function Fe({calendars:e,value:t,onChange:s,touch:a}){const r=w.useId();return n.jsxs("fieldset",{className:"flex flex-wrap gap-1.5",children:[n.jsx("legend",{className:"sr-only",children:"Calendar"}),e.map(o=>{const i=re(o.color),c=o.id===t;return n.jsxs("label",{className:m("inline-flex cursor-pointer items-center gap-1.5 rounded-full border px-2.5 text-xs transition-colors","has-[:focus-visible]:ring-2 has-[:focus-visible]:ring-ring",a?"min-h-11":"h-7",c?m(i.soft,i.text,i.border):"border-line text-fg-muted hover:bg-surface-sunken"),children:[n.jsx("input",{type:"radio",name:r,value:o.id,checked:c,onChange:()=>s(o.id),className:"sr-only"}),n.jsx("span",{className:m("size-2 rounded-full",i.solid)}),o.name]},o.id)})]})}function Se({title:e,subtitle:t,onClose:s,children:a,className:r}){return n.jsxs("section",{className:m("flex h-full w-full flex-col bg-surface",r),children:[n.jsxs("header",{className:"flex h-pane-header shrink-0 items-center gap-2 border-b border-line px-row-inset",children:[n.jsx("h2",{className:"shrink-0 text-xs font-medium text-fg",children:e}),t!==void 0&&t!==""&&n.jsx("span",{className:"min-w-0 flex-1 truncate text-xs text-fg-muted",children:t}),n.jsx("button",{type:"button","aria-label":"Close editor",onClick:s,className:"ml-auto flex size-7 shrink-0 items-center justify-center rounded-md text-fg-subtle outline-none hover:bg-surface-sunken hover:text-fg focus-visible:ring-2 focus-visible:ring-ring",children:n.jsx(ne,{className:"size-4"})})]}),n.jsx("div",{className:"min-h-0 flex-1 overflow-y-auto px-row-inset py-5",children:n.jsx("div",{className:"mx-auto w-full max-w-2xl",children:a})})]})}const E=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],T=["SU","MO","TU","WE","TH","FR","SA"],Q=["January","February","March","April","May","June","July","August","September","October","November","December"],Z=["first","second","third","fourth","last"],Y=[1,2,3,4,-1],z="MO,TU,WE,TH,FR",Ie=e=>e.replace(/,\s*\d{2}:\d{2}$/,"").trim();function J(e){const t=Ie(e);if(t==="")return"";if(t==="Every day")return"FREQ=DAILY";if(t==="Every weekday")return`FREQ=WEEKLY;BYDAY=${z}`;const s=t.match(/^Every week on (\w+)$/);if(s){const o=E.indexOf(s[1]);return o===-1?void 0:`FREQ=WEEKLY;BYDAY=${T[o]}`}const a=t.match(/^Every month on the (\w+) (\w+)$/);if(a){const o=Z.indexOf(a[1]),i=E.indexOf(a[2]);return o===-1||i===-1?void 0:`FREQ=MONTHLY;BYDAY=${Y[o]}${T[i]}`}const r=t.match(/^Every year on (\d{1,2}) (\w+)$/);if(r){const o=Q.indexOf(r[2]);return o===-1?void 0:`FREQ=YEARLY;BYMONTH=${o+1};BYMONTHDAY=${Number(r[1])}`}}const Le=e=>e===""?"":`, ${e}`;function Ze(e,t){const s=new Map(e.split(";").map(i=>i.split("=")).filter(i=>i.length===2).map(([i,c])=>[i.toUpperCase(),c.toUpperCase()])),a=Le(t),r=s.get("FREQ"),o=s.get("BYDAY");if(!(s.has("INTERVAL")&&s.get("INTERVAL")!=="1")&&!(s.has("UNTIL")||s.has("COUNT"))){if(r==="DAILY")return`Every day${a}`;if(r==="WEEKLY"){if(o===void 0)return;if(o===z)return`Every weekday${a}`;const i=T.indexOf(o);return i===-1?void 0:`Every week on ${E[i]}${a}`}if(r==="MONTHLY"){const i=o?.match(/^(-?\d)([A-Z]{2})$/);if(!i)return;const c=Y.indexOf(Number(i[1])),l=T.indexOf(i[2]);return c===-1||l===-1?void 0:`Every month on the ${Z[c]} ${E[l]}${a}`}if(r==="YEARLY"){const i=Number(s.get("BYMONTH")),c=Number(s.get("BYMONTHDAY"));return!i||!c||i>12?void 0:`Every year on ${c} ${Q[i-1]}${a}`}}}const H=e=>Date.parse(`${e}T00:00:00Z`)/864e5;function Be(e,t,s){const a=H(s)-H(t);if(e===""||a===0||Number.isNaN(a))return e;const[r,o,i]=s.split("-").map(Number),c=new Date(Date.UTC(r,o-1,i)).getUTCDay(),l=/FREQ=(\w+)/i.exec(e)?.[1]?.toUpperCase();return e.split(";").map(d=>{const[h,u=""]=d.split("="),x=h.toUpperCase();return x==="BYDAY"&&l==="MONTHLY"?`BYDAY=${Y[Math.min(Math.floor((i-1)/7),4)]}${T[c]}`:x==="BYDAY"?`BYDAY=${u.split(",").map(y=>{const b=T.indexOf(y.toUpperCase());return b===-1?y:T[(b+a+7)%7]}).join(",")}`:x==="BYMONTH"?`BYMONTH=${o}`:x==="BYMONTHDAY"?`BYMONTHDAY=${i}`:d}).join(";")}function ze(e,t){return{title:"",date:e,startTime:"09:00",endDate:e,endTime:"10:00",allDay:!1,calendarId:t,location:"",guests:"",notes:"",repeat:""}}function Je(e,t){return{title:e.title,date:e.start.slice(0,10),startTime:e.allDay?"":e.start.slice(11,16),endDate:oe(e),endTime:e.allDay?"":e.end.slice(11,16),allDay:e.allDay,calendarId:e.calendarId,location:t.location,guests:"",notes:t.notes,repeat:t.repeat}}function K(e,t){return e.allDay?{start:e.date,end:ue(e.endDate,1)}:{start:j(e.date,e.startTime,t),end:j(e.endDate,e.endTime,t)}}function G(e,t,s){const a=J(e.repeat)??"",r=e.allDay?e.date:me(t,s.anchor===""?"UTC":s.anchor).slice(0,10);return Be(a,e.date,r)}function V(e,t){return e.title.trim()===""?"Give the event a title before saving it.":e.date===""?"Pick the day the event is on.":e.endDate===""?"Pick the day the event ends on.":e.calendarId===""?"Pick the calendar to save the event in.":!e.allDay&&(e.startTime===""||e.endTime==="")?"Set a start and an end time, or mark the event all day.":e.allDay&&e.endDate<e.date?"The last day is before the first. Move one of them.":!e.allDay&&`${e.endDate}T${e.endTime}`<=`${e.date}T${e.startTime}`?"The end is not after the start. Move one of them.":t&&J(e.repeat)===void 0?"This calendar can't store that repeat rule. Pick one of the offered rules, or turn the repeat off.":""}function Ke(e,t){const s=V(e,!0);if(s!=="")return{ok:!1,problem:s};const{start:a,end:r}=K(e,t.clock);return{ok:!0,input:{calendarId:e.calendarId,summary:e.title.trim(),description:e.notes,location:e.location,start:a,end:r,allDay:e.allDay,...t.anchor===""?{}:{timeZone:t.anchor},recurrenceRule:G(e,a,t)}}}function Ge(e,t,s){const a=t.repeat!==e.repeat,o=t.allDay!==e.allDay||t.date!==e.date||t.startTime!==e.startTime,i=o||t.endDate!==e.endDate||t.endTime!==e.endTime,c=V(t,a);if(c!=="")return{ok:!1,problem:c};const l={};t.title.trim()!==e.title.trim()&&(l.summary=t.title.trim()),t.location!==e.location&&(l.location=t.location),t.notes!==e.notes&&(l.description=t.notes);const{start:d,end:h}=K(t,s.clock);return o&&(l.start=d),i&&(l.end=h,l.allDay=t.allDay,s.anchor!==""&&(l.timeZone=s.anchor)),a&&(l.recurrenceRule=G(t,d,s)),{ok:!0,patch:l}}const Ue=[],We={from:"",to:""};function Ve(e,t=""){const{timeZoneByCalendarId:s}=he(),a=e.date!==""&&!e.allDay&&e.endDate!==""&&e.startTime!==""&&e.endTime!==""&&`${e.endDate}T${e.endTime}`>`${e.date}T${e.startTime}`,{instances:r,isLoading:o,error:i}=le({...a?{from:U("week",e.date).from,to:U("week",e.endDate).to}:We,calendarIds:Ue,enabled:a}),c=xe();return w.useMemo(()=>{if(!a||o||i)return;const l=j(e.date,e.startTime,c),d=j(e.endDate,e.endTime,c),h=r.filter(u=>pe(u)&&u.calendarObjectId!==t).map(u=>ye(u,s[u.calendarId]??ve,c));return ce({start:l,end:d},h).map(u=>({id:u.id,label:`${u.title}, ${de(u)}`}))},[a,o,i,e.date,e.endDate,e.startTime,e.endTime,c,r,t,s])}function qe({title:e,subtitle:t,notice:s="",calendars:a,draft:r,onChange:o,problem:i,saveLabel:c,isSaving:l,repeatEditable:d=!0,calendarEditable:h=!0,clashes:u,onSave:x,onCancel:y}){return n.jsx(Se,{title:e,subtitle:t,onClose:y,children:n.jsx(Me,{draft:r,onChange:o,calendars:a,layout:"pane",repeatEditable:d,calendarEditable:h,saveLabel:l?"Saving…":c,onSave:x,onCancel:y,header:i===""&&s===""&&u===void 0?void 0:n.jsxs("div",{className:"space-y-2",children:[s!==""&&n.jsxs("p",{className:"flex items-start gap-2 rounded-md border border-warning/40 bg-warning-soft px-3 py-2 text-sm text-fg",children:[n.jsx(se,{className:"mt-0.5 size-4 shrink-0 text-warning","aria-hidden":"true"}),n.jsx("span",{className:"min-w-0 flex-1 break-words",children:s})]}),i!==""&&n.jsxs("div",{role:"alert",className:"flex items-start gap-2 rounded-md border border-danger/40 bg-danger-soft px-3 py-2 text-sm",children:[n.jsx(ae,{className:"mt-0.5 size-4 shrink-0 text-danger","aria-hidden":"true"}),n.jsx("p",{className:"min-w-0 flex-1 break-words text-fg",children:i})]}),u!==void 0&&n.jsx(ge,{clashes:u,clearText:"Nothing else is booked at this time."})]})})})}export{qe as C,Se as E,K as a,Ke as c,Je as d,ze as e,Be as m,Ge as p,Ze as t,Ve as u};
@@ -1 +1 @@
1
- import{j as t,r as e}from"./index-D7VpR8Bx.js";const o=e.createContext(void 0),C=({pick:s,children:r})=>t.jsx(o.Provider,{value:s,children:r}),d=()=>e.useContext(o);export{C,d as u};
1
+ import{j as t,r as e}from"./index-CXzCthHG.js";const o=e.createContext(void 0),C=({pick:s,children:r})=>t.jsx(o.Provider,{value:s,children:r}),d=()=>e.useContext(o);export{C,d as u};
@@ -0,0 +1 @@
1
+ import{r,j as n,a9 as l,aa as o}from"./index-CXzCthHG.js";const i=r.createContext(null),v=({chrome:a,children:s})=>n.jsx(i.Provider,{value:a,children:s});function C({workspace:a,reading:s,hasOpenEvent:x}){const e=r.useContext(i);if(!e)return n.jsx(l,{});const t={nav:e.nav,skeleton:n.jsx(l,{}),isLoading:e.isLoading,navOpen:e.navOpen,onOpenNav:e.onOpenNav,onCloseNav:e.onCloseNav,listBias:"list"};return e.isSinglePane?n.jsx(o,{...t,list:x?s:a}):n.jsx(o,{...t,list:a,reading:s})}export{v as C,C as a};
@@ -1 +1 @@
1
- import{j as e}from"./index-D7VpR8Bx.js";const x=({message:s,icon:t})=>e.jsxs("div",{className:"flex flex-col items-center justify-center p-8 text-center",children:[t&&e.jsx("div",{className:"mb-4 text-fg-muted",children:t}),e.jsx("p",{className:"text-fg-muted",children:s})]});export{x as E};
1
+ import{j as e}from"./index-CXzCthHG.js";const x=({message:s,icon:t})=>e.jsxs("div",{className:"flex flex-col items-center justify-center p-8 text-center",children:[t&&e.jsx("div",{className:"mb-4 text-fg-muted",children:t}),e.jsx("p",{className:"text-fg-muted",children:s})]});export{x as E};
@@ -0,0 +1 @@
1
+ import{j as t,T as r}from"./index-CXzCthHG.js";const d=e=>e instanceof Error?e.message:typeof e=="string"?e:typeof e=="object"&&e!==null&&"message"in e&&typeof e.message=="string"?e.message:"An unexpected error occurred",l=({title:e="Couldn't load content",error:a,onRetry:s,variant:i="block"})=>{const n=d(a);return i==="inline"?t.jsxs("div",{role:"alert",className:"flex items-start gap-2 rounded-md border border-danger/40 bg-danger-soft px-3 py-2 text-sm",children:[t.jsx(r,{className:"size-4 shrink-0 text-danger mt-0.5","aria-hidden":"true"}),t.jsxs("div",{className:"flex-1 min-w-0",children:[t.jsx("p",{className:"font-medium text-danger",children:e}),t.jsx("p",{className:"text-fg-muted mt-0.5 break-words",children:n})]}),s&&t.jsx("button",{type:"button",onClick:s,className:"shrink-0 text-sm font-medium text-accent hover:underline",children:"Retry"})]}):t.jsxs("div",{role:"alert",className:"flex flex-col items-center justify-center gap-3 p-8 text-center",children:[t.jsx(r,{className:"size-8 text-danger","aria-hidden":"true"}),t.jsxs("div",{children:[t.jsx("p",{className:"font-medium text-danger",children:e}),t.jsx("p",{className:"text-sm text-fg-muted mt-1 break-words",children:n})]}),s&&t.jsx("button",{type:"button",onClick:s,className:"inline-flex items-center rounded-md border border-line bg-canvas px-4 py-2 text-sm font-medium hover:bg-surface-raised transition-colors",children:"Retry"})]})};export{l as E,d as f};
@@ -0,0 +1 @@
1
+ import{eO as X,r as n,e4 as Y,a as le,w as z,cV as ce,aA as ue,aB as ge,j as r}from"./index-CXzCthHG.js";import{u as he,p as _,R as me}from"./MessageBody-AvWIklnv.js";import{z as pe,B as fe,an as xe,ao as Ie,ay as Te,ap as ye,d as ve,M as be,av as Re,az as Ce,ax as Se,o as we,H as je,L as U,K as Fe,I as Me,e as Oe,W as ke,X as H,Y as Pe,_ as $,$ as J,a0 as Le,a1 as Ae,a2 as Ne}from"./MessageToolbar-CvC2dLSg.js";import{u as De,l as qe,b as Ee,a as Be}from"./MailViewChrome-CJkUbWPO.js";import{g as We,n as Qe,r as ze}from"./reply-B9-kr45N.js";import{a as He}from"./useMessageBodyContent-Gq_pdN4f.js";import{e as Ke,f as Ve}from"./search-token-index-JnwciDu0.js";import{u as Ge}from"./sections-By63r1y_.js";import{f as _e}from"./ErrorState-Bi4vrhhQ.js";import{u as Ue}from"./useMediaQuery-DB2OdJvp.js";import{d as Xe,w as Ye}from"./wizard-selection-zWa1qc6-.js";const K=t=>({...t,starred:!0,order:"desc"}),$e=(t={})=>Y({query:K(t)});function Z(t={}){const{data:e,isLoading:s,isError:a,error:i,refetch:f,fetchNextPage:l,hasNextPage:g,isFetchingNextPage:o}=De({queryKey:$e(t),queryFn:async({pageParam:x})=>{const{data:u}=await X({query:{...K(t),continuationToken:x},throwOnError:!0});return u},initialPageParam:void 0,getNextPageParam:x=>x.continuationToken,staleTime:6e4});return{threads:n.useMemo(()=>(e?.pages??[]).flatMap(x=>x.items??[]),[e]),isLoading:s,isError:a,error:i,refetch:f,fetchNextPage:l,hasNextPage:g,isFetchingNextPage:o}}function Je(t={}){const e={...K(t),unread:!0,count:!0,results:!1},{data:s}=le({queryKey:Y({query:e}),queryFn:async()=>{const{data:a}=await X({query:e,throwOnError:!0});return a},staleTime:6e4});return s?.count}const Ze=["from","subject","category","unread","starred","attachments"],et=(t,e)=>{const s=pe(t),{params:a,residual:i}=fe(e,{...s,starred:!0},Ze);return{criteria:{...a,...s},residual:i}};function tt({rows:t,verb:e}){const{selectedIds:s,exitSelection:a}=Se(),i=n.useMemo(()=>Ye(t,s),[t,s]);return r.jsx(we,{verb:e,selection:i,selectionRestriction:"spansAccounts",onFinished:a})}function st({selectedMessageId:t,onOpenThread:e,commandsRef:s,onTriageContextChange:a,onDeleteMessages:i}){const{searchQuery:f,resultFolderIndex:l,onSearchClearQuery:g}=z(),o=he(),k=Ue(),x=ce(),[u,h]=n.useState("all"),[v,P]=n.useState(new Set),S=n.useCallback(d=>{P(C=>{const I=new Set(C);return I.has(d)?I.delete(d):I.add(d),I})},[]),w=n.useCallback(()=>{h("all"),P(new Set)},[]),T=n.useCallback(()=>{w(),g()},[w,g]),{freeText:j,tokens:b}=_(f.trim().toLowerCase(),o),L=_(f.trim(),o).freeText,{criteria:A,residual:m}=n.useMemo(()=>et({category:u,attributes:v},b),[u,v,b]),F=n.useMemo(()=>j?{...A,query:j}:A,[A,j]),{threads:N,isLoading:D,isError:y,error:E,refetch:M,fetchNextPage:B,hasNextPage:W,isFetchingNextPage:O}=Z(F),p=n.useMemo(()=>Xe(N).map(xe).filter(d=>Ie(d,m)),[N,m]),c=n.useCallback((d,C)=>{const I=p.find(de=>de.id===d)?.threadId;I&&e?.({threadId:I,messageId:d},C)},[p,e]),R=n.useCallback(d=>{const C=d.threadId??p.find(I=>I.id===d.id)?.threadId;C&&e?.({threadId:C,messageId:d.id})},[p,e]),Q=n.useMemo(()=>Te(),[]),se=n.useMemo(()=>p.map(d=>ye(d,l)),[p,l]),ae=Je(F)??null,re=n.useMemo(()=>b.filter(d=>d.type!=="isStarred"),[b]),oe=qe({chips:{category:u,attributes:v},tokens:re,reach:m.length>0?"loaded-pages":"whole-folder",onClear:T}),V=D?"loading":y?"error":p.length===0?"empty":"ready",ne=n.useCallback(()=>{const d=ue(ge());window.open(d,"_blank","noopener,noreferrer")},[]),G=ve(),ie=r.jsx("div",{className:"flex h-full min-h-0 flex-col",children:r.jsxs("div",{className:"flex-1 overflow-y-auto",children:[r.jsx("div",{className:"divide-y divide-line",children:p.map(d=>r.jsx(be,{thread:d,active:d.id===t,onClick:()=>c(d.id)},d.id))}),W?r.jsx("button",{type:"button",className:"w-full py-3 text-sm text-muted hover:text-fg disabled:opacity-50",onClick:()=>B(),disabled:O,children:O?"Loading…":"Load more"}):null]})});return r.jsx(Ee,{title:"Starred",unreadCount:ae,preset:Q,selectedCategory:u,activeFilters:v,onSelectCategory:h,onToggleFilter:S,onClearFilters:w,searchResults:se,searchLoading:D,onSelectSearchResult:R,searchResultsInBody:!0,children:r.jsxs(Re,{selectedMessageId:t,rows:p,onOpen:c,onDeleteMessages:i,onSelectionVerb:x.start,commandsRef:s,onTriageContextChange:a,children:[r.jsx(Be,{listTitle:"Starred",sections:[{id:"flagged",threads:p}],flatList:!0,hideHeader:!0,listState:G.searchResults?"ready":V,listFilter:oe,listScopeLabel:"Starred",searchQuery:L||void 0,errorMessage:y?_e(E):void 0,onRetry:()=>M(),onReportError:ne,selectedThreadId:t,onSelectThread:c,isDesktop:k,selectionBar:r.jsx(Ce,{title:"Starred"}),listBody:G.searchResults??(V==="ready"?ie:void 0)}),r.jsx(tt,{rows:p,verb:x.verb})]})})}const ee=n.createContext(null);function q(){const t=n.useContext(ee);if(!t)throw new Error("FlaggedPane.* must be used inside <FlaggedPane>");return t}function at({thread:t,children:e}){const s=Ke(),a=Ve(),i=Ge(),{searchInput:f}=z(),l=t?.threadId,g=t?.messageId,{threads:o}=Z(),k=n.useMemo(()=>{if(l)return o.find(c=>c.messageId===g)??o.find(c=>c.threadId===l)},[o,l,g]),x=je(l,g),u=k??x,h=g??u?.messageId,v=n.useMemo(()=>{if(l)return{threadId:l,mailboxId:u?.mailboxId??"",subject:u?.subject,messageId:h,authenticity:u?.authenticity}},[l,u,h]),P=n.useCallback((c,R)=>{s(c,{replace:R?.replace,query:f})},[s,f]),S=n.useCallback(c=>{h&&c.includes(h)&&a()},[h,a]),w=U({thread:u,isOpen:!0,onAfterOptimisticRemove:S}),T=Fe(),{deleteMessages:j}=Me({mailboxId:u?.mailboxId??"",messages:o,onAfterOptimisticRemove:S}),{toggleReadFor:b}=Oe({mailboxId:u?.mailboxId??"",messages:o}),L=T.focusedMessageId,m=n.useMemo(()=>o.find(c=>c.messageId===L),[o,L])??u,F=U({thread:m,isOpen:m?.messageId===h}),N=He(),D=We(),y=Qe(),E=n.useMemo(()=>ze(y,l,h),[y,l,h]),M=n.useMemo(()=>{if(m)return c=>y({threadId:m.threadId,messageId:m.messageId,mode:c})},[y,m]),{nextMessageId:B,previousMessageId:W}=ke({context:T,orderedIds:T.orderedIds,selectedMessageId:h,enabled:!N&&!D,hasOpenThread:l!==void 0,onClose:a,handlers:{reply:()=>M?.("reply"),replyAll:()=>M?.("reply-all"),forward:()=>M?.("forward"),delete:()=>{T.listCommandsRef.current?.requestVerb("delete")||F.deleteThread()},toggleStar:F.toggleStar,toggleRead:()=>{T.listCommandsRef.current?.requestVerb("markRead")||m&&b([m.messageId],!m.isRead)},goBrief:()=>i("brief"),goSettings:()=>i("settings")}}),O=n.useCallback(c=>{if(!c)return;const R=o.find(Q=>Q.messageId===c);return R?{threadId:R.threadId,messageId:c}:void 0},[o]),p={selectedMessageId:h,selectedThread:u,conversation:v,onOpenThread:P,onCloseThread:a,nextThread:O(B),previousThread:O(W),actions:w,onReply:E,triage:T,onDeleteMessages:j,handleDeselectIfRemoved:S};return r.jsx(ee.Provider,{value:p,children:e})}function te(){const{selectedMessageId:t,onOpenThread:e,triage:s,onDeleteMessages:a}=q();return r.jsx(st,{selectedMessageId:t,onOpenThread:e,commandsRef:s.listCommandsRef,onTriageContextChange:s.onTriageContextChange,onDeleteMessages:a})}function rt(){const t=H(),{conversation:e,selectedThread:s,actions:a,onReply:i,handleDeselectIfRemoved:f,onOpenThread:l}=q(),g=!!e,o=Ae(e?.threadId);return r.jsxs(r.Fragment,{children:[r.jsxs("section",{className:"flex h-full w-full min-w-0 flex-col bg-canvas",children:[r.jsx(Ne,{hasThread:g,intelligenceOpen:o.isShowing,canToggleIntelligence:o.canToggle,onToggleIntelligence:o.toggle,onReply:i?()=>i("reply"):void 0,onReplyAll:i?()=>i("reply-all"):void 0,onForward:i?()=>i("forward"):void 0,onDelete:g?a.deleteThread:void 0,onToggleStar:g?a.toggleStar:void 0,isStarred:a.isStarred,moveContext:g&&a.accountId&&a.mailboxId?{accountId:a.accountId,currentMailboxId:a.mailboxId,onMove:a.moveThread}:void 0}),r.jsx("div",{className:"min-h-0 flex-1 overflow-hidden",children:e?r.jsx($,{threadId:e.threadId,mailboxId:e.mailboxId,subject:e.subject,selectedMessageId:e.messageId,authenticity:e.authenticity,onOpenIntelligence:o.open,listOnScreen:!0}):r.jsx(me,{})})]}),r.jsx(J,{isOpen:o.drawerOpen,onClose:o.closeDrawer,thread:s,accountId:s?.accountId,onAfterOptimisticRemove:f,onReplyWithText:t,onOpenThread:l})]})}function ot(){const t=H(),{selectedThread:e,handleDeselectIfRemoved:s,onOpenThread:a}=q(),{onToggleIntelligence:i}=z();return r.jsx(Le,{onClose:i,thread:e,accountId:e?.accountId,onAfterOptimisticRemove:s,onReplyWithText:t,onOpenThread:a})}function nt(){const t=H(),{selectedThread:e,conversation:s,onCloseThread:a,onOpenThread:i,nextThread:f,previousThread:l,handleDeselectIfRemoved:g}=q(),o=Pe(s?.threadId??null);return s?r.jsxs(r.Fragment,{children:[r.jsx($,{threadId:s.threadId,mailboxId:s.mailboxId,subject:s.subject,selectedMessageId:s.messageId,authenticity:s.authenticity,onBack:a,onOpenIntelligence:o.toggle,onSwipeNext:f?()=>i(f):void 0,onSwipePrevious:l?()=>i(l):void 0,mobileIntelligenceOpen:o.isOpen}),r.jsx(J,{isOpen:o.isOpen,onClose:o.close,thread:e,accountId:e?.accountId,onAfterOptimisticRemove:g,onReplyWithText:t,onOpenThread:i})]}):r.jsx("div",{className:"h-full",children:r.jsx(te,{})})}const It=Object.assign(at,{List:te,Reading:rt,Intelligence:ot,Phone:nt});export{It as F};
@@ -0,0 +1 @@
1
+ import{r as n,a as f,c as m,p as N,j as e,X as w}from"./index-CXzCthHG.js";import{E as u}from"./ErrorState-Bi4vrhhQ.js";import{D as r,C as x,u as E}from"./index-Cb2UJhnj.js";import{u as k}from"./useMediaQuery-DB2OdJvp.js";import"./reply-B9-kr45N.js";import{d as p,e as h,f as b}from"./useMessageBodyContent-Gq_pdN4f.js";import{C as S}from"./confirm-dialog-AppxcVfC.js";const C=t=>t?"Draft":"New Message",I=()=>{const t=n.useRef(!1);return n.useCallback(()=>{const s=document.querySelector("[data-subject-field]")?.value??"",o=(document.querySelector('[data-testid="compose-body"]')?.textContent??"").replace(/--\s*/g,"").trim();return t.current=s.trim().length>0||o.length>0,t.current},[])},O=()=>{const t=p(),i=h(),s=b(),a=I(),[l,o]=n.useState(!1),{isError:d,error:c,refetch:g}=f({...m(),staleTime:1/0}),j=n.useCallback(D=>{D||(a()?o(!0):s())},[s,a]),y=n.useCallback(()=>{o(!1),s()},[s]),v=n.useCallback(()=>{o(!1)},[]);return N({id:"mobile-compose",open:!0}),e.jsxs(r.Root,{open:!0,onOpenChange:j,children:[e.jsxs(r.Portal,{children:[e.jsx(r.Overlay,{className:"fixed inset-0 z-40 bg-black/40"}),e.jsxs(r.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:{height:"95dvh"},children:[e.jsx(r.Handle,{className:"mx-auto mt-2 mb-1 h-1.5 w-12 rounded-full bg-fg-muted/30"}),e.jsx(r.Title,{className:"px-4 py-2 text-base font-semibold border-b border-line",children:C(t)}),d?e.jsx("div",{className:"flex-1 flex items-center justify-center p-4",children:e.jsx(u,{title:"Couldn't load compose",error:c,onRetry:()=>{g()}})}):e.jsx("div",{className:"flex-1 overflow-hidden",children:e.jsx(x,{mode:"new",outboxMessageId:t,onDraftCreated:i,onClose:s})})]})]}),e.jsx(S,{isOpen:l,title:"Discard draft?",description:"Your message has unsaved content. Are you sure you want to discard it?",confirmLabel:"Discard",cancelLabel:"Keep editing",destructive:!0,onConfirm:y,onCancel:v})]})},K=()=>{const t=p(),i=h(),s=b(),a=k(),{isError:l,error:o,refetch:d}=f({...m(),staleTime:1/0});if(E({bindings:[{key:"Escape",handler:s,preventDefault:!0}]}),!a)return e.jsx(O,{});const c=e.jsxs("header",{className:"flex items-center justify-between gap-2 px-4 py-3 border-b border-line shrink-0",children:[e.jsx("div",{className:"flex items-center gap-2 min-w-0",children:e.jsx("h2",{className:"text-lg font-semibold truncate",children:C(t)})}),e.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",children:e.jsx(w,{className:"size-5"})})]});return l?e.jsxs("div",{className:"h-full flex flex-col bg-canvas",children:[c,e.jsx("div",{className:"flex-1 flex items-center justify-center p-4",children:e.jsx(u,{title:"Couldn't load compose",error:o,onRetry:()=>{d()}})})]}):e.jsxs("div",{className:"flex h-full min-h-0 flex-col bg-canvas",children:[c,e.jsx("div",{className:"min-h-0 flex-1 overflow-hidden",children:e.jsx(x,{mode:"new",outboxMessageId:t,onDraftCreated:i,onClose:s})})]})};export{K as F};
@@ -1 +1 @@
1
- import{h as g,au as f,i as b,K as y,M as v,cB as x,ex as h,r as p,dG as L,j as c,ey as d,ez as C,eA as M}from"./index-D7VpR8Bx.js";import{c as k}from"./popover-menu-BHNjsQiI.js";import{al as A}from"./MessageToolbar-D_XXU4rk.js";import{a as E}from"./useLabels-CesUuQey.js";const I=3,z=({hasSearchQuery:e,freeText:t,residualTokenCount:s})=>{if(!e||s>0)return!1;const a=t.trim();return a.length===0||a.length>=I},S=e=>e===void 0?{kind:"unknown"}:{kind:"exact",value:e},_=e=>{const t=new Set;for(const s of e)s&&t.add(s);return t.size>1?{accountId:void 0,restriction:"spansAccounts",moveDisabledHint:"Move only works within one account — clear selection or pick messages from a single account"}:{accountId:t.size===1?[...t][0]:void 0,restriction:void 0,moveDisabledHint:void 0}},j=e=>{const{mailboxId:t,messages:s}=e,a=g(),{pushError:l}=f(),{mutateAsync:r,isPending:o}=b({...h(),onError:(n,i)=>{l({title:i.body.action==="Remove"?"Couldn't remove label":"Couldn't apply label",detail:x(n),error:n})},onSettled:(n,i,u)=>{y(a,v(A(u.body.messageIds??[],s??[],t)))}});return{applyLabel:p.useCallback((n,i,u)=>{n.length!==0&&L(n,m=>r({body:{messageIds:m,labelId:i,action:u}}))},[r]),isPending:o}};function B({accountId:e,mailboxId:t,messageIds:s}){const{labels:a}=E(e),{applyLabel:l}=j({mailboxId:t}),r=p.useMemo(()=>a.map(o=>({key:o.labelId,label:o.name,icon:c.jsx("span",{className:`size-2.5 rounded-full ${C(o.color)?d[o.color]:d.Default}`}),onSelect:()=>l(s,o.labelId,"Apply")})),[a,s,l]);return r.length===0?null:c.jsx(k,{triggerLabel:"Apply label to selected messages",triggerIcon:c.jsx(M,{className:"size-4 text-fg-subtle"}),triggerText:"Apply label",items:r,align:"start",nested:!0,touch:!1,triggerClassName:"min-h-11 w-full justify-start gap-3 px-4 py-2.5 text-sm font-normal text-fg"})}export{B as L,_ as r,z as s,S as t};
1
+ import{f as g,am as f,g as b,z as y,C as v,cu as x,ek as C,r as p,dw as L,j as c,el as d,em as h,en as k}from"./index-CXzCthHG.js";import{c as M}from"./popover-menu-CTiORP1p.js";import{al as E}from"./MessageToolbar-CvC2dLSg.js";import{a as A}from"./useLabels-CN56tbCw.js";const I=3,z=({hasSearchQuery:e,freeText:t,residualTokenCount:s})=>{if(!e||s>0)return!1;const a=t.trim();return a.length===0||a.length>=I},S=e=>e===void 0?{kind:"unknown"}:{kind:"exact",value:e},_=e=>{const t=new Set;for(const s of e)s&&t.add(s);return t.size>1?{accountId:void 0,restriction:"spansAccounts",moveDisabledHint:"Move only works within one account — clear selection or pick messages from a single account"}:{accountId:t.size===1?[...t][0]:void 0,restriction:void 0,moveDisabledHint:void 0}},j=e=>{const{mailboxId:t,messages:s}=e,a=g(),{pushError:l}=f(),{mutateAsync:r,isPending:o}=b({...C(),onError:(n,i)=>{l({title:i.body.action==="Remove"?"Couldn't remove label":"Couldn't apply label",detail:x(n),error:n})},onSettled:(n,i,u)=>{y(a,v(E(u.body.messageIds??[],s??[],t)))}});return{applyLabel:p.useCallback((n,i,u)=>{n.length!==0&&L(n,m=>r({body:{messageIds:m,labelId:i,action:u}}))},[r]),isPending:o}};function H({accountId:e,mailboxId:t,messageIds:s}){const{labels:a}=A(e),{applyLabel:l}=j({mailboxId:t}),r=p.useMemo(()=>a.map(o=>({key:o.labelId,label:o.name,icon:c.jsx("span",{className:`size-2.5 rounded-full ${h(o.color)?d[o.color]:d.Default}`}),onSelect:()=>l(s,o.labelId,"Apply")})),[a,s,l]);return r.length===0?null:c.jsx(M,{triggerLabel:"Apply label to selected messages",triggerIcon:c.jsx(k,{className:"size-4 text-fg-subtle"}),triggerText:"Apply label",items:r,align:"start",nested:!0,touch:!1,triggerClassName:"min-h-11 w-full justify-start gap-3 px-4 py-2.5 text-sm font-normal text-fg"})}export{H as L,_ as r,z as s,S as t};
@@ -0,0 +1 @@
1
+ import{b as A,r as N,j as e,P as K,S as $,Q as F,R as E,o as C,T as Q,U as V,V as H,W as Y,Y as G,Z,_ as J,$ as X,I as ee,a0 as se,a1 as te,y as ae,f as ne,w as re,a2 as ie,E as le,a as oe,a3 as ce,a4 as ue,a5 as R,a6 as de,a7 as xe,t as fe,x as me,A as he}from"./index-CXzCthHG.js";import{f as ge,l as O,N as v}from"./reply-B9-kr45N.js";import{B as pe}from"./bug-D6xXLRSh.js";import{u as be}from"./roving-focus-iNw1K_A-.js";import{S as je}from"./useLayoutTier-CUyuK30O.js";import{B as ye}from"./bell-off-DNCJLc9z.js";import{u as ve}from"./useQueries-gpmd3w5y.js";import{f as Ne}from"./folder-failure-CqkVSsrb.js";import{i as ke}from"./outbox-status-BlKn6P0x.js";const Ce=A("CirclePause",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"10",x2:"10",y1:"15",y2:"9",key:"c1nkhi"}],["line",{x1:"14",x2:"14",y1:"15",y2:"9",key:"h65svq"}]]);const Se=A("LogOut",[["path",{d:"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4",key:"1uf3rs"}],["polyline",{points:"16 17 21 12 16 7",key:"1gabdz"}],["line",{x1:"21",x2:"9",y1:"12",y2:"12",key:"1uyos4"}]]);const Oe=A("Settings",[["path",{d:"M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z",key:"1qme2f"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]]),we={Mail:"mail sync off"},ze="button:not([disabled]), a[href]",w="outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1 focus-visible:ring-offset-surface-sunken";function Re({active:s,dimmed:a,indent:n}){return C("flex w-full items-center gap-2 rounded-md px-2 py-1 text-left text-sm transition-colors",w,n&&"pl-7",s?"bg-accent-2-soft font-medium text-accent-2":"text-fg-muted hover:bg-surface hover:text-fg",a&&"opacity-55")}function Ae({icon:s,label:a,count:n,active:r,failure:c}){return e.jsxs(e.Fragment,{children:[s&&e.jsx("span",{className:C("shrink-0",r?"text-accent-2":"text-fg-subtle"),children:s}),e.jsx("span",{className:"flex-1 truncate",children:a}),c&&e.jsx(Q,{className:"size-3.5 shrink-0 text-danger","aria-hidden":"true"}),n!=null&&n>0&&e.jsx("span",{className:C("text-2xs tabular-nums",r?"text-accent-2":"text-fg-subtle"),children:n})]})}function S({icon:s,label:a,count:n,active:r,dimmed:c,indent:l,navId:f,linkComponent:g,ariaLabel:m,title:p,failure:d,onClick:k}){const j=Re({active:r,dimmed:c,indent:l}),x=e.jsx(Ae,{icon:s,label:a,count:n,active:r,failure:d}),y=m??a,i=d?`${y} — ${d}`:y,o=d?`${p??a} — ${d}`:p;return f&&g?g({navId:f,className:j,ariaLabel:i,title:o,onClick:k,children:x}):e.jsx("button",{type:"button",onClick:k,className:j,"aria-label":d?i:m,title:o,children:x})}const I={inbox:0,flagged:1,drafts:2,sent:3,archive:4,all:5,junk:6,trash:7};function Le(s){switch(s){case"inbox":return e.jsx(ee,{className:"size-4"});case"flagged":return e.jsx($,{className:"size-4"});case"drafts":return e.jsx(X,{className:"size-4"});case"sent":return e.jsx(V,{className:"size-4"});case"archive":return e.jsx(J,{className:"size-4"});case"all":return e.jsx(Z,{className:"size-4"});case"junk":return e.jsx(G,{className:"size-4"});case"trash":return e.jsx(Y,{className:"size-4"})}}const M=s=>s.role!=null,z=8,P="remit.nav.folders.open.",_="remit.nav.account.open.";function D(s,a,n){if(typeof localStorage>"u")return n;const r=localStorage.getItem(s+a);return r===null?n:r!=="0"}function T(s,a,n){typeof localStorage>"u"||localStorage.setItem(s+a,n?"1":"0")}function Fe({account:s,selectedNavId:a,onSelectNav:n,linkComponent:r}){const[c,l]=N.useState(()=>D(_,s.id,!0)),[f,g]=N.useState(()=>D(P,s.id,!0)),[m,p]=N.useState(!1),d=()=>{l(t=>{const u=!t;return T(_,s.id,u),u})},k=()=>{g(t=>{const u=!t;return T(P,s.id,u),u})},j=s.mailboxes.filter(M).sort((t,u)=>I[t.role]-I[u.role]),x=s.mailboxes.filter(t=>!M(t)),y=m||x.length<=z?x:x.slice(0,z),i=x.length-y.length,o=s.status??"ready",h=s.syncedServices!==void 0&&!s.syncedServices.includes("Mail"),b=o==="ready"&&j.length===0&&x.length===0;return e.jsxs("div",{className:"mt-3",children:[e.jsxs("button",{type:"button",onClick:d,"aria-expanded":c,className:C("flex w-full items-center gap-1.5 px-2 pb-1 text-left transition-colors hover:text-fg",w,s.muted&&"opacity-55"),children:[c?e.jsx(F,{className:"size-3 shrink-0 text-fg-subtle"}):e.jsx(E,{className:"size-3 shrink-0 text-fg-subtle"}),e.jsx("span",{className:"truncate text-2xs font-semibold uppercase tracking-wider text-fg-subtle",children:s.label}),s.muted&&e.jsxs(e.Fragment,{children:[e.jsx(ye,{className:"size-3 shrink-0 text-fg-subtle"}),e.jsx("span",{className:"text-2xs text-fg-subtle",children:"muted"})]}),h&&e.jsxs(e.Fragment,{children:[e.jsx(Ce,{className:"size-3 shrink-0 text-fg-subtle"}),e.jsx("span",{className:"text-2xs text-fg-subtle",children:we.Mail})]})]}),c&&e.jsxs(e.Fragment,{children:[o==="loading"&&e.jsx("div",{className:"px-2 py-1 text-sm text-fg-muted",children:"Loading…"}),o==="error"&&e.jsxs("div",{role:"alert",className:"mx-2 my-1 flex items-start gap-2 rounded-md border border-danger/40 bg-danger-soft px-2 py-1.5 text-sm",children:[e.jsx(Q,{className:"mt-0.5 size-4 shrink-0 text-danger","aria-hidden":"true"}),e.jsx("div",{className:"min-w-0 flex-1",children:e.jsx("p",{className:"font-medium text-danger",children:"Couldn't load mailboxes"})}),s.onRetry&&e.jsx("button",{type:"button",onClick:s.onRetry,className:"shrink-0 text-sm font-medium text-accent hover:underline",children:"Retry"})]}),b&&e.jsx("div",{className:"px-2 py-1 text-sm text-fg-muted",children:"No mailboxes"}),o==="ready"&&e.jsxs(e.Fragment,{children:[j.map(t=>e.jsx(S,{navId:t.id,linkComponent:r,icon:Le(t.role),label:t.name,ariaLabel:t.name,title:t.fullPath??t.name,failure:t.failure,count:t.unseen,active:a===t.id,dimmed:s.muted,onClick:()=>n?.(t.id)},t.id)),s.outboxPending!==void 0&&e.jsx(S,{navId:"outbox",linkComponent:r,icon:e.jsx(V,{className:"size-4"}),label:"Outbox",ariaLabel:"Outbox",count:s.outboxPending>0?s.outboxPending:void 0,active:a==="outbox",dimmed:s.muted,onClick:()=>n?.("outbox")}),x.length>0&&e.jsxs(e.Fragment,{children:[e.jsxs("button",{type:"button",onClick:k,"aria-expanded":f,className:C("mt-1 flex w-full items-center gap-1 px-2 py-1 text-left text-2xs font-semibold uppercase tracking-wider text-fg-subtle transition-colors hover:text-fg",w),children:[f?e.jsx(F,{className:"size-3 shrink-0"}):e.jsx(E,{className:"size-3 shrink-0"}),e.jsx("span",{className:"flex-1",children:"Folders"}),e.jsx("span",{className:"tabular-nums opacity-70",children:x.length})]}),f&&e.jsxs(e.Fragment,{children:[y.map(t=>e.jsx(S,{navId:t.id,linkComponent:r,icon:e.jsx(H,{className:"size-4"}),label:t.name,ariaLabel:t.name,title:t.fullPath??t.name,failure:t.failure,count:t.unseen,active:a===t.id,dimmed:s.muted,onClick:()=>n?.(t.id)},t.id)),(i>0||m)&&x.length>z&&e.jsx("button",{type:"button",onClick:()=>p(t=>!t),className:C("ml-7 flex items-center px-2 py-1 text-2xs font-medium text-accent transition-colors hover:underline",w),children:m?"Show less":`Show all (${x.length})`})]})]})]})]})]})}function Ee({accounts:s,selectedNavId:a,briefUnseen:n,onSelectNav:r,variant:c="desktop",linkComponent:l,calendarNav:f="hidden"}){const g=N.useRef(null);be({containerRef:g,itemSelector:ze});const m=c==="drawer",p=e.jsxs("nav",{ref:m?g:void 0,className:m?"px-2 py-2":"flex-1 overflow-y-auto px-2 py-2","aria-label":"Mailboxes",children:[e.jsx(S,{navId:"brief",linkComponent:l,icon:e.jsx(je,{className:"size-4"}),label:"Daily brief",ariaLabel:"Daily brief",count:n,active:a==="brief",onClick:()=>r?.("brief")}),f==="shown"&&e.jsx(S,{navId:"calendar",linkComponent:l,icon:e.jsx(K,{className:"size-4"}),label:"Calendar",ariaLabel:"Calendar",active:a==="calendar",onClick:()=>r?.("calendar")}),e.jsx(S,{navId:"flagged",linkComponent:l,icon:e.jsx($,{className:"size-4"}),label:"Starred",ariaLabel:"Starred",active:a==="flagged",onClick:()=>r?.("flagged")}),s.length===0?e.jsx("div",{className:"px-2 py-4 text-center text-sm text-fg-muted",children:"No accounts configured"}):s.map(d=>e.jsx(Fe,{account:d,selectedNavId:a,onSelectNav:r,linkComponent:l},d.id))]});return m?p:e.jsx("aside",{ref:g,className:"flex h-full w-full flex-col bg-surface-sunken",children:p})}const Ie=({children:s})=>{const{Account:a}=se();return e.jsx(a,{children:s})};function Me(){const{pathname:s}=ge(),a=te({from:"/mail/$mailboxId",shouldThrow:!1});return O(s,"/settings")?"settings":O(s,"/calendar")?"calendar":O(s,"/mail/outbox")?"outbox":O(s,"/mail/flagged")?"flagged":O(s,"/mail/brief")?"brief":a?.mailboxId??""}function Pe(){return e.jsxs("button",{type:"button",onClick:ae,className:"flex w-full items-center gap-2 rounded-md px-2 py-1 text-sm text-fg-muted transition-colors hover:bg-surface hover:text-fg",children:[e.jsx(pe,{className:"size-4 shrink-0"}),e.jsx("span",{className:"flex-1 truncate text-left",children:"Report a bug"})]})}const B=s=>/^\d/.test(s),_e=(s,a)=>{const n=B(s),r=B(a);return n&&!r?-1:!n&&r?1:s.localeCompare(a,void 0,{sensitivity:"base",numeric:!0})};function De(s,a,n){const r=[],c=[];for(const l of s)a.has(l.mailboxId)?r.push(l):c.push(l);return c.sort((l,f)=>_e(R(l,void 0,n),R(f,void 0,n))),{system:r,labels:c}}function Te(s,a,n){const r=de(a)&&s.unseenCount>0;return{id:s.mailboxId,name:R(s,a,n),unseen:r?s.unseenCount:void 0,role:a,fullPath:s.fullPath,failure:Ne(s)}}function q({accounts:s,onMailboxSelect:a,variant:n="desktop"}){const r=ne(),c=Me(),{onSearchChange:l}=re(),{t:f}=ie("mail",{useSuspense:!1}),g=N.useCallback((i,o)=>f(i,{defaultValue:o}),[f]),m=ve({queries:s.map(i=>({...le({path:{accountId:i.accountId}}),staleTime:1/0}))}),{data:p}=oe(ce()),d=N.useMemo(()=>(p?.items??[]).filter(i=>ke(i.status)).length,[p?.items]),k=N.useMemo(()=>s.map((i,o)=>{const h=m[o],b=h?.data?.items??[],t=ue(i.folderAppointments),{system:u,labels:U}=De(b,t,g),W=h?.isError?"error":h?.isLoading?"loading":"ready";return{id:i.accountId,label:i.email,email:i.email,muted:!!i.muted,outboxPending:d,status:W,onRetry:()=>h?.refetch(),mailboxes:[...u,...U].map(L=>Te(L,t.get(L.mailboxId),g))}}),[s,m,d,g]),j=i=>{r.invalidateQueries({queryKey:xe({path:{mailboxId:i},query:{order:"desc"}})})},x=({navId:i,className:o,ariaLabel:h,title:b,children:t,onClick:u})=>i==="brief"?e.jsx(v,{to:"/mail/brief",search:{q:void 0},activeOptions:{includeSearch:!1},onClick:()=>u?.(),className:o,"aria-label":h,title:b,children:t}):i==="calendar"?e.jsx(v,{to:"/calendar",onClick:()=>u?.(),className:o,"aria-label":h,title:b,children:t}):i==="outbox"?e.jsx(v,{to:"/mail/outbox",search:{q:void 0},onClick:()=>u?.(),className:o,"aria-label":h,title:b,children:t}):i==="flagged"?e.jsx(v,{to:"/mail/flagged",search:{q:void 0},onClick:()=>u?.(),className:o,"aria-label":h,title:b,children:t}):i==="settings"?e.jsx(v,{to:"/settings/accounts",onClick:()=>u?.(),className:o,"aria-label":h,title:b,children:t}):e.jsx(v,{to:"/mail/$mailboxId",params:{mailboxId:i},search:{q:void 0},onClick:()=>{j(i),u?.()},className:o,"aria-label":h,title:b,children:t}),y=()=>{l(""),a?.()};return e.jsx(Ee,{accounts:k,selectedNavId:c,onSelectNav:y,linkComponent:x,calendarNav:"shown",variant:n})}function Ye({accounts:s,onMailboxSelect:a}){const r=fe()?.showNavPane??!0,c=me();return r?e.jsx(q,{accounts:s}):e.jsxs("div",{className:"flex h-full flex-col",children:[e.jsx("div",{className:"flex-1 overflow-y-auto",children:e.jsx(q,{accounts:s,onMailboxSelect:a,variant:"drawer"})}),e.jsxs("div",{className:"border-t border-line px-2 py-2",children:[e.jsxs(v,{to:"/settings/accounts",onClick:a,children:[e.jsx(he,{label:c,children:e.jsx(Oe,{className:"size-4 shrink-0"})}),e.jsx("span",{className:"flex-1 truncate text-left",children:"Settings"})]}),e.jsx(Pe,{}),e.jsx(Ie,{children:({signOut:l})=>e.jsxs("button",{type:"button",onClick:()=>{a?.(),l()},className:"flex min-h-11 w-full items-center gap-2 rounded-md px-2 py-1 text-sm text-fg-muted transition-colors hover:bg-surface hover:text-fg","data-testid":"sign-out-button",children:[e.jsx(Se,{className:"size-4 shrink-0"}),e.jsx("span",{className:"flex-1 truncate text-left",children:"Sign out"})]})})]})]})}export{Ie as A,Se as L,Ye as M,Oe as S};
@@ -0,0 +1 @@
1
+ import{l as v}from"./reply-B9-kr45N.js";import{j as r,r as u,a9 as l,aa as p}from"./index-CXzCthHG.js";import{a as m}from"./useMessageBodyContent-Gq_pdN4f.js";import{F as x}from"./FullCompose-D6Xef8Ur.js";function d(o,n,s){if(o!==n)return s}function j(o,n){return o===""?"":n}function C({searchInput:o,committedQuery:n,urlQuery:s,pathname:t,listPath:a}){return!v(t,a)||n!==o?!1:n!==s}const c=u.createContext(null),M=({chrome:o,children:n})=>r.jsx(c.Provider,{value:o,children:n});function N({phone:o,list:n,reading:s,intelligence:t,hasThread:a=!1}){const e=u.useContext(c),f=m();if(!e)return r.jsx(l,{});const i={nav:e.nav,overlay:e.overlay,skeleton:r.jsx(l,{}),isLoading:e.isLoading,navOpen:e.navOpen,onOpenNav:e.onOpenNav,onCloseNav:e.onCloseNav};return e.isSinglePane?r.jsx(p,{...i,list:f?r.jsx(x,{}):o,intelligenceOpen:e.intelligenceOpen}):r.jsx(p,{...i,topBar:e.topBar,list:n,reading:s,intelligence:t,intelligenceOpen:e.intelligenceOpen,hasThread:a})}export{M,N as a,C as b,j as c,d as s};
@@ -0,0 +1 @@
1
+ import{j as s,L as oe,d as A,T as ce,r as f,dj as le,o as K,au as ue,W as de,d7 as fe,ef as me,db as xe,c5 as ge,eg as he,eh as pe,ei as be,w as ve,ej as je,dc as we}from"./index-CXzCthHG.js";import{j as Ne,n as ye}from"./search-token-index-JnwciDu0.js";import{u as Re,L as Q}from"./roving-focus-iNw1K_A-.js";import{a7 as Pe,c as Ce,C as U,a8 as Se,a9 as ke,aa as Ee,ab as Me,ac as Te,ad as Ie,p as Oe,ae as Le,af as De,ag as Ae,ah as $e,ai as ze,aj as q,ak as _e}from"./MessageToolbar-CvC2dLSg.js";import{A as Fe}from"./avatar-qD7fcqFf.js";import{M as He}from"./mail-CHopLOA-.js";import{R as We}from"./refresh-cw-aweb7slK.js";import{M as Be}from"./menu-ouYQ8aI9.js";function Ge(){return s.jsx("div",{className:"space-y-0",role:"status","aria-busy":"true","aria-label":"Loading messages",children:Array.from({length:8}).map((e,t)=>s.jsxs("div",{className:"animate-pulse border-b border-line px-3 py-2",children:[s.jsxs("div",{className:"mb-2 flex items-center justify-between",children:[s.jsx("div",{className:"h-4 w-32 rounded bg-surface-sunken"}),s.jsx("div",{className:"h-3 w-16 rounded bg-surface-sunken"})]}),s.jsx("div",{className:"mb-2 h-4 w-48 rounded bg-surface-sunken"}),s.jsx("div",{className:"h-3 w-full rounded bg-surface-sunken"})]},t))})}function Ke({filter:e,scopeLabel:t,searchQuery:n}){const l=n?.trim();return e?s.jsxs(X,{children:[s.jsx("p",{className:"font-medium text-fg",children:Xe(e.label,t,l)}),s.jsx("p",{className:"mt-1 text-sm text-fg-muted",children:Qe[e.reach]}),s.jsx(A,{variant:"secondary",size:"sm",className:"mt-4",onClick:e.onClear,children:"Clear filter"})]}):s.jsx(X,{children:s.jsx("p",{className:"text-fg-muted",children:Ue(l,t)})})}const Qe={"whole-folder":"Every message in this folder was checked.","loaded-pages":"Only the messages loaded so far were checked."};function Ue(e,t){return e?"No messages match your search":t?`No messages in ${t}`:"No messages in this mailbox"}function Xe(e,t,n){return n?`No results for “${n}” in ${e}`:t?`No ${e} in ${t}`:`No ${e}`}function X({children:e}){return s.jsx("div",{className:"flex h-full flex-1 items-center justify-center",children:s.jsx("div",{className:"flex max-w-sm flex-col items-center justify-center p-8 text-center",children:e})})}function xs(){return s.jsxs("div",{className:"flex items-center justify-center gap-2 py-4 text-sm text-fg-muted",role:"status","aria-live":"polite",children:[s.jsx(oe,{className:"size-4 animate-spin","aria-hidden":"true"}),s.jsx("span",{children:"Loading more…"})]})}function Ye({message:e="Something went wrong loading this mailbox.",onRetry:t,onReport:n}){return s.jsx("div",{className:"flex h-full flex-1 items-center justify-center p-4",children:s.jsxs("div",{role:"alert",className:"flex max-w-sm flex-col items-center justify-center gap-3 text-center",children:[s.jsx(ce,{className:"size-8 text-danger","aria-hidden":"true"}),s.jsxs("div",{children:[s.jsx("p",{className:"font-medium text-danger",children:"Couldn't load messages"}),s.jsx("p",{className:"mt-1 break-words text-sm text-fg-muted",children:e})]}),s.jsxs("div",{className:"flex items-center gap-2",children:[t&&s.jsx(A,{variant:"secondary",size:"sm",onClick:t,children:"Retry"}),n&&s.jsx(A,{variant:"ghost",size:"sm",onClick:n,children:"Report a problem"})]})]})})}const I=72;function Y(e){return e==="leading"?I:e==="trailing"?-I:0}function qe(e){return e>=I/2?"leading":e<=-I/2?"trailing":"none"}function Ve({thread:e,selectionMode:t,checked:n,active:l,peek:u,onPeek:o,onToggleCheck:x,onLongPress:w,onOpen:g,onAct:h}){const[p,N]=f.useState(null),b=f.useRef(null),m=f.useRef(!1),P=i=>{b.current=i,N(i)},v=i=>{const k=b.current,O=m.current;if(m.current=!1,P(null),!(i.event.type.endsWith("cancel")||O)){if(i.tap){if(t){x();return}if(u!=="none"){o("none");return}g();return}i.axis!=="x"||t||k===null||o(qe(k))}},R=le(i=>{if(!i.down){v(i);return}if(Te(i)){if(t)return;m.current=!0,Ie(),w();return}if(!i.intentional||t||m.current||i.axis!=="x")return;const k=i.values[0]-i.initial[0];P(Math.max(-I,Math.min(I,Y(u)+k)))},{...Ee(Me),tapsThreshold:me,axisThreshold:fe.axisThreshold}),y=Pe(R(),ke,{"aria-description":t?void 0:"Select message"}),j=p??Y(u),a=j>0?"leading":j<0?"trailing":"none",d=K("relative touch-pan-y bg-surface","select-none",Ce({active:n||l})),C={transform:j!==0?`translateX(${j}px)`:void 0,transition:p===null?"transform 150ms ease":"none",minHeight:44},S=!e.isRead,M=i=>i.stopPropagation(),$=t?s.jsxs(s.Fragment,{children:[s.jsx("span",{className:K("inline-flex size-7 shrink-0 items-center justify-center rounded-full border",n?"border-accent bg-accent text-accent-fg":"border-line-strong bg-canvas"),children:n&&s.jsx(ue,{className:"size-3.5"})}),s.jsx(U,{thread:e})]}):s.jsxs(s.Fragment,{children:[S&&s.jsx("span",{className:"absolute left-1.5 top-1/2 size-1.5 -translate-y-1/2 rounded-full bg-accent"}),s.jsx("span",{role:"checkbox",tabIndex:0,"aria-checked":n,"aria-label":`Select message from ${e.fromName}`,onPointerDown:M,onPointerMove:M,onPointerUp:M,onClick:i=>{i.preventDefault(),i.stopPropagation(),w()},onKeyDown:i=>{i.key!=="Enter"&&i.key!==" "||(i.preventDefault(),i.stopPropagation(),w())},className:"-m-2 inline-flex size-11 shrink-0 items-center justify-center rounded-full",children:s.jsx(Fe,{name:e.fromName,email:e.fromEmail,size:"sm"})}),s.jsx(U,{thread:e})]});return s.jsxs("div",{className:"relative overflow-hidden",children:[a==="leading"&&s.jsx("button",{type:"button",onClick:()=>h("leading"),"aria-label":e.isRead?"Mark as unread":"Mark as read",className:"absolute inset-y-0 left-0 flex items-center justify-start bg-accent-2 px-6 text-accent-fg",children:e.isRead?s.jsx(He,{className:"size-6"}):s.jsx(Se,{className:"size-6"})}),a==="trailing"&&s.jsx("button",{type:"button",onClick:()=>h("trailing"),"aria-label":"Delete message",className:"absolute inset-y-0 right-0 flex items-center justify-end bg-danger px-6 text-canvas",children:s.jsx(de,{className:"size-6"})}),s.jsx("button",{type:"button",role:t?"checkbox":void 0,"aria-checked":t?n:void 0,"data-message-row":!0,"data-message-id":e.id,...y,className:d,style:C,children:$})]})}function Je({sections:e,selectedThreadId:t,selectionMode:n,checkedIds:l,initialPeek:u,onToggleCheck:o,onEnterSelection:x,onOpenThread:w,onRefresh:g,refreshing:h,busy:p=!1}){const[N,b]=f.useState(new Set),[m,P]=f.useState(new Map),v=e.flatMap(a=>a.threads).filter(a=>!N.has(a.id)).map(a=>{const d=m.get(a.id);return d===void 0?a:{...a,isRead:d}}),[R,y]=f.useState(u&&u!=="none"&&v[1]?{id:v[1].id,side:u}:null),j=(a,d)=>{if(d==="trailing")b(C=>new Set(C).add(a));else{const C=v.find(S=>S.id===a);P(S=>new Map(S).set(a,!C?.isRead))}y(null)};return s.jsxs("div",{className:"flex-1 overflow-y-auto",children:[h&&s.jsxs("div",{className:"flex items-center justify-center gap-2 border-b border-line py-3 text-fg-muted",children:[s.jsx(We,{className:"size-4 animate-spin"}),s.jsx("span",{className:"text-xs",children:"Checking for new mail…"})]}),s.jsx("div",{className:"divide-y divide-line",children:v.map(a=>s.jsx("div",{className:p?"pointer-events-none opacity-50":void 0,children:s.jsx(Ve,{thread:a,selectionMode:n,checked:l.has(a.id),active:a.id===t,peek:R?.id===a.id?R.side:"none",onPeek:d=>y(d==="none"?null:{id:a.id,side:d}),onToggleCheck:()=>o(a.id),onLongPress:()=>x(a.id),onOpen:()=>w(a.id),onAct:d=>j(a.id,d)})},a.id))}),!n&&!h&&!p&&s.jsx("button",{type:"button",onClick:g,className:"w-full border-t border-line py-2 text-center text-2xs text-fg-subtle transition-colors hover:bg-surface-sunken",children:"Pull to refresh"})]})}const Ze=new Set;function gs({listTitle:e,listMeta:t,sections:n,briefFilters:l,flatList:u,listState:o="ready",searchQuery:x,listFilter:w,listScopeLabel:g,errorMessage:h,onRetry:p,onReportError:N,briefFilter:b,selectedThreadId:m,density:P="comfortable",onSelectThread:v,onOpenNav:R,isDesktop:y,initialTouchState:j,selection:a,keyboard:d,selectionBar:C,paneOverlay:S,listBody:M,hideHeader:$=!1}){const i=P==="compact"?De:Ae,k=f.useRef(null),O=f.useRef(null),T=xe(d);Re({containerRef:k,itemSelector:Q,enabled:!T});const E=T?d.focusedId:void 0,z=T?E??n[0]?.threads[0]?.id:void 0,_=f.useCallback(r=>z===void 0?void 0:r===z?0:-1,[z]);f.useEffect(()=>{if(E===void 0)return;const r=O.current;if(!r)return;const c=r.querySelector(`${Q}[data-message-id="${E}"]`);!c||c===r.ownerDocument.activeElement||c.focus({preventScroll:!1})},[E]),f.useEffect(()=>{if(!T)return;const r=O.current;if(!r)return;const c=r.ownerDocument.activeElement;c!==null&&c!==r.ownerDocument.body||r.focus({preventScroll:!0})},[T]);const ee=!y&&!l&&o==="ready",[se,B]=f.useState(!1),te=j==="peek-trailing"?"trailing":j==="peek-leading"?"leading":void 0,ne=()=>{B(!0),setTimeout(()=>B(!1),1400)},D=a?.selectedIds??Ze,L=a?.onToggle,G=a?.onRowSelect,re=Oe(D.size,y),F=f.useCallback(r=>{if(L)return{checked:D.has(r),onToggle:c=>{c.preventDefault(),c.stopPropagation(),L(r)}}},[D,L]),H=f.useCallback((r,c)=>G?.(r,Le(c))?(c.preventDefault(),c.shiftKey&&window.getSelection()?.removeAllRanges(),!0):!1,[G]),ae=f.useCallback(({thread:r,active:c,onClick:W})=>s.jsx(i,{thread:r,active:c,focused:r.id===E,tabIndex:_(r.id),selection:F(r.id),onClick:ie=>{H(r.id,ie)||W?.()}}),[i,F,H,E,_]);return s.jsxs("section",{ref:r=>{O.current=r,d?.ref(r)},tabIndex:T?-1:void 0,className:"relative flex h-full w-full flex-col bg-surface outline-none",children:[C??($?null:s.jsxs("header",{className:"flex h-pane-header shrink-0 items-center gap-2 border-b border-line px-row-inset",children:[R&&s.jsx(A,{variant:"ghost",size:"sm",icon:s.jsx(Be,{className:"size-4"}),onClick:R,"aria-label":"Open folders",className:"-ml-1 shrink-0"}),s.jsx("h1",{className:"min-w-0 flex-1 truncate text-sm font-semibold text-fg",children:e}),t&&s.jsx("span",{className:"shrink-0 text-2xs text-fg-subtle",children:t})]})),o==="loading"?s.jsx("div",{className:"flex-1 overflow-y-auto",children:s.jsx(Ge,{})}):o==="empty"?s.jsx(Ke,{filter:w,scopeLabel:g,searchQuery:x}):o==="error"?s.jsx(Ye,{message:h,onRetry:p,onReport:N}):l&&b?s.jsx($e,{...b,sections:n,selectedThreadId:m,Row:ae,keyboard:d,onSelectThread:v}):M??(ee?s.jsx(Je,{sections:n,selectedThreadId:m,selectionMode:re,checkedIds:D,initialPeek:te,onToggleCheck:r=>L?.(r),onEnterSelection:r=>L?.(r),onOpenThread:r=>v?.(r),onRefresh:ne,refreshing:se}):s.jsx("div",{ref:k,className:"flex-1 overflow-y-auto",children:n.map(r=>s.jsxs("div",{children:[!u&&r.label&&s.jsxs("div",{className:"sticky top-0 flex h-section-row items-center justify-between border-b border-line bg-surface-sunken px-row-inset",children:[s.jsx("span",{className:"text-2xs font-semibold uppercase tracking-wider text-fg-subtle",children:r.label}),s.jsx("span",{className:"text-2xs text-fg-subtle tabular-nums",children:r.threads.length})]}),s.jsx("div",{className:"divide-y divide-line",children:r.threads.map(c=>s.jsx(i,{thread:c,active:c.id===m,focused:c.id===E,tabIndex:_(c.id),selection:F(c.id),onClick:W=>{H(c.id,W)||v?.(c.id)}},c.id))})]},r.id))})),y&&s.jsx(ze,{hints:d?ye(d.handlers):Ne}),S]})}var es=class extends ge{constructor(e,t){super(e,t)}bindMethods(){super.bindMethods(),this.fetchNextPage=this.fetchNextPage.bind(this),this.fetchPreviousPage=this.fetchPreviousPage.bind(this)}setOptions(e){e._type="infinite",super.setOptions(e)}getOptimisticResult(e){return e._type="infinite",super.getOptimisticResult(e)}fetchNextPage(e){return this.fetch({...e,meta:{fetchMore:{direction:"forward"}}})}fetchPreviousPage(e){return this.fetch({...e,meta:{fetchMore:{direction:"backward"}}})}createResult(e,t){const{state:n}=e,l=super.createResult(e,t),{isFetching:u,isRefetching:o,isError:x,isRefetchError:w}=l,g=n.fetchMeta?.fetchMore?.direction,h=x&&g==="forward",p=u&&g==="forward",N=x&&g==="backward",b=u&&g==="backward";return{...l,fetchNextPage:this.fetchNextPage,fetchPreviousPage:this.fetchPreviousPage,hasNextPage:pe(t,n.data),hasPreviousPage:he(t,n.data),isFetchNextPageError:h,isFetchingNextPage:p,isFetchPreviousPageError:N,isFetchingPreviousPage:b,isRefetchError:w&&!h&&!N,isRefetching:o&&!p&&!b}}};function hs(e,t){return be(e,es)}const V={dimension:"read",position:"pre",text:"unread"},ss={dimension:"read",position:"pre",text:"read"},J={dimension:"starred",position:"pre",text:"starred"},Z={dimension:"attachment",position:"post",text:"with an attachment"},ts=[["unread",V],["flagged",J],["attachment",Z]],ns=e=>{switch(e.type){case"category":return{dimension:"category",position:"pre",text:q(e.category)??e.value};case"isUnread":return V;case"isRead":return ss;case"isStarred":return J;case"hasAttachment":return Z;case"from":return{dimension:e.raw,position:"post",text:`from ${e.value}`};case"subject":return{dimension:e.raw,position:"post",text:`about “${e.value}”`};case"before":return{dimension:e.raw,position:"post",text:`sent before ${e.value}`};case"after":return{dimension:e.raw,position:"post",text:`sent on or after ${e.value}`};case"in":return{dimension:e.raw,position:"post",text:`in ${e.value}`};case"account":return{dimension:e.raw,position:"post",text:`in the ${e.value} account`}}},rs=(e,t)=>{const n=new Map,l=o=>{n.has(o.dimension)||n.set(o.dimension,o)},u=q(e.category);u&&l({dimension:"category",position:"pre",text:u});for(const[o,x]of ts)e.attributes.has(o)&&l(x);for(const o of t)l(ns(o));return[...n.values()]},as=(e,t)=>{const n=rs(e,t);if(n.length===0)return;const l=u=>n.filter(o=>o.position===u).map(o=>o.text);return[...l("pre"),"mail",...l("post")].join(" ")},ps=({chips:e,tokens:t,reach:n,onClear:l})=>{const u=as(e,t);if(u)return{label:u,reach:n,onClear:l}};function bs({title:e,unreadCount:t,preset:n,selectedCategory:l,activeFilters:u,onSelectCategory:o,onToggleFilter:x,onSelectSource:w,onClearFilters:g,children:h,footer:p,searchResults:N,searchLoading:b,onSelectSearchResult:m,searchResultsLabel:P,searchResultsInBody:v,refreshControl:R}){const{searchInput:y}=ve(),j=y.trim().length>0,a={categories:n.categories,filters:n.filters,sources:n.sources,selectedCategory:l,activeFilters:u,onSelectCategory:o,onSelectSource:w,onToggleFilter:x,onClear:g};return s.jsx(je,{hasSheet:!j,children:s.jsx(_e,{title:e,unreadCount:t,footer:p,searchFilter:a,searchResults:N,searchLoading:b,onSelectSearchResult:m,searchResultsLabel:P,searchResultsInBody:v,refreshControl:R,children:s.jsx(we,{...a,hideChrome:j,children:h})})})}export{xs as M,Ve as S,gs as a,bs as b,ps as l,hs as u};
@@ -0,0 +1 @@
1
+ import{j as r,bJ as Rs,cK as Ms,B as ft,d as G,o as je,e as Vt,r as c,Q as Es,R as Os,bi as As,f as jt,am as qt,cL as Ns,l as zs,g as Rt,z as Fs,C as Ds,H as Ht,cM as _s,cu as Ls,s as Ps,cN as $s,a as mt,cO as Bs,cP as Qt,cQ as Ut,cR as Ye,a3 as Ws,cS as Ks,cH as Vs,I as qs,$ as Hs,W as Jt,cT as Qs,cU as Gt,bS as Us,cV as Js,cW as Gs,cX as Ys,cY as Xs,aA as Zs,aB as en,cZ as tn,c_ as sn,n as Mt,k as nn,bf as on,E as rn,bg as an,bh as ln,w as Yt,a7 as cn,bt as un}from"./index-CXzCthHG.js";import{u as dn,p as Lt,R as hn}from"./MessageBody-AvWIklnv.js";import{u as fn,a as mn,R as gn}from"./useRefreshControl-DdZILsE1.js";import{u as Xt,r as pn,a as Et,C as Zt,c as es,j as xn,M as bn,t as ts,b as vn,d as Sn,e as ss,f as ns,g as yn,h as Cn,i as In,n as Tn,k as kn,l as wn,S as jn,m as Rn,D as Mn,o as En,p as On,q as os,s as An,v as Nn,w as zn,x as Fn,y as Dn,z as _n,A as Ln,B as Pn,E as $n,F as Bn,G as Wn,H as Kn,I as Pt,J as $t,K as Vn,L as qn,N as Hn,O as Qn,P as Un,Q as Jn,R as Gn,T as Yn,U as Xn,V as Zn,W as eo,X as Ot,Y as to,Z as is,_ as rs,$ as as,a0 as so,a1 as no,a2 as oo,a3 as io,a4 as ro,a5 as ao,a6 as lo}from"./MessageToolbar-CvC2dLSg.js";import{S as co,M as uo,a as ho,u as fo,l as mo,b as go}from"./MailViewChrome-CJkUbWPO.js";import{e as Xe,f as po,g as xo,h as bo,i as vo}from"./search-token-index-JnwciDu0.js";import{S as So,u as yo}from"./useLayoutTier-CUyuK30O.js";import{t as Co,L as Io,r as To,s as ko}from"./LabelApplyTrigger-BnPNejnI.js";import{P as wo,n as jo}from"./search-query-Dq2--dgF.js";import{n as Ro,r as Mo,g as Eo}from"./reply-B9-kr45N.js";import{d as Oo,g as Ao,a as No,u as zo}from"./useMessageBodyContent-Gq_pdN4f.js";import{u as Fo}from"./sections-By63r1y_.js";import{A as At}from"./avatar-qD7fcqFf.js";import{N as Do}from"./NavMenuButton-DSpTQKmQ.js";import{C as _o}from"./confirm-dialog-AppxcVfC.js";import{f as Lo}from"./ErrorState-Bi4vrhhQ.js";import{a as Po}from"./useLabels-CN56tbCw.js";import{a as $o,D as Bo,u as Wo}from"./useMediaQuery-DB2OdJvp.js";import{S as gt}from"./shield-check-C6K5BNfE.js";import{B as Ko}from"./bottom-sheet-B_7iO-ln.js";import{C as ls}from"./checkbox-CiQllE1Y.js";import{C as Vo}from"./circle-help-BtMu5xYr.js";import{C as qo}from"./circle-check-CQPt1U9q.js";const Ho=e=>e.toLocaleString(),Qo=(e,o)=>{if(e.kind==="unknown")return`Results for “${o}”`;const t=e.value===1?"result":"results";return`${Ho(e.value)} ${t} for “${o}”`};function Uo({query:e,count:o}){return r.jsxs("div",{className:"flex items-center gap-2 border-b border-line bg-surface-sunken/30 px-3 py-2",children:[r.jsx(Rs,{className:"size-4 text-fg-muted","aria-hidden":"true"}),r.jsx("span",{className:"text-sm text-fg-muted",children:Qo(o,e)})]})}const Jo=({children:e,onRefresh:o,isRefreshing:t})=>$o(Bo)?e:r.jsx(Ms,{onRefresh:o,isPullable:!t,children:e}),Go=e=>e===1?"message":"messages";function Yo({count:e,onReview:o,onDismiss:t,actionLabel:s="Review & rescue"}){return r.jsx(ft,{tone:"info",variant:"soft",onDismiss:t,children:r.jsxs("div",{className:"flex flex-col gap-2",children:[r.jsxs("p",{className:"flex items-start gap-2 text-sm text-fg",children:[r.jsx(gt,{className:"mt-0.5 size-4 shrink-0 text-positive","aria-hidden":!0}),r.jsxs("span",{children:[r.jsx("span",{className:"font-semibold text-fg",children:`${e} ${Go(e)} here`})," ","may not be spam — they're from senders we can verify."]})]}),r.jsx(G,{variant:"primary",size:"sm",onClick:o,className:"self-start",children:s})]})})}const Xo=(e,o)=>e==="vip"?"vip":e==="unknown"&&o==="md"?"unknown-pill":"hidden",cs=({senderTrust:e,size:o="sm",className:t})=>{const s=Xo(e,o);return s==="vip"?r.jsx(So,{className:je("text-warning shrink-0",o==="sm"&&"size-3.5",o==="md"&&"size-4",t),"aria-label":"VIP sender","data-testid":"sender-trust-vip"}):s==="unknown-pill"?r.jsx("span",{className:je("inline-flex items-center rounded border border-dashed border-fg-subtle/40 font-medium uppercase tracking-wide text-fg-muted/80 shrink-0","px-2 py-0.5 text-xs",t),title:"First message from this sender","aria-label":"First message from this sender","data-testid":"sender-trust-unknown",children:"new"}):null};function Zo({candidate:e,selected:o,onToggle:t,hideSender:s=!1}){const{senderName:n,senderAddress:i,subject:l,snippet:a,trustReason:u,trustSubReason:d,senderTrust:h}=e;return r.jsxs("label",{className:je("flex w-full cursor-pointer items-start gap-3 px-3 py-2.5 text-left transition-colors",s&&"pl-11",o?"bg-positive/10":"bg-surface hover:bg-surface-sunken"),children:[r.jsx(ls,{className:"mt-0.5",checked:o,onChange:t,"aria-label":`${o?"Deselect":"Select"} ${s?l:`message from ${n}`}`}),!s&&r.jsx(At,{name:n,email:i,size:"sm"}),r.jsxs("span",{className:"min-w-0 flex-1",children:[!s&&r.jsxs("span",{className:"flex items-center gap-1.5",children:[r.jsx("span",{className:"truncate text-sm font-medium text-fg",children:n}),h&&r.jsx(cs,{senderTrust:h,size:"sm"}),r.jsx("span",{className:"truncate text-2xs text-fg-subtle",children:i})]}),r.jsx("span",{className:"block truncate text-sm text-fg-muted",children:l}),r.jsx("span",{className:"block line-clamp-1 text-xs text-fg-subtle",children:a}),!s&&r.jsxs("span",{className:"mt-1.5 flex flex-wrap items-center gap-1.5",children:[r.jsxs(Vt,{tone:"positive",children:[r.jsx(gt,{className:"size-3","aria-hidden":!0}),u]}),r.jsx("span",{className:"text-2xs text-fg-subtle",children:d})]})]})]})}const ei=e=>{const o=new Map,t=[];for(const s of e){const n=(s.senderAddress||s.senderName).toLowerCase(),i=o.get(n);if(i){i.messages.push(s);continue}o.set(n,{key:n,senderName:s.senderName,senderAddress:s.senderAddress,trustReason:s.trustReason,trustSubReason:s.trustSubReason,senderTrust:s.senderTrust,messages:[s]}),t.push(n)}return t.map(s=>o.get(s)).sort((s,n)=>n.messages.length-s.messages.length)},ti=(e,o)=>{const t=e.messages.filter(s=>o.has(s.id)).length;return t===0?"none":t===e.messages.length?"all":"some"},Bt=e=>e===1?"message":"messages";function si({group:e,selected:o,onToggleGroup:t,onToggleMessage:s}){const[n,i]=c.useState(!1),l=ti(e,o),a=e.messages.length,u=n?Es:Os;return r.jsxs("div",{className:je(l!=="none"?"bg-positive/10":"bg-surface"),children:[r.jsxs("div",{className:"flex w-full items-start gap-3 px-3 py-2.5",children:[r.jsx(ls,{className:"mt-0.5",checked:l==="all",indeterminate:l==="some",onChange:()=>t(e,l!=="all"),"aria-label":`${l==="all"?"Deselect":"Select"} all ${a} ${Bt(a)} from ${e.senderName}`}),r.jsx(At,{name:e.senderName,email:e.senderAddress,size:"sm"}),r.jsxs("div",{className:"min-w-0 flex-1",children:[r.jsxs("div",{className:"flex items-center gap-1.5",children:[r.jsx("span",{className:"truncate text-sm font-medium text-fg",children:e.senderName}),e.senderTrust&&r.jsx(cs,{senderTrust:e.senderTrust,size:"sm"}),r.jsx("span",{className:"truncate text-2xs text-fg-subtle",children:e.senderAddress})]}),r.jsxs("div",{className:"mt-1.5 flex flex-wrap items-center gap-1.5",children:[r.jsxs(Vt,{tone:"positive",children:[r.jsx(gt,{className:"size-3","aria-hidden":!0}),e.trustReason]}),r.jsx("span",{className:"text-2xs text-fg-subtle",children:e.trustSubReason})]})]}),r.jsxs("button",{type:"button",onClick:()=>i(d=>!d),"aria-expanded":n,className:"flex shrink-0 items-center gap-1 rounded-md px-1.5 py-1 text-2xs text-fg-muted transition-colors hover:bg-surface-sunken hover:text-fg",children:[`${a} ${Bt(a)}`,r.jsx(u,{className:"size-3.5","aria-hidden":!0})]})]}),n&&r.jsx("div",{className:"divide-y divide-line border-t border-line",children:e.messages.map(d=>r.jsx(Zo,{candidate:d,selected:o.has(d.id),onToggle:()=>s(d.id),hideSender:!0},d.id))})]})}const Nt=e=>e===1?"message":"messages",ni=(e,o)=>`Moves ${e===1?"this message":`these ${e} ${Nt(e)}`} out of Spam to ${o} now. Nothing later.`,wt=(e,o)=>e.find(t=>t.id===o)?.label??"Inbox";function oi(){return r.jsx(ft,{tone:"info",variant:"soft",children:r.jsx("p",{className:"text-2xs text-fg-muted",children:"We list a message here only when we can confirm the sender is who they say — usually someone you've emailed before, write to often, or a service that consistently checks out. We never guess from words in the subject. Anything we can't confirm stays in Spam."})})}function ii({candidates:e,selected:o,onToggle:t,onToggleGroup:s,onSelectAll:n,onSelectNone:i,onContinue:l,onCancel:a}){const[u,d]=c.useState(!1),h=o.size,g=c.useMemo(()=>ei(e),[e]);return r.jsxs("div",{className:"flex min-h-0 flex-col",children:[r.jsxs("div",{className:"px-row-inset pb-2 pt-1",children:[r.jsxs("div",{className:"flex items-start justify-between gap-2",children:[r.jsxs("h2",{className:"flex items-center gap-2 text-sm font-semibold text-fg",children:[r.jsx(gt,{className:"size-4 text-positive","aria-hidden":!0}),"Rescue from Spam"]}),r.jsx(G,{variant:"ghost",size:"sm",icon:r.jsx(Vo,{className:"size-3.5"}),onClick:()=>d(m=>!m),className:"-mr-1.5 -mt-0.5",children:"Why these?"})]}),r.jsx("p",{className:"mt-1 text-2xs text-fg-subtle",children:"These look safe — from senders we can verify. Uncheck any sender that belongs in Spam, or open a sender to pick individual messages."}),u&&r.jsx("div",{className:"mt-2",children:r.jsx(oi,{})})]}),r.jsxs("div",{className:"flex items-center justify-between px-row-inset pb-1.5",children:[r.jsx("span",{className:"text-2xs font-medium text-fg-muted",children:`${h} of ${e.length} selected · ${g.length} ${g.length===1?"sender":"senders"}`}),r.jsxs("span",{className:"flex gap-1",children:[r.jsx(G,{variant:"ghost",size:"sm",onClick:n,children:"Select all"}),r.jsx(G,{variant:"ghost",size:"sm",onClick:i,children:"Select none"})]})]}),r.jsx("div",{className:"min-h-0 flex-1 divide-y divide-line overflow-y-auto border-y border-line",children:g.map(m=>r.jsx(si,{group:m,selected:o,onToggleGroup:s,onToggleMessage:t},m.key))}),r.jsxs("div",{className:"space-y-2 border-t border-line bg-surface px-row-inset py-3",children:[r.jsx(G,{variant:"primary",onClick:l,className:"h-11 w-full font-semibold",children:`Continue with ${h} ${Nt(h)}`}),r.jsx(G,{variant:"ghost",onClick:a,className:"h-11 w-full",children:"Cancel"})]})]})}function ri({count:e,folders:o,delimiter:t,destination:s,onPick:n,onMove:i,onBack:l}){const[a,u]=c.useState(!1);return r.jsxs("div",{className:"flex min-h-0 flex-col",children:[r.jsxs("div",{className:"px-row-inset pb-2 pt-1",children:[r.jsx("h2",{className:"text-sm font-semibold text-fg",children:"Where should they go?"}),r.jsx("p",{className:"mt-1 text-2xs text-fg-subtle",children:"Pick a folder, then we move them out of Spam."})]}),r.jsx("div",{className:"flex min-h-0 flex-1 flex-col overflow-y-auto px-row-inset py-2",children:a?r.jsx("div",{className:"flex min-h-0 flex-1 overflow-hidden rounded-xl border border-line bg-surface",children:r.jsx(As,{folders:o,selectedId:s,delimiter:t,onSelect:n,onCancel:()=>u(!1)})}):r.jsxs("div",{className:"rounded-xl border border-line bg-surface-sunken p-3",children:[r.jsx("p",{className:"text-2xs text-fg-subtle",children:"Destination"}),r.jsx("p",{className:"mt-0.5 text-sm font-medium text-fg",children:wt(o,s)}),r.jsx(G,{variant:"ghost",size:"sm",onClick:()=>u(!0),className:"mt-2 px-0",children:"Move to a different folder"})]})}),r.jsxs("div",{className:"space-y-2 border-t border-line bg-surface px-row-inset py-3",children:[r.jsx("p",{className:"text-2xs text-fg-subtle",children:ni(e,wt(o,s))}),r.jsx(G,{variant:"primary",onClick:i,className:"h-11 w-full font-semibold",children:`Move ${e} out of Spam`}),r.jsx(G,{variant:"ghost",onClick:l,className:"h-11 w-full",children:"Back"})]})]})}function ai({count:e,destinationLabel:o,onClose:t}){return r.jsxs("div",{className:"flex min-h-0 flex-col",children:[r.jsxs("div",{className:"flex flex-1 flex-col items-center justify-center gap-3 px-row-inset py-10 text-center",children:[r.jsx(qo,{className:"size-10 text-positive","aria-hidden":!0}),r.jsx("p",{className:"text-base font-semibold text-fg",children:`Moved ${e} ${Nt(e)} out of Spam.`}),r.jsx("p",{className:"text-2xs text-fg-subtle",children:`You'll find them in ${o}.`})]}),r.jsx("div",{className:"border-t border-line bg-surface px-row-inset py-3",children:r.jsx(G,{variant:"primary",onClick:t,className:"h-11 w-full font-semibold",children:"Done"})})]})}function li({open:e,candidates:o,defaultDestinationId:t,availableFolders:s,delimiter:n,onConfirmMove:i,onCancel:l}){const[a,u]=c.useState("review"),[d,h]=c.useState(()=>e?new Set(o.map(T=>T.id)):new Set),[g,m]=c.useState(t),[b,y]=c.useState(0),v=c.useRef(!1);c.useEffect(()=>{e&&!v.current&&(u("review"),h(new Set(o.map(T=>T.id))),m(t),y(0)),v.current=e},[e,o,t]);const I=d.size,p=T=>{h(w=>{const O=new Set(w);return O.has(T)?O.delete(T):O.add(T),O})},x=(T,w)=>{h(O=>{const A=new Set(O);for(const $ of T.messages)w?A.add($.id):A.delete($.id);return A})},j=()=>{const T=Array.from(d);y(T.length),i(T,g),u("done")};return r.jsxs(Ko,{open:e,onClose:l,label:"Rescue from spam",dismissLabel:"Close rescue",children:[a==="review"&&r.jsx(ii,{candidates:o,selected:d,onToggle:p,onToggleGroup:x,onSelectAll:()=>h(new Set(o.map(T=>T.id))),onSelectNone:()=>h(new Set),onContinue:()=>u("destination"),onCancel:l}),a==="destination"&&r.jsx(ri,{count:I,folders:s,delimiter:n,destination:g,onPick:m,onMove:j,onBack:()=>u("review")}),a==="done"&&r.jsx(ai,{count:b,destinationLabel:wt(s,g),onClose:l})]})}const ci=(e,o,t,s)=>`${e??""}|${o}|${t??""}|${s??""}`,ui=({accountId:e,mailboxId:o})=>{const t=jt(),{pushError:s}=qt(),{requestAppointment:n}=Ns(),{trashByAccount:i}=Xt(),l=e?i.get(e):void 0,a=ci(e,o,l?.mailboxId,l?.source),[u,d]=c.useState({scope:a});u.scope!==a&&d({scope:a});const h=u.scope===a?u:void 0,g=c.useCallback(()=>t.getQueryData(zs())?.accounts.find(w=>w.accountId===e)?.folderAppointments.find(w=>w.role==="Trash")?.mailboxId??o,[t,e,o]),m=c.useRef(void 0),{mutateAsync:b,isPending:y}=Rt({...$s(),meta:Ps(409),onMutate:()=>(m.current=a,{scope:a,listMailboxId:g()}),onSuccess:(x,j,T)=>{T.scope===a&&d({scope:a,deletedCount:x.deletedCount})},onError:(x,j,T)=>{const w=_s(x);if(!w){s({title:"Couldn't empty Trash",detail:Ls(x),error:x});return}T?.scope===a&&d({scope:a,refusal:w})},onSettled:(x,j,T,w)=>{m.current===w?.scope&&(m.current=void 0),Fs(t,Ds([w?.listMailboxId??o])),e&&t.invalidateQueries({queryKey:Ht({path:{accountId:e}})})}}),v=c.useCallback(()=>e?(d({scope:a}),b({path:{accountId:e}}).then(()=>{},()=>{})):Promise.resolve(),[e,a,b]),I=c.useCallback(()=>{v()},[v]),p=c.useCallback(()=>{const x=h?.refusal;x&&n({accountId:x.accountId,role:x.role,reason:x.reason,action:{kind:"emptyTrash"},onAppointed:v})},[h,n,v]);return{emptyTrash:I,isEmptying:y&&m.current===a,deletedCount:h?.deletedCount,refusal:h?.refusal,repair:p}},di="We can verify this sender";function hi(e){const{data:o}=mt({...Bs({path:{mailboxId:e??""},query:{senderTrust:["vip","wellknown"],dkimMismatch:!1,results:!0,limit:500}}),enabled:!!e,staleTime:6e4});return{candidates:(o?.items??[]).map(s=>({id:s.messageId,senderName:s.fromName||s.fromEmail||"Unknown sender",senderAddress:s.fromEmail??"",subject:s.subject||"(no subject)",snippet:s.snippet??"",trustReason:di,trustSubReason:pn(s.senderTrust),senderTrust:s.senderTrust}))}}const fi=6e4,mi=({mailboxId:e,criteria:o,enabled:t})=>{const s={...o,count:!0,results:!1},{data:n}=mt({queryKey:Qt({path:{mailboxId:e},query:s}),queryFn:async()=>{const{data:i}=await Ut({path:{mailboxId:e},query:s,throwOnError:!0});return i},enabled:t,staleTime:fi});return t?Co(n?.count):{kind:"unknown"}},gi=e=>{const o=new Set,t=[];for(const s of e)o.has(s.threadMessageId)||(o.add(s.threadMessageId),t.push(s));return t};function pi(e){const o=e.toAddresses.join(", ");return{id:e.outboxMessageId,accountId:e.accountId,fromName:e.fromName??e.fromAddress??"Me",fromEmail:e.fromAddress??"",subject:e.subject??"(No subject)",snippet:o?`To: ${o}`:"(No recipients)",timeLabel:Ye(e.updatedAt),isRead:!0}}function xi(e){return{id:e.messageId,accountId:e.accountId,fromName:e.fromName??e.fromEmail??"Unknown",fromEmail:e.fromEmail??"",subject:e.subject??"(No subject)",snippet:e.snippet??"",timeLabel:Ye(e.sentDate),isRead:e.isRead,hasAttachment:e.hasAttachment,starred:e.hasStars===!0,...Et(e)}}function bi({outboxMessages:e,accountId:o,imapThreads:t}){const s=e.filter(l=>l.status==="draft"&&l.accountId===o).map(pi),n=t.map(xi),i=[];return s.length>0&&i.push({id:"remit-drafts",label:"Not yet sent (Remit)",threads:s}),n.length>0&&i.push({id:"imap-drafts",label:"On the server",threads:n}),i}const vi=({label:e,count:o})=>r.jsxs("div",{className:"sticky top-0 z-10 flex items-baseline justify-between border-b border-line bg-surface-sunken px-row-inset py-1",children:[r.jsx("span",{className:"text-2xs font-semibold uppercase tracking-wider text-fg-subtle",children:e}),r.jsx("span",{className:"text-2xs text-fg-subtle tabular-nums",children:o})]}),Si=({row:e,isSelected:o,onOpen:t,onDelete:s,isDeleting:n})=>r.jsxs("button",{type:"button",onClick:()=>t(e.id),className:je("group",es({active:o})),children:[r.jsx(Hs,{className:"size-7 shrink-0 text-fg-muted mt-0.5"}),r.jsx(Zt,{thread:e}),r.jsx("div",{className:"flex items-center gap-1 shrink-0",children:r.jsx("button",{type:"button",onClick:i=>{i.stopPropagation(),s(e.id)},disabled:n,className:"p-1.5 rounded-md text-fg-muted hover:text-danger hover:bg-surface-raised transition-colors opacity-0 group-hover:opacity-100 focus:opacity-100",title:"Delete draft",children:r.jsx(Jt,{className:"size-3.5"})})})]}),yi=({row:e,isSelected:o,onOpen:t})=>{const s=!e.isRead;return r.jsxs("button",{type:"button",onClick:()=>t(e.id),className:je("group",es({active:o})),children:[s&&r.jsx("span",{className:"absolute left-1.5 top-1/2 size-1.5 -translate-y-1/2 rounded-full bg-accent"}),r.jsx(At,{name:e.fromName,email:e.fromEmail,size:"sm"}),r.jsx(Zt,{thread:e})]})};function Ci({accountId:e,selectedMessageId:o,imapThreads:t,title:s,unreadCount:n}){const i=Oo(),l=Ao(),a=Xe(),u=jt(),{data:d}=mt(Ws()),h=c.useMemo(()=>bi({outboxMessages:d?.items??[],accountId:e,imapThreads:t}),[d?.items,e,t]),g=Rt({...Vs(),onSuccess:()=>{u.invalidateQueries({queryKey:Ks()})}}),m=v=>{g.mutate({path:{outboxMessageId:v}})},b=v=>{const I=t.find(p=>p.messageId===v)?.threadId;I&&a({threadId:I,messageId:v})},y=h.length===0;return r.jsxs("section",{className:"flex h-full w-full flex-col bg-surface",children:[r.jsx(wo,{title:s,leading:r.jsx(Do,{}),children:(n??0)>0&&r.jsxs("span",{className:"shrink-0 text-2xs text-fg-subtle tabular-nums",children:[n," unread"]})}),r.jsx("div",{className:"flex-1 overflow-y-auto",children:y?r.jsxs("div",{className:"flex flex-col items-center justify-center h-full gap-2 text-center px-4",children:[r.jsx(qs,{className:"size-8 text-fg-subtle"}),r.jsx("p",{className:"text-sm font-medium text-fg",children:"No drafts"}),r.jsx("p",{className:"text-xs text-fg-subtle",children:"Messages you start composing will appear here."})]}):h.map(v=>r.jsxs("div",{children:[v.label&&r.jsx(vi,{label:v.label,count:v.threads.length}),r.jsx("div",{className:"divide-y divide-line",children:v.threads.map(I=>v.id==="remit-drafts"?r.jsx(Si,{row:I,isSelected:I.id===i,onOpen:l,onDelete:m,isDeleting:g.isPending},I.id):r.jsx(yi,{row:I,isSelected:I.id===o,onOpen:b},I.id))})]},v.id))})]})}const us=e=>e===1?"1 message":`${Gt(e)} messages`,Ii=e=>({title:"Empty Trash?",description:`${us(e)} ${e===1?"is":"are"} erased from the mail server and cannot be restored.`,confirmLabel:"Empty Trash"}),Ti=(e,o={})=>{const{trashFolderLabel:t,staleFolderLabel:s}=o;if(e==="unconfirmed"){const n=Qs(0,"unconfirmed",{trashFolderLabel:t});return{headline:n.title,body:n.description,actionLabel:n.confirmLabel}}return e==="stale"?{headline:"Nothing was emptied.",body:s?`The folder you chose for Trash — ${s} — is gone from the mail server.`:"The folder you chose for Trash is gone from the mail server.",actionLabel:"Pick another folder"}:{headline:"Nothing was emptied.",body:"No folder on this account is set as Trash.",actionLabel:"Pick a folder"}};function ki({messageCount:e,isEmptying:o,deletedCount:t,refusalReason:s,trashFolderLabel:n,staleFolderLabel:i,onEmpty:l,onRepair:a,children:u}){const[d,h]=c.useState(!1);if(e<1&&s===void 0&&t===void 0)return r.jsx(r.Fragment,{children:u});const g=s?Ti(s,{trashFolderLabel:n,staleFolderLabel:i}):void 0,m=Ii(e);return r.jsxs("div",{className:"relative flex h-full min-h-0 flex-col",children:[r.jsx("div",{className:"shrink-0 px-row-inset pt-2",children:r.jsxs("div",{className:"flex flex-col gap-2 rounded-md border border-line px-3 py-2",children:[r.jsxs("div",{className:"flex items-center justify-end gap-2",children:[t!==void 0&&r.jsx("p",{className:"mr-auto text-2xs text-fg-subtle",role:"status",children:`${us(t)} erased from the mail server.`}),r.jsx(G,{variant:"ghost",size:"sm",icon:r.jsx(Jt,{className:"size-3.5","aria-hidden":!0}),disabled:o||e<1,"aria-busy":o,onClick:()=>h(!0),children:o?"Emptying…":"Empty Trash"})]}),g&&r.jsx(ft,{tone:"warning",variant:"soft",children:r.jsxs("div",{className:"flex flex-col gap-2",children:[r.jsx("p",{className:"font-semibold text-fg",children:g.headline}),r.jsx("p",{className:"text-sm",children:g.body}),r.jsx(G,{variant:"primary",size:"sm",className:"self-start",onClick:a,children:g.actionLabel})]})})]})}),r.jsx("div",{className:"min-h-0 flex-1",children:u}),r.jsx(_o,{isOpen:d,title:m.title,description:m.description,confirmLabel:m.confirmLabel,destructive:!0,onConfirm:()=>{h(!1),l()},onCancel:()=>h(!1)})]})}function wi(e,o,t){const s=new Array(e);return new Proxy(s,{get(n,i,l){if(typeof i=="string"){const a=i.charCodeAt(0);if(a>=48&&a<=57){const u=+i;if(Number.isInteger(u)&&u>=0&&u<e){let d=n[u];if(!d){const h=o[u*2];d=n[u]={index:u,key:t(u),start:h,size:o[u*2+1],end:h+o[u*2+1],lane:0}}return d}}if(i==="length")return e}return Reflect.get(n,i,l)}})}function _e(e,o,t){let s=t.initialDeps??[],n,i=!0;function l(){const a=e();return(a.length!==s.length||a.some((d,h)=>s[h]!==d))&&(s=a,n=o(...a),t?.onChange&&!(i&&t.skipInitialOnChange)&&t.onChange(n),i=!1),n}return l.updateDeps=a=>{s=a},l}function Wt(e,o){if(e===void 0)throw new Error("Unexpected undefined");return e}const ji=(e,o)=>Math.abs(e-o)<1.01,Ri=(e,o,t)=>{let s;return function(...n){e.clearTimeout(s),s=e.setTimeout(()=>o.apply(this,n),t)}};let Ge;const Tt=()=>{if(Ge!==void 0)return Ge;if(typeof navigator>"u")return Ge=!1;if(/iP(hone|od|ad)/.test(navigator.userAgent))return Ge=!0;const e=navigator.maxTouchPoints;return Ge=navigator.platform==="MacIntel"&&e!==void 0&&e>0},Kt=e=>{const{offsetWidth:o,offsetHeight:t}=e;return{width:o,height:t}},Mi=e=>e,Ei=e=>{const o=Math.max(e.startIndex-e.overscan,0),s=Math.min(e.endIndex+e.overscan,e.count-1)-o+1,n=new Array(s);for(let i=0;i<s;i++)n[i]=o+i;return n},Oi=(e,o)=>{const t=e.scrollElement;if(!t)return;const s=e.targetWindow;if(!s)return;const n=l=>{const{width:a,height:u}=l;o({width:Math.round(a),height:Math.round(u)})};if(n(Kt(t)),!s.ResizeObserver)return()=>{};const i=new s.ResizeObserver(l=>{const a=()=>{const u=l[0];if(u?.borderBoxSize){const d=u.borderBoxSize[0];if(d){n({width:d.inlineSize,height:d.blockSize});return}}n(Kt(t))};e.options.useAnimationFrameWithResizeObserver?requestAnimationFrame(a):a()});return i.observe(t,{box:"border-box"}),()=>{i.unobserve(t)}},ht={passive:!0},Ai=typeof window>"u"?!0:"onscrollend"in window,Ni=(e,o,t)=>{const s=e.scrollElement;if(!s)return;const n=e.targetWindow;if(!n)return;const i=e.options.useScrollendEvent&&Ai;let l=0;const a=i?null:Ri(n,()=>o(l,!1),e.options.isScrollingResetDelay),u=g=>()=>{l=t(s),a?.(),o(l,g)},d=u(!0),h=u(!1);return s.addEventListener("scroll",d,ht),i&&s.addEventListener("scrollend",h,ht),()=>{s.removeEventListener("scroll",d),i&&s.removeEventListener("scrollend",h)}},zi=(e,o)=>Ni(e,o,t=>{const{horizontal:s,isRtl:n}=e.options;return s?t.scrollLeft*(n&&-1||1):t.scrollTop}),Fi=(e,o,t)=>{if(t.options.useCachedMeasurements){const s=t.indexFromElement(e),n=t.options.getItemKey(s);return t.itemSizeCache.get(n)??t.options.estimateSize(s)}if(o?.borderBoxSize){const s=o.borderBoxSize[0];if(s)return Math.round(s[t.options.horizontal?"inlineSize":"blockSize"])}if(!o){const s=t.indexFromElement(e),n=t.options.getItemKey(s),i=t.itemSizeCache.get(n);if(i!==void 0)return i}return e[t.options.horizontal?"offsetWidth":"offsetHeight"]},Di=(e,{adjustments:o=0,behavior:t},s)=>{var n,i;(i=(n=s.scrollElement)==null?void 0:n.scrollTo)==null||i.call(n,{[s.options.horizontal?"left":"top"]:e+o,behavior:t})},_i=Di;class Li{constructor(o){this.unsubs=[],this.scrollElement=null,this.targetWindow=null,this.isScrolling=!1,this.scrollState=null,this.measurementsCache=[],this._flatMeasurements=null,this.itemSizeCache=new Map,this.itemSizeCacheVersion=0,this.laneAssignments=new Map,this.pendingMin=null,this.prevLanes=void 0,this.lanesChangedFlag=!1,this.lanesSettling=!1,this.pendingScrollAnchor=null,this.scrollRect=null,this.scrollOffset=null,this.scrollDirection=null,this.scrollAdjustments=0,this._iosDeferredAdjustment=0,this._iosTouching=!1,this._iosJustTouchEnded=!1,this._iosTouchEndTimerId=null,this._intendedScrollOffset=null,this.elementsCache=new Map,this.now=()=>{var t,s,n;return((n=(s=(t=this.targetWindow)==null?void 0:t.performance)==null?void 0:s.now)==null?void 0:n.call(s))??Date.now()},this.observer=(()=>{let t=null;const s=()=>t||(!this.targetWindow||!this.targetWindow.ResizeObserver?null:t=new this.targetWindow.ResizeObserver(n=>{n.forEach(i=>{const l=()=>{const a=i.target,u=this.indexFromElement(a);if(!a.isConnected){this.observer.unobserve(a);for(const[d,h]of this.elementsCache)if(h===a){this.elementsCache.delete(d);break}return}this.shouldMeasureDuringScroll(u)&&this.resizeItem(u,this.options.measureElement(a,i,this))};this.options.useAnimationFrameWithResizeObserver?requestAnimationFrame(l):l()})}));return{disconnect:()=>{var n;(n=s())==null||n.disconnect(),t=null},observe:n=>{var i;return(i=s())==null?void 0:i.observe(n,{box:"border-box"})},unobserve:n=>{var i;return(i=s())==null?void 0:i.unobserve(n)}}})(),this.range=null,this.setOptions=t=>{var s,n;const i={debug:!1,initialOffset:0,overscan:1,paddingStart:0,paddingEnd:0,scrollPaddingStart:0,scrollPaddingEnd:0,horizontal:!1,getItemKey:Mi,rangeExtractor:Ei,onChange:()=>{},measureElement:Fi,initialRect:{width:0,height:0},scrollMargin:0,gap:0,indexAttribute:"data-index",initialMeasurementsCache:[],lanes:1,anchorTo:"start",followOnAppend:!1,scrollEndThreshold:1,isScrollingResetDelay:150,enabled:!0,isRtl:!1,useScrollendEvent:!1,useAnimationFrameWithResizeObserver:!1,laneAssignmentMode:"estimate",useCachedMeasurements:!1};for(const m in t){const b=t[m];b!==void 0&&(i[m]=b)}const l=this.options;let a=null,u=null,d=!1;if(l!==void 0&&l.enabled&&i.enabled&&i.anchorTo==="end"&&this.scrollElement!==null){const m=l.count,b=i.count,y=this.getMeasurements(),v=m>0?((s=y[0])==null?void 0:s.key)??l.getItemKey(0):null,I=m>0?((n=y[m-1])==null?void 0:n.key)??l.getItemKey(m-1):null;if(b!==m||m>0&&b>0&&(i.getItemKey(0)!==v||i.getItemKey(b-1)!==I)){d=!0;const j=m>0?this.getVirtualItemForOffset(this.getScrollOffset())??y[0]:null;j&&(a=[j.key,this.getScrollOffset()-j.start]);const T=i.followOnAppend===!0?"auto":i.followOnAppend||null;T&&b>m&&this.isAtEnd(l.scrollEndThreshold)&&(m===0||i.getItemKey(b-1)!==I)&&(u=T)}}this.options=i,d&&(this.pendingMin=0,this.itemSizeCacheVersion++);let h=!1,g=0;if(a&&this.scrollOffset!==null){const[m,b]=a,y=this.getMeasurements(),{count:v,getItemKey:I}=this.options;let p=0;for(;p<v&&I(p)!==m;)p++;if(p<v){const x=y[p];if(x){const j=x.start+b;j!==this.scrollOffset&&(g=j-this.scrollOffset,this.scrollOffset=j,h=!0)}}}(h||u)&&(this.pendingScrollAnchor=[h?a[0]:null,h?a[1]:0,u,g])},this.notify=t=>{var s,n;(n=(s=this.options).onChange)==null||n.call(s,this,t)},this.maybeNotify=_e(()=>(this.calculateRange(),[this.isScrolling,this.range?this.range.startIndex:null,this.range?this.range.endIndex:null]),t=>{this.notify(t)},{key:!1,debug:()=>this.options.debug,initialDeps:[this.isScrolling,this.range?this.range.startIndex:null,this.range?this.range.endIndex:null]}),this.cleanup=()=>{this.unsubs.filter(Boolean).forEach(t=>t()),this.unsubs=[],this.observer.disconnect(),this.rafId!=null&&this.targetWindow&&(this.targetWindow.cancelAnimationFrame(this.rafId),this.rafId=null),this.scrollState=null,this._iosDeferredAdjustment=0,this._iosTouching=!1,this._iosJustTouchEnded=!1,this.scrollElement=null,this.targetWindow=null},this._didMount=()=>()=>{this.cleanup()},this._willUpdate=()=>{var t;const s=this.options.enabled?this.options.getScrollElement():null;if(this.scrollElement!==s){if(this.cleanup(),!s){this.maybeNotify();return}if(this.scrollElement=s,this.scrollElement&&"ownerDocument"in this.scrollElement?this.targetWindow=this.scrollElement.ownerDocument.defaultView:this.targetWindow=((t=this.scrollElement)==null?void 0:t.window)??null,this.elementsCache.forEach(i=>{this.observer.observe(i)}),this.unsubs.push(this.options.observeElementRect(this,i=>{this.scrollRect=i,this.maybeNotify()})),this.unsubs.push(this.options.observeElementOffset(this,(i,l)=>{if(l&&this._intendedScrollOffset===null&&i===this.scrollOffset)return;this._intendedScrollOffset!==null&&Math.abs(i-this._intendedScrollOffset)<1.5&&(i=this._intendedScrollOffset),this._intendedScrollOffset=null,this.scrollAdjustments=0;const a=this.getScrollOffset();this.scrollDirection=l?a===i?this.scrollDirection:a<i?"forward":"backward":null,this.scrollOffset=i,this.isScrolling=l,this._flushIosDeferredIfReady(),this.scrollState&&this.scheduleScrollReconcile(),this.maybeNotify()})),"addEventListener"in this.scrollElement){const i=this.scrollElement,l=()=>{this._iosTouching=!0,this._iosJustTouchEnded=!1,this._iosTouchEndTimerId!==null&&this.targetWindow!=null&&(this.targetWindow.clearTimeout(this._iosTouchEndTimerId),this._iosTouchEndTimerId=null)},a=()=>{this._iosTouching=!1,!(!Tt()||this.targetWindow==null)&&(this._iosJustTouchEnded=!0,this._iosTouchEndTimerId=this.targetWindow.setTimeout(()=>{this._iosJustTouchEnded=!1,this._iosTouchEndTimerId=null,this._flushIosDeferredIfReady()},150))};i.addEventListener("touchstart",l,ht),i.addEventListener("touchend",a,ht),this.unsubs.push(()=>{i.removeEventListener("touchstart",l),i.removeEventListener("touchend",a),this._iosTouchEndTimerId!==null&&this.targetWindow!=null&&(this.targetWindow.clearTimeout(this._iosTouchEndTimerId),this._iosTouchEndTimerId=null)})}this._scrollToOffset(this.getScrollOffset(),{adjustments:void 0,behavior:void 0})}const n=this.pendingScrollAnchor;if(this.pendingScrollAnchor=null,n&&this.scrollElement&&this.options.enabled){const[i,l,a,u]=n;i!==null&&!a&&(Tt()&&(this.isScrolling||this._iosTouching||this._iosJustTouchEnded)?u!==0&&(this._iosDeferredAdjustment+=u):this._scrollToOffset(this.getScrollOffset(),{adjustments:void 0,behavior:void 0})),a&&this.scrollToEnd({behavior:a})}},this._flushIosDeferredIfReady=()=>{if(this._iosDeferredAdjustment===0||this.isScrolling||this._iosTouching||this._iosJustTouchEnded)return;const t=this.getScrollOffset(),s=this.getMaxScrollOffset();if(t<0||t>s)return;const n=this._iosDeferredAdjustment;this._iosDeferredAdjustment=0,this._scrollToOffset(t,{adjustments:this.scrollAdjustments+=n,behavior:void 0})},this.rafId=null,this.getSize=()=>this.options.enabled?(this.scrollRect=this.scrollRect??this.options.initialRect,this.scrollRect[this.options.horizontal?"width":"height"]):(this.scrollRect=null,0),this.getScrollOffset=()=>this.options.enabled?(this.scrollOffset=this.scrollOffset??(typeof this.options.initialOffset=="function"?this.options.initialOffset():this.options.initialOffset),this.scrollOffset):(this.scrollOffset=null,0),this.getMeasurementOptions=_e(()=>[this.options.count,this.options.paddingStart,this.options.scrollMargin,this.options.getItemKey,this.options.enabled,this.options.lanes,this.options.laneAssignmentMode,this.options.gap],(t,s,n,i,l,a,u,d)=>(this.prevLanes!==void 0&&this.prevLanes!==a&&(this.lanesChangedFlag=!0),this.prevLanes=a,this.pendingMin=null,{count:t,paddingStart:s,scrollMargin:n,getItemKey:i,enabled:l,lanes:a,laneAssignmentMode:u,gap:d}),{key:!1}),this.getMeasurements=_e(()=>[this.getMeasurementOptions(),this.itemSizeCacheVersion],({count:t,paddingStart:s,scrollMargin:n,getItemKey:i,enabled:l,lanes:a,laneAssignmentMode:u,gap:d},h)=>{const g=this.itemSizeCache;if(!l)return this.measurementsCache=[],this.itemSizeCache.clear(),this.laneAssignments.clear(),[];if(this.laneAssignments.size>t)for(const p of this.laneAssignments.keys())p>=t&&this.laneAssignments.delete(p);this.lanesChangedFlag&&(this.lanesChangedFlag=!1,this.lanesSettling=!0,this.measurementsCache=[],this.itemSizeCache.clear(),this.laneAssignments.clear(),this.pendingMin=null),this.measurementsCache.length===0&&!this.lanesSettling&&(this.measurementsCache=this.options.initialMeasurementsCache,this.measurementsCache.forEach(p=>{this.itemSizeCache.set(p.key,p.size)}));const m=this.lanesSettling?0:this.pendingMin??0;if(this.pendingMin=null,this.lanesSettling&&this.measurementsCache.length===t&&(this.lanesSettling=!1),a===1){const p=t*2;let x=this._flatMeasurements;if(!x||x.length<p){const w=new Float64Array(p);x&&m>0&&w.set(x.subarray(0,m*2)),x=w,this._flatMeasurements=x}let j;if(m===0)j=s+n;else{const w=m-1;j=x[w*2]+x[w*2+1]+d}for(let w=m;w<t;w++){const O=i(w),A=g.get(O),$=typeof A=="number"?A:this.options.estimateSize(w);x[w*2]=j,x[w*2+1]=$,j+=$+d}const T=wi(t,x,i);return this.measurementsCache=T,T}const b=this.measurementsCache.slice(0,m),y=new Array(a).fill(void 0),v=new Float64Array(a);let I=0;for(let p=0;p<m;p++){const x=b[p];x&&(y[x.lane]===void 0&&I++,y[x.lane]=p,v[x.lane]=x.end)}for(let p=m;p<t;p++){const x=i(p),j=this.laneAssignments.get(p);let T,w;const O=u==="estimate"||g.has(x);if(j!==void 0&&this.options.lanes>1){T=j;const J=y[T],M=J!==void 0?b[J]:void 0;w=M?M.end+d:s+n}else if(I===a){let J=0,M=v[0],ne=y[0];for(let F=1;F<a;F++){const P=v[F];(P<M||P===M&&y[F]<ne)&&(J=F,M=P,ne=y[F])}T=J,w=M+d,O&&this.laneAssignments.set(p,T)}else T=p%this.options.lanes,w=s+n,O&&this.laneAssignments.set(p,T);const A=g.get(x),$=typeof A=="number"?A:this.options.estimateSize(p),U=w+$;b[p]={index:p,start:w,size:$,end:U,key:x,lane:T},y[T]===void 0&&I++,y[T]=p,v[T]=U}return this.measurementsCache=b,b},{key:!1,debug:()=>this.options.debug}),this.calculateRange=_e(()=>[this.getMeasurements(),this.getSize(),this.getScrollOffset(),this.options.lanes],(t,s,n,i)=>t.length===0||s===0?(this.range=null,null):(this.range=$i(t,s,n,i,i===1&&this._flatMeasurements!=null?this._flatMeasurements:null),this.range),{key:!1,debug:()=>this.options.debug}),this.getVirtualIndexes=_e(()=>{let t=null,s=null;const n=this.calculateRange();return n&&(t=n.startIndex,s=n.endIndex),this.maybeNotify.updateDeps([this.isScrolling,t,s]),[this.options.rangeExtractor,this.options.overscan,this.options.count,t,s]},(t,s,n,i,l)=>i===null||l===null?[]:t({startIndex:i,endIndex:l,overscan:s,count:n}),{key:!1,debug:()=>this.options.debug}),this.indexFromElement=t=>{const s=this.options.indexAttribute,n=t.getAttribute(s);return n?parseInt(n,10):(console.warn(`Missing attribute name '${s}={index}' on measured element.`),-1)},this.shouldMeasureDuringScroll=t=>{var s;if(!this.scrollState||this.scrollState.behavior!=="smooth")return!0;const n=this.scrollState.index??((s=this.getVirtualItemForOffset(this.scrollState.lastTargetOffset))==null?void 0:s.index);if(n!==void 0&&this.range){const i=Math.max(this.options.overscan,Math.ceil((this.range.endIndex-this.range.startIndex)/2)),l=Math.max(0,n-i),a=Math.min(this.options.count-1,n+i);return t>=l&&t<=a}return!0},this.measureElement=t=>{if(!t){this.elementsCache.forEach((l,a)=>{l.isConnected||(this.observer.unobserve(l),this.elementsCache.delete(a))});return}const s=this.indexFromElement(t),n=this.options.getItemKey(s),i=this.elementsCache.get(n);i!==t&&(i&&this.observer.unobserve(i),this.observer.observe(t),this.elementsCache.set(n,t)),(!this.isScrolling||this.scrollState)&&this.shouldMeasureDuringScroll(s)&&this.resizeItem(s,this.options.measureElement(t,void 0,this))},this.resizeItem=(t,s)=>{var n,i;if(t<0||t>=this.options.count)return;let l,a,u;const d=this._flatMeasurements;if(this.options.lanes===1&&d!==null)u=this.options.getItemKey(t),a=d[t*2],l=d[t*2+1];else{const m=this.measurementsCache[t];if(!m)return;u=m.key,a=m.start,l=m.size}const h=this.itemSizeCache.get(u)??l,g=s-h;if(g!==0){const m=this.options.anchorTo==="end"&&((n=this.scrollState)==null?void 0:n.behavior)!=="smooth"&&this.getVirtualDistanceFromEnd()<=this.options.scrollEndThreshold,b=m?this.getTotalSize():0,y=((i=this.scrollState)==null?void 0:i.behavior)!=="smooth"&&(this.shouldAdjustScrollPositionOnItemSizeChange!==void 0?this.shouldAdjustScrollPositionOnItemSizeChange(this.measurementsCache[t]??{index:t,key:u,start:a,size:l,end:a+l,lane:0},g,this):a<this.getScrollOffset()+this.scrollAdjustments&&(!this.itemSizeCache.has(u)||this.scrollDirection!=="backward"));(this.pendingMin===null||t<this.pendingMin)&&(this.pendingMin=t),this.itemSizeCache.set(u,s),this.itemSizeCacheVersion++,m?this.applyScrollAdjustment(this.getTotalSize()-b):y&&this.applyScrollAdjustment(g),this.notify(!1)}},this.getVirtualItems=_e(()=>[this.getVirtualIndexes(),this.getMeasurements()],(t,s)=>{const n=[];for(let i=0,l=t.length;i<l;i++){const a=t[i],u=s[a];n.push(u)}return n},{key:!1,debug:()=>this.options.debug}),this.getVirtualItemForOffset=t=>{const s=this.getMeasurements();if(s.length===0)return;const n=this._flatMeasurements,i=this.options.lanes===1&&n!=null,l=ds(0,s.length-1,i?a=>n[a*2]:a=>Wt(s[a]).start,t);return Wt(s[l])},this.getMaxScrollOffset=()=>{if(!this.scrollElement)return 0;if("scrollHeight"in this.scrollElement)return this.options.horizontal?this.scrollElement.scrollWidth-this.scrollElement.clientWidth:this.scrollElement.scrollHeight-this.scrollElement.clientHeight;{const t=this.scrollElement.document.documentElement;return this.options.horizontal?t.scrollWidth-this.scrollElement.innerWidth:t.scrollHeight-this.scrollElement.innerHeight}},this.getVirtualDistanceFromEnd=()=>Math.max(this.getTotalSize()-this.getSize()-this.getScrollOffset(),0),this.getDistanceFromEnd=()=>Math.max(this.getMaxScrollOffset()-this.getScrollOffset(),0),this.isAtEnd=(t=this.options.scrollEndThreshold)=>this.getDistanceFromEnd()<=t,this.getOffsetForAlignment=(t,s,n=0)=>{if(!this.scrollElement)return 0;const i=this.getSize(),l=this.getScrollOffset();s==="auto"&&(s=t>=l+i?"end":"start"),s==="center"?t+=(n-i)/2:s==="end"&&(t-=i);const a=this.getMaxScrollOffset();return Math.max(Math.min(a,t),0)},this.getOffsetForIndex=(t,s="auto")=>{t=Math.max(0,Math.min(t,this.options.count-1));const n=this.getSize(),i=this.getScrollOffset(),l=this.measurementsCache[t];if(!l)return;if(s==="auto")if(l.end>=i+n-this.options.scrollPaddingEnd)s="end";else if(l.start<=i+this.options.scrollPaddingStart)s="start";else return[i,s];if(s==="end"&&t===this.options.count-1)return[this.getMaxScrollOffset(),s];const a=s==="end"?l.end+this.options.scrollPaddingEnd:l.start-this.options.scrollPaddingStart;return[this.getOffsetForAlignment(a,s,l.size),s]},this.scrollToOffset=(t,{align:s="start",behavior:n="auto"}={})=>{const i=this.getOffsetForAlignment(t,s),l=this.now();this.scrollState={index:null,align:s,behavior:n,startedAt:l,lastTargetOffset:i,stableFrames:0},this._scrollToOffset(i,{adjustments:void 0,behavior:n}),this.scheduleScrollReconcile()},this.scrollToIndex=(t,{align:s="auto",behavior:n="auto"}={})=>{t=Math.max(0,Math.min(t,this.options.count-1));const i=this.getOffsetForIndex(t,s);if(!i)return;const[l,a]=i,u=this.now();this.scrollState={index:t,align:a,behavior:n,startedAt:u,lastTargetOffset:l,stableFrames:0},this._scrollToOffset(l,{adjustments:void 0,behavior:n}),this.scheduleScrollReconcile()},this.scrollBy=(t,{behavior:s="auto"}={})=>{const n=this.getScrollOffset()+t,i=this.now();this.scrollState={index:null,align:"start",behavior:s,startedAt:i,lastTargetOffset:n,stableFrames:0},this._scrollToOffset(n,{adjustments:void 0,behavior:s}),this.scheduleScrollReconcile()},this.scrollToEnd=({behavior:t="auto"}={})=>{if(this.options.count>0){this.scrollToIndex(this.options.count-1,{align:"end",behavior:t});return}this.scrollToOffset(Math.max(this.getTotalSize()-this.getSize(),0),{behavior:t})},this.getTotalSize=()=>{var t;const s=this.getMeasurements();let n;if(s.length===0)n=this.options.paddingStart;else if(this.options.lanes===1){const i=s.length-1,l=this._flatMeasurements;l!=null?n=l[i*2]+l[i*2+1]:n=((t=s[i])==null?void 0:t.end)??0}else{const i=Array(this.options.lanes).fill(null);let l=s.length-1;for(;l>=0&&i.some(a=>a===null);){const a=s[l];i[a.lane]===null&&(i[a.lane]=a.end),l--}n=Math.max(...i.filter(a=>a!==null))}return Math.max(n-this.options.scrollMargin+this.options.paddingEnd,0)},this.takeSnapshot=()=>{const t=[];if(this.itemSizeCache.size===0)return t;const s=this.getMeasurements();for(const n of s)n&&this.itemSizeCache.has(n.key)&&t.push({index:n.index,key:n.key,start:n.start,size:n.size,end:n.end,lane:n.lane});return t},this._scrollToOffset=(t,{adjustments:s,behavior:n})=>{this._intendedScrollOffset=t+(s??0),this.options.scrollToFn(t,{behavior:n,adjustments:s},this)},this.measure=()=>{this.pendingMin=null,this.itemSizeCache.clear(),this.laneAssignments.clear(),this.itemSizeCacheVersion++,this.notify(!1)},this.setOptions(o)}applyScrollAdjustment(o,t){o!==0&&(Tt()&&(this.isScrolling||this._iosTouching||this._iosJustTouchEnded)?this._iosDeferredAdjustment+=o:(this._scrollToOffset(this.getScrollOffset(),{adjustments:this.scrollAdjustments+=o,behavior:t}),this.scrollOffset!==null&&(this.scrollOffset+=this.scrollAdjustments,this.scrollAdjustments=0)))}scheduleScrollReconcile(){if(!this.targetWindow){this.scrollState=null;return}this.rafId==null&&(this.rafId=this.targetWindow.requestAnimationFrame(()=>{this.rafId=null,this.reconcileScroll()}))}reconcileScroll(){if(!this.scrollState||!this.scrollElement)return;if(this.now()-this.scrollState.startedAt>5e3){this.scrollState=null;return}const s=this.scrollState.index!=null?this.getOffsetForIndex(this.scrollState.index,this.scrollState.align):void 0,n=s?s[0]:this.scrollState.lastTargetOffset,i=1,l=n!==this.scrollState.lastTargetOffset;if(!l&&ji(n,this.getScrollOffset())){if(this.scrollState.stableFrames++,this.scrollState.stableFrames>=i){this.getScrollOffset()!==n&&this._scrollToOffset(n,{adjustments:void 0,behavior:"auto"}),this.scrollState=null;return}}else if(this.scrollState.stableFrames=0,l){const a=this.getSize()||600,u=Math.abs(n-this.getScrollOffset()),d=this.scrollState.behavior==="smooth"&&u>a;this.scrollState.lastTargetOffset=n,d||(this.scrollState.behavior="auto"),this._scrollToOffset(n,{adjustments:void 0,behavior:d?"smooth":"auto"})}this.scheduleScrollReconcile()}}const ds=(e,o,t,s)=>{for(;e<=o;){const n=(e+o)/2|0,i=t(n);if(i<s)e=n+1;else if(i>s)o=n-1;else return n}return e>0?e-1:0};function Pi(e,o,t){let s=0;for(;s<=o;){const n=(s+o)/2|0,i=e[n*2];if(i<t)s=n+1;else if(i>t)o=n-1;else return n}return s>0?s-1:0}function $i(e,o,t,s,n){const i=e.length-1;if(e.length<=s)return{startIndex:0,endIndex:i};if(s===1&&n!==null){const d=Pi(n,i,t);let h=d;const g=t+o;for(;h<i&&n[h*2]+n[h*2+1]<g;)h++;return{startIndex:d,endIndex:h}}let a=ds(0,i,d=>e[d].start,t),u=a;if(s===1)for(;u<i&&e[u].end<t+o;)u++;else if(s>1){const d=Array(s).fill(0);for(;u<i&&d.some(g=>g<t+o);){const g=e[u];d[g.lane]=g.end,u++}const h=Array(s).fill(t+o);for(;a>=0&&h.some(g=>g>=t);){const g=e[a];h[g.lane]=g.start,a--}a=Math.max(0,a-a%s),u=Math.min(i,u+(s-1-u%s))}return{startIndex:a,endIndex:u}}const kt=typeof document<"u"?c.useLayoutEffect:c.useEffect;function Bi({useFlushSync:e=!0,directDomUpdates:o=!1,directDomUpdatesMode:t="transform",...s}){const n=c.useReducer(d=>d+1,0)[1],i=c.useRef({enabled:o,mode:t,container:null,lastSize:null,lastPositions:new WeakMap,prevRange:null});i.current.enabled=o,i.current.mode=t;const l=d=>{const h=i.current;if(!h.enabled||!h.container)return;const g=d.getTotalSize();if(g!==h.lastSize){h.lastSize=g;const p=d.options.horizontal?"width":"height";h.container.style[p]=`${g}px`}const m=!!d.options.horizontal,b=h.mode==="transform",y=m?"left":"top",v=d.options.scrollMargin,I=d.getVirtualItems();for(const p of I){const x=p.start-v,j=d.elementsCache.get(p.key);j&&h.lastPositions.get(j)!==x&&(h.lastPositions.set(j,x),b?j.style.transform=m?`translate3d(${x}px, 0, 0)`:`translate3d(0, ${x}px, 0)`:j.style[y]=`${x}px`)}},a={...s,onChange:(d,h)=>{var g;const m=i.current;let b=!0;if(m.enabled){l(d);const y=d.range,v=m.prevRange;b=!v||v.isScrolling!==d.isScrolling||v.startIndex!==y?.startIndex||v.endIndex!==y?.endIndex,b&&(m.prevRange=y?{startIndex:y.startIndex,endIndex:y.endIndex,isScrolling:d.isScrolling}:null)}b&&(e&&h?Us.flushSync(n):n()),(g=s.onChange)==null||g.call(s,d,h)}},[u]=c.useState(()=>{const d=new Li(a);return Object.assign(d,{containerRef:h=>{const g=i.current;if(g.container=h,g.lastSize=null,h&&g.enabled){const m=d.getTotalSize();g.lastSize=m;const b=d.options.horizontal?"width":"height";h.style[b]=`${m}px`}}})});return u.setOptions(a),kt(()=>u._didMount(),[]),kt(()=>u._willUpdate()),kt(()=>{l(u)}),u}function Wi(e){return Bi({observeElementRect:Oi,observeElementOffset:zi,scrollToFn:_i,...e})}const zt=e=>e.query?`matching "${e.query}"`:e.from?`from "${e.from}"`:"matching your search",Ki=e=>`Select all ${zt(e)}`,Vi=(e,o)=>`All ${Gt(o)} ${zt(e)} selected`,qi=({verb:e,confirmingDelete:o,hasSelection:t,junkMailboxId:s,currentMailboxId:n,deletableMessageId:i})=>{if(o)return{kind:"withheld"};if(e==="junk"){const l=xn(s,n);if(l!==void 0)return{kind:"unavailable",reason:l}}return t?{kind:"openWizard"}:e!=="delete"||i===void 0?{kind:"declined"}:{kind:"confirmDelete",messageId:i}},Hi=(e,o,t)=>e==="BACK"&&o&&t===void 0,Qi=(e,o)=>({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:Ye(e.sentDate),isRead:e.isRead,hasAttachment:e.hasAttachment,starred:e.hasStars===!0,trust:e.senderTrust,category:ts(e.category),messageCount:o,suspicious:e.authenticity?.dkimMismatch===!0,labels:e.labels,...Et(e)}),Ui=({thread:e,mailboxId:o,isSelected:t,isFocused:s,isTabStop:n,onFocusRow:i,isChecked:l,onToggleCheck:a,onRowSelect:u,messageCount:d,isMultiSelectMode:h,onLongPress:g,isDesktop:m,density:b})=>r.jsx(bn,{thread:Qi(e,d),link:{mailboxId:o,threadId:e.threadId},inListbox:!0,active:t,focused:s,isTabStop:n,density:b,isDesktop:m,onFocusRow:i,selection:{isChecked:l,onToggleCheck:a,onRowSelect:u,isMultiSelectMode:h,onLongPress:g}}),Ji=c.memo(Ui),Gi=e=>{const o=e.authenticity?.dkimMismatch===!0;return{id:e.messageId,accountId:e.accountId,fromName:e.fromName??e.fromEmail??"Unknown",fromEmail:e.fromEmail??"",subject:e.subject??"(No subject)",snippet:e.snippet??"",timeLabel:Ye(e.sentDate),isRead:e.isRead,hasAttachment:e.hasAttachment,starred:e.hasStars===!0,trust:e.senderTrust,category:ts(e.category),suspicious:o,...Et(e)}},Yi=({thread:e,mailboxId:o,isSelected:t,isFocused:s,isTabStop:n,onFocusRow:i,isChecked:l,onToggleCheck:a,onRowSelect:u,isMultiSelectMode:d,onLongPress:h,isDesktop:g,onDelete:m,onToggleRead:b,density:y})=>{const[v,I]=c.useState("none"),p=Xe(),x=c.useCallback(A=>{navigator.vibrate?.(10),A==="trailing"?m(e.messageId):b(e.messageId,e.isRead),I("none")},[m,b,e.messageId,e.isRead]),j=c.useCallback(()=>{h(e.messageId)},[h,e.messageId]),T=c.useCallback(()=>{a(e.messageId)},[a,e.messageId]),w=c.useCallback(()=>{p({threadId:e.threadId,messageId:e.messageId})},[p,e.threadId,e.messageId]),O=vn(e.messageId,u);return g||d?r.jsx(Ji,{thread:e,mailboxId:o,isSelected:t,isFocused:s,isTabStop:n,onFocusRow:i,isChecked:l,onToggleCheck:a,onRowSelect:u,isMultiSelectMode:d,onLongPress:h,isDesktop:g,density:y}):r.jsx("div",{role:"presentation",onPointerDownCapture:O.onMouseDown,onClickCapture:O.claimClick,onContextMenu:O.onContextMenu,children:r.jsx(co,{thread:Gi(e),selectionMode:!1,checked:!1,active:t,peek:v,onPeek:I,onToggleCheck:T,onLongPress:j,onOpen:w,onAct:x})})},Xi=72,Zi=32,er=5,hs="remit:list-density",tr=()=>{try{const e=localStorage.getItem(hs);if(e==="compact"||e==="comfortable")return e}catch{}return"comfortable"},sr=(e,o,t)=>To(e.filter(s=>o.has(s.messageId)).map(s=>s.accountId??t)).moveDisabledHint,nr=({mailboxId:e,threads:o,selectedMessageId:t,isLoading:s,isError:n=!1,error:i,onRetry:l,searchQuery:a,searchPredicate:u,resultCount:d={kind:"unknown"},onDeleteMessages:h,isDeleting:g=!1,isMoving:m=!1,onLoadMore:b,hasMore:y=!1,isLoadingMore:v=!1,accountId:I,listTitle:p,listMeta:x,listFilter:j,listSearchText:T,listScopeLabel:w,onTriageContextChange:O,commandsRef:A,hideHeader:$=!1})=>{const U=c.useRef(null),J=Xe(),M=Wo(),ne=Js(),{verb:F,start:P,startFromSearch:Re}=ne,ve=Gs(),Se=!!a?.trim(),H=Sn(),{labels:Le}=Po(I),{pushError:oe}=qt(),[R,ye]=c.useState(t),[Me,Ce]=c.useState(),N=c.useCallback(f=>{Ce(S=>S===f?S:void 0),ye(f)},[]),[Y,Pe]=c.useState(tr),B=c.useCallback(()=>{Pe(f=>{const S=f==="comfortable"?"compact":"comfortable";try{localStorage.setItem(hs,S)}catch{}return S})},[]),{toggleReadFor:Ie}=ss({mailboxId:e}),{junkMailboxId:fe}=ns(I),me=os(fe,e),Ee=c.useMemo(()=>[{accountId:I,mailboxId:e}],[I,e]),{outcome:ie,staleFolderLabel:$e,guessedMailboxId:Be}=yn(Ee),{selectedIds:z,selectedCount:D,hasSelection:X,isSelected:Z,toggle:ee,select:te,clearSelection:Te,selectRange:ge,setAnchor:Oe,selectAll:We,toggleAll:re,intersectWith:Ze}=Cn(),Ke=On(D,M),[pe,E]=c.useState(null),et=c.useCallback((f,S,he)=>{const q=Ys(f,S,he,ie);q&&oe(q)},[oe,ie]),ke=Se&&!!u,tt=`${e}|${JSON.stringify(u??{})}`,k=In({mailboxId:e,mailboxLabel:p,accountId:I,enabled:ke,predicateKey:tt,searchQuery:u??{},reportEnding:et}),st=k.phase.kind,Ve=k.clear,L=c.useCallback(()=>{st==="escalated"&&Ve(),Te()},[Te,Ve,st]),[nt,ae]=c.useState(null),xe=c.useRef(null),le=c.useRef(!1),Ae=c.useRef(null),we=!s&&o.length>0,ce=Wi({count:o.length,getScrollElement:()=>U.current,estimateSize:()=>Y==="compact"?Zi:Xi,overscan:er}),qe=t?o.findIndex(f=>f.messageId===t):-1,W=R?o.findIndex(f=>f.messageId===R):-1,se=c.useCallback(f=>{if(f<0||f>=o.length)return;const S=o[f];if(Ke){ee(S.messageId);return}xe.current=S.messageId,le.current=!1,Ce(S.messageId),ye(S.messageId)},[o,Ke,ee]),Ne=c.useCallback(()=>{if(o.length===0)return;const f=W<0?0:Math.min(W+1,o.length-1);se(f)},[o.length,W,se]),ot=c.useCallback(()=>{if(o.length===0)return;const f=W<=0?0:W-1;se(f)},[o.length,W,se]),He=c.useCallback(()=>se(0),[se]),Qe=c.useCallback(()=>se(o.length-1),[se,o.length]),be=c.useCallback(()=>{R&&ee(R)},[R,ee]),_=c.useMemo(()=>o.map(f=>f.messageId),[o]),ze=c.useMemo(()=>{const f=[];for(const S of o)z.has(S.messageId)&&f.push({id:S.messageId,sender:S.fromName??S.fromEmail??"Unknown",email:S.fromEmail??"",subject:S.subject??"(No subject)",date:Ye(S.sentDate),accountId:I,mailboxId:S.mailboxId});return f},[o,z,I]),xt=c.useCallback((f,S)=>S.shiftKey?(ge(_,f,R),!0):S.metaKey||S.ctrlKey?(ee(f),!0):(L(),Oe(f),!1),[_,R,ge,ee,L,Oe]),it=c.useCallback(f=>{!h||f.length===0||(Ae.current=R??null,E(f))},[h,R]),Fe=c.useCallback(f=>{const S=Tn(_,R,f);S!==void 0&&(ge(_,S),xe.current=S,le.current=!1,Ce(void 0),ye(S))},[_,R,ge]),ue=c.useCallback(()=>Fe(-1),[Fe]),rt=c.useCallback(()=>Fe(1),[Fe]),at=c.useCallback(()=>{_.length>0&&We(_)},[_,We]),lt=c.useCallback(f=>{const S=qi({verb:f,confirmingDelete:pe!==null,hasSelection:X,junkMailboxId:fe,currentMailboxId:e,deletableMessageId:h?R:void 0});return S.kind==="openWizard"?(P(f),!0):S.kind==="confirmDelete"?(it([S.messageId]),!0):S.kind==="unavailable"?(oe({severity:"warning",title:S.reason}),!0):S.kind==="withheld"},[pe,h,X,fe,e,P,R,it,oe]),de=c.useCallback((f,S)=>{const he=o.find(q=>q.messageId===f)?.threadId;he&&J({threadId:he,messageId:f},{replace:S?.replace})},[J,o]),ct=c.useCallback(()=>{R&&de(R)},[R,de]),Ue=c.useRef(void 0),bt=c.useCallback(f=>{Ue.current=f,de(f,{replace:!0})},[de]);kn({keyboardFocusedMessageId:Me,openMessageId:t,enabled:M&&D===0,open:bt});const De=k.phase.kind==="escalated"?{scope:zt(u??{}),total:k.phase.total,searchQuery:u??{},run:(f,S)=>k.runAction(f,void 0,S),stop:k.stop}:void 0,ut=c.useCallback(f=>{if(f.length===0){E(null);return}const S=new Set(f),he=o.findIndex(Q=>S.has(Q.messageId));let q;for(let Q=he+1;Q<o.length;Q++)if(!S.has(o[Q].messageId)){q=o[Q].messageId;break}if(q===void 0){for(let Q=he-1;Q>=0;Q--)if(!S.has(o[Q].messageId)){q=o[Q].messageId;break}}h?.(f),L(),Ae.current=null,E(null),q!==void 0&&(xe.current=q,le.current=!1,N(q),M&&de(q,{replace:!0})),M||ae(Xs("delete",f.length,ie))},[o,h,L,de,M,N,ie]),vt=c.useCallback(()=>{const f=Ae.current;Ae.current=null,E(null),f!==null&&(xe.current=f,le.current=!1,N(f))},[N]),Je=c.useMemo(()=>sr(o,z,I),[I,z,o]),St=c.useCallback(()=>{if(De){Re();return}P("organize")},[De,Re,P]),dt=c.useCallback(f=>{h?.([f])},[h]),yt=c.useCallback((f,S)=>{Ie([f],!S)},[Ie]),C=c.useCallback(f=>{M||te(f)},[M,te]),V=c.useCallback(()=>{if(k.isRunning||k.phase.kind==="counting"){k.stop();return}L()},[k,L]),K=c.useCallback(()=>{k.clear()},[k]);c.useEffect(()=>{if(le.current||!M&&t)return;const f=W>=0?W:qe;f>=0&&ce.scrollToIndex(f,{align:"auto"})},[W,qe,ce,M,t]),c.useEffect(()=>{if(!t)return;const f=Ue.current===t;Ue.current=void 0,!f&&(le.current=!1,N(t))},[t,N]),c.useEffect(()=>{R&&(o.some(f=>f.messageId===R)||N(o[0]?.messageId))},[o,R,N]),c.useEffect(()=>{O?.({focusedMessageId:R,selectedIds:Array.from(z),hasList:we})},[R,z,we,O]);const Ft=c.useRef(O);Ft.current=O,c.useEffect(()=>()=>Ft.current?.({focusedMessageId:void 0,selectedIds:[],hasList:!1}),[]),c.useEffect(()=>{k.phase.kind!=="idle"||k.isRunning||Ze(o.map(f=>f.messageId))},[o,Ze,k.phase,k.isRunning]);const Dt=c.useRef(e);c.useEffect(()=>{Dt.current!==e&&(Dt.current=e,L())},[e,L]),wn({shouldBlockFn:({action:f})=>Hi(f,X,ve)?(L(),!0):!1,enableBeforeUnload:!1,disabled:!X||ve!==void 0}),c.useEffect(()=>{const f=U.current;if(!f||!y||!b)return;const S=()=>{if(v)return;const{scrollTop:he,scrollHeight:q,clientHeight:Q}=f;he+Q>=q-200&&b()};return f.addEventListener("scroll",S,{passive:!0}),S(),()=>f.removeEventListener("scroll",S)},[y,v,b]),c.useEffect(()=>{const f=xe.current;if(!f)return;const S=U.current?.querySelector(`[data-message-id="${f}"]`);S&&(xe.current=null,S.focus({preventScroll:!0}))}),c.useEffect(()=>{if(A){if(!we){A.current=null;return}return A.current={focusNext:Ne,focusPrevious:ot,focusFirst:He,focusLast:Qe,openFocused:ct,toggleSelect:be,extendSelectDown:rt,extendSelectUp:ue,selectAll:at,clearSelection:()=>X?(L(),!0):!1,requestVerb:lt,toggleDensity:B},()=>{A.current=null}}},[A,we,Ne,ot,He,Qe,ct,be,rt,ue,at,X,L,lt,B]);const _t=s?"loading":n?"error":o.length===0?"empty":"ready",gs=n?Lo(i):void 0,ps=c.useCallback(()=>{const f=Zs(en());window.open(f,"_blank","noopener,noreferrer")},[]),xs=[{id:"inbox",threads:[]}],Ct=_.length>0&&_.every(f=>z.has(f)),bs=ke&&y&&Ct&&!g&&!m&&k.phase.kind==="idle"&&!k.isRunning,vs=g||m||k.isRunning,It=k.phase.kind==="escalated"?k.phase.total:k.progress?k.progress.total:D,Ss=k.runningAction?tn(k.runningAction.kind,k.progress?.done??0,k.progress?.total??It):k.phase.kind==="counting"?"Counting matches…":k.phase.kind==="escalated"?Vi(u??{},k.phase.total):void 0,ys=k.phase.kind!=="escalated"&&_.length>0?{checked:Ct,indeterminate:D>0&&!Ct,onChange:()=>re(_)}:void 0,Cs=k.runningAction?{value:k.progress?.done??0,max:k.progress?.total??It,tone:sn(k.runningAction.kind)}:void 0,Is=(k.isRunning||k.phase.kind==="counting"?{tone:"info",text:"",action:{label:"Stop",onClick:k.stop}}:k.phase.kind==="escalated"?{tone:"info",text:"",action:{label:"Clear selection",onClick:K}}:bs?{tone:"info",text:"",action:{label:Ki(u??{}),onClick:k.escalate}}:void 0)??(Je?{tone:"warning",text:Je}:void 0),Ts=r.jsx(jn,{title:H.title||p,navSlot:H.navSlot,titleMeta:H.titleMeta,searchSlot:H.searchSlot,searchField:H.searchField,idleSlot:H.makeFilterSlot,count:It,onCancel:V,onDelete:()=>P("delete"),onMove:()=>P("move"),onOrganize:St,onJunk:me?()=>P("junk"):void 0,onMarkRead:()=>P("markRead"),overflowSlot:I&&e&&D>0&&Le.length>0?r.jsx(Io,{accountId:I,mailboxId:e,messageIds:Array.from(z)}):void 0,isBusy:vs,isCounting:k.phase.kind==="counting",selectAll:ys,statusLabel:Ss,progress:Cs,notice:Is}),ks=Rn(_,R),ws=c.useCallback(f=>{le.current=!0,N(f)},[N]),js=r.jsxs(r.Fragment,{children:[Se&&a&&r.jsx(Uo,{query:a,count:d}),r.jsxs("div",{ref:U,role:"listbox","aria-multiselectable":!0,"aria-label":p,className:"flex-1 overflow-y-auto",children:[r.jsx("div",{role:"presentation",className:"relative w-full",style:{height:`${ce.getTotalSize()}px`},children:ce.getVirtualItems().map(f=>{const S=o[f.index];return r.jsx("div",{role:"presentation","data-index":f.index,ref:ce.measureElement,className:je("absolute left-0 top-0 w-full border-b border-line",k.isRunning&&"pointer-events-none opacity-50"),style:{transform:`translateY(${f.start}px)`},children:r.jsx(Yi,{thread:S,mailboxId:e,isSelected:t===S.messageId,isFocused:R===S.messageId,isTabStop:ks===S.messageId,onFocusRow:ws,isChecked:Z(S.messageId),onToggleCheck:ee,onRowSelect:xt,isMultiSelectMode:Ke,onLongPress:C,isDesktop:M,onDelete:dt,onToggleRead:yt,density:Y})},f.key)})}),v&&r.jsx(uo,{})]})]});return r.jsxs(r.Fragment,{children:[nt&&!M&&r.jsx(ft,{tone:"success",variant:"soft",className:"m-2 rounded-md",onDismiss:()=>ae(null),children:nt}),r.jsx(ho,{listTitle:p,listMeta:x,sections:xs,flatList:!0,listState:H.searchResults?"ready":_t,searchQuery:T,listFilter:j,listScopeLabel:w,errorMessage:gs,onRetry:l,onReportError:ps,density:Y,selectedThreadId:t,onSelectThread:f=>de(f),isDesktop:M,hideHeader:$,selectionBar:Ts,listBody:H.searchResults??(_t==="ready"?js:void 0)}),r.jsx(Mn,{isOpen:pe!==null,messageIds:pe??[],outcome:ie,accountId:I,trashFolderLabel:p,staleFolderLabel:$e,guessedMailboxId:Be,isDeleting:g,onConfirm:ut,onCancel:vt}),r.jsx(En,{verb:F,accountId:I,mailboxId:e,mailboxLabel:p,selection:ze,selectionRestriction:Je?"spansAccounts":void 0,escalated:De,escalatedProgress:k.progress,onFinished:L,onRunEnded:et})]})},or=e=>Ht({path:{accountId:e}}),ir=e=>{const o=jt(),t=Mt(),s=Rt({...nn(),onSuccess:()=>{t.recordEvent("sync.triggered"),o.invalidateQueries({queryKey:or(e)})}});return{trigger:()=>{s.mutate({path:{accountId:e}})},triggerAsync:()=>s.mutateAsync({path:{accountId:e}}),isPending:s.isPending,error:s.error,reset:s.reset}},rr=({accountId:e,children:o})=>{const{triggerAsync:t,isPending:s}=ir(e);return r.jsx(Jo,{onRefresh:t,isRefreshing:s,children:o})};function ar({accountId:e,currentMailboxId:o,candidates:t,onMove:s,children:n}){const[i,l]=c.useState(!1),a=Mt(),u=on(),{inboxMailboxId:d}=An(e),h=Nn(e),{data:g}=mt({...rn({path:{accountId:e}}),staleTime:1/0}),m=c.useMemo(()=>an({mailboxes:g?.items??[],folderAppointments:h,currentMailboxId:o,translator:u}),[g?.items,h,o,u]),b=c.useMemo(()=>d||(m.find(x=>x.label.toLowerCase()==="inbox")?.id??m.find(x=>!x.isCurrent)?.id??""),[d,m]),y=c.useRef(!1);c.useEffect(()=>{y.current||(y.current=!0,zn(a,t.length))},[a,t.length]);const v=c.useCallback(()=>{Fn(a,t.length),l(!0)},[a,t.length]),I=c.useCallback((p,x)=>{Dn(a,{selected:p.length,total:t.length,toInbox:x===d}),s(p,x)},[a,t.length,d,s]);return r.jsxs("div",{className:"relative flex h-full min-h-0 flex-col",children:[r.jsx("div",{className:"shrink-0 px-row-inset pt-2",children:r.jsx(Yo,{count:t.length,onReview:v})}),r.jsx("div",{className:"min-h-0 flex-1",children:n}),r.jsx(li,{open:i,candidates:t,defaultDestinationId:b,availableFolders:m,delimiter:ln(g?.items??[]),onConfirmMove:I,onCancel:()=>l(!1)})]})}const lr=50,fs=c.createContext(null);function pt(){const e=c.useContext(fs);if(!e)throw new Error("MailboxPane.* must be used inside <MailboxPane>");return e}function cr({mailboxId:e,thread:o,children:t}){const s=Xe(),n=po(),i=Fo(),l=o?.threadId,a=o?.messageId,u=Mt(),{accounts:d,searchQuery:h,onToggleIntelligence:g,onSearchClearQuery:m}=Yt(),b=dn(),y=jo(h),v=y.length>0,{freeText:I,tokens:p}=Lt(y,b),x=Lt(h.trim(),b).freeText,[j,T]=c.useState("all"),[w,O]=c.useState(new Set),A=c.useMemo(()=>({category:j,attributes:w}),[j,w]),$=c.useMemo(()=>_n(A),[A]),U=v||Ln(A),{params:J,residual:M}=Pn(p,$),ne={order:"desc",...I?{query:I}:{},...J,...$},F={...ne,limit:lr},P={category:F.category,unread:F.unread,starred:F.starred,attachments:F.attachments},Re=U?Qt({path:{mailboxId:e},query:F}):cn({path:{mailboxId:e},query:{order:"desc"}}),{data:ve,isLoading:Se,isError:H,error:Le,refetch:oe,fetchNextPage:R,hasNextPage:ye,isFetchingNextPage:Me}=fo({queryKey:Re,queryFn:async({pageParam:C})=>{if(U){const{data:K}=await Ut({path:{mailboxId:e},query:{...F,continuationToken:C},throwOnError:!0});return K}const{data:V}=await un({path:{mailboxId:e},query:{order:"desc",continuationToken:C},throwOnError:!0});return V},initialPageParam:void 0,getNextPageParam:C=>C.continuationToken,placeholderData:(C,V)=>lo(V?.queryKey,P)?C:void 0}),Ce=mi({mailboxId:e,criteria:ne,enabled:ko({hasSearchQuery:v,freeText:I,residualTokenCount:M.length})}),{accountId:N,isLoading:Y}=$n(e),Pe=xo({accounts:d}),B=Bn(gi(ve?.pages.flatMap(C=>C.items??[])??[]),M,N),Ie=c.useCallback(C=>{T(C)},[]),fe=c.useCallback(C=>{O(V=>{const K=new Set(V);return K.has(C)?K.delete(C):K.add(C),K})},[]),me=c.useCallback(()=>{T("all"),O(new Set)},[]),Ee=c.useCallback(()=>{me(),m()},[me,m]),ie=mo({chips:A,tokens:p,reach:M.length>0?"loaded-pages":Wn(F),onClear:Ee}),$e=l?B.find(C=>C.messageId===a)??B.find(C=>C.threadId===l):void 0,Be=Kn(l,a),z=$e??Be,D=a??z?.messageId,X=c.useMemo(()=>{if(l)return{threadId:l,mailboxId:z?.mailboxId??e,subject:z?.subject,messageId:D,authenticity:z?.authenticity}},[l,z,D,e]),Z=c.useCallback(C=>{D&&C.includes(D)&&n()},[D,n]),{deleteMessages:ee,isPending:te}=Pt({mailboxId:e,onAfterOptimisticRemove:Z}),{moveMessages:Te,isPending:ge}=$t({mailboxId:e,accountId:N,onAfterOptimisticRemove:Z}),Oe=c.useRef(null),We=Vn(),{listCommandsRef:re,onTriageContextChange:Ze,focusedMessageId:Ke,selectedIds:pe}=We,E=B.find(C=>C.messageId===Ke)??z,et=bo({accounts:d})??null,ke=qn({thread:z,isOpen:!0,mailboxId:e,accountId:N,onAfterOptimisticRemove:Z}),{draftsMailboxId:tt}=Hn(N),k=tt!==void 0&&tt===e,{archiveMailboxId:st}=Qn(N),Ve=Un(),L=Ro(),nt=c.useMemo(()=>Mo(L,l,D),[L,l,D]),ae=c.useMemo(()=>{if(E)return C=>L({threadId:E.threadId,messageId:E.messageId,mode:C})},[L,E]),xe=No(),le=Eo(),Ae=zo(),we=c.useCallback(C=>C?Ve(C):[],[Ve]),{toggleStar:ce}=Jn({threadId:E?.threadId??"",mailboxId:e}),{toggleReadFor:qe}=ss({mailboxId:e,accountId:N}),{junkMailboxId:W}=ns(N),se=W!=null&&W===e,Ne=os(W,e),{candidates:ot}=hi(se?W:void 0),{moveMessages:He}=$t({mailboxId:e,threadId:E?.threadId,accountId:N,onAfterOptimisticRemove:Z}),{deleteMessages:Qe}=Pt({mailboxId:e,threadId:E?.threadId,onAfterOptimisticRemove:Z}),{addressId:be,address:_}=Gn(E),{updateFlags:ze}=Yn({addressId:be,senderEmail:E?.fromEmail??void 0}),xt=c.useCallback(()=>ae?.("reply"),[ae]),it=c.useCallback(()=>ae?.("reply-all"),[ae]),Fe=c.useCallback(()=>ae?.("forward"),[ae]),ue=c.useCallback(()=>we(E),[we,E]),rt=c.useCallback(()=>{if(re.current?.requestVerb("delete"))return;const C=ue();C.length>0&&Qe(C)},[re,ue,Qe]),at=c.useCallback(()=>{if(re.current?.requestVerb("junk")||!Ne)return;const C=ue();C.length!==0&&(Xn(u,{count:C.length,senderTrust:E?.senderTrust??"unknown",wasRescuable:E?Zn(E):!1}),He(C,Ne))},[re,Ne,ue,He,u,E]),lt=c.useCallback(()=>{if(pe.length>0){const C=!(E?.hasStars??!1),V=new Set(pe);for(const K of B)V.has(K.messageId)&&K.hasStars!==C&&ce(K.messageId,K.hasStars);return}E&&ce(E.messageId,E.hasStars)},[pe,B,E,ce]),de=c.useCallback(()=>{if(re.current?.requestVerb("markRead"))return;const C=ue();if(C.length===0)return;const V=!(E?.isRead??!1);qe(C,V)},[re,ue,E,qe]),ct=c.useCallback(()=>{if(!be)return;const C=_?.flags?.muted?.value!==!0;ze({muted:{value:C}})},[be,_,ze]),Ue=c.useCallback(()=>{if(!be)return;const C=_?.flags?.vip?.value!==!0;ze({vip:{value:C}})},[be,_,ze]),bt=c.useCallback(()=>{Oe.current?.open()},[]),De=k?"drafts":st===e?"archive":W===e?"junk":"inbox",ut=c.useRef("");c.useEffect(()=>{const C=ut.current;ut.current=y,y.length>0&&C.length===0&&u.recordEvent("search.submitted",{mailboxType:De})},[y,De,u]);const{goBack:vt,nextMessageId:Je,previousMessageId:St}=eo({context:We,orderedIds:B.map(C=>C.messageId),selectedMessageId:D,enabled:!xe&&!le,hasOpenThread:l!==void 0,onClose:n,handlers:{reply:xt,replyAll:it,forward:Fe,delete:rt,toggleStar:lt,toggleRead:de,muteSender:ct,blockSender:z?bt:void 0,vipSender:Ue,markJunk:at,toggleIntelligence:z?()=>Oe.current?.toggle():void 0,compose:Ae,goBrief:()=>i("brief"),goInbox:()=>i("brief"),goSent:()=>i("brief"),goFlagged:()=>i("flagged"),goSettings:()=>i("settings")}}),dt=C=>{if(!C)return;const V=B.find(K=>K.messageId===C);return V?{threadId:V.threadId,messageId:C}:void 0},yt={mailboxId:e,selectedMessageId:D,selectedThread:z,conversation:X,onOpenThread:s,threads:B,isLoading:Se,isError:H,error:Le,mailboxAccountId:N,mailboxAccountLoading:Y,mailboxName:Pe,unreadCount:et,isDraftsMailbox:k,isSpamFolder:se,rescueCandidates:ot,filterCategory:j,filterAttributes:w,onSelectFilterCategory:Ie,onToggleFilterAttribute:fe,onClearFilters:me,listFilter:ie,listSearchText:x||void 0,onToggleIntelligence:g,intelligenceRef:Oe,handleDeselectIfRemoved:Z,searchPredicate:v&&M.length===0?F:void 0,resultCount:Ce,onDeleteMessages:ee,onMoveMessages:Te,isDeleting:te,isMoving:ge,onLoadMore:R,hasMore:ye,isLoadingMore:Me,onTriageContextChange:Ze,listCommandsRef:re,onRetry:()=>oe(),onReply:nt,onToolbarDelete:ke.deleteThread,onToolbarStar:ke.toggleStar,isStarred:ke.isStarred,onToolbarMove:ke.moveThread,onBack:vt,nextThread:dt(Je),previousThread:dt(St)};return r.jsx(fs.Provider,{value:yt,children:t})}function ms(){const{mailboxId:e,selectedMessageId:o,threads:t,isLoading:s,isError:n,error:i,onDeleteMessages:l,onMoveMessages:a,isDeleting:u,isMoving:d,onLoadMore:h,hasMore:g,isLoadingMore:m,mailboxAccountId:b,mailboxName:y,unreadCount:v,isDraftsMailbox:I,isSpamFolder:p,rescueCandidates:x,onTriageContextChange:j,listCommandsRef:T,onRetry:w,filterCategory:O,filterAttributes:A,onSelectFilterCategory:$,onToggleFilterAttribute:U,onClearFilters:J,listFilter:M,listSearchText:ne,searchPredicate:F,resultCount:P}=pt(),{searchQuery:Re,searchInput:ve,accounts:Se,resultFolderIndex:H}=Yt(),Le=yo(),oe=Xe(),R=y??"Inbox",ye=c.useMemo(()=>io(),[]),{trashMailboxId:Me}=ro(b),Ce=vo({accounts:Se}),{trashByAccount:N}=Xt(),Y=ui({accountId:b,mailboxId:e}),Pe=Me!=null&&Me===e,B=c.useMemo(()=>b?[b]:[],[b]),{hasNewMail:Ie}=fn(),{state:fe,errorMessage:me,refresh:Ee}=mn(B,{onSettled:w}),ie=c.useMemo(()=>r.jsx(gn,{state:fe,onRefresh:Ee,label:`Refresh ${R}`,errorMessage:me,hasUpdate:Ie(B)}),[fe,Ee,R,me,Ie,B]),$e=c.useMemo(()=>t.map(te=>ao(te,H)),[t,H]),Be=c.useCallback(te=>{const Te=te.threadId??t.find(ge=>ge.messageId===te.id)?.threadId;Te&&oe({threadId:Te,messageId:te.id},{mailboxId:te.mailboxId??e,query:ve})},[e,oe,ve,t]);if(I&&b)return r.jsx(Ci,{accountId:b,selectedMessageId:o,imapThreads:t,title:y??"Drafts",unreadCount:v??void 0});const z=r.jsx(nr,{mailboxId:e,threads:t,selectedMessageId:o,isLoading:s,isError:n,error:i,onRetry:w,searchQuery:Re,searchPredicate:F,resultCount:P,onDeleteMessages:l,isDeleting:u,isMoving:d,onLoadMore:h,hasMore:g,isLoadingMore:m,accountId:b,listTitle:R,listFilter:M,listSearchText:ne,listScopeLabel:R,hideHeader:!0,onTriageContextChange:j,commandsRef:T}),D=Se[0]?.accountId,X=Le==="phone"&&D?r.jsx(rr,{accountId:D,children:z}):z,Z=p&&x.length>0&&b?r.jsx(ar,{accountId:b,currentMailboxId:e,candidates:x,onMove:a,children:X}):X,ee=Pe?r.jsx(ki,{messageCount:Ce,isEmptying:Y.isEmptying,deletedCount:Y.deletedCount,refusalReason:Y.refusal?.reason,trashFolderLabel:y??void 0,staleFolderLabel:b?N.get(b)?.staleFolderPath:void 0,onEmpty:Y.emptyTrash,onRepair:Y.repair,children:Z}):Z;return r.jsx(go,{title:R,unreadCount:v,preset:ye,selectedCategory:O,activeFilters:A,onSelectCategory:$,onToggleFilter:U,onClearFilters:J,searchResults:$e,searchLoading:s,onSelectSearchResult:Be,searchResultsInBody:!0,refreshControl:ie,children:ee})}function ur(){const e=Ot(),{mailboxId:o,mailboxAccountId:t,mailboxAccountLoading:s,selectedThread:n,conversation:i,onReply:l,onToolbarDelete:a,onToolbarStar:u,isStarred:d,onToolbarMove:h,handleDeselectIfRemoved:g,intelligenceRef:m,onOpenThread:b}=pt(),y=!!i,v=no(i?.threadId);is(m,v);const I=c.useRef(null),{railFits:p,openRail:x}=v;c.useEffect(()=>{if(!p)return;const T=n?.messageId??null;T&&I.current!==T&&n?.authenticity?.dkimMismatch&&(I.current=T,x())},[p,x,n?.messageId,n?.authenticity?.dkimMismatch]);const j=i?r.jsx(rs,{threadId:i.threadId,mailboxId:i.mailboxId,subject:i.subject,selectedMessageId:i.messageId,authenticity:i.authenticity,onOpenIntelligence:v.open,listOnScreen:!0}):r.jsx(hn,{});return r.jsxs(r.Fragment,{children:[r.jsxs("section",{className:"flex h-full w-full min-w-0 flex-col bg-canvas",children:[r.jsx(oo,{hasThread:y,messageId:i?.messageId,intelligenceOpen:v.isShowing,canToggleIntelligence:v.canToggle,onToggleIntelligence:v.toggle,onReply:l?()=>l("reply"):void 0,onReplyAll:l?()=>l("reply-all"):void 0,onForward:l?()=>l("forward"):void 0,onDelete:y?a:void 0,onToggleStar:y?u:void 0,isStarred:d,moveContext:y&&t?{accountId:t,currentMailboxId:o,onMove:h}:void 0,moveContextLoading:s}),r.jsx("div",{className:"min-h-0 flex-1 overflow-hidden",children:j})]}),r.jsx(as,{isOpen:v.drawerOpen,onClose:v.closeDrawer,thread:n,accountId:t,onAfterOptimisticRemove:g,onReplyWithText:e,onOpenThread:b})]})}function dr(){const e=Ot(),{mailboxAccountId:o,selectedThread:t,onToggleIntelligence:s,handleDeselectIfRemoved:n,onOpenThread:i}=pt();return r.jsx(so,{onClose:s,thread:t,accountId:o,onAfterOptimisticRemove:n,onReplyWithText:e,onOpenThread:i})}function hr(){const e=Ot(),{mailboxAccountId:o,selectedThread:t,conversation:s,onOpenThread:n,onBack:i,nextThread:l,previousThread:a,handleDeselectIfRemoved:u,intelligenceRef:d}=pt(),h=to(s?.threadId??null);return is(d,h),s?r.jsxs(r.Fragment,{children:[r.jsx(rs,{threadId:s.threadId,mailboxId:s.mailboxId,subject:s.subject,selectedMessageId:s.messageId,authenticity:s.authenticity,onBack:i,onOpenIntelligence:h.toggle,onSwipeNext:l?()=>n(l):void 0,onSwipePrevious:a?()=>n(a):void 0,mobileIntelligenceOpen:h.isOpen}),r.jsx(as,{isOpen:h.isOpen,onClose:h.close,thread:t,accountId:o,onAfterOptimisticRemove:u,onReplyWithText:e,onOpenThread:n})]}):r.jsx(ms,{})}const Lr=Object.assign(cr,{List:ms,Reading:ur,Intelligence:dr,Phone:hr});export{Lr as M};
@@ -1,4 +1,4 @@
1
- import{d9 as se,da as re,db as ne,r as h,dc as ae,dd as oe,j as a,de as ie,df as ce,dg as le,dh as ue,cw as de,t as v,I as me,G as fe,cq as he,di as W,dj as U,h as ge,au as pe,i as be,aw as ye,cR as xe,bQ as we,ac as ve,a1 as ke,X as Se}from"./index-D7VpR8Bx.js";import{K as O}from"./kbd-DzZig-MJ.js";import{i as Ee}from"./search-scope-UI1H6AzA.js";import{B as Ae,b as Ce}from"./useMessageBodyContent-DPlXjxls.js";function je(e,t){if(typeof e!="object"||e===null)return e;var s=e[Symbol.toPrimitive];if(s!==void 0){var r=s.call(e,t);if(typeof r!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function Te(e){var t=je(e,"string");return typeof t=="symbol"?t:String(t)}function Ne(e,t,s){return t=Te(t),t in e?Object.defineProperty(e,t,{value:s,enumerable:!0,configurable:!0,writable:!0}):e[t]=s,e}function D(e,t){var s=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable})),s.push.apply(s,r)}return s}function N(e){for(var t=1;t<arguments.length;t++){var s=arguments[t]!=null?arguments[t]:{};t%2?D(Object(s),!0).forEach(function(r){Ne(e,r,s[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(s)):D(Object(s)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(s,r))})}return e}class _e{constructor(t,s,r,n,o){this._target=t,this._gestureKey=n,this._ctrl=new ne(s),this._ctrl.applyHandlers(s,o),this._ctrl.applyConfig(N(N({},r),{},{target:t}),n),this._ctrl.effect()}destroy(){this._ctrl.clean()}setConfig(t){this._ctrl.clean(),this._ctrl.applyConfig(N(N({},t),{},{target:this._target}),this._gestureKey),this._ctrl.effect()}}const Oe=function(t,s,r){return se(re),new _e(t,{drag:s},r||{},"drag")},Re='"Geist Variable", "Geist", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif',_={light:{fg:"oklch(0.3 0.025 235)",canvas:"oklch(0.96 0.015 90)",accent:"oklch(0.55 0.14 150)"},dark:{fg:"oklch(0.88 0.02 90)",canvas:"oklch(0.22 0.025 220)",accent:"oklch(0.78 0.16 150)"}},Ie={background:!1,spacing:!1},Le="16px",De=()=>`html{padding:0}body{padding:${Le};box-sizing:border-box}`,$e=()=>"html{overflow:hidden}body{overflow-x:auto}",Me=/prefers-color-scheme\s*:\s*dark|color-scheme\s*:\s*[^;}"']*\bdark\b/i,Pe='<meta name="viewport" content="width=device-width, initial-scale=1">',Be=e=>{const t=e?_.dark:_.light;return`
1
+ import{c$ as se,d0 as re,d1 as ne,r as h,d2 as ae,d3 as oe,j as a,d4 as ie,d5 as ce,d6 as le,d7 as ue,cp as de,o as v,I as me,w as fe,d8 as W,d9 as U,f as he,am as ge,g as pe,ao as be,cJ as ye,bH as xe,a0 as we,T as ve,X as ke}from"./index-CXzCthHG.js";import{K as O}from"./kbd-DxdiA2Fl.js";import{i as Se}from"./search-scope-UI1H6AzA.js";import{j as Ee}from"./reply-B9-kr45N.js";import{B as Ae,b as Ce}from"./useMessageBodyContent-Gq_pdN4f.js";function Te(e,t){if(typeof e!="object"||e===null)return e;var s=e[Symbol.toPrimitive];if(s!==void 0){var r=s.call(e,t);if(typeof r!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function je(e){var t=Te(e,"string");return typeof t=="symbol"?t:String(t)}function Ne(e,t,s){return t=je(t),t in e?Object.defineProperty(e,t,{value:s,enumerable:!0,configurable:!0,writable:!0}):e[t]=s,e}function D(e,t){var s=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable})),s.push.apply(s,r)}return s}function N(e){for(var t=1;t<arguments.length;t++){var s=arguments[t]!=null?arguments[t]:{};t%2?D(Object(s),!0).forEach(function(r){Ne(e,r,s[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(s)):D(Object(s)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(s,r))})}return e}class _e{constructor(t,s,r,n,o){this._target=t,this._gestureKey=n,this._ctrl=new ne(s),this._ctrl.applyHandlers(s,o),this._ctrl.applyConfig(N(N({},r),{},{target:t}),n),this._ctrl.effect()}destroy(){this._ctrl.clean()}setConfig(t){this._ctrl.clean(),this._ctrl.applyConfig(N(N({},t),{},{target:this._target}),this._gestureKey),this._ctrl.effect()}}const Oe=function(t,s,r){return se(re),new _e(t,{drag:s},r||{},"drag")},Re='"Geist Variable", "Geist", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif',_={light:{fg:"oklch(0.3 0.025 235)",canvas:"oklch(0.96 0.015 90)",accent:"oklch(0.55 0.14 150)"},dark:{fg:"oklch(0.88 0.02 90)",canvas:"oklch(0.22 0.025 220)",accent:"oklch(0.78 0.16 150)"}},Ie={background:!1,spacing:!1},Le="16px",De=()=>`html{padding:0}body{padding:${Le};box-sizing:border-box}`,$e=()=>"html{overflow:hidden}body{overflow-x:auto}",Me=/prefers-color-scheme\s*:\s*dark|color-scheme\s*:\s*[^;}"']*\bdark\b/i,Pe='<meta name="viewport" content="width=device-width, initial-scale=1">',Be=e=>{const t=e?_.dark:_.light;return`
2
2
  /* Plain-email base: UI font-stack + theme-aware colors (#424) */
3
3
  html, body {
4
4
  font-family: ${Re};
@@ -19,7 +19,7 @@ a, a:visited {
19
19
  color: ${t.accent} !important;
20
20
  text-decoration: underline;
21
21
  }
22
- `},I="invert(0.92) hue-rotate(180deg)",$=`img,picture,video,svg,canvas,[style*='background-image'],[background]{filter:${I}}`,Fe=(e,t,s)=>{const r=e?_.dark.canvas:_.light.canvas;return s?e?t?`html,body{margin:0;background-color:${r};color-scheme:dark light}`:`html{margin:0;background-color:#ffffff;filter:${I}}body{margin:0}${$}`:"html,body{margin:0;background-color:#ffffff;color-scheme:light}":e?t?`html,body{margin:0;background-color:${r};color-scheme:dark light}`:`html{margin:0;background-color:${r}}body{margin:0;filter:${I}}${$}`:`html,body{margin:0;background-color:${r};color-scheme:light}`},ze=(e,t,s,r=Ie)=>{const n=t==="plain"?Be(s):Fe(s,Me.test(e),r.background),o=r.spacing?"":De();return`${Pe}<style>${n}</style>${e}<style>${$e()}${o}</style>`},M=5e4,Ke="allow-same-origin allow-popups allow-popups-to-escape-sandbox",P=(e,t,s)=>Math.min(Math.ceil(Math.max(e,t)),s),L=.5,B=(e,t)=>t>0&&e>t+1?Math.max(t/e,L):1,Ge=["box-sizing","width","max-width","transform","transform-origin","margin-bottom","overflow-x"],He=e=>{for(const c of Ge)e.style.removeProperty(c);const t=e.clientWidth,s=e.scrollWidth;if(B(s,t)===1)return 1;const r=(c,f)=>e.style.setProperty(c,f,"important");r("box-sizing","border-box"),r("max-width","none"),r("width",`${s}px`);const n=Math.max(s,e.scrollWidth),o=B(n,t);return o>L?r("overflow-x","visible"):r("width",`${t/L}px`),r("transform-origin","0 0"),r("transform",`scale(${o})`),r("margin-bottom",`${-e.offsetHeight*(1-o)}px`),o},We=new Set(["Enter","Escape","ArrowUp","ArrowDown","ArrowLeft","ArrowRight","Home","End"]),Ue=e=>e===" "?!1:e.length===1?!0:We.has(e),R=e=>{if(e.metaKey||e.ctrlKey||e.altKey||!Ue(e.key))return;const t=e.currentTarget??e.target,s=t?.defaultView?.parent;!s||s===t?.defaultView||s.dispatchEvent(new KeyboardEvent("keydown",{key:e.key,code:e.code,shiftKey:e.shiftKey,bubbles:!0,cancelable:!0}))},F=({html:e,variant:t="framed",isDark:s=!1,declares:r,className:n})=>{const o=h.useRef(null),[c,f]=h.useState(0),i=h.useContext(ae),u=h.useMemo(()=>ze(e,t,s,r),[e,t,s,r]);return h.useEffect(()=>{const d=o.current;if(!d)return;const m=()=>{const l=d.contentDocument;if(!l?.body)return;k();const y=l.documentElement,j=He(l.body)<1?P(l.body.getBoundingClientRect().height,0,M):P(l.body.scrollHeight,y?.scrollHeight??0,M);f(T=>T===j?T:j)};let g=0;const w=()=>{cancelAnimationFrame(g),g=requestAnimationFrame(m)},p=l=>{const y=l.documentElement;return le()||y.scrollWidth>y.clientWidth+1},k=()=>{const l=d.contentDocument;if(!i||!l?.body)return;const y=p(l)?"auto":"pan-y pinch-zoom";l.documentElement.style.touchAction=y,l.body.style.touchAction=y};let x,b,S;const E=i?oe(k):void 0,C=()=>{m(),x?.disconnect(),x=void 0,b?.removeEventListener("keydown",R),b?.removeEventListener("load",m,!0),b=void 0,S?.destroy(),S=void 0;const l=d.contentDocument;l?.body&&(k(),i&&(S=new Oe(l.documentElement,y=>{const A=ie(y);A&&d.dispatchEvent(new CustomEvent(ce,{bubbles:!0,detail:A}))},{...ue,axis:"x",window:l.defaultView??void 0})),x=new ResizeObserver(w),x.observe(l.body),l.documentElement&&x.observe(l.documentElement),l.addEventListener("load",m,!0),l.fonts?.ready.then(m),l.addEventListener("keydown",R),b=l)};return d.addEventListener("load",C),()=>{d.removeEventListener("load",C),b?.removeEventListener("keydown",R),b?.removeEventListener("load",m,!0),x?.disconnect(),S?.destroy(),E?.(),cancelAnimationFrame(g)}},[i]),a.jsx("iframe",{ref:o,title:"Email content",sandbox:Ke,srcDoc:u,className:n,style:{width:"100%",border:"none",display:"block",height:c===0?"1px":`${c}px`,colorScheme:"normal"}})},Ve=(e,t)=>{const r=e==="newsletter"||e==="marketing"||t;return{framed:r,isPlain:!r}},Qe=()=>`
22
+ `},I="invert(0.92) hue-rotate(180deg)",$=`img,picture,video,svg,canvas,[style*='background-image'],[background]{filter:${I}}`,Fe=(e,t,s)=>{const r=e?_.dark.canvas:_.light.canvas;return s?e?t?`html,body{margin:0;background-color:${r};color-scheme:dark light}`:`html{margin:0;background-color:#ffffff;filter:${I}}body{margin:0}${$}`:"html,body{margin:0;background-color:#ffffff;color-scheme:light}":e?t?`html,body{margin:0;background-color:${r};color-scheme:dark light}`:`html{margin:0;background-color:${r}}body{margin:0;filter:${I}}${$}`:`html,body{margin:0;background-color:${r};color-scheme:light}`},ze=(e,t,s,r=Ie)=>{const n=t==="plain"?Be(s):Fe(s,Me.test(e),r.background),o=r.spacing?"":De();return`${Pe}<style>${n}</style>${e}<style>${$e()}${o}</style>`},M=5e4,Ke="allow-same-origin allow-popups allow-popups-to-escape-sandbox",P=(e,t,s)=>Math.min(Math.ceil(Math.max(e,t)),s),L=.5,B=(e,t)=>t>0&&e>t+1?Math.max(t/e,L):1,He=["box-sizing","width","max-width","transform","transform-origin","margin-bottom","overflow-x"],Ge=e=>{for(const c of He)e.style.removeProperty(c);const t=e.clientWidth,s=e.scrollWidth;if(B(s,t)===1)return 1;const r=(c,f)=>e.style.setProperty(c,f,"important");r("box-sizing","border-box"),r("max-width","none"),r("width",`${s}px`);const n=Math.max(s,e.scrollWidth),o=B(n,t);return o>L?r("overflow-x","visible"):r("width",`${t/L}px`),r("transform-origin","0 0"),r("transform",`scale(${o})`),r("margin-bottom",`${-e.offsetHeight*(1-o)}px`),o},We=new Set(["Enter","Escape","ArrowUp","ArrowDown","ArrowLeft","ArrowRight","Home","End"]),Ue=e=>e===" "?!1:e.length===1?!0:We.has(e),R=e=>{if(e.metaKey||e.ctrlKey||e.altKey||!Ue(e.key))return;const t=e.currentTarget??e.target,s=t?.defaultView?.parent;!s||s===t?.defaultView||s.dispatchEvent(new KeyboardEvent("keydown",{key:e.key,code:e.code,shiftKey:e.shiftKey,bubbles:!0,cancelable:!0}))},F=({html:e,variant:t="framed",isDark:s=!1,declares:r,className:n})=>{const o=h.useRef(null),[c,f]=h.useState(0),i=h.useContext(ae),u=h.useMemo(()=>ze(e,t,s,r),[e,t,s,r]);return h.useEffect(()=>{const d=o.current;if(!d)return;const m=()=>{const l=d.contentDocument;if(!l?.body)return;k();const y=l.documentElement,T=Ge(l.body)<1?P(l.body.getBoundingClientRect().height,0,M):P(l.body.scrollHeight,y?.scrollHeight??0,M);f(j=>j===T?j:T)};let g=0;const w=()=>{cancelAnimationFrame(g),g=requestAnimationFrame(m)},p=l=>{const y=l.documentElement;return le()||y.scrollWidth>y.clientWidth+1},k=()=>{const l=d.contentDocument;if(!i||!l?.body)return;const y=p(l)?"auto":"pan-y pinch-zoom";l.documentElement.style.touchAction=y,l.body.style.touchAction=y};let x,b,S;const E=i?oe(k):void 0,C=()=>{m(),x?.disconnect(),x=void 0,b?.removeEventListener("keydown",R),b?.removeEventListener("load",m,!0),b=void 0,S?.destroy(),S=void 0;const l=d.contentDocument;l?.body&&(k(),i&&(S=new Oe(l.documentElement,y=>{const A=ie(y);A&&d.dispatchEvent(new CustomEvent(ce,{bubbles:!0,detail:A}))},{...ue,axis:"x",window:l.defaultView??void 0})),x=new ResizeObserver(w),x.observe(l.body),l.documentElement&&x.observe(l.documentElement),l.addEventListener("load",m,!0),l.fonts?.ready.then(m),l.addEventListener("keydown",R),b=l)};return d.addEventListener("load",C),()=>{d.removeEventListener("load",C),b?.removeEventListener("keydown",R),b?.removeEventListener("load",m,!0),x?.disconnect(),S?.destroy(),E?.(),cancelAnimationFrame(g)}},[i]),a.jsx("iframe",{ref:o,title:"Email content",sandbox:Ke,srcDoc:u,className:n,style:{width:"100%",border:"none",display:"block",height:c===0?"1px":`${c}px`,colorScheme:"normal"}})},Ve=(e,t)=>{const r=e==="newsletter"||e==="marketing"||t;return{framed:r,isPlain:!r}},Qe=()=>`
23
23
  /* Zero the UA default body margin and clamp the document to the iframe width so
24
24
  wide author markup can't push the body (and the page) past the viewport. */
25
25
  html, body {
@@ -81,4 +81,4 @@ pre, code {
81
81
  Image blocked
82
82
  </text>
83
83
  </svg>
84
- `),ft=e=>e.replace(/url\s*\([^)]*\)/gi,"none").replace(/expression\s*\([^)]*\)/gi,"").replace(/-moz-binding\s*:[^;]*/gi,""),ht=e=>e.replace(/@import[^;]*;/gi,"/* @import blocked */").replace(/url\s*\([^)]*\)/gi,"none").replace(/expression\s*\([^)]*\)/gi,"").replace(/-moz-binding\s*:[^;]*/gi,""),gt=(e={})=>{const t=de(),s={FORBID_TAGS:ut,FORBID_ATTR:dt,ALLOW_DATA_ATTR:!1,ALLOW_UNKNOWN_PROTOCOLS:!1};return t.addHook("afterSanitizeAttributes",r=>{if(e.allowExternalImages||(r.tagName==="IMG"&&r.removeAttribute("srcset"),r.tagName==="SOURCE"&&(r.removeAttribute("srcset"),r.removeAttribute("src")),r.tagName==="VIDEO"&&r.removeAttribute("poster")),r.tagName==="IMG"){const n=r.getAttribute("src")||"";if(n.startsWith("data:"))return;if(n.startsWith("cid:")){const c=n.slice(4).replace(/^<|>$/g,""),f=e.resolveCid?.(c);f&&(r.setAttribute("src",f),r.classList.add("inline-content"));return}e.allowExternalImages||(r.setAttribute("data-blocked-src",n),r.setAttribute("src",mt),r.setAttribute("alt","[Blocked image]"),r.classList.add("blocked-image"))}if(r.tagName==="A"){const n=r.getAttribute("href")||"";if(/^(javascript|data):/i.test(n)){r.removeAttribute("href");return}r.setAttribute("target","_blank"),r.setAttribute("rel","noopener noreferrer nofollow"),r.classList.add("external-link")}if(r.hasAttribute("style")){const n=r.getAttribute("style")||"";r.setAttribute("style",ft(n))}}),t.addHook("uponSanitizeElement",(r,n)=>{if(n.tagName==="style"){const o=r.textContent||"";r.textContent=ht(o)}}),r=>{const n=Xe(r),o=lt(r),c=t.sanitize(r,s);return{html:`<style>${Qe()}</style>${c}`,hasAuthorBackground:n,hasAuthorSpacing:o}}},G=()=>a.jsx("p",{className:"text-fg-muted text-sm italic",children:"This message has no body content."}),Wt=({className:e,children:t})=>a.jsx("div",{className:v("[&_.message-body-frame]:-mx-2 lg:[&_.message-body-frame]:-mx-4",e),children:t}),pt=({html:e,text:t,isDark:s=!1,category:r,allowImages:n=!1,resolveCid:o,className:c,renderBlockedNotice:f})=>{const i=h.useMemo(()=>!e||typeof document>"u"?null:gt({allowExternalImages:n,resolveCid:o})(e),[e,n,o]),u=i?.html??null,{framed:d,isPlain:m}=Ve(r,i?.hasAuthorBackground??!1),g=h.useMemo(()=>({background:i?.hasAuthorBackground??!1,spacing:i?.hasAuthorSpacing??!1}),[i?.hasAuthorBackground,i?.hasAuthorSpacing]),w=h.useMemo(()=>!u||n?0:(u.match(/data-blocked-src/g)||[]).length,[u,n]);return!u&&!t?a.jsx("div",{className:v("message-body",c),children:a.jsx(G,{})}):a.jsxs("div",{className:v("message-body",c),children:[w>0&&a.jsx("div",{children:f?.(w)}),u?a.jsx("div",{className:"message-body-frame",children:d?a.jsx("div",{className:"w-full max-w-full",children:a.jsx(F,{html:u,variant:"framed",isDark:s,declares:g})}):a.jsx("div",{className:"max-w-full lg:max-w-2xl",children:a.jsx(F,{html:u,variant:m?"plain":"framed",isDark:s,declares:g})})}):t?a.jsx("pre",{className:"email-text whitespace-pre-wrap text-sm leading-relaxed",children:t}):a.jsx(G,{})]})};function Ut({message:e="Select a thread to read",icon:t,showHints:s=!0,className:r}){return a.jsxs("div",{className:v("flex flex-1 flex-col items-center justify-center text-center",r),children:[t??a.jsx(me,{className:"size-10 text-fg-subtle"}),a.jsx("p",{className:"mt-3 text-sm text-fg-muted",children:e}),s&&a.jsxs("p",{className:"text-2xs text-fg-subtle",children:[a.jsx(O,{children:"j"})," / ",a.jsx(O,{children:"k"})," to move, ",a.jsx(O,{children:"Enter"})," to open"]})]})}function Z(e){const t=[];let s=-1,r=!1;for(let n=0;n<e.length;n++){const o=e[n];if(o==='"'){r=!r,s<0&&(s=n);continue}if(!r&&/\s/.test(o)){s>=0&&t.push({raw:e.slice(s,n),start:s,end:n}),s=-1;continue}s<0&&(s=n)}return s>=0&&t.push({raw:e.slice(s),start:s,end:e.length}),t}const bt=e=>{if(!e.startsWith('"'))return e;const t=e.slice(1);return t.endsWith('"')?t.slice(0,-1):t};function yt(e){const t=e.indexOf(":");if(t<=0)return;const s=e.slice(t+1);return{name:e.slice(0,t).toLowerCase(),value:bt(s),rawValue:s}}const xt=e=>/[\s"]/.test(e),wt=e=>xt(e)?`"${e.replace(/"/g,"")}"`:e,Vt=(e,t)=>`${e}:${wt(t)}`;function Qt(){const{mailboxNameIndex:e,accountNameIndex:t}=fe(),s=he();return{...Ee(s)?{}:{mailboxesByName:e},accountsByName:t}}const vt=Object.values(W).map(e=>({value:e,label:U[e]})),kt={unclassified:"uncategorized"},St=[{name:"from",label:"Sender",values:"contact"},{name:"subject",label:"Subject",values:"text"},{name:"category",label:"Category",values:"fixed",options:vt},{name:"is",label:"State",values:"fixed",options:[{value:"unread",label:"Unread"},{value:"read",label:"Read"},{value:"starred",label:"Starred"}]},{name:"has",label:"Contents",values:"fixed",options:[{value:"attachment",label:"Has attachment"}]},{name:"in",label:"Folder",values:"mailbox"},{name:"account",label:"Account",values:"account"},{name:"after",label:"Sent on or after",values:"date"},{name:"before",label:"Sent before",values:"date"}],Et=new Map(St.map(e=>[e.name,e])),qt=e=>Et.get(e.toLowerCase()),At=/^\d{4}-\d{2}-\d{2}$/;function Ct(e,t,s){if(!At.test(s))return;const r=Date.parse(`${s}T00:00:00Z`);if(!Number.isNaN(r))return{type:e,raw:t,value:s,epochSeconds:Math.floor(r/1e3)}}function jt(e){const t=e.toLowerCase(),s=kt[t];return s||Object.values(W).find(n=>n===t)}function Tt(e,t){switch(t.toLowerCase()){case"unread":return{type:"isUnread",raw:e};case"read":return{type:"isRead",raw:e};case"starred":case"flagged":return{type:"isStarred",raw:e};default:return}}function Nt(e,t){const s=yt(e);if(!s||s.value.length===0)return;const{name:r,value:n}=s;switch(r){case"from":return{type:"from",raw:e,value:n};case"subject":return{type:"subject",raw:e,value:n};case"category":{const o=jt(n);return o?{type:"category",raw:e,value:n,category:o}:void 0}case"is":return Tt(e,n);case"has":return n.toLowerCase()==="attachment"?{type:"hasAttachment",raw:e}:void 0;case"before":case"after":return Ct(r,e,n);case"in":{const o=t.mailboxesByName?.get(n.toLowerCase());return o?{type:"in",raw:e,value:n,mailboxId:o}:void 0}case"account":{const o=t.accountsByName?.get(n.toLowerCase());return o?{type:"account",raw:e,value:n,accountId:o}:void 0}default:return}}function Zt(e,t={}){const s=[],r=[];for(const n of Z(e)){const o=Nt(n.raw,t);o?s.push(o):r.push(n.raw)}return{freeText:r.join(" "),tokens:s}}function Yt(e,t){return Z(e).filter(s=>s.raw!==t.raw).map(s=>s.raw).join(" ")}function Xt(e){switch(e.type){case"from":return`From: ${e.value}`;case"subject":return`Subject: ${e.value}`;case"category":return`Category: ${U[e.category]}`;case"hasAttachment":return"Has attachment";case"isUnread":return"Unread";case"isRead":return"Read";case"isStarred":return"Starred";case"before":return`Before ${e.value}`;case"after":return`After ${e.value}`;case"in":return`In: ${e.value}`;case"account":return`Account: ${e.value}`}}const Y=(e,t=Date.now())=>({value:e,setAt:t}),_t=(e,t,s,r)=>{if(e.addressId!==t)return e;const n={...e.flags??{}};return s?n.trusted=Y(!0,r):delete n.trusted,{...e,flags:n}},Ot=(e,t,s,r)=>{const n=o=>o.map(c=>_t(c,t,s,r));return{...e,envelope:{...e.envelope,from:n(e.envelope.from),to:n(e.envelope.to),cc:n(e.envelope.cc),bcc:n(e.envelope.bcc),replyTo:n(e.envelope.replyTo)}}},Rt=({messageId:e})=>{const t=ge(),{pushError:s}=pe(),{mutate:r,isPending:n,error:o,reset:c}=be({...we(),onMutate:async i=>{const u=i.path.addressId,m=i.body.flags?.trusted?.value===!0,g=xe({path:{messageId:e}});await t.cancelQueries({queryKey:g});const w=t.getQueriesData({queryKey:g}).filter(p=>p[1]!==void 0).map(([p,k])=>({queryKey:p,data:k}));return t.setQueriesData({queryKey:g},p=>p&&Ot(p,u,m)),{describePrefix:g,previous:w}},onError:(i,u,d)=>{if(d)for(const m of d.previous)t.setQueryData(m.queryKey,m.data);s(ye("Couldn't trust sender","The change wasn't saved.",i))},onSettled:(i,u,d,m)=>{m&&t.invalidateQueries({queryKey:m.describePrefix})}});return{toggleTrusted:(i,u)=>{r({path:{addressId:i},body:{flags:{trusted:Y(!u)}}})},isPending:n,error:o,reset:c}},It=()=>{const[e,t]=h.useState(()=>typeof document<"u"&&document.documentElement.classList.contains("dark"));return h.useEffect(()=>{const s=document.documentElement,r=new MutationObserver(()=>{t(s.classList.contains("dark"))});return r.observe(s,{attributes:!0,attributeFilter:["class"]}),()=>r.disconnect()},[]),e},Lt=(e,t)=>{const s=`${e} image${e>1?"s":""}`;return t?`${s} hidden — you blocked this sender`:`${s} blocked for privacy`},Dt=({blockedImageCount:e,canAlwaysTrust:t,isTrustPending:s,isSenderBlocked:r,onLoadOnce:n,onAlwaysTrust:o})=>a.jsxs("div",{"data-testid":"blocked-images-notice",className:"mb-3 flex items-center justify-between rounded-md bg-surface-sunken/50 px-3 py-2 text-sm",children:[a.jsx("span",{className:"text-fg-muted",children:Lt(e,r)}),!r&&a.jsxs("div",{className:"flex items-center gap-3",children:[a.jsx("button",{type:"button",onClick:n,className:"text-accent hover:underline",children:"Load once"}),t&&a.jsx("button",{type:"button",onClick:o,"aria-busy":s,className:"text-accent hover:underline aria-busy:opacity-50",children:s?"Trusting…":"Always trust"})]})]}),$t=(e,t)=>{switch(e){case"auth":return{title:"Your session expired",detail:"Sign in again to reload the message body. Other parts of the app may also stop responding until you do."};case"body-missing":return{title:"Message body is missing in storage",detail:"A sync failure may have left this message without its body bytes. Contact support, or run the reconcile script to refetch from the upstream IMAP server."};case"content-type-mismatch":return{title:"Couldn't load message body",detail:"The server returned an unexpected content type for this part. The message body has not been rendered to keep you safe."};case"spa-shell-leak":return{title:"Couldn't load message body",detail:"The server returned the app shell instead of the message body. This is an infrastructure bug — please report it."};case"not-ready":return{title:"Message body is still syncing",detail:"This message's body hasn't finished downloading from the mail server yet. It should appear shortly — reopen the message to try again."};default:return{title:"Couldn't load message body",detail:t}}},Mt=e=>e instanceof Ae?e.reason:"generic",Pt=e=>e instanceof Error?e.message:typeof e=="string"?e:"An unexpected error occurred while loading the message body.",Bt=({error:e,onRetry:t})=>{const s=Mt(e),r=Pt(e),{title:n,detail:o}=$t(s,r),[c,f]=h.useState(!1),{Account:i}=ve();return c?null:a.jsxs("div",{role:"alert","data-testid":"message-body-error-banner","data-reason":s,className:"flex items-start gap-2 rounded-md border border-danger/40 bg-danger-soft px-3 py-2 text-sm",children:[a.jsx(ke,{className:"size-4 shrink-0 text-danger mt-0.5","aria-hidden":"true"}),a.jsxs("div",{className:"flex-1 min-w-0",children:[a.jsx("p",{className:"font-medium text-danger",children:n}),a.jsx("p",{className:"text-fg-muted mt-1 break-words",children:o})]}),a.jsxs("div",{className:"flex shrink-0 items-center gap-3",children:[s==="auth"&&a.jsx(i,{children:({signOut:u})=>a.jsx("button",{type:"button",onClick:()=>u(),className:"text-sm font-medium text-accent hover:underline",children:"Sign in again"})}),t&&a.jsx("button",{type:"button",onClick:t,className:"text-sm font-medium text-accent hover:underline",children:"Retry"}),a.jsx("button",{type:"button",onClick:()=>f(!0),"aria-label":"Dismiss message body error",className:"rounded-md p-1 text-fg-muted hover:bg-surface-raised hover:text-fg transition-colors",children:a.jsx(Se,{className:"size-4","aria-hidden":"true"})})]})]})},Ft=()=>a.jsxs("div",{className:"animate-pulse space-y-2",role:"status","aria-label":"Loading message body",children:[a.jsx("div",{className:"h-4 bg-surface-sunken rounded w-full"}),a.jsx("div",{className:"h-4 bg-surface-sunken rounded w-11/12"}),a.jsx("div",{className:"h-4 bg-surface-sunken rounded w-3/4"}),a.jsx("div",{className:"h-4 bg-surface-sunken rounded w-5/6"})]}),H=()=>a.jsx("p",{className:"text-fg-muted text-sm italic",children:"This message has no body content."}),Jt=({bodyParts:e,html:t,text:s,isTrusted:r=!1,isBlocked:n=!1,messageId:o,fromAddressId:c,category:f,className:i})=>{const[u,d]=h.useState(!1),[m,g]=h.useState(o);m!==o&&(g(o),d(!1));const w=!n&&(r||u),p=It(),{toggleTrusted:k,isPending:x}=Rt({messageId:o??""}),b=!!e&&e.length>0,{picked:S,data:E,isLoading:C,isError:l,error:y,refetch:A}=Ce({messageId:o,bodyParts:e,enabled:b}),j=h.useMemo(()=>qe(e??[]),[e]),T=b&&E?.kind==="html"?E.body:t,X=b&&E?.kind==="text"?E.body:s;if(b){if(C)return a.jsx("div",{className:v("message-body",i),children:a.jsx(Ft,{})});if(l)return a.jsx("div",{className:v("message-body",i),children:a.jsx(Bt,{error:y,onRetry:()=>A()})});if(!S)return a.jsx("div",{className:v("message-body",i),children:a.jsx(H,{})})}else if(!t&&!s)return a.jsx("div",{className:v("message-body",i),children:a.jsx(H,{})});const J=!!(c&&o),ee=()=>{!c||x||(d(!0),k(c,!1))};return a.jsx(pt,{className:i,html:T,text:X,isDark:p,category:f,allowImages:w,resolveCid:j,renderBlockedNotice:te=>a.jsx(Dt,{blockedImageCount:te,canAlwaysTrust:J,isTrustPending:x,isSenderBlocked:n,onLoadOnce:()=>d(!0),onAlwaysTrust:ee})})};export{Wt as M,Ut as R,St as S,pt as a,Rt as b,Jt as c,Z as d,yt as e,Vt as f,Xt as g,Zt as p,Yt as r,qt as s,Qt as u};
84
+ `),ft=e=>e.replace(/url\s*\([^)]*\)/gi,"none").replace(/expression\s*\([^)]*\)/gi,"").replace(/-moz-binding\s*:[^;]*/gi,""),ht=e=>e.replace(/@import[^;]*;/gi,"/* @import blocked */").replace(/url\s*\([^)]*\)/gi,"none").replace(/expression\s*\([^)]*\)/gi,"").replace(/-moz-binding\s*:[^;]*/gi,""),gt=(e={})=>{const t=de(),s={FORBID_TAGS:ut,FORBID_ATTR:dt,ALLOW_DATA_ATTR:!1,ALLOW_UNKNOWN_PROTOCOLS:!1};return t.addHook("afterSanitizeAttributes",r=>{if(e.allowExternalImages||(r.tagName==="IMG"&&r.removeAttribute("srcset"),r.tagName==="SOURCE"&&(r.removeAttribute("srcset"),r.removeAttribute("src")),r.tagName==="VIDEO"&&r.removeAttribute("poster")),r.tagName==="IMG"){const n=r.getAttribute("src")||"";if(n.startsWith("data:"))return;if(n.startsWith("cid:")){const c=n.slice(4).replace(/^<|>$/g,""),f=e.resolveCid?.(c);f&&(r.setAttribute("src",f),r.classList.add("inline-content"));return}e.allowExternalImages||(r.setAttribute("data-blocked-src",n),r.setAttribute("src",mt),r.setAttribute("alt","[Blocked image]"),r.classList.add("blocked-image"))}if(r.tagName==="A"){const n=r.getAttribute("href")||"";if(/^(javascript|data):/i.test(n)){r.removeAttribute("href");return}r.setAttribute("target","_blank"),r.setAttribute("rel","noopener noreferrer nofollow"),r.classList.add("external-link")}if(r.hasAttribute("style")){const n=r.getAttribute("style")||"";r.setAttribute("style",ft(n))}}),t.addHook("uponSanitizeElement",(r,n)=>{if(n.tagName==="style"){const o=r.textContent||"";r.textContent=ht(o)}}),r=>{const n=Xe(r),o=lt(r),c=t.sanitize(r,s);return{html:`<style>${Qe()}</style>${c}`,hasAuthorBackground:n,hasAuthorSpacing:o}}},H=()=>a.jsx("p",{className:"text-fg-muted text-sm italic",children:"This message has no body content."}),Ut=({className:e,children:t})=>a.jsx("div",{className:v("[&_.message-body-frame]:-mx-2 lg:[&_.message-body-frame]:-mx-4",e),children:t}),pt=({html:e,text:t,isDark:s=!1,category:r,allowImages:n=!1,resolveCid:o,className:c,renderBlockedNotice:f})=>{const i=h.useMemo(()=>!e||typeof document>"u"?null:gt({allowExternalImages:n,resolveCid:o})(e),[e,n,o]),u=i?.html??null,{framed:d,isPlain:m}=Ve(r,i?.hasAuthorBackground??!1),g=h.useMemo(()=>({background:i?.hasAuthorBackground??!1,spacing:i?.hasAuthorSpacing??!1}),[i?.hasAuthorBackground,i?.hasAuthorSpacing]),w=h.useMemo(()=>!u||n?0:(u.match(/data-blocked-src/g)||[]).length,[u,n]);return!u&&!t?a.jsx("div",{className:v("message-body",c),children:a.jsx(H,{})}):a.jsxs("div",{className:v("message-body",c),children:[w>0&&a.jsx("div",{children:f?.(w)}),u?a.jsx("div",{className:"message-body-frame",children:d?a.jsx("div",{className:"w-full max-w-full",children:a.jsx(F,{html:u,variant:"framed",isDark:s,declares:g})}):a.jsx("div",{className:"max-w-full lg:max-w-2xl",children:a.jsx(F,{html:u,variant:m?"plain":"framed",isDark:s,declares:g})})}):t?a.jsx("pre",{className:"email-text whitespace-pre-wrap text-sm leading-relaxed",children:t}):a.jsx(H,{})]})};function Vt({message:e="Select a thread to read",icon:t,showHints:s=!0,className:r}){return a.jsxs("div",{className:v("flex flex-1 flex-col items-center justify-center text-center",r),children:[t??a.jsx(me,{className:"size-10 text-fg-subtle"}),a.jsx("p",{className:"mt-3 text-sm text-fg-muted",children:e}),s&&a.jsxs("p",{className:"text-2xs text-fg-subtle",children:[a.jsx(O,{children:"j"})," / ",a.jsx(O,{children:"k"})," to move, ",a.jsx(O,{children:"Enter"})," to open"]})]})}function Z(e){const t=[];let s=-1,r=!1;for(let n=0;n<e.length;n++){const o=e[n];if(o==='"'){r=!r,s<0&&(s=n);continue}if(!r&&/\s/.test(o)){s>=0&&t.push({raw:e.slice(s,n),start:s,end:n}),s=-1;continue}s<0&&(s=n)}return s>=0&&t.push({raw:e.slice(s),start:s,end:e.length}),t}const bt=e=>{if(!e.startsWith('"'))return e;const t=e.slice(1);return t.endsWith('"')?t.slice(0,-1):t};function yt(e){const t=e.indexOf(":");if(t<=0)return;const s=e.slice(t+1);return{name:e.slice(0,t).toLowerCase(),value:bt(s),rawValue:s}}const xt=e=>/[\s"]/.test(e),wt=e=>xt(e)?`"${e.replace(/"/g,"")}"`:e,Qt=(e,t)=>`${e}:${wt(t)}`;function qt(){const{mailboxNameIndex:e,accountNameIndex:t}=fe(),s=Ee();return{...Se(s)?{}:{mailboxesByName:e},accountsByName:t}}const vt=Object.values(W).map(e=>({value:e,label:U[e]})),kt={unclassified:"uncategorized"},St=[{name:"from",label:"Sender",values:"contact"},{name:"subject",label:"Subject",values:"text"},{name:"category",label:"Category",values:"fixed",options:vt},{name:"is",label:"State",values:"fixed",options:[{value:"unread",label:"Unread"},{value:"read",label:"Read"},{value:"starred",label:"Starred"}]},{name:"has",label:"Contents",values:"fixed",options:[{value:"attachment",label:"Has attachment"}]},{name:"in",label:"Folder",values:"mailbox"},{name:"account",label:"Account",values:"account"},{name:"after",label:"Sent on or after",values:"date"},{name:"before",label:"Sent before",values:"date"}],Et=new Map(St.map(e=>[e.name,e])),Zt=e=>Et.get(e.toLowerCase()),At=/^\d{4}-\d{2}-\d{2}$/;function Ct(e,t,s){if(!At.test(s))return;const r=Date.parse(`${s}T00:00:00Z`);if(!Number.isNaN(r))return{type:e,raw:t,value:s,epochSeconds:Math.floor(r/1e3)}}function Tt(e){const t=e.toLowerCase(),s=kt[t];return s||Object.values(W).find(n=>n===t)}function jt(e,t){switch(t.toLowerCase()){case"unread":return{type:"isUnread",raw:e};case"read":return{type:"isRead",raw:e};case"starred":case"flagged":return{type:"isStarred",raw:e};default:return}}function Nt(e,t){const s=yt(e);if(!s||s.value.length===0)return;const{name:r,value:n}=s;switch(r){case"from":return{type:"from",raw:e,value:n};case"subject":return{type:"subject",raw:e,value:n};case"category":{const o=Tt(n);return o?{type:"category",raw:e,value:n,category:o}:void 0}case"is":return jt(e,n);case"has":return n.toLowerCase()==="attachment"?{type:"hasAttachment",raw:e}:void 0;case"before":case"after":return Ct(r,e,n);case"in":{const o=t.mailboxesByName?.get(n.toLowerCase());return o?{type:"in",raw:e,value:n,mailboxId:o}:void 0}case"account":{const o=t.accountsByName?.get(n.toLowerCase());return o?{type:"account",raw:e,value:n,accountId:o}:void 0}default:return}}function Yt(e,t={}){const s=[],r=[];for(const n of Z(e)){const o=Nt(n.raw,t);o?s.push(o):r.push(n.raw)}return{freeText:r.join(" "),tokens:s}}function Xt(e,t){return Z(e).filter(s=>s.raw!==t.raw).map(s=>s.raw).join(" ")}function Jt(e){switch(e.type){case"from":return`From: ${e.value}`;case"subject":return`Subject: ${e.value}`;case"category":return`Category: ${U[e.category]}`;case"hasAttachment":return"Has attachment";case"isUnread":return"Unread";case"isRead":return"Read";case"isStarred":return"Starred";case"before":return`Before ${e.value}`;case"after":return`After ${e.value}`;case"in":return`In: ${e.value}`;case"account":return`Account: ${e.value}`}}const Y=(e,t=Date.now())=>({value:e,setAt:t}),_t=(e,t,s,r)=>{if(e.addressId!==t)return e;const n={...e.flags??{}};return s?n.trusted=Y(!0,r):delete n.trusted,{...e,flags:n}},Ot=(e,t,s,r)=>{const n=o=>o.map(c=>_t(c,t,s,r));return{...e,envelope:{...e.envelope,from:n(e.envelope.from),to:n(e.envelope.to),cc:n(e.envelope.cc),bcc:n(e.envelope.bcc),replyTo:n(e.envelope.replyTo)}}},Rt=({messageId:e})=>{const t=he(),{pushError:s}=ge(),{mutate:r,isPending:n,error:o,reset:c}=pe({...xe(),onMutate:async i=>{const u=i.path.addressId,m=i.body.flags?.trusted?.value===!0,g=ye({path:{messageId:e}});await t.cancelQueries({queryKey:g});const w=t.getQueriesData({queryKey:g}).filter(p=>p[1]!==void 0).map(([p,k])=>({queryKey:p,data:k}));return t.setQueriesData({queryKey:g},p=>p&&Ot(p,u,m)),{describePrefix:g,previous:w}},onError:(i,u,d)=>{if(d)for(const m of d.previous)t.setQueryData(m.queryKey,m.data);s(be("Couldn't trust sender","The change wasn't saved.",i))},onSettled:(i,u,d,m)=>{m&&t.invalidateQueries({queryKey:m.describePrefix})}});return{toggleTrusted:(i,u)=>{r({path:{addressId:i},body:{flags:{trusted:Y(!u)}}})},isPending:n,error:o,reset:c}},It=()=>{const[e,t]=h.useState(()=>typeof document<"u"&&document.documentElement.classList.contains("dark"));return h.useEffect(()=>{const s=document.documentElement,r=new MutationObserver(()=>{t(s.classList.contains("dark"))});return r.observe(s,{attributes:!0,attributeFilter:["class"]}),()=>r.disconnect()},[]),e},Lt=(e,t)=>{const s=`${e} image${e>1?"s":""}`;return t?`${s} hidden — you blocked this sender`:`${s} blocked for privacy`},Dt=({blockedImageCount:e,canAlwaysTrust:t,isTrustPending:s,isSenderBlocked:r,onLoadOnce:n,onAlwaysTrust:o})=>a.jsxs("div",{"data-testid":"blocked-images-notice",className:"mb-3 flex items-center justify-between rounded-md bg-surface-sunken/50 px-3 py-2 text-sm",children:[a.jsx("span",{className:"text-fg-muted",children:Lt(e,r)}),!r&&a.jsxs("div",{className:"flex items-center gap-3",children:[a.jsx("button",{type:"button",onClick:n,className:"text-accent hover:underline",children:"Load once"}),t&&a.jsx("button",{type:"button",onClick:o,"aria-busy":s,className:"text-accent hover:underline aria-busy:opacity-50",children:s?"Trusting…":"Always trust"})]})]}),$t=(e,t)=>{switch(e){case"auth":return{title:"Your session expired",detail:"Sign in again to reload the message body. Other parts of the app may also stop responding until you do."};case"body-missing":return{title:"Message body is missing in storage",detail:"A sync failure may have left this message without its body bytes. Contact support, or run the reconcile script to refetch from the upstream IMAP server."};case"content-type-mismatch":return{title:"Couldn't load message body",detail:"The server returned an unexpected content type for this part. The message body has not been rendered to keep you safe."};case"spa-shell-leak":return{title:"Couldn't load message body",detail:"The server returned the app shell instead of the message body. This is an infrastructure bug — please report it."};case"not-ready":return{title:"Message body is still syncing",detail:"This message's body hasn't finished downloading from the mail server yet. It should appear shortly — reopen the message to try again."};default:return{title:"Couldn't load message body",detail:t}}},Mt=e=>e instanceof Ae?e.reason:"generic",Pt=e=>e instanceof Error?e.message:typeof e=="string"?e:"An unexpected error occurred while loading the message body.",Bt=({error:e,onRetry:t})=>{const s=Mt(e),r=Pt(e),{title:n,detail:o}=$t(s,r),[c,f]=h.useState(!1),{Account:i}=we();return c?null:a.jsxs("div",{role:"alert","data-testid":"message-body-error-banner","data-reason":s,className:"flex items-start gap-2 rounded-md border border-danger/40 bg-danger-soft px-3 py-2 text-sm",children:[a.jsx(ve,{className:"size-4 shrink-0 text-danger mt-0.5","aria-hidden":"true"}),a.jsxs("div",{className:"flex-1 min-w-0",children:[a.jsx("p",{className:"font-medium text-danger",children:n}),a.jsx("p",{className:"text-fg-muted mt-1 break-words",children:o})]}),a.jsxs("div",{className:"flex shrink-0 items-center gap-3",children:[s==="auth"&&a.jsx(i,{children:({signOut:u})=>a.jsx("button",{type:"button",onClick:()=>u(),className:"text-sm font-medium text-accent hover:underline",children:"Sign in again"})}),t&&a.jsx("button",{type:"button",onClick:t,className:"text-sm font-medium text-accent hover:underline",children:"Retry"}),a.jsx("button",{type:"button",onClick:()=>f(!0),"aria-label":"Dismiss message body error",className:"rounded-md p-1 text-fg-muted hover:bg-surface-raised hover:text-fg transition-colors",children:a.jsx(ke,{className:"size-4","aria-hidden":"true"})})]})]})},Ft=()=>a.jsxs("div",{className:"animate-pulse space-y-2",role:"status","aria-label":"Loading message body",children:[a.jsx("div",{className:"h-4 bg-surface-sunken rounded w-full"}),a.jsx("div",{className:"h-4 bg-surface-sunken rounded w-11/12"}),a.jsx("div",{className:"h-4 bg-surface-sunken rounded w-3/4"}),a.jsx("div",{className:"h-4 bg-surface-sunken rounded w-5/6"})]}),G=()=>a.jsx("p",{className:"text-fg-muted text-sm italic",children:"This message has no body content."}),es=({bodyParts:e,html:t,text:s,isTrusted:r=!1,isBlocked:n=!1,messageId:o,fromAddressId:c,category:f,className:i})=>{const[u,d]=h.useState(!1),[m,g]=h.useState(o);m!==o&&(g(o),d(!1));const w=!n&&(r||u),p=It(),{toggleTrusted:k,isPending:x}=Rt({messageId:o??""}),b=!!e&&e.length>0,{picked:S,data:E,isLoading:C,isError:l,error:y,refetch:A}=Ce({messageId:o,bodyParts:e,enabled:b}),T=h.useMemo(()=>qe(e??[]),[e]),j=b&&E?.kind==="html"?E.body:t,X=b&&E?.kind==="text"?E.body:s;if(b){if(C)return a.jsx("div",{className:v("message-body",i),children:a.jsx(Ft,{})});if(l)return a.jsx("div",{className:v("message-body",i),children:a.jsx(Bt,{error:y,onRetry:()=>A()})});if(!S)return a.jsx("div",{className:v("message-body",i),children:a.jsx(G,{})})}else if(!t&&!s)return a.jsx("div",{className:v("message-body",i),children:a.jsx(G,{})});const J=!!(c&&o),ee=()=>{!c||x||(d(!0),k(c,!1))};return a.jsx(pt,{className:i,html:j,text:X,isDark:p,category:f,allowImages:w,resolveCid:T,renderBlockedNotice:te=>a.jsx(Dt,{blockedImageCount:te,canAlwaysTrust:J,isTrustPending:x,isSenderBlocked:n,onLoadOnce:()=>d(!0),onAlwaysTrust:ee})})};export{Ut as M,Vt as R,St as S,pt as a,Rt as b,es as c,Z as d,yt as e,Qt as f,Jt as g,Yt as p,Xt as r,Zt as s,qt as u};