@remit/web-client-dist 0.0.547 → 0.0.549
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.
- package/assets/{BriefPane-DjXVhi5n.js → BriefPane-B7562kZG.js} +1 -1
- package/assets/{CalendarComposePane-P9-bhcqE.js → CalendarComposePane-1N_4yDpB.js} +1 -1
- package/assets/{CalendarComposeSeed-Czh_EFtU.js → CalendarComposeSeed-BXVXsAy6.js} +1 -1
- package/assets/{CalendarShell-CBxmHAKN.js → CalendarShell-CTaKIo65.js} +1 -1
- package/assets/{EmptyState-Csi_Xz-n.js → EmptyState-D_iSHWz0.js} +1 -1
- package/assets/{ErrorState-D2WRLqCA.js → ErrorState-DB1vBo3T.js} +1 -1
- package/assets/{FlaggedPane-BMhsaqsT.js → FlaggedPane-Cq_CDqa5.js} +1 -1
- package/assets/{FullCompose-Ink2xAM-.js → FullCompose-0PfLryOC.js} +1 -1
- package/assets/{MailListHeader-CXnqPIx9.js → MailListHeader-XE_xkbwH.js} +2 -2
- package/assets/{MailNav-Cp_iZoYF.js → MailNav-DnBOZOUc.js} +1 -1
- package/assets/{MailShell-DNwA-Oxr.js → MailShell-Clsfslhg.js} +1 -1
- package/assets/{MailViewChrome-CqY2fEWx.js → MailViewChrome-B7s_hWYR.js} +1 -1
- package/assets/{MailboxPane-DxqmFcqd.js → MailboxPane-C8ZkLhKq.js} +1 -1
- package/assets/{NavMenuButton-kPTzMEar.js → NavMenuButton-DDKx4eEu.js} +1 -1
- package/assets/{OnboardingWizard-DCffkuHO.js → OnboardingWizard-Dfrlsy42.js} +1 -1
- package/assets/{OpenCalendarEvent-BKm0ldUF.js → OpenCalendarEvent-D_SE1kN_.js} +1 -1
- package/assets/{OutboxPane-BiBLUgO_.js → OutboxPane-x_V-Gqan.js} +1 -1
- package/assets/_calendarObjectId-3dcJIylt.js +1 -0
- package/assets/_mailboxId-cFVNcjxi.js +1 -0
- package/assets/_messageId-5Unpz0XT.js +1 -0
- package/assets/_messageId-BmlYNo0e.js +1 -0
- package/assets/_messageId-Jh9qtm9v.js +1 -0
- package/assets/_outboxMessageId-_tL3j27c.js +1 -0
- package/assets/_recurrenceId-Bxw5OjTn.js +1 -0
- package/assets/_threadId-BvWJjP5c.js +1 -0
- package/assets/_threadId-DL7SDRsd.js +1 -0
- package/assets/_threadId-DeyOhMMM.js +1 -0
- package/assets/{_view._date-CXoIwxlS.js → _view._date-BtoLRwYS.js} +1 -1
- package/assets/{accounts-BdV_ljxq.js → accounts-CMeD6cYu.js} +1 -1
- package/assets/{advanced-DS8RMs41.js → advanced-CT9IWUJ0.js} +1 -1
- package/assets/{appearance-2CWjWVPu.js → appearance-B_RGPSGI.js} +1 -1
- package/assets/{attachment-file-Hc_je9M4.js → attachment-file-q_P2hWEi.js} +1 -1
- package/assets/{attendee-row-BELqXJ7B.js → attendee-row-DFD-DxDJ.js} +1 -1
- package/assets/{avatar-FaP643SL.js → avatar-okIKQAx5.js} +1 -1
- package/assets/{bottom-sheet-BWV-pwNV.js → bottom-sheet-CKlezTRf.js} +1 -1
- package/assets/{brief-CHwVtHRf.js → brief-DXwc_iDJ.js} +1 -1
- package/assets/brief-DpVXVBY5.js +1 -0
- package/assets/{browser-ponyfill-D1SK-Hyv.js → browser-ponyfill-D3kTFeRo.js} +1 -1
- package/assets/{bug-HiZqAhb4.js → bug-B7GjOYss.js} +1 -1
- package/assets/{calendar-C9N0YDWy.js → calendar-D7saafbJ.js} +1 -1
- package/assets/{calendar-color-CVcsImDk.js → calendar-color-BGz9Fk1b.js} +1 -1
- package/assets/{calendar-event-chip-Qbyux0KS.js → calendar-event-chip-B49Z5bwy.js} +1 -1
- package/assets/{calendars-D5vQhxUE.js → calendars-Dt476nQf.js} +1 -1
- package/assets/{card-DBLAWX7D.js → card-TRkiC9uW.js} +1 -1
- package/assets/chevron-left-Cl_NLDR3.js +1 -0
- package/assets/{circle-check-DqW4VN_L.js → circle-check-B9eU7QAL.js} +1 -1
- package/assets/{circle-check-big-CxExTM4C.js → circle-check-big-C1O585B0.js} +1 -1
- package/assets/{circle-help-Ogu-lxUf.js → circle-help-C9hQrVQD.js} +1 -1
- package/assets/{clock-B9zwMbGg.js → clock-WUvQZEVq.js} +1 -1
- package/assets/compose._-_outboxMessageId_-Cs9OS3i1.js +1 -0
- package/assets/compose._-_outboxMessageId_-D0WwLzdP.js +1 -0
- package/assets/compose._-_outboxMessageId_-D94xl0YS.js +1 -0
- package/assets/compose._-_outboxMessageId_-DUvnj70m.js +1 -0
- package/assets/{config-import-CWlyr-Xw.js → config-import-CW6jNpxj.js} +1 -1
- package/assets/{confirm-dialog-CmLCmnNL.js → confirm-dialog-DbqSzQVP.js} +1 -1
- package/assets/{copy-B3tf79a8.js → copy-sX_6pmAC.js} +1 -1
- package/assets/{credential-steps-CMXnNMdT.js → credential-steps-BNJMATq2.js} +1 -1
- package/assets/{download-CgFvTiIv.js → download-BfNthT8Z.js} +1 -1
- package/assets/{file-json-CIxGXoiU.js → file-json-B1qu9GhH.js} +1 -1
- package/assets/{filters-638gKtmI.js → filters-Cd4ULJXo.js} +1 -1
- package/assets/flagged-BaKt_o4i.js +1 -0
- package/assets/{flagged-Bs_EcTP4.js → flagged-DWCpZ8XY.js} +1 -1
- package/assets/{folders-CupwB1-X.js → folders-BNVGHD0Q.js} +1 -1
- package/assets/{format-CnUo4nsy.js → format-BEIHnSOd.js} +1 -1
- package/assets/{help-copy-CUwWz5Ix.js → help-copy-Dqgabl_y.js} +1 -1
- package/assets/{import-CY1oruPd.js → import-BK0A-1eK.js} +1 -1
- package/assets/index-B03ZGIOT.js +1 -0
- package/assets/{index-Dl-IeK4b.js → index-B0wzSmGb.js} +59 -59
- package/assets/{index-BL6u7VOR.js → index-B26BrOlY.js} +1 -1
- package/assets/index-BGOMRWk0.js +1 -0
- package/assets/index-BJf8yxVc.js +1 -0
- package/assets/index-BmlYNo0e.js +1 -0
- package/assets/{index-DjivCHxN.js → index-CfOD5pXy.js} +4 -4
- package/assets/index-CujA995F.js +1 -0
- package/assets/index-D17MU_3-.js +1 -0
- package/assets/index-DB2APhCE.js +1 -0
- package/assets/index-DTrvb8Nk.js +1 -0
- package/assets/index-hw_FST89.js +1 -0
- package/assets/{kbd-NUlX26oL.js → kbd-BmPFbHYP.js} +1 -1
- package/assets/{labels-DrPDGWnl.js → labels-DWARE4fV.js} +1 -1
- package/assets/{mail-B4aLujs9.js → mail-BWlwMkna.js} +1 -1
- package/assets/{mail-CHvC6ZLD.js → mail-g7BjWhWo.js} +1 -1
- package/assets/{map-pin-DpvkzQ3W.js → map-pin-Bv131hG_.js} +1 -1
- package/assets/{menu-BkMowUvB.js → menu-gCazkZlW.js} +1 -1
- package/assets/{new-BywNgYzR.js → new-Bmczbods.js} +1 -1
- package/assets/onboarding-DmDFE1Ig.js +1 -0
- package/assets/{onboarding-completion-B9iBHmjd.js → onboarding-completion-DiEd7sP4.js} +1 -1
- package/assets/outbox-B62UshqW.js +1 -0
- package/assets/{pencil-CTp_mQXc.js → pencil-C8AOu7qE.js} +1 -1
- package/assets/{refresh-cw-CAEZACfx.js → refresh-cw-AMFnV-5b.js} +1 -1
- package/assets/{rich-text-D4uROF5p.js → rich-text-DrwUmZDi.js} +1 -1
- package/assets/{rich-text-spellcheck-worker-provider-C0hgnMPg.js → rich-text-spellcheck-worker-provider-HqX29a96.js} +1 -1
- package/assets/{rotate-ccw-DTHHrn3E.js → rotate-ccw-DGpM7nh4.js} +1 -1
- package/assets/{roving-focus-PYBAvv1W.js → roving-focus-DJ0vLUUT.js} +1 -1
- package/assets/{row-actions-Bv42wyPb.js → row-actions-9j9NO0uc.js} +1 -1
- package/assets/{search-mirror-D3p_iq8t.js → search-mirror-B-1Ajbzl.js} +1 -1
- package/assets/{search-token-index-Dqkprdi1.js → search-token-index-WY58cnXj.js} +1 -1
- package/assets/{sections-DmYxxTuO.js → sections-BD1IyMvs.js} +1 -1
- package/assets/{senders-DUE9iMX-.js → senders-Du9ffylJ.js} +1 -1
- package/assets/settings-Dlhc9FGh.js +1 -0
- package/assets/{settings-screen-LlvWATvA.js → settings-screen-TTJlseOe.js} +1 -1
- package/assets/{shield-check-B4DZ_Xs4.js → shield-check-CHTkuhvC.js} +1 -1
- package/assets/{suggested-vips-BgmezwHr.js → suggested-vips-CvnlXjjY.js} +1 -1
- package/assets/{useCalendarData-CBpjGSmV.js → useCalendarData-ChjFYe3b.js} +1 -1
- package/assets/{useCalendars-D0zF0MRU.js → useCalendars-ChrRJD0t.js} +1 -1
- package/assets/{useDebouncedValue-DQ3wDcC8.js → useDebouncedValue-D1eSm63M.js} +1 -1
- package/assets/{useFilters-CZatkEAB.js → useFilters-B1r7ksMZ.js} +1 -1
- package/assets/{useLabels-CquMZ9L6.js → useLabels-I0F9ayju.js} +1 -1
- package/assets/{useLayoutTier-B4p2koJ8.js → useLayoutTier-CMt4p-F2.js} +1 -1
- package/assets/{useMessageBodyContent-CCebfzNz.js → useMessageBodyContent-CdDORwnR.js} +1 -1
- package/assets/{useQueries-CTqj_t8a.js → useQueries-C1M2fuSM.js} +1 -1
- package/assets/{useRefreshControl-BsZIer_3.js → useRefreshControl-zcl3awO5.js} +1 -1
- package/assets/{useResultFolderIndex-C-QyICbN.js → useResultFolderIndex-B2jcKXlG.js} +1 -1
- package/assets/{useSearchTokenContext-4unzrJQC.js → useSearchTokenContext-_qJSz3Gm.js} +1 -1
- package/assets/{useSemanticSearch-CXPZb0R8.js → useSemanticSearch-uNgNJ-Uw.js} +1 -1
- package/assets/{useSignature-CCEGm9nr.js → useSignature-Bw8pZnax.js} +1 -1
- package/assets/{window-C50lsBJJ.js → window-C8-DdFd6.js} +1 -1
- package/index.html +1 -1
- package/package.json +1 -1
- package/assets/_calendarObjectId-DHWBiFl-.js +0 -1
- package/assets/_mailboxId-N9fapuC4.js +0 -1
- package/assets/_messageId-CQ8K4pmm.js +0 -1
- package/assets/_messageId-DFgpQ9c8.js +0 -1
- package/assets/_messageId-DOkRvEKL.js +0 -1
- package/assets/_outboxMessageId-1pOSds7h.js +0 -1
- package/assets/_recurrenceId-EtyGNB4x.js +0 -1
- package/assets/_threadId-BiUPC-_-.js +0 -1
- package/assets/_threadId-CDT33U93.js +0 -1
- package/assets/_threadId-CiYdLICv.js +0 -1
- package/assets/brief-BV-tSqwL.js +0 -1
- package/assets/chevron-left-yh1VSE1r.js +0 -1
- package/assets/compose._-_outboxMessageId_-BXlT-TBm.js +0 -1
- package/assets/compose._-_outboxMessageId_-C6LsyOXp.js +0 -1
- package/assets/compose._-_outboxMessageId_-DEp969f-.js +0 -1
- package/assets/compose._-_outboxMessageId_-fmf3KBxw.js +0 -1
- package/assets/flagged-BIYv8NfY.js +0 -1
- package/assets/index-BHoMu5ca.js +0 -1
- package/assets/index-BMOPxMiJ.js +0 -1
- package/assets/index-BcLl6nHx.js +0 -1
- package/assets/index-CCJz2gCX.js +0 -1
- package/assets/index-D9gvulmH.js +0 -1
- package/assets/index-DFgpQ9c8.js +0 -1
- package/assets/index-DaYKFI0l.js +0 -1
- package/assets/index-DgToyNQ9.js +0 -1
- package/assets/index-Dwis-WMV.js +0 -1
- package/assets/onboarding-B_Zgsq80.js +0 -1
- package/assets/outbox-DPkhcco2.js +0 -1
- package/assets/settings-BE3x88wG.js +0 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import{aq as ws,cV as Ur,r as c,e as se,j as s,W as _e,Y as Ns,az as et,t as M,ap as Yn,a5 as Br,f as K,X as Ue,a1 as yt,T as Be,cW as Xn,aK as Kr,U as Hr,b4 as qr,g as je,cX as Cs,V as tt,cY as Qr,cZ as Gr,c_ as Wr,c$ as Vr,d0 as Yr,d1 as Jn,d2 as Zn,bj as Xr,d3 as Jr,d4 as ea,bA as Ss,d5 as Zr,d6 as ta,aG as eo,L as sa,Z as to,d7 as so,B as na,d8 as no,d9 as ao,da as ro,db as oo,dc as io,w as lo,c as J,d as st,G as kt,dd as co,de as uo,df as _t,h as le,ar as ve,i as me,M as nt,cy as Me,dg as Ut,b8 as fo,dh as Ae,di as mo,dj as en,dk as po,dl as ho,dm as go,b1 as xo,ci as bo,dn as vo,cN as Ts,cO as aa,s as yo,dp as ko,bh as Is,bk as ra,be as oa,bl as ia,bm as la,E as Es,bn as jo,aW as ca,aX as da,cD as wo,dq as No,a9 as ua,cC as Co,dr as So,ds as To,dt as Io,du as Eo,dv as fa,dw as Ro,cS as Mo,bL as Rs,dx as Ao,dy as tn,dz as $o,dA as ss,dB as Lo,bK as Po,P as Do,q as Fo,af as ma,F as Oo,cR as sn,bu as zo,dC as _o,dD as Uo,at as nn,cQ as Bo,dE as Ko,ag as Ho,cg as qo,ch as Qo,dF as Go,C as Bt,dG as Wo,dH as Vo,dI as an,dJ as Yo,dK as Xo,dL as Jo,v as pa,cU as Te,dM as Ms,dN as Zo,cj as ei,ce as ti,dO as si,dP as rn,a0 as ni,ck as ai}from"./index-Dl-IeK4b.js";import{u as ri,L as oi,a as ii}from"./roving-focus-PYBAvv1W.js";import{m as li,S as ha,i as we,t as Ne,r as jt,n as wt,o as Nt,p as Ct,q as ci,h as di,d as ui,D as fi,b as Mt,a as mi,v as pi,w as hi,x as ft,e as gi,y as xi,z as bi,u as vi}from"./search-token-index-Dqkprdi1.js";import{K as yi}from"./kbd-NUlX26oL.js";import{P as ga,f as ki,U as ji,a as wi,E as Ni,s as Ci}from"./attachment-file-Hc_je9M4.js";import{M as xa}from"./mail-CHvC6ZLD.js";import{A as gt}from"./avatar-FaP643SL.js";import{M as Si,a as Ti,b as ba,c as Ii,s as va,d as ya,e as Ei,f as Ri,S as on,g as ka,u as ja,p as Mi,r as Ai}from"./useSearchTokenContext-4unzrJQC.js";import{C as $i,D as Xe,u as Li}from"./index-DjivCHxN.js";import{E as wa}from"./EmptyState-Csi_Xz-n.js";import{E as ze}from"./ErrorState-D2WRLqCA.js";import{a as Na,c as at,b as Pi,g as Di,e as Ke,h as Fi,d as Oi}from"./format-CnUo4nsy.js";import{D as zi}from"./download-CgFvTiIv.js";import{g as _i}from"./useMessageBodyContent-CCebfzNz.js";import{C as Ui}from"./calendar-event-chip-Qbyux0KS.js";import{c as Bi}from"./calendar-color-CVcsImDk.js";import{R as Ki,M as Hi}from"./attendee-row-BELqXJ7B.js";import{C as Ca}from"./clock-B9zwMbGg.js";import{M as qi,G as Qi}from"./map-pin-DpvkzQ3W.js";import{B as Gi,b as Wi,u as Vi,i as Yi}from"./useLayoutTier-B4p2koJ8.js";import{S as Xi,C as Sa}from"./shield-check-B4DZ_Xs4.js";import{u as Ta}from"./useDebouncedValue-DQ3wDcC8.js";import{h as ln,u as Ji,a as Zi,i as el,n as tl,o as sl,j as nl,k as al,S as rl}from"./useFilters-CZatkEAB.js";import{u as As}from"./useQueries-CTqj_t8a.js";import{C as At}from"./confirm-dialog-CmLCmnNL.js";import{r as ol,a as il}from"./search-scope-B5-OK3Cq.js";import{M as ll}from"./menu-BkMowUvB.js";function xt(e){if(cl())e.focus({preventScroll:!0});else{let t=dl(e);e.focus(),ul(t)}}let $t=null;function cl(){if($t==null){$t=!1;try{document.createElement("div").focus({get preventScroll(){return $t=!0,!0}})}catch{}}return $t}function dl(e){let t=e.parentNode,n=[],a=document.scrollingElement||document.documentElement;for(;t instanceof HTMLElement&&t!==a;)(t.offsetHeight<t.scrollHeight||t.offsetWidth<t.scrollWidth)&&n.push({element:t,scrollTop:t.scrollTop,scrollLeft:t.scrollLeft}),t=t.parentNode;return a instanceof HTMLElement&&n.push({element:a,scrollTop:a.scrollTop,scrollLeft:a.scrollLeft}),n}function ul(e){for(let{element:t,scrollTop:n,scrollLeft:a}of e)t.scrollTop=n,t.scrollLeft=a}const Ee=e=>e?.ownerDocument??document,Re=e=>e&&"window"in e&&e.window===e?e:Ee(e).defaultView||window;function fl(e){return e!==null&&typeof e=="object"&&"nodeType"in e&&typeof e.nodeType=="number"}function ml(e){return fl(e)&&e.nodeType===Node.DOCUMENT_FRAGMENT_NODE&&"host"in e}let pl=!1;function Ia(){return pl}function xe(e,t){if(!Ia())return t&&e?e.contains(t):!1;if(!e||!t)return!1;let n=t;for(;n!==null;){if(n===e)return!0;n.tagName==="SLOT"&&n.assignedSlot?n=n.assignedSlot.parentNode:ml(n)?n=n.host:n=n.parentNode}return!1}function ee(e){if(Ia()&&e.target instanceof Element&&e.target.shadowRoot){if("composedPath"in e)return e.composedPath()[0]??null;if("composedPath"in e.nativeEvent)return e.nativeEvent.composedPath()[0]??null}return e.target}const hl=typeof Element<"u"&&"checkVisibility"in Element.prototype;function gl(e){const t=Re(e);if(!(e instanceof t.HTMLElement)&&!(e instanceof t.SVGElement))return!1;let{display:n,visibility:a}=e.style,r=n!=="none"&&a!=="hidden"&&a!=="collapse";if(r){const{getComputedStyle:o}=Re(e);let{display:i,visibility:l}=o(e);r=i!=="none"&&l!=="hidden"&&l!=="collapse"}return r}function xl(e,t){return!e.hasAttribute("hidden")&&!e.hasAttribute("data-react-aria-prevent-focus")&&(e.nodeName==="DETAILS"&&t&&t.nodeName!=="SUMMARY"?e.hasAttribute("open"):!0)}function Ea(e,t){return hl?e.checkVisibility({visibilityProperty:!0})&&!e.closest("[data-react-aria-prevent-focus]"):e.nodeName!=="#comment"&&gl(e)&&xl(e,t)&&(!e.parentElement||Ea(e.parentElement,e))}const Ra=["input:not([disabled]):not([type=hidden])","select:not([disabled])","textarea:not([disabled])","button:not([disabled])","a[href]","area[href]","summary","iframe","object","embed","audio[controls]","video[controls]",'[contenteditable]:not([contenteditable^="false"])',"permission"],bl=Ra.join(":not([hidden]),")+",[tabindex]:not([disabled]):not([hidden])";Ra.push('[tabindex]:not([tabindex="-1"]):not([disabled])');function vl(e,t){return e.matches(bl)&&!yl(e)&&(t?.skipVisibilityCheck||Ea(e))}function yl(e){let t=e;for(;t!=null;){if(t instanceof Re(t).HTMLElement&&t.inert)return!0;t=t.parentElement}return!1}const $s=typeof document<"u"?ws.useLayoutEffect:()=>{};function kl(e){let t=e;return t.nativeEvent=e,t.isDefaultPrevented=()=>t.defaultPrevented,t.isPropagationStopped=()=>t.cancelBubble,t.persist=()=>{},t}function jl(e,t){Object.defineProperty(e,"target",{value:t}),Object.defineProperty(e,"currentTarget",{value:t})}function wl(e){for(;e&&!vl(e,{skipVisibilityCheck:!0});)e=e.parentElement;let t=Re(e),n=t.document.activeElement;if(!n||n===e)return;let a=!1,r=g=>{(ee(g)===n||a)&&g.stopImmediatePropagation()},o=g=>{(ee(g)===n||a)&&(g.stopImmediatePropagation(),!e&&!a&&(a=!0,xt(n),d()))},i=g=>{(ee(g)===e||a)&&g.stopImmediatePropagation()},l=g=>{(ee(g)===e||a)&&(g.stopImmediatePropagation(),a||(a=!0,xt(n),d()))};t.addEventListener("blur",r,!0),t.addEventListener("focusout",o,!0),t.addEventListener("focusin",l,!0),t.addEventListener("focus",i,!0);let d=()=>{cancelAnimationFrame(x),t.removeEventListener("blur",r,!0),t.removeEventListener("focusout",o,!0),t.removeEventListener("focusin",l,!0),t.removeEventListener("focus",i,!0),a=!1},x=requestAnimationFrame(d);return d}function Kt(e){if(typeof window>"u"||window.navigator==null)return!1;let t=window.navigator.userAgentData?.brands;return Array.isArray(t)&&t.some(n=>e.test(n.brand))||e.test(window.navigator.userAgent)}function Ls(e){return typeof window<"u"&&window.navigator!=null?e.test(window.navigator.userAgentData?.platform||window.navigator.platform):!1}function $e(e){let t=null;return()=>(t==null&&(t=e()),t)}const Ft=$e(function(){return Ls(/^Mac/i)}),Nl=$e(function(){return Ls(/^iPhone/i)}),Ma=$e(function(){return Ls(/^iPad/i)||Ft()&&navigator.maxTouchPoints>1}),Aa=$e(function(){return Nl()||Ma()}),Cl=$e(function(){return Kt(/AppleWebKit/i)&&!Sl()}),Sl=$e(function(){return Kt(/Chrome/i)}),$a=$e(function(){return Kt(/Android/i)}),Tl=$e(function(){return Kt(/Firefox/i)});function Il(e){return e.pointerType===""&&e.isTrusted?!0:$a()&&e.pointerType?e.type==="click"&&e.buttons===1:e.detail===0&&!e.pointerType}function El(e){return!$a()&&e.width===0&&e.height===0||e.width===1&&e.height===1&&e.pressure===0&&e.detail===0&&e.pointerType==="mouse"}function bt(e,t,n=!0){let{metaKey:a,ctrlKey:r,altKey:o,shiftKey:i}=t;Tl()&&window.event?.type?.startsWith("key")&&e.target==="_blank"&&(Ft()?a=!0:r=!0);let l=Cl()&&Ft()&&!Ma()?new KeyboardEvent("keydown",{keyIdentifier:"Enter",metaKey:a,ctrlKey:r,altKey:o,shiftKey:i}):new MouseEvent("click",{metaKey:a,ctrlKey:r,altKey:o,shiftKey:i,detail:1,bubbles:!0,cancelable:!0});bt.isOpening=n,xt(e),e.dispatchEvent(l),bt.isOpening=!1}bt.isOpening=!1;let Ie=new Map,ms=new Set;function cn(){if(typeof window>"u")return;function e(a){return"propertyName"in a}let t=a=>{let r=ee(a);if(!e(a)||!r)return;let o=Ie.get(r);o||(o=new Set,Ie.set(r,o),r.addEventListener("transitioncancel",n,{once:!0})),o.add(a.propertyName)},n=a=>{let r=ee(a);if(!e(a)||!r)return;let o=Ie.get(r);if(o&&(o.delete(a.propertyName),o.size===0&&(r.removeEventListener("transitioncancel",n),Ie.delete(r)),Ie.size===0)){for(let i of ms)i();ms.clear()}};document.body.addEventListener("transitionrun",t),document.body.addEventListener("transitionend",n)}typeof document<"u"&&(document.readyState!=="loading"?cn():document.addEventListener("DOMContentLoaded",cn));function Rl(){for(const[e]of Ie)"isConnected"in e&&!e.isConnected&&Ie.delete(e)}function Ml(e){requestAnimationFrame(()=>{Rl(),Ie.size===0?e():ms.add(e)})}function La(...e){return(...t)=>{for(let n of e)typeof n=="function"&&n(...t)}}let ps=new Map;typeof FinalizationRegistry<"u"&&new FinalizationRegistry(e=>{ps.delete(e)});function Al(e,t){if(e===t)return e;let n=ps.get(e);if(n)return n.forEach(r=>r.current=t),t;let a=ps.get(t);return a?(a.forEach(r=>r.current=e),e):t}function $l(...e){return e.length===1&&e[0]?e[0]:t=>{let n=!1;const a=e.map(r=>{const o=dn(r,t);return n||=typeof o=="function",o});if(n)return()=>{a.forEach((r,o)=>{typeof r=="function"?r():dn(e[o],null)})}}}function dn(e,t){if(typeof e=="function")return e(t);e!=null&&(e.current=t)}function St(...e){let t={...e[0]};for(let n=1;n<e.length;n++){let a=e[n];for(let r in a){let o=t[r],i=a[r];typeof o=="function"&&typeof i=="function"&&r[0]==="o"&&r[1]==="n"&&r.charCodeAt(2)>=65&&r.charCodeAt(2)<=90?t[r]=La(o,i):(r==="className"||r==="UNSAFE_className")&&typeof o=="string"&&typeof i=="string"?t[r]=Ur(o,i):r==="id"&&o&&i?t.id=Al(o,i):r==="ref"&&o&&i?t.ref=$l(o,i):t[r]=i!==void 0?i:o}}return t}function Ll(e,t){$s(()=>{if(e&&e.ref&&t)return e.ref.current=t.current,()=>{e.ref&&(e.ref.current=null)}})}const Pl=ws.useInsertionEffect??$s;function ns(e){const t=c.useRef(null);return Pl(()=>{t.current=e},[e]),c.useCallback((...n)=>{const a=t.current;return a?.(...n)},[])}let Je="default",hs="",Dt=new WeakMap;function Dl(e){if(Aa()){if(Je==="default"){const t=Ee(e);hs=t.documentElement.style.webkitUserSelect,t.documentElement.style.webkitUserSelect="none"}Je="disabled"}else if(e instanceof HTMLElement||e instanceof SVGElement){let t="userSelect"in e.style?"userSelect":"webkitUserSelect";Dt.set(e,e.style[t]),e.style[t]="none"}}function un(e){if(Aa()){if(Je!=="disabled")return;Je="restoring",setTimeout(()=>{Ml(()=>{if(Je==="restoring"){const t=Ee(e);t.documentElement.style.webkitUserSelect==="none"&&(t.documentElement.style.webkitUserSelect=hs||""),hs="",Je="default"}})},300)}else if((e instanceof HTMLElement||e instanceof SVGElement)&&e&&Dt.has(e)){let t=Dt.get(e),n="userSelect"in e.style?"userSelect":"webkitUserSelect";e.style[n]==="none"&&(e.style[n]=t),e.getAttribute("style")===""&&e.removeAttribute("style"),Dt.delete(e)}}function fn(e){return e?.defaultView?.__webpack_nonce__||globalThis.__webpack_nonce__||void 0}let as=new WeakMap;function Fl(e){let t=e??(typeof document<"u"?document:void 0);if(!t)return fn(t);if(as.has(t))return as.get(t);let n=t.querySelector('meta[property="csp-nonce"]'),a=n&&n instanceof Re(n).HTMLMetaElement&&(n.nonce||n.content)||fn(t)||void 0;return a!==void 0&&as.set(t,a),a}const Pa=ws.createContext({register:()=>{}});Pa.displayName="PressResponderContext";function Da(){let e=c.useRef(new Map),t=c.useCallback((r,o,i,l)=>{let d=l?.once?(...x)=>{e.current.delete(i),i(...x)}:i;e.current.set(i,{type:o,eventTarget:r,fn:d,options:l}),r.addEventListener(o,d,l)},[]),n=c.useCallback((r,o,i,l)=>{let d=e.current.get(i)?.fn||i;r.removeEventListener(o,d,l),e.current.delete(i)},[]),a=c.useCallback(()=>{e.current.forEach((r,o)=>{n(r.eventTarget,r.type,o,r.options)})},[n]);return c.useEffect(()=>a,[a]),{addGlobalListener:t,removeGlobalListener:n,removeAllGlobalListeners:a}}function Ol(e){let t=c.useContext(Pa);if(t){let{register:n,ref:a,...r}=t;e=St(r,e),n()}return Ll(t,e.ref),e}class Lt{#e;constructor(t,n,a,r){this.#e=!0;const i=(r?.target??a.currentTarget)?.getBoundingClientRect();let l,d=0,x,g=null;a.clientX!=null&&a.clientY!=null&&(x=a.clientX,g=a.clientY),i&&(x!=null&&g!=null?(l=x-i.left,d=g-i.top):(l=i.width/2,d=i.height/2)),this.type=t,this.pointerType=n,this.target=a.currentTarget,this.shiftKey=a.shiftKey,this.metaKey=a.metaKey,this.ctrlKey=a.ctrlKey,this.altKey=a.altKey,this.x=l,this.y=d,this.key=a.key}continuePropagation(){this.#e=!1}get shouldStopPropagation(){return this.#e}}const mn=Symbol("linkClicked"),pn="react-aria-pressable-style",hn="data-react-aria-pressable";function zl(e){let{onPress:t,onPressChange:n,onPressStart:a,onPressEnd:r,onPressUp:o,onClick:i,isDisabled:l,isPressed:d,preventFocusOnPress:x,shouldCancelOnPointerExit:g,allowTextSelectionOnPress:v,ref:m,...b}=Ol(e),[f,u]=c.useState(!1),h=c.useRef({isPressed:!1,ignoreEmulatedMouseEvents:!1,didFirePressStart:!1,isTriggeringEvent:!1,activePointerId:null,target:null,isOverTarget:!1,pointerType:null,disposables:[]}),{addGlobalListener:p,removeAllGlobalListeners:j}=Da(),y=c.useCallback((w,R)=>{let P=h.current;if(l||P.didFirePressStart)return!1;let N=!0;if(P.isTriggeringEvent=!0,a){let $=new Lt("pressstart",R,w);a($),N=$.shouldStopPropagation}return n&&n(!0),P.isTriggeringEvent=!1,P.didFirePressStart=!0,u(!0),N},[l,a,n]),k=c.useCallback((w,R,P=!0)=>{let N=h.current;if(!N.didFirePressStart)return!1;N.didFirePressStart=!1,N.isTriggeringEvent=!0;let $=!0;if(r){let C=new Lt("pressend",R,w);r(C),$=C.shouldStopPropagation}if(n&&n(!1),u(!1),t&&P&&!l){let C=new Lt("press",R,w);t(C),$&&=C.shouldStopPropagation}return N.isTriggeringEvent=!1,$},[l,r,n,t]),S=ns(k),E=c.useCallback((w,R)=>{let P=h.current;if(l)return!1;if(o){P.isTriggeringEvent=!0;let N=new Lt("pressup",R,w);return o(N),P.isTriggeringEvent=!1,N.shouldStopPropagation}return!0},[l,o]),A=ns(E),O=c.useCallback(w=>{let R=h.current;if(R.isPressed&&R.target){R.didFirePressStart&&R.pointerType!=null&&k(Fe(R.target,w),R.pointerType,!1),R.isPressed=!1,R.isOverTarget=!1,R.activePointerId=null,R.pointerType=null,j(),v||un(R.target);for(let P of R.disposables)P();R.disposables=[]}},[v,j,k]),F=ns(O);c.useEffect(()=>{l&&h.current.isPressed&&F({currentTarget:h.current.target,shiftKey:!1,ctrlKey:!1,metaKey:!1,altKey:!1})},[l]);let L=c.useCallback(w=>{g&&O(w)},[g,O]),z=c.useCallback(w=>{l||i?.(w)},[l,i]),I=c.useCallback((w,R)=>{if(!l&&i){let P=new MouseEvent("click",w);jl(P,R),i(kl(P))}},[l,i]),_=c.useMemo(()=>{let w=h.current,R={onKeyDown(N){if(rs(N.nativeEvent,N.currentTarget)&&xe(N.currentTarget,ee(N))){gn(ee(N),N.key)&&N.preventDefault();let $=!0;!w.isPressed&&!N.repeat&&(w.target=N.currentTarget,w.isPressed=!0,w.pointerType="keyboard",$=y(N,"keyboard"));let C=N.currentTarget,B=U=>{rs(U,C)&&!U.repeat&&xe(C,ee(U))&&w.target&&A(Fe(w.target,U),"keyboard")};p(Ee(N.currentTarget),"keyup",La(B,P),!0),$&&N.stopPropagation(),N.metaKey&&Ft()&&w.metaKeyEvents?.set(N.key,N.nativeEvent)}else N.key==="Meta"&&(w.metaKeyEvents=new Map)},onClick(N){if(!(N&&!xe(N.currentTarget,ee(N)))&&N&&N.button===0&&!w.isTriggeringEvent&&!bt.isOpening){let $=!0;if(l&&N.preventDefault(),!w.ignoreEmulatedMouseEvents&&!w.isPressed&&(w.pointerType==="virtual"||Il(N.nativeEvent))){let C=y(N,"virtual"),B=A(N,"virtual"),U=S(N,"virtual");z(N),$=C&&B&&U}else if(w.isPressed&&w.pointerType!=="keyboard"){let C=w.pointerType||N.nativeEvent.pointerType||"virtual",B=A(Fe(N.currentTarget,N),C),U=S(Fe(N.currentTarget,N),C,!0);$=B&&U,w.isOverTarget=!1,z(N),F(N)}w.ignoreEmulatedMouseEvents=!1,$&&N.stopPropagation()}}},P=N=>{if(w.isPressed&&w.target&&rs(N,w.target)){gn(ee(N),N.key)&&N.preventDefault();let $=ee(N),C=xe(w.target,$);S(Fe(w.target,N),"keyboard",C),C&&I(N,w.target),j(),N.key!=="Enter"&&Ps(w.target)&&xe(w.target,$)&&!N[mn]&&(N[mn]=!0,bt(w.target,N,!1)),w.isPressed=!1,w.metaKeyEvents?.delete(N.key)}else if(N.key==="Meta"&&w.metaKeyEvents?.size){let $=w.metaKeyEvents;w.metaKeyEvents=void 0;for(let C of $.values())w.target?.dispatchEvent(new KeyboardEvent("keyup",C))}};if(typeof PointerEvent<"u"){R.onPointerDown=C=>{if(C.button!==0||!xe(C.currentTarget,ee(C)))return;if(El(C.nativeEvent)){w.pointerType="virtual";return}w.pointerType=C.pointerType;let B=!0;if(!w.isPressed){w.isPressed=!0,w.isOverTarget=!0,w.activePointerId=C.pointerId,w.target=C.currentTarget,v||Dl(w.target),B=y(C,w.pointerType);let U=ee(C);"releasePointerCapture"in U&&("hasPointerCapture"in U?U.hasPointerCapture(C.pointerId)&&U.releasePointerCapture(C.pointerId):U.releasePointerCapture(C.pointerId)),p(Ee(C.currentTarget),"pointerup",N,!1),p(Ee(C.currentTarget),"pointercancel",$,!1)}B&&C.stopPropagation()},R.onMouseDown=C=>{if(xe(C.currentTarget,ee(C))&&C.button===0){if(x){let B=wl(C.target);B&&w.disposables.push(B)}C.stopPropagation()}},R.onPointerUp=C=>{!xe(C.currentTarget,ee(C))||w.pointerType==="virtual"||C.button===0&&!w.isPressed&&A(C,w.pointerType||C.pointerType)},R.onPointerEnter=C=>{C.pointerId===w.activePointerId&&w.target&&!w.isOverTarget&&w.pointerType!=null&&(w.isOverTarget=!0,y(Fe(w.target,C),w.pointerType))},R.onPointerLeave=C=>{C.pointerId===w.activePointerId&&w.target&&w.isOverTarget&&w.pointerType!=null&&(w.isOverTarget=!1,S(Fe(w.target,C),w.pointerType,!1),L(C))};let N=C=>{if(C.pointerId===w.activePointerId&&w.isPressed&&C.button===0&&w.target){if(xe(w.target,ee(C))&&w.pointerType!=null){let B=!1,U=setTimeout(()=>{w.isPressed&&w.target instanceof HTMLElement&&(B?F(C):(xt(w.target),w.target.click()))},80);p(C.currentTarget,"click",()=>B=!0,!0),w.disposables.push(()=>clearTimeout(U))}else F(C);w.isOverTarget=!1}},$=C=>{F(C)};R.onDragStart=C=>{xe(C.currentTarget,ee(C))&&F(C)}}return R},[p,l,x,j,v,L,y,z,I]);return c.useEffect(()=>{if(!m)return;const w=Ee(m.current);if(!w||!w.head||w.getElementById(pn))return;const R=w.createElement("style");R.id=pn;let P=Fl(w);P&&(R.nonce=P),R.textContent=`
|
|
1
|
+
import{aq as Ns,cV as Br,r as c,e as se,j as s,W as ze,Y as Cs,az as Ze,t as M,ap as Yn,a5 as Kr,f as K,X as _e,a1 as bt,T as Ue,cW as Xn,aK as Hr,U as qr,b4 as Qr,g as we,cX as Ss,V as et,cY as Gr,cZ as Wr,c_ as Vr,c$ as Yr,d0 as Xr,d1 as Jn,d2 as Zn,bj as Jr,d3 as Zr,d4 as ea,bA as Ts,d5 as eo,d6 as ta,aG as to,L as sa,Z as so,d7 as no,B as na,d8 as ao,d9 as ro,da as oo,db as io,dc as lo,w as co,c as J,d as tt,G as vt,dd as uo,de as fo,df as Ut,h as le,ar as ye,i as me,M as st,cy as Me,dg as Bt,b8 as mo,dh as Ae,di as po,dj as en,dk as ho,dl as go,dm as xo,b1 as bo,ci as vo,dn as yo,cN as Is,cO as aa,s as ko,dp as jo,bh as Es,bk as ra,be as oa,bl as ia,bm as la,E as Rs,bn as wo,aW as ca,aX as da,cD as No,dq as Co,a9 as ua,cC as So,dr as To,ds as Io,dt as Eo,du as Ro,dv as fa,dw as Mo,cS as Ao,bL as Ms,dx as $o,dy as tn,dz as Lo,dA as ns,dB as Po,bK as Do,P as Fo,q as Oo,af as ma,F as zo,cR as sn,bu as _o,dC as Uo,dD as Bo,at as nn,cQ as Ko,dE as Ho,ag as qo,cg as Qo,ch as Go,dF as Wo,C as Kt,dG as Vo,dH as Yo,dI as an,dJ as Xo,dK as Jo,dL as Zo,dM as ei,v as pa,cU as Te,dN as As,dO as ti,cj as si,ce as ni,dP as ai,dQ as rn,a0 as ri,ck as oi}from"./index-B0wzSmGb.js";import{u as ii,L as li,a as ci}from"./roving-focus-DJ0vLUUT.js";import{m as di,S as ha,i as Ne,t as Ce,r as yt,n as kt,o as jt,p as wt,q as ui,h as fi,d as mi,D as pi,b as At,a as hi,v as gi,w as xi,x as dt,e as bi,y as vi,z as yi,u as ki}from"./search-token-index-WY58cnXj.js";import{K as ji}from"./kbd-BmPFbHYP.js";import{P as ga,f as wi,U as Ni,a as Ci,E as Si,s as Ti}from"./attachment-file-q_P2hWEi.js";import{M as xa}from"./mail-g7BjWhWo.js";import{A as pt}from"./avatar-okIKQAx5.js";import{M as Ii,a as Ei,b as ba,c as Ri,s as va,d as ya,e as Mi,f as Ai,S as on,g as ka,u as ja,p as $i,r as Li}from"./useSearchTokenContext-_qJSz3Gm.js";import{C as Pi,D as Ye,u as Di}from"./index-CfOD5pXy.js";import{E as wa}from"./EmptyState-D_iSHWz0.js";import{E as Oe}from"./ErrorState-DB1vBo3T.js";import{a as Na,c as nt,b as Fi,g as Oi,e as Be,h as zi,d as _i}from"./format-BEIHnSOd.js";import{D as Ui}from"./download-BfNthT8Z.js";import{g as Bi}from"./useMessageBodyContent-CdDORwnR.js";import{C as Ki}from"./calendar-event-chip-B49Z5bwy.js";import{c as Hi}from"./calendar-color-BGz9Fk1b.js";import{R as qi,M as Qi}from"./attendee-row-DFD-DxDJ.js";import{C as Ca}from"./clock-WUvQZEVq.js";import{M as Gi,G as Wi}from"./map-pin-Bv131hG_.js";import{B as Vi,b as Yi,u as Xi,i as Ji}from"./useLayoutTier-CMt4p-F2.js";import{S as Zi,C as Sa}from"./shield-check-CHTkuhvC.js";import{u as Ta}from"./useDebouncedValue-D1eSm63M.js";import{h as ln,u as el,a as tl,i as sl,n as nl,o as al,j as rl,k as ol,S as il}from"./useFilters-B1r7ksMZ.js";import{u as $s}from"./useQueries-C1M2fuSM.js";import{C as $t}from"./confirm-dialog-DbqSzQVP.js";import{r as ll,a as cl}from"./search-scope-B5-OK3Cq.js";import{M as dl}from"./menu-gCazkZlW.js";function ht(e){if(ul())e.focus({preventScroll:!0});else{let t=fl(e);e.focus(),ml(t)}}let Lt=null;function ul(){if(Lt==null){Lt=!1;try{document.createElement("div").focus({get preventScroll(){return Lt=!0,!0}})}catch{}}return Lt}function fl(e){let t=e.parentNode,n=[],a=document.scrollingElement||document.documentElement;for(;t instanceof HTMLElement&&t!==a;)(t.offsetHeight<t.scrollHeight||t.offsetWidth<t.scrollWidth)&&n.push({element:t,scrollTop:t.scrollTop,scrollLeft:t.scrollLeft}),t=t.parentNode;return a instanceof HTMLElement&&n.push({element:a,scrollTop:a.scrollTop,scrollLeft:a.scrollLeft}),n}function ml(e){for(let{element:t,scrollTop:n,scrollLeft:a}of e)t.scrollTop=n,t.scrollLeft=a}const Ee=e=>e?.ownerDocument??document,Re=e=>e&&"window"in e&&e.window===e?e:Ee(e).defaultView||window;function pl(e){return e!==null&&typeof e=="object"&&"nodeType"in e&&typeof e.nodeType=="number"}function hl(e){return pl(e)&&e.nodeType===Node.DOCUMENT_FRAGMENT_NODE&&"host"in e}let gl=!1;function Ia(){return gl}function be(e,t){if(!Ia())return t&&e?e.contains(t):!1;if(!e||!t)return!1;let n=t;for(;n!==null;){if(n===e)return!0;n.tagName==="SLOT"&&n.assignedSlot?n=n.assignedSlot.parentNode:hl(n)?n=n.host:n=n.parentNode}return!1}function ee(e){if(Ia()&&e.target instanceof Element&&e.target.shadowRoot){if("composedPath"in e)return e.composedPath()[0]??null;if("composedPath"in e.nativeEvent)return e.nativeEvent.composedPath()[0]??null}return e.target}const xl=typeof Element<"u"&&"checkVisibility"in Element.prototype;function bl(e){const t=Re(e);if(!(e instanceof t.HTMLElement)&&!(e instanceof t.SVGElement))return!1;let{display:n,visibility:a}=e.style,r=n!=="none"&&a!=="hidden"&&a!=="collapse";if(r){const{getComputedStyle:o}=Re(e);let{display:i,visibility:l}=o(e);r=i!=="none"&&l!=="hidden"&&l!=="collapse"}return r}function vl(e,t){return!e.hasAttribute("hidden")&&!e.hasAttribute("data-react-aria-prevent-focus")&&(e.nodeName==="DETAILS"&&t&&t.nodeName!=="SUMMARY"?e.hasAttribute("open"):!0)}function Ea(e,t){return xl?e.checkVisibility({visibilityProperty:!0})&&!e.closest("[data-react-aria-prevent-focus]"):e.nodeName!=="#comment"&&bl(e)&&vl(e,t)&&(!e.parentElement||Ea(e.parentElement,e))}const Ra=["input:not([disabled]):not([type=hidden])","select:not([disabled])","textarea:not([disabled])","button:not([disabled])","a[href]","area[href]","summary","iframe","object","embed","audio[controls]","video[controls]",'[contenteditable]:not([contenteditable^="false"])',"permission"],yl=Ra.join(":not([hidden]),")+",[tabindex]:not([disabled]):not([hidden])";Ra.push('[tabindex]:not([tabindex="-1"]):not([disabled])');function kl(e,t){return e.matches(yl)&&!jl(e)&&(t?.skipVisibilityCheck||Ea(e))}function jl(e){let t=e;for(;t!=null;){if(t instanceof Re(t).HTMLElement&&t.inert)return!0;t=t.parentElement}return!1}const Ls=typeof document<"u"?Ns.useLayoutEffect:()=>{};function wl(e){let t=e;return t.nativeEvent=e,t.isDefaultPrevented=()=>t.defaultPrevented,t.isPropagationStopped=()=>t.cancelBubble,t.persist=()=>{},t}function Nl(e,t){Object.defineProperty(e,"target",{value:t}),Object.defineProperty(e,"currentTarget",{value:t})}function Cl(e){for(;e&&!kl(e,{skipVisibilityCheck:!0});)e=e.parentElement;let t=Re(e),n=t.document.activeElement;if(!n||n===e)return;let a=!1,r=g=>{(ee(g)===n||a)&&g.stopImmediatePropagation()},o=g=>{(ee(g)===n||a)&&(g.stopImmediatePropagation(),!e&&!a&&(a=!0,ht(n),d()))},i=g=>{(ee(g)===e||a)&&g.stopImmediatePropagation()},l=g=>{(ee(g)===e||a)&&(g.stopImmediatePropagation(),a||(a=!0,ht(n),d()))};t.addEventListener("blur",r,!0),t.addEventListener("focusout",o,!0),t.addEventListener("focusin",l,!0),t.addEventListener("focus",i,!0);let d=()=>{cancelAnimationFrame(x),t.removeEventListener("blur",r,!0),t.removeEventListener("focusout",o,!0),t.removeEventListener("focusin",l,!0),t.removeEventListener("focus",i,!0),a=!1},x=requestAnimationFrame(d);return d}function Ht(e){if(typeof window>"u"||window.navigator==null)return!1;let t=window.navigator.userAgentData?.brands;return Array.isArray(t)&&t.some(n=>e.test(n.brand))||e.test(window.navigator.userAgent)}function Ps(e){return typeof window<"u"&&window.navigator!=null?e.test(window.navigator.userAgentData?.platform||window.navigator.platform):!1}function $e(e){let t=null;return()=>(t==null&&(t=e()),t)}const Ot=$e(function(){return Ps(/^Mac/i)}),Sl=$e(function(){return Ps(/^iPhone/i)}),Ma=$e(function(){return Ps(/^iPad/i)||Ot()&&navigator.maxTouchPoints>1}),Aa=$e(function(){return Sl()||Ma()}),Tl=$e(function(){return Ht(/AppleWebKit/i)&&!Il()}),Il=$e(function(){return Ht(/Chrome/i)}),$a=$e(function(){return Ht(/Android/i)}),El=$e(function(){return Ht(/Firefox/i)});function Rl(e){return e.pointerType===""&&e.isTrusted?!0:$a()&&e.pointerType?e.type==="click"&&e.buttons===1:e.detail===0&&!e.pointerType}function Ml(e){return!$a()&&e.width===0&&e.height===0||e.width===1&&e.height===1&&e.pressure===0&&e.detail===0&&e.pointerType==="mouse"}function gt(e,t,n=!0){let{metaKey:a,ctrlKey:r,altKey:o,shiftKey:i}=t;El()&&window.event?.type?.startsWith("key")&&e.target==="_blank"&&(Ot()?a=!0:r=!0);let l=Tl()&&Ot()&&!Ma()?new KeyboardEvent("keydown",{keyIdentifier:"Enter",metaKey:a,ctrlKey:r,altKey:o,shiftKey:i}):new MouseEvent("click",{metaKey:a,ctrlKey:r,altKey:o,shiftKey:i,detail:1,bubbles:!0,cancelable:!0});gt.isOpening=n,ht(e),e.dispatchEvent(l),gt.isOpening=!1}gt.isOpening=!1;let Ie=new Map,ps=new Set;function cn(){if(typeof window>"u")return;function e(a){return"propertyName"in a}let t=a=>{let r=ee(a);if(!e(a)||!r)return;let o=Ie.get(r);o||(o=new Set,Ie.set(r,o),r.addEventListener("transitioncancel",n,{once:!0})),o.add(a.propertyName)},n=a=>{let r=ee(a);if(!e(a)||!r)return;let o=Ie.get(r);if(o&&(o.delete(a.propertyName),o.size===0&&(r.removeEventListener("transitioncancel",n),Ie.delete(r)),Ie.size===0)){for(let i of ps)i();ps.clear()}};document.body.addEventListener("transitionrun",t),document.body.addEventListener("transitionend",n)}typeof document<"u"&&(document.readyState!=="loading"?cn():document.addEventListener("DOMContentLoaded",cn));function Al(){for(const[e]of Ie)"isConnected"in e&&!e.isConnected&&Ie.delete(e)}function $l(e){requestAnimationFrame(()=>{Al(),Ie.size===0?e():ps.add(e)})}function La(...e){return(...t)=>{for(let n of e)typeof n=="function"&&n(...t)}}let hs=new Map;typeof FinalizationRegistry<"u"&&new FinalizationRegistry(e=>{hs.delete(e)});function Ll(e,t){if(e===t)return e;let n=hs.get(e);if(n)return n.forEach(r=>r.current=t),t;let a=hs.get(t);return a?(a.forEach(r=>r.current=e),e):t}function Pl(...e){return e.length===1&&e[0]?e[0]:t=>{let n=!1;const a=e.map(r=>{const o=dn(r,t);return n||=typeof o=="function",o});if(n)return()=>{a.forEach((r,o)=>{typeof r=="function"?r():dn(e[o],null)})}}}function dn(e,t){if(typeof e=="function")return e(t);e!=null&&(e.current=t)}function Nt(...e){let t={...e[0]};for(let n=1;n<e.length;n++){let a=e[n];for(let r in a){let o=t[r],i=a[r];typeof o=="function"&&typeof i=="function"&&r[0]==="o"&&r[1]==="n"&&r.charCodeAt(2)>=65&&r.charCodeAt(2)<=90?t[r]=La(o,i):(r==="className"||r==="UNSAFE_className")&&typeof o=="string"&&typeof i=="string"?t[r]=Br(o,i):r==="id"&&o&&i?t.id=Ll(o,i):r==="ref"&&o&&i?t.ref=Pl(o,i):t[r]=i!==void 0?i:o}}return t}function Dl(e,t){Ls(()=>{if(e&&e.ref&&t)return e.ref.current=t.current,()=>{e.ref&&(e.ref.current=null)}})}const Fl=Ns.useInsertionEffect??Ls;function as(e){const t=c.useRef(null);return Fl(()=>{t.current=e},[e]),c.useCallback((...n)=>{const a=t.current;return a?.(...n)},[])}let Xe="default",gs="",Ft=new WeakMap;function Ol(e){if(Aa()){if(Xe==="default"){const t=Ee(e);gs=t.documentElement.style.webkitUserSelect,t.documentElement.style.webkitUserSelect="none"}Xe="disabled"}else if(e instanceof HTMLElement||e instanceof SVGElement){let t="userSelect"in e.style?"userSelect":"webkitUserSelect";Ft.set(e,e.style[t]),e.style[t]="none"}}function un(e){if(Aa()){if(Xe!=="disabled")return;Xe="restoring",setTimeout(()=>{$l(()=>{if(Xe==="restoring"){const t=Ee(e);t.documentElement.style.webkitUserSelect==="none"&&(t.documentElement.style.webkitUserSelect=gs||""),gs="",Xe="default"}})},300)}else if((e instanceof HTMLElement||e instanceof SVGElement)&&e&&Ft.has(e)){let t=Ft.get(e),n="userSelect"in e.style?"userSelect":"webkitUserSelect";e.style[n]==="none"&&(e.style[n]=t),e.getAttribute("style")===""&&e.removeAttribute("style"),Ft.delete(e)}}function fn(e){return e?.defaultView?.__webpack_nonce__||globalThis.__webpack_nonce__||void 0}let rs=new WeakMap;function zl(e){let t=e??(typeof document<"u"?document:void 0);if(!t)return fn(t);if(rs.has(t))return rs.get(t);let n=t.querySelector('meta[property="csp-nonce"]'),a=n&&n instanceof Re(n).HTMLMetaElement&&(n.nonce||n.content)||fn(t)||void 0;return a!==void 0&&rs.set(t,a),a}const Pa=Ns.createContext({register:()=>{}});Pa.displayName="PressResponderContext";function Da(){let e=c.useRef(new Map),t=c.useCallback((r,o,i,l)=>{let d=l?.once?(...x)=>{e.current.delete(i),i(...x)}:i;e.current.set(i,{type:o,eventTarget:r,fn:d,options:l}),r.addEventListener(o,d,l)},[]),n=c.useCallback((r,o,i,l)=>{let d=e.current.get(i)?.fn||i;r.removeEventListener(o,d,l),e.current.delete(i)},[]),a=c.useCallback(()=>{e.current.forEach((r,o)=>{n(r.eventTarget,r.type,o,r.options)})},[n]);return c.useEffect(()=>a,[a]),{addGlobalListener:t,removeGlobalListener:n,removeAllGlobalListeners:a}}function _l(e){let t=c.useContext(Pa);if(t){let{register:n,ref:a,...r}=t;e=Nt(r,e),n()}return Dl(t,e.ref),e}class Pt{#e;constructor(t,n,a,r){this.#e=!0;const i=(r?.target??a.currentTarget)?.getBoundingClientRect();let l,d=0,x,g=null;a.clientX!=null&&a.clientY!=null&&(x=a.clientX,g=a.clientY),i&&(x!=null&&g!=null?(l=x-i.left,d=g-i.top):(l=i.width/2,d=i.height/2)),this.type=t,this.pointerType=n,this.target=a.currentTarget,this.shiftKey=a.shiftKey,this.metaKey=a.metaKey,this.ctrlKey=a.ctrlKey,this.altKey=a.altKey,this.x=l,this.y=d,this.key=a.key}continuePropagation(){this.#e=!1}get shouldStopPropagation(){return this.#e}}const mn=Symbol("linkClicked"),pn="react-aria-pressable-style",hn="data-react-aria-pressable";function Ul(e){let{onPress:t,onPressChange:n,onPressStart:a,onPressEnd:r,onPressUp:o,onClick:i,isDisabled:l,isPressed:d,preventFocusOnPress:x,shouldCancelOnPointerExit:g,allowTextSelectionOnPress:v,ref:m,...b}=_l(e),[f,u]=c.useState(!1),h=c.useRef({isPressed:!1,ignoreEmulatedMouseEvents:!1,didFirePressStart:!1,isTriggeringEvent:!1,activePointerId:null,target:null,isOverTarget:!1,pointerType:null,disposables:[]}),{addGlobalListener:p,removeAllGlobalListeners:j}=Da(),y=c.useCallback((w,R)=>{let P=h.current;if(l||P.didFirePressStart)return!1;let N=!0;if(P.isTriggeringEvent=!0,a){let $=new Pt("pressstart",R,w);a($),N=$.shouldStopPropagation}return n&&n(!0),P.isTriggeringEvent=!1,P.didFirePressStart=!0,u(!0),N},[l,a,n]),k=c.useCallback((w,R,P=!0)=>{let N=h.current;if(!N.didFirePressStart)return!1;N.didFirePressStart=!1,N.isTriggeringEvent=!0;let $=!0;if(r){let C=new Pt("pressend",R,w);r(C),$=C.shouldStopPropagation}if(n&&n(!1),u(!1),t&&P&&!l){let C=new Pt("press",R,w);t(C),$&&=C.shouldStopPropagation}return N.isTriggeringEvent=!1,$},[l,r,n,t]),S=as(k),E=c.useCallback((w,R)=>{let P=h.current;if(l)return!1;if(o){P.isTriggeringEvent=!0;let N=new Pt("pressup",R,w);return o(N),P.isTriggeringEvent=!1,N.shouldStopPropagation}return!0},[l,o]),A=as(E),O=c.useCallback(w=>{let R=h.current;if(R.isPressed&&R.target){R.didFirePressStart&&R.pointerType!=null&&k(De(R.target,w),R.pointerType,!1),R.isPressed=!1,R.isOverTarget=!1,R.activePointerId=null,R.pointerType=null,j(),v||un(R.target);for(let P of R.disposables)P();R.disposables=[]}},[v,j,k]),F=as(O);c.useEffect(()=>{l&&h.current.isPressed&&F({currentTarget:h.current.target,shiftKey:!1,ctrlKey:!1,metaKey:!1,altKey:!1})},[l]);let L=c.useCallback(w=>{g&&O(w)},[g,O]),z=c.useCallback(w=>{l||i?.(w)},[l,i]),I=c.useCallback((w,R)=>{if(!l&&i){let P=new MouseEvent("click",w);Nl(P,R),i(wl(P))}},[l,i]),_=c.useMemo(()=>{let w=h.current,R={onKeyDown(N){if(os(N.nativeEvent,N.currentTarget)&&be(N.currentTarget,ee(N))){gn(ee(N),N.key)&&N.preventDefault();let $=!0;!w.isPressed&&!N.repeat&&(w.target=N.currentTarget,w.isPressed=!0,w.pointerType="keyboard",$=y(N,"keyboard"));let C=N.currentTarget,B=U=>{os(U,C)&&!U.repeat&&be(C,ee(U))&&w.target&&A(De(w.target,U),"keyboard")};p(Ee(N.currentTarget),"keyup",La(B,P),!0),$&&N.stopPropagation(),N.metaKey&&Ot()&&w.metaKeyEvents?.set(N.key,N.nativeEvent)}else N.key==="Meta"&&(w.metaKeyEvents=new Map)},onClick(N){if(!(N&&!be(N.currentTarget,ee(N)))&&N&&N.button===0&&!w.isTriggeringEvent&&!gt.isOpening){let $=!0;if(l&&N.preventDefault(),!w.ignoreEmulatedMouseEvents&&!w.isPressed&&(w.pointerType==="virtual"||Rl(N.nativeEvent))){let C=y(N,"virtual"),B=A(N,"virtual"),U=S(N,"virtual");z(N),$=C&&B&&U}else if(w.isPressed&&w.pointerType!=="keyboard"){let C=w.pointerType||N.nativeEvent.pointerType||"virtual",B=A(De(N.currentTarget,N),C),U=S(De(N.currentTarget,N),C,!0);$=B&&U,w.isOverTarget=!1,z(N),F(N)}w.ignoreEmulatedMouseEvents=!1,$&&N.stopPropagation()}}},P=N=>{if(w.isPressed&&w.target&&os(N,w.target)){gn(ee(N),N.key)&&N.preventDefault();let $=ee(N),C=be(w.target,$);S(De(w.target,N),"keyboard",C),C&&I(N,w.target),j(),N.key!=="Enter"&&Ds(w.target)&&be(w.target,$)&&!N[mn]&&(N[mn]=!0,gt(w.target,N,!1)),w.isPressed=!1,w.metaKeyEvents?.delete(N.key)}else if(N.key==="Meta"&&w.metaKeyEvents?.size){let $=w.metaKeyEvents;w.metaKeyEvents=void 0;for(let C of $.values())w.target?.dispatchEvent(new KeyboardEvent("keyup",C))}};if(typeof PointerEvent<"u"){R.onPointerDown=C=>{if(C.button!==0||!be(C.currentTarget,ee(C)))return;if(Ml(C.nativeEvent)){w.pointerType="virtual";return}w.pointerType=C.pointerType;let B=!0;if(!w.isPressed){w.isPressed=!0,w.isOverTarget=!0,w.activePointerId=C.pointerId,w.target=C.currentTarget,v||Ol(w.target),B=y(C,w.pointerType);let U=ee(C);"releasePointerCapture"in U&&("hasPointerCapture"in U?U.hasPointerCapture(C.pointerId)&&U.releasePointerCapture(C.pointerId):U.releasePointerCapture(C.pointerId)),p(Ee(C.currentTarget),"pointerup",N,!1),p(Ee(C.currentTarget),"pointercancel",$,!1)}B&&C.stopPropagation()},R.onMouseDown=C=>{if(be(C.currentTarget,ee(C))&&C.button===0){if(x){let B=Cl(C.target);B&&w.disposables.push(B)}C.stopPropagation()}},R.onPointerUp=C=>{!be(C.currentTarget,ee(C))||w.pointerType==="virtual"||C.button===0&&!w.isPressed&&A(C,w.pointerType||C.pointerType)},R.onPointerEnter=C=>{C.pointerId===w.activePointerId&&w.target&&!w.isOverTarget&&w.pointerType!=null&&(w.isOverTarget=!0,y(De(w.target,C),w.pointerType))},R.onPointerLeave=C=>{C.pointerId===w.activePointerId&&w.target&&w.isOverTarget&&w.pointerType!=null&&(w.isOverTarget=!1,S(De(w.target,C),w.pointerType,!1),L(C))};let N=C=>{if(C.pointerId===w.activePointerId&&w.isPressed&&C.button===0&&w.target){if(be(w.target,ee(C))&&w.pointerType!=null){let B=!1,U=setTimeout(()=>{w.isPressed&&w.target instanceof HTMLElement&&(B?F(C):(ht(w.target),w.target.click()))},80);p(C.currentTarget,"click",()=>B=!0,!0),w.disposables.push(()=>clearTimeout(U))}else F(C);w.isOverTarget=!1}},$=C=>{F(C)};R.onDragStart=C=>{be(C.currentTarget,ee(C))&&F(C)}}return R},[p,l,x,j,v,L,y,z,I]);return c.useEffect(()=>{if(!m)return;const w=Ee(m.current);if(!w||!w.head||w.getElementById(pn))return;const R=w.createElement("style");R.id=pn;let P=zl(w);P&&(R.nonce=P),R.textContent=`
|
|
2
2
|
@layer {
|
|
3
3
|
[${hn}] {
|
|
4
4
|
touch-action: pan-x pan-y pinch-zoom;
|
|
5
5
|
}
|
|
6
6
|
}
|
|
7
|
-
`.trim(),w.head.prepend(R)},[m]),c.useEffect(()=>{let w=h.current;return()=>{v||un(w.target??void 0);for(let R of w.disposables)R();w.disposables=[]}},[v]),{isPressed:d||f,pressProps:St(b,_,{[hn]:!0})}}function Ps(e){return e.tagName==="A"&&e.hasAttribute("href")}function rs(e,t){const{key:n,code:a}=e,r=t,o=r.getAttribute("role");return(n==="Enter"||n===" "||n==="Spacebar"||a==="Space")&&!(r instanceof Re(r).HTMLInputElement&&!Fa(r,n)||r instanceof Re(r).HTMLTextAreaElement||r.isContentEditable)&&!((o==="link"||!o&&Ps(r))&&n!=="Enter")}function Fe(e,t){let n=t.clientX,a=t.clientY;return{currentTarget:e,shiftKey:t.shiftKey,ctrlKey:t.ctrlKey,metaKey:t.metaKey,altKey:t.altKey,clientX:n,clientY:a,key:t.key}}function _l(e){return e instanceof HTMLInputElement?!1:e instanceof HTMLButtonElement?e.type!=="submit"&&e.type!=="reset":!Ps(e)}function gn(e,t){return e instanceof HTMLInputElement?!Fa(e,t):_l(e)}const Ul=new Set(["checkbox","radio","range","color","file","image","button","submit","reset"]);function Fa(e,t){return e.type==="checkbox"||e.type==="radio"?t===" ":Ul.has(e.type)}let Bl=0;const os=new Map;function Kl(e){let[t,n]=c.useState();return $s(()=>{if(!e)return;let a=os.get(e);if(a)n(a.element.id);else{let r=`react-aria-description-${Bl++}`;n(r);let o=document.createElement("div");o.id=r,o.style.display="none",o.textContent=e,document.body.appendChild(o),a={refCount:0,element:o},os.set(e,a)}return a.refCount++,()=>{a&&--a.refCount===0&&(a.element.remove(),os.delete(e))}},[e]),{"aria-describedby":e?t:void 0}}const Hl=500;function ql(e){let{isDisabled:t,onLongPressStart:n,onLongPressEnd:a,onLongPress:r,threshold:o=Hl,accessibilityDescription:i}=e;const l=c.useRef(void 0);let{addGlobalListener:d,removeGlobalListener:x}=Da(),{pressProps:g}=zl({isDisabled:t,onPressStart(m){if(m.continuePropagation(),(m.pointerType==="mouse"||m.pointerType==="touch")&&(n&&n({...m,type:"longpressstart"}),l.current=setTimeout(()=>{m.target.dispatchEvent(new PointerEvent("pointercancel",{bubbles:!0})),Ee(m.target).activeElement!==m.target&&xt(m.target),r&&r({...m,type:"longpress"}),l.current=void 0},o),m.pointerType==="touch")){let b=u=>{u.preventDefault()},f=Re(m.target);d(m.target,"contextmenu",b,{once:!0}),d(f,"pointerup",()=>{setTimeout(()=>{x(m.target,"contextmenu",b)},30)},{once:!0})}},onPressEnd(m){l.current&&clearTimeout(l.current),a&&(m.pointerType==="mouse"||m.pointerType==="touch")&&a({...m,type:"longpressend"})}}),v=Kl(r&&!t?i:void 0);return{longPressProps:St(g,v)}}const Ht=se("BadgeCheck",[["path",{d:"M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z",key:"3c2336"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]]);const Ql=se("Calendar",[["path",{d:"M8 2v4",key:"1cmpym"}],["path",{d:"M16 2v4",key:"4m81vk"}],["rect",{width:"18",height:"18",x:"3",y:"4",rx:"2",key:"1hopcy"}],["path",{d:"M3 10h18",key:"8toen8"}]]);const Gl=se("CodeXml",[["path",{d:"m18 16 4-4-4-4",key:"1inbqp"}],["path",{d:"m6 8-4 4 4 4",key:"15zrgr"}],["path",{d:"m14.5 4-5 16",key:"e7oirm"}]]);const Oa=se("Code",[["polyline",{points:"16 18 22 12 16 6",key:"z7tu5w"}],["polyline",{points:"8 6 2 12 8 18",key:"1eg1df"}]]);const za=se("Forward",[["polyline",{points:"15 17 20 12 15 7",key:"1w3sku"}],["path",{d:"M4 18v-2a4 4 0 0 1 4-4h12",key:"jmiej9"}]]);const Wl=se("History",[["path",{d:"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"1357e3"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}],["path",{d:"M12 7v5l4 2",key:"1fdv2h"}]]);const Vl=se("MailCheck",[["path",{d:"M22 13V6a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v12c0 1.1.9 2 2 2h8",key:"12jkf8"}],["path",{d:"m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7",key:"1ocrg3"}],["path",{d:"m16 19 2 2 4-4",key:"1b14m6"}]]);const Ds=se("MailOpen",[["path",{d:"M21.2 8.4c.5.38.8.97.8 1.6v10a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V10a2 2 0 0 1 .8-1.6l8-6a2 2 0 0 1 2.4 0l8 6Z",key:"1jhwl8"}],["path",{d:"m22 10-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 10",key:"1qfld7"}]]);const Yl=se("MailX",[["path",{d:"M22 13V6a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v12c0 1.1.9 2 2 2h9",key:"1j9vog"}],["path",{d:"m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7",key:"1ocrg3"}],["path",{d:"m17 17 4 4",key:"1b3523"}],["path",{d:"m21 17-4 4",key:"uinynz"}]]);const qt=se("Paperclip",[["path",{d:"M13.234 20.252 21 12.3",key:"1cbrk9"}],["path",{d:"m16 6-8.414 8.586a2 2 0 0 0 0 2.828 2 2 0 0 0 2.828 0l8.414-8.586a4 4 0 0 0 0-5.656 4 4 0 0 0-5.656 0l-8.415 8.585a6 6 0 1 0 8.486 8.486",key:"1pkts6"}]]);const _a=se("ReplyAll",[["polyline",{points:"7 17 2 12 7 7",key:"t83bqg"}],["polyline",{points:"12 17 7 12 12 7",key:"1g4ajm"}],["path",{d:"M22 18v-2a4 4 0 0 0-4-4H7",key:"1fcyog"}]]);const Ua=se("Reply",[["polyline",{points:"9 17 4 12 9 7",key:"hvgpf2"}],["path",{d:"M20 18v-2a4 4 0 0 0-4-4H4",key:"5vmcpk"}]]);const rt=se("ShieldAlert",[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}],["path",{d:"M12 8v4",key:"1got3b"}],["path",{d:"M12 16h.01",key:"1drbdi"}]]);const Xl=se("ShieldQuestion",[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}],["path",{d:"M9.1 9a3 3 0 0 1 5.82 1c0 2-3 3-3 3",key:"mhlwft"}],["path",{d:"M12 17h.01",key:"p32p05"}]]);const Jl=se("ShieldX",[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}],["path",{d:"m14.5 9.5-5 5",key:"17q4r4"}],["path",{d:"m9.5 9.5 5 5",key:"18nt4w"}]]);const Zl=se("SlidersHorizontal",[["line",{x1:"21",x2:"14",y1:"4",y2:"4",key:"obuewd"}],["line",{x1:"10",x2:"3",y1:"4",y2:"4",key:"1q6298"}],["line",{x1:"21",x2:"12",y1:"12",y2:"12",key:"1iu8h1"}],["line",{x1:"8",x2:"3",y1:"12",y2:"12",key:"ntss68"}],["line",{x1:"21",x2:"16",y1:"20",y2:"20",key:"14d8ph"}],["line",{x1:"12",x2:"3",y1:"20",y2:"20",key:"m0wm8r"}],["line",{x1:"14",x2:"14",y1:"2",y2:"6",key:"14e1ph"}],["line",{x1:"8",x2:"8",y1:"10",y2:"14",key:"1i6ji0"}],["line",{x1:"16",x2:"16",y1:"18",y2:"22",key:"1lctlv"}]]);const ec=se("TextSearch",[["path",{d:"M21 6H3",key:"1jwq7v"}],["path",{d:"M10 12H3",key:"1ulcyk"}],["path",{d:"M10 18H3",key:"13769t"}],["circle",{cx:"17",cy:"15",r:"3",key:"1upz2a"}],["path",{d:"m21 19-1.9-1.9",key:"dwi7p8"}]]),tc=({address:e,showTrustedBadge:t=!1})=>{const n=t?s.jsx(Ht,{className:"inline-block size-4 ml-1 -mt-0.5 text-positive","aria-label":"Trusted sender","data-testid":"trusted-sender-badge"}):null;return e.displayName?s.jsxs("span",{children:[s.jsx("span",{className:"text-fg",children:e.displayName}),s.jsxs("span",{className:"text-fg-muted",children:[" ","<",e.normalizedEmail,">"]}),n]}):s.jsxs("span",{className:"text-fg",children:[e.normalizedEmail,n]})},sc=({label:e,addresses:t,showTrustedBadge:n=!1})=>{const[a,r]=c.useState(!1);if(t.length===0)return null;const o=t.length>3,i=l=>{const d=n&&l.flags?.trusted?.value===!0;return s.jsx(tc,{address:l,showTrustedBadge:d})};return s.jsxs("div",{className:"flex gap-2 text-sm",children:[s.jsxs("span",{className:"text-fg-muted shrink-0 w-12",children:[e,":"]}),s.jsx("div",{className:"flex-1 min-w-0",children:a?s.jsx("div",{className:"flex flex-wrap gap-1",children:t.map((l,d)=>s.jsxs("span",{children:[i(l),d<t.length-1&&", "]},d))}):s.jsx("div",{className:"truncate",children:t.map((l,d)=>s.jsxs("span",{children:[i(l),d<t.length-1&&", "]},d))})}),o&&s.jsx("button",{type:"button",onClick:l=>{l.stopPropagation(),r(!a)},className:"shrink-0 text-fg-muted hover:text-fg transition-colors","aria-label":a?"Collapse":"Expand",children:a?s.jsx(_e,{className:"h-4 w-4"}):s.jsx(Ns,{className:"h-4 w-4"})})]})};function nc({clashes:e,clearText:t="Nothing else is booked over it.",className:n}){return e.length===0?s.jsxs("p",{className:M("flex items-center gap-2 rounded-md border border-line bg-surface-sunken p-2 text-xs text-fg-muted",n),children:[s.jsx(et,{className:"size-3.5 shrink-0 text-positive","aria-hidden":!0}),t]}):s.jsxs("div",{className:M("flex items-start gap-2 rounded-md border border-danger/40 bg-danger-soft p-2",n),children:[s.jsx(Yn,{className:"mt-0.5 size-4 shrink-0 text-danger","aria-hidden":!0}),s.jsxs("div",{className:"min-w-0 flex-1",children:[s.jsx("p",{className:"text-xs font-semibold text-danger",children:e.length===1?"This clashes with something you have already agreed to.":`This clashes with ${e.length} things you have already agreed to.`}),s.jsx("ul",{className:"mt-1 flex flex-col gap-0.5",children:e.map(a=>s.jsx("li",{className:"text-xs text-fg",children:a.label},a.id))})]})]})}const ac={ics:"Attached invitation",markup:"Structured markup",pattern:"Read from the words"},rc={ics:Br,markup:Gl,pattern:ec},oc={ics:"border-positive/50 text-positive",markup:"border-accent-2/50 text-accent-2",pattern:"border-warning/50 text-warning"};function ic({method:e,className:t}){const n=rc[e];return s.jsxs("span",{className:M("inline-flex items-center gap-1 rounded-sm border px-1.5 py-0.5 text-2xs font-medium",oc[e],t),children:[s.jsx(n,{className:"size-3","aria-hidden":!0}),ac[e]]})}const lc=["accepted","tentative","declined","noReply"],cc={accepted:"coming",tentative:"maybe",declined:"not coming",noReply:"no reply"};function dc({invite:e,whenText:t,calendarName:n,color:a,clashes:r,rsvp:o,onAdd:i,onTentative:l,onDecline:d,onReopen:x,onOfferOtherTimes:g,onRemove:v,onOpenNewer:m,guests:b,touch:f,className:u}){const h=Bi(a),p=e.state==="superseded"||e.state==="cancelled",j=e.proposed.attendees,y=lc.map(k=>({state:k,count:j.filter(S=>S.rsvp===k).length})).filter(k=>k.count>0).map(k=>`${k.count} ${cc[k.state]}`).join(" · ");return s.jsxs("section",{className:M("flex flex-col gap-3 rounded-lg border border-line bg-surface-raised p-3",u),children:[s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx("span",{className:M("size-2.5 shrink-0 rounded-full",h.solid)}),s.jsxs("span",{className:"min-w-0 flex-1 truncate text-2xs uppercase tracking-wider text-fg-subtle",children:["Invitation from ",e.organizerName," · ",n]}),s.jsx(ic,{method:e.method})]}),s.jsxs("div",{className:M(p&&"opacity-60"),children:[s.jsx("h3",{className:"text-md font-semibold text-fg",children:e.proposed.title}),s.jsxs("p",{className:"mt-1 flex items-center gap-2 text-sm text-fg",children:[s.jsx(Ca,{className:"size-4 shrink-0 text-fg-subtle","aria-hidden":!0}),t]}),e.proposed.location!==""&&s.jsxs("p",{className:"mt-1 flex items-center gap-2 text-sm text-fg-muted",children:[s.jsx(qi,{className:"size-4 shrink-0 text-fg-subtle","aria-hidden":!0}),e.proposed.location]})]}),e.state==="superseded"&&s.jsxs("div",{className:"flex items-start gap-2 rounded-md border border-warning/40 bg-warning-soft p-2",children:[s.jsx(Wl,{className:"mt-0.5 size-4 shrink-0 text-warning","aria-hidden":!0}),s.jsxs("div",{className:"min-w-0 flex-1",children:[s.jsxs("p",{className:"text-xs font-semibold text-warning",children:[e.organizerName," has sent a newer version of this."]}),s.jsxs("p",{className:"mt-1 text-xs text-fg",children:["This one is revision ",e.sequence," and is out of date. Answer the newer one instead."]}),m&&s.jsx(K,{variant:"secondary",size:f?"md":"sm",onClick:m,className:M("mt-2",f&&"min-h-11"),children:"Open the newer invitation"})]})]}),e.state==="cancelled"&&s.jsxs("div",{className:"flex items-start gap-2 rounded-md border border-danger/40 bg-danger-soft p-2",children:[s.jsx(Ue,{className:"mt-0.5 size-4 shrink-0 text-danger","aria-hidden":!0}),s.jsxs("div",{className:"min-w-0 flex-1",children:[s.jsxs("p",{className:"text-xs font-semibold text-danger",children:[e.organizerName," cancelled this."]}),s.jsx("p",{className:"mt-1 text-xs text-fg",children:"It is still on your calendar. Nothing comes off it until you say so."}),v&&s.jsxs("div",{className:M("mt-2 flex gap-2",f&&"flex-wrap"),children:[s.jsx(K,{variant:"primary",size:f?"md":"sm",icon:s.jsx(yt,{className:"size-3.5"}),onClick:v,className:M(f&&"min-h-11 flex-1"),children:"Remove from calendar"}),s.jsx(K,{variant:"secondary",size:f?"md":"sm",onClick:x,className:M(f&&"min-h-11 flex-1"),children:"Keep it"})]})]})]}),!p&&s.jsx(nc,{clashes:r}),b??s.jsxs("p",{className:"text-2xs uppercase tracking-wider text-fg-subtle",children:[j.length," guests",y===""?"":` · ${y}`]}),!p&&(o==="noReply"?s.jsxs("div",{className:"flex flex-col gap-2 border-t border-line pt-3",children:[s.jsxs("div",{className:M("flex gap-2",f&&"flex-wrap"),children:[s.jsx(K,{variant:"primary",size:f?"md":"sm",icon:s.jsx(Ql,{className:"size-3.5"}),onClick:i,className:M(f&&"min-h-11 flex-1"),children:"Add to calendar"}),s.jsx(K,{variant:"secondary",size:f?"md":"sm",onClick:l,className:M(f&&"min-h-11 flex-1"),children:"Maybe"}),s.jsx(K,{variant:"secondary",size:f?"md":"sm",icon:s.jsx(Ue,{className:"size-3.5"}),onClick:d,className:M(f&&"min-h-11 flex-1"),children:"Decline"})]}),s.jsx(K,{variant:"ghost",size:f?"md":"sm",onClick:g,className:M("self-start",f&&"min-h-11 w-full"),children:"Offer other times"}),s.jsxs("p",{className:"text-2xs text-fg-subtle",children:[e.organizerName," is not notified. Reader writes this to your calendar and sends no reply — tell them in the thread."]})]}):s.jsxs("div",{className:"flex flex-col gap-2 border-t border-line pt-3",children:[s.jsxs("div",{className:"flex flex-wrap items-center gap-3",children:[s.jsxs("span",{className:"flex items-center gap-1.5 text-sm text-fg",children:[o==="declined"?"You declined":"On your calendar",s.jsx(Ki,{rsvp:o})]}),s.jsx(K,{variant:"ghost",size:f?"md":"sm",onClick:x,className:f?"min-h-11":"",children:"Change"}),o==="declined"&&s.jsx(K,{variant:"secondary",size:f?"md":"sm",onClick:g,className:f?"min-h-11":"",children:"Offer other times"})]}),s.jsxs("p",{className:"flex items-start gap-1.5 text-2xs text-fg-subtle",children:[s.jsx(et,{className:"mt-0.5 size-3 shrink-0","aria-hidden":!0}),e.organizerName," was not notified."]})]}))]})}function uc({slots:e,picked:t,onToggle:n,emptyText:a="Nothing free that day at this length.",touch:r,scroll:o,className:i}){return e.length===0?s.jsx("p",{className:M("text-xs text-fg-muted",i),children:a}):s.jsx("div",{className:M("flex gap-2",o?"overflow-x-auto pb-1":"flex-wrap",i),children:e.map(l=>{const d=t.has(l.startTime);return s.jsxs("button",{type:"button","aria-pressed":d,onClick:()=>n(l),className:M("shrink-0 rounded-md border px-2 text-xs tabular-nums outline-none transition-colors focus-visible:ring-2 focus-visible:ring-ring",r?"min-h-11 px-3":"h-7",d?"border-accent bg-accent-soft font-semibold text-accent":"border-line bg-surface text-fg-muted hover:border-line-strong hover:text-fg"),children:[l.startTime," – ",l.endTime]},l.startTime)})})}const xn=96;function fc({children:e,hasCard:t,onConfirm:n,onReject:a,blocked:r,blockedReason:o,remaining:i,confirmLabel:l="Add",emptyText:d="Nothing in your mail is waiting on a decision about time.",className:x}){const[g,v]=c.useState(0),[m,b]=c.useState(null);if(!t)return s.jsxs("div",{className:M("flex flex-col items-center gap-2 p-6 text-center",x),children:[s.jsx(Be,{className:"size-6 text-fg-subtle","aria-hidden":!0}),s.jsx("p",{className:"text-sm text-fg-muted",children:d})]});const f=Math.abs(g)>xn,u=g>0;return s.jsxs("div",{className:M("flex flex-col gap-3",x),children:[s.jsxs("div",{className:"relative",children:[s.jsx("div",{className:"touch-pan-y select-none",style:{transform:`translateX(${g}px) rotate(${g/40}deg)`,transition:m===null?"transform 180ms ease-out":"none"},onPointerDown:h=>{h.currentTarget.setPointerCapture(h.pointerId),b(h.clientX)},onPointerMove:h=>{m!==null&&v(h.clientX-m)},onPointerUp:()=>{Math.abs(g)>xn&&(g>0&&!r&&n(),g<0&&a()),b(null),v(0)},onPointerCancel:()=>{b(null),v(0)},children:e}),f&&s.jsx("span",{className:M("pointer-events-none absolute top-3 rounded-md px-2 py-1 text-xs font-semibold",u?"right-3 bg-accent-soft text-accent":"left-3 bg-danger-soft text-danger"),children:u?r?o:l:"Not this"})]}),s.jsxs("p",{className:"text-center text-2xs text-fg-subtle",children:[i," left · swipe right to accept, left to drop, or use the buttons"]})]})}const Ba="Pick a clock first. The mail never said, and the reader will not choose for you.";function Ka(e,t){const n=e.zoneOptions;return n===void 0?{settled:!0,timeZone:""}:n.some(a=>a.timeZone===t)?{settled:!0,timeZone:t}:{settled:!1,reason:Ba}}function mc(e){return e>=.85?"Read cleanly":e>=.6?"Read with gaps":"Barely read"}function pc({suggestion:e,whenText:t,onAdd:n,onReview:a,onDismiss:r,onOpenThread:o,zoneChoice:i,onZoneChoice:l,addLabel:d="Add",touch:x,className:g}){const[v,m]=c.useState(""),[b,f]=c.useState(!1),u=c.useId(),h=i??v,p=k=>{f(!1),l?l(k):m(k)},j=Ka(e,h),y=k=>()=>{if(!j.settled){f(!0);return}k(j.timeZone)};return s.jsxs("article",{"aria-label":e.title,className:M("flex flex-col gap-2 rounded-lg border border-dashed border-line-strong bg-surface-sunken p-3",g),children:[s.jsxs("div",{className:"flex items-start gap-2",children:[s.jsxs("span",{className:"min-w-0 flex-1",children:[s.jsxs("span",{className:"block text-2xs uppercase tracking-wider text-fg-subtle",children:["Suggested from mail · ",mc(e.confidence)]}),s.jsx("span",{className:"block truncate text-sm font-medium text-fg",children:e.title}),s.jsx("span",{className:"block text-xs text-fg-muted",children:t}),e.location!==""&&s.jsx("span",{className:"block truncate text-xs text-fg-muted",children:e.location})]}),s.jsx("button",{type:"button","aria-label":"Dismiss suggestion",onClick:r,className:M("flex shrink-0 items-center justify-center rounded-md text-fg-subtle outline-none hover:bg-surface hover:text-fg focus-visible:ring-2 focus-visible:ring-ring",x?"size-11":"size-7"),children:s.jsx(Ue,{className:"size-4"})})]}),e.ambiguity!==""&&s.jsxs("p",{className:"flex items-start gap-1.5 text-2xs text-warning",children:[s.jsx(Yn,{className:"mt-0.5 size-3 shrink-0","aria-hidden":!0}),e.ambiguity]}),s.jsxs("button",{type:"button",onClick:o,className:"flex w-full min-w-0 items-center gap-1.5 rounded-sm text-left text-2xs text-accent-2 outline-none hover:underline focus-visible:ring-2 focus-visible:ring-ring",children:[s.jsx(xa,{className:"size-3 shrink-0"}),s.jsxs("span",{className:"truncate",children:[e.sender," — ",e.threadSubject]})]}),e.zoneOptions&&s.jsxs("div",{className:"flex flex-col gap-1.5 rounded-md border border-warning/40 p-2",children:[s.jsxs("p",{className:"flex items-center gap-1.5 text-2xs font-semibold text-warning",children:[s.jsx(Qi,{className:"size-3 shrink-0","aria-hidden":!0}),"Which clock is this on?"]}),e.zoneOptions.map(k=>s.jsxs("button",{type:"button","aria-pressed":h===k.timeZone,onClick:()=>p(k.timeZone),className:M("rounded-md border px-2 py-1 text-left outline-none focus-visible:ring-2 focus-visible:ring-ring",x&&"min-h-11",h===k.timeZone?"border-accent bg-accent-soft":"border-line bg-surface hover:border-line-strong"),children:[s.jsx("span",{className:"block text-xs font-medium text-fg",children:k.label}),s.jsx("span",{className:"block text-2xs text-fg-subtle",children:k.note})]},k.timeZone))]}),!j.settled&&s.jsx(Xn,{id:u,reason:j.reason,nudged:b,className:"text-2xs text-warning"}),s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx(K,{variant:"primary",size:x?"md":"sm",icon:s.jsx(Kr,{className:"size-3.5"}),onClick:y(n),"aria-describedby":j.settled?void 0:u,className:M(x&&"min-h-11 flex-1",!j.settled&&"opacity-55"),children:d}),s.jsx(K,{variant:"secondary",size:x?"md":"sm",icon:s.jsx(Zl,{className:"size-3.5"}),onClick:y(a),"aria-describedby":j.settled?void 0:u,className:M(x&&"min-h-11",!j.settled&&"opacity-55"),children:"Change first"})]})]})}function be({label:e,children:t,className:n}){return s.jsxs("section",{className:M("border-b border-line px-row-inset py-3",n),children:[s.jsx("h3",{className:"text-2xs font-semibold uppercase tracking-wider text-fg-subtle",children:e}),s.jsx("div",{className:"mt-2",children:t})]})}function hc({data:e,actions:t,selectedEventId:n="",touch:a,className:r}){const{invite:o,prose:i,suggestions:l,day:d,dayLabel:x}=e,[g,v]=c.useState({}),m=l[0],b=m===void 0?"":g[m.suggestion.id]??"",f=m===void 0?void 0:Ka(m.suggestion,b),u=new Set(i?.picked??[]);return o===void 0&&i===void 0&&l.length===0&&d.length===0?s.jsxs("div",{className:M("flex flex-1 flex-col items-center justify-center gap-2 px-row-inset py-10 text-center",r),children:[s.jsx(Hr,{className:"size-6 text-fg-subtle","aria-hidden":!0}),s.jsx("p",{className:"text-sm text-fg-muted",children:"Nothing in this message is about a time."}),s.jsx("p",{className:"text-2xs text-fg-subtle",children:"An invitation, a booking or a thread proposing hours would show up here, with the day it lands on."})]}):s.jsxs("div",{className:M("flex flex-col",r),children:[o&&s.jsx(be,{label:"Invitation",children:s.jsx(dc,{invite:o.invite,whenText:o.whenText,calendarName:o.calendarName,color:o.color,clashes:o.clashes,rsvp:o.rsvp,onAdd:t.onAddInvite,onTentative:t.onTentativeInvite,onDecline:t.onDeclineInvite,onReopen:t.onReopenInvite,onOfferOtherTimes:t.onOfferOtherTimes,onRemove:t.onRemoveInvite,onOpenNewer:t.onOpenNewerInvite,touch:a})}),i&&s.jsxs(be,{label:`Times named · ${i.dayLabel}`,children:[s.jsx("ul",{className:"flex flex-col gap-1",children:i.proposals.map(p=>s.jsxs("li",{className:"flex items-baseline gap-2 text-xs",children:[s.jsx("span",{className:"w-24 shrink-0 truncate tabular-nums text-fg",children:p.phrase}),p.clashTitle===""?s.jsx("span",{className:"min-w-0 flex-1 truncate text-positive",children:"Nothing booked"}):s.jsxs("span",{className:"min-w-0 flex-1 truncate text-danger",children:[p.clashTitle," is already there"]})]},p.id))}),s.jsx("p",{className:"mt-3 pb-1.5 text-2xs uppercase tracking-wider text-fg-subtle",children:"Free, half an hour each"}),s.jsx(uc,{slots:i.slots,picked:u,onToggle:t.onToggleSlot,touch:a,scroll:!0}),s.jsx("p",{className:"mt-1.5 text-2xs text-fg-subtle",children:"Picked slots go into the reply as plain text. Nothing is booked."})]}),l.length>0&&s.jsxs(be,{label:"Read out of this thread",children:[s.jsx(fc,{hasCard:m!==void 0,remaining:l.length,blocked:f!==void 0&&!f.settled,blockedReason:Ba,onConfirm:()=>{m&&f?.settled&&t.onAddSuggestion(m.suggestion.id,f.timeZone)},onReject:()=>{m&&t.onDismissSuggestion(m.suggestion.id)},children:m&&s.jsx(pc,{suggestion:m.suggestion,whenText:m.whenText,addLabel:"Add to calendar",zoneChoice:b,onZoneChoice:p=>v(j=>({...j,[m.suggestion.id]:p})),onAdd:p=>t.onAddSuggestion(m.suggestion.id,p),onReview:p=>t.onReviewSuggestion(m.suggestion.id,p),onDismiss:()=>t.onDismissSuggestion(m.suggestion.id),onOpenThread:()=>t.onOpenThread(m.suggestion.threadId),touch:a})}),s.jsx("p",{className:"mt-2 text-2xs text-fg-subtle",children:"None of this is on your calendar, and none of it will be until you say so."})]}),d.length>0&&s.jsx(be,{label:x,className:"border-b-0",children:s.jsx("ul",{className:"flex flex-col gap-1",children:d.map(p=>s.jsx("li",{children:s.jsx(Ui,{title:p.event.title,timeText:p.timeText,color:p.color,layout:"row",density:"compact",rsvp:p.event.myRsvp,status:p.event.status,hasThread:p.event.threadId!=="",isRecurring:p.event.recurrenceRule!=="",zoneCertainty:p.event.zoneCertainty,selected:p.event.id===n,onClick:()=>t.onSelectEvent(p.event.id)})},p.event.id))})})]})}const gc=[{value:"sender",label:"Sender"},{value:"calendar",label:"Calendar"}],xc={unknown:{label:"Unknown sender",tone:"neutral"},wellknown:{label:"Known sender",tone:"positive"},vip:{label:"VIP",tone:"accent"}};function bc({sender:e}){const t=xc[e.trust],n=e.inboundCount==null?null:(e.replyCount??0)>0?`${e.inboundCount} received · you replied ${e.replyCount}×`:`${e.inboundCount} received · you've never replied`;return s.jsxs("div",{children:[s.jsxs("div",{className:"flex items-center gap-3",children:[s.jsx(gt,{name:e.name,email:e.email,size:"md"}),s.jsxs("div",{className:"min-w-0",children:[s.jsx("div",{className:"truncate text-sm font-semibold text-fg",children:e.name}),s.jsx("div",{className:"truncate text-2xs text-fg-subtle",children:e.email})]})]}),s.jsx("div",{className:"mt-2 flex items-center gap-2",children:e.addressUnverified?s.jsx(je,{tone:"danger",dot:!0,children:"Address couldn't be verified"}):s.jsx(je,{tone:t.tone,dot:!0,children:t.label})}),s.jsxs("p",{className:"mt-2 text-xs text-fg-muted",children:["First seen ",e.firstSeenLabel,n?` · ${n}`:""]})]})}function vc({auth:e,onShowSimilar:t}){if(e.verdict==="aligned")return s.jsxs("div",{className:"flex items-start gap-2 text-xs text-fg-muted",children:[s.jsx(Xi,{className:"mt-0.5 size-3.5 shrink-0 text-positive"}),s.jsx("span",{children:e.summary})]});if(e.verdict==="caution")return s.jsxs("div",{className:"flex items-start gap-2 rounded-md bg-warning/10 p-3 text-warning",children:[s.jsx(Xl,{className:"mt-0.5 size-4 shrink-0"}),s.jsx("p",{className:"text-xs leading-relaxed",children:e.summary})]});const n=e.addressUnreadable?"This sender can't be verified":"This message may be impersonating someone";return s.jsxs("div",{className:"rounded-md bg-danger-soft p-3",children:[s.jsxs("div",{className:"flex items-start gap-2",children:[s.jsx(rt,{className:"mt-0.5 size-4 shrink-0 text-danger"}),s.jsxs("div",{className:"min-w-0",children:[s.jsx("p",{className:"text-sm font-semibold text-danger",children:n}),s.jsx("p",{className:"mt-1 text-xs leading-relaxed text-fg",children:e.summary}),!e.addressUnreadable&&e.dkimDomain&&s.jsxs("p",{className:"mt-1 text-2xs text-fg-muted",children:["Sent from"," ",s.jsx("code",{className:"rounded bg-surface px-1 py-0.5",children:e.dkimDomain}),", claims to be"," ",s.jsx("code",{className:"rounded bg-surface px-1 py-0.5",children:e.fromDomain})]})]})]}),e.similarCount!=null&&e.similarCount>0&&s.jsxs(K,{variant:"secondary",size:"sm",className:"mt-2 w-full border-danger/30 text-danger hover:bg-danger-soft",onClick:t,children:[e.similarCount," similar messages"]})]})}function mt({icon:e,label:t,active:n,danger:a,onClick:r,pending:o}){const i=r===void 0||o===!0;return s.jsxs("button",{type:"button",onClick:r,disabled:i,className:M("flex items-center gap-2 rounded-md border px-2 py-1 text-xs transition-colors",n?"border-accent-2 bg-accent-2-soft text-accent-2":"border-line text-fg-muted hover:border-line-strong hover:text-fg",a&&!n&&"text-danger hover:bg-danger-soft",i&&"cursor-not-allowed opacity-50 hover:border-line"),children:[e,t]})}const yc={sender:"matched: sender",recipient:"matched: recipient",subject:"matched: subject",attachment:"matched: attachment",body:"matched: body",entities:"matched: entities"};function Ha({data:e,onClose:t,onShowSimilar:n,actions:a,similarState:r="ready",similarLinkComponent:o,className:i,hideCloseButton:l=!1,reportSpamPending:d=!1,notSpamPending:x=!1,calendar:g,tab:v,onTabChange:m,defaultTab:b="sender",touch:f}){const{sender:u,authenticity:h,category:p,flags:j={},similar:y}=e,[k,S]=c.useState(b),E=c.useId(),A=v??k,O=g!==void 0&&A==="calendar"?g:void 0;return s.jsxs("aside",{className:M("flex w-76 shrink-0 flex-col overflow-y-auto border-l border-line bg-surface",i),children:[s.jsxs("header",{className:"flex h-pane-header shrink-0 items-center justify-between border-b border-line px-row-inset",children:[s.jsx("span",{className:"text-2xs font-semibold uppercase tracking-wider text-fg-subtle",children:"Intelligence"}),!l&&s.jsx(K,{variant:"ghost",size:"sm",icon:s.jsx(Ue,{className:"size-3.5"}),onClick:t,"aria-label":"Collapse intelligence sidebar"})]}),g&&s.jsx("div",{className:"flex shrink-0 justify-center border-b border-line px-row-inset py-2",children:s.jsx(qr,{name:E,"aria-label":"What this panel is showing",size:"sm",options:gc,value:A,onChange:F=>{v===void 0&&S(F),m?.(F)}})}),O&&s.jsx(hc,{data:O.data,actions:O.actions,selectedEventId:O.selectedEventId,touch:f}),O===void 0&&s.jsxs(s.Fragment,{children:[s.jsx(be,{label:"Sender",children:s.jsx(bc,{sender:u})}),s.jsx(be,{label:"Authenticity",children:s.jsx(vc,{auth:h,onShowSimilar:n})}),s.jsx(be,{label:"Category",children:s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx(je,{tone:Cs[p.value],children:p.value}),p.overridden&&s.jsx("span",{className:"text-2xs text-fg-subtle",children:"your override"}),s.jsx("button",{type:"button",className:M("ml-auto text-2xs text-accent hover:underline",!a?.onReclassify&&"cursor-not-allowed opacity-50 hover:no-underline"),disabled:!a?.onReclassify,onClick:a?.onReclassify,children:"reclassify"})]})}),s.jsxs(be,{label:"Quick actions",children:[s.jsxs("div",{className:"flex flex-wrap gap-1.5",children:[s.jsx(mt,{icon:s.jsx(tt,{className:"size-3.5"}),label:"VIP",active:j.vip,onClick:a?.onToggleVip}),s.jsx(mt,{icon:s.jsx(Gi,{className:"size-3.5"}),label:"Mute",active:j.muted,onClick:a?.onToggleMute}),a?.onNotSpam&&s.jsx(mt,{icon:s.jsx(Vl,{className:"size-3.5"}),label:x?"Undoing…":"Not spam",active:!0,onClick:a.onNotSpam,pending:x}),a?.onReportSpam&&s.jsx(mt,{icon:s.jsx(Jl,{className:"size-3.5"}),label:d?"Reporting…":"Report spam",danger:!0,onClick:a.onReportSpam,pending:d}),s.jsx(mt,{icon:s.jsx(Yl,{className:"size-3.5"}),label:"Unsubscribe",active:j.unsubscribed,onClick:a?.onToggleUnsubscribe})]}),a?.onNotSpam&&s.jsx("p",{className:"mt-1.5 text-2xs text-fg-subtle",children:"You reported this message as spam"})]}),(r!=="ready"||y.length>0)&&s.jsx(be,{label:"Similar messages",children:r==="loading"?s.jsx("div",{className:"animate-pulse space-y-2",children:Array.from({length:3}).map((F,L)=>s.jsxs("div",{className:"space-y-1",children:[s.jsx("div",{className:"h-3 w-3/4 rounded bg-surface-sunken"}),s.jsx("div",{className:"h-2.5 w-1/2 rounded bg-surface-sunken"})]},L))}):r==="error"?s.jsx("p",{className:"text-xs text-fg-subtle",children:"Similarity search unavailable"}):r==="off"?s.jsxs("div",{className:"space-y-1.5 text-xs text-fg-subtle",children:[s.jsx("p",{className:"text-fg-muted",children:Qr}),s.jsx("p",{children:Gr}),s.jsxs("p",{children:["Run"," ",s.jsx("code",{className:"rounded bg-surface-sunken px-1 py-px text-2xs text-fg-muted",children:Wr})," ","on the server."]})]}):s.jsx("ul",{className:"-mx-1 space-y-1",children:y.map(F=>{const L="block w-full rounded-md px-1 py-1 text-left hover:bg-surface-sunken",z=`Open message from ${F.fromName||"unknown sender"}: ${F.subject}`,I=s.jsxs(s.Fragment,{children:[s.jsxs("div",{className:"flex items-baseline justify-between gap-2",children:[s.jsx("span",{className:"truncate text-xs font-medium text-fg",children:F.fromName}),s.jsx("span",{className:"shrink-0 text-2xs text-fg-subtle tabular-nums",children:F.timeLabel})]}),s.jsx("div",{className:"truncate text-xs text-fg-muted",children:F.subject}),s.jsx("span",{className:"mt-1 inline-block rounded-full bg-surface-sunken px-1.5 py-px text-2xs text-fg-subtle",children:yc[F.matched]})]});return s.jsx("li",{children:o?o({mailboxId:F.mailboxId,threadId:F.threadId,messageId:F.id,className:L,ariaLabel:z,children:I}):s.jsx("div",{className:L,children:I})},F.id)})})}),s.jsx(be,{label:"Coming soon",className:"border-b-0 opacity-70",children:s.jsxs("div",{className:"space-y-2",children:[s.jsxs("div",{className:"flex items-start gap-2 rounded-md border border-dashed border-line p-2",children:[s.jsx(Be,{className:"mt-0.5 size-3.5 shrink-0 text-fg-subtle"}),s.jsxs("div",{children:[s.jsx("div",{className:"text-xs font-medium text-fg-muted",children:"Suggested actions"}),s.jsx("div",{className:"text-2xs text-fg-subtle",children:'"Create a filter for messages like this" — on-device model'})]})]}),s.jsxs("div",{className:"flex items-start gap-2 rounded-md border border-dashed border-line p-2",children:[s.jsx(Be,{className:"mt-0.5 size-3.5 shrink-0 text-fg-subtle"}),s.jsxs("div",{children:[s.jsx("div",{className:"text-xs font-medium text-fg-muted",children:"Thread summary"}),s.jsx("div",{className:"text-2xs text-fg-subtle",children:"One-paragraph digest — Bedrock"})]})]})]})})]})]})}const gs=e=>({shiftKey:e.shiftKey,metaKey:e.metaKey,ctrlKey:e.ctrlKey}),bn=e=>e.shiftKey||e.metaKey||e.ctrlKey,kc=e=>e.shiftKey?"range":e.metaKey||e.ctrlKey?"toggle":"open",jc=(e,t)=>!t&&e>0,wc=(e,t,n)=>{const a=e.indexOf(n);if(a===-1)return[];const r=t===void 0?-1:e.indexOf(t);if(r===-1)return[n];const o=Math.min(r,a),i=Math.max(r,a);return e.slice(o,i+1)},Nc=(e,t,n,a)=>t!==void 0&&e.includes(t)?t:n!==void 0&&e.includes(n)?n:a,Cc=(e,t)=>{const n=new Set(t),a=new Set;for(const r of e)n.has(r)&&a.add(r);return a},Sc=(e,t,n)=>{if(e.length===0)return;const a=t===void 0?-1:e.indexOf(t);if(a===-1)return n>0?e[0]:e[e.length-1];const r=Math.min(Math.max(a+n,0),e.length-1);return e[r]},Tc=e=>{const[t,n]=c.useState(()=>new Set(e?.initialSelectedIds)),[a,r]=c.useState(void 0),o=c.useCallback(u=>t.has(u),[t]),i=c.useCallback(u=>{r(u),n(h=>{const p=new Set(h);return p.has(u)?p.delete(u):p.add(u),p})},[]),l=c.useCallback(u=>{r(u),n(h=>{if(h.has(u))return h;const p=new Set(h);return p.add(u),p})},[]),d=c.useCallback(u=>{n(h=>{if(!h.has(u))return h;const p=new Set(h);return p.delete(u),p})},[]),x=c.useCallback(u=>{n(new Set(u))},[]),g=c.useCallback(()=>{r(void 0),n(new Set)},[]),v=c.useCallback(u=>{n(h=>u.every(j=>h.has(j))?new Set:new Set(u))},[]),m=c.useCallback(u=>{r(u)},[]),b=c.useCallback(u=>{n(h=>{if(h.size===0)return h;const p=Cc(h,u);return p.size===h.size?h:p})},[]),f=c.useCallback((u,h,p)=>{const j=Nc(u,a,p,h);n(y=>{const k=wc(u,j,h);if(k.length===0)return y;const S=new Set(y);for(const E of k)S.add(E);return S}),r(j)},[a]);return{selectedIds:t,selectedCount:t.size,hasSelection:t.size>0,isSelected:o,toggle:i,select:l,deselect:d,selectAll:x,clearSelection:g,toggleAll:v,selectRange:f,setAnchor:m,anchorId:a,intersectWith:b}},vn=10,Ic={kind:"unknown"},is=e=>e.toLocaleString();function Ec({section:e,Row:t,selectedThreadId:n,initialExpanded:a=!1,initialCollapsed:r=!1,onShowAll:o,onRetry:i,onSelectThread:l}){const[d,x]=c.useState(a),[g,v]=c.useState(r),m=e.threads,b=e.loading===!0,f=e.error===!0,u=m.length>vn,p=!d&&u?m.slice(0,vn):m,j=e.total??Ic,y=j.kind==="exact"&&(m.length>0||b)&&!f?is(j.value):void 0,k=j.kind==="exact"?j.value>p.length:e.atCap===!0,S=o!==void 0&&p.length>0&&k?j.kind==="exact"?`Show all ${is(j.value)}`:"Show all":void 0,E=m.length-p.length;return s.jsxs("div",{children:[e.label&&s.jsxs("button",{type:"button","aria-expanded":!g,onClick:()=>v(A=>!A),className:"sticky top-0 z-10 flex h-section-row w-full items-center gap-1.5 border-b border-line bg-surface-sunken px-row-inset text-left outline-none transition-colors hover:bg-surface focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-inset",children:[s.jsx("span",{className:"flex-1 text-2xs font-semibold uppercase tracking-wider text-fg-subtle",children:e.label}),y!==void 0&&s.jsx("span",{className:"text-2xs text-fg-subtle tabular-nums",children:y}),s.jsx(_e,{className:M("size-3 shrink-0 text-fg-subtle transition-transform duration-200",g?"rotate-0":"rotate-180")})]}),!g&&s.jsxs(s.Fragment,{children:[m.length===0?f?s.jsxs("div",{className:"flex flex-col items-center gap-1 border-b border-line px-row-inset py-4 text-center text-2xs text-danger",children:[s.jsx("span",{children:`Couldn't load ${e.label??"these messages"}`}),i&&s.jsx("button",{type:"button",onClick:i,className:"font-medium text-accent underline outline-none focus-visible:ring-2 focus-visible:ring-ring",children:"Try again"})]}):b?s.jsx("div",{className:"animate-pulse divide-y divide-line",children:[0,1,2].map(A=>s.jsx("div",{className:"px-row-inset py-3",children:s.jsx("div",{className:"h-3 w-2/3 rounded bg-surface-sunken"})},A))}):s.jsx("p",{className:"border-b border-line px-row-inset py-4 text-center text-2xs text-fg-subtle",children:e.label?`No ${e.label} mail in this brief.`:"No mail in this brief."}):s.jsx("div",{className:"divide-y divide-line",children:p.map(A=>s.jsx(t,{thread:A,active:A.id===n,onClick:()=>l?.(A.id)},A.id))}),S!==void 0?s.jsxs("button",{type:"button",onClick:o,className:"flex w-full items-center justify-center border-b border-line px-row-inset py-1.5 text-2xs font-medium text-accent outline-none transition-colors hover:bg-surface focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-inset",children:[S,s.jsx(Ns,{className:"ml-1 size-3"})]}):u&&s.jsxs("button",{type:"button",onClick:()=>x(A=>!A),className:"flex w-full items-center justify-center border-b border-line px-row-inset py-1.5 text-2xs font-medium text-accent outline-none transition-colors hover:bg-surface focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-inset",children:[d?"Show less":`Show ${is(E)} more`,!d&&s.jsx(_e,{className:"ml-1 size-3"})]})]})]})}function Sp({sections:e,briefCategory:t="all",selectedThreadId:n,Row:a,keyboard:r,onSelectThread:o,onShowAllSection:i,onRetrySection:l,flat:d=!1,onSelectBriefCategory:x,sources:g,sourcesNote:v,onSelectSource:m,activeFilters:b,onToggleFilter:f,onClearFilters:u,hideChrome:h,defaultExpanded:p=!1}){const[j,y]=c.useState(p),k=c.useRef(null);ri({containerRef:k,itemSelector:oi,enabled:!Vr(r)});const S=!d&&(t==="all"||e.some(I=>I.total!==void 0)),E=e.filter(I=>I.threads.length>0||I.total!==void 0||I.loading===!0||I.error===!0),A=e.flatMap(I=>I.threads),O=Yr.map(I=>({id:I.id,label:I.label,tone:I.id==="all"?"neutral":Cs[I.id]})),F=Zn,L=S?E.length===0:A.length===0,z=s.jsxs("div",{ref:k,children:[S?E.map(I=>s.jsx(Ec,{section:I,Row:a,selectedThreadId:n,onSelectThread:o,onShowAll:i?()=>i(I.id):void 0,onRetry:l?()=>l(I.id):void 0},I.id)):s.jsx("div",{className:"divide-y divide-line",children:A.map(I=>s.jsx(a,{thread:I,active:I.id===n,onClick:()=>o?.(I.id)},I.id))}),L&&s.jsx("div",{className:"px-row-inset py-6 text-center text-2xs text-fg-subtle",children:"No threads match these filters."})]});return s.jsx(Jn,{categories:O,filters:F,sources:g,sourcesNote:v,selectedCategory:t,activeFilters:b,expanded:j,onExpandedChange:y,onSelectCategory:I=>x?.(I),onSelectSource:m,onToggleFilter:I=>f(I),onClear:u,hideChrome:h,children:z})}function Tp({hints:e=li,className:t}){return e.length===0?null:s.jsx("footer",{className:M("flex items-center gap-2 border-t border-line px-row-inset py-1 text-2xs text-fg-subtle",t),children:e.map(n=>s.jsx(Rc,{hint:n},n.label))})}function Rc({hint:e}){return s.jsxs("span",{className:"flex items-center gap-1",children:[e.keys.map(t=>s.jsx(yi,{children:t},t)),s.jsx("span",{children:e.label})]})}const Fs={delete_failed:{label:"Not deleted",title:"This message was not deleted",detail:"Remit removed it here first, then refused to finish the delete on the mail server — most often because the Trash folder it was headed for is not there any more. The message is back in this folder because that is where the server still has it.",retryLabel:"Delete again"}};function qa({settlement:e,className:t}){const n=Fs[e];return s.jsxs(je,{tone:"danger",className:M("shrink-0",t),title:n.title,"data-settlement":e,children:[s.jsx(Sa,{className:"size-3 shrink-0","aria-hidden":!0}),s.jsx("span",{children:n.label})]})}function Mc({settlement:e,onRetry:t,retryPending:n,reportHref:a,className:r}){const o=Fs[e];return s.jsxs("div",{role:"alert","data-testid":"message-settlement-notice","data-settlement":e,className:M("flex items-start gap-2 rounded-md border border-danger/40 bg-danger-soft px-3 py-2 text-sm",r),children:[s.jsx(Sa,{className:"mt-0.5 size-4 shrink-0 text-danger","aria-hidden":!0}),s.jsxs("div",{className:"min-w-0 flex-1",children:[s.jsx("p",{className:"font-medium text-danger",children:o.title}),s.jsx("p",{className:"mt-1 break-words text-fg-muted",children:o.detail}),s.jsxs("div",{className:"mt-1 flex flex-wrap items-center gap-3",children:[t&&s.jsx("button",{type:"button",onClick:t,disabled:n,className:"font-medium text-accent hover:underline disabled:opacity-50",children:n?"Deleting…":o.retryLabel}),a&&s.jsx("a",{href:a,target:"_blank",rel:"noreferrer",className:"font-medium text-accent hover:underline",children:"Report an issue"})]})]})]})}const Qa="outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-inset",Ga=({active:e,focused:t})=>M("relative flex h-8 w-full items-center gap-2 px-row-inset text-left",Qa,e?"bg-accent-2-soft":t?"bg-surface-sunken":"hover:bg-surface-sunken",t&&!e&&"before:absolute before:inset-y-0 before:left-0 before:w-0.5 before:bg-accent-2"),Os=({active:e,focused:t})=>M("relative flex w-full items-start gap-3 py-2 pl-5 pr-row-inset text-left transition-colors",Qa,e?"bg-accent-2-soft":t?"bg-surface-sunken":"hover:bg-surface-sunken",t&&!e&&"before:absolute before:inset-y-0 before:left-0 before:w-0.5 before:bg-accent-2");function Wa({thread:e}){const t=!e.isRead;return s.jsxs(s.Fragment,{children:[s.jsx("span",{className:"flex w-4 shrink-0 items-center justify-center",children:e.suspicious?s.jsx(rt,{className:"size-3.5 text-danger"}):e.starred?s.jsx(tt,{className:"size-3 fill-warning text-warning"}):t?s.jsx("span",{className:"size-1.5 rounded-full bg-accent"}):null}),s.jsx("span",{className:M("w-36 shrink-0 truncate text-xs",t?"font-semibold text-fg":"text-fg-muted"),children:e.fromName}),s.jsxs("span",{className:"min-w-0 flex-1 truncate text-xs",children:[s.jsx("span",{className:M(t?"font-medium text-fg":"text-fg-muted"),children:e.subject}),s.jsxs("span",{className:"text-fg-subtle",children:[" — ",e.snippet]})]}),e.hasAttachment&&s.jsx(qt,{className:"size-3 shrink-0 text-fg-subtle",role:"img","aria-label":"Has an attachment"}),e.settlement&&s.jsx(qa,{settlement:e.settlement}),s.jsx("span",{className:"w-11 shrink-0 text-right text-2xs text-fg-subtle tabular-nums",children:e.timeLabel})]})}function yn(e,t){const n=t?.trim();if(!n)return e;const a=e.toLowerCase(),r=n.toLowerCase(),o=[];let i=0,l=a.indexOf(r,i),d=0;for(;l!==-1;)l>i&&o.push(e.slice(i,l)),o.push(s.jsx("mark",{className:"bg-transparent font-semibold text-fg",children:e.slice(l,l+r.length)},d++)),i=l+r.length,l=a.indexOf(r,i);return i<e.length&&o.push(e.slice(i)),o}function Ac({thread:e,badge:t,highlightQuery:n}){const a=!e.isRead;return s.jsxs("span",{className:"min-w-0 flex-1",children:[s.jsxs("span",{className:"flex items-baseline justify-between gap-2",children:[s.jsxs("span",{className:M("flex min-w-0 items-center gap-1.5 truncate text-sm",a?"font-semibold text-fg":"font-medium text-fg-muted"),children:[e.trust==="vip"&&s.jsx("span",{className:"size-1.5 shrink-0 rounded-full bg-accent-2"}),s.jsx("span",{className:"truncate",children:e.fromName}),e.messageCount!=null&&e.messageCount>1&&s.jsx("span",{className:"shrink-0 text-2xs font-normal text-fg-subtle",children:e.messageCount})]}),s.jsx("span",{className:"shrink-0 text-2xs text-fg-subtle tabular-nums",children:e.timeLabel})]}),s.jsxs("span",{className:"flex items-center gap-1.5",children:[s.jsx("span",{className:M("truncate text-sm",a?"text-fg":"text-fg-muted"),children:yn(e.subject,n)}),e.suspicious&&s.jsx(rt,{className:"size-3.5 shrink-0 text-danger"}),e.starred&&s.jsx(tt,{className:"size-3 shrink-0 fill-warning text-warning"}),e.hasAttachment&&s.jsx(qt,{className:"size-3 shrink-0 text-fg-subtle",role:"img","aria-label":"Has an attachment"})]}),s.jsxs("span",{className:"flex items-center gap-1.5",children:[s.jsx("span",{className:"line-clamp-1 min-w-0 flex-1 text-xs text-fg-subtle",children:yn(e.snippet,n)}),e.category&&e.category!=="personal"&&s.jsx(je,{tone:Cs[e.category],className:"shrink-0",children:e.category}),e.labels?.map(r=>s.jsx(Xr,{label:r,className:"max-w-20"},r.labelId)),e.settlement&&s.jsx(qa,{settlement:e.settlement}),t]})]})}function $c({thread:e,selection:t}){if(!t)return s.jsx(gt,{name:e.fromName,email:e.fromEmail,size:"sm"});const{checked:n,alwaysVisible:a}=t;return s.jsxs("span",{className:"relative size-7 shrink-0",children:[s.jsx(gt,{name:e.fromName,email:e.fromEmail,size:"sm",className:M("absolute inset-0 transition-opacity sm:group-hover:opacity-0",(n||a)&&"opacity-0")}),s.jsx("span",{role:"button",tabIndex:-1,onClick:t.onToggle,onKeyDown:r=>{r.key!=="Enter"&&r.key!==" "||(r.preventDefault(),r.stopPropagation(),t.onToggle(r))},className:M("absolute inset-0 size-7 items-center justify-center rounded-full border transition-opacity",a?"flex":"hidden sm:flex",n?"bg-accent border-accent text-accent-fg opacity-100":a?"border-fg-subtle/40 bg-canvas opacity-100":"border-fg-subtle/40 bg-canvas opacity-0 group-hover:opacity-100"),"aria-label":n?"Deselect message":"Select message",children:n&&s.jsx(et,{className:"size-3"})})]})}function zs({thread:e,selection:t,badge:n,highlightQuery:a}){const r=!e.isRead;return s.jsxs(s.Fragment,{children:[r&&s.jsx("span",{className:"absolute left-1.5 top-1/2 size-1.5 -translate-y-1/2 rounded-full bg-accent"}),s.jsx($c,{thread:e,selection:t}),s.jsx(Ac,{thread:e,badge:n,highlightQuery:a})]})}const Va=e=>({...ii,[Jr]:"","data-message-id":e.id});function Ip({thread:e,active:t,focused:n,tabIndex:a,onClick:r}){return s.jsx("button",{type:"button",...Va(e),tabIndex:a,onClick:r,className:Ga({active:t,focused:n}),children:s.jsx(Wa,{thread:e})})}function Ep({thread:e,active:t,focused:n,tabIndex:a,selection:r,onClick:o}){return s.jsx("button",{type:"button",...Va(e),tabIndex:a,onClick:o,className:M("group",Os({active:t,focused:n})),children:s.jsx(zs,{thread:e,selection:r})})}let Ze;const Lc=5e3;function Ya(e){e.preventDefault(),Ot()}function Ot(){Ze!==void 0&&(clearTimeout(Ze),Ze=void 0,document.removeEventListener("contextmenu",Ya,!0),document.removeEventListener("pointerup",Ot,!0))}function Pc(){Ze===void 0?(document.addEventListener("contextmenu",Ya,!0),document.addEventListener("pointerup",Ot,!0)):clearTimeout(Ze),Ze=setTimeout(Ot,Lc)}function Dc({onLongPress:e,isDisabled:t,delayMs:n=500,accessibilityDescription:a}){const{longPressProps:r}=ql({isDisabled:t,threshold:n,accessibilityDescription:a,onLongPress:e}),o=c.useCallback(i=>{i.pointerType!=="touch"&&i.pointerType!=="pen"||Pc()},[]);return{longPressProps:St(r,{onPointerDown:o})}}const pt="min-h-11 min-w-11 px-0";function Xa({hasThread:e,onReply:t,onReplyAll:n,onForward:a,isStarred:r,onToggleStar:o,onDelete:i,isRead:l,onToggleRead:d,moveSlot:x,overflowItems:g=[],onUnavailable:v,unavailableHint:m,className:b}){const f=(h,p)=>()=>{if(!e){v?.(h);return}p?.()},u=d?[{key:"toggle-read",label:l?"Mark as unread":"Mark as read",icon:l?s.jsx(xa,{className:"size-4"}):s.jsx(Ds,{className:"size-4"}),onSelect:f("toggleRead",d)}]:[];return s.jsxs("div",{className:M("relative",b),children:[s.jsxs("div",{className:"flex h-12 shrink-0 items-center gap-0.5 bg-canvas px-1",children:[t&&s.jsx(K,{variant:"ghost",size:"sm",icon:s.jsx(Ua,{className:"size-5"}),onClick:f("reply",t),"aria-label":"Reply",title:"Reply",className:pt}),n&&s.jsx(K,{variant:"ghost",size:"sm",icon:s.jsx(_a,{className:"size-5"}),onClick:f("replyAll",n),"aria-label":"Reply all",title:"Reply all",className:pt}),a&&s.jsx(K,{variant:"ghost",size:"sm",icon:s.jsx(za,{className:"size-5"}),onClick:f("forward",a),"aria-label":"Forward",title:"Forward",className:pt}),s.jsx("div",{className:"flex-1"}),o&&s.jsx(K,{variant:"ghost",size:"sm",icon:s.jsx(tt,{className:M("size-5",r&&"fill-warning text-warning")}),onClick:f("star",o),"aria-label":r?"Unstar":"Star","aria-pressed":r,title:r?"Unstar":"Star",className:pt}),x,i&&s.jsx(K,{variant:"ghost",size:"sm",icon:s.jsx(yt,{className:"size-5"}),onClick:f("delete",i),"aria-label":"Move to Trash",title:"Move to Trash",className:pt}),s.jsx(ga,{triggerLabel:"More actions",items:[...u,...g]})]}),!e&&m&&s.jsx("p",{role:"status",className:"bg-surface-sunken px-3 py-1 text-2xs text-fg-subtle",children:m})]})}function Fc({open:e=!1,enabled:t=!0,onToggle:n,className:a}){return s.jsx(K,{variant:"ghost",size:"sm",icon:s.jsx(ea,{className:"size-4"}),title:"Intelligence","aria-label":e?"Hide intelligence sidebar":"Show intelligence sidebar","aria-pressed":e,disabled:!t,onClick:n,className:M(e&&"bg-accent-2-soft text-accent-2",a)})}function Oc({hasThread:e,onUnavailable:t,unavailableHint:n,isStarred:a,showTriage:r=!0,onReply:o,onReplyAll:i,onForward:l,onDelete:d,onToggleStar:x,moveSlot:g,onMove:v,replyTitle:m="Reply (r)",replyAllTitle:b="Reply all (a)",forwardTitle:f="Forward (f)",deleteTitle:u="Move to Trash (#)",flagTitle:h="Star (s)",children:p,className:j}){const y=(k,S)=>()=>{if(!e||!S){t?.(k);return}S()};return s.jsxs("div",{className:"relative",children:[s.jsxs("header",{className:M("flex h-pane-header shrink-0 items-center gap-1 border-b border-line bg-surface px-3",j),children:[s.jsx(K,{variant:"ghost",size:"sm",icon:s.jsx(Ua,{className:"size-4"}),title:m,"aria-label":"Reply",onClick:y("reply",o)}),s.jsx(K,{variant:"ghost",size:"sm",icon:s.jsx(_a,{className:"size-4"}),title:b,"aria-label":"Reply all",onClick:y("replyAll",i)}),s.jsx(K,{variant:"ghost",size:"sm",icon:s.jsx(za,{className:"size-4"}),title:f,"aria-label":"Forward",onClick:y("forward",l)}),r&&s.jsxs(s.Fragment,{children:[s.jsx("span",{className:"mx-1 h-4 w-px bg-line","aria-hidden":!0}),s.jsx(K,{variant:"ghost",size:"sm",icon:s.jsx(yt,{className:"size-4"}),title:u,"aria-label":"Move to Trash",onClick:y("delete",d)}),g??s.jsx(K,{variant:"ghost",size:"sm",icon:s.jsx(Ss,{className:"size-4"}),title:"Move to mailbox","aria-label":"Move to mailbox",onClick:y("move",v)}),s.jsx(K,{variant:"ghost",size:"sm",icon:s.jsx(tt,{className:M("size-4",a&&"fill-warning text-warning")}),title:h,"aria-label":"Star","aria-pressed":a,onClick:y("flag",x)})]}),s.jsx("div",{className:"flex-1"}),p]}),n&&s.jsx("p",{role:"status",className:"border-b border-line bg-surface-sunken px-3 py-1 text-2xs text-fg-subtle",children:n})]})}function Ja({message:e,onClick:t,isFocused:n,isUnread:a,trailing:r}){const o=s.jsxs(s.Fragment,{children:[s.jsx(Ns,{className:"size-3.5 shrink-0 text-fg-subtle"}),s.jsxs("div",{className:"relative shrink-0",children:[s.jsx(gt,{name:e.fromName,email:e.fromEmail,size:"md"}),a&&s.jsx("span",{className:"absolute -top-0.5 -right-0.5 size-2 rounded-full border border-canvas bg-accent"})]}),s.jsx("span",{className:M("w-36 shrink-0 truncate text-sm",a?"font-semibold text-fg":"font-medium text-fg-muted"),children:e.fromName}),s.jsx("span",{className:"min-w-0 flex-1 truncate text-xs text-fg-subtle",children:e.snippet}),r??s.jsx("span",{className:"shrink-0 text-2xs text-fg-subtle tabular-nums",children:e.dateLabel})]}),i=M("group flex h-section-row w-full items-center gap-3 border-b border-line px-2 text-left transition-colors hover:bg-surface-sunken lg:px-4",n&&"bg-surface-sunken ring-1 ring-inset ring-accent/30");return t?s.jsx("div",{role:"button",tabIndex:0,"aria-expanded":!1,onClick:t,onKeyDown:l=>{Zr(l)&&(l.preventDefault(),t())},className:M(i,"cursor-pointer"),children:o}):s.jsx("div",{className:i,children:o})}function Za({message:e,warning:t,onHeaderClick:n,isFocused:a,senderBadge:r,trailing:o,to:i,indicators:l,actionMenu:d,actionBar:x,body:g}){const v=s.jsxs(s.Fragment,{children:[s.jsxs("div",{className:"flex items-baseline justify-between gap-2",children:[s.jsxs("span",{className:"text-sm font-semibold text-fg",children:[e.fromName,r]}),o??s.jsx("span",{className:"text-2xs text-fg-subtle",children:e.dateLabel})]}),s.jsx("div",{className:"text-xs text-fg-subtle",children:e.fromEmail}),i!==null&&s.jsx("div",{className:"text-xs text-fg-subtle",children:i??s.jsxs(s.Fragment,{children:["to ",e.toLabel]})})]});return s.jsxs("div",{className:"px-2 py-3 lg:px-4",children:[s.jsxs("div",{className:M("-mx-2 -my-1 flex items-start gap-3 rounded-sm px-2 py-1",a&&"ring-1 ring-inset ring-accent/30"),children:[n?s.jsx("button",{type:"button",onClick:n,"aria-expanded":!0,"aria-label":"Collapse message",className:"mt-1 shrink-0 text-fg-subtle transition-colors hover:text-fg",children:s.jsx(_e,{className:"size-3.5"})}):s.jsx(_e,{className:"mt-1 size-3.5 shrink-0 text-fg-subtle"}),s.jsx(gt,{name:e.fromName,email:e.fromEmail,size:"md"}),s.jsxs("div",{className:"min-w-0 flex-1",children:[n?s.jsx("button",{type:"button",onClick:n,className:"w-full text-left",children:v}):v,l]}),d&&s.jsx("div",{className:"shrink-0",children:d})]}),t&&s.jsxs("div",{className:"mt-3 flex items-start gap-3 rounded-md bg-danger-soft p-3",children:[s.jsx(rt,{className:"mt-0.5 size-4 shrink-0 text-danger"}),s.jsxs("div",{className:"text-sm text-fg",children:[s.jsx("span",{className:"font-semibold text-danger",children:"Caution: "}),t," ",s.jsx("button",{type:"button",className:"text-accent underline",children:"Why?"})]})]}),x&&s.jsx("div",{className:"mt-3 -mx-2 lg:-mx-4",children:x}),s.jsx(Si,{children:g??s.jsx(Ti,{className:"mt-3",html:e.bodyHtml,category:e.framed?"newsletter":"personal",allowImages:!0})})]})}function zc({thread:e,onBack:t,intelligence:n,intelligenceOpen:a,onToggleIntelligence:r,actions:o,children:i,touchHandlers:l}){const[d,x]=c.useState(!1),g=r!==void 0,v=g?a??!1:d,m=!!n||g,b=()=>{if(g){r?.();return}x(u=>!u)},f=()=>{if(g){v&&r?.();return}x(!1)};return s.jsxs("article",{className:"flex h-full w-full min-w-0 flex-col bg-canvas",children:[s.jsxs("header",{className:"flex h-pane-header shrink-0 items-center gap-2 border-b border-line bg-surface px-row-inset",children:[s.jsx(K,{variant:"ghost",size:"sm",icon:s.jsx(ta,{className:"size-4"}),onClick:t,"aria-label":"Back to messages",className:"-ml-1 shrink-0"}),s.jsx("h2",{className:"min-w-0 flex-1 truncate text-sm font-semibold text-fg",children:e.subject}),m&&s.jsx(K,{variant:"ghost",size:"sm",icon:s.jsx(ea,{className:"size-4"}),onClick:b,"aria-label":v?"Hide intelligence panel":"Show intelligence panel","aria-pressed":v,title:"Intelligence",className:M("shrink-0",v&&"bg-accent-2-soft text-accent-2")})]}),s.jsx("div",{className:"flex-1 overflow-y-auto",style:l?{touchAction:"pan-y"}:void 0,...l,children:i??[...e.messages].reverse().map(u=>{const h=p=>p?()=>p(u.id):void 0;return u.expanded?s.jsx(Za,{message:u,warning:e.warning,onHeaderClick:h(o?.onToggleExpand),actionBar:s.jsx(Xa,{hasThread:!0,onReply:h(o?.onReply),onReplyAll:h(o?.onReplyAll),onForward:h(o?.onForward),onToggleStar:h(o?.onToggleStar),onDelete:h(o?.onDelete),onToggleRead:h(o?.onToggleRead),moveSlot:o?.moveSlot?.(u.id)})},u.id):s.jsx(Ja,{message:u,onClick:h(o?.onToggleExpand)},u.id)})}),n&&!g&&s.jsx(eo,{open:v,onClose:f,title:"Intelligence",anchor:"right",className:"p-0",children:s.jsx(Ha,{data:n,onClose:f,className:"h-full w-full border-l-0"})})]})}function _c({state:e,onRetry:t}){return s.jsxs("div",{role:"alert","data-testid":"attachment-error",className:"flex items-start gap-2 border-t border-danger/30 bg-danger-soft px-2 py-2 text-xs",children:[s.jsx(to,{className:"mt-0.5 size-3.5 shrink-0 text-danger","aria-hidden":!0}),s.jsxs("div",{className:"min-w-0 flex-1",children:[s.jsx("p",{className:"font-medium text-danger",children:e.title}),s.jsx("p",{className:"mt-0.5 text-fg-muted",children:e.detail})]}),s.jsxs("div",{className:"flex shrink-0 items-center gap-3",children:[s.jsx("button",{type:"button",onClick:t,className:"font-medium text-accent hover:underline",children:"Try again"}),e.reportUrl&&s.jsx("a",{href:e.reportUrl,target:"_blank",rel:"noreferrer",className:"font-medium text-accent hover:underline",children:"Report this"})]})]})}function Uc({attachments:e,onDownload:t,hasUnlistedAttachment:n=!1,className:a}){return e.length===0&&!n?null:s.jsxs("section",{"aria-label":"Attachments","data-testid":"attachment-list",className:M("space-y-1.5",a),children:[s.jsxs("h3",{className:"flex items-center gap-1.5 text-2xs font-semibold uppercase tracking-wider text-fg-subtle",children:[s.jsx(qt,{className:"size-3","aria-hidden":!0}),e.length===0?"Attachment":e.length===1?"1 attachment":`${e.length} attachments`]}),e.length>0&&s.jsx("ul",{className:"overflow-hidden rounded-sm border border-line bg-surface",children:e.map(r=>{const o=r.download.status==="downloading";return s.jsxs("li",{className:"border-t border-line first:border-t-0",children:[s.jsxs("button",{type:"button",onClick:()=>t(r.attachmentId),disabled:o,"data-testid":"attachment-download","aria-label":`Download ${r.filename}`,className:"flex w-full items-center gap-2 px-2 py-2 text-left transition-colors hover:bg-surface-sunken disabled:cursor-progress disabled:opacity-60",children:[s.jsxs("span",{className:"min-w-0 flex-1",children:[s.jsx("bdi",{className:"block truncate text-sm text-fg",title:r.filename,children:r.filename}),s.jsxs("span",{className:"block truncate text-2xs text-fg-subtle",children:[r.typeLabel," ·"," ",ki(r.sizeOctets)]})]}),o?s.jsx(sa,{className:"size-4 shrink-0 animate-spin text-fg-subtle","aria-hidden":!0}):s.jsx(zi,{className:"size-4 shrink-0 text-fg-subtle","aria-hidden":!0})]}),r.download.status==="failed"&&s.jsx(_c,{state:r.download,onRetry:()=>t(r.attachmentId)})]},r.attachmentId)})}),n&&s.jsx("p",{role:"alert","data-testid":"attachment-unlisted",className:"rounded-sm border border-line bg-surface px-2 py-2 text-xs text-fg-muted",children:"The mail server says this message carries an attachment, but none of its parts describe one. Re-sync the account from Settings; if the attachment still does not appear, the message is worth reporting."})]})}function Bc({label:e,onUndo:t,undoLabel:n="Undo",filtersHref:a,className:r}){return s.jsxs(je,{tone:"accent",className:M("py-1 text-xs",r),children:[s.jsx(ji,{className:"size-3.5 shrink-0","aria-hidden":!0}),s.jsx("span",{children:e}),t&&s.jsx("button",{type:"button",onClick:o=>{o.stopPropagation(),t()},className:"font-semibold underline decoration-dotted underline-offset-2 hover:decoration-solid",children:n}),a&&s.jsx("a",{href:a,onClick:o=>{o.stopPropagation()},className:"font-semibold underline decoration-dotted underline-offset-2 hover:decoration-solid",children:"Manage filter"})]})}const Kc="peer relative size-5 shrink-0 cursor-pointer appearance-none rounded-md border border-line-strong bg-surface outline-none transition-colors checked:border-positive checked:bg-positive indeterminate:border-positive indeterminate:bg-positive focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1 focus-visible:ring-offset-surface",kn="pointer-events-none absolute inset-0 m-auto size-3.5 text-accent-fg";function Hc({label:e,description:t,indeterminate:n=!1,checked:a,onChange:r,className:o,...i}){const l=c.useRef(null);c.useEffect(()=>{l.current&&(l.current.indeterminate=n)},[n]);const d=s.jsxs("span",{className:"relative inline-flex",children:[s.jsx("input",{ref:l,type:"checkbox",checked:a,onChange:r,className:Kc,...i}),s.jsx(et,{className:M(kn,"hidden peer-checked:block"),"aria-hidden":!0}),s.jsx(Hi,{className:M(kn,"hidden peer-indeterminate:block"),"aria-hidden":!0})]});return e===void 0&&t===void 0?s.jsx("span",{className:o,children:d}):s.jsxs("label",{className:M("flex min-h-11 cursor-pointer items-center gap-3 text-left",o),children:[d,s.jsxs("span",{className:"flex min-w-0 flex-col",children:[e!==void 0&&s.jsx("span",{className:"text-sm text-fg",children:e}),t!==void 0&&s.jsx("span",{className:"text-xs text-fg-subtle",children:t})]})]})}function qc(e){return{id:e.id,fromName:e.sender,fromEmail:e.senderEmail??e.sender,subject:e.subject,snippet:e.snippet,timeLabel:e.date,isRead:!e.unread,starred:e.flagged,...e.mailboxId?{mailboxId:e.mailboxId}:{}}}function Qc({result:e,onClick:t,query:n,showFolder:a=!0}){const r=a&&e.folder?so(e.folder):void 0;return s.jsx("button",{type:"button",onClick:t,className:M("group",Os({}),"border-b border-line"),children:s.jsx(zs,{thread:qc(e),highlightQuery:n,badge:s.jsxs(s.Fragment,{children:[r&&s.jsx(je,{tone:"neutral",className:"shrink-0",children:r}),e.category&&s.jsx(je,{tone:e.category.tone??"neutral",className:"shrink-0",children:e.category.label}),e.matchedChunkLabel&&s.jsx(je,{tone:"neutral",className:"shrink-0",children:`matched: ${e.matchedChunkLabel}`}),e.score!=null&&s.jsx("span",{className:"shrink-0 text-2xs text-fg-subtle tabular-nums",children:e.score.toFixed(2)})]})})})}const Gc=e=>e===1?"result":"results";function Wc({count:e,onScopeToSpam:t}){return s.jsx(na,{tone:"info",variant:"soft",className:"items-center justify-between gap-3 rounded-none border-b border-line",children:s.jsxs("div",{className:"flex items-center justify-between gap-3",children:[s.jsxs("p",{className:"min-w-0 text-xs text-fg-muted",children:[s.jsx("span",{className:"font-semibold text-fg tabular-nums",children:e})," ",`${Gc(e)} from Spam`]}),s.jsx(K,{variant:"ghost",size:"sm",onClick:t,className:"shrink-0 text-accent",children:"Go to Spam"})]})})}const jn=6,Vc={kind:"global"},Yc=e=>e.kind==="folder"&&e.role==="junk",Xc=e=>e.folder?.role==="junk";function er(e){const t=[],n=[];for(const a of e)Xc(a)?n.push(a):t.push(a);return{kept:t,spam:n}}function tr({onClick:e,blockedReason:t}){const n=c.useId(),[a,r]=c.useState(!1);return s.jsxs("div",{className:"border-b border-line px-row-inset py-1.5",children:[s.jsxs("button",{type:"button",onClick:()=>{if(t){r(!0);return}e()},"aria-describedby":t?n:void 0,className:M("flex w-full items-center gap-1.5 rounded-md px-2 py-1.5 text-left text-xs font-medium transition-colors",t?"text-fg-subtle opacity-55":"text-accent hover:bg-surface-sunken"),children:[s.jsx(no,{className:"size-3.5 shrink-0","aria-hidden":"true"}),s.jsx("span",{children:"Make this a filter"})]}),t&&s.jsx(Xn,{id:n,reason:t,nudged:a,className:"px-2 pt-1 text-2xs text-warning"})]})}function Jc({section:e,query:t,onSelectResult:n,showFolder:a}){const[r,o]=c.useState(e.initialCollapsed??!1),[i,l]=c.useState(!1),d=e.results.length>jn,g=!i&&d?e.results.slice(0,jn):e.results,v=e.results.length-g.length;return s.jsxs("div",{children:[s.jsxs("button",{type:"button","aria-expanded":!r,onClick:()=>o(m=>!m),className:"sticky top-0 z-10 flex h-section-row w-full items-center gap-1.5 border-b border-line bg-surface-sunken px-row-inset text-left transition-colors hover:bg-surface",children:[s.jsx("span",{className:"flex-1 text-2xs font-semibold uppercase tracking-wider text-fg-subtle",children:e.label}),s.jsx("span",{className:"text-2xs text-fg-subtle tabular-nums",children:e.results.length}),s.jsx(_e,{className:M("size-3 shrink-0 text-fg-subtle transition-transform duration-200",r?"rotate-0":"rotate-180")})]}),!r&&s.jsxs(s.Fragment,{children:[g.map(m=>s.jsx(Qc,{result:m,query:t,showFolder:a,onClick:n?()=>n(m):void 0},m.id)),d&&s.jsxs("button",{type:"button",onClick:()=>l(m=>!m),className:"flex w-full items-center justify-center border-b border-line px-row-inset py-1.5 text-2xs font-medium text-accent transition-colors hover:bg-surface",children:[i?"Show less":`Show ${v} more`,!i&&s.jsx(_e,{className:"ml-1 size-3"})]})]})]})}function sr({value:e,recentSearches:t,onPickRecent:n,sections:a,loading:r,onSelectResult:o,tokens:i,scope:l=Vc,makeFilter:d}){if(!(e.trim().length>0))return t&&t.length>0?s.jsxs("div",{className:"flex flex-col",children:[s.jsx("h3",{className:"px-row-inset pb-1 pt-3 text-2xs font-semibold uppercase tracking-wide text-fg-subtle",children:"Recent searches"}),t.map(k=>s.jsxs("button",{type:"button",onClick:()=>n?.(k),className:"flex w-full items-center gap-2.5 border-b border-line px-row-inset py-2.5 text-left transition-colors hover:bg-surface-sunken",children:[s.jsx(Ca,{className:"size-4 shrink-0 text-fg-subtle"}),s.jsx("span",{className:"min-w-0 flex-1 truncate text-sm text-fg-muted",children:k})]},k))]}):s.jsx("p",{className:"px-row-inset py-6 text-center text-sm text-fg-subtle",children:"Search across your mail by sender, subject or words in the message."});const g=i&&i.length>0&&s.jsx(ao,{tokens:i}),v=d&&s.jsx(tr,{...d});if(r)return s.jsxs("div",{className:"flex flex-col",children:[v,g,s.jsx("div",{className:"flex flex-col gap-3 px-row-inset py-4",children:[0,1,2,3].map(k=>s.jsxs("div",{className:"flex flex-col gap-1.5",children:[s.jsx("div",{className:"h-3 w-1/3 animate-pulse rounded bg-surface-sunken"}),s.jsx("div",{className:"h-3 w-2/3 animate-pulse rounded bg-surface-sunken"}),s.jsx("div",{className:"h-2.5 w-1/2 animate-pulse rounded bg-surface-sunken"})]},k))})]});const m=l.kind==="global",b=Yc(l)||l.kind==="collection",f=m||l.kind==="collection",u=(a??[]).map(k=>{if(b)return{section:k,spam:[]};const{kept:S,spam:E}=er(k.results);return{section:{...k,results:S},spam:E}}),h=u.map(k=>k.section),p=u.reduce((k,S)=>k+S.spam.length,0),j=l.kind==="global"&&p>0&&l.onScopeToSpam!==void 0?s.jsx(Wc,{count:p,onScopeToSpam:l.onScopeToSpam}):void 0;return h.some(k=>k.results.length>0)?s.jsxs("div",{className:"flex flex-col",children:[v,g,j,h.filter(k=>k.results.length>0).map(k=>s.jsx(Jc,{section:k,query:e,showFolder:f,onSelectResult:o},k.id))]}):s.jsxs("div",{className:"flex flex-col",children:[v,g,j,s.jsxs("div",{className:"px-row-inset py-10 text-center",children:[s.jsxs("p",{className:"text-sm font-medium text-fg",children:["No matches for “",e,"”"]}),s.jsx("p",{className:"mt-1 text-xs text-fg-subtle",children:"Try a different word, or adjust the filters above."})]})]})}function Zc({value:e,onChange:t,onClear:n,onCancel:a,filter:r,recentSearches:o,onPickRecent:i,sections:l,loading:d,onSelectResult:x,tokens:g,chips:v,onRemoveChip:m,scope:b,makeFilter:f,suggest:u,suggestList:h}){const p=s.jsx(sr,{value:e,recentSearches:o,onPickRecent:i,sections:l,loading:d,onSelectResult:x,tokens:g,scope:b,makeFilter:f});return s.jsxs("article",{className:"flex h-full w-full min-w-0 flex-col bg-canvas",children:[s.jsxs("header",{className:"flex h-pane-header shrink-0 items-center gap-2 border-b border-line bg-surface px-row-inset",children:[s.jsx("div",{className:"min-w-0 flex-1",children:s.jsx(ha,{value:e,onChange:t,onClear:n,chips:v,onRemoveChip:m,globalFocusKey:!1,showClearButton:!1,suggest:u})}),s.jsx(K,{variant:"ghost",size:"sm",icon:s.jsx(Ue,{className:"size-4"}),onClick:a,"aria-label":"Clear and close search",className:"-mr-1 shrink-0"})]}),h,r&&e.trim().length===0?s.jsx(ro,{children:s.jsx(Jn,{...r,children:p})}):s.jsx("div",{className:"flex-1 overflow-y-auto",children:p})]})}const wn=e=>e.toLocaleString();function Nn({selectAll:e,selecting:t,className:n}){return s.jsx(Hc,{className:n,checked:e.checked,indeterminate:e.indeterminate,onChange:e.onChange,label:s.jsx("span",{className:"font-medium text-accent",children:e.checked&&t?"Deselect all":"Select all"})})}function ed({title:e,count:t,onCancel:n,onDelete:a,onMove:r,onOrganize:o,onJunk:i,onMarkRead:l,navSlot:d,titleMeta:x,searchSlot:g,searchField:v,idleSlot:m,overflowSlot:b,isBusy:f=!1,isCounting:u=!1,selectAll:h,statusLabel:p,progress:j,notice:y}){const k=t>0||u,S=h?.checked?`All ${wn(t)} loaded selected`:`${wn(t)} ${t===1?"message":"messages"} selected`,E=[];return i&&!f&&!u&&E.push({key:"junk",label:"Junk",icon:s.jsx(rt,{className:"size-4"}),onSelect:i}),l&&!f&&!u&&E.push({key:"mark-read",label:"Mark read",icon:s.jsx(Ds,{className:"size-4"}),onSelect:l}),s.jsxs("header",{"data-selection-bar":"",className:"flex shrink-0 flex-col border-b border-line bg-surface-sunken",children:[s.jsxs("div",{"data-selection-bar-row":"actions",className:"flex h-pane-header items-center gap-1 px-row-inset",children:[k?s.jsx(K,{variant:"ghost",size:"touch",icon:s.jsx(ta,{className:"size-5"}),onClick:n,"aria-label":"Cancel selection",className:"-ml-2 shrink-0"}):d,h&&s.jsx(Nn,{selectAll:h,selecting:k,className:"hidden shrink-0 pr-2 md:flex"}),k?s.jsx("span",{"data-selection-count":"",className:"min-w-0 flex-1 truncate px-1 text-sm font-medium text-fg",role:"status","aria-live":"polite",children:p??S}):v?s.jsx("div",{className:"flex min-w-0 flex-1 items-center gap-1",children:v}):s.jsxs(s.Fragment,{children:[s.jsx("h1",{className:"min-w-0 flex-1 truncate px-1 text-sm font-semibold text-fg",children:e}),x,g]}),k&&!u&&s.jsxs(s.Fragment,{children:[s.jsx(K,{variant:"ghost",size:"touch",icon:f?s.jsx(sa,{className:"size-5 animate-spin"}):s.jsx(yt,{className:"size-5 text-danger"}),onClick:f?void 0:a,"aria-label":"Move selected messages to Trash","aria-busy":f||void 0,className:"shrink-0"}),!f&&r&&s.jsx(K,{variant:"ghost",size:"touch",icon:s.jsx(Ss,{className:"size-5"}),onClick:r,"aria-label":"Move selected messages",className:"shrink-0"}),!f&&o&&s.jsx(K,{variant:"ghost",size:"touch",icon:s.jsx(Be,{className:"size-5"}),onClick:o,"aria-label":"Organize selected messages",className:"shrink-0"})]}),k&&s.jsx(ga,{triggerLabel:"More actions",items:E,className:"shrink-0",children:!f&&!u&&b})]}),!k&&m,k&&h&&s.jsx("div",{"data-selection-bar-row":"select-all",className:"px-row-inset pb-2 md:hidden",children:s.jsx(Nn,{selectAll:h,selecting:k,className:"w-full"})}),j&&s.jsx("div",{className:"px-row-inset pb-2",children:s.jsx(oo,{value:j.value,max:j.max,tone:j.tone})}),y&&s.jsx(na,{"data-selection-notice":"",tone:y.tone,variant:"soft",role:"status","aria-live":"polite",className:"mx-row-inset mb-2",children:s.jsxs("div",{className:"flex items-center justify-between gap-2",children:[y.text&&s.jsx("span",{children:y.text}),y.action&&s.jsx(K,{variant:"ghost",size:"md",onClick:y.action.onClick,className:"-my-1 min-h-11 shrink-0",children:y.action.label})]})})]})}const _s=[{id:"all",label:"All",tone:"neutral"},{id:"personal",label:"Personal",tone:"accent"},{id:"uncategorized",label:"Unclassified",tone:"neutral"},{id:"transactional",label:"Transactional",tone:"positive"},{id:"newsletter",label:"Newsletter",tone:"neutral"},{id:"marketing",label:"Marketing",tone:"warning"},{id:"social",label:"Social",tone:"warning"},{id:"automated",label:"Automated",tone:"neutral"}],nr={id:"unread",label:"Unread"},td={id:"flagged",label:"Starred"},ar={id:"attachment",label:"Has attachment"};function sd(e){if(!(e.length<=1))return e.map(t=>({id:t.id,label:t.label,count:t.count,active:t.active}))}function Rp(e=[]){return{categories:[..._s],filters:Zn,sources:sd(e)}}function nd(){return{categories:[..._s],filters:[nr,td,ar]}}function Mp(){return{categories:[..._s],filters:[nr,ar]}}function ad(e,t){return e.endsWith(t)?e.length===t.length||e[e.length-t.length-1]===".":!1}function rd(e,t){const n=e.length-t.length-2,a=e.lastIndexOf(".",n);return a===-1?e:e.slice(a+1)}function od(e,t,n){if(n.validHosts!==null){const r=n.validHosts;for(const o of r)if(ad(t,o))return o}let a=0;if(t.startsWith("."))for(;a<t.length&&t[a]===".";)a+=1;return e.length===t.length-a?null:rd(t,e)}const ls=/[\t\n\r]/g;let xs=!1;function Cn(e){return e>=97&&e<=122||e>=48&&e<=57||e>127||e>=65&&e<=90||e===45||e===95}function Sn(e,t,n){const a=n-t,r=e.charCodeAt(t)|32;if(a===2)return r===119&&(e.charCodeAt(t+1)|32)===115?1:0;if(a===3){const o=e.charCodeAt(t+1)|32,i=e.charCodeAt(t+2)|32;return r===119&&o===115&&i===115||r===102&&o===116&&i===112?1:0}else if(a===4){const o=e.charCodeAt(t+1)|32,i=e.charCodeAt(t+2)|32,l=e.charCodeAt(t+3)|32;return r===104&&o===116&&i===116&&l===112?1:r===102&&o===105&&i===108&&l===101?2:0}else if(a===5)return r===104&&(e.charCodeAt(t+1)|32)===116&&(e.charCodeAt(t+2)|32)===116&&(e.charCodeAt(t+3)|32)===112&&(e.charCodeAt(t+4)|32)===115?1:0;return 0}function ht(e,t,n=!1){let a=0,r=e.length,o=!1,i=!1;if(xs=!1,!t){if(e.startsWith("data:"))return null;for(;a<e.length&&e.charCodeAt(a)<=32;)a+=1;for(;r>a+1&&e.charCodeAt(r-1)<=32;)r-=1;if(e.charCodeAt(a)===47&&e.charCodeAt(a+1)===47)a+=2;else{const h=e.indexOf(":/",a);if(h!==-1){const p=Sn(e,a,h);if(p===1)for(i=!0,a=h+2;e.charCodeAt(a)===47||e.charCodeAt(a)===92;)a+=1;else if(p===2){i=!0,a=h+1;let j=0;for(;(e.charCodeAt(a)===47||e.charCodeAt(a)===92)&&j<2;)a+=1,j+=1;if(j<2)return null}else{for(let j=a;j<h;j+=1){const y=e.charCodeAt(j)|32;if(!(y>=97&&y<=122||y>=48&&y<=57||y===46||y===45||y===43)){const k=e.charCodeAt(j);return k===9||k===10||k===13?ht(e.replace(ls,""),t,n):null}}if(e.charCodeAt(h+2)===47)a=h+3;else return null}}else if(e.charCodeAt(a)!==91){let p=-1;for(let j=a;j<r;j+=1){const y=e.charCodeAt(j);if(y===9||y===10||y===13)return ht(e.replace(ls,""),t,n);if(y===58){p=j;break}if(y===47||y===92||y===63||y===35)break}if(p!==-1){let j=!1;for(let y=p+1;y<r;y+=1){const k=e.charCodeAt(y);if(k===47||k===92||k===63||k===35)break;if(k===64){j=!0;break}}if(!j){let y=!0,k=p+1;for(;k<r;k+=1){const S=e.charCodeAt(k);if(S===47||S===92||S===63||S===35)break;if(S<48||S>57){y=!1;break}}if(k===p+1&&(y=!1),!y){const S=Sn(e,a,p);if(S===0){let E=!1;for(let A=p+1;A<r;A+=1){const O=e.charCodeAt(A);if(O===47||O===92||O===63||O===35)break;if(O===58){E=!0;break}}if(!E)return null}else if(i=!0,a=p+1,S===2){let E=0;for(;(e.charCodeAt(a)===47||e.charCodeAt(a)===92)&&E<2;)a+=1,E+=1;if(E<2)return null}else for(;e.charCodeAt(a)===47||e.charCodeAt(a)===92;)a+=1}}}}}let d=-1,x=-1,g=-1,v=-1,m=!1,b=n,f=a-1,u=-1;if(n&&a<r){const h=e.charCodeAt(a);(!(Cn(h)||h===46||h===95)||h===45)&&(b=!1)}for(let h=a;h<r;h+=1){const p=e.charCodeAt(h);if(p<64)if(p===47||p===35||p===63){r=h;break}else p===58?(v===-1&&(v=h),g=h):p===9||p===10||p===13?m=!0:n&&(p===46?((h-f>64||u===46||u===45)&&(b=!1),f=h):(p<48||p>57)&&(p!==45||u===46)&&(b=!1));else if(i&&p===92){r=h;break}else p===64?(d=h,v=-1):p===93?x=h:p>=65&&p<=90?o=!0:n&&!Cn(p)&&(b=!1);n&&(u=p)}if(m)return ht(e.replace(ls,""),t,n);if(d!==-1&&d>=a&&d<r&&(a=d+1),e.charCodeAt(a)===91)return x!==-1?e.slice(a+1,x).toLowerCase():null;if(g!==-1&&g>a&&g<r&&v===g&&(r=g),a>=r)return null;n&&b&&d===-1&&g===-1&&x===-1&&e.charCodeAt(r-1)!==46&&r-a<=255&&r-f-1<=63&&u!==45&&(xs=!0)}for(;r>a+1&&e.charCodeAt(r-1)===46;)r-=1;const l=a!==0||r!==e.length?e.slice(a,r):e;return o?l.toLowerCase():l}function id(e){if(e.length<7||e.length>15)return!1;let t=0;for(let n=0;n<e.length;n+=1){const a=e.charCodeAt(n);if(a===46)t+=1;else if(a<48||a>57)return!1}return t===3&&e.charCodeAt(0)!==46&&e.charCodeAt(e.length-1)!==46}function ld(e){if(e.length<3)return!1;let t=e.startsWith("[")?1:0,n=e.length;if(e[n-1]==="]"&&(n-=1),n-t>39)return!1;let a=!1;for(;t<n;t+=1){const r=e.charCodeAt(t);if(r===58)a=!0;else if(!(r>=48&&r<=57||r>=97&&r<=102||r>=65&&r<=70))return!1}return a}function cd(e){return ld(e)||id(e)}function Tn(e){return e>=97&&e<=122||e>=48&&e<=57||e>127}function In(e){if(e.length>255||e.length===0||!Tn(e.charCodeAt(0))&&e.charCodeAt(0)!==46&&e.charCodeAt(0)!==95)return!1;let t=-1,n=-1;const a=e.length;for(let r=0;r<a;r+=1){const o=e.charCodeAt(r);if(o===46){if(r-t>64||n===46||n===45)return!1;t=r}else if(!(Tn(o)||o===45||o===95)||o===45&&n===46)return!1;n=o}return a-t-1<=63&&n!==45}function dd({allowIcannDomains:e=!0,allowPrivateDomains:t=!1,detectIp:n=!0,detectSpecialUse:a=!1,extractHostname:r=!0,mixedInputs:o=!0,validHosts:i=null,validateHostname:l=!0}){return{allowIcannDomains:e,allowPrivateDomains:t,detectIp:n,detectSpecialUse:a,extractHostname:r,mixedInputs:o,validHosts:i,validateHostname:l}}const ud=dd({});function fd(e){return ud}function md(){return{domain:null,domainWithoutSuffix:null,hostname:null,isIcann:null,isIp:null,isPrivate:null,isSpecialUse:null,publicSuffix:null,subdomain:null}}function pd(e){e.domain=null,e.domainWithoutSuffix=null,e.hostname=null,e.isIcann=null,e.isIp=null,e.isPrivate=null,e.isSpecialUse=null,e.publicSuffix=null,e.subdomain=null}function hd(e,t,n,a,r){const o=fd();if(typeof e!="string")return r;let i=!1;return o.extractHostname?o.mixedInputs?(i=In(e),r.hostname=ht(e,i,o.validateHostname)):r.hostname=ht(e,!1,o.validateHostname):r.hostname=e,o.detectIp&&r.hostname!==null&&(r.isIp=cd(r.hostname),r.isIp)?r:o.validateHostname&&o.extractHostname&&r.hostname!==null&&!(i&&r.hostname===e)&&!xs&&!In(r.hostname)?(r.hostname=null,r):(r.hostname===null||(n(r.hostname,o,r),r.publicSuffix===null)||(r.domain=od(r.publicSuffix,r.hostname,o)),r)}const En=md();function gd(e,t){return pd(En),hd(e,3,io,t,En).domain}const Qt=e=>{const t=new Set,n=[];for(const a of e){const r=a.trim();if(r==="")continue;const o=r.toLowerCase();t.has(o)||(t.add(o),n.push(r))}return n},xd=e=>{const t=e.lastIndexOf("@");return t>=0?e.slice(t+1):e},rr=e=>gd(xd(e.trim())),bd=e=>{const t=Qt(e);if(t.length<2)return null;let n=null;for(const a of t){const r=rr(a);if(r===null)return null;if(n===null)n=r;else if(n!==r)return null}return n},Gt=e=>{const t=bd(e);return t!==null?[{field:"FromDomain",value:t}]:Qt(e).map(n=>({field:"From",value:n}))},vd=e=>{const t=new Map;for(const r of e){const o=r.normalizedEmail.trim().toLowerCase();if(o==="")continue;const i=t.get(o);i?i.count+=1:t.set(o,{sender:r,count:1})}let n,a=0;for(const{sender:r,count:o}of t.values())o<=a||(n=r,a=o);return n},or=e=>e.displayName?.trim()||e.normalizedEmail,yd=/^\s*(?:(?:re|aw|fwd?|vs|sv|antw|res|enc|tr)\s*(?:\[\d+\])?\s*:|\[[^\]]{1,32}\])\s*/i,kd=e=>{let t=e.replace(/\s+/g," ").trim();for(;;){const n=t.replace(yd,"");if(n===t)return t.trim();t=n}},jd=new Set(["a","an","and","are","as","at","be","by","for","from","has","have","in","is","it","me","my","new","of","on","or","our","the","this","to","was","we","with","you","your"]),wd=3,cs=e=>e.split(" ").filter(t=>t!==""),Rn=e=>e.length===0||e.join(" ").length<wd?!1:e.some(t=>!jd.has(t.toLowerCase())),Nd=(e,t)=>e.findIndex((n,a)=>t.every((r,o)=>e[a+o]?.toLowerCase()===r.toLowerCase())),Cd=e=>{const t=e.map(kd).filter(o=>o!=="");if(t.length===0)return;const[n,...a]=t;if(a.length===0)return Rn(cs(n))?n:void 0;const r=cs(n);for(let o=r.length;o>0;o-=1)for(let i=0;i+o<=r.length;i+=1){const l=r.slice(i,i+o);if(Rn(l)&&a.every(d=>Nd(cs(d),l)>=0))return l.join(" ")}},Sd=(e,t)=>{const n=Gt(e);if(Qt(e).length===1||n.length===1&&n[0].field==="FromDomain")return n;const a=Cd(t);return a!==void 0?[{field:"Subject",value:a}]:n},Td=({match:e,sender:t,folder:n})=>{const a=e??t;return a?n?`${a} → ${n}`:e?`Mail matching ${e}`:`Mail from ${a}`:n?`Mail to ${n}`:""},Id=e=>e.clauses.length>0,Ed=e=>({scopedOutFolder:e.scopedOut?.label,droppedFacets:e.droppedFacets.map(t=>t.label),droppedSemantic:e.droppedSemantic}),Rd=({orderedIds:e,isDesktop:t,initialFocusedId:n,initialSelectedIds:a,onExitSelection:r})=>{const[o,i]=c.useState(n),[l,d]=c.useState(),x=c.useCallback(N=>{d($=>$===N?$:void 0),i(N)},[]),g=Tc({initialSelectedIds:a}),{selectedCount:v,toggle:m,clearSelection:b,selectRange:f,setAnchor:u,selectAll:h}=g,p=jc(v,t),j=c.useRef(null),y=c.useRef(!1),k=c.useCallback(()=>{r?.(),b()},[b,r]),S=c.useMemo(()=>o?e.indexOf(o):-1,[e,o]),E=c.useCallback(N=>{if(N<0||N>=e.length)return;const $=e[N];if(p){m($);return}j.current=$,y.current=!1,d($),i($)},[e,p,m]),A=c.useCallback(()=>{e.length!==0&&E(S<0?0:Math.min(S+1,e.length-1))},[e.length,S,E]),O=c.useCallback(()=>{e.length!==0&&E(S<=0?0:S-1)},[e.length,S,E]),F=c.useCallback(()=>E(0),[E]),L=c.useCallback(()=>E(e.length-1),[E,e.length]),z=c.useCallback(()=>{o&&m(o)},[o,m]),I=c.useCallback((N,$)=>{const C=kc($);return C==="range"?(f(e,N,o),!0):C==="toggle"?(m(N),!0):(k(),u(N),!1)},[e,o,f,m,k,u]),_=c.useCallback(N=>{const $=Sc(e,o,N);$!==void 0&&(f(e,$),j.current=$,y.current=!1,d(void 0),i($))},[e,o,f]),w=c.useCallback(()=>_(-1),[_]),R=c.useCallback(()=>_(1),[_]),P=c.useCallback(()=>{e.length>0&&h(e)},[e,h]);return{focusedMessageId:o,setFocusedMessageId:x,keyboardFocusedMessageId:l,focusIndex:S,pendingDomFocusRef:j,cursorMovedByPointerRef:y,selection:g,isMultiSelectMode:p,exitSelection:k,moveFocusToIndex:E,focusNext:A,focusPrevious:O,focusFirst:F,focusLast:L,toggleFocusedSelection:z,extendRangeUp:w,extendRangeDown:R,selectAllLoaded:P,handleRowSelect:I}};function Md(e,t){if(e===void 0)return{shouldBlockFn:()=>!0,withResolver:!1};if("shouldBlockFn"in e)return e;if(typeof e=="function")return{shouldBlockFn:async()=>await e(),enableBeforeUnload:!0,withResolver:!1};const n=!!(e.condition??!0),a=e.blockerFn;return{shouldBlockFn:async()=>n&&a!==void 0?await a():n,enableBeforeUnload:n,withResolver:a===void 0}}function Ad(e,t){const{shouldBlockFn:n,enableBeforeUnload:a=!0,disabled:r=!1,withResolver:o=!1}=Md(e),i=lo(),{history:l}=i,[d,x]=c.useState({status:"idle",current:void 0,next:void 0,action:void 0,proceed:void 0,reset:void 0});return c.useEffect(()=>{const g=async v=>{function m(p){const j=i.parseLocation(p),y=i.getMatchedRoutes(j.pathname);return y.foundRoute===void 0?{routeId:"__notFound__",fullPath:j.pathname,pathname:j.pathname,params:y.routeParams,search:i.options.parseSearch(p.search)}:{routeId:y.foundRoute.id,fullPath:y.foundRoute.fullPath,pathname:j.pathname,params:y.routeParams,search:i.options.parseSearch(p.search)}}const b=m(v.currentLocation),f=m(v.nextLocation);if(b.routeId==="__notFound__"&&f.routeId!=="__notFound__")return!1;const u=await n({action:v.action,current:b,next:f});if(!o)return u;if(!u)return!1;const h=await new Promise(p=>{x({status:"blocked",current:b,next:f,action:v.action,proceed:()=>p(!1),reset:()=>p(!0)})});return x({status:"idle",current:void 0,next:void 0,action:void 0,proceed:void 0,reset:void 0}),h};return r?void 0:l.block({blockerFn:g,enableBeforeUnload:a})},[n,a,r,o,l,i]),d}const Us=e=>{const{data:t,isLoading:n}=J({...st(),staleTime:1/0}),a=c.useMemo(()=>(t?.accounts??[]).map(l=>l.accountId),[t?.accounts]),r=As({queries:a.map(l=>({...kt({path:{accountId:l}}),staleTime:1/0,enabled:!!e}))}),o=n||r.some(l=>l.isLoading);return{accountId:c.useMemo(()=>{if(e){for(let l=0;l<a.length;l++)if((r[l].data?.items??[]).some(g=>g.mailboxId===e))return a[l]}},[e,a,r]),isLoading:o}},$d=({surface:e})=>{const t=co(),n=uo(),{data:a}=J({..._t({path:{messageId:e.sourceMessageId}})}),{data:r}=J({...st(),staleTime:1/0}),{accountId:o}=Us(a?.message.mailboxId),i=r?.accounts?.find(l=>l.accountId===o);return s.jsx("div",{className:"border-b border-line bg-canvas",children:s.jsx($i,{layout:"flow",mode:e.mode,account:i,sourceMessage:a,outboxMessageId:e.outboxMessageId,onDraftCreated:t,onClose:n})})},ir=100,bs=async e=>e.then(t=>({ok:!0,value:t}),t=>({ok:!1,error:t})),Ld=(e,t=ir)=>{if(e.length===0)return[];const n=[];for(let a=0;a<e.length;a+=t)n.push(e.slice(a,a+t));return n},Pd=(e,t=ir)=>{const n=new Map;for(const a of e){const r=n.get(a.accountId);if(r){r.push(a.id);continue}n.set(a.accountId,[a.id])}return[...n.values()].flatMap(a=>Ld(a,t))},lr=async(e,t,n,a)=>{const r=Pd(e),o=e.length;let i=0;const l=[];for(let d=0;d<r.length;d++){if(a())return l.push(...r.slice(d).flat()),{done:i,failedIds:l,cancelled:!0};const x=r[d],g=await bs(t(x));if(!g.ok)return l.push(...r.slice(d).flat()),n({done:i,total:o}),{done:i,failedIds:l,cancelled:!1,error:g.error};i+=x.length,n({done:i,total:o})}return{done:i,failedIds:l,cancelled:!1}},vt=async(e,t)=>{await lr(e.map(n=>({id:n,accountId:void 0})),async n=>(await t(n),{successCount:n.length,failureCount:0}),()=>{},()=>!1)},Dd=async(e,t,n,a,r)=>{let o=0;const i=[];let l;do{if(r())return{done:o,failedIds:i,cancelled:!0};const d=await bs(e(l));if(!d.ok)return{done:o,failedIds:i,cancelled:!1,error:d.error};const x=d.value;if(x.ids.length>0){const g=await bs(n(x.ids));if(!g.ok)return{done:o,failedIds:i,cancelled:!1,error:g.error};o+=x.ids.length,a({done:o,total:t})}l=x.continuationToken}while(l);return{done:o,failedIds:i,cancelled:!1}},Fd=e=>({done:e.done,total:Math.max(e.total,e.done)}),Od=3e3,zd=(e,t,n)=>{if(e.length===0)return()=>{};const a=setTimeout(()=>n(e),t);return()=>clearTimeout(a)},Bs=(e,t,n)=>{const a=new Map(t.map(o=>[o.messageId,o.mailboxId])),r=new Set;for(const o of e)r.add(a.get(o)??n);return[...r]},zt=(e,t,n)=>e.map(a=>t.has(a.messageId)?{...a,isRead:n}:a),_d=(e,t,n,a)=>e.filter(r=>!r.isRead&&t.has(r.threadMessageId)&&!n.has(r.messageId)&&!a.has(r.messageId)).map(r=>r.messageId),Ud=({messages:e,expandedIds:t,threadId:n,mailboxId:a,accountId:r})=>{const o=le(),{pushError:i}=ve(),l=c.useRef(new Set),d=c.useRef(new Set),{mutate:x}=me({...Ut(),meta:fo,onMutate:async m=>{const b=new Set(m.body.messageIds??[]),f=m.body.isRead??!0,u=Ae({path:{threadId:n}}),h=Ne(Bs(b,e,a));await Promise.all([o.cancelQueries({queryKey:u}),wt(o,h)]);const p=o.getQueriesData({queryKey:u}).filter(y=>y[1]!==void 0).map(([y,k])=>({queryKey:y,data:k})),j=Nt(o,h);return o.setQueriesData({queryKey:u},y=>y&&{...y,items:zt(y.items,b,f)}),Ct(o,h,y=>zt(y,b,f)),{threadMessagesPrefix:u,listPrefixes:h,previousThreadMessages:p,previousThreadsList:j}},onSuccess:(m,b)=>{const f=b.body.messageIds??[];for(const u of f)l.current.add(u),d.current.delete(u)},onError:(m,b,f)=>{const u=b.body.messageIds??[];for(const p of u)d.current.delete(p);if(f){for(const p of f.previousThreadMessages)o.setQueryData(p.queryKey,p.data);jt(o,f.previousThreadsList)}const h=b.body.isRead??!0;i({title:h?"Couldn't mark as read":"Couldn't mark as unread",detail:Me(m),error:m})},onSettled:(m,b,f,u)=>{u&&(o.invalidateQueries({queryKey:u.threadMessagesPrefix}),we(o,u.listPrefixes),r&&o.invalidateQueries({queryKey:nt({path:{accountId:r}})}))}}),g=c.useCallback(m=>{const b=m.filter(f=>!l.current.has(f)&&!d.current.has(f));if(b.length!==0){for(const f of b)d.current.add(f);x({body:{messageIds:b,isRead:!0}})}},[x]),v=c.useMemo(()=>_d(e,t,l.current,d.current),[e,t]);c.useEffect(()=>zd(v,Od,g),[v,g]),c.useEffect(()=>{l.current.clear(),d.current.clear()},[n])},Ap=e=>{const{mailboxId:t,accountId:n,messages:a}=e,r=le(),{pushError:o}=ve(),{mutateAsync:i,isPending:l}=me({...Ut(),onError:(x,g)=>{const v=g.body.isRead??!0;o({title:v?"Couldn't mark as read":"Couldn't mark as unread",detail:Me(x),error:x})},onSettled:(x,g,v)=>{we(r,Ne(Bs(v.body.messageIds??[],a??[],t))),n&&r.invalidateQueries({queryKey:nt({path:{accountId:n}})})}});return{toggleReadFor:c.useCallback((x,g)=>{x.length!==0&&vt(x,v=>i({body:{messageIds:v,isRead:g}}))},[i]),isPending:l}},Bd=60,Kd=1.5,Hd=(e,t,n)=>{const a=Math.abs(e),r=Math.abs(t);return a<n?{direction:null}:a<r*Kd?{direction:null}:{direction:e<0?"left":"right"}},qd=({onSwipeLeft:e,onSwipeRight:t,thresholdPx:n=Bd})=>{const a=c.useRef(null),r=c.useCallback(d=>{if(d.pointerType==="mouse"){a.current=null;return}a.current={x:d.clientX,y:d.clientY}},[]),o=c.useCallback(()=>{},[]),i=c.useCallback(d=>{const x=a.current;if(a.current=null,!x)return;const{direction:g}=Hd(d.clientX-x.x,d.clientY-x.y,n);g==="left"&&e?.(),g==="right"&&t?.()},[e,t,n]),l=c.useCallback(()=>{a.current=null},[]);return{handlers:{onPointerDown:r,onPointerMove:o,onPointerUp:i,onPointerCancel:l}}},Qd=(e,t,n)=>t?.find(a=>a.messageId===e)?.mailboxId??n,Mn=(e,t,n)=>e.map(a=>a.messageId===t?{...a,hasStars:n}:a),cr=({threadId:e,mailboxId:t,messages:n})=>{const a=le(),{pushError:r}=ve(),{mutate:o,isPending:i,variables:l}=me({...mo(),onMutate:async x=>{const g=x.path.messageId,v=x.body.isStarred??!1,m=Ae({path:{threadId:e}}),b=Ne([Qd(g,n,t)]);await Promise.all([a.cancelQueries({queryKey:m}),wt(a,b)]);const f=a.getQueriesData({queryKey:m}).filter(h=>h[1]!==void 0).map(([h,p])=>({queryKey:h,data:p})),u=Nt(a,b);return a.setQueriesData({queryKey:m},h=>ci(h,p=>Mn(p,g,v))),Ct(a,b,h=>Mn(h,g,v)),{threadMessagesPrefix:m,listPrefixes:b,previousThreadMessages:f,previousThreadsList:u}},onError:(x,g,v)=>{if(v){for(const b of v.previousThreadMessages)a.setQueryData(b.queryKey,b.data);jt(a,v.previousThreadsList)}const m=g.body.isStarred??!1;r({title:m?"Couldn't star message":"Couldn't unstar message",detail:Me(x),error:x})},onSettled:(x,g,v,m)=>{m&&(a.invalidateQueries({queryKey:m.threadMessagesPrefix}),we(a,m.listPrefixes))}});return{toggleStar:(x,g)=>{o({path:{messageId:x},body:{isStarred:!g}})},isPending:i,pendingMessageId:i?l?.path.messageId:void 0}};function An({authenticity:e,onOpenIntelligence:t}){return e.dkimMismatch?s.jsxs("div",{className:"flex items-start gap-2 rounded-none border-b border-danger/20 bg-danger-soft px-5 py-2.5 text-sm",children:[s.jsx(rt,{className:"mt-0.5 size-4 shrink-0 text-danger"}),s.jsxs("p",{className:"flex-1 leading-snug text-fg",children:["This message claims to be from"," ",s.jsx("span",{className:"font-semibold",children:e.fromDomain})," but was sent",e.dkimDomain?` via ${e.dkimDomain}`:" from a different domain","."," ",t&&s.jsx("button",{type:"button",onClick:t,className:"font-medium text-danger hover:underline",children:"Why?"})]})]}):null}function dr(e){return e===void 0?"uncategorized":e}const Gd={inbox:"Inbox",junk:"Junk"},Ks=e=>e.destinationMailboxId!==void 0,Wd=(e,t)=>{if(Ks(e))return`Moved from ${t??"another folder"} by Remit`;const n=e.fromPlacement??"";return`Moved from ${Gd[n]??"another folder"} by Remit`},Vd=(e,t)=>{if(e===en.MoveToInbox)return t.inboxMailboxId;if(e===en.MoveToJunk)return t.junkMailboxId},Yd=(e,t,n)=>{if(!e||!t)return!1;const a=Ks(e)?e.destinationMailboxId:Vd(e.action,n);return a!==void 0&&a===t},Xd="Reported as spam",Jd=(e,t)=>{if(e){if(Ks(e))return e.fromMailboxId;if(e.fromPlacement==="inbox")return t.inboxMailboxId;if(e.fromPlacement==="junk")return t.junkMailboxId}},Tt=(e,t)=>{const{data:n,isLoading:a}=J({...st(),staleTime:1/0,enabled:!!e});return{mailboxId:c.useMemo(()=>e?n?.accounts.find(i=>i.accountId===e)?.folderAppointments.find(i=>i.role===t)?.mailboxId:void 0,[n,e,t]),isLoading:a}},$p=e=>{const{mailboxId:t,isLoading:n}=Tt(e,"Archive");return{archiveMailboxId:t,isLoading:n}},Lp=e=>{const{mailboxId:t,isLoading:n}=Tt(e,"Drafts");return{draftsMailboxId:t,isLoading:n}},Zd=e=>{const{mailboxId:t,isLoading:n}=Tt(e,"Inbox");return{inboxMailboxId:t,isLoading:n}},ur=e=>{const{mailboxId:t,isLoading:n}=Tt(e,"Junk");return{junkMailboxId:t,isLoading:n}},Pp=e=>{const{mailboxId:t,isLoading:n}=Tt(e,"Trash");return{trashMailboxId:t,isLoading:n}},eu=()=>{const{data:e,isError:t}=J({...st(),staleTime:1/0});return{trashByAccount:c.useMemo(()=>{const a=new Map;for(const r of e?.accounts??[]){const o=r.folderAppointments.find(i=>i.role==="Trash");a.set(r.accountId,{mailboxId:o?.mailboxId,source:o?.source??"None",staleFolderPath:o?.staleAppointmentPath})}return a},[e]),hasAppointments:e!==void 0,isError:t}},fr=e=>{const{data:t}=J({...st(),staleTime:1/0,enabled:!!e});return c.useMemo(()=>t?.accounts.find(n=>n.accountId===e)?.folderAppointments??[],[t,e])},$n=(e,t)=>e.filter(n=>!t.has(n.messageId)),Wt=({mailboxId:e,threadId:t,accountId:n,onAfterOptimisticRemove:a})=>{const r=le(),{pushError:o}=ve(),{mutateAsync:i,isPending:l,isError:d}=me({...po(),onMutate:async g=>{const v=new Set(g.body.messageIds??[]),m=t?Ae({path:{threadId:t}}):[],b=Ne([e,g.body.destinationMailboxId]);await Promise.all([...t?[r.cancelQueries({queryKey:m})]:[],wt(r,b)]);const f=t?r.getQueriesData({queryKey:m}).filter(h=>h[1]!==void 0).map(([h,p])=>({queryKey:h,data:p})):[],u=Nt(r,b);return t&&r.setQueriesData({queryKey:m},h=>h&&{...h,items:$n(h.items,v)}),Ct(r,b,h=>$n(h,v)),a?.(Array.from(v)),{threadMessagesPrefix:m,listPrefixes:b,previousThreadMessages:f,previousThreadsList:u}},onError:(g,v,m)=>{if(m){for(const f of m.previousThreadMessages)r.setQueryData(f.queryKey,f.data);jt(r,m.previousThreadsList)}const b=v.body.messageIds?.length??0;o({title:b>1?`Couldn't move ${b} messages`:"Couldn't move this message",detail:Me(g),error:g})},onSettled:(g,v,m,b)=>{b&&(t&&r.invalidateQueries({queryKey:b.threadMessagesPrefix}),we(r,b.listPrefixes),n&&r.invalidateQueries({queryKey:nt({path:{accountId:n}})}))}});return{moveMessages:c.useCallback((g,v)=>{g.length!==0&&vt(g,m=>i({body:{messageIds:m,destinationMailboxId:v}}))},[i]),isPending:l,isError:d}},tu="This message could not be processed. Please try again. If it keeps failing, report it.",su=(e,t)=>e.replace(`Message ${t}'s`,"This message's"),Ln=e=>{if(e.failureCount===0)return;const t=e.failures?.[0],n=t?.reason??tu,a=t?su(n,t.messageId):n;throw new xo(a,422)};function mr({mailboxId:e,threadId:t,accountId:n,onAfterOptimisticRemove:a}){const r=le(),{pushError:o}=ve(),i=Ne([e]),l=t?Ae({path:{threadId:t}}):[],d=()=>{t&&r.invalidateQueries({queryKey:l}),we(r,i),n&&r.invalidateQueries({queryKey:nt({path:{accountId:n}})})},x=()=>(u,h)=>{d(),a?.(h.body.messageIds)},g=u=>(h,p)=>{o({title:u(p.body.messageIds.length),detail:Me(h),error:h})},v=me({mutationFn:async u=>{const{data:h}=await ho({...u,throwOnError:!0});return Ln(h),h},meta:{softError:!0},onSuccess:x(),onError:g(u=>u>1?`Couldn't report ${u} messages as spam`:"Couldn't report this message as spam")}),m=me({mutationFn:async u=>{const{data:h}=await go({...u,throwOnError:!0});return Ln(h),h},meta:{softError:!0},onSuccess:x(),onError:g(u=>u>1?`Couldn't undo the spam report for ${u} messages`:"Couldn't undo the spam report")}),b=c.useCallback(u=>{u.length!==0&&vt(u,h=>v.mutateAsync({body:{messageIds:h}}))},[v.mutateAsync]),f=c.useCallback(u=>{u.length!==0&&vt(u,h=>m.mutateAsync({body:{messageIds:h}}))},[m.mutateAsync]);return{reportSpam:b,notSpam:f,isReporting:v.isPending,isRestoring:m.isPending}}const nu=({accountId:e,messageId:t,threadId:n,mailboxId:a,autoMoved:r,spamReport:o})=>{const{inboxMailboxId:i}=Zd(e),{junkMailboxId:l}=ur(e),{moveMessages:d,isPending:x}=Wt({mailboxId:a,threadId:n,accountId:e}),{notSpam:g,isRestoring:v}=mr({mailboxId:a,threadId:n,accountId:e}),{data:m}=J({...kt({path:{accountId:e??""}}),staleTime:1/0,enabled:!!e&&r?.fromMailboxId!==void 0}),b={inboxMailboxId:i,junkMailboxId:l},f=Jd(r,b),u=c.useCallback(()=>{f&&d([t],f)},[d,t,f]),h=c.useCallback(()=>{g([t])},[g,t]);if(o)return{show:!0,label:Xd,onUndo:h,isUndoing:v};if(!Yd(r,a,b)||!r)return{show:!1,label:"",isUndoing:!1};const j=r.fromMailboxId?m?.items.filter(y=>y.mailboxId===r.fromMailboxId).map(y=>bo(y))[0]:void 0;return{show:!0,label:Wd(r,j),onUndo:f?u:void 0,isUndoing:x,...r.filterId?{filtersHref:"/settings/filters"}:{}}};function au({accountId:e,messageId:t,threadId:n,mailboxId:a,autoMoved:r,spamReport:o}){const i=nu({accountId:e,messageId:t,threadId:n,mailboxId:a,autoMoved:r,spamReport:o});return i.show?s.jsx(Bc,{label:i.label,onUndo:i.onUndo,undoLabel:i.isUndoing?"Undoing…":"Undo",filtersHref:i.filtersHref}):null}const ru=new Set(["in_flight","unverified"]),Pn=(e,t)=>{const n=e?.[t];return typeof n=="string"?n:void 0},ou=e=>{const t=vo(e);if(t?.code!=="message_placement_unsettled")return;const{details:n}=t;if(!n)return;const a=Pn(n,"reason"),r=Pn(n,"messageId");if(!(!a||!ru.has(a)||!r))return{reason:a,messageId:r}},iu=(e,t)=>({severity:"warning",title:t>1?`Couldn't delete ${t} messages yet`:"Couldn't delete this message yet",detail:e.reason==="in_flight"?"It is still being moved on the mail server. Try again in a moment.":"An earlier move never finished, so where this message sits is unknown. Sync the folder, then delete it again."}),Dn=(e,t)=>e.filter(n=>!t.has(n.messageId)),Dp=e=>e.filter(t=>t.isDeleted!==!0),Vt=({mailboxId:e,threadId:t,accountId:n,messages:a,onAfterOptimisticRemove:r})=>{const o=le(),{pushError:i}=ve(),{requestAppointment:l}=Ts(),d=c.useRef([]),x=c.useRef(async()=>{}),{mutateAsync:g,isPending:v}=me({...ko(),meta:yo(409),onMutate:async f=>{const u=new Set(f.body.messageIds??[]),h=t?Ae({path:{threadId:t}}):[],p=Ne(Bs(u,a??[],e));await Promise.all([o.cancelQueries({queryKey:h}),wt(o,p)]);const j=t?o.getQueriesData({queryKey:h}).filter(k=>k[1]!==void 0).map(([k,S])=>({queryKey:k,data:S})):[],y=Nt(o,p);return t&&o.setQueriesData({queryKey:h},k=>k&&{...k,items:Dn(k.items,u)}),Ct(o,p,k=>Dn(k,u)),r?.(Array.from(u)),{threadMessagesPrefix:h,listPrefixes:p,previousThreadMessages:j,previousThreadsList:y}},onError:(f,u,h)=>{if(h){for(const k of h.previousThreadMessages)o.setQueryData(k.queryKey,k.data);jt(o,h.previousThreadsList)}const p=aa(f);if(p){const k=d.current;l({accountId:p.accountId,role:p.role,reason:p.reason,action:{kind:"delete",count:k.length},onAppointed:()=>x.current(k)});return}const j=u.body.messageIds?.length??0,y=ou(f);if(y){i(iu(y,j));return}i({title:j>1?`Couldn't delete ${j} messages`:"Couldn't delete this message",detail:Me(f),error:f})},onSettled:(f,u,h,p)=>{p&&(t&&o.invalidateQueries({queryKey:p.threadMessagesPrefix}),we(o,p.listPrefixes),n&&o.invalidateQueries({queryKey:nt({path:{accountId:n}})}))}}),m=c.useCallback(f=>vt(f,u=>g({body:{messageIds:u}})),[g]);return c.useEffect(()=>{x.current=m},[m]),{deleteMessages:c.useCallback(f=>{f.length!==0&&(d.current=f,m(f))},[m]),isPending:v}},pr="inline-flex items-center justify-center transition-colors",lu=M(pr,"min-h-11 min-w-11 rounded hover:bg-surface-raised"),cu=M(pr,"min-h-11 gap-1.5 px-3 rounded text-sm font-medium hover:bg-surface-raised"),Hs=({accountId:e,currentMailboxId:t,onMove:n,disabled:a=!1,disabledHint:r,variant:o="icon-only",label:i,defaultOpen:l=!1})=>{const[d,x]=c.useState(l),[g,v]=c.useState(),m=Is(),b=c.useRef(null),f=c.useRef(null),u=c.useRef(null),h=i??"Move to folder",p=c.useId(),j=ra(),{data:y,isLoading:k,isError:S,error:E,refetch:A}=J({...kt({path:{accountId:e}}),staleTime:1/0,enabled:d}),O=fr(e),{createFolderIn:F}=oa(e),L=c.useMemo(()=>ia({mailboxes:y?.items??[],folderAppointments:O,currentMailboxId:t,translator:j}),[y?.items,O,t,j]),z=la(y?.items??[]),I=L.find(B=>B.id===g),_=c.useCallback(()=>{x(!1),v(void 0);const B=document.activeElement;B&&f.current?.contains(B)&&u.current?.focus()},[]),w=c.useCallback(()=>{I&&(_(),n(I.id))},[I,_,n]);Es({id:"move-to",open:d,answers:{back:_}}),c.useEffect(()=>{if(!d||!m)return;const B=U=>{const G=U.target;b.current?.contains(G)||f.current?.contains(G)||_()};return document.addEventListener("mousedown",B),()=>document.removeEventListener("mousedown",B)},[d,m,_]);const R=()=>b.current?.getBoundingClientRect()??null,P=a||!!r,N=s.jsxs("button",{type:"button",ref:u,onClick:B=>{B.stopPropagation(),!P&&x(U=>!U)},"aria-label":h,"aria-haspopup":m?"tree":"dialog","aria-expanded":d,"aria-controls":d?p:void 0,title:r,className:o==="icon-only"?lu:cu,children:[s.jsx(Ss,{className:o==="icon-only"?"size-5":"size-4"}),o==="compact"&&s.jsx("span",{className:"hidden sm:inline",children:"Move"})]}),$=k?s.jsx("div",{className:"px-3 py-5 text-sm text-fg-muted",children:"Loading folders…"}):S?s.jsx("div",{className:"p-3",children:s.jsx(ze,{variant:"inline",title:"Couldn't load folders",error:E,onRetry:()=>A()})}):s.jsx(jo,{folders:L,selectedId:g,delimiter:z,onSelect:v,onCreateFolder:F,onCancel:_,autoFocusFilter:m,labels:{filterPlaceholder:"Filter folders…",filterAriaLabel:"Filter folders"}}),C=I&&s.jsx("div",{className:"shrink-0 border-t border-line p-2",children:s.jsx(K,{variant:"primary",onClick:w,className:"h-11 w-full font-semibold",children:`Move to ${I.label}`})});return m?s.jsxs("div",{ref:b,className:"relative inline-block",children:[N,s.jsx(wi,{open:d,align:"end",panelRef:f,getAnchor:R,children:s.jsxs("div",{id:p,ref:f,className:M("w-72 max-h-96 flex flex-col","bg-surface border border-line rounded-md shadow-lg"),children:[$,C]})})]}):s.jsxs(s.Fragment,{children:[N,s.jsx(Xe.Root,{open:d,onOpenChange:B=>B?x(!0):_(),children:s.jsxs(Xe.Portal,{children:[s.jsx(Xe.Overlay,{className:"fixed inset-0 z-40 bg-black/40"}),s.jsxs(Xe.Content,{className:"fixed inset-x-0 bottom-0 z-50 flex flex-col rounded-t-lg bg-canvas pb-[env(safe-area-inset-bottom,0px)]",style:{maxHeight:"85dvh"},id:p,children:[s.jsx(Xe.Handle,{className:"mx-auto mt-2 mb-1 h-1.5 w-12 rounded-full bg-fg-subtle/30"}),s.jsx(Xe.Title,{className:"px-4 py-2 text-base font-semibold border-b border-line",children:"Move to folder"}),s.jsx("div",{className:"flex min-h-0 flex-1 overflow-hidden",children:$}),C]})]})})]})},du=({messageId:e,threadId:t,mailboxId:n,isRead:a,accountId:r,fromAddressId:o,isTrusted:i=!1,showRaw:l=!1,onToggleRaw:d})=>{const x=le(),g=di(),{pushError:v}=ve(),m=ui()?.messageId,{mutate:b,isPending:f}=me({...Ut(),onMutate:async R=>{const P=R.body.isRead??!0,N=new Set(R.body.messageIds??[]),$=Ae({path:{threadId:t}}),C=Ne([n]);await Promise.all([x.cancelQueries({queryKey:$}),wt(x,C)]);const B=x.getQueriesData({queryKey:$}).filter(G=>G[1]!==void 0).map(([G,Y])=>({queryKey:G,data:Y})),U=Nt(x,C);return x.setQueriesData({queryKey:$},G=>G&&{...G,items:zt(G.items,N,P)}),Ct(x,C,G=>zt(G,N,P)),{threadMessagesPrefix:$,listPrefixes:C,previousThreadMessages:B,previousThreadsList:U}},onError:(R,P,N)=>{if(N){for(const C of N.previousThreadMessages)x.setQueryData(C.queryKey,C.data);jt(x,N.previousThreadsList)}const $=P.body.isRead??!0;v({title:$?"Couldn't mark as read":"Couldn't mark as unread",detail:Me(R),error:R})},onSettled:(R,P,N,$)=>{$&&(x.invalidateQueries({queryKey:$.threadMessagesPrefix}),we(x,$.listPrefixes))}}),u=c.useCallback(R=>{m&&R.includes(m)&&g()},[m,g]),{deleteMessages:h,isPending:p}=Vt({mailboxId:n,threadId:t,onAfterOptimisticRemove:u}),{moveMessages:j,isPending:y}=Wt({mailboxId:n,threadId:t,accountId:r,onAfterOptimisticRemove:u}),{toggleTrusted:k,isPending:S,error:E,reset:A}=ba({messageId:e}),O=()=>{b({body:{messageIds:[e],isRead:!1}})},F=()=>{h([e])},L=()=>{o&&k(o,i)},z=f||p||y||S,I=z||!o,_=c.useCallback(R=>{j([e],R)},[j,e]),w=o?void 0:"Sender has no parseable address";return s.jsxs("div",{className:"flex flex-col items-end gap-1",children:[s.jsxs("div",{className:"flex items-center gap-1",children:[r&&s.jsx(Hs,{accountId:r,currentMailboxId:n,onMove:_,disabled:z,label:"Move this message"}),s.jsxs(fi,{trigger:s.jsx(Ni,{className:"size-4"}),children:[s.jsxs(Mt,{onClick:L,disabled:I,children:[i?s.jsx(Ht,{className:"size-4 text-positive"}):s.jsx(et,{className:"size-4 opacity-0"}),s.jsx("span",{title:w,children:"Trusted sender"})]}),a&&s.jsxs(Mt,{onClick:O,disabled:z,children:[s.jsx(Ds,{className:"size-4"}),"Mark as unread"]}),d&&s.jsxs(Mt,{onClick:d,children:[s.jsx(Oa,{className:"size-4"}),l?"Show formatted":"Show raw email"]}),s.jsx(mi,{}),s.jsxs(Mt,{onClick:F,disabled:z,destructive:!0,children:[s.jsx(yt,{className:"size-4"}),"Delete"]})]})]}),E&&s.jsx("div",{className:"w-64",children:s.jsx(ze,{variant:"inline",title:"Couldn't update trust",error:E,onRetry:()=>{A(),L()}})})]})},uu=e=>e==="link-expired"||e==="not-ready";class vs extends Error{reason;status;constructor(t,n,a){super(n),this.name="AttachmentFetchError",this.reason=t,this.status=a}}const fu="x-remit-403-reason",mu="expired",pu=(e,t)=>{if(t?.trim()===mu)return"link-expired";const n=_i(e,t);return n==="auth"?"auth":n==="body-missing"?"missing":"generic"},hu=300*1e3,Fn=async(e,t)=>{const n={},a=await t();a&&(n.Authorization=`Bearer ${a}`);const r=await wo(e,{headers:n,signal:AbortSignal.timeout(hu)});if(r.status===202)throw new vs("not-ready","Attachment is still being fetched from the mail server",202);if(!r.ok)throw new vs(pu(r.status,r.headers.get(fu)),`Failed to download attachment (${r.status} ${r.statusText})`,r.status);return r.blob()},gu=(e,t,n)=>{switch(e){case"auth":return{title:"Your session expired",detail:`Sign in again, then download ${t} once more. Other parts of the app may also stop responding until you do.`};case"link-expired":return{title:"This download link expired and could not be renewed",detail:`Reload the page, then download ${t} again. If that keeps failing, this is worth reporting.`};case"missing":return{title:"This attachment is missing from storage",detail:"Remit has the message but not the file. Re-sync the account from Settings, then try again."};case"not-ready":return{title:"Still fetching this attachment",detail:"Remit is downloading it from the mail server now. Try again in a few seconds."};default:return{title:"Couldn't download this attachment",detail:n}}},On=e=>e instanceof vs?e.reason:"generic",xu=e=>e instanceof Error?e.message:typeof e=="string"?e:"An unexpected error occurred while downloading this attachment.",bu=(e,t,n)=>{if(e!=="auth")return ca(da({title:`Bug: attachment download failed (${e})`,errorMessage:`Downloading "${t}" failed: ${n}`}))},vu=(e,t)=>{const n=URL.createObjectURL(e),a=document.createElement("a");a.href=n,a.download=t,a.rel="noopener",document.body.append(a),a.click(),a.remove(),setTimeout(()=>URL.revokeObjectURL(n),0)},yu=e=>{const t=e.toUpperCase();return t==="OCTET-STREAM"?"FILE":t},ku=e=>{const t=e.toLowerCase().replace(/[^a-z0-9]/g,"");return t.length>0?`attachment.${t}`:"attachment"},zn=e=>e.filter(t=>!t.isMultipart&&t.disposition===No.Attachment&&t.contentUrl.length>0).map(t=>({bodyPartId:t.bodyPartId,filename:Ci(t.dispositionFilename??"",ku(t.mediaSubtype)),typeLabel:yu(t.mediaSubtype),sizeOctets:t.sizeOctets,contentUrl:t.contentUrl})),_n={status:"idle"},ju=({messageId:e,bodyParts:t,hasAttachment:n=!1,className:a})=>{const{getToken:r}=ua(),o=le(),[i,l]=c.useState({}),d=c.useMemo(()=>zn(t??[]),[t]),x=Co({path:{messageId:e}}),g=f=>Fn(f.contentUrl,r).catch(u=>{if(!uu(On(u)))throw u;return o.refetchQueries({queryKey:x}).then(()=>{const h=o.getQueryData(x),p=h?zn(h.bodyParts).find(j=>j.bodyPartId===f.bodyPartId):void 0;return Fn(p?.contentUrl??f.contentUrl,r)})}),v=(f,u)=>l(h=>({...h,[f]:u})),m=f=>{const u=d.find(h=>h.bodyPartId===f);if(!u)throw new Error(`No attachment part ${f} on message ${e}`);v(f,{status:"downloading"}),g(u).then(h=>{vu(h,u.filename),v(f,_n)}).catch(h=>{const p=On(h),j=xu(h),{title:y,detail:k}=gu(p,u.filename,j);v(f,{status:"failed",title:y,detail:k,reportUrl:bu(p,u.filename,j)})})},b=n&&t!==void 0&&d.length===0;return s.jsx(Uc,{className:a,attachments:d.map(f=>({attachmentId:f.bodyPartId,filename:f.filename,typeLabel:f.typeLabel,sizeOctets:f.sizeOctets,download:i[f.bodyPartId]??_n})),onDownload:m,hasUnlistedAttachment:b})},hr=e=>e.status===So.active&&e.syncStatus===To.failed;function wu({threadMessage:e,accountId:t,className:n}){const a=hr(e),{deleteMessages:r,isPending:o}=Vt({mailboxId:e.mailboxId,threadId:e.threadId,accountId:t,messages:[e]}),i=c.useCallback(()=>{r([e.messageId])},[r,e.messageId]),l=c.useMemo(()=>a?ca(da({title:Fs.delete_failed.title,errorMessage:`Message ${e.messageId}: status=${e.status} syncStatus=${e.syncStatus}`})):void 0,[a,e.messageId,e.status,e.syncStatus]);return a?s.jsx(Mc,{settlement:"delete_failed",onRetry:i,retryPending:o,reportHref:l,className:n}):null}const Nu=({messageId:e,threadId:t,mailboxId:n,accountId:a,isRead:r,isStarred:o,onToggleStar:i,fromAddressId:l,isTrusted:d,showRaw:x,onToggleRaw:g,onReply:v,onReplyAll:m,onForward:b})=>{const f=le(),{deleteMessages:u}=Vt({mailboxId:n,threadId:t}),{moveMessages:h}=Wt({mailboxId:n,threadId:t,accountId:a}),{toggleTrusted:p}=ba({messageId:e}),{mutate:j}=me({...Ut(),onSettled:()=>{f.invalidateQueries({queryKey:Ae({path:{threadId:t}})}),we(f,Ne([n]))}}),y=c.useCallback(A=>{h([e],A)},[h,e]),k=c.useCallback(()=>{u([e])},[u,e]),S=c.useCallback(()=>{j({body:{messageIds:[e],isRead:!r}})},[j,e,r]),E=[];return l&&E.push({key:"trusted",label:d?"Trusted sender":"Mark sender trusted",icon:d?s.jsx(Ht,{className:"size-4 text-positive"}):s.jsx(et,{className:"size-4"}),onSelect:()=>p(l,d)}),g&&E.push({key:"raw",label:x?"Show formatted":"Show raw email",icon:s.jsx(Oa,{className:"size-4"}),onSelect:g}),s.jsx(Xa,{hasThread:!0,onReply:v,onReplyAll:m,onForward:b,isStarred:o,onToggleStar:i,onDelete:k,isRead:r,onToggleRead:S,overflowItems:E,moveSlot:a?s.jsx(Hs,{accountId:a,currentMailboxId:n,onMove:y,label:"Move this message"}):void 0})},Cu=()=>s.jsxs("div",{className:"animate-pulse space-y-2",role:"status","aria-label":"Loading raw email",children:[s.jsx("div",{className:"h-4 bg-surface-sunken rounded w-full"}),s.jsx("div",{className:"h-4 bg-surface-sunken rounded w-11/12"}),s.jsx("div",{className:"h-4 bg-surface-sunken rounded w-5/6"}),s.jsx("div",{className:"h-4 bg-surface-sunken rounded w-3/4"})]}),Su=({messageId:e,enabled:t=!0})=>{const{data:n,isLoading:a,isError:r,error:o,refetch:i}=J({...Io({path:{messageId:e}}),enabled:t});if(a)return s.jsx("div",{className:"message-body",children:s.jsx(Cu,{})});if(r)return s.jsx("div",{className:"message-body",children:s.jsx(ze,{variant:"inline",title:"Couldn't load the raw email",error:o,onRetry:()=>i()})});const l=n?.raw??"";return l===""?s.jsx("div",{className:"message-body",children:s.jsx("p",{className:"text-fg-muted text-sm italic",children:"No raw source available for this message."})}):s.jsx("div",{className:"message-body",children:s.jsx("pre",{className:"email-text whitespace-pre-wrap break-words text-sm leading-relaxed bg-surface-sunken rounded-md p-3 max-h-[32rem] overflow-auto",children:l})})},Tu=()=>s.jsx(Ht,{className:"inline-block size-4 ml-1 -mt-0.5 text-positive align-middle","aria-label":"Trusted sender","data-testid":"trusted-sender-badge"}),gr=(e,t)=>({id:e.messageId,fromName:e.fromName??e.fromEmail??"?",fromEmail:e.fromEmail??"",toLabel:"",dateLabel:t,snippet:e.snippet||"",bodyHtml:""}),xr=({isStarred:e,onToggleStar:t,isStarPending:n,hoverReveal:a})=>s.jsx("button",{type:"button",onClick:r=>{r.stopPropagation(),t()},disabled:n,"aria-label":e?"Remove star":"Add star",className:M("shrink-0 p-0.5 rounded transition-colors",e?"text-warning":M("text-fg-subtle hover:text-warning",a&&"opacity-0 group-hover:opacity-100 focus:opacity-100"),n&&"opacity-50"),children:s.jsx(tt,{className:M("size-3.5",e&&"fill-current")})}),Iu=({threadMessage:e,isFocused:t,onToggle:n,onToggleStar:a,isStarPending:r})=>{const o=Na(e.sentDate,"datetime"),i=gr(e,o);return s.jsx(Ja,{message:i,onClick:n,isFocused:t,isUnread:!e.isRead,trailing:s.jsxs(s.Fragment,{children:[e.hasAttachment&&s.jsx(qt,{className:"size-3 shrink-0 text-fg-subtle",role:"img","aria-label":"Has an attachment"}),s.jsx(xr,{isStarred:e.hasStars,onToggleStar:a,isStarPending:r,hoverReveal:!0}),s.jsx("span",{"data-testid":"message-date",className:"shrink-0 text-2xs text-fg-subtle tabular-nums",children:o})]})})},Eu=({threadMessage:e,messageData:t,isLoading:n,isError:a,error:r,onRetry:o,isFocused:i,onToggle:l,onToggleStar:d,isStarPending:x,accountId:g,showRaw:v,onToggleRaw:m,mobile:b,onReply:f,onReplyAll:u,onForward:h})=>{const p=Na(e.sentDate,"long"),j=!e.isRead,y=t?.envelope.from[0]?.flags?.trusted?.value===!0,k=t?.envelope.from[0]?.addressId,S=gr(e,p),E=e.autoMoved||e.spamReport?s.jsx(au,{accountId:g,messageId:e.messageId,threadId:e.threadId,mailboxId:e.mailboxId,autoMoved:e.autoMoved,spamReport:e.spamReport}):null;return s.jsx(Za,{message:S,isFocused:b?!1:i,onHeaderClick:l,senderBadge:y?s.jsx(Tu,{}):void 0,trailing:s.jsx("span",{"data-testid":"message-date",className:"text-2xs text-fg-subtle",children:p}),to:t?s.jsx(sc,{label:"To",addresses:t.envelope.to}):null,indicators:E||!b?s.jsxs("div",{className:"flex flex-wrap items-center gap-1.5 mt-0.5",children:[E,!b&&s.jsxs(s.Fragment,{children:[s.jsx("div",{className:"flex items-center justify-end gap-1",children:s.jsx(xr,{isStarred:e.hasStars,onToggleStar:d,isStarPending:x})}),j&&s.jsx("span",{className:"size-1.5 rounded-full bg-accent","aria-label":"Unread"})]})]}):void 0,actionMenu:b?void 0:s.jsx(du,{messageId:e.messageId,threadId:e.threadId,mailboxId:e.mailboxId,isRead:e.isRead,accountId:g,fromAddressId:k,isTrusted:y,showRaw:v,onToggleRaw:m}),actionBar:b?s.jsx(Nu,{messageId:e.messageId,threadId:e.threadId,mailboxId:e.mailboxId,accountId:g,isRead:e.isRead,isStarred:e.hasStars,onToggleStar:d,fromAddressId:k,isTrusted:y,showRaw:v,onToggleRaw:m,onReply:f,onReplyAll:u,onForward:h}):void 0,body:s.jsxs(s.Fragment,{children:[s.jsx(wu,{threadMessage:e,accountId:g,className:"mt-3"}),n?s.jsxs("div",{className:"mt-3 animate-pulse space-y-2",children:[s.jsx("div",{className:"h-4 bg-surface-sunken rounded w-full"}),s.jsx("div",{className:"h-4 bg-surface-sunken rounded w-3/4"}),s.jsx("div",{className:"h-4 bg-surface-sunken rounded w-1/2"})]}):a&&Eo(r)?s.jsx("div",{className:"mt-3",children:s.jsx(wa,{message:"This message has been deleted"})}):a?s.jsx("div",{className:"mt-3",children:s.jsx(ze,{variant:"inline",title:"Couldn't load this message",error:r,onRetry:o})}):v?s.jsx("div",{className:"mt-3",children:s.jsx(Su,{messageId:e.messageId})}):s.jsxs("div",{className:"mt-3",children:[s.jsx(Ii,{bodyParts:t?.bodyParts,messageId:e.messageId,fromAddressId:t?.envelope.from[0]?.addressId,isTrusted:y,category:dr(e.category)}),s.jsx(ju,{messageId:e.messageId,bodyParts:t?.bodyParts,hasAttachment:e.hasAttachment,className:"mt-4"})]})]})})},Ru=({threadMessage:e,isExpanded:t,isFocused:n,onToggle:a,onToggleStar:r,isStarPending:o,accountId:i,mobile:l,onReply:d,onReplyAll:x,onForward:g})=>{const[v,m]=c.useState(!1),{data:b,isLoading:f,isError:u,error:h,refetch:p}=J({..._t({path:{messageId:e.messageId}}),enabled:t,meta:{softError:!0}});return t?s.jsx(Eu,{threadMessage:e,messageData:b,isLoading:f,isError:u,error:h,onRetry:()=>p(),isFocused:n,onToggle:a,onToggleStar:r,isStarPending:o,accountId:i,showRaw:v,onToggleRaw:()=>m(j=>!j),mobile:l,onReply:d,onReplyAll:x,onForward:g}):s.jsx(Iu,{threadMessage:e,isFocused:n,onToggle:a,onToggleStar:r,isStarPending:o})},Mu=()=>s.jsxs("div",{className:"animate-pulse p-4",children:[s.jsx("div",{className:"h-6 bg-surface-sunken rounded w-3/4 mb-5"}),s.jsx("div",{className:"space-y-4",children:Array.from({length:2}).map((e,t)=>s.jsxs("div",{className:"flex gap-3 py-3",children:[s.jsx("div",{className:"size-10 bg-surface-sunken rounded-full shrink-0"}),s.jsxs("div",{className:"flex-1",children:[s.jsx("div",{className:"h-4 bg-surface-sunken rounded w-32 mb-2"}),s.jsx("div",{className:"h-3 bg-surface-sunken rounded w-48"})]})]},t))})]}),Fp=({threadId:e,mailboxId:t,subject:n,selectedMessageId:a,authenticity:r,onOpenIntelligence:o,onBack:i,onSwipeNext:l,onSwipePrevious:d,mobileIntelligenceOpen:x,listOnScreen:g=!1})=>{const v=Is(),{handlers:m}=qd({onSwipeLeft:l,onSwipeRight:d}),{accountId:b}=Us(t),{data:f,isLoading:u,isError:h,error:p,refetch:j}=J({...fa({path:{threadId:e}})}),y=c.useMemo(()=>f?.items??[],[f?.items]),k=y[y.length-1],S=c.useMemo(()=>[...y].reverse(),[y]),E=c.useRef(new Map),[A,O]=c.useState(new Set),[F,L]=c.useState(null),[z,I]=c.useState(0);c.useEffect(()=>{if(y.length>0&&e!==F){L(e);const H=new Set([y[y.length-1].threadMessageId]);if(a){const Q=y.find(ae=>ae.messageId===a);Q&&H.add(Q.threadMessageId)}O(H),I(0)}},[e,y,F,a]);const _=c.useCallback(H=>{O(Q=>{const ae=new Set(Q);return ae.has(H)?ae.delete(H):ae.add(H),ae})},[]),w=c.useCallback(H=>{const Q=S[H];if(!Q)return;E.current.get(Q.threadMessageId)?.scrollIntoView({behavior:"smooth",block:"nearest"})},[S]),R=c.useCallback(()=>{if(S.length===0)return;const H=Math.min(z+1,S.length-1);I(H),w(H)},[S.length,z,w]),P=c.useCallback(()=>{if(S.length===0)return;const H=Math.max(z-1,0);I(H),w(H)},[S.length,z,w]),N=c.useCallback(()=>{const H=S[z];H&&_(H.threadMessageId)},[S,z,_]);Ud({messages:y,expandedIds:A,threadId:e,mailboxId:t,accountId:b});const{toggleStar:$,isPending:C,pendingMessageId:B}=cr({threadId:e,mailboxId:t,messages:y}),U=Ro(),G=Mo(),Y=a??k?.messageId,Z=c.useCallback((H,Q)=>{Q&&G({threadId:e,messageId:Q,mode:H})},[G,e]),ne=c.useCallback(()=>Z("reply",Y),[Z,Y]),ce=c.useCallback(()=>Z("reply-all",Y),[Z,Y]),pe=c.useCallback(()=>Z("forward",Y),[Z,Y]),te=c.useRef(null),he=U?.kind==="reply"?`${U.mode}:${U.sourceMessageId}`:void 0;if(c.useEffect(()=>{he&&te.current?.scrollIntoView({behavior:"smooth",block:"start"})},[he]),Li({enabled:!u&&y.length>0&&U===void 0,bindings:[...g?[]:[{key:"j",action:"focusNext",handler:R,preventDefault:!0},{key:"ArrowDown",action:"focusNext",handler:R,preventDefault:!0},{key:"k",action:"focusPrevious",handler:P,preventDefault:!0},{key:"ArrowUp",action:"focusPrevious",handler:P,preventDefault:!0},{key:"Enter",action:"openFocused",handler:N,preventDefault:!0},{key:"o",action:"openFocused",handler:N,preventDefault:!0}],{key:"r",action:"reply",handler:ne,preventDefault:!0},{key:"R",action:"replyAll",handler:ce,noModifiers:!1,preventDefault:!0},{key:"f",action:"forward",handler:pe,preventDefault:!0}]}),u)return s.jsx(Mu,{});if(h)return s.jsx("div",{className:"flex h-full items-center justify-center",children:s.jsx(ze,{title:U?"Couldn't load this conversation, so there is nothing to answer":"Couldn't load this conversation",error:p,onRetry:()=>j()})});if(y.length===0)return s.jsx("div",{className:"flex h-full items-center justify-center p-4",children:U?s.jsx(ze,{variant:"inline",title:"There is nothing here to answer",error:"This conversation has no messages left. Another mail client may have moved or deleted them."}):s.jsx(wa,{message:"No messages in this thread"})});const de=n||y[0]?.subject||"(No subject)",ge=y.length,ue=H=>s.jsx("div",{"data-testid":"conversation-messages",children:S.map((Q,ae)=>s.jsx("div",{ref:He=>{He&&E.current.set(Q.threadMessageId,He)},children:s.jsx(Ru,{threadMessage:Q,isExpanded:A.has(Q.threadMessageId),isFocused:ae===z,onToggle:()=>_(Q.threadMessageId),onToggleStar:()=>$(Q.messageId,Q.hasStars),isStarPending:C&&B===Q.messageId,accountId:b,mobile:H,onReply:H?()=>Z("reply",Q.messageId):void 0,onReplyAll:H?()=>Z("reply-all",Q.messageId):void 0,onForward:H?()=>Z("forward",Q.messageId):void 0})},Q.threadMessageId))}),q=U&&s.jsx("div",{ref:te,children:U.kind==="reply"?s.jsx($d,{surface:U}):s.jsx("div",{className:"border-b border-line bg-canvas p-4",children:s.jsx(ze,{variant:"inline",title:"That is not a way to answer a message",error:`"${U.segment}" is not reply, reply-all or forward.`})})}),re=s.jsxs("header",{className:"border-b border-line px-5 pt-5 pb-3",children:[s.jsx("h1",{className:"max-w-2xl text-lg font-semibold leading-snug text-fg",children:de}),s.jsxs("p",{className:"mt-1 text-2xs text-fg-subtle",children:[ge," ",ge===1?"message":"messages"]})]});return v?s.jsxs("article",{className:"h-full flex flex-col",children:[re,r?.dkimMismatch&&s.jsx(An,{authenticity:r,onOpenIntelligence:o}),s.jsxs("div",{className:"min-h-0 flex-1 overflow-auto",children:[q,ue(!1)]})]}):s.jsxs(zc,{thread:{subject:de,messages:[]},onBack:i??(()=>{}),intelligenceOpen:x,onToggleIntelligence:o,touchHandlers:m,children:[r?.dkimMismatch&&s.jsx(An,{authenticity:r,onOpenIntelligence:o}),q,ue(!0)]})},Au=e=>hr(e)?{settlement:"delete_failed"}:{},$u="a[href], button, input, select, textarea, [tabindex]",Lu=e=>{if(e.tabIndex<0||e.hasAttribute("disabled")||e.getAttribute("aria-disabled")==="true"||e.closest("[inert], [hidden], [aria-hidden='true']"))return!1;const t=getComputedStyle(e);return t.display!=="none"&&t.visibility!=="hidden"},Un=e=>{const t=e.querySelectorAll('[role="dialog"][aria-modal="true"]');return[...(t[t.length-1]??e).querySelectorAll($u)].filter(Lu)},Pu=({isOpen:e,onClose:t,children:n,ariaLabel:a="Navigation",side:r="left",widthClassName:o="w-[80vw] max-w-[320px]",answers:i})=>{const l=c.useRef(null),d=c.useRef(null);if(Es({id:"drawer",open:e,answers:{back:t,...i}}),c.useEffect(()=>{if(!e)return;d.current=document.activeElement;const g=m=>{if(m.key!=="Tab"||!l.current)return;const b=document.activeElement;if(!(b instanceof HTMLElement)||!l.current.contains(b))return;const f=Un(l.current);if(f.length===0)return;const u=f[0],h=f[f.length-1],p=f.includes(b);if(m.shiftKey){(!p||b===u)&&(m.preventDefault(),h.focus());return}(!p||b===h)&&(m.preventDefault(),u.focus())};document.addEventListener("keydown",g),l.current&&Un(l.current)[0]?.focus();const v=document.body.style.overflow;return document.body.style.overflow="hidden",()=>{document.removeEventListener("keydown",g),document.body.style.overflow=v,d.current?.focus()}},[e]),!e)return null;const x=r==="left"?"left-0 border-r animate-in slide-in-from-left duration-150":"right-0 border-l animate-in slide-in-from-right duration-150";return s.jsxs("div",{className:"fixed inset-0 z-50",role:"dialog","aria-modal":"true","aria-label":a,children:[s.jsx("button",{type:"button","aria-label":"Close menu",onClick:t,className:"absolute inset-0 bg-black/40 animate-in fade-in duration-150 cursor-default"}),s.jsxs("div",{ref:l,className:M("safe-area-frame absolute top-0 bottom-0 bg-canvas border-line shadow-xl flex flex-col",o,x),children:[s.jsx("div",{className:"flex items-center justify-end h-12 px-2 border-b border-line shrink-0",children:s.jsx("button",{type:"button",onClick:t,className:"p-2 rounded-md hover:bg-surface-raised transition-colors min-h-11 min-w-11 inline-flex items-center justify-center","aria-label":"Close menu",children:s.jsx(Ue,{className:"size-5"})})}),s.jsx("div",{className:"flex-1 overflow-y-auto",children:n})]})]})},br=()=>{const{data:e}=J({...st(),staleTime:1/0});return e?.semanticSearchEnabled},Du=10,vr=e=>({q:e?.toLowerCase()??"",limit:Du}),Fu=(e,t)=>{if(!t)return;const n=t.toLowerCase();return e?.find(a=>a.normalizedEmail===n)};function Ou(e){const t=new Date(e),n=new Date;return t.toDateString()===n.toDateString()?"today":Pi(t,{month:"short",year:"numeric"})}function yr(e){if(!e)return!0;const[,t]=e.split("@");return t?!t.includes("."):!0}const zu="We can't verify the sender of this email, which could mean it's from an insecure source.",_u="We couldn't read this sender's address, so we can't confirm who really sent this message.";function Uu(e,t){const n=e.category??"personal";return{value:$o(n)?n:"uncategorized",overridden:t?.flags?.category?.value!=null&&t.flags.category.value!==e.category}}function Bu(e,t){return{name:e.fromName??e.fromEmail??"Unknown",email:e.fromEmail??"",trust:e.senderTrust,firstSeenLabel:t?Ou(t.createdAt):"unknown",inboundCount:t?.inboundCount,replyCount:t?.replyCount,addressUnverified:yr(e.fromEmail)}}function Ku(e){return e?.flags?{vip:e.flags.vip?.value===!0,muted:e.flags.muted?.value===!0,blocked:e.flags.blocked?.value===!0,unsubscribed:e.flags.unsubscribed?.value===!0}:{}}function Bn(e){if(e.fromName&&e.fromName!==e.fromEmail)return e.fromName}function Hu(e){return e.length===1?e[0]:`${e.slice(0,-1).join(", ")} and ${e[e.length-1]}`}function qu(e,t){const n=[],a=e.displayNameCorrespondence;t&&(a===ss.Unrelated?n.push(`The name it shows, "${t}", has nothing to do with ${e.fromDomain}.`):a===ss.Lookalike?n.push(`The name it shows, "${t}", only looks like ${e.fromDomain}.`):a===ss.ForeignAddress&&n.push(`The name it shows, "${t}", is an address ${e.fromDomain} cannot send from.`));const r=Qu(e.offDomainLinkDomains);return r.length>0&&n.push(`Its links go to ${Hu(r.slice(0,3))}.`),n}function Qu(e){return Array.isArray(e)?e.filter(t=>typeof t=="string"&&t.length>0):[]}function Gu(e,t){const n=t>0?t:void 0;if(yr(e.fromEmail))return{verdict:"mismatch",fromDomain:"",addressUnreadable:!0,summary:_u,similarCount:n};const a=e.authenticity;if(!a)return{verdict:"caution",fromDomain:e.fromEmail?.split("@")[1]??"",summary:zu};if(!a.dkimMismatch){const x=Bn(e),g=qu(a,x);return g.length>0?{verdict:"caution",fromDomain:a.fromDomain,dkimDomain:a.dkimDomain,claimedBrand:x,summary:g.join(" ")}:{verdict:"aligned",fromDomain:a.fromDomain,dkimDomain:a.dkimDomain,summary:a.dkimDomain?`This message was signed by ${a.dkimDomain}.`:"Nothing looks unusual about this sender."}}const r=a.fromDomain,o=a.dkimDomain,i=Bn(e),l=o?`it was actually sent from ${o}`:"its signature failed to verify",d=i?`The display name claims "${i}", but ${l}${o?` — not ${r}`:""}. Real senders use their own address.`:`This message claims to be from ${r}, but ${l}.`;return{verdict:"mismatch",fromDomain:r,dkimDomain:o,claimedBrand:i,summary:d,similarCount:n}}function Wu(e,t){const n=e?.fromEmail??null,a=e?.subject??"",{data:r,error:o}=J({...Rs({query:vr(n??void 0)}),enabled:!!n,staleTime:3e4}),i=Fu(r?.items,n??void 0),l=br(),d=[a,n].filter(Boolean).join(" "),{data:x,isLoading:g,error:v}=J({...Ao({query:{query:d,limit:5}}),enabled:!!(e&&d.length>3)&&l===!0,staleTime:6e4,retry:1});return{data:c.useMemo(()=>{if(!e)return null;const b=(x?.items??[]).filter(j=>j.messageId!==e.messageId).map(j=>({id:j.messageId,threadId:j.threadId,mailboxId:t!=null&&j.mailboxIds.includes(t)?t:j.mailboxIds[0]??"",fromName:j.fromName??"",subject:j.subject??"(No subject)",timeLabel:j.sentDate!=null?at(j.sentDate*1e3):"",matched:j.matchedChunkType})),f=Bu(e,i),u=Gu(e,b.length),h=Uu(e,i),p=Ku(i);return{sender:f,authenticity:u,category:h,flags:p,similar:b}},[e,i,x,t]),isSimilarLoading:g,similarError:v,similarErrorIsFatal:tn(v),semanticEnabled:l,addressErrorIsFatal:tn(o),addressId:i?.addressId,address:i}}function Vu(e,t){const n={...e??{}};for(const[a,r]of Object.entries(t))r==null?delete n[a]:n[a]={...r,setAt:r.setAt??Date.now()};return n}function Yu({addressId:e,senderEmail:t}){const n=le(),{pushError:a}=ve(),r=Lo({query:vr(t)}),{mutate:o,isPending:i}=me({...Po(),onMutate:async d=>{const x=d.body.flags??{};await n.cancelQueries({queryKey:r});const g=n.getQueryData(r);return n.setQueryData(r,v=>v&&{...v,items:v.items.map(m=>m.addressId===d.path.addressId?{...m,flags:Vu(m.flags,x)}:m)}),{previous:g}},onError:(d,x,g)=>{g?.previous!==void 0&&n.setQueryData(r,g.previous),a({title:"Couldn't update sender preference",detail:Me(d),error:d})},onSettled:()=>{n.invalidateQueries({queryKey:r})}});return{updateFlags:c.useCallback(d=>{if(!e){Do(new Error(`Quick action fired but the sender's address record did not resolve (sender: ${t??"unknown"}). This should never happen — the address row exists.`));return}o({path:{addressId:e},body:{flags:d}})},[e,o,t]),isPending:i}}const Op=e=>e==="vip"?"A sender you know":e==="wellknown"?"You've emailed them before":"Passed authentication",Xu=e=>e.senderTrust!=="vip"&&e.senderTrust!=="wellknown"?!1:e.authenticity?.dkimMismatch!==!0;function zp(e,t){e.recordEvent("rescue.candidates_surfaced",{count:String(t)})}function _p(e,t){e.recordEvent("rescue.flow_opened",{count:String(t)})}function Up(e,t){e.recordEvent("rescue.committed",{selected:String(t.selected),total:String(t.total),destination:t.toInbox?"inbox":"other"})}function Ju(e,t){e.recordEvent("rescue.sent_to_junk",{count:String(t.count),senderTrust:t.senderTrust,wasRescuable:String(t.wasRescuable)})}const Zu=["personal","newsletter","marketing","automated","transactional","social"],ef=e=>e.spamReport?"notSpam":"reportSpam",tf=e=>{const{similarError:t,similarErrorIsFatal:n,isSimilarLoading:a,semanticEnabled:r}=e;return r===!1?"off":t&&!n?"error":a?"loading":"ready"};function sf(){return s.jsxs("aside",{className:"flex h-full w-full flex-col bg-surface-sunken",children:[s.jsxs("header",{className:"flex h-pane-header shrink-0 items-center gap-1.5 border-b border-line px-row-inset",children:[s.jsx(Be,{className:"size-3.5 text-fg-subtle"}),s.jsx("span",{className:"text-2xs font-semibold uppercase tracking-wider text-fg-subtle",children:"Intelligence"})]}),s.jsxs("div",{className:"flex-1 animate-pulse space-y-4 p-4",children:[s.jsxs("div",{className:"space-y-2",children:[s.jsx("div",{className:"h-2.5 rounded bg-surface w-1/4"}),s.jsxs("div",{className:"flex gap-3",children:[s.jsx("div",{className:"size-10 rounded-full bg-surface shrink-0"}),s.jsxs("div",{className:"flex-1 space-y-1.5",children:[s.jsx("div",{className:"h-3 rounded bg-surface w-3/4"}),s.jsx("div",{className:"h-2.5 rounded bg-surface w-1/2"})]})]})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx("div",{className:"h-2.5 rounded bg-surface w-1/4"}),s.jsx("div",{className:"h-8 rounded bg-surface"})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx("div",{className:"h-2.5 rounded bg-surface w-1/4"}),s.jsx("div",{className:"flex gap-1.5 flex-wrap",children:Array.from({length:5}).map((e,t)=>s.jsx("div",{className:"h-6 w-16 rounded bg-surface"},t))})]})]})]})}function nf({isOpen:e,current:t,onSelect:n,onCancel:a}){return e?s.jsxs("div",{className:"fixed inset-0 z-50 flex items-center justify-center",children:[s.jsx(Oo,{label:"Dismiss reclassify sender",onDismiss:a,className:"backdrop-blur-sm"}),s.jsxs("div",{role:"dialog","aria-modal":"true","aria-label":"Reclassify sender",className:"relative z-10 w-full max-w-sm rounded-sm border border-line bg-surface p-6 shadow-lg",children:[s.jsx("h2",{className:"text-lg font-semibold",children:"Reclassify this sender"}),s.jsx("p",{className:"mt-2 text-sm text-fg-muted",children:"Set a category override for future messages from this sender."}),s.jsx("div",{className:"mt-4 flex flex-col gap-1",children:Zu.map(r=>s.jsxs("button",{type:"button",onClick:()=>n(r),className:`flex min-h-11 items-center justify-between rounded px-3 text-left text-sm capitalize transition-colors hover:bg-surface-raised ${r===t?"font-semibold text-accent":"text-fg"}`,children:[r,r===t&&s.jsx("span",{className:"text-2xs text-fg-subtle",children:"current"})]},r))}),s.jsx("div",{className:"mt-6 flex justify-end",children:s.jsx("button",{type:"button",onClick:a,className:"inline-flex min-h-11 items-center justify-center rounded border border-line px-4 text-sm font-medium transition-colors hover:bg-surface-raised",children:"Cancel"})})]})]}):null}function af({thread:e,onClose:t,mailboxId:n,accountId:a,hideCloseButton:r,onAfterOptimisticRemove:o}){const{data:i,addressId:l,isSimilarLoading:d,similarError:x,similarErrorIsFatal:g,semanticEnabled:v}=Wu(e,n),[m,b]=c.useState(!1),f=e.fromEmail??void 0,{updateFlags:u}=Yu({addressId:l,senderEmail:f}),{reportSpam:h,notSpam:p,isReporting:j,isRestoring:y}=mr({mailboxId:e.mailboxId,threadId:e.threadId,accountId:a,onAfterOptimisticRemove:o}),k=Fo(),S=ef(e),E=c.useCallback(()=>{p([e.messageId])},[p,e.messageId]),A=c.useCallback(()=>{Ju(k,{count:1,senderTrust:e.senderTrust,wasRescuable:Xu(e)}),h([e.messageId])},[h,e,k]),O=c.useCallback(()=>{},[]),F=c.useCallback(()=>{const N=i?.flags?.vip!==!0;u({vip:{value:N}})},[i?.flags?.vip,u]),L=c.useCallback(()=>{const N=i?.flags?.muted!==!0;u({muted:{value:N}})},[i?.flags?.muted,u]),z=c.useCallback(()=>{const N=i?.flags?.unsubscribed!==!0;u({unsubscribed:{value:N}})},[i?.flags?.unsubscribed,u]),I=c.useCallback(N=>{b(!1),u({category:{value:N}})},[u]),_=l!==void 0,w={onToggleVip:_?F:void 0,onToggleMute:_?L:void 0,onToggleUnsubscribe:_?z:void 0,onReclassify:_?()=>b(!0):void 0,onNotSpam:S==="notSpam"?E:void 0,onReportSpam:S==="reportSpam"?A:void 0},R=({mailboxId:N,threadId:$,messageId:C,className:B,ariaLabel:U,children:G})=>s.jsx(ma,{to:"/mail/$mailboxId/$threadId/$messageId",params:{mailboxId:N,threadId:$,messageId:C},search:Y=>Y,variant:"row",className:B,"aria-label":U,children:G});if(!i)return s.jsx(sf,{});const P=tf({similarError:x,similarErrorIsFatal:g,isSimilarLoading:d,semanticEnabled:v});return s.jsxs(s.Fragment,{children:[s.jsx(Ha,{data:i,onClose:t,hideCloseButton:r,onShowSimilar:O,actions:w,similarState:P,similarLinkComponent:R,reportSpamPending:j,notSpamPending:y,className:"border-l-0 h-full w-full"}),s.jsx(nf,{isOpen:m,current:i.category.value,onSelect:I,onCancel:()=>b(!1)})]})}const rf=({onClose:e,thread:t,mailboxId:n,accountId:a,hideCloseButton:r,onAfterOptimisticRemove:o})=>t?s.jsx(af,{thread:t,onClose:e,mailboxId:n,accountId:a,hideCloseButton:r,onAfterOptimisticRemove:o}):s.jsxs("aside",{className:"flex h-full w-full flex-col bg-surface-sunken",children:[s.jsxs("header",{className:"flex h-pane-header shrink-0 items-center gap-1.5 border-b border-line px-row-inset",children:[s.jsx(Be,{className:"size-3.5 text-fg-subtle"}),s.jsx("span",{className:"text-2xs font-semibold uppercase tracking-wider text-fg-subtle",children:"Intelligence"})]}),s.jsxs("div",{className:"flex flex-1 flex-col items-center justify-center px-row-inset text-center",children:[s.jsx(Be,{className:"size-8 text-fg-subtle"}),s.jsx("p",{className:"mt-3 text-sm text-fg-muted",children:"Intelligence"}),s.jsx("p",{className:"mt-1 text-2xs text-fg-subtle",children:"Sender trust, authenticity and similar messages will appear here."})]})]});function Bp({isOpen:e,onClose:t,thread:n,mailboxId:a,accountId:r,onAfterOptimisticRemove:o}){return s.jsx(Pu,{isOpen:e,onClose:t,ariaLabel:"Message details",side:"right",answers:{toggleIntelligence:t},children:s.jsx(rf,{onClose:t,thread:n,mailboxId:a,accountId:r,hideCloseButton:!0,onAfterOptimisticRemove:o})})}const of=e=>{const{trashByAccount:t,hasAppointments:n,isError:a}=eu();return c.useMemo(()=>{const r=Di({targets:e,trashByAccount:t,hasAppointments:n,isError:a}),o=i=>i.accountId?t.get(i.accountId):void 0;return{outcome:r,staleFolderLabel:e.map(o).find(i=>i?.source==="Stale")?.staleFolderPath,guessedMailboxId:r==="unconfirmed"?e.find(i=>o(i)?.mailboxId===i.mailboxId)?.mailboxId:void 0}},[e,t,n,a])},lf={delete:(e,t)=>`Deleting ${e} of ${t}…`,move:(e,t)=>`Moving ${e} of ${t}…`,markRead:(e,t)=>`Marking ${e} of ${t} as read…`},cf={delete:"moved to Trash",move:"moved",markRead:"marked as read"},kr=(e,t)=>e==="delete"&&Fi(t)?"permanently deleted":cf[e],df={delete:"couldn't be deleted",move:"couldn't be moved",markRead:"couldn't be marked as read"},uf={delete:"Couldn't delete these messages",move:"Couldn't move these messages",markRead:"Couldn't mark these messages as read"},ff={delete:"The delete didn't finish.",move:"The move didn't finish.",markRead:"The update didn't finish."},Kp=(e,t,n)=>lf[e](Ke(t),Ke(n)),mf=(e,t,n="trash")=>`${Ke(t)} ${kr(e,n)}. Your mail server is still catching up.`,pf=e=>`Stopped after ${Ke(e)}`,hf=(e,t,n,a="trash")=>`${Ke(t)} of ${Ke(n)} ${kr(e,a)}. Nothing was sent for the rest, so they are untouched.`,gf=(e,t)=>t>0?`Stopped after ${Ke(t)} — some messages ${df[e]}`:uf[e],xf=e=>ff[e],Hp=e=>e==="delete"?"danger":"info",qp=(e,t,n,a)=>n.error!==void 0?null:n.cancelled?{severity:"warning",title:pf(n.done),detail:hf(e,n.done,t,a)}:{severity:"info",title:mf(e,n.done,a)},bf=100,vf=(e,t)=>e.kind==="move"?[t,e.destinationMailboxId]:[t],yf=({mailboxId:e,accountId:t,enabled:n,predicateKey:a,searchQuery:r})=>{const[o,i]=c.useState({kind:"idle"}),[l,d]=c.useState(void 0),[x,g]=c.useState(void 0),v=c.useRef(!1),m=c.useRef(!1),b=le(),{pushError:f}=ve(),{requestAppointment:u}=Ts(),h=c.useRef(async()=>({done:0,failedIds:[],cancelled:!1}));c.useEffect(()=>{m.current||(v.current=!0),i({kind:"idle"})},[n,a]);const p=c.useRef(r);p.current=r;const j=c.useCallback(L=>async z=>{const{data:I}=await sn({path:{mailboxId:e},query:{...L,continuationToken:z,limit:bf},throwOnError:!0});return{ids:(I.items??[]).map(_=>_.messageId),continuationToken:I.continuationToken}},[e]),y=c.useCallback(async()=>{const{data:L}=await sn({path:{mailboxId:e},query:{...p.current,count:!0,results:!1},throwOnError:!0});if(L.count===void 0)throw new Error("the search returned no count for the selection");return L.count},[e]),k=c.useCallback(L=>async z=>{if(L.kind==="move"){const{data:_}=await zo({body:{messageIds:z,destinationMailboxId:L.destinationMailboxId},throwOnError:!0});return _}if(L.kind==="markRead"){const{data:_}=await _o({body:{messageIds:z,isRead:!0},throwOnError:!0});return _}const{data:I}=await Uo({body:{messageIds:z},throwOnError:!0});return I},[]),S=c.useCallback((L,z)=>{we(b,Ne(vf(L,e)));const I=new Set;t&&I.add(t);for(const _ of z)_.accountId&&I.add(_.accountId);for(const _ of I)b.invalidateQueries({queryKey:nt({path:{accountId:_}})})},[b,e,t]),E=c.useCallback(()=>{v.current=!1,i({kind:"counting"}),y().then(L=>{if(v.current){i({kind:"idle"});return}i({kind:"escalated",total:L})},L=>{f(nn("Couldn't count matching messages","The count didn't finish.",L)),i({kind:"idle"})})},[y,f]),A=c.useCallback(()=>{v.current=!0},[]),O=c.useCallback(()=>{m.current||(v.current=!0,i({kind:"idle"}))},[]),F=c.useCallback(async(L,z)=>{v.current=!1,m.current=!0,d(L);const I=z?.length??(o.kind==="escalated"?o.total:0),_=$=>g(Fd($)),w=k(L),R=j(p.current);let P;try{P=z!==void 0?await lr(z,w,_,()=>v.current):await Dd(R,o.kind==="escalated"?o.total:0,w,_,()=>v.current)}finally{m.current=!1}d(void 0),g(void 0),i({kind:"idle"});const N=P.error?aa(P.error):void 0;return N?u({accountId:N.accountId,role:N.role,reason:N.reason,action:{kind:"delete",count:I},onAppointed:async()=>{await h.current(L,z)}}):P.error&&f(nn(gf(L.kind,P.done),xf(L.kind),P.error)),P.done>0&&S(L,z??[]),P},[k,j,o,f,S,u]);return h.current=F,{phase:o,escalate:E,stop:A,clear:O,isRunning:l!==void 0,runningAction:l,progress:x,runAction:F}},kf=120,jf=({keyboardFocusedMessageId:e,openMessageId:t,enabled:n,open:a,delayMs:r=kf})=>{const o=c.useRef(a);o.current=a;const i=c.useRef(void 0);c.useEffect(()=>{const l=e;if(!n){i.current=l;return}if(l===void 0||l===t)return;if(l===i.current){i.current=void 0;return}const d=setTimeout(()=>o.current(l),r);return()=>clearTimeout(d)},[n,e,t,r])},jr="This account has no Junk folder appointed, so there is nowhere to file these. Appoint one under Settings › Folder roles.",wf="These are already in Junk, so there is nowhere to file them.",Nf=(e,t)=>e!==void 0&&e!==t?e:void 0,Qp=(e,t)=>{if(Nf(e,t)===void 0)return e===void 0?jr:wf};function Cf(e,t){if(e.length!==0)return t!==void 0&&e.includes(t)?t:e[0]}const Sf={title:"",navSlot:null,titleMeta:null,searchSlot:null,searchField:null,searchResults:null,makeFilterSlot:null},ys=c.createContext(Sf),wr=()=>c.useContext(ys),Tf=({isOpen:e,messageIds:t,outcome:n,accountId:a,trashFolderLabel:r,staleFolderLabel:o,guessedMailboxId:i,isDeleting:l=!1,onConfirm:d,onCancel:x})=>{const{Account:g}=ua(),{requestAppointment:v}=Ts(),m=t.length,b=()=>d([...t]),f=Oi(m,n,{trashFolderLabel:r,staleFolderLabel:o});if(n==="noTrash"||n==="staleTrash"||n==="unconfirmed"){const u=n==="noTrash"?"none":n==="staleTrash"?"stale":"unconfirmed";return s.jsx(At,{isOpen:e,...f,onConfirm:()=>{if(!a)return b();const h=[...t];x(),v({accountId:a,role:"Trash",reason:u,action:{kind:"delete",count:m},staleFolderLabel:o,trashFolderLabel:r,guessedMailboxId:i,onAppointed:async()=>d(h)})},onCancel:x})}return n==="unavailable"?s.jsx(g,{fallback:s.jsx(At,{isOpen:e,...f,confirmLabel:"Reload reader",onConfirm:()=>window.location.reload(),onCancel:x}),children:({signOut:u})=>s.jsx(At,{isOpen:e,...f,onConfirm:()=>u(),onCancel:x})}):s.jsx(At,{isOpen:e,...f,destructive:!0,isBusy:l||n==="unknown",onConfirm:b,onCancel:x})},Nr=8,Cr=e=>e==="From"||e==="FromDomain",If=e=>({value:e.email,label:e.displayName??e.email,...e.displayName?{hint:e.email}:{},...e.fromSelection?{source:"selected"}:{}}),Ef=e=>{const t=rr(e.email);if(t!==null)return{value:t,...e.fromSelection?{source:"selected"}:{}}},Rf=(e,t)=>e.value.toLowerCase().includes(t)||(e.label??"").toLowerCase().includes(t),Mf=(e,t,n)=>{if(!Cr(e))return[];const a=t.trim().toLowerCase(),r=new Set,o=[];for(const i of n){if(i.email.trim()==="")continue;const l=e==="From"?If(i):Ef(i);if(!l)continue;const d=l.value.toLowerCase();if(!(d===""||r.has(d))&&(r.add(d),d!==a&&!(a!==""&&!Rf(l,a))&&(o.push(l),o.length===Nr)))break}return o},Af=250,$f=2,Lf=(e,t,n)=>{const a=t.trim(),r=Ta(a,Af),o=e!==void 0&&Cr(e),{data:i}=J({...Rs({query:{q:r,limit:Nr}}),enabled:o&&r.length>=$f});if(!o||e===void 0)return[];const l=[...n.map(d=>({email:d,fromSelection:!0})),...(i?.items??[]).map(d=>({email:d.normalizedEmail,...d.displayName?{displayName:d.displayName}:{}}))];return Mf(e,a,l)},Sr=12,Pf=e=>{const{envelope:t}=e,n=t.from[0];return{id:t.messageId,sender:n?or({normalizedEmail:n.normalizedEmail,displayName:n.displayName}):"Unknown",subject:t.subject??"(No subject)",date:at(t.date)}},Df=(e,t)=>{const n=e!==void 0&&t!==void 0,{data:a,isLoading:r}=J({...Bo({path:{mailboxId:e??""},query:{...t,limit:Sr}}),enabled:n,staleTime:3e4});return{messages:(a?.items??[]).map(Ff),isPending:n&&r}},Ff=e=>({id:e.messageId,sender:e.fromName||e.fromEmail||"Unknown",subject:e.subject??"(No subject)",date:at(e.sentDate)}),Of=e=>As({queries:e.slice(0,Sr).map(t=>({..._t({path:{messageId:t}}),staleTime:Number.POSITIVE_INFINITY})),combine:t=>({messages:t.map(n=>n.data).filter(n=>n!==void 0).map(Pf),isPending:t.some(n=>n.isPending)})}),zf=e=>({matchOperator:"Or",literalClauses:Gt(e)}),_f=(e,t,n)=>{const a=me(Ko()),{mutate:r,reset:o}=a,[i,l]=c.useState(!1),d=c.useMemo(()=>Qt(n),[n]),x=c.useCallback(()=>{!e||!t||(l(!1),r({path:{accountId:e},body:ln({anchorMessageId:t,matchOperator:"And",literalClauses:[]})}))},[e,t,r]),g=c.useCallback(()=>{l(!1),o()},[o]),v=a.data,m=v?.semanticUnavailable===!0&&!i&&d.length>0;c.useEffect(()=>{!m||!e||(l(!0),r({path:{accountId:e},body:ln(zf(d))}))},[m,e,d,r]);const b=i||(v?.semanticUnavailable??!1),f=a.isPending||m,u=i?{matchOperator:"Or",literalClauses:Gt(d)}:{...t?{anchorMessageId:t}:{},matchOperator:"And",literalClauses:[]};return{preview:x,reset:g,matchedCount:f?void 0:v?.matchedCount,messageIds:f?void 0:v?.messageIds,semanticUnavailable:b,senderFallback:i,senders:d,matchPredicate:u,isPending:f,isError:a.isError,error:a.error}},Uf=()=>[Ho({path:{mailboxId:""}}),qo({path:{mailboxId:""}}),Qo()].map(e=>[{_id:e[0]._id}]),Bf=e=>pi(e)?e.pages:hi(e)?[e]:[],Kf=e=>typeof e=="object"&&e!==null&&typeof e.messageId=="string",Hf=(e,t)=>{const n=new Set(t),a=new Map;for(const r of e)for(const o of Bf(r))for(const i of o.items){if(!Kf(i)||!n.has(i.messageId))continue;const l=i.subject?.trim();l&&a.set(i.messageId,l)}return t.map(r=>a.get(r)).filter(r=>r!==void 0)},qf=e=>{const t=le(),n=e.join("\0");return c.useMemo(()=>{const a=Uf().flatMap(r=>t.getQueriesData({queryKey:r}).map(([,o])=>o));return Hf(a,e)},[t,n])},Qf=new Set(["hasAttachment","isUnread","isRead","isStarred","category","before","after"]),Gf=e=>Qf.has(e),Wf=(e,{searchHadSemanticReach:t})=>{const n=[],a=[];let r,o;for(const d of e.tokens){if(d.type==="from"){n.push({field:"From",value:d.value});continue}if(d.type==="subject"){n.push({field:"Subject",value:d.value});continue}if(d.type==="in"){r={mailboxId:d.mailboxId,label:d.value};continue}if(d.type==="account"){o=d.accountId;continue}Gf(d.type)&&a.push({type:d.type,label:va(d)})}const i=e.freeText.trim(),l=i.length>0;return l&&n.push({field:"HasWords",value:i}),{clauses:n,matchOperator:"all",scopedOut:r,droppedFacets:a,targetAccountId:o,keptTerms:l,droppedSemantic:l&&t}},Vf=(e,t,n)=>e.targetAccountId??t??n[0]?.accountId,Yf=({failure:e,isStarting:t,isRunning:n,isDone:a,failedCount:r,ruleSaved:o})=>e?.kind==="restartFailed"?"backApplyRestartFailed":e?.kind==="startFailed"?o?"backApplyStartFailed":"commitFailed":a?r>0?"backApplyFailed":"backApplyComplete":e?.kind==="statusUnreadable"?"statusUnknown":t||n?"backApplyRunning":"saving",Xf=e=>{if(e.runState==="statusUnknown")return{kind:"refreshStatus"};if(e.isEscalated)return{kind:"rerunEscalated"};if(e.committedScope==="standing"||e.committedScope==="temporary")return e.createFilterFailed?{kind:"resetAndResend"}:e.backApplyPending?{kind:"startBackApply"}:{kind:"waitOnJob"};if(e.committedScope==="all-like-these"&&e.widenRunsAsJob)return{kind:"resend"};const t=new Set(e.failedIds);return{kind:"rerunBulk",targets:t.size>0?e.sent.filter(n=>t.has(n.id)):e.sent}},Jf=e=>e!==void 0&&e.outcome===void 0&&e.failureReason===void 0,Zf=(e,t)=>{if(e){e.stop();return}t()},em=(e,t)=>e==="run"?t.dismiss:t.cancel,tm={clauses:[],matchOperator:"any"},sm={clauses:[],matchOperator:"all",droppedFacets:[],keptTerms:!1,droppedSemantic:!1},nm=[],am=(e,t,n)=>({verb:"organize",accountId:Vf(e,t.accountId,n),selection:nm,selectionRestriction:void 0,escalated:void 0,searchConversion:e}),Oe={state:"saving",matched:0,applied:0,failed:0,failures:[]},ds=(e,t)=>e.map((n,a)=>({...n,id:`${t}-${a}`})),Kn=(e,t,n)=>{if(e==="delete")return{kind:"delete"};if(e==="markRead")return{kind:"markRead"};const a=e==="junk"?n:t;return a?{kind:"move",destinationMailboxId:a}:void 0},us=e=>e==="move"||e==="junk"||e==="organize",Hn=e=>e==="junk"?jr:"No destination was chosen, so there is nowhere to file these. Go back and pick a folder.";function rm({verb:e,accountId:t,mailboxId:n,selection:a,selectionRestriction:r,escalated:o,escalatedProgress:i,searchConversion:l,onFinished:d,onRunEnded:x,step:g,goToStep:v,goBack:m,closeWizard:b}){const[f]=c.useState(()=>l),[u]=c.useState(()=>o),h=f!==void 0,[p,j]=c.useState(h?"properties":"selected"),y=u?"escalated":p,[k,S]=c.useState(()=>f?{clauses:ds(f.clauses,"search"),matchOperator:f.matchOperator}:tm),[E,A]=c.useState(void 0),[O,F]=c.useState(void 0),[L,z]=c.useState(!1),[I,_]=c.useState(void 0),[w,R]=c.useState(void 0),[P,N]=c.useState(),$=c.useRef(!1),C=c.useRef(!1),B=c.useMemo(()=>a.map(T=>T.id),[a]),U=c.useMemo(()=>a.map(T=>({id:T.id,accountId:T.accountId})),[a]),G=c.useMemo(()=>a.map(T=>T.email).filter(Boolean),[a]),Y=B[0],Z=qf(B),{junkMailboxId:ne}=ur(t),ce=_f(u?void 0:t,Y,G),{preview:pe}=ce;c.useEffect(()=>{pe()},[pe]);const te=y==="similar"||y==="properties",he=c.useMemo(()=>({matchOperator:k.matchOperator==="all"?"And":"Or",literalClauses:k.clauses.map(T=>({field:T.field,value:T.value}))}),[k.clauses,k.matchOperator]),de=y==="similar"?ce.matchPredicate:he,{count:ge,matchedIds:ue}=Ji(te?t:void 0,de),q=Of(te?ue:[]),re=Df(u?n:void 0,u?.searchQuery),H=u?{status:"ready",count:u.total}:te?ge:{status:"ready",count:a.length},{data:Q}=J({...kt({path:{accountId:t??""}}),enabled:!!t,staleTime:Number.POSITIVE_INFINITY}),ae=fr(t),He=ra(),ot=c.useMemo(()=>ia({mailboxes:Q?.items??[],folderAppointments:ae,currentMailboxId:n,translator:He}),[Q?.items,ae,n,He]),{createFolderIn:Yt}=oa(t),it=ot.find(T=>T.id===k.moveMailboxId)?.label,lt=vd(a.map(T=>({normalizedEmail:T.email,displayName:T.sender}))),ct=Td({match:y==="properties"&&k.clauses[0]?.value.trim()||void 0,sender:lt?or(lt):void 0,folder:it}),W=c.useMemo(()=>({...k,name:k.name??ct}),[k,ct]),It=Lf(E?.draft.field,E?.draft.value??"",G),fe=Zi(t),ye=el(t),qe=yf({mailboxId:n??"",accountId:t,enabled:!1,predicateKey:"selection-wizard",searchQuery:{}}),{runAction:Qe}=qe,oe=Vo({verb:e,mode:y,scope:k.scope,fromSearch:h}),X=oe[an(oe,g)],Le=Yo(t,r),Ce=(T=>{if(T==="folder")return Le.destination;if(T==="rule")return W.scope==="standing"||W.scope==="until"?Le.rule:void 0})(X)??Xo(X,W,H),Pe=c.useCallback(()=>ds(Sd(G,Z),"seed"),[G,Z]),Xt=c.useCallback(T=>{j(T),S(D=>({...D,widen:T==="similar"&&Y?{anchorCount:Math.max(a.length,1)}:void 0,...T==="properties"&&D.clauses.length===0?{clauses:Pe()}:{}}))},[Y,a.length,Pe]),Ge=c.useCallback(()=>{z(!0),j("properties"),S(T=>({...T,widen:void 0,clauses:ds(Gt(G),"sender"),matchOperator:"any"})),v("properties")},[G,v]),We=br()===!1,Se=We||ce.semanticUnavailable||ce.isError;c.useEffect(()=>{X==="match"&&(y!=="similar"||!Se||L||Ge())},[X,y,Se,L,Ge]);const dt=c.useCallback(()=>{A({mode:"add",draft:{field:"From",value:""}})},[]),ie=c.useCallback(T=>{const D=k.clauses.find(V=>V.id===T);D&&A({mode:"edit",clauseId:T,draft:{field:D.field,value:D.value}})},[k.clauses]),ke=c.useCallback(T=>{S(D=>({...D,clauses:D.clauses.filter(V=>V.id!==T)}))},[]),$r=c.useCallback(T=>{A(D=>D&&{...D,draft:T})},[]),Lr=c.useCallback(()=>{A(T=>{if(!T)return;const D=tl(T.draft.field,T.draft.value),V={...T.draft,value:D};S(Ve=>({...Ve,clauses:T.clauseId?Ve.clauses.map(ut=>ut.id===T.clauseId?{...ut,...V}:ut):[...Ve.clauses,{id:crypto.randomUUID(),...V}]}))})},[]),Pr=c.useCallback(()=>{if(Ce){F(X);return}F(void 0);const T=oe[an(oe,X)+1];T&&v(T)},[Ce,X,oe,v]),Jt=c.useCallback(async T=>{const D=Kn(e,W.moveMailboxId,ne);if(!D){R({matched:T.length,sent:T,failureReason:Hn(e)});return}R({matched:T.length,sent:T});const V=await Qe(D,T);R({matched:T.length,sent:T,outcome:V}),C.current&&x?.(D.kind,T.length,V)},[e,W.moveMailboxId,ne,Qe,x]),Zt=c.useCallback(async()=>{if(!u)return;const T=Kn(e,W.moveMailboxId,ne);if(!T){R({matched:u.total,sent:[],failureReason:Hn(e)});return}R({matched:u.total,sent:[]});const D=await u.run(T);R({matched:u.total,sent:[],outcome:D}),C.current&&x?.(T.kind,u.total,D)},[u,e,W.moveMailboxId,ne,x]),{start:Et}=fe,{createFilterAsync:Ws}=ye,Rt=c.useCallback(()=>{if(u){Zt();return}const T=sl({mode:p,ruleScope:W.scope}),D=nl({mode:p,ruleScope:W.scope,anchorMessageId:Y,clauses:W.clauses,matchOperator:W.matchOperator,moveMailboxId:W.moveMailboxId,until:W.until});if(_(T),T==="standing"||T==="temporary"){const V=al(D)?D:void 0;N(V),Ws(D,T,(W.name??"").trim()).then(Ve=>{Ve&&V&&Et(V)});return}if(T==="all-like-these"&&us(e)){Et(D);return}Jt(T==="just-these"?U:ue.map(V=>({id:V,accountId:t})))},[u,Zt,p,W,Y,e,t,U,ue,Ws,Et,Jt]),Dr=c.useCallback(()=>{if(Ce){F(X);return}$.current||($.current=!0,v("run"),Rt())},[Ce,X,v,Rt]),Vs=c.useCallback(T=>{const D=fe.progress,V=Yf({failure:fe.failure,isStarting:fe.isStarting,isRunning:fe.isRunning,isDone:fe.isDone,failedCount:D.failedCount,ruleSaved:T});return V==="saving"||V==="commitFailed"||V==="backApplyStartFailed"?{...Oe,state:V}:{state:V,matched:D.matchedCount,applied:D.appliedCount,failed:V==="backApplyFailed"||V==="backApplyRestartFailed"?D.failedCount:0,failures:[]}},[fe]),Ys=c.useMemo(()=>{const T=new Map;for(const D of[...a,...q.messages,...re.messages])T.set(D.id,D);return T},[a,q.messages,re.messages]),Xs=u?i:qe.progress,Js=c.useCallback(()=>{if(!w)return Oe;const{matched:T,outcome:D,failureReason:V}=w;if(V!==void 0)return{...Oe,state:"commitFailed",failureReason:V};if(!D){const Ye=Xs?.done??0;return{state:"backApplyRunning",matched:Math.max(T,Ye),applied:Ye,failed:0,failures:[]}}if(!(D.cancelled||D.error!==void 0))return{state:"backApplyComplete",matched:Math.max(T,D.done),applied:D.done,failed:0,failures:[]};if(D.done===0)return{...Oe,state:"commitFailed"};const ut=D.failedIds.map(Ye=>Ys.get(Ye)).filter(Ye=>Ye!==void 0),_r=D.failedIds.length>0?D.failedIds.length:Math.max(T-D.done,1);return{state:"runStopped",matched:Math.max(T,D.done),applied:D.done,failed:_r,failures:ut}},[w,Xs,Ys]),De=u?Js():I==="standing"||I==="temporary"?ye.isError?{...Oe,state:"commitFailed"}:ye.isSuccess?P?Vs(!0):{...Oe,state:"filterSaved"}:Oe:I==="all-like-these"&&us(e)?Vs(!1):Js(),Fr=()=>{const T=Xf({runState:De.state,isEscalated:u!==void 0,committedScope:I,createFilterFailed:ye.isError,backApplyPending:P!==void 0,widenRunsAsJob:us(e),failedIds:w?.outcome?.failedIds??[],sent:w?.sent??U});switch(T.kind){case"refreshStatus":fe.refreshStatus();return;case"rerunEscalated":Zt();return;case"resetAndResend":ye.reset(),Rt();return;case"resend":Rt();return;case"startBackApply":P&&Et(P);return;case"waitOnJob":return;case"rerunBulk":Jt(T.targets);return}},Or=c.useCallback(()=>{b(oe,X)},[b,oe,X]),es=c.useCallback(()=>{C.current=!0,b(oe,X),d()},[b,oe,X,d]),{stop:Zs}=qe,zr=c.useCallback(()=>{Zf(u,Zs)},[u,Zs]);Ad({shouldBlockFn:({action:T})=>T!=="BACK"?!1:(es(),!0),enableBeforeUnload:!1,disabled:X!=="run"});const ts={messages:u?re.messages:te?q.messages:a,count:H,label:y==="selected"?"Your selection":"A sample of what matches",emptyReason:y==="similar"&&Se?"notIndexed":"noMatch",loading:u?re.isPending:te&&(H.status==="loading"||q.isPending)};return s.jsx(Jo,{verb:e,steps:oe,step:X,blockedReason:Ce,nudged:O===X,onBack:m,onExit:em(X,{dismiss:es,cancel:Or}),onContinue:Pr,onCommit:Dr,match:{selectedCount:a.length,mode:y,accountId:Le.accountId,onModeChange:Xt,semanticUnavailable:Se,semanticOff:We,semanticErrorDetail:ce.error instanceof Error?ce.error.message:void 0,semanticFallbackTaken:L,onSemanticFallback:Ge,escalatedScope:u?.scope,sample:ts},properties:{clauses:W.clauses,matchOperator:W.matchOperator,onMatchOperatorChange:T=>S(D=>({...D,matchOperator:T})),clauseEdit:E,onStartAddClause:dt,onStartEditClause:ie,onRemoveClause:ke,onChangeDraft:$r,onSubmitClause:Lr,onCancelClause:()=>A(void 0),clauseFields:rl,clauseSuggestions:It,conversionNotice:f?Ed(f):void 0,semanticFallbackTaken:L,sample:{...ts,label:"What this matches"}},folder:{folders:ot,mailboxId:W.moveMailboxId,delimiter:la(Q?.items??[]),onSelect:T=>S(D=>({...D,moveMailboxId:T})),onCreateFolder:t?Yt:void 0,restriction:Le.destination},rule:{draft:W,onScopeChange:T=>S(D=>({...D,scope:T})),onUntilChange:T=>S(D=>({...D,until:T})),restriction:Le.rule},name:{name:W.name??"",onNameChange:T=>S(D=>({...D,name:T})),nudged:O===X},review:{verb:e,mode:y,selectedCount:a.length,clauses:W.clauses,matchOperator:W.matchOperator,folder:it,scope:W.scope,until:W.until,ruleName:oe.includes("name")?W.name:void 0,escalatedScope:u?.scope,sample:ts},run:{state:De.state,verb:e,scope:W.scope,matched:De.matched,applied:De.applied,failedCount:De.failed,failures:De.failures,failureReason:De.failureReason,onRetry:Fr,onDismiss:es,onCancelRun:Jf(w)?zr:void 0}})}function Gp(e){const t=Go()==="search",{searchConversion:n}=wr(),{accounts:a}=Bt(),{step:r,goToStep:o,goBack:i,closeWizard:l}=Wo(t?"properties":"match");if(Es({id:"selection-wizard",open:r!==void 0}),!r)return null;const d=t?n??sm:void 0;return s.jsx(rm,{...e,...d?am(d,e,a):{},step:r,goToStep:o,goBack:i,closeWizard:l})}const om=[],qs=c.createContext(null),im=e=>{const t=c.useContext(qs);return t?t.rowInteraction(e):null},lm=()=>{const e=c.useContext(qs);if(!e)throw new Error("useThreadListSelection must be used inside <ThreadListInteraction>");return e},cm="[data-message-id]",dm=e=>Array.from(e.querySelectorAll(cm)).map(t=>t.dataset.messageId).filter(t=>t!==void 0),um=(e,t)=>e.length===t.length&&e.every((n,a)=>n===t[a]),fm=e=>{const[t,n]=c.useState([]);return c.useEffect(()=>{const a=e.current;if(!a)return;const r=()=>{const i=dm(a);n(l=>um(l,i)?l:i)};r();const o=new MutationObserver(r);return o.observe(a,{childList:!0,subtree:!0}),()=>o.disconnect()},[e]),t};function Wp({selectedMessageId:e,rows:t,onOpen:n,onDeleteMessages:a,onSelectionVerb:r,isDeleting:o=!1,commandsRef:i,onTriageContextChange:l,children:d}){const x=Is(),{pushError:g}=ve(),v=c.useRef(null),m=fm(v),b=Rd({orderedIds:m,isDesktop:x,initialFocusedId:e}),{focusedMessageId:f,setFocusedMessageId:u,pendingDomFocusRef:h,cursorMovedByPointerRef:p,selection:j,isMultiSelectMode:y,exitSelection:k,handleRowSelect:S}=b,{selectedIds:E,selectedCount:A,isSelected:O,toggle:F,select:L,toggleAll:z}=j,I=m.length>0&&m.every(q=>E.has(q)),_=c.useCallback(()=>{m.length>0&&z(m)},[m,z]),{intersectWith:w}=j;c.useEffect(()=>{w(m)},[w,m]),c.useEffect(()=>{const q=h.current;q!==null&&(h.current=null,v.current?.querySelector(`[data-message-id="${q}"]`)?.focus())});const R=c.useCallback(q=>{p.current=!0,u(q)},[p,u]),P=c.useCallback(q=>{x||L(q)},[x,L]),N=c.useCallback(()=>{f&&n(f)},[f,n]),$=c.useCallback(q=>n(q,{replace:!0}),[n]);jf({keyboardFocusedMessageId:b.keyboardFocusedMessageId,openMessageId:e,enabled:x&&A===0,open:$});const[C,B]=c.useState(null),{outcome:U,staleFolderLabel:G,guessedMailboxId:Y}=of(C?.targets??om),Z=c.useCallback(q=>{if(C!==null)return!0;if(A>0)return r(q),!0;if(q!=="delete"||!f)return!1;const re=t.find(H=>H.id===f);return!re?.mailboxId||!re.accountId?(g({title:"Couldn't delete this message",detail:"This list has lost track of which account and folder it is in, so reader can't tell whether deleting it would move it to Trash or erase it. Nothing was deleted.",action:{label:"Reload the list",href:window.location.href}}),!0):(B({ids:[f],targets:[{accountId:re.accountId,mailboxId:re.mailboxId}]}),!0)},[C,A,r,f,t,g]),ne=c.useCallback(q=>{q.length!==0&&(a(q),B(null),k())},[a,k]),ce=c.useCallback(()=>B(null),[]),pe=c.useCallback(()=>A===0?!1:(k(),!0),[A,k]),te=m.length>0;c.useEffect(()=>{if(i){if(!te){i.current=null;return}return i.current={focusNext:b.focusNext,focusPrevious:b.focusPrevious,focusFirst:b.focusFirst,focusLast:b.focusLast,openFocused:N,toggleSelect:b.toggleFocusedSelection,extendSelectDown:b.extendRangeDown,extendSelectUp:b.extendRangeUp,selectAll:b.selectAllLoaded,clearSelection:pe,requestVerb:Z,toggleDensity:()=>{}},()=>{i.current=null}}},[i,te,b.focusNext,b.focusPrevious,b.focusFirst,b.focusLast,b.toggleFocusedSelection,b.extendRangeDown,b.extendRangeUp,b.selectAllLoaded,N,pe,Z]);const he=c.useMemo(()=>Array.from(E),[E]),de=C!==null;c.useEffect(()=>{l?.({focusedMessageId:f,selectedIds:he,orderedIds:m,hasList:te})},[l,f,he,m,te]);const ge=Cf(m,f),ue=c.useMemo(()=>({selectedIds:E,selectedCount:A,exitSelection:k,startSelectionVerb:r,orderedIds:m,allSelected:I,toggleAllLoaded:_,rowInteraction:q=>({focused:q===f,isTabStop:q===ge,isDesktop:x,onFocusRow:R,selection:{isChecked:O(q),onToggleCheck:F,onRowSelect:S,isMultiSelectMode:y,onLongPress:P}})}),[E,A,k,r,m,I,_,f,ge,x,R,O,F,S,y,P]);return s.jsxs(qs.Provider,{value:ue,children:[s.jsx("div",{ref:v,className:"contents",children:d}),s.jsx(Tf,{isOpen:de,messageIds:C?.ids??[],outcome:U,accountId:C?.targets[0]?.accountId,staleFolderLabel:G,guessedMailboxId:Y,isDeleting:o,onConfirm:ne,onCancel:ce})]})}function Vp({title:e,isDeleting:t}){const n=wr(),{selectedCount:a,exitSelection:r,startSelectionVerb:o,orderedIds:i,allSelected:l,toggleAllLoaded:d}=lm();return s.jsx(ed,{title:n.title||e,navSlot:n.navSlot,titleMeta:n.titleMeta,searchSlot:n.searchSlot,searchField:n.searchField,idleSlot:n.makeFilterSlot,count:a,onCancel:r,onDelete:()=>o("delete"),onMarkRead:()=>o("markRead"),isBusy:t,selectAll:i.length>0?{checked:l,indeterminate:a>0&&!l,onChange:d}:void 0})}const fs=e=>{e.preventDefault(),e.stopPropagation()},mm=(e,t)=>{const n=c.useRef(!1),a=c.useCallback(i=>{if(n.current=!1,i.button!==0)return;const l=gs(i);bn(l)&&t?.(e,l)&&(fs(i),n.current=!0,i.currentTarget.focus(),l.shiftKey&&window.getSelection()?.removeAllRanges())},[t,e]),r=c.useCallback(i=>{!i.ctrlKey||!t||i.preventDefault()},[t]),o=c.useCallback(i=>{if(n.current)return n.current=!1,fs(i),!0;const l=gs(i);return!bn(l)||!t?.(e,l)?!1:(fs(i),l.shiftKey&&window.getSelection()?.removeAllRanges(),!0)},[t,e]);return{onMouseDown:a,onContextMenu:r,claimClick:o}},pm=({thread:e,active:t=!1,focused:n,isTabStop:a,density:r="comfortable",isDesktop:o,badge:i,selection:l,inListbox:d=!1,link:x,onClick:g,onFocusRow:v})=>{const m=le(),b=e.id,f=im(b),u=n??f?.focused??!1,h=a??f?.isTabStop??!1,p=l??f?.selection,j=v??f?.onFocusRow,y=o??f?.isDesktop??!0,k=p?.isChecked??!1,S=p?.isMultiSelectMode??!1,E=p?.onToggleCheck,A=p?.onRowSelect,O=p?.onLongPress,F=c.useCallback(C=>{C.preventDefault(),C.stopPropagation(),E?.(b)},[E,b]),L=mm(b,A),z=c.useCallback(C=>{if(!L.claimClick(C)){if(!y){if(S){C.preventDefault(),C.stopPropagation(),E?.(b);return}g?.();return}A?.(b,gs(C)),g?.()}},[L,y,S,E,A,g,b]),I=c.useCallback(()=>{O?.(b)},[O,b]),{longPressProps:_}=Dc({onLongPress:I,accessibilityDescription:k?"Deselect message":"Select message"}),w=c.useCallback(()=>{m.prefetchQuery(_t({path:{messageId:b}}))},[m,b]),R=c.useCallback(()=>{w(),j?.(b)},[w,j,b]),P=St({"data-list-row":"","data-message-row":!0,"data-message-id":b,...d?{role:"option","aria-selected":k}:{},tabIndex:h?0:-1,onClick:z,onMouseDown:L.onMouseDown,onContextMenu:L.onContextMenu,onMouseEnter:w,onFocus:R},y||!p?{}:_),N=M(r==="compact"?Ga({active:t,focused:u}):M("group",Os({active:t,focused:u})),"outline-none focus-visible:ring-2 focus-visible:ring-accent focus-visible:ring-inset",k&&"bg-accent-soft",!y&&"min-h-11 select-none [-webkit-touch-callout:none]"),$=r==="compact"?s.jsx(Wa,{thread:e}):s.jsx(zs,{thread:e,badge:i,selection:p?{checked:k,alwaysVisible:S,onToggle:F}:void 0});return x===void 0?s.jsx("button",{type:"button",...P,className:N,children:$}):s.jsx(ma,{to:"/mail/$mailboxId/$threadId/$messageId",params:{...x,messageId:b},search:C=>C,variant:"row",...P,className:N,children:$})},Yp=c.memo(pm),hm="Open a message first",gm="This conversation hasn't loaded yet",xm="The mailbox list hasn't loaded yet",bm="Couldn't find this mailbox's account — reload to try again",vm={reply:"Reply",replyAll:"Reply all",forward:"Forward",delete:"Move to Trash",move:"Move to mailbox",flag:"Star"},Xp=({hasThread:e,messageId:t,intelligenceOpen:n,canToggleIntelligence:a,onToggleIntelligence:r,onReply:o,onReplyAll:i,onForward:l,onDelete:d,onToggleStar:x,isStarred:g,moveContext:v,moveContextLoading:m})=>{const[b,f]=c.useState(null),u=t??null,h=O=>e?O==="move"?v?null:m?xm:bm:{reply:o,replyAll:i,forward:l,delete:d,flag:x}[O]?null:gm:hm,p=b&&b.messageId===u?b:null,j=p?h(p.action):null,y=p?.action==="move"&&p.overThread&&!!v,k=j??(p&&!y?`${vm[p.action]} is ready — press it again`:null),S=O=>f({action:O,messageId:u,overThread:e}),E=O=>()=>S(O),A=(O,F)=>F?()=>{f(null),F()}:E(O);return s.jsx(Oc,{hasThread:e,isStarred:g,onUnavailable:S,unavailableHint:k,replyTitle:`Reply ${ft("reply")}`,replyAllTitle:`Reply all ${ft("replyAll")}`,forwardTitle:`Forward ${ft("forward")}`,deleteTitle:`Move to Trash ${ft("delete")}`,flagTitle:`Star ${ft("toggleStar")}`,onReply:A("reply",o),onReplyAll:A("replyAll",i),onForward:A("forward",l),onDelete:A("delete",d),onToggleStar:A("flag",x),onMove:E("move"),moveSlot:v?s.jsx(Hs,{accountId:v.accountId,currentMailboxId:v.currentMailboxId,onMove:v.onMove,label:"Move to mailbox",defaultOpen:y}):void 0,children:s.jsx(Fc,{open:n,enabled:a,onToggle:r})})};function ym(e){const[t,n]=c.useState(null);t!==null&&t!==e&&n(null);const a=e!==null&&t===e,r=c.useCallback(()=>n(null),[]),o=c.useCallback(()=>n(e),[e]),i=c.useCallback(()=>n(a?null:e),[a,e]);return{isOpen:a,open:o,close:r,toggle:i}}const Jp=e=>{const{intelligenceOpen:t,onToggleIntelligence:n,onRaiseIntelligence:a}=Bt(),r=pa()?.showIntelligencePane??!1,o=e??null,i=ym(o),l=!r&&i.isOpen,{open:d,toggle:x}=i,g=c.useCallback(()=>{if(r){n();return}x()},[r,n,x]),v=c.useCallback(()=>{!r||t||a()},[r,t,a]),m=c.useCallback(()=>{if(!r){d();return}v()},[r,d,v]);return{canToggle:o!==null,isShowing:o!==null&&(r?t:l),toggle:g,open:m,drawerOpen:l,closeDrawer:i.close,railFits:r,openRail:v}},Zp=(e,{toggle:t,open:n})=>{c.useEffect(()=>(e.current={toggle:t,open:n},()=>{e.current=null}),[e,t,n])},km=()=>{const e=le();return c.useCallback(t=>{const n=Ae({path:{threadId:t.threadId}}),r=e.getQueriesData({queryKey:n}).flatMap(([,o])=>o?.items.map(i=>i.messageId)??[]);return r.length>0?r:[t.messageId]},[e])},jm=[],Tr=e=>{const{data:t}=J({...fa({path:{threadId:e??""}}),enabled:!!e});return t?.items??jm},eh=(e,t)=>{const n=Tr(e),a=t?n.find(o=>o.messageId===t):void 0,r=n.length>0?n[n.length-1]:void 0;return a??r},th=({thread:e,isOpen:t=!1,mailboxId:n,accountId:a,onAfterOptimisticRemove:r})=>{const o=n??e?.mailboxId,i=a??e?.accountId,{accountId:l}=Us(i?void 0:o),d=i??l,x=km(),{deleteMessages:g}=Vt({mailboxId:o??"",threadId:e?.threadId,accountId:d,onAfterOptimisticRemove:r}),{moveMessages:v}=Wt({mailboxId:o??"",threadId:e?.threadId,accountId:d,onAfterOptimisticRemove:r}),m=Tr(t?e?.threadId:void 0),f=m.find(y=>y.messageId===e?.messageId)?.hasStars??e?.hasStars,{toggleStar:u}=cr({threadId:e?.threadId??"",mailboxId:o??"",messages:m}),h=c.useCallback(()=>{e&&g(x(e))},[e,x,g]),p=c.useCallback(y=>{e&&v(x(e),y)},[e,x,v]),j=c.useCallback(()=>{e&&u(e.messageId,f??!1)},[e,f,u]);return{mailboxId:o,accountId:d,isStarred:f,deleteThread:h,moveThread:p,toggleStar:j}},qn=(e,t,n)=>{if(!t)return null;const a=e.indexOf(t);if(a===-1)return null;const r=n==="next"?a+1:a-1;return r<0||r>=e.length?null:e[r]},sh=()=>{const[e,t]=c.useState(void 0),[n,a]=c.useState([]),[r,o]=c.useState([]),i=c.useRef(null),[l,d]=c.useState(!1),x=c.useCallback(g=>{t(g.focusedMessageId),a(g.selectedIds),g.orderedIds&&o(g.orderedIds),d(g.hasList)},[]);return{listCommandsRef:i,onTriageContextChange:x,focusedMessageId:e,selectedIds:n,orderedIds:r,hasList:l}},nh=({context:e,orderedIds:t,selectedMessageId:n,enabled:a=!0,onClose:r,handlers:o,hasOpenThread:i=!1})=>{const{listCommandsRef:l,hasList:d}=e,x=c.useCallback(()=>{l.current?.clearSelection()||n&&r()},[l,n,r]),{reply:g,replyAll:v,forward:m,...b}=o;return gi({enabled:a,handlers:{...d?{focusNext:()=>l.current?.focusNext(),focusPrevious:()=>l.current?.focusPrevious(),focusFirst:()=>l.current?.focusFirst(),focusLast:()=>l.current?.focusLast(),openFocused:()=>l.current?.openFocused(),toggleSelect:()=>l.current?.toggleSelect(),extendSelectDown:()=>l.current?.extendSelectDown(),extendSelectUp:()=>l.current?.extendSelectUp(),selectAll:()=>l.current?.selectAll(),toggleDensity:()=>l.current?.toggleDensity()}:{},back:x,...b,...i?{}:{reply:g,replyAll:v,forward:m}}}),{goBack:x,nextMessageId:qn(t,n,"next")??void 0,previousMessageId:qn(t,n,"previous")??void 0}},wm={unread:"unread",flagged:"starred",attachment:"attachments"},Nm=new Set(Object.values(Te)),Ir=e=>Nm.has(e),ah=e=>Ir(e.category)||e.attributes.size>0,rh=e=>{const t={};Ir(e.category)&&(t.category=[e.category]);for(const n of e.attributes){const a=wm[n];a&&(t[a]=!0)}return t},oh=e=>(e.senderTrust?.length??0)>0||e.dkimMismatch!==void 0?"loaded-pages":"whole-folder",Cm=["category","unread","starred","attachments"],Qn=e=>JSON.stringify(Cm.map(t=>e?.[t]??null)),Sm=e=>{if(!Array.isArray(e))return;const[t]=e;if(typeof t!="object"||t===null)return;const n=t.query;if(!(typeof n!="object"||n===null))return n},ih=(e,t)=>{const n=Sm(e);return n?Qn(n)===Qn(t):!1},Tm=new Map(nd().categories.filter(e=>e.id!=="all").map(e=>[e.id,e.label])),lh=e=>Tm.get(e),Im={sender:"sender",recipient:"recipient",subject:"subject",attachment:"attachment",body:"body",entities:"entities"};function Em(e){return Im[e]??e}function ch(e,t){const{folder:n}=Ms(t,[e.mailboxId]);return{id:e.messageId,sender:e.fromName??e.fromEmail??"Unknown",...e.fromEmail?{senderEmail:e.fromEmail}:{},subject:e.subject??"(No subject)",snippet:e.snippet??"",date:at(e.sentDate),unread:!e.isRead,flagged:e.hasStars===!0,threadId:e.threadId,mailboxId:e.mailboxId,...n?{folder:n}:{}}}function dh(e,t){const{folder:n}=Ms(t,e.mailboxId?[e.mailboxId]:[]);return{id:e.id,sender:e.fromName,...e.fromEmail?{senderEmail:e.fromEmail}:{},subject:e.subject,snippet:e.snippet,date:e.timeLabel,unread:!e.isRead,flagged:e.starred===!0,...e.threadId?{threadId:e.threadId}:{},...e.mailboxId?{mailboxId:e.mailboxId}:{},...n?{folder:n}:{}}}function Rm(e,t){const{mailboxId:n,folder:a}=Ms(t,e.mailboxIds);return{id:e.messageId,sender:e.fromName??"Unknown",subject:e.subject??"(No subject)",snippet:"",date:e.sentDate!=null?at(e.sentDate*1e3):"",threadId:e.threadId,matchedChunkLabel:Em(e.matchedChunkType),score:e.score,...n?{mailboxId:n}:{},...a?{folder:a}:{}}}function uh(e,t,n){const a=new Set(t),r=[];for(const o of[...e].sort((i,l)=>l.score-i.score))a.has(o.threadId)||(a.add(o.threadId),r.push(Rm(o,n)));return r}function Mm(e){const t=e.authenticity?.dkimMismatch===!0;return{id:e.messageId,accountId:e.accountId,mailboxId:e.mailboxId,threadId:e.threadId,fromName:e.fromName??e.fromEmail??"Unknown",fromEmail:e.fromEmail??"",subject:e.subject??"(No subject)",snippet:e.snippet??"",timeLabel:at(e.sentDate),sentDate:e.sentDate,isRead:e.isRead,hasAttachment:e.hasAttachment,starred:e.hasStars===!0,trust:e.senderTrust,category:dr(e.category),suspicious:t,...Au(e)}}function fh(e,t){return t.some(n=>n.muted===!0)?{kind:"unknown"}:e}function mh(e){return e.filter(t=>t.muted!==!0)}function ph(e,t){const n=new Set,a=[];for(const r of[...e,...t])n.has(r.id)||(n.add(r.id),a.push(r));return a.sort((r,o)=>(o.sentDate??0)-(r.sentDate??0))}const Er=[{id:"personal",label:"Personal",category:Te.personal},{id:"transactional",label:"Transactional",category:Te.transactional},{id:"newsletter",label:"Newsletter",category:Te.newsletter},{id:"marketing",label:"Marketing",category:Te.marketing},{id:"social",label:"Social",category:Te.social},{id:"automated",label:"Automated",category:Te.automated},{id:"uncategorized",label:"Unclassified",category:Te.uncategorized}],hh=Er.map(e=>e.category);function gh(e){const t=new Map(e.map(a=>[a.category,a])),n=[];for(const a of Er){const r=t.get(a.category);!r||!(r.loading||r.failed||r.rows.length>0||r.total.kind==="exact"&&r.total.value>0)||n.push({id:a.id,label:a.label,threads:r.rows,total:r.total,atCap:r.atCap,loading:r.loading,error:r.failed})}return n}function xh(e,t){return e.fromName.toLowerCase().includes(t)||e.fromEmail.toLowerCase().includes(t)||e.subject.toLowerCase().includes(t)||e.snippet.toLowerCase().includes(t)}function Am(e,t){return t.every(n=>{switch(n.type){case"from":{const a=n.value.toLowerCase();return e.fromEmail.toLowerCase().includes(a)||e.fromName.toLowerCase().includes(a)}case"subject":return e.subject.toLowerCase().includes(n.value.toLowerCase());case"category":return(e.category??"uncategorized")===n.category;case"hasAttachment":return e.hasAttachment===!0;case"isUnread":return!e.isRead;case"isRead":return e.isRead===!0;case"isStarred":return e.starred===!0;case"after":return e.sentDate!=null&&e.sentDate>=n.epochSeconds*1e3;case"before":return e.sentDate!=null&&e.sentDate<n.epochSeconds*1e3;case"in":return e.mailboxId===n.mailboxId;case"account":return e.accountId===n.accountId;default:return!1}})}const $m=["from","subject","category","unread","starred","attachments"],Pt=e=>e[0],Lm=e=>{const t=Pt(e.filter(l=>l.type==="from").map(l=>l.value)),n=Pt(e.filter(l=>l.type==="subject").map(l=>l.value)),a=Pt(e.filter(l=>l.type==="category").map(l=>l.category)),r=Pt(e.filter(l=>l.type==="isUnread"||l.type==="isRead").map(l=>l.type==="isUnread")),o=e.some(l=>l.type==="isStarred")?!0:void 0,i=e.some(l=>l.type==="hasAttachment")?!0:void 0;return{...t!==void 0?{from:t}:{},...n!==void 0?{subject:n}:{},...a!==void 0?{category:[a]}:{},...r!==void 0?{unread:r}:{},...o!==void 0?{starred:o}:{},...i!==void 0?{attachments:i}:{}}},Pm=(e,t)=>{switch(t.type){case"from":return e.from?.toLowerCase()===t.value.toLowerCase();case"subject":return e.subject?.toLowerCase()===t.value.toLowerCase();case"category":return e.category?.length===1&&e.category[0]===t.category;case"isUnread":return e.unread===!0;case"isRead":return e.unread===!1;case"isStarred":return e.starred===!0;case"hasAttachment":return e.attachments===!0;case"before":case"after":case"in":case"account":return!1}},Gn=(e,t)=>Object.fromEntries(Object.entries(e).filter(([n])=>t.includes(n)));function bh(e,t={},n=$m){const a=Gn(Lm(e),n),r={...a,...Gn(t,n)};return{params:a,residual:e.filter(o=>!Pm(r,o))}}function vh(e,t,n){if(t.length===0)return e;const a=[...t];return e.filter(r=>{const o=Mm(r);return Am({...o,accountId:o.accountId??n},a)})}const Rr=8;function Qs(e,t){const n=Math.max(0,Math.min(t,e.length)),a=Ei(e).find(o=>n>=o.start&&n<=o.end);if(!a)return{start:n,end:n,raw:""};const r=Ri(a.raw);return r?{start:a.start,end:a.end,raw:a.raw,name:r.name,value:r.value}:{start:a.start,end:a.end,raw:a.raw}}function Dm(e,t){const n=Qs(e,t);if(n.name===void 0)return{kind:"token",query:n.raw};const a=ya(n.name);if(a)return{kind:"value",token:a.name,source:a.values,query:n.value??""}}const Fm={mailbox:"mailboxes",account:"accounts",contact:"contacts"},Om=(e,t)=>{if(e.values==="fixed")return e.options??[];const n=Fm[e.values];return n?t[n]??[]:[]},zm=(e,t)=>{if(t==="")return 1;const n=e.toLowerCase();return n.startsWith(t)?0:n.includes(t)?1:-1},ks=(e,...t)=>{let n=-1;for(const a of t){if(a===void 0)continue;const r=zm(a,e);r<0||(n<0||r<n)&&(n=r)}return n},Mr=e=>{const t=new Set;return e.filter(n=>n.rank>=0).sort((n,a)=>n.rank-a.rank).filter(n=>{const a=n.suggestion.value.toLowerCase();return t.has(a)?!1:(t.add(a),!0)}).slice(0,Rr).map(n=>n.suggestion)},Wn=e=>({value:`${e.name}:`,label:`${e.name}:`,hint:e.label});function _m(e){const t=e.trim().toLowerCase();if(t==="")return on.map(Wn);const n=[];for(const a of on)if(n.push({rank:ks(t,`${a.name}:`,a.label),suggestion:Wn(a)}),a.values==="fixed")for(const r of a.options??[]){const o=ka(a.name,r.value);n.push({rank:ks(t,o,r.label),suggestion:{value:o,label:r.label??o,hint:o}})}return Mr(n)}function Um(e,t,n){const a=t.trim().toLowerCase(),r=Om(e,n).map(o=>({rank:ks(a,o.value,o.label),suggestion:{value:ka(e.name,o.value),label:o.label??o.value,...o.hint?{hint:o.hint}:{}}}));return Mr(r)}function Bm(e,t,n={}){const a=Qs(e,t);if(a.name===void 0)return _m(a.raw);const r=ya(a.name);return r?Um(r,a.value??"",n):[]}function Km(e,t,n){const a=Qs(e,t),r=!n.value.endsWith(":"),o=/\s/.test(e.slice(a.end,a.end+1)),i=r&&!o?`${n.value} `:n.value;return{query:e.slice(0,a.start)+i+e.slice(a.end),cursor:a.start+i.length+(r&&o?1:0)}}const Hm=e=>({value:e.normalizedEmail,...e.displayName?{label:e.displayName,hint:e.normalizedEmail}:{}}),qm=250,Qm=2;function Gm({query:e,cursor:t,enabled:n}){const{accounts:a}=Bt(),{mailboxesByName:r}=ja(),o=r!==void 0,i=n?Dm(e,t):void 0,l=i?.source==="contact"?i.query.trim():"",d=Ta(l,qm),{data:x}=J({...Rs({query:{q:d,limit:Rr}}),enabled:d.length>=Qm}),g=As({queries:a.map(f=>({...kt({path:{accountId:f.accountId}}),staleTime:1/0}))}),v=c.useMemo(()=>o?xi(g.map(f=>f.data?.items??[]),a):[],[o,g,a]),m=c.useMemo(()=>bi(a),[a]),b=c.useMemo(()=>(x?.items??[]).map(Hm),[x]);return c.useMemo(()=>{if(!n)return[];const f=Bm(e,t,{mailboxes:v,accounts:m,contacts:b});return o?f:f.filter(u=>u.value!=="in:")},[n,e,t,v,m,b,o])}const Ar="remit.recentSearches",Wm=5;function js(){try{const e=localStorage.getItem(Ar);if(!e)return[];const t=JSON.parse(e);return Array.isArray(t)?t.filter(n=>typeof n=="string"):[]}catch{return[]}}function Vn(e){const t=e.trim();if(!t)return js();const n=[t,...js().filter(a=>a!==t)].slice(0,Wm);try{localStorage.setItem(Ar,JSON.stringify(n))}catch{return n}return n}const Vm=e=>e.tier!=="phone"&&e.hasLiveInput&&!(e.bodyRendersCommittedResults&&e.hasCommittedQuery);function Ym(e){const{spam:t}=er([...e]),n=new Map;for(const r of t)r.mailboxId&&n.set(r.mailboxId,(n.get(r.mailboxId)??0)+1);let a;for(const[r,o]of n)(!a||o>a.count)&&(a={mailboxId:r,count:o});return a}function yh({title:e,unreadCount:t,children:n,selectionBar:a,paneOverlay:r,footer:o,searchFilter:i,searchResults:l,searchLoading:d,relatedResults:x,relatedLoading:g,onSelectSearchResult:v,searchResultsLabel:m="Top matches",relatedResultsLabel:b="Related",searchResultsInBody:f=!1,refreshControl:u}){const{accounts:h,resultFolderIndex:p,searchQuery:j,searchInput:y,onSearchChange:k,onSearchClear:S,searchViewKey:E}=Bt(),A=ja(),O=Wi(),F=pa(),L=Vi(),[z,I]=c.useState(!1),[_,w]=c.useState(js),R=Zo(),P=c.useRef(E);c.useEffect(()=>{P.current!==E&&(P.current=E,I(!1))},[E]);const[N,$]=c.useState(0),[C,B]=c.useState(!1),[U,G]=c.useState(void 0),Y=Gm({query:y,cursor:N,enabled:C&&y.trim().length>0}),Z=c.useCallback(ie=>{const ke=Km(y,N,ie);k(ke.query),G({cursor:ke.cursor})},[y,N,k]),ne=ei({count:Y.length,onAccept:ie=>{const ke=Y[ie];ke&&Z(ke)}}),{comboboxProps:ce,handleKeyDown:pe}=ne,te=c.useMemo(()=>({comboboxProps:ce,onKeyDown:pe,onCaretChange:$,onFocusChange:B,...U?{caret:U}:{}}),[ce,pe,U]),he=ne.open?s.jsx(ai,{id:ne.listId,suggestions:Y,activeIndex:ne.activeIndex,optionId:ne.optionId,onPick:Z,onHighlight:ne.setActiveIndex,label:"Search suggestions",className:"mx-row-inset mt-1 shrink-0"}):null,de=y.trim().length>0,{mailboxesByName:ge,accountsByName:ue}=A,q=c.useMemo(()=>Mi(y,{mailboxesByName:ge,accountsByName:ue}),[y,ge,ue]),re=q.tokens.map(ie=>({label:va(ie),onRemove:()=>k(Ai(y,ie))})),H=l??[],Q=x??[],ae=de?[{id:"top",label:m,results:H},{id:"related",label:b,results:Q}]:[],ot=!(H.length+Q.length>0)&&(d===!0||g===!0),{scope:Yt}=vi(h),it=ti(),lt=ol(it),ct=il(it,Yt,lt?p.get(lt)?.role:void 0),W=ct.kind==="global"?Ym([...H,...Q]):void 0,It=W?{kind:"global",onScopeToSpam:()=>O(W.mailboxId,j)}:ct,fe=Q.length>0,ye=c.useMemo(()=>Wf(q,{searchHadSemanticReach:fe}),[q,fe]),qe=de?ye:void 0,Qe=de?{onClick:()=>{I(!1),R("properties","search")},blockedReason:Id(ye)?void 0:si(ye.droppedFacets.map(ie=>ie.label))}:void 0,oe=Qe?s.jsx(tr,{...Qe}):null,X=Vm({tier:L,hasLiveInput:de,hasCommittedQuery:j.trim().length>0,bodyRendersCommittedResults:f}),Le=ie=>{w(Vn(y)),v?.(ie)},Gs=s.jsx(sr,{value:y,sections:ae,loading:ot,onSelectResult:Le,tokens:re,scope:It}),Ce=a===void 0,Pe=X?s.jsx("div",{className:"h-full overflow-y-auto",children:Gs}):null,Xt=Pe&&!Ce?Pe:n,Ge=Pe&&Ce?Pe:null,We=Yi(L),Se=We&&(z||de),dt=c.useMemo(()=>({title:e,searchResults:Ge,makeFilterSlot:oe,searchConversion:qe,navSlot:F&&!F.showNavPane&&s.jsx(K,{variant:"ghost",size:"touch",icon:s.jsx(ll,{className:"size-5"}),onClick:()=>F.openNav(),"aria-label":"Menu",className:"-ml-2 shrink-0"}),titleMeta:s.jsxs(s.Fragment,{children:[t===null?null:s.jsxs("span",{className:"shrink-0 text-2xs text-fg-subtle",children:[t.toLocaleString()," unread"]}),s.jsx(rn,{}),u]}),searchSlot:We&&!Se&&s.jsx(K,{variant:"ghost",size:"touch",icon:s.jsx(ni,{className:"size-5"}),onClick:()=>I(!0),"aria-label":"Search",className:"shrink-0"}),searchField:Se&&s.jsxs(s.Fragment,{children:[s.jsx("div",{className:"min-w-0 flex-1",children:s.jsx(ha,{value:y,onChange:k,onClear:S,globalFocusKey:!1,showClearButton:!1,suggest:te})}),s.jsx(K,{variant:"ghost",size:"touch",icon:s.jsx(Ue,{className:"size-5"}),onClick:()=>{S(),I(!1)},"aria-label":"Close search",className:"shrink-0"}),s.jsx(rn,{})]})}),[e,t,F,We,Se,y,k,S,te,Ge,oe,qe,u]);if(L==="phone"&&z){const ie=ke=>{w(Vn(y)),I(!1),v?.(ke)};return s.jsxs(ys.Provider,{value:dt,children:[s.jsx(Zc,{value:y,onChange:k,onClear:S,onCancel:()=>{I(!1),S()},filter:i,recentSearches:_,onPickRecent:k,makeFilter:Qe,sections:ae,loading:ot,onSelectResult:ie,tokens:re,scope:It,suggest:te,suggestList:he}),r]})}return s.jsx(ys.Provider,{value:dt,children:s.jsxs("section",{className:"relative flex h-full w-full flex-col bg-surface",children:[a?.(dt),he,s.jsx("div",{className:"min-h-0 flex-1",children:Xt}),o,r]})})}export{Xu as $,_p as A,Up as B,Hc as C,Tf as D,eu as E,Op as F,rh as G,ah as H,bh as I,Us as J,vh as K,Dp as L,Yp as M,oh as N,eh as O,Vt as P,Wt as Q,sh as R,ed as S,th as T,Lp as U,$p as V,km as W,cr as X,Wu as Y,Yu as Z,Ju as _,Ac as a,nh as a0,ym as a1,Zp as a2,Fp as a3,Bp as a4,rf as a5,Jp as a6,Xp as a7,nd as a8,Pp as a9,Wc as aA,Wp as aB,vn as aC,lm as aD,ph as aE,xh as aF,Mp as aG,Vp as aH,ch as aa,uh as ab,ih as ac,Dc as ad,St as ae,Ds as af,gs as ag,Ip as ah,Ep as ai,Sp as aj,Tp as ak,lh as al,yh as am,Bs as an,vt as ao,hh as ap,mh as aq,Mm as ar,Am as as,fh as at,dh as au,er as av,Ym as aw,gh as ax,Rp as ay,Vm as az,wr as b,Os as c,Ap as d,ur as e,of as f,Tc as g,yf as h,qp as i,Qp as j,jf as k,mf as l,Ad as m,Sc as n,Kp as o,Hp as p,Cf as q,Au as r,Gp as s,dr as t,mm as u,jc as v,Nf as w,Zd as x,fr as y,zp as z};
|
|
7
|
+
`.trim(),w.head.prepend(R)},[m]),c.useEffect(()=>{let w=h.current;return()=>{v||un(w.target??void 0);for(let R of w.disposables)R();w.disposables=[]}},[v]),{isPressed:d||f,pressProps:Nt(b,_,{[hn]:!0})}}function Ds(e){return e.tagName==="A"&&e.hasAttribute("href")}function os(e,t){const{key:n,code:a}=e,r=t,o=r.getAttribute("role");return(n==="Enter"||n===" "||n==="Spacebar"||a==="Space")&&!(r instanceof Re(r).HTMLInputElement&&!Fa(r,n)||r instanceof Re(r).HTMLTextAreaElement||r.isContentEditable)&&!((o==="link"||!o&&Ds(r))&&n!=="Enter")}function De(e,t){let n=t.clientX,a=t.clientY;return{currentTarget:e,shiftKey:t.shiftKey,ctrlKey:t.ctrlKey,metaKey:t.metaKey,altKey:t.altKey,clientX:n,clientY:a,key:t.key}}function Bl(e){return e instanceof HTMLInputElement?!1:e instanceof HTMLButtonElement?e.type!=="submit"&&e.type!=="reset":!Ds(e)}function gn(e,t){return e instanceof HTMLInputElement?!Fa(e,t):Bl(e)}const Kl=new Set(["checkbox","radio","range","color","file","image","button","submit","reset"]);function Fa(e,t){return e.type==="checkbox"||e.type==="radio"?t===" ":Kl.has(e.type)}let Hl=0;const is=new Map;function ql(e){let[t,n]=c.useState();return Ls(()=>{if(!e)return;let a=is.get(e);if(a)n(a.element.id);else{let r=`react-aria-description-${Hl++}`;n(r);let o=document.createElement("div");o.id=r,o.style.display="none",o.textContent=e,document.body.appendChild(o),a={refCount:0,element:o},is.set(e,a)}return a.refCount++,()=>{a&&--a.refCount===0&&(a.element.remove(),is.delete(e))}},[e]),{"aria-describedby":e?t:void 0}}const Ql=500;function Gl(e){let{isDisabled:t,onLongPressStart:n,onLongPressEnd:a,onLongPress:r,threshold:o=Ql,accessibilityDescription:i}=e;const l=c.useRef(void 0);let{addGlobalListener:d,removeGlobalListener:x}=Da(),{pressProps:g}=Ul({isDisabled:t,onPressStart(m){if(m.continuePropagation(),(m.pointerType==="mouse"||m.pointerType==="touch")&&(n&&n({...m,type:"longpressstart"}),l.current=setTimeout(()=>{m.target.dispatchEvent(new PointerEvent("pointercancel",{bubbles:!0})),Ee(m.target).activeElement!==m.target&&ht(m.target),r&&r({...m,type:"longpress"}),l.current=void 0},o),m.pointerType==="touch")){let b=u=>{u.preventDefault()},f=Re(m.target);d(m.target,"contextmenu",b,{once:!0}),d(f,"pointerup",()=>{setTimeout(()=>{x(m.target,"contextmenu",b)},30)},{once:!0})}},onPressEnd(m){l.current&&clearTimeout(l.current),a&&(m.pointerType==="mouse"||m.pointerType==="touch")&&a({...m,type:"longpressend"})}}),v=ql(r&&!t?i:void 0);return{longPressProps:Nt(g,v)}}const qt=se("BadgeCheck",[["path",{d:"M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z",key:"3c2336"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]]);const Wl=se("Calendar",[["path",{d:"M8 2v4",key:"1cmpym"}],["path",{d:"M16 2v4",key:"4m81vk"}],["rect",{width:"18",height:"18",x:"3",y:"4",rx:"2",key:"1hopcy"}],["path",{d:"M3 10h18",key:"8toen8"}]]);const Vl=se("CodeXml",[["path",{d:"m18 16 4-4-4-4",key:"1inbqp"}],["path",{d:"m6 8-4 4 4 4",key:"15zrgr"}],["path",{d:"m14.5 4-5 16",key:"e7oirm"}]]);const Oa=se("Code",[["polyline",{points:"16 18 22 12 16 6",key:"z7tu5w"}],["polyline",{points:"8 6 2 12 8 18",key:"1eg1df"}]]);const za=se("Forward",[["polyline",{points:"15 17 20 12 15 7",key:"1w3sku"}],["path",{d:"M4 18v-2a4 4 0 0 1 4-4h12",key:"jmiej9"}]]);const Yl=se("History",[["path",{d:"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"1357e3"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}],["path",{d:"M12 7v5l4 2",key:"1fdv2h"}]]);const Xl=se("MailCheck",[["path",{d:"M22 13V6a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v12c0 1.1.9 2 2 2h8",key:"12jkf8"}],["path",{d:"m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7",key:"1ocrg3"}],["path",{d:"m16 19 2 2 4-4",key:"1b14m6"}]]);const Fs=se("MailOpen",[["path",{d:"M21.2 8.4c.5.38.8.97.8 1.6v10a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V10a2 2 0 0 1 .8-1.6l8-6a2 2 0 0 1 2.4 0l8 6Z",key:"1jhwl8"}],["path",{d:"m22 10-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 10",key:"1qfld7"}]]);const Jl=se("MailX",[["path",{d:"M22 13V6a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v12c0 1.1.9 2 2 2h9",key:"1j9vog"}],["path",{d:"m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7",key:"1ocrg3"}],["path",{d:"m17 17 4 4",key:"1b3523"}],["path",{d:"m21 17-4 4",key:"uinynz"}]]);const Qt=se("Paperclip",[["path",{d:"M13.234 20.252 21 12.3",key:"1cbrk9"}],["path",{d:"m16 6-8.414 8.586a2 2 0 0 0 0 2.828 2 2 0 0 0 2.828 0l8.414-8.586a4 4 0 0 0 0-5.656 4 4 0 0 0-5.656 0l-8.415 8.585a6 6 0 1 0 8.486 8.486",key:"1pkts6"}]]);const _a=se("ReplyAll",[["polyline",{points:"7 17 2 12 7 7",key:"t83bqg"}],["polyline",{points:"12 17 7 12 12 7",key:"1g4ajm"}],["path",{d:"M22 18v-2a4 4 0 0 0-4-4H7",key:"1fcyog"}]]);const Ua=se("Reply",[["polyline",{points:"9 17 4 12 9 7",key:"hvgpf2"}],["path",{d:"M20 18v-2a4 4 0 0 0-4-4H4",key:"5vmcpk"}]]);const at=se("ShieldAlert",[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}],["path",{d:"M12 8v4",key:"1got3b"}],["path",{d:"M12 16h.01",key:"1drbdi"}]]);const Zl=se("ShieldQuestion",[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}],["path",{d:"M9.1 9a3 3 0 0 1 5.82 1c0 2-3 3-3 3",key:"mhlwft"}],["path",{d:"M12 17h.01",key:"p32p05"}]]);const ec=se("ShieldX",[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}],["path",{d:"m14.5 9.5-5 5",key:"17q4r4"}],["path",{d:"m9.5 9.5 5 5",key:"18nt4w"}]]);const tc=se("SlidersHorizontal",[["line",{x1:"21",x2:"14",y1:"4",y2:"4",key:"obuewd"}],["line",{x1:"10",x2:"3",y1:"4",y2:"4",key:"1q6298"}],["line",{x1:"21",x2:"12",y1:"12",y2:"12",key:"1iu8h1"}],["line",{x1:"8",x2:"3",y1:"12",y2:"12",key:"ntss68"}],["line",{x1:"21",x2:"16",y1:"20",y2:"20",key:"14d8ph"}],["line",{x1:"12",x2:"3",y1:"20",y2:"20",key:"m0wm8r"}],["line",{x1:"14",x2:"14",y1:"2",y2:"6",key:"14e1ph"}],["line",{x1:"8",x2:"8",y1:"10",y2:"14",key:"1i6ji0"}],["line",{x1:"16",x2:"16",y1:"18",y2:"22",key:"1lctlv"}]]);const sc=se("TextSearch",[["path",{d:"M21 6H3",key:"1jwq7v"}],["path",{d:"M10 12H3",key:"1ulcyk"}],["path",{d:"M10 18H3",key:"13769t"}],["circle",{cx:"17",cy:"15",r:"3",key:"1upz2a"}],["path",{d:"m21 19-1.9-1.9",key:"dwi7p8"}]]),nc=({address:e,showTrustedBadge:t=!1})=>{const n=t?s.jsx(qt,{className:"inline-block size-4 ml-1 -mt-0.5 text-positive","aria-label":"Trusted sender","data-testid":"trusted-sender-badge"}):null;return e.displayName?s.jsxs("span",{children:[s.jsx("span",{className:"text-fg",children:e.displayName}),s.jsxs("span",{className:"text-fg-muted",children:[" ","<",e.normalizedEmail,">"]}),n]}):s.jsxs("span",{className:"text-fg",children:[e.normalizedEmail,n]})},ac=({label:e,addresses:t,showTrustedBadge:n=!1})=>{const[a,r]=c.useState(!1);if(t.length===0)return null;const o=t.length>3,i=l=>{const d=n&&l.flags?.trusted?.value===!0;return s.jsx(nc,{address:l,showTrustedBadge:d})};return s.jsxs("div",{className:"flex gap-2 text-sm",children:[s.jsxs("span",{className:"text-fg-muted shrink-0 w-12",children:[e,":"]}),s.jsx("div",{className:"flex-1 min-w-0",children:a?s.jsx("div",{className:"flex flex-wrap gap-1",children:t.map((l,d)=>s.jsxs("span",{children:[i(l),d<t.length-1&&", "]},d))}):s.jsx("div",{className:"truncate",children:t.map((l,d)=>s.jsxs("span",{children:[i(l),d<t.length-1&&", "]},d))})}),o&&s.jsx("button",{type:"button",onClick:l=>{l.stopPropagation(),r(!a)},className:"shrink-0 text-fg-muted hover:text-fg transition-colors","aria-label":a?"Collapse":"Expand",children:a?s.jsx(ze,{className:"h-4 w-4"}):s.jsx(Cs,{className:"h-4 w-4"})})]})};function rc({clashes:e,clearText:t="Nothing else is booked over it.",className:n}){return e.length===0?s.jsxs("p",{className:M("flex items-center gap-2 rounded-md border border-line bg-surface-sunken p-2 text-xs text-fg-muted",n),children:[s.jsx(Ze,{className:"size-3.5 shrink-0 text-positive","aria-hidden":!0}),t]}):s.jsxs("div",{className:M("flex items-start gap-2 rounded-md border border-danger/40 bg-danger-soft p-2",n),children:[s.jsx(Yn,{className:"mt-0.5 size-4 shrink-0 text-danger","aria-hidden":!0}),s.jsxs("div",{className:"min-w-0 flex-1",children:[s.jsx("p",{className:"text-xs font-semibold text-danger",children:e.length===1?"This clashes with something you have already agreed to.":`This clashes with ${e.length} things you have already agreed to.`}),s.jsx("ul",{className:"mt-1 flex flex-col gap-0.5",children:e.map(a=>s.jsx("li",{className:"text-xs text-fg",children:a.label},a.id))})]})]})}const oc={ics:"Attached invitation",markup:"Structured markup",pattern:"Read from the words"},ic={ics:Kr,markup:Vl,pattern:sc},lc={ics:"border-positive/50 text-positive",markup:"border-accent-2/50 text-accent-2",pattern:"border-warning/50 text-warning"};function cc({method:e,className:t}){const n=ic[e];return s.jsxs("span",{className:M("inline-flex items-center gap-1 rounded-sm border px-1.5 py-0.5 text-2xs font-medium",lc[e],t),children:[s.jsx(n,{className:"size-3","aria-hidden":!0}),oc[e]]})}const dc=["accepted","tentative","declined","noReply"],uc={accepted:"coming",tentative:"maybe",declined:"not coming",noReply:"no reply"};function fc({invite:e,whenText:t,calendarName:n,color:a,clashes:r,rsvp:o,onAdd:i,onTentative:l,onDecline:d,onReopen:x,onOfferOtherTimes:g,onRemove:v,onOpenNewer:m,guests:b,touch:f,className:u}){const h=Hi(a),p=e.state==="superseded"||e.state==="cancelled",j=e.proposed.attendees,y=dc.map(k=>({state:k,count:j.filter(S=>S.rsvp===k).length})).filter(k=>k.count>0).map(k=>`${k.count} ${uc[k.state]}`).join(" · ");return s.jsxs("section",{className:M("flex flex-col gap-3 rounded-lg border border-line bg-surface-raised p-3",u),children:[s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx("span",{className:M("size-2.5 shrink-0 rounded-full",h.solid)}),s.jsxs("span",{className:"min-w-0 flex-1 truncate text-2xs uppercase tracking-wider text-fg-subtle",children:["Invitation from ",e.organizerName," · ",n]}),s.jsx(cc,{method:e.method})]}),s.jsxs("div",{className:M(p&&"opacity-60"),children:[s.jsx("h3",{className:"text-md font-semibold text-fg",children:e.proposed.title}),s.jsxs("p",{className:"mt-1 flex items-center gap-2 text-sm text-fg",children:[s.jsx(Ca,{className:"size-4 shrink-0 text-fg-subtle","aria-hidden":!0}),t]}),e.proposed.location!==""&&s.jsxs("p",{className:"mt-1 flex items-center gap-2 text-sm text-fg-muted",children:[s.jsx(Gi,{className:"size-4 shrink-0 text-fg-subtle","aria-hidden":!0}),e.proposed.location]})]}),e.state==="superseded"&&s.jsxs("div",{className:"flex items-start gap-2 rounded-md border border-warning/40 bg-warning-soft p-2",children:[s.jsx(Yl,{className:"mt-0.5 size-4 shrink-0 text-warning","aria-hidden":!0}),s.jsxs("div",{className:"min-w-0 flex-1",children:[s.jsxs("p",{className:"text-xs font-semibold text-warning",children:[e.organizerName," has sent a newer version of this."]}),s.jsxs("p",{className:"mt-1 text-xs text-fg",children:["This one is revision ",e.sequence," and is out of date. Answer the newer one instead."]}),m&&s.jsx(K,{variant:"secondary",size:f?"md":"sm",onClick:m,className:M("mt-2",f&&"min-h-11"),children:"Open the newer invitation"})]})]}),e.state==="cancelled"&&s.jsxs("div",{className:"flex items-start gap-2 rounded-md border border-danger/40 bg-danger-soft p-2",children:[s.jsx(_e,{className:"mt-0.5 size-4 shrink-0 text-danger","aria-hidden":!0}),s.jsxs("div",{className:"min-w-0 flex-1",children:[s.jsxs("p",{className:"text-xs font-semibold text-danger",children:[e.organizerName," cancelled this."]}),s.jsx("p",{className:"mt-1 text-xs text-fg",children:"It is still on your calendar. Nothing comes off it until you say so."}),v&&s.jsxs("div",{className:M("mt-2 flex gap-2",f&&"flex-wrap"),children:[s.jsx(K,{variant:"primary",size:f?"md":"sm",icon:s.jsx(bt,{className:"size-3.5"}),onClick:v,className:M(f&&"min-h-11 flex-1"),children:"Remove from calendar"}),s.jsx(K,{variant:"secondary",size:f?"md":"sm",onClick:x,className:M(f&&"min-h-11 flex-1"),children:"Keep it"})]})]})]}),!p&&s.jsx(rc,{clashes:r}),b??s.jsxs("p",{className:"text-2xs uppercase tracking-wider text-fg-subtle",children:[j.length," guests",y===""?"":` · ${y}`]}),!p&&(o==="noReply"?s.jsxs("div",{className:"flex flex-col gap-2 border-t border-line pt-3",children:[s.jsxs("div",{className:M("flex gap-2",f&&"flex-wrap"),children:[s.jsx(K,{variant:"primary",size:f?"md":"sm",icon:s.jsx(Wl,{className:"size-3.5"}),onClick:i,className:M(f&&"min-h-11 flex-1"),children:"Add to calendar"}),s.jsx(K,{variant:"secondary",size:f?"md":"sm",onClick:l,className:M(f&&"min-h-11 flex-1"),children:"Maybe"}),s.jsx(K,{variant:"secondary",size:f?"md":"sm",icon:s.jsx(_e,{className:"size-3.5"}),onClick:d,className:M(f&&"min-h-11 flex-1"),children:"Decline"})]}),s.jsx(K,{variant:"ghost",size:f?"md":"sm",onClick:g,className:M("self-start",f&&"min-h-11 w-full"),children:"Offer other times"}),s.jsxs("p",{className:"text-2xs text-fg-subtle",children:[e.organizerName," is not notified. Reader writes this to your calendar and sends no reply — tell them in the thread."]})]}):s.jsxs("div",{className:"flex flex-col gap-2 border-t border-line pt-3",children:[s.jsxs("div",{className:"flex flex-wrap items-center gap-3",children:[s.jsxs("span",{className:"flex items-center gap-1.5 text-sm text-fg",children:[o==="declined"?"You declined":"On your calendar",s.jsx(qi,{rsvp:o})]}),s.jsx(K,{variant:"ghost",size:f?"md":"sm",onClick:x,className:f?"min-h-11":"",children:"Change"}),o==="declined"&&s.jsx(K,{variant:"secondary",size:f?"md":"sm",onClick:g,className:f?"min-h-11":"",children:"Offer other times"})]}),s.jsxs("p",{className:"flex items-start gap-1.5 text-2xs text-fg-subtle",children:[s.jsx(Ze,{className:"mt-0.5 size-3 shrink-0","aria-hidden":!0}),e.organizerName," was not notified."]})]}))]})}function mc({slots:e,picked:t,onToggle:n,emptyText:a="Nothing free that day at this length.",touch:r,scroll:o,className:i}){return e.length===0?s.jsx("p",{className:M("text-xs text-fg-muted",i),children:a}):s.jsx("div",{className:M("flex gap-2",o?"overflow-x-auto pb-1":"flex-wrap",i),children:e.map(l=>{const d=t.has(l.startTime);return s.jsxs("button",{type:"button","aria-pressed":d,onClick:()=>n(l),className:M("shrink-0 rounded-md border px-2 text-xs tabular-nums outline-none transition-colors focus-visible:ring-2 focus-visible:ring-ring",r?"min-h-11 px-3":"h-7",d?"border-accent bg-accent-soft font-semibold text-accent":"border-line bg-surface text-fg-muted hover:border-line-strong hover:text-fg"),children:[l.startTime," – ",l.endTime]},l.startTime)})})}const xn=96;function pc({children:e,hasCard:t,onConfirm:n,onReject:a,blocked:r,blockedReason:o,remaining:i,confirmLabel:l="Add",emptyText:d="Nothing in your mail is waiting on a decision about time.",className:x}){const[g,v]=c.useState(0),[m,b]=c.useState(null);if(!t)return s.jsxs("div",{className:M("flex flex-col items-center gap-2 p-6 text-center",x),children:[s.jsx(Ue,{className:"size-6 text-fg-subtle","aria-hidden":!0}),s.jsx("p",{className:"text-sm text-fg-muted",children:d})]});const f=Math.abs(g)>xn,u=g>0;return s.jsxs("div",{className:M("flex flex-col gap-3",x),children:[s.jsxs("div",{className:"relative",children:[s.jsx("div",{className:"touch-pan-y select-none",style:{transform:`translateX(${g}px) rotate(${g/40}deg)`,transition:m===null?"transform 180ms ease-out":"none"},onPointerDown:h=>{h.currentTarget.setPointerCapture(h.pointerId),b(h.clientX)},onPointerMove:h=>{m!==null&&v(h.clientX-m)},onPointerUp:()=>{Math.abs(g)>xn&&(g>0&&!r&&n(),g<0&&a()),b(null),v(0)},onPointerCancel:()=>{b(null),v(0)},children:e}),f&&s.jsx("span",{className:M("pointer-events-none absolute top-3 rounded-md px-2 py-1 text-xs font-semibold",u?"right-3 bg-accent-soft text-accent":"left-3 bg-danger-soft text-danger"),children:u?r?o:l:"Not this"})]}),s.jsxs("p",{className:"text-center text-2xs text-fg-subtle",children:[i," left · swipe right to accept, left to drop, or use the buttons"]})]})}const Ba="Pick a clock first. The mail never said, and the reader will not choose for you.";function Ka(e,t){const n=e.zoneOptions;return n===void 0?{settled:!0,timeZone:""}:n.some(a=>a.timeZone===t)?{settled:!0,timeZone:t}:{settled:!1,reason:Ba}}function hc(e){return e>=.85?"Read cleanly":e>=.6?"Read with gaps":"Barely read"}function gc({suggestion:e,whenText:t,onAdd:n,onReview:a,onDismiss:r,onOpenThread:o,zoneChoice:i,onZoneChoice:l,addLabel:d="Add",touch:x,className:g}){const[v,m]=c.useState(""),[b,f]=c.useState(!1),u=c.useId(),h=i??v,p=k=>{f(!1),l?l(k):m(k)},j=Ka(e,h),y=k=>()=>{if(!j.settled){f(!0);return}k(j.timeZone)};return s.jsxs("article",{"aria-label":e.title,className:M("flex flex-col gap-2 rounded-lg border border-dashed border-line-strong bg-surface-sunken p-3",g),children:[s.jsxs("div",{className:"flex items-start gap-2",children:[s.jsxs("span",{className:"min-w-0 flex-1",children:[s.jsxs("span",{className:"block text-2xs uppercase tracking-wider text-fg-subtle",children:["Suggested from mail · ",hc(e.confidence)]}),s.jsx("span",{className:"block truncate text-sm font-medium text-fg",children:e.title}),s.jsx("span",{className:"block text-xs text-fg-muted",children:t}),e.location!==""&&s.jsx("span",{className:"block truncate text-xs text-fg-muted",children:e.location})]}),s.jsx("button",{type:"button","aria-label":"Dismiss suggestion",onClick:r,className:M("flex shrink-0 items-center justify-center rounded-md text-fg-subtle outline-none hover:bg-surface hover:text-fg focus-visible:ring-2 focus-visible:ring-ring",x?"size-11":"size-7"),children:s.jsx(_e,{className:"size-4"})})]}),e.ambiguity!==""&&s.jsxs("p",{className:"flex items-start gap-1.5 text-2xs text-warning",children:[s.jsx(Yn,{className:"mt-0.5 size-3 shrink-0","aria-hidden":!0}),e.ambiguity]}),s.jsxs("button",{type:"button",onClick:o,className:"flex w-full min-w-0 items-center gap-1.5 rounded-sm text-left text-2xs text-accent-2 outline-none hover:underline focus-visible:ring-2 focus-visible:ring-ring",children:[s.jsx(xa,{className:"size-3 shrink-0"}),s.jsxs("span",{className:"truncate",children:[e.sender," — ",e.threadSubject]})]}),e.zoneOptions&&s.jsxs("div",{className:"flex flex-col gap-1.5 rounded-md border border-warning/40 p-2",children:[s.jsxs("p",{className:"flex items-center gap-1.5 text-2xs font-semibold text-warning",children:[s.jsx(Wi,{className:"size-3 shrink-0","aria-hidden":!0}),"Which clock is this on?"]}),e.zoneOptions.map(k=>s.jsxs("button",{type:"button","aria-pressed":h===k.timeZone,onClick:()=>p(k.timeZone),className:M("rounded-md border px-2 py-1 text-left outline-none focus-visible:ring-2 focus-visible:ring-ring",x&&"min-h-11",h===k.timeZone?"border-accent bg-accent-soft":"border-line bg-surface hover:border-line-strong"),children:[s.jsx("span",{className:"block text-xs font-medium text-fg",children:k.label}),s.jsx("span",{className:"block text-2xs text-fg-subtle",children:k.note})]},k.timeZone))]}),!j.settled&&s.jsx(Xn,{id:u,reason:j.reason,nudged:b,className:"text-2xs text-warning"}),s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx(K,{variant:"primary",size:x?"md":"sm",icon:s.jsx(Hr,{className:"size-3.5"}),onClick:y(n),"aria-describedby":j.settled?void 0:u,className:M(x&&"min-h-11 flex-1",!j.settled&&"opacity-55"),children:d}),s.jsx(K,{variant:"secondary",size:x?"md":"sm",icon:s.jsx(tc,{className:"size-3.5"}),onClick:y(a),"aria-describedby":j.settled?void 0:u,className:M(x&&"min-h-11",!j.settled&&"opacity-55"),children:"Change first"})]})]})}function ve({label:e,children:t,className:n}){return s.jsxs("section",{className:M("border-b border-line px-row-inset py-3",n),children:[s.jsx("h3",{className:"text-2xs font-semibold uppercase tracking-wider text-fg-subtle",children:e}),s.jsx("div",{className:"mt-2",children:t})]})}function xc({data:e,actions:t,selectedEventId:n="",touch:a,className:r}){const{invite:o,prose:i,suggestions:l,day:d,dayLabel:x}=e,[g,v]=c.useState({}),m=l[0],b=m===void 0?"":g[m.suggestion.id]??"",f=m===void 0?void 0:Ka(m.suggestion,b),u=new Set(i?.picked??[]);return o===void 0&&i===void 0&&l.length===0&&d.length===0?s.jsxs("div",{className:M("flex flex-1 flex-col items-center justify-center gap-2 px-row-inset py-10 text-center",r),children:[s.jsx(qr,{className:"size-6 text-fg-subtle","aria-hidden":!0}),s.jsx("p",{className:"text-sm text-fg-muted",children:"Nothing in this message is about a time."}),s.jsx("p",{className:"text-2xs text-fg-subtle",children:"An invitation, a booking or a thread proposing hours would show up here, with the day it lands on."})]}):s.jsxs("div",{className:M("flex flex-col",r),children:[o&&s.jsx(ve,{label:"Invitation",children:s.jsx(fc,{invite:o.invite,whenText:o.whenText,calendarName:o.calendarName,color:o.color,clashes:o.clashes,rsvp:o.rsvp,onAdd:t.onAddInvite,onTentative:t.onTentativeInvite,onDecline:t.onDeclineInvite,onReopen:t.onReopenInvite,onOfferOtherTimes:t.onOfferOtherTimes,onRemove:t.onRemoveInvite,onOpenNewer:t.onOpenNewerInvite,touch:a})}),i&&s.jsxs(ve,{label:`Times named · ${i.dayLabel}`,children:[s.jsx("ul",{className:"flex flex-col gap-1",children:i.proposals.map(p=>s.jsxs("li",{className:"flex items-baseline gap-2 text-xs",children:[s.jsx("span",{className:"w-24 shrink-0 truncate tabular-nums text-fg",children:p.phrase}),p.clashTitle===""?s.jsx("span",{className:"min-w-0 flex-1 truncate text-positive",children:"Nothing booked"}):s.jsxs("span",{className:"min-w-0 flex-1 truncate text-danger",children:[p.clashTitle," is already there"]})]},p.id))}),s.jsx("p",{className:"mt-3 pb-1.5 text-2xs uppercase tracking-wider text-fg-subtle",children:"Free, half an hour each"}),s.jsx(mc,{slots:i.slots,picked:u,onToggle:t.onToggleSlot,touch:a,scroll:!0}),s.jsx("p",{className:"mt-1.5 text-2xs text-fg-subtle",children:"Picked slots go into the reply as plain text. Nothing is booked."})]}),l.length>0&&s.jsxs(ve,{label:"Read out of this thread",children:[s.jsx(pc,{hasCard:m!==void 0,remaining:l.length,blocked:f!==void 0&&!f.settled,blockedReason:Ba,onConfirm:()=>{m&&f?.settled&&t.onAddSuggestion(m.suggestion.id,f.timeZone)},onReject:()=>{m&&t.onDismissSuggestion(m.suggestion.id)},children:m&&s.jsx(gc,{suggestion:m.suggestion,whenText:m.whenText,addLabel:"Add to calendar",zoneChoice:b,onZoneChoice:p=>v(j=>({...j,[m.suggestion.id]:p})),onAdd:p=>t.onAddSuggestion(m.suggestion.id,p),onReview:p=>t.onReviewSuggestion(m.suggestion.id,p),onDismiss:()=>t.onDismissSuggestion(m.suggestion.id),onOpenThread:()=>t.onOpenThread(m.suggestion.threadId),touch:a})}),s.jsx("p",{className:"mt-2 text-2xs text-fg-subtle",children:"None of this is on your calendar, and none of it will be until you say so."})]}),d.length>0&&s.jsx(ve,{label:x,className:"border-b-0",children:s.jsx("ul",{className:"flex flex-col gap-1",children:d.map(p=>s.jsx("li",{children:s.jsx(Ki,{title:p.event.title,timeText:p.timeText,color:p.color,layout:"row",density:"compact",rsvp:p.event.myRsvp,status:p.event.status,hasThread:p.event.threadId!=="",isRecurring:p.event.recurrenceRule!=="",zoneCertainty:p.event.zoneCertainty,selected:p.event.id===n,onClick:()=>t.onSelectEvent(p.event.id)})},p.event.id))})})]})}const bc=[{value:"sender",label:"Sender"},{value:"calendar",label:"Calendar"}],vc={unknown:{label:"Unknown sender",tone:"neutral"},wellknown:{label:"Known sender",tone:"positive"},vip:{label:"VIP",tone:"accent"}};function yc({sender:e}){const t=vc[e.trust],n=e.inboundCount==null?null:(e.replyCount??0)>0?`${e.inboundCount} received · you replied ${e.replyCount}×`:`${e.inboundCount} received · you've never replied`;return s.jsxs("div",{children:[s.jsxs("div",{className:"flex items-center gap-3",children:[s.jsx(pt,{name:e.name,email:e.email,size:"md"}),s.jsxs("div",{className:"min-w-0",children:[s.jsx("div",{className:"truncate text-sm font-semibold text-fg",children:e.name}),s.jsx("div",{className:"truncate text-2xs text-fg-subtle",children:e.email})]})]}),s.jsx("div",{className:"mt-2 flex items-center gap-2",children:e.addressUnverified?s.jsx(we,{tone:"danger",dot:!0,children:"Address couldn't be verified"}):s.jsx(we,{tone:t.tone,dot:!0,children:t.label})}),s.jsxs("p",{className:"mt-2 text-xs text-fg-muted",children:["First seen ",e.firstSeenLabel,n?` · ${n}`:""]})]})}function kc({auth:e,onShowSimilar:t}){if(e.verdict==="aligned")return s.jsxs("div",{className:"flex items-start gap-2 text-xs text-fg-muted",children:[s.jsx(Zi,{className:"mt-0.5 size-3.5 shrink-0 text-positive"}),s.jsx("span",{children:e.summary})]});if(e.verdict==="caution")return s.jsxs("div",{className:"flex items-start gap-2 rounded-md bg-warning/10 p-3 text-warning",children:[s.jsx(Zl,{className:"mt-0.5 size-4 shrink-0"}),s.jsx("p",{className:"text-xs leading-relaxed",children:e.summary})]});const n=e.addressUnreadable?"This sender can't be verified":"This message may be impersonating someone";return s.jsxs("div",{className:"rounded-md bg-danger-soft p-3",children:[s.jsxs("div",{className:"flex items-start gap-2",children:[s.jsx(at,{className:"mt-0.5 size-4 shrink-0 text-danger"}),s.jsxs("div",{className:"min-w-0",children:[s.jsx("p",{className:"text-sm font-semibold text-danger",children:n}),s.jsx("p",{className:"mt-1 text-xs leading-relaxed text-fg",children:e.summary}),!e.addressUnreadable&&e.dkimDomain&&s.jsxs("p",{className:"mt-1 text-2xs text-fg-muted",children:["Sent from"," ",s.jsx("code",{className:"rounded bg-surface px-1 py-0.5",children:e.dkimDomain}),", claims to be"," ",s.jsx("code",{className:"rounded bg-surface px-1 py-0.5",children:e.fromDomain})]})]})]}),e.similarCount!=null&&e.similarCount>0&&s.jsxs(K,{variant:"secondary",size:"sm",className:"mt-2 w-full border-danger/30 text-danger hover:bg-danger-soft",onClick:t,children:[e.similarCount," similar messages"]})]})}function ut({icon:e,label:t,active:n,danger:a,onClick:r,pending:o}){const i=r===void 0||o===!0;return s.jsxs("button",{type:"button",onClick:r,disabled:i,className:M("flex items-center gap-2 rounded-md border px-2 py-1 text-xs transition-colors",n?"border-accent-2 bg-accent-2-soft text-accent-2":"border-line text-fg-muted hover:border-line-strong hover:text-fg",a&&!n&&"text-danger hover:bg-danger-soft",i&&"cursor-not-allowed opacity-50 hover:border-line"),children:[e,t]})}const jc={sender:"matched: sender",recipient:"matched: recipient",subject:"matched: subject",attachment:"matched: attachment",body:"matched: body",entities:"matched: entities"};function Ha({data:e,onClose:t,onShowSimilar:n,actions:a,similarState:r="ready",similarLinkComponent:o,className:i,hideCloseButton:l=!1,reportSpamPending:d=!1,notSpamPending:x=!1,calendar:g,tab:v,onTabChange:m,defaultTab:b="sender",touch:f}){const{sender:u,authenticity:h,category:p,flags:j={},similar:y}=e,[k,S]=c.useState(b),E=c.useId(),A=v??k,O=g!==void 0&&A==="calendar"?g:void 0;return s.jsxs("aside",{className:M("flex w-76 shrink-0 flex-col overflow-y-auto border-l border-line bg-surface",i),children:[s.jsxs("header",{className:"flex h-pane-header shrink-0 items-center justify-between border-b border-line px-row-inset",children:[s.jsx("span",{className:"text-2xs font-semibold uppercase tracking-wider text-fg-subtle",children:"Intelligence"}),!l&&s.jsx(K,{variant:"ghost",size:"sm",icon:s.jsx(_e,{className:"size-3.5"}),onClick:t,"aria-label":"Collapse intelligence sidebar"})]}),g&&s.jsx("div",{className:"flex shrink-0 justify-center border-b border-line px-row-inset py-2",children:s.jsx(Qr,{name:E,"aria-label":"What this panel is showing",size:"sm",options:bc,value:A,onChange:F=>{v===void 0&&S(F),m?.(F)}})}),O&&s.jsx(xc,{data:O.data,actions:O.actions,selectedEventId:O.selectedEventId,touch:f}),O===void 0&&s.jsxs(s.Fragment,{children:[s.jsx(ve,{label:"Sender",children:s.jsx(yc,{sender:u})}),s.jsx(ve,{label:"Authenticity",children:s.jsx(kc,{auth:h,onShowSimilar:n})}),s.jsx(ve,{label:"Category",children:s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx(we,{tone:Ss[p.value],children:p.value}),p.overridden&&s.jsx("span",{className:"text-2xs text-fg-subtle",children:"your override"}),s.jsx("button",{type:"button",className:M("ml-auto text-2xs text-accent hover:underline",!a?.onReclassify&&"cursor-not-allowed opacity-50 hover:no-underline"),disabled:!a?.onReclassify,onClick:a?.onReclassify,children:"reclassify"})]})}),s.jsxs(ve,{label:"Quick actions",children:[s.jsxs("div",{className:"flex flex-wrap gap-1.5",children:[s.jsx(ut,{icon:s.jsx(et,{className:"size-3.5"}),label:"VIP",active:j.vip,onClick:a?.onToggleVip}),s.jsx(ut,{icon:s.jsx(Vi,{className:"size-3.5"}),label:"Mute",active:j.muted,onClick:a?.onToggleMute}),a?.onNotSpam&&s.jsx(ut,{icon:s.jsx(Xl,{className:"size-3.5"}),label:x?"Undoing…":"Not spam",active:!0,onClick:a.onNotSpam,pending:x}),a?.onReportSpam&&s.jsx(ut,{icon:s.jsx(ec,{className:"size-3.5"}),label:d?"Reporting…":"Report spam",danger:!0,onClick:a.onReportSpam,pending:d}),s.jsx(ut,{icon:s.jsx(Jl,{className:"size-3.5"}),label:"Unsubscribe",active:j.unsubscribed,onClick:a?.onToggleUnsubscribe})]}),a?.onNotSpam&&s.jsx("p",{className:"mt-1.5 text-2xs text-fg-subtle",children:"You reported this message as spam"})]}),(r!=="ready"||y.length>0)&&s.jsx(ve,{label:"Similar messages",children:r==="loading"?s.jsx("div",{className:"animate-pulse space-y-2",children:Array.from({length:3}).map((F,L)=>s.jsxs("div",{className:"space-y-1",children:[s.jsx("div",{className:"h-3 w-3/4 rounded bg-surface-sunken"}),s.jsx("div",{className:"h-2.5 w-1/2 rounded bg-surface-sunken"})]},L))}):r==="error"?s.jsx("p",{className:"text-xs text-fg-subtle",children:"Similarity search unavailable"}):r==="off"?s.jsxs("div",{className:"space-y-1.5 text-xs text-fg-subtle",children:[s.jsx("p",{className:"text-fg-muted",children:Gr}),s.jsx("p",{children:Wr}),s.jsxs("p",{children:["Run"," ",s.jsx("code",{className:"rounded bg-surface-sunken px-1 py-px text-2xs text-fg-muted",children:Vr})," ","on the server."]})]}):s.jsx("ul",{className:"-mx-1 space-y-1",children:y.map(F=>{const L="block w-full rounded-md px-1 py-1 text-left hover:bg-surface-sunken",z=`Open message from ${F.fromName||"unknown sender"}: ${F.subject}`,I=s.jsxs(s.Fragment,{children:[s.jsxs("div",{className:"flex items-baseline justify-between gap-2",children:[s.jsx("span",{className:"truncate text-xs font-medium text-fg",children:F.fromName}),s.jsx("span",{className:"shrink-0 text-2xs text-fg-subtle tabular-nums",children:F.timeLabel})]}),s.jsx("div",{className:"truncate text-xs text-fg-muted",children:F.subject}),s.jsx("span",{className:"mt-1 inline-block rounded-full bg-surface-sunken px-1.5 py-px text-2xs text-fg-subtle",children:jc[F.matched]})]});return s.jsx("li",{children:o?o({mailboxId:F.mailboxId,threadId:F.threadId,messageId:F.id,className:L,ariaLabel:z,children:I}):s.jsx("div",{className:L,children:I})},F.id)})})}),s.jsx(ve,{label:"Coming soon",className:"border-b-0 opacity-70",children:s.jsxs("div",{className:"space-y-2",children:[s.jsxs("div",{className:"flex items-start gap-2 rounded-md border border-dashed border-line p-2",children:[s.jsx(Ue,{className:"mt-0.5 size-3.5 shrink-0 text-fg-subtle"}),s.jsxs("div",{children:[s.jsx("div",{className:"text-xs font-medium text-fg-muted",children:"Suggested actions"}),s.jsx("div",{className:"text-2xs text-fg-subtle",children:'"Create a filter for messages like this" — on-device model'})]})]}),s.jsxs("div",{className:"flex items-start gap-2 rounded-md border border-dashed border-line p-2",children:[s.jsx(Ue,{className:"mt-0.5 size-3.5 shrink-0 text-fg-subtle"}),s.jsxs("div",{children:[s.jsx("div",{className:"text-xs font-medium text-fg-muted",children:"Thread summary"}),s.jsx("div",{className:"text-2xs text-fg-subtle",children:"One-paragraph digest — Bedrock"})]})]})]})})]})]})}const xs=e=>({shiftKey:e.shiftKey,metaKey:e.metaKey,ctrlKey:e.ctrlKey}),bn=e=>e.shiftKey||e.metaKey||e.ctrlKey,wc=e=>e.shiftKey?"range":e.metaKey||e.ctrlKey?"toggle":"open",Nc=(e,t)=>!t&&e>0,Cc=(e,t,n)=>{const a=e.indexOf(n);if(a===-1)return[];const r=t===void 0?-1:e.indexOf(t);if(r===-1)return[n];const o=Math.min(r,a),i=Math.max(r,a);return e.slice(o,i+1)},Sc=(e,t,n,a)=>t!==void 0&&e.includes(t)?t:n!==void 0&&e.includes(n)?n:a,Tc=(e,t)=>{const n=new Set(t),a=new Set;for(const r of e)n.has(r)&&a.add(r);return a},Ic=(e,t,n)=>{if(e.length===0)return;const a=t===void 0?-1:e.indexOf(t);if(a===-1)return n>0?e[0]:e[e.length-1];const r=Math.min(Math.max(a+n,0),e.length-1);return e[r]},Ec=e=>{const[t,n]=c.useState(()=>new Set(e?.initialSelectedIds)),[a,r]=c.useState(void 0),o=c.useCallback(u=>t.has(u),[t]),i=c.useCallback(u=>{r(u),n(h=>{const p=new Set(h);return p.has(u)?p.delete(u):p.add(u),p})},[]),l=c.useCallback(u=>{r(u),n(h=>{if(h.has(u))return h;const p=new Set(h);return p.add(u),p})},[]),d=c.useCallback(u=>{n(h=>{if(!h.has(u))return h;const p=new Set(h);return p.delete(u),p})},[]),x=c.useCallback(u=>{n(new Set(u))},[]),g=c.useCallback(()=>{r(void 0),n(new Set)},[]),v=c.useCallback(u=>{n(h=>u.every(j=>h.has(j))?new Set:new Set(u))},[]),m=c.useCallback(u=>{r(u)},[]),b=c.useCallback(u=>{n(h=>{if(h.size===0)return h;const p=Tc(h,u);return p.size===h.size?h:p})},[]),f=c.useCallback((u,h,p)=>{const j=Sc(u,a,p,h);n(y=>{const k=Cc(u,j,h);if(k.length===0)return y;const S=new Set(y);for(const E of k)S.add(E);return S}),r(j)},[a]);return{selectedIds:t,selectedCount:t.size,hasSelection:t.size>0,isSelected:o,toggle:i,select:l,deselect:d,selectAll:x,clearSelection:g,toggleAll:v,selectRange:f,setAnchor:m,anchorId:a,intersectWith:b}},vn=10,Rc={kind:"unknown"},ls=e=>e.toLocaleString();function Mc({section:e,Row:t,selectedThreadId:n,initialExpanded:a=!1,initialCollapsed:r=!1,onShowAll:o,onRetry:i,onSelectThread:l}){const[d,x]=c.useState(a),[g,v]=c.useState(r),m=e.threads,b=e.loading===!0,f=e.error===!0,u=m.length>vn,p=!d&&u?m.slice(0,vn):m,j=e.total??Rc,y=j.kind==="exact"&&(m.length>0||b)&&!f?ls(j.value):void 0,k=j.kind==="exact"?j.value>p.length:e.atCap===!0,S=o!==void 0&&p.length>0&&k?j.kind==="exact"?`Show all ${ls(j.value)}`:"Show all":void 0,E=m.length-p.length;return s.jsxs("div",{children:[e.label&&s.jsxs("button",{type:"button","aria-expanded":!g,onClick:()=>v(A=>!A),className:"sticky top-0 z-10 flex h-section-row w-full items-center gap-1.5 border-b border-line bg-surface-sunken px-row-inset text-left outline-none transition-colors hover:bg-surface focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-inset",children:[s.jsx("span",{className:"flex-1 text-2xs font-semibold uppercase tracking-wider text-fg-subtle",children:e.label}),y!==void 0&&s.jsx("span",{className:"text-2xs text-fg-subtle tabular-nums",children:y}),s.jsx(ze,{className:M("size-3 shrink-0 text-fg-subtle transition-transform duration-200",g?"rotate-0":"rotate-180")})]}),!g&&s.jsxs(s.Fragment,{children:[m.length===0?f?s.jsxs("div",{className:"flex flex-col items-center gap-1 border-b border-line px-row-inset py-4 text-center text-2xs text-danger",children:[s.jsx("span",{children:`Couldn't load ${e.label??"these messages"}`}),i&&s.jsx("button",{type:"button",onClick:i,className:"font-medium text-accent underline outline-none focus-visible:ring-2 focus-visible:ring-ring",children:"Try again"})]}):b?s.jsx("div",{className:"animate-pulse divide-y divide-line",children:[0,1,2].map(A=>s.jsx("div",{className:"px-row-inset py-3",children:s.jsx("div",{className:"h-3 w-2/3 rounded bg-surface-sunken"})},A))}):s.jsx("p",{className:"border-b border-line px-row-inset py-4 text-center text-2xs text-fg-subtle",children:e.label?`No ${e.label} mail in this brief.`:"No mail in this brief."}):s.jsx("div",{className:"divide-y divide-line",children:p.map(A=>s.jsx(t,{thread:A,active:A.id===n,onClick:()=>l?.(A.id)},A.id))}),S!==void 0?s.jsxs("button",{type:"button",onClick:o,className:"flex w-full items-center justify-center border-b border-line px-row-inset py-1.5 text-2xs font-medium text-accent outline-none transition-colors hover:bg-surface focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-inset",children:[S,s.jsx(Cs,{className:"ml-1 size-3"})]}):u&&s.jsxs("button",{type:"button",onClick:()=>x(A=>!A),className:"flex w-full items-center justify-center border-b border-line px-row-inset py-1.5 text-2xs font-medium text-accent outline-none transition-colors hover:bg-surface focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-inset",children:[d?"Show less":`Show ${ls(E)} more`,!d&&s.jsx(ze,{className:"ml-1 size-3"})]})]})]})}function Ip({sections:e,briefCategory:t="all",selectedThreadId:n,Row:a,keyboard:r,onSelectThread:o,onShowAllSection:i,onRetrySection:l,flat:d=!1,onSelectBriefCategory:x,sources:g,sourcesNote:v,onSelectSource:m,activeFilters:b,onToggleFilter:f,onClearFilters:u,hideChrome:h,defaultExpanded:p=!1}){const[j,y]=c.useState(p),k=c.useRef(null);ii({containerRef:k,itemSelector:li,enabled:!Yr(r)});const S=!d&&(t==="all"||e.some(I=>I.total!==void 0)),E=e.filter(I=>I.threads.length>0||I.total!==void 0||I.loading===!0||I.error===!0),A=e.flatMap(I=>I.threads),O=Xr.map(I=>({id:I.id,label:I.label,tone:I.id==="all"?"neutral":Ss[I.id]})),F=Zn,L=S?E.length===0:A.length===0,z=s.jsxs("div",{ref:k,children:[S?E.map(I=>s.jsx(Mc,{section:I,Row:a,selectedThreadId:n,onSelectThread:o,onShowAll:i?()=>i(I.id):void 0,onRetry:l?()=>l(I.id):void 0},I.id)):s.jsx("div",{className:"divide-y divide-line",children:A.map(I=>s.jsx(a,{thread:I,active:I.id===n,onClick:()=>o?.(I.id)},I.id))}),L&&s.jsx("div",{className:"px-row-inset py-6 text-center text-2xs text-fg-subtle",children:"No threads match these filters."})]});return s.jsx(Jn,{categories:O,filters:F,sources:g,sourcesNote:v,selectedCategory:t,activeFilters:b,expanded:j,onExpandedChange:y,onSelectCategory:I=>x?.(I),onSelectSource:m,onToggleFilter:I=>f(I),onClear:u,hideChrome:h,children:z})}function Ep({hints:e=di,className:t}){return e.length===0?null:s.jsx("footer",{className:M("flex items-center gap-2 border-t border-line px-row-inset py-1 text-2xs text-fg-subtle",t),children:e.map(n=>s.jsx(Ac,{hint:n},n.label))})}function Ac({hint:e}){return s.jsxs("span",{className:"flex items-center gap-1",children:[e.keys.map(t=>s.jsx(ji,{children:t},t)),s.jsx("span",{children:e.label})]})}const Os={delete_failed:{label:"Not deleted",title:"This message was not deleted",detail:"Remit removed it here first, then refused to finish the delete on the mail server — most often because the Trash folder it was headed for is not there any more. The message is back in this folder because that is where the server still has it.",retryLabel:"Delete again"}};function qa({settlement:e,className:t}){const n=Os[e];return s.jsxs(we,{tone:"danger",className:M("shrink-0",t),title:n.title,"data-settlement":e,children:[s.jsx(Sa,{className:"size-3 shrink-0","aria-hidden":!0}),s.jsx("span",{children:n.label})]})}function $c({settlement:e,onRetry:t,retryPending:n,reportHref:a,className:r}){const o=Os[e];return s.jsxs("div",{role:"alert","data-testid":"message-settlement-notice","data-settlement":e,className:M("flex items-start gap-2 rounded-md border border-danger/40 bg-danger-soft px-3 py-2 text-sm",r),children:[s.jsx(Sa,{className:"mt-0.5 size-4 shrink-0 text-danger","aria-hidden":!0}),s.jsxs("div",{className:"min-w-0 flex-1",children:[s.jsx("p",{className:"font-medium text-danger",children:o.title}),s.jsx("p",{className:"mt-1 break-words text-fg-muted",children:o.detail}),s.jsxs("div",{className:"mt-1 flex flex-wrap items-center gap-3",children:[t&&s.jsx("button",{type:"button",onClick:t,disabled:n,className:"font-medium text-accent hover:underline disabled:opacity-50",children:n?"Deleting…":o.retryLabel}),a&&s.jsx("a",{href:a,target:"_blank",rel:"noreferrer",className:"font-medium text-accent hover:underline",children:"Report an issue"})]})]})]})}const Qa="outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-inset",Ga=({active:e,focused:t})=>M("relative flex h-8 w-full items-center gap-2 px-row-inset text-left",Qa,e?"bg-accent-2-soft":t?"bg-surface-sunken":"hover:bg-surface-sunken",t&&!e&&"before:absolute before:inset-y-0 before:left-0 before:w-0.5 before:bg-accent-2"),zs=({active:e,focused:t})=>M("relative flex w-full items-start gap-3 py-2 pl-5 pr-row-inset text-left transition-colors",Qa,e?"bg-accent-2-soft":t?"bg-surface-sunken":"hover:bg-surface-sunken",t&&!e&&"before:absolute before:inset-y-0 before:left-0 before:w-0.5 before:bg-accent-2");function Wa({thread:e}){const t=!e.isRead;return s.jsxs(s.Fragment,{children:[s.jsx("span",{className:"flex w-4 shrink-0 items-center justify-center",children:e.suspicious?s.jsx(at,{className:"size-3.5 text-danger"}):e.starred?s.jsx(et,{className:"size-3 fill-warning text-warning"}):t?s.jsx("span",{className:"size-1.5 rounded-full bg-accent"}):null}),s.jsx("span",{className:M("w-36 shrink-0 truncate text-xs",t?"font-semibold text-fg":"text-fg-muted"),children:e.fromName}),s.jsxs("span",{className:"min-w-0 flex-1 truncate text-xs",children:[s.jsx("span",{className:M(t?"font-medium text-fg":"text-fg-muted"),children:e.subject}),s.jsxs("span",{className:"text-fg-subtle",children:[" — ",e.snippet]})]}),e.hasAttachment&&s.jsx(Qt,{className:"size-3 shrink-0 text-fg-subtle",role:"img","aria-label":"Has an attachment"}),e.settlement&&s.jsx(qa,{settlement:e.settlement}),s.jsx("span",{className:"w-11 shrink-0 text-right text-2xs text-fg-subtle tabular-nums",children:e.timeLabel})]})}function yn(e,t){const n=t?.trim();if(!n)return e;const a=e.toLowerCase(),r=n.toLowerCase(),o=[];let i=0,l=a.indexOf(r,i),d=0;for(;l!==-1;)l>i&&o.push(e.slice(i,l)),o.push(s.jsx("mark",{className:"bg-transparent font-semibold text-fg",children:e.slice(l,l+r.length)},d++)),i=l+r.length,l=a.indexOf(r,i);return i<e.length&&o.push(e.slice(i)),o}function Lc({thread:e,badge:t,highlightQuery:n}){const a=!e.isRead;return s.jsxs("span",{className:"min-w-0 flex-1",children:[s.jsxs("span",{className:"flex items-baseline justify-between gap-2",children:[s.jsxs("span",{className:M("flex min-w-0 items-center gap-1.5 truncate text-sm",a?"font-semibold text-fg":"font-medium text-fg-muted"),children:[e.trust==="vip"&&s.jsx("span",{className:"size-1.5 shrink-0 rounded-full bg-accent-2"}),s.jsx("span",{className:"truncate",children:e.fromName}),e.messageCount!=null&&e.messageCount>1&&s.jsx("span",{className:"shrink-0 text-2xs font-normal text-fg-subtle",children:e.messageCount})]}),s.jsx("span",{className:"shrink-0 text-2xs text-fg-subtle tabular-nums",children:e.timeLabel})]}),s.jsxs("span",{className:"flex items-center gap-1.5",children:[s.jsx("span",{className:M("truncate text-sm",a?"text-fg":"text-fg-muted"),children:yn(e.subject,n)}),e.suspicious&&s.jsx(at,{className:"size-3.5 shrink-0 text-danger"}),e.starred&&s.jsx(et,{className:"size-3 shrink-0 fill-warning text-warning"}),e.hasAttachment&&s.jsx(Qt,{className:"size-3 shrink-0 text-fg-subtle",role:"img","aria-label":"Has an attachment"})]}),s.jsxs("span",{className:"flex items-center gap-1.5",children:[s.jsx("span",{className:"line-clamp-1 min-w-0 flex-1 text-xs text-fg-subtle",children:yn(e.snippet,n)}),e.category&&e.category!=="personal"&&s.jsx(we,{tone:Ss[e.category],className:"shrink-0",children:e.category}),e.labels?.map(r=>s.jsx(Jr,{label:r,className:"max-w-20"},r.labelId)),e.settlement&&s.jsx(qa,{settlement:e.settlement}),t]})]})}function Pc({thread:e,selection:t}){if(!t)return s.jsx(pt,{name:e.fromName,email:e.fromEmail,size:"sm"});const{checked:n,alwaysVisible:a}=t;return s.jsxs("span",{className:"relative size-7 shrink-0",children:[s.jsx(pt,{name:e.fromName,email:e.fromEmail,size:"sm",className:M("absolute inset-0 transition-opacity sm:group-hover:opacity-0",(n||a)&&"opacity-0")}),s.jsx("span",{role:"button",tabIndex:-1,onClick:t.onToggle,onKeyDown:r=>{r.key!=="Enter"&&r.key!==" "||(r.preventDefault(),r.stopPropagation(),t.onToggle(r))},className:M("absolute inset-0 size-7 items-center justify-center rounded-full border transition-opacity",a?"flex":"hidden sm:flex",n?"bg-accent border-accent text-accent-fg opacity-100":a?"border-fg-subtle/40 bg-canvas opacity-100":"border-fg-subtle/40 bg-canvas opacity-0 group-hover:opacity-100"),"aria-label":n?"Deselect message":"Select message",children:n&&s.jsx(Ze,{className:"size-3"})})]})}function _s({thread:e,selection:t,badge:n,highlightQuery:a}){const r=!e.isRead;return s.jsxs(s.Fragment,{children:[r&&s.jsx("span",{className:"absolute left-1.5 top-1/2 size-1.5 -translate-y-1/2 rounded-full bg-accent"}),s.jsx(Pc,{thread:e,selection:t}),s.jsx(Lc,{thread:e,badge:n,highlightQuery:a})]})}const Va=e=>({...ci,[Zr]:"","data-message-id":e.id});function Rp({thread:e,active:t,focused:n,tabIndex:a,onClick:r}){return s.jsx("button",{type:"button",...Va(e),tabIndex:a,onClick:r,className:Ga({active:t,focused:n}),children:s.jsx(Wa,{thread:e})})}function Mp({thread:e,active:t,focused:n,tabIndex:a,selection:r,onClick:o}){return s.jsx("button",{type:"button",...Va(e),tabIndex:a,onClick:o,className:M("group",zs({active:t,focused:n})),children:s.jsx(_s,{thread:e,selection:r})})}let Je;const Dc=5e3;function Ya(e){e.preventDefault(),zt()}function zt(){Je!==void 0&&(clearTimeout(Je),Je=void 0,document.removeEventListener("contextmenu",Ya,!0),document.removeEventListener("pointerup",zt,!0))}function Fc(){Je===void 0?(document.addEventListener("contextmenu",Ya,!0),document.addEventListener("pointerup",zt,!0)):clearTimeout(Je),Je=setTimeout(zt,Dc)}function Oc({onLongPress:e,isDisabled:t,delayMs:n=500,accessibilityDescription:a}){const{longPressProps:r}=Gl({isDisabled:t,threshold:n,accessibilityDescription:a,onLongPress:e}),o=c.useCallback(i=>{i.pointerType!=="touch"&&i.pointerType!=="pen"||Fc()},[]);return{longPressProps:Nt(r,{onPointerDown:o})}}const ft="min-h-11 min-w-11 px-0";function Xa({hasThread:e,onReply:t,onReplyAll:n,onForward:a,isStarred:r,onToggleStar:o,onDelete:i,isRead:l,onToggleRead:d,moveSlot:x,overflowItems:g=[],onUnavailable:v,unavailableHint:m,className:b}){const f=(h,p)=>()=>{if(!e){v?.(h);return}p?.()},u=d?[{key:"toggle-read",label:l?"Mark as unread":"Mark as read",icon:l?s.jsx(xa,{className:"size-4"}):s.jsx(Fs,{className:"size-4"}),onSelect:f("toggleRead",d)}]:[];return s.jsxs("div",{className:M("relative",b),children:[s.jsxs("div",{className:"flex h-12 shrink-0 items-center gap-0.5 bg-canvas px-1",children:[t&&s.jsx(K,{variant:"ghost",size:"sm",icon:s.jsx(Ua,{className:"size-5"}),onClick:f("reply",t),"aria-label":"Reply",title:"Reply",className:ft}),n&&s.jsx(K,{variant:"ghost",size:"sm",icon:s.jsx(_a,{className:"size-5"}),onClick:f("replyAll",n),"aria-label":"Reply all",title:"Reply all",className:ft}),a&&s.jsx(K,{variant:"ghost",size:"sm",icon:s.jsx(za,{className:"size-5"}),onClick:f("forward",a),"aria-label":"Forward",title:"Forward",className:ft}),s.jsx("div",{className:"flex-1"}),o&&s.jsx(K,{variant:"ghost",size:"sm",icon:s.jsx(et,{className:M("size-5",r&&"fill-warning text-warning")}),onClick:f("star",o),"aria-label":r?"Unstar":"Star","aria-pressed":r,title:r?"Unstar":"Star",className:ft}),x,i&&s.jsx(K,{variant:"ghost",size:"sm",icon:s.jsx(bt,{className:"size-5"}),onClick:f("delete",i),"aria-label":"Move to Trash",title:"Move to Trash",className:ft}),s.jsx(ga,{triggerLabel:"More actions",items:[...u,...g]})]}),!e&&m&&s.jsx("p",{role:"status",className:"bg-surface-sunken px-3 py-1 text-2xs text-fg-subtle",children:m})]})}function zc({open:e=!1,enabled:t=!0,onToggle:n,className:a}){return s.jsx(K,{variant:"ghost",size:"sm",icon:s.jsx(ea,{className:"size-4"}),title:"Intelligence","aria-label":e?"Hide intelligence sidebar":"Show intelligence sidebar","aria-pressed":e,disabled:!t,onClick:n,className:M(e&&"bg-accent-2-soft text-accent-2",a)})}function _c({hasThread:e,onUnavailable:t,unavailableHint:n,isStarred:a,showTriage:r=!0,onReply:o,onReplyAll:i,onForward:l,onDelete:d,onToggleStar:x,moveSlot:g,onMove:v,replyTitle:m="Reply (r)",replyAllTitle:b="Reply all (a)",forwardTitle:f="Forward (f)",deleteTitle:u="Move to Trash (#)",flagTitle:h="Star (s)",children:p,className:j}){const y=(k,S)=>()=>{if(!e||!S){t?.(k);return}S()};return s.jsxs("div",{className:"relative",children:[s.jsxs("header",{className:M("flex h-pane-header shrink-0 items-center gap-1 border-b border-line bg-surface px-3",j),children:[s.jsx(K,{variant:"ghost",size:"sm",icon:s.jsx(Ua,{className:"size-4"}),title:m,"aria-label":"Reply",onClick:y("reply",o)}),s.jsx(K,{variant:"ghost",size:"sm",icon:s.jsx(_a,{className:"size-4"}),title:b,"aria-label":"Reply all",onClick:y("replyAll",i)}),s.jsx(K,{variant:"ghost",size:"sm",icon:s.jsx(za,{className:"size-4"}),title:f,"aria-label":"Forward",onClick:y("forward",l)}),r&&s.jsxs(s.Fragment,{children:[s.jsx("span",{className:"mx-1 h-4 w-px bg-line","aria-hidden":!0}),s.jsx(K,{variant:"ghost",size:"sm",icon:s.jsx(bt,{className:"size-4"}),title:u,"aria-label":"Move to Trash",onClick:y("delete",d)}),g??s.jsx(K,{variant:"ghost",size:"sm",icon:s.jsx(Ts,{className:"size-4"}),title:"Move to mailbox","aria-label":"Move to mailbox",onClick:y("move",v)}),s.jsx(K,{variant:"ghost",size:"sm",icon:s.jsx(et,{className:M("size-4",a&&"fill-warning text-warning")}),title:h,"aria-label":"Star","aria-pressed":a,onClick:y("flag",x)})]}),s.jsx("div",{className:"flex-1"}),p]}),n&&s.jsx("p",{role:"status",className:"border-b border-line bg-surface-sunken px-3 py-1 text-2xs text-fg-subtle",children:n})]})}function Ja({message:e,onClick:t,isFocused:n,isUnread:a,trailing:r}){const o=s.jsxs(s.Fragment,{children:[s.jsx(Cs,{className:"size-3.5 shrink-0 text-fg-subtle"}),s.jsxs("div",{className:"relative shrink-0",children:[s.jsx(pt,{name:e.fromName,email:e.fromEmail,size:"md"}),a&&s.jsx("span",{className:"absolute -top-0.5 -right-0.5 size-2 rounded-full border border-canvas bg-accent"})]}),s.jsx("span",{className:M("w-36 shrink-0 truncate text-sm",a?"font-semibold text-fg":"font-medium text-fg-muted"),children:e.fromName}),s.jsx("span",{className:"min-w-0 flex-1 truncate text-xs text-fg-subtle",children:e.snippet}),r??s.jsx("span",{className:"shrink-0 text-2xs text-fg-subtle tabular-nums",children:e.dateLabel})]}),i=M("group flex h-section-row w-full items-center gap-3 border-b border-line px-2 text-left transition-colors hover:bg-surface-sunken lg:px-4",n&&"bg-surface-sunken ring-1 ring-inset ring-accent/30");return t?s.jsx("div",{role:"button",tabIndex:0,"aria-expanded":!1,onClick:t,onKeyDown:l=>{eo(l)&&(l.preventDefault(),t())},className:M(i,"cursor-pointer"),children:o}):s.jsx("div",{className:i,children:o})}function Za({message:e,warning:t,onHeaderClick:n,isFocused:a,senderBadge:r,trailing:o,to:i,indicators:l,actionMenu:d,actionBar:x,body:g}){const v=s.jsxs(s.Fragment,{children:[s.jsxs("div",{className:"flex items-baseline justify-between gap-2",children:[s.jsxs("span",{className:"text-sm font-semibold text-fg",children:[e.fromName,r]}),o??s.jsx("span",{className:"text-2xs text-fg-subtle",children:e.dateLabel})]}),s.jsx("div",{className:"text-xs text-fg-subtle",children:e.fromEmail}),i!==null&&s.jsx("div",{className:"text-xs text-fg-subtle",children:i??s.jsxs(s.Fragment,{children:["to ",e.toLabel]})})]});return s.jsxs("div",{className:"px-2 py-3 lg:px-4",children:[s.jsxs("div",{className:M("-mx-2 -my-1 flex items-start gap-3 rounded-sm px-2 py-1",a&&"ring-1 ring-inset ring-accent/30"),children:[n?s.jsx("button",{type:"button",onClick:n,"aria-expanded":!0,"aria-label":"Collapse message",className:"mt-1 shrink-0 text-fg-subtle transition-colors hover:text-fg",children:s.jsx(ze,{className:"size-3.5"})}):s.jsx(ze,{className:"mt-1 size-3.5 shrink-0 text-fg-subtle"}),s.jsx(pt,{name:e.fromName,email:e.fromEmail,size:"md"}),s.jsxs("div",{className:"min-w-0 flex-1",children:[n?s.jsx("button",{type:"button",onClick:n,className:"w-full text-left",children:v}):v,l]}),d&&s.jsx("div",{className:"shrink-0",children:d})]}),t&&s.jsxs("div",{className:"mt-3 flex items-start gap-3 rounded-md bg-danger-soft p-3",children:[s.jsx(at,{className:"mt-0.5 size-4 shrink-0 text-danger"}),s.jsxs("div",{className:"text-sm text-fg",children:[s.jsx("span",{className:"font-semibold text-danger",children:"Caution: "}),t," ",s.jsx("button",{type:"button",className:"text-accent underline",children:"Why?"})]})]}),x&&s.jsx("div",{className:"mt-3 -mx-2 lg:-mx-4",children:x}),s.jsx(Ii,{children:g??s.jsx(Ei,{className:"mt-3",html:e.bodyHtml,category:e.framed?"newsletter":"personal",allowImages:!0})})]})}function Uc({thread:e,onBack:t,intelligence:n,intelligenceOpen:a,onToggleIntelligence:r,actions:o,children:i,touchHandlers:l}){const[d,x]=c.useState(!1),g=r!==void 0,v=g?a??!1:d,m=!!n||g,b=()=>{if(g){r?.();return}x(u=>!u)},f=()=>{if(g){v&&r?.();return}x(!1)};return s.jsxs("article",{className:"flex h-full w-full min-w-0 flex-col bg-canvas",children:[s.jsxs("header",{className:"flex h-pane-header shrink-0 items-center gap-2 border-b border-line bg-surface px-row-inset",children:[s.jsx(K,{variant:"ghost",size:"sm",icon:s.jsx(ta,{className:"size-4"}),onClick:t,"aria-label":"Back to messages",className:"-ml-1 shrink-0"}),s.jsx("h2",{className:"min-w-0 flex-1 truncate text-sm font-semibold text-fg",children:e.subject}),m&&s.jsx(K,{variant:"ghost",size:"sm",icon:s.jsx(ea,{className:"size-4"}),onClick:b,"aria-label":v?"Hide intelligence panel":"Show intelligence panel","aria-pressed":v,title:"Intelligence",className:M("shrink-0",v&&"bg-accent-2-soft text-accent-2")})]}),s.jsx("div",{className:"flex-1 overflow-y-auto",style:l?{touchAction:"pan-y"}:void 0,...l,children:i??[...e.messages].reverse().map(u=>{const h=p=>p?()=>p(u.id):void 0;return u.expanded?s.jsx(Za,{message:u,warning:e.warning,onHeaderClick:h(o?.onToggleExpand),actionBar:s.jsx(Xa,{hasThread:!0,onReply:h(o?.onReply),onReplyAll:h(o?.onReplyAll),onForward:h(o?.onForward),onToggleStar:h(o?.onToggleStar),onDelete:h(o?.onDelete),onToggleRead:h(o?.onToggleRead),moveSlot:o?.moveSlot?.(u.id)})},u.id):s.jsx(Ja,{message:u,onClick:h(o?.onToggleExpand)},u.id)})}),n&&!g&&s.jsx(to,{open:v,onClose:f,title:"Intelligence",anchor:"right",className:"p-0",children:s.jsx(Ha,{data:n,onClose:f,className:"h-full w-full border-l-0"})})]})}function Bc({state:e,onRetry:t}){return s.jsxs("div",{role:"alert","data-testid":"attachment-error",className:"flex items-start gap-2 border-t border-danger/30 bg-danger-soft px-2 py-2 text-xs",children:[s.jsx(so,{className:"mt-0.5 size-3.5 shrink-0 text-danger","aria-hidden":!0}),s.jsxs("div",{className:"min-w-0 flex-1",children:[s.jsx("p",{className:"font-medium text-danger",children:e.title}),s.jsx("p",{className:"mt-0.5 text-fg-muted",children:e.detail})]}),s.jsxs("div",{className:"flex shrink-0 items-center gap-3",children:[s.jsx("button",{type:"button",onClick:t,className:"font-medium text-accent hover:underline",children:"Try again"}),e.reportUrl&&s.jsx("a",{href:e.reportUrl,target:"_blank",rel:"noreferrer",className:"font-medium text-accent hover:underline",children:"Report this"})]})]})}function Kc({attachments:e,onDownload:t,hasUnlistedAttachment:n=!1,className:a}){return e.length===0&&!n?null:s.jsxs("section",{"aria-label":"Attachments","data-testid":"attachment-list",className:M("space-y-1.5",a),children:[s.jsxs("h3",{className:"flex items-center gap-1.5 text-2xs font-semibold uppercase tracking-wider text-fg-subtle",children:[s.jsx(Qt,{className:"size-3","aria-hidden":!0}),e.length===0?"Attachment":e.length===1?"1 attachment":`${e.length} attachments`]}),e.length>0&&s.jsx("ul",{className:"overflow-hidden rounded-sm border border-line bg-surface",children:e.map(r=>{const o=r.download.status==="downloading";return s.jsxs("li",{className:"border-t border-line first:border-t-0",children:[s.jsxs("button",{type:"button",onClick:()=>t(r.attachmentId),disabled:o,"data-testid":"attachment-download","aria-label":`Download ${r.filename}`,className:"flex w-full items-center gap-2 px-2 py-2 text-left transition-colors hover:bg-surface-sunken disabled:cursor-progress disabled:opacity-60",children:[s.jsxs("span",{className:"min-w-0 flex-1",children:[s.jsx("bdi",{className:"block truncate text-sm text-fg",title:r.filename,children:r.filename}),s.jsxs("span",{className:"block truncate text-2xs text-fg-subtle",children:[r.typeLabel," ·"," ",wi(r.sizeOctets)]})]}),o?s.jsx(sa,{className:"size-4 shrink-0 animate-spin text-fg-subtle","aria-hidden":!0}):s.jsx(Ui,{className:"size-4 shrink-0 text-fg-subtle","aria-hidden":!0})]}),r.download.status==="failed"&&s.jsx(Bc,{state:r.download,onRetry:()=>t(r.attachmentId)})]},r.attachmentId)})}),n&&s.jsx("p",{role:"alert","data-testid":"attachment-unlisted",className:"rounded-sm border border-line bg-surface px-2 py-2 text-xs text-fg-muted",children:"The mail server says this message carries an attachment, but none of its parts describe one. Re-sync the account from Settings; if the attachment still does not appear, the message is worth reporting."})]})}function Hc({label:e,onUndo:t,undoLabel:n="Undo",filtersHref:a,className:r}){return s.jsxs(we,{tone:"accent",className:M("py-1 text-xs",r),children:[s.jsx(Ni,{className:"size-3.5 shrink-0","aria-hidden":!0}),s.jsx("span",{children:e}),t&&s.jsx("button",{type:"button",onClick:o=>{o.stopPropagation(),t()},className:"font-semibold underline decoration-dotted underline-offset-2 hover:decoration-solid",children:n}),a&&s.jsx("a",{href:a,onClick:o=>{o.stopPropagation()},className:"font-semibold underline decoration-dotted underline-offset-2 hover:decoration-solid",children:"Manage filter"})]})}const qc="peer relative size-5 shrink-0 cursor-pointer appearance-none rounded-md border border-line-strong bg-surface outline-none transition-colors checked:border-positive checked:bg-positive indeterminate:border-positive indeterminate:bg-positive focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1 focus-visible:ring-offset-surface",kn="pointer-events-none absolute inset-0 m-auto size-3.5 text-accent-fg";function Qc({label:e,description:t,indeterminate:n=!1,checked:a,onChange:r,className:o,...i}){const l=c.useRef(null);c.useEffect(()=>{l.current&&(l.current.indeterminate=n)},[n]);const d=s.jsxs("span",{className:"relative inline-flex",children:[s.jsx("input",{ref:l,type:"checkbox",checked:a,onChange:r,className:qc,...i}),s.jsx(Ze,{className:M(kn,"hidden peer-checked:block"),"aria-hidden":!0}),s.jsx(Qi,{className:M(kn,"hidden peer-indeterminate:block"),"aria-hidden":!0})]});return e===void 0&&t===void 0?s.jsx("span",{className:o,children:d}):s.jsxs("label",{className:M("flex min-h-11 cursor-pointer items-center gap-3 text-left",o),children:[d,s.jsxs("span",{className:"flex min-w-0 flex-col",children:[e!==void 0&&s.jsx("span",{className:"text-sm text-fg",children:e}),t!==void 0&&s.jsx("span",{className:"text-xs text-fg-subtle",children:t})]})]})}function Gc(e){return{id:e.id,fromName:e.sender,fromEmail:e.senderEmail??e.sender,subject:e.subject,snippet:e.snippet,timeLabel:e.date,isRead:!e.unread,starred:e.flagged,...e.mailboxId?{mailboxId:e.mailboxId}:{}}}function Wc({result:e,onClick:t,query:n,showFolder:a=!0}){const r=a&&e.folder?no(e.folder):void 0;return s.jsx("button",{type:"button",onClick:t,className:M("group",zs({}),"border-b border-line"),children:s.jsx(_s,{thread:Gc(e),highlightQuery:n,badge:s.jsxs(s.Fragment,{children:[r&&s.jsx(we,{tone:"neutral",className:"shrink-0",children:r}),e.category&&s.jsx(we,{tone:e.category.tone??"neutral",className:"shrink-0",children:e.category.label}),e.matchedChunkLabel&&s.jsx(we,{tone:"neutral",className:"shrink-0",children:`matched: ${e.matchedChunkLabel}`}),e.score!=null&&s.jsx("span",{className:"shrink-0 text-2xs text-fg-subtle tabular-nums",children:e.score.toFixed(2)})]})})})}const Vc=e=>e===1?"result":"results";function Yc({count:e,onScopeToSpam:t}){return s.jsx(na,{tone:"info",variant:"soft",className:"items-center justify-between gap-3 rounded-none border-b border-line",children:s.jsxs("div",{className:"flex items-center justify-between gap-3",children:[s.jsxs("p",{className:"min-w-0 text-xs text-fg-muted",children:[s.jsx("span",{className:"font-semibold text-fg tabular-nums",children:e})," ",`${Vc(e)} from Spam`]}),s.jsx(K,{variant:"ghost",size:"sm",onClick:t,className:"shrink-0 text-accent",children:"Go to Spam"})]})})}const jn=6,Xc={kind:"global"},Jc=e=>e.kind==="folder"&&e.role==="junk",Zc=e=>e.folder?.role==="junk";function er(e){const t=[],n=[];for(const a of e)Zc(a)?n.push(a):t.push(a);return{kept:t,spam:n}}function tr({onClick:e,blockedReason:t}){const n=c.useId(),[a,r]=c.useState(!1);return s.jsxs("div",{className:"border-b border-line px-row-inset py-1.5",children:[s.jsxs("button",{type:"button",onClick:()=>{if(t){r(!0);return}e()},"aria-describedby":t?n:void 0,className:M("flex w-full items-center gap-1.5 rounded-md px-2 py-1.5 text-left text-xs font-medium transition-colors",t?"text-fg-subtle opacity-55":"text-accent hover:bg-surface-sunken"),children:[s.jsx(ao,{className:"size-3.5 shrink-0","aria-hidden":"true"}),s.jsx("span",{children:"Make this a filter"})]}),t&&s.jsx(Xn,{id:n,reason:t,nudged:a,className:"px-2 pt-1 text-2xs text-warning"})]})}function ed({section:e,query:t,onSelectResult:n,showFolder:a}){const[r,o]=c.useState(e.initialCollapsed??!1),[i,l]=c.useState(!1),d=e.results.length>jn,g=!i&&d?e.results.slice(0,jn):e.results,v=e.results.length-g.length;return s.jsxs("div",{children:[s.jsxs("button",{type:"button","aria-expanded":!r,onClick:()=>o(m=>!m),className:"sticky top-0 z-10 flex h-section-row w-full items-center gap-1.5 border-b border-line bg-surface-sunken px-row-inset text-left transition-colors hover:bg-surface",children:[s.jsx("span",{className:"flex-1 text-2xs font-semibold uppercase tracking-wider text-fg-subtle",children:e.label}),s.jsx("span",{className:"text-2xs text-fg-subtle tabular-nums",children:e.results.length}),s.jsx(ze,{className:M("size-3 shrink-0 text-fg-subtle transition-transform duration-200",r?"rotate-0":"rotate-180")})]}),!r&&s.jsxs(s.Fragment,{children:[g.map(m=>s.jsx(Wc,{result:m,query:t,showFolder:a,onClick:n?()=>n(m):void 0},m.id)),d&&s.jsxs("button",{type:"button",onClick:()=>l(m=>!m),className:"flex w-full items-center justify-center border-b border-line px-row-inset py-1.5 text-2xs font-medium text-accent transition-colors hover:bg-surface",children:[i?"Show less":`Show ${v} more`,!i&&s.jsx(ze,{className:"ml-1 size-3"})]})]})]})}function sr({value:e,recentSearches:t,onPickRecent:n,sections:a,loading:r,onSelectResult:o,tokens:i,scope:l=Xc,makeFilter:d}){if(!(e.trim().length>0))return t&&t.length>0?s.jsxs("div",{className:"flex flex-col",children:[s.jsx("h3",{className:"px-row-inset pb-1 pt-3 text-2xs font-semibold uppercase tracking-wide text-fg-subtle",children:"Recent searches"}),t.map(k=>s.jsxs("button",{type:"button",onClick:()=>n?.(k),className:"flex w-full items-center gap-2.5 border-b border-line px-row-inset py-2.5 text-left transition-colors hover:bg-surface-sunken",children:[s.jsx(Ca,{className:"size-4 shrink-0 text-fg-subtle"}),s.jsx("span",{className:"min-w-0 flex-1 truncate text-sm text-fg-muted",children:k})]},k))]}):s.jsx("p",{className:"px-row-inset py-6 text-center text-sm text-fg-subtle",children:"Search across your mail by sender, subject or words in the message."});const g=i&&i.length>0&&s.jsx(ro,{tokens:i}),v=d&&s.jsx(tr,{...d});if(r)return s.jsxs("div",{className:"flex flex-col",children:[v,g,s.jsx("div",{className:"flex flex-col gap-3 px-row-inset py-4",children:[0,1,2,3].map(k=>s.jsxs("div",{className:"flex flex-col gap-1.5",children:[s.jsx("div",{className:"h-3 w-1/3 animate-pulse rounded bg-surface-sunken"}),s.jsx("div",{className:"h-3 w-2/3 animate-pulse rounded bg-surface-sunken"}),s.jsx("div",{className:"h-2.5 w-1/2 animate-pulse rounded bg-surface-sunken"})]},k))})]});const m=l.kind==="global",b=Jc(l)||l.kind==="collection",f=m||l.kind==="collection",u=(a??[]).map(k=>{if(b)return{section:k,spam:[]};const{kept:S,spam:E}=er(k.results);return{section:{...k,results:S},spam:E}}),h=u.map(k=>k.section),p=u.reduce((k,S)=>k+S.spam.length,0),j=l.kind==="global"&&p>0&&l.onScopeToSpam!==void 0?s.jsx(Yc,{count:p,onScopeToSpam:l.onScopeToSpam}):void 0;return h.some(k=>k.results.length>0)?s.jsxs("div",{className:"flex flex-col",children:[v,g,j,h.filter(k=>k.results.length>0).map(k=>s.jsx(ed,{section:k,query:e,showFolder:f,onSelectResult:o},k.id))]}):s.jsxs("div",{className:"flex flex-col",children:[v,g,j,s.jsxs("div",{className:"px-row-inset py-10 text-center",children:[s.jsxs("p",{className:"text-sm font-medium text-fg",children:["No matches for “",e,"”"]}),s.jsx("p",{className:"mt-1 text-xs text-fg-subtle",children:"Try a different word, or adjust the filters above."})]})]})}function td({value:e,onChange:t,onClear:n,onCancel:a,filter:r,recentSearches:o,onPickRecent:i,sections:l,loading:d,onSelectResult:x,tokens:g,chips:v,onRemoveChip:m,scope:b,makeFilter:f,suggest:u,suggestList:h}){const p=s.jsx(sr,{value:e,recentSearches:o,onPickRecent:i,sections:l,loading:d,onSelectResult:x,tokens:g,scope:b,makeFilter:f});return s.jsxs("article",{className:"flex h-full w-full min-w-0 flex-col bg-canvas",children:[s.jsxs("header",{className:"flex h-pane-header shrink-0 items-center gap-2 border-b border-line bg-surface px-row-inset",children:[s.jsx("div",{className:"min-w-0 flex-1",children:s.jsx(ha,{value:e,onChange:t,onClear:n,chips:v,onRemoveChip:m,globalFocusKey:!1,showClearButton:!1,suggest:u})}),s.jsx(K,{variant:"ghost",size:"sm",icon:s.jsx(_e,{className:"size-4"}),onClick:a,"aria-label":"Clear and close search",className:"-mr-1 shrink-0"})]}),h,r&&e.trim().length===0?s.jsx(oo,{children:s.jsx(Jn,{...r,children:p})}):s.jsx("div",{className:"flex-1 overflow-y-auto",children:p})]})}const wn=e=>e.toLocaleString();function Nn({selectAll:e,selecting:t,className:n}){return s.jsx(Qc,{className:n,checked:e.checked,indeterminate:e.indeterminate,onChange:e.onChange,label:s.jsx("span",{className:"font-medium text-accent",children:e.checked&&t?"Deselect all":"Select all"})})}function sd({title:e,count:t,onCancel:n,onDelete:a,onMove:r,onOrganize:o,onJunk:i,onMarkRead:l,navSlot:d,titleMeta:x,searchSlot:g,searchField:v,idleSlot:m,overflowSlot:b,isBusy:f=!1,isCounting:u=!1,selectAll:h,statusLabel:p,progress:j,notice:y}){const k=t>0||u,S=h?.checked?`All ${wn(t)} loaded selected`:`${wn(t)} ${t===1?"message":"messages"} selected`,E=[];return i&&!f&&!u&&E.push({key:"junk",label:"Junk",icon:s.jsx(at,{className:"size-4"}),onSelect:i}),l&&!f&&!u&&E.push({key:"mark-read",label:"Mark read",icon:s.jsx(Fs,{className:"size-4"}),onSelect:l}),s.jsxs("header",{"data-selection-bar":"",className:"flex shrink-0 flex-col border-b border-line bg-surface-sunken",children:[s.jsxs("div",{"data-selection-bar-row":"actions",className:"flex h-pane-header items-center gap-1 px-row-inset",children:[k?s.jsx(K,{variant:"ghost",size:"touch",icon:s.jsx(ta,{className:"size-5"}),onClick:n,"aria-label":"Cancel selection",className:"-ml-2 shrink-0"}):d,h&&s.jsx(Nn,{selectAll:h,selecting:k,className:"hidden shrink-0 pr-2 md:flex"}),k?s.jsx("span",{"data-selection-count":"",className:"min-w-0 flex-1 truncate px-1 text-sm font-medium text-fg",role:"status","aria-live":"polite",children:p??S}):v?s.jsx("div",{className:"flex min-w-0 flex-1 items-center gap-1",children:v}):s.jsxs(s.Fragment,{children:[s.jsx("h1",{className:"min-w-0 flex-1 truncate px-1 text-sm font-semibold text-fg",children:e}),x,g]}),k&&!u&&s.jsxs(s.Fragment,{children:[s.jsx(K,{variant:"ghost",size:"touch",icon:f?s.jsx(sa,{className:"size-5 animate-spin"}):s.jsx(bt,{className:"size-5 text-danger"}),onClick:f?void 0:a,"aria-label":"Move selected messages to Trash","aria-busy":f||void 0,className:"shrink-0"}),!f&&r&&s.jsx(K,{variant:"ghost",size:"touch",icon:s.jsx(Ts,{className:"size-5"}),onClick:r,"aria-label":"Move selected messages",className:"shrink-0"}),!f&&o&&s.jsx(K,{variant:"ghost",size:"touch",icon:s.jsx(Ue,{className:"size-5"}),onClick:o,"aria-label":"Organize selected messages",className:"shrink-0"})]}),k&&s.jsx(ga,{triggerLabel:"More actions",items:E,className:"shrink-0",children:!f&&!u&&b})]}),!k&&m,k&&h&&s.jsx("div",{"data-selection-bar-row":"select-all",className:"px-row-inset pb-2 md:hidden",children:s.jsx(Nn,{selectAll:h,selecting:k,className:"w-full"})}),j&&s.jsx("div",{className:"px-row-inset pb-2",children:s.jsx(io,{value:j.value,max:j.max,tone:j.tone})}),y&&s.jsx(na,{"data-selection-notice":"",tone:y.tone,variant:"soft",role:"status","aria-live":"polite",className:"mx-row-inset mb-2",children:s.jsxs("div",{className:"flex items-center justify-between gap-2",children:[y.text&&s.jsx("span",{children:y.text}),y.action&&s.jsx(K,{variant:"ghost",size:"md",onClick:y.action.onClick,className:"-my-1 min-h-11 shrink-0",children:y.action.label})]})})]})}const Us=[{id:"all",label:"All",tone:"neutral"},{id:"personal",label:"Personal",tone:"accent"},{id:"uncategorized",label:"Unclassified",tone:"neutral"},{id:"transactional",label:"Transactional",tone:"positive"},{id:"newsletter",label:"Newsletter",tone:"neutral"},{id:"marketing",label:"Marketing",tone:"warning"},{id:"social",label:"Social",tone:"warning"},{id:"automated",label:"Automated",tone:"neutral"}],nr={id:"unread",label:"Unread"},nd={id:"flagged",label:"Starred"},ar={id:"attachment",label:"Has attachment"};function ad(e){if(!(e.length<=1))return e.map(t=>({id:t.id,label:t.label,count:t.count,active:t.active}))}function Ap(e=[]){return{categories:[...Us],filters:Zn,sources:ad(e)}}function rd(){return{categories:[...Us],filters:[nr,nd,ar]}}function $p(){return{categories:[...Us],filters:[nr,ar]}}function od(e,t){return e.endsWith(t)?e.length===t.length||e[e.length-t.length-1]===".":!1}function id(e,t){const n=e.length-t.length-2,a=e.lastIndexOf(".",n);return a===-1?e:e.slice(a+1)}function ld(e,t,n){if(n.validHosts!==null){const r=n.validHosts;for(const o of r)if(od(t,o))return o}let a=0;if(t.startsWith("."))for(;a<t.length&&t[a]===".";)a+=1;return e.length===t.length-a?null:id(t,e)}const cs=/[\t\n\r]/g;let bs=!1;function Cn(e){return e>=97&&e<=122||e>=48&&e<=57||e>127||e>=65&&e<=90||e===45||e===95}function Sn(e,t,n){const a=n-t,r=e.charCodeAt(t)|32;if(a===2)return r===119&&(e.charCodeAt(t+1)|32)===115?1:0;if(a===3){const o=e.charCodeAt(t+1)|32,i=e.charCodeAt(t+2)|32;return r===119&&o===115&&i===115||r===102&&o===116&&i===112?1:0}else if(a===4){const o=e.charCodeAt(t+1)|32,i=e.charCodeAt(t+2)|32,l=e.charCodeAt(t+3)|32;return r===104&&o===116&&i===116&&l===112?1:r===102&&o===105&&i===108&&l===101?2:0}else if(a===5)return r===104&&(e.charCodeAt(t+1)|32)===116&&(e.charCodeAt(t+2)|32)===116&&(e.charCodeAt(t+3)|32)===112&&(e.charCodeAt(t+4)|32)===115?1:0;return 0}function mt(e,t,n=!1){let a=0,r=e.length,o=!1,i=!1;if(bs=!1,!t){if(e.startsWith("data:"))return null;for(;a<e.length&&e.charCodeAt(a)<=32;)a+=1;for(;r>a+1&&e.charCodeAt(r-1)<=32;)r-=1;if(e.charCodeAt(a)===47&&e.charCodeAt(a+1)===47)a+=2;else{const h=e.indexOf(":/",a);if(h!==-1){const p=Sn(e,a,h);if(p===1)for(i=!0,a=h+2;e.charCodeAt(a)===47||e.charCodeAt(a)===92;)a+=1;else if(p===2){i=!0,a=h+1;let j=0;for(;(e.charCodeAt(a)===47||e.charCodeAt(a)===92)&&j<2;)a+=1,j+=1;if(j<2)return null}else{for(let j=a;j<h;j+=1){const y=e.charCodeAt(j)|32;if(!(y>=97&&y<=122||y>=48&&y<=57||y===46||y===45||y===43)){const k=e.charCodeAt(j);return k===9||k===10||k===13?mt(e.replace(cs,""),t,n):null}}if(e.charCodeAt(h+2)===47)a=h+3;else return null}}else if(e.charCodeAt(a)!==91){let p=-1;for(let j=a;j<r;j+=1){const y=e.charCodeAt(j);if(y===9||y===10||y===13)return mt(e.replace(cs,""),t,n);if(y===58){p=j;break}if(y===47||y===92||y===63||y===35)break}if(p!==-1){let j=!1;for(let y=p+1;y<r;y+=1){const k=e.charCodeAt(y);if(k===47||k===92||k===63||k===35)break;if(k===64){j=!0;break}}if(!j){let y=!0,k=p+1;for(;k<r;k+=1){const S=e.charCodeAt(k);if(S===47||S===92||S===63||S===35)break;if(S<48||S>57){y=!1;break}}if(k===p+1&&(y=!1),!y){const S=Sn(e,a,p);if(S===0){let E=!1;for(let A=p+1;A<r;A+=1){const O=e.charCodeAt(A);if(O===47||O===92||O===63||O===35)break;if(O===58){E=!0;break}}if(!E)return null}else if(i=!0,a=p+1,S===2){let E=0;for(;(e.charCodeAt(a)===47||e.charCodeAt(a)===92)&&E<2;)a+=1,E+=1;if(E<2)return null}else for(;e.charCodeAt(a)===47||e.charCodeAt(a)===92;)a+=1}}}}}let d=-1,x=-1,g=-1,v=-1,m=!1,b=n,f=a-1,u=-1;if(n&&a<r){const h=e.charCodeAt(a);(!(Cn(h)||h===46||h===95)||h===45)&&(b=!1)}for(let h=a;h<r;h+=1){const p=e.charCodeAt(h);if(p<64)if(p===47||p===35||p===63){r=h;break}else p===58?(v===-1&&(v=h),g=h):p===9||p===10||p===13?m=!0:n&&(p===46?((h-f>64||u===46||u===45)&&(b=!1),f=h):(p<48||p>57)&&(p!==45||u===46)&&(b=!1));else if(i&&p===92){r=h;break}else p===64?(d=h,v=-1):p===93?x=h:p>=65&&p<=90?o=!0:n&&!Cn(p)&&(b=!1);n&&(u=p)}if(m)return mt(e.replace(cs,""),t,n);if(d!==-1&&d>=a&&d<r&&(a=d+1),e.charCodeAt(a)===91)return x!==-1?e.slice(a+1,x).toLowerCase():null;if(g!==-1&&g>a&&g<r&&v===g&&(r=g),a>=r)return null;n&&b&&d===-1&&g===-1&&x===-1&&e.charCodeAt(r-1)!==46&&r-a<=255&&r-f-1<=63&&u!==45&&(bs=!0)}for(;r>a+1&&e.charCodeAt(r-1)===46;)r-=1;const l=a!==0||r!==e.length?e.slice(a,r):e;return o?l.toLowerCase():l}function cd(e){if(e.length<7||e.length>15)return!1;let t=0;for(let n=0;n<e.length;n+=1){const a=e.charCodeAt(n);if(a===46)t+=1;else if(a<48||a>57)return!1}return t===3&&e.charCodeAt(0)!==46&&e.charCodeAt(e.length-1)!==46}function dd(e){if(e.length<3)return!1;let t=e.startsWith("[")?1:0,n=e.length;if(e[n-1]==="]"&&(n-=1),n-t>39)return!1;let a=!1;for(;t<n;t+=1){const r=e.charCodeAt(t);if(r===58)a=!0;else if(!(r>=48&&r<=57||r>=97&&r<=102||r>=65&&r<=70))return!1}return a}function ud(e){return dd(e)||cd(e)}function Tn(e){return e>=97&&e<=122||e>=48&&e<=57||e>127}function In(e){if(e.length>255||e.length===0||!Tn(e.charCodeAt(0))&&e.charCodeAt(0)!==46&&e.charCodeAt(0)!==95)return!1;let t=-1,n=-1;const a=e.length;for(let r=0;r<a;r+=1){const o=e.charCodeAt(r);if(o===46){if(r-t>64||n===46||n===45)return!1;t=r}else if(!(Tn(o)||o===45||o===95)||o===45&&n===46)return!1;n=o}return a-t-1<=63&&n!==45}function fd({allowIcannDomains:e=!0,allowPrivateDomains:t=!1,detectIp:n=!0,detectSpecialUse:a=!1,extractHostname:r=!0,mixedInputs:o=!0,validHosts:i=null,validateHostname:l=!0}){return{allowIcannDomains:e,allowPrivateDomains:t,detectIp:n,detectSpecialUse:a,extractHostname:r,mixedInputs:o,validHosts:i,validateHostname:l}}const md=fd({});function pd(e){return md}function hd(){return{domain:null,domainWithoutSuffix:null,hostname:null,isIcann:null,isIp:null,isPrivate:null,isSpecialUse:null,publicSuffix:null,subdomain:null}}function gd(e){e.domain=null,e.domainWithoutSuffix=null,e.hostname=null,e.isIcann=null,e.isIp=null,e.isPrivate=null,e.isSpecialUse=null,e.publicSuffix=null,e.subdomain=null}function xd(e,t,n,a,r){const o=pd();if(typeof e!="string")return r;let i=!1;return o.extractHostname?o.mixedInputs?(i=In(e),r.hostname=mt(e,i,o.validateHostname)):r.hostname=mt(e,!1,o.validateHostname):r.hostname=e,o.detectIp&&r.hostname!==null&&(r.isIp=ud(r.hostname),r.isIp)?r:o.validateHostname&&o.extractHostname&&r.hostname!==null&&!(i&&r.hostname===e)&&!bs&&!In(r.hostname)?(r.hostname=null,r):(r.hostname===null||(n(r.hostname,o,r),r.publicSuffix===null)||(r.domain=ld(r.publicSuffix,r.hostname,o)),r)}const En=hd();function bd(e,t){return gd(En),xd(e,3,lo,t,En).domain}const Gt=e=>{const t=new Set,n=[];for(const a of e){const r=a.trim();if(r==="")continue;const o=r.toLowerCase();t.has(o)||(t.add(o),n.push(r))}return n},vd=e=>{const t=e.lastIndexOf("@");return t>=0?e.slice(t+1):e},rr=e=>bd(vd(e.trim())),yd=e=>{const t=Gt(e);if(t.length<2)return null;let n=null;for(const a of t){const r=rr(a);if(r===null)return null;if(n===null)n=r;else if(n!==r)return null}return n},Wt=e=>{const t=yd(e);return t!==null?[{field:"FromDomain",value:t}]:Gt(e).map(n=>({field:"From",value:n}))},kd=e=>{const t=new Map;for(const r of e){const o=r.normalizedEmail.trim().toLowerCase();if(o==="")continue;const i=t.get(o);i?i.count+=1:t.set(o,{sender:r,count:1})}let n,a=0;for(const{sender:r,count:o}of t.values())o<=a||(n=r,a=o);return n},or=e=>e.displayName?.trim()||e.normalizedEmail,jd=/^\s*(?:(?:re|aw|fwd?|vs|sv|antw|res|enc|tr)\s*(?:\[\d+\])?\s*:|\[[^\]]{1,32}\])\s*/i,wd=e=>{let t=e.replace(/\s+/g," ").trim();for(;;){const n=t.replace(jd,"");if(n===t)return t.trim();t=n}},Nd=new Set(["a","an","and","are","as","at","be","by","for","from","has","have","in","is","it","me","my","new","of","on","or","our","the","this","to","was","we","with","you","your"]),Cd=3,ds=e=>e.split(" ").filter(t=>t!==""),Rn=e=>e.length===0||e.join(" ").length<Cd?!1:e.some(t=>!Nd.has(t.toLowerCase())),Sd=(e,t)=>e.findIndex((n,a)=>t.every((r,o)=>e[a+o]?.toLowerCase()===r.toLowerCase())),Td=e=>{const t=e.map(wd).filter(o=>o!=="");if(t.length===0)return;const[n,...a]=t;if(a.length===0)return Rn(ds(n))?n:void 0;const r=ds(n);for(let o=r.length;o>0;o-=1)for(let i=0;i+o<=r.length;i+=1){const l=r.slice(i,i+o);if(Rn(l)&&a.every(d=>Sd(ds(d),l)>=0))return l.join(" ")}},Id=(e,t)=>{const n=Wt(e);if(Gt(e).length===1||n.length===1&&n[0].field==="FromDomain")return n;const a=Td(t);return a!==void 0?[{field:"Subject",value:a}]:n},Ed=({match:e,sender:t,folder:n})=>{const a=e??t;return a?n?`${a} → ${n}`:e?`Mail matching ${e}`:`Mail from ${a}`:n?`Mail to ${n}`:""},Rd=e=>e.clauses.length>0,Md=e=>({scopedOutFolder:e.scopedOut?.label,droppedFacets:e.droppedFacets.map(t=>t.label),droppedSemantic:e.droppedSemantic}),Ad=({orderedIds:e,isDesktop:t,initialFocusedId:n,initialSelectedIds:a,onExitSelection:r})=>{const[o,i]=c.useState(n),[l,d]=c.useState(),x=c.useCallback(N=>{d($=>$===N?$:void 0),i(N)},[]),g=Ec({initialSelectedIds:a}),{selectedCount:v,toggle:m,clearSelection:b,selectRange:f,setAnchor:u,selectAll:h}=g,p=Nc(v,t),j=c.useRef(null),y=c.useRef(!1),k=c.useCallback(()=>{r?.(),b()},[b,r]),S=c.useMemo(()=>o?e.indexOf(o):-1,[e,o]),E=c.useCallback(N=>{if(N<0||N>=e.length)return;const $=e[N];if(p){m($);return}j.current=$,y.current=!1,d($),i($)},[e,p,m]),A=c.useCallback(()=>{e.length!==0&&E(S<0?0:Math.min(S+1,e.length-1))},[e.length,S,E]),O=c.useCallback(()=>{e.length!==0&&E(S<=0?0:S-1)},[e.length,S,E]),F=c.useCallback(()=>E(0),[E]),L=c.useCallback(()=>E(e.length-1),[E,e.length]),z=c.useCallback(()=>{o&&m(o)},[o,m]),I=c.useCallback((N,$)=>{const C=wc($);return C==="range"?(f(e,N,o),!0):C==="toggle"?(m(N),!0):(k(),u(N),!1)},[e,o,f,m,k,u]),_=c.useCallback(N=>{const $=Ic(e,o,N);$!==void 0&&(f(e,$),j.current=$,y.current=!1,d(void 0),i($))},[e,o,f]),w=c.useCallback(()=>_(-1),[_]),R=c.useCallback(()=>_(1),[_]),P=c.useCallback(()=>{e.length>0&&h(e)},[e,h]);return{focusedMessageId:o,setFocusedMessageId:x,keyboardFocusedMessageId:l,focusIndex:S,pendingDomFocusRef:j,cursorMovedByPointerRef:y,selection:g,isMultiSelectMode:p,exitSelection:k,moveFocusToIndex:E,focusNext:A,focusPrevious:O,focusFirst:F,focusLast:L,toggleFocusedSelection:z,extendRangeUp:w,extendRangeDown:R,selectAllLoaded:P,handleRowSelect:I}};function $d(e,t){if(e===void 0)return{shouldBlockFn:()=>!0,withResolver:!1};if("shouldBlockFn"in e)return e;if(typeof e=="function")return{shouldBlockFn:async()=>await e(),enableBeforeUnload:!0,withResolver:!1};const n=!!(e.condition??!0),a=e.blockerFn;return{shouldBlockFn:async()=>n&&a!==void 0?await a():n,enableBeforeUnload:n,withResolver:a===void 0}}function Ld(e,t){const{shouldBlockFn:n,enableBeforeUnload:a=!0,disabled:r=!1,withResolver:o=!1}=$d(e),i=co(),{history:l}=i,[d,x]=c.useState({status:"idle",current:void 0,next:void 0,action:void 0,proceed:void 0,reset:void 0});return c.useEffect(()=>{const g=async v=>{function m(p){const j=i.parseLocation(p),y=i.getMatchedRoutes(j.pathname);return y.foundRoute===void 0?{routeId:"__notFound__",fullPath:j.pathname,pathname:j.pathname,params:y.routeParams,search:i.options.parseSearch(p.search)}:{routeId:y.foundRoute.id,fullPath:y.foundRoute.fullPath,pathname:j.pathname,params:y.routeParams,search:i.options.parseSearch(p.search)}}const b=m(v.currentLocation),f=m(v.nextLocation);if(b.routeId==="__notFound__"&&f.routeId!=="__notFound__")return!1;const u=await n({action:v.action,current:b,next:f});if(!o)return u;if(!u)return!1;const h=await new Promise(p=>{x({status:"blocked",current:b,next:f,action:v.action,proceed:()=>p(!1),reset:()=>p(!0)})});return x({status:"idle",current:void 0,next:void 0,action:void 0,proceed:void 0,reset:void 0}),h};return r?void 0:l.block({blockerFn:g,enableBeforeUnload:a})},[n,a,r,o,l,i]),d}const Bs=e=>{const{data:t,isLoading:n}=J({...tt(),staleTime:1/0}),a=c.useMemo(()=>(t?.accounts??[]).map(l=>l.accountId),[t?.accounts]),r=$s({queries:a.map(l=>({...vt({path:{accountId:l}}),staleTime:1/0,enabled:!!e}))}),o=n||r.some(l=>l.isLoading);return{accountId:c.useMemo(()=>{if(e){for(let l=0;l<a.length;l++)if((r[l].data?.items??[]).some(g=>g.mailboxId===e))return a[l]}},[e,a,r]),isLoading:o}},Pd=({surface:e})=>{const t=uo(),n=fo(),{data:a}=J({...Ut({path:{messageId:e.sourceMessageId}})}),{data:r}=J({...tt(),staleTime:1/0}),{accountId:o}=Bs(a?.message.mailboxId),i=r?.accounts?.find(l=>l.accountId===o);return s.jsx("div",{className:"border-b border-line bg-canvas",children:s.jsx(Pi,{layout:"flow",mode:e.mode,account:i,sourceMessage:a,outboxMessageId:e.outboxMessageId,onDraftCreated:t,onClose:n})})},ir=100,vs=async e=>e.then(t=>({ok:!0,value:t}),t=>({ok:!1,error:t})),Dd=(e,t=ir)=>{if(e.length===0)return[];const n=[];for(let a=0;a<e.length;a+=t)n.push(e.slice(a,a+t));return n},Fd=(e,t=ir)=>{const n=new Map;for(const a of e){const r=n.get(a.accountId);if(r){r.push(a.id);continue}n.set(a.accountId,[a.id])}return[...n.values()].flatMap(a=>Dd(a,t))},lr=async(e,t,n,a)=>{const r=Fd(e),o=e.length;let i=0;const l=[];for(let d=0;d<r.length;d++){if(a())return l.push(...r.slice(d).flat()),{done:i,failedIds:l,cancelled:!0};const x=r[d],g=await vs(t(x));if(!g.ok)return l.push(...r.slice(d).flat()),n({done:i,total:o}),{done:i,failedIds:l,cancelled:!1,error:g.error};i+=x.length,n({done:i,total:o})}return{done:i,failedIds:l,cancelled:!1}},xt=async(e,t)=>{await lr(e.map(n=>({id:n,accountId:void 0})),async n=>(await t(n),{successCount:n.length,failureCount:0}),()=>{},()=>!1)},Od=async(e,t,n,a,r)=>{let o=0;const i=[];let l;do{if(r())return{done:o,failedIds:i,cancelled:!0};const d=await vs(e(l));if(!d.ok)return{done:o,failedIds:i,cancelled:!1,error:d.error};const x=d.value;if(x.ids.length>0){const g=await vs(n(x.ids));if(!g.ok)return{done:o,failedIds:i,cancelled:!1,error:g.error};o+=x.ids.length,a({done:o,total:t})}l=x.continuationToken}while(l);return{done:o,failedIds:i,cancelled:!1}},zd=e=>({done:e.done,total:Math.max(e.total,e.done)}),_d=3e3,Ud=(e,t,n)=>{if(e.length===0)return()=>{};const a=setTimeout(()=>n(e),t);return()=>clearTimeout(a)},Ks=(e,t,n)=>{const a=new Map(t.map(o=>[o.messageId,o.mailboxId])),r=new Set;for(const o of e)r.add(a.get(o)??n);return[...r]},_t=(e,t,n)=>e.map(a=>t.has(a.messageId)?{...a,isRead:n}:a),Bd=(e,t,n,a)=>e.filter(r=>!r.isRead&&t.has(r.threadMessageId)&&!n.has(r.messageId)&&!a.has(r.messageId)).map(r=>r.messageId),Kd=({messages:e,expandedIds:t,threadId:n,mailboxId:a,accountId:r})=>{const o=le(),{pushError:i}=ye(),l=c.useRef(new Set),d=c.useRef(new Set),{mutate:x}=me({...Bt(),meta:mo,onMutate:async m=>{const b=new Set(m.body.messageIds??[]),f=m.body.isRead??!0,u=Ae({path:{threadId:n}}),h=Ce(Ks(b,e,a));await Promise.all([o.cancelQueries({queryKey:u}),kt(o,h)]);const p=o.getQueriesData({queryKey:u}).filter(y=>y[1]!==void 0).map(([y,k])=>({queryKey:y,data:k})),j=jt(o,h);return o.setQueriesData({queryKey:u},y=>y&&{...y,items:_t(y.items,b,f)}),wt(o,h,y=>_t(y,b,f)),{threadMessagesPrefix:u,listPrefixes:h,previousThreadMessages:p,previousThreadsList:j}},onSuccess:(m,b)=>{const f=b.body.messageIds??[];for(const u of f)l.current.add(u),d.current.delete(u)},onError:(m,b,f)=>{const u=b.body.messageIds??[];for(const p of u)d.current.delete(p);if(f){for(const p of f.previousThreadMessages)o.setQueryData(p.queryKey,p.data);yt(o,f.previousThreadsList)}const h=b.body.isRead??!0;i({title:h?"Couldn't mark as read":"Couldn't mark as unread",detail:Me(m),error:m})},onSettled:(m,b,f,u)=>{u&&(o.invalidateQueries({queryKey:u.threadMessagesPrefix}),Ne(o,u.listPrefixes),r&&o.invalidateQueries({queryKey:st({path:{accountId:r}})}))}}),g=c.useCallback(m=>{const b=m.filter(f=>!l.current.has(f)&&!d.current.has(f));if(b.length!==0){for(const f of b)d.current.add(f);x({body:{messageIds:b,isRead:!0}})}},[x]),v=c.useMemo(()=>Bd(e,t,l.current,d.current),[e,t]);c.useEffect(()=>Ud(v,_d,g),[v,g]),c.useEffect(()=>{l.current.clear(),d.current.clear()},[n])},Lp=e=>{const{mailboxId:t,accountId:n,messages:a}=e,r=le(),{pushError:o}=ye(),{mutateAsync:i,isPending:l}=me({...Bt(),onError:(x,g)=>{const v=g.body.isRead??!0;o({title:v?"Couldn't mark as read":"Couldn't mark as unread",detail:Me(x),error:x})},onSettled:(x,g,v)=>{Ne(r,Ce(Ks(v.body.messageIds??[],a??[],t))),n&&r.invalidateQueries({queryKey:st({path:{accountId:n}})})}});return{toggleReadFor:c.useCallback((x,g)=>{x.length!==0&&xt(x,v=>i({body:{messageIds:v,isRead:g}}))},[i]),isPending:l}},Hd=60,qd=1.5,Qd=(e,t,n)=>{const a=Math.abs(e),r=Math.abs(t);return a<n?{direction:null}:a<r*qd?{direction:null}:{direction:e<0?"left":"right"}},Gd=({onSwipeLeft:e,onSwipeRight:t,thresholdPx:n=Hd})=>{const a=c.useRef(null),r=c.useCallback(d=>{if(d.pointerType==="mouse"){a.current=null;return}a.current={x:d.clientX,y:d.clientY}},[]),o=c.useCallback(()=>{},[]),i=c.useCallback(d=>{const x=a.current;if(a.current=null,!x)return;const{direction:g}=Qd(d.clientX-x.x,d.clientY-x.y,n);g==="left"&&e?.(),g==="right"&&t?.()},[e,t,n]),l=c.useCallback(()=>{a.current=null},[]);return{handlers:{onPointerDown:r,onPointerMove:o,onPointerUp:i,onPointerCancel:l}}},Wd=(e,t,n)=>t?.find(a=>a.messageId===e)?.mailboxId??n,Mn=(e,t,n)=>e.map(a=>a.messageId===t?{...a,hasStars:n}:a),cr=({threadId:e,mailboxId:t,messages:n})=>{const a=le(),{pushError:r}=ye(),{mutate:o,isPending:i,variables:l}=me({...po(),onMutate:async x=>{const g=x.path.messageId,v=x.body.isStarred??!1,m=Ae({path:{threadId:e}}),b=Ce([Wd(g,n,t)]);await Promise.all([a.cancelQueries({queryKey:m}),kt(a,b)]);const f=a.getQueriesData({queryKey:m}).filter(h=>h[1]!==void 0).map(([h,p])=>({queryKey:h,data:p})),u=jt(a,b);return a.setQueriesData({queryKey:m},h=>ui(h,p=>Mn(p,g,v))),wt(a,b,h=>Mn(h,g,v)),{threadMessagesPrefix:m,listPrefixes:b,previousThreadMessages:f,previousThreadsList:u}},onError:(x,g,v)=>{if(v){for(const b of v.previousThreadMessages)a.setQueryData(b.queryKey,b.data);yt(a,v.previousThreadsList)}const m=g.body.isStarred??!1;r({title:m?"Couldn't star message":"Couldn't unstar message",detail:Me(x),error:x})},onSettled:(x,g,v,m)=>{m&&(a.invalidateQueries({queryKey:m.threadMessagesPrefix}),Ne(a,m.listPrefixes))}});return{toggleStar:(x,g)=>{o({path:{messageId:x},body:{isStarred:!g}})},isPending:i,pendingMessageId:i?l?.path.messageId:void 0}};function An({authenticity:e,onOpenIntelligence:t}){return e.dkimMismatch?s.jsxs("div",{className:"flex items-start gap-2 rounded-none border-b border-danger/20 bg-danger-soft px-5 py-2.5 text-sm",children:[s.jsx(at,{className:"mt-0.5 size-4 shrink-0 text-danger"}),s.jsxs("p",{className:"flex-1 leading-snug text-fg",children:["This message claims to be from"," ",s.jsx("span",{className:"font-semibold",children:e.fromDomain})," but was sent",e.dkimDomain?` via ${e.dkimDomain}`:" from a different domain","."," ",t&&s.jsx("button",{type:"button",onClick:t,className:"font-medium text-danger hover:underline",children:"Why?"})]})]}):null}function dr(e){return e===void 0?"uncategorized":e}const Vd={inbox:"Inbox",junk:"Junk"},Hs=e=>e.destinationMailboxId!==void 0,Yd=(e,t)=>{if(Hs(e))return`Moved from ${t??"another folder"} by Remit`;const n=e.fromPlacement??"";return`Moved from ${Vd[n]??"another folder"} by Remit`},Xd=(e,t)=>{if(e===en.MoveToInbox)return t.inboxMailboxId;if(e===en.MoveToJunk)return t.junkMailboxId},Jd=(e,t,n)=>{if(!e||!t)return!1;const a=Hs(e)?e.destinationMailboxId:Xd(e.action,n);return a!==void 0&&a===t},Zd="Reported as spam",eu=(e,t)=>{if(e){if(Hs(e))return e.fromMailboxId;if(e.fromPlacement==="inbox")return t.inboxMailboxId;if(e.fromPlacement==="junk")return t.junkMailboxId}},Ct=(e,t)=>{const{data:n,isLoading:a}=J({...tt(),staleTime:1/0,enabled:!!e});return{mailboxId:c.useMemo(()=>e?n?.accounts.find(i=>i.accountId===e)?.folderAppointments.find(i=>i.role===t)?.mailboxId:void 0,[n,e,t]),isLoading:a}},Pp=e=>{const{mailboxId:t,isLoading:n}=Ct(e,"Archive");return{archiveMailboxId:t,isLoading:n}},Dp=e=>{const{mailboxId:t,isLoading:n}=Ct(e,"Drafts");return{draftsMailboxId:t,isLoading:n}},tu=e=>{const{mailboxId:t,isLoading:n}=Ct(e,"Inbox");return{inboxMailboxId:t,isLoading:n}},ur=e=>{const{mailboxId:t,isLoading:n}=Ct(e,"Junk");return{junkMailboxId:t,isLoading:n}},Fp=e=>{const{mailboxId:t,isLoading:n}=Ct(e,"Trash");return{trashMailboxId:t,isLoading:n}},su=()=>{const{data:e,isError:t}=J({...tt(),staleTime:1/0});return{trashByAccount:c.useMemo(()=>{const a=new Map;for(const r of e?.accounts??[]){const o=r.folderAppointments.find(i=>i.role==="Trash");a.set(r.accountId,{mailboxId:o?.mailboxId,source:o?.source??"None",staleFolderPath:o?.staleAppointmentPath})}return a},[e]),hasAppointments:e!==void 0,isError:t}},fr=e=>{const{data:t}=J({...tt(),staleTime:1/0,enabled:!!e});return c.useMemo(()=>t?.accounts.find(n=>n.accountId===e)?.folderAppointments??[],[t,e])},$n=(e,t)=>e.filter(n=>!t.has(n.messageId)),Vt=({mailboxId:e,threadId:t,accountId:n,onAfterOptimisticRemove:a})=>{const r=le(),{pushError:o}=ye(),{mutateAsync:i,isPending:l,isError:d}=me({...ho(),onMutate:async g=>{const v=new Set(g.body.messageIds??[]),m=t?Ae({path:{threadId:t}}):[],b=Ce([e,g.body.destinationMailboxId]);await Promise.all([...t?[r.cancelQueries({queryKey:m})]:[],kt(r,b)]);const f=t?r.getQueriesData({queryKey:m}).filter(h=>h[1]!==void 0).map(([h,p])=>({queryKey:h,data:p})):[],u=jt(r,b);return t&&r.setQueriesData({queryKey:m},h=>h&&{...h,items:$n(h.items,v)}),wt(r,b,h=>$n(h,v)),a?.(Array.from(v)),{threadMessagesPrefix:m,listPrefixes:b,previousThreadMessages:f,previousThreadsList:u}},onError:(g,v,m)=>{if(m){for(const f of m.previousThreadMessages)r.setQueryData(f.queryKey,f.data);yt(r,m.previousThreadsList)}const b=v.body.messageIds?.length??0;o({title:b>1?`Couldn't move ${b} messages`:"Couldn't move this message",detail:Me(g),error:g})},onSettled:(g,v,m,b)=>{b&&(t&&r.invalidateQueries({queryKey:b.threadMessagesPrefix}),Ne(r,b.listPrefixes),n&&r.invalidateQueries({queryKey:st({path:{accountId:n}})}))}});return{moveMessages:c.useCallback((g,v)=>{g.length!==0&&xt(g,m=>i({body:{messageIds:m,destinationMailboxId:v}}))},[i]),isPending:l,isError:d}},nu="This message could not be processed. Please try again. If it keeps failing, report it.",au=(e,t)=>e.replace(`Message ${t}'s`,"This message's"),Ln=e=>{if(e.failureCount===0)return;const t=e.failures?.[0],n=t?.reason??nu,a=t?au(n,t.messageId):n;throw new bo(a,422)};function mr({mailboxId:e,threadId:t,accountId:n,onAfterOptimisticRemove:a}){const r=le(),{pushError:o}=ye(),i=Ce([e]),l=t?Ae({path:{threadId:t}}):[],d=()=>{t&&r.invalidateQueries({queryKey:l}),Ne(r,i),n&&r.invalidateQueries({queryKey:st({path:{accountId:n}})})},x=()=>(u,h)=>{d(),a?.(h.body.messageIds)},g=u=>(h,p)=>{o({title:u(p.body.messageIds.length),detail:Me(h),error:h})},v=me({mutationFn:async u=>{const{data:h}=await go({...u,throwOnError:!0});return Ln(h),h},meta:{softError:!0},onSuccess:x(),onError:g(u=>u>1?`Couldn't report ${u} messages as spam`:"Couldn't report this message as spam")}),m=me({mutationFn:async u=>{const{data:h}=await xo({...u,throwOnError:!0});return Ln(h),h},meta:{softError:!0},onSuccess:x(),onError:g(u=>u>1?`Couldn't undo the spam report for ${u} messages`:"Couldn't undo the spam report")}),b=c.useCallback(u=>{u.length!==0&&xt(u,h=>v.mutateAsync({body:{messageIds:h}}))},[v.mutateAsync]),f=c.useCallback(u=>{u.length!==0&&xt(u,h=>m.mutateAsync({body:{messageIds:h}}))},[m.mutateAsync]);return{reportSpam:b,notSpam:f,isReporting:v.isPending,isRestoring:m.isPending}}const ru=({accountId:e,messageId:t,threadId:n,mailboxId:a,autoMoved:r,spamReport:o})=>{const{inboxMailboxId:i}=tu(e),{junkMailboxId:l}=ur(e),{moveMessages:d,isPending:x}=Vt({mailboxId:a,threadId:n,accountId:e}),{notSpam:g,isRestoring:v}=mr({mailboxId:a,threadId:n,accountId:e}),{data:m}=J({...vt({path:{accountId:e??""}}),staleTime:1/0,enabled:!!e&&r?.fromMailboxId!==void 0}),b={inboxMailboxId:i,junkMailboxId:l},f=eu(r,b),u=c.useCallback(()=>{f&&d([t],f)},[d,t,f]),h=c.useCallback(()=>{g([t])},[g,t]);if(o)return{show:!0,label:Zd,onUndo:h,isUndoing:v};if(!Jd(r,a,b)||!r)return{show:!1,label:"",isUndoing:!1};const j=r.fromMailboxId?m?.items.filter(y=>y.mailboxId===r.fromMailboxId).map(y=>vo(y))[0]:void 0;return{show:!0,label:Yd(r,j),onUndo:f?u:void 0,isUndoing:x,...r.filterId?{filtersHref:"/settings/filters"}:{}}};function ou({accountId:e,messageId:t,threadId:n,mailboxId:a,autoMoved:r,spamReport:o}){const i=ru({accountId:e,messageId:t,threadId:n,mailboxId:a,autoMoved:r,spamReport:o});return i.show?s.jsx(Hc,{label:i.label,onUndo:i.onUndo,undoLabel:i.isUndoing?"Undoing…":"Undo",filtersHref:i.filtersHref}):null}const iu=new Set(["in_flight","unverified"]),Pn=(e,t)=>{const n=e?.[t];return typeof n=="string"?n:void 0},lu=e=>{const t=yo(e);if(t?.code!=="message_placement_unsettled")return;const{details:n}=t;if(!n)return;const a=Pn(n,"reason"),r=Pn(n,"messageId");if(!(!a||!iu.has(a)||!r))return{reason:a,messageId:r}},cu=(e,t)=>({severity:"warning",title:t>1?`Couldn't delete ${t} messages yet`:"Couldn't delete this message yet",detail:e.reason==="in_flight"?"It is still being moved on the mail server. Try again in a moment.":"An earlier move never finished, so where this message sits is unknown. Sync the folder, then delete it again."}),Dn=(e,t)=>e.filter(n=>!t.has(n.messageId)),Op=e=>e.filter(t=>t.isDeleted!==!0),Yt=({mailboxId:e,threadId:t,accountId:n,messages:a,onAfterOptimisticRemove:r})=>{const o=le(),{pushError:i}=ye(),{requestAppointment:l}=Is(),d=c.useRef([]),x=c.useRef(async()=>{}),{mutateAsync:g,isPending:v}=me({...jo(),meta:ko(409),onMutate:async f=>{const u=new Set(f.body.messageIds??[]),h=t?Ae({path:{threadId:t}}):[],p=Ce(Ks(u,a??[],e));await Promise.all([o.cancelQueries({queryKey:h}),kt(o,p)]);const j=t?o.getQueriesData({queryKey:h}).filter(k=>k[1]!==void 0).map(([k,S])=>({queryKey:k,data:S})):[],y=jt(o,p);return t&&o.setQueriesData({queryKey:h},k=>k&&{...k,items:Dn(k.items,u)}),wt(o,p,k=>Dn(k,u)),r?.(Array.from(u)),{threadMessagesPrefix:h,listPrefixes:p,previousThreadMessages:j,previousThreadsList:y}},onError:(f,u,h)=>{if(h){for(const k of h.previousThreadMessages)o.setQueryData(k.queryKey,k.data);yt(o,h.previousThreadsList)}const p=aa(f);if(p){const k=d.current;l({accountId:p.accountId,role:p.role,reason:p.reason,action:{kind:"delete",count:k.length},onAppointed:()=>x.current(k)});return}const j=u.body.messageIds?.length??0,y=lu(f);if(y){i(cu(y,j));return}i({title:j>1?`Couldn't delete ${j} messages`:"Couldn't delete this message",detail:Me(f),error:f})},onSettled:(f,u,h,p)=>{p&&(t&&o.invalidateQueries({queryKey:p.threadMessagesPrefix}),Ne(o,p.listPrefixes),n&&o.invalidateQueries({queryKey:st({path:{accountId:n}})}))}}),m=c.useCallback(f=>xt(f,u=>g({body:{messageIds:u}})),[g]);return c.useEffect(()=>{x.current=m},[m]),{deleteMessages:c.useCallback(f=>{f.length!==0&&(d.current=f,m(f))},[m]),isPending:v}},pr="inline-flex items-center justify-center transition-colors",du=M(pr,"min-h-11 min-w-11 rounded hover:bg-surface-raised"),uu=M(pr,"min-h-11 gap-1.5 px-3 rounded text-sm font-medium hover:bg-surface-raised"),qs=({accountId:e,currentMailboxId:t,onMove:n,disabled:a=!1,disabledHint:r,variant:o="icon-only",label:i,defaultOpen:l=!1})=>{const[d,x]=c.useState(l),[g,v]=c.useState(),m=Es(),b=c.useRef(null),f=c.useRef(null),u=c.useRef(null),h=i??"Move to folder",p=c.useId(),j=ra(),{data:y,isLoading:k,isError:S,error:E,refetch:A}=J({...vt({path:{accountId:e}}),staleTime:1/0,enabled:d}),O=fr(e),{createFolderIn:F}=oa(e),L=c.useMemo(()=>ia({mailboxes:y?.items??[],folderAppointments:O,currentMailboxId:t,translator:j}),[y?.items,O,t,j]),z=la(y?.items??[]),I=L.find(B=>B.id===g),_=c.useCallback(()=>{x(!1),v(void 0);const B=document.activeElement;B&&f.current?.contains(B)&&u.current?.focus()},[]),w=c.useCallback(()=>{I&&(_(),n(I.id))},[I,_,n]);Rs({id:"move-to",open:d,answers:{back:_}}),c.useEffect(()=>{if(!d||!m)return;const B=U=>{const G=U.target;b.current?.contains(G)||f.current?.contains(G)||_()};return document.addEventListener("mousedown",B),()=>document.removeEventListener("mousedown",B)},[d,m,_]);const R=()=>b.current?.getBoundingClientRect()??null,P=a||!!r,N=s.jsxs("button",{type:"button",ref:u,onClick:B=>{B.stopPropagation(),!P&&x(U=>!U)},"aria-label":h,"aria-haspopup":m?"tree":"dialog","aria-expanded":d,"aria-controls":d?p:void 0,title:r,className:o==="icon-only"?du:uu,children:[s.jsx(Ts,{className:o==="icon-only"?"size-5":"size-4"}),o==="compact"&&s.jsx("span",{className:"hidden sm:inline",children:"Move"})]}),$=k?s.jsx("div",{className:"px-3 py-5 text-sm text-fg-muted",children:"Loading folders…"}):S?s.jsx("div",{className:"p-3",children:s.jsx(Oe,{variant:"inline",title:"Couldn't load folders",error:E,onRetry:()=>A()})}):s.jsx(wo,{folders:L,selectedId:g,delimiter:z,onSelect:v,onCreateFolder:F,onCancel:_,autoFocusFilter:m,labels:{filterPlaceholder:"Filter folders…",filterAriaLabel:"Filter folders"}}),C=I&&s.jsx("div",{className:"shrink-0 border-t border-line p-2",children:s.jsx(K,{variant:"primary",onClick:w,className:"h-11 w-full font-semibold",children:`Move to ${I.label}`})});return m?s.jsxs("div",{ref:b,className:"relative inline-block",children:[N,s.jsx(Ci,{open:d,align:"end",panelRef:f,getAnchor:R,children:s.jsxs("div",{id:p,ref:f,className:M("w-72 max-h-96 flex flex-col","bg-surface border border-line rounded-md shadow-lg"),children:[$,C]})})]}):s.jsxs(s.Fragment,{children:[N,s.jsx(Ye.Root,{open:d,onOpenChange:B=>B?x(!0):_(),children:s.jsxs(Ye.Portal,{children:[s.jsx(Ye.Overlay,{className:"fixed inset-0 z-40 bg-black/40"}),s.jsxs(Ye.Content,{className:"fixed inset-x-0 bottom-0 z-50 flex flex-col rounded-t-lg bg-canvas pb-[env(safe-area-inset-bottom,0px)]",style:{maxHeight:"85dvh"},id:p,children:[s.jsx(Ye.Handle,{className:"mx-auto mt-2 mb-1 h-1.5 w-12 rounded-full bg-fg-subtle/30"}),s.jsx(Ye.Title,{className:"px-4 py-2 text-base font-semibold border-b border-line",children:"Move to folder"}),s.jsx("div",{className:"flex min-h-0 flex-1 overflow-hidden",children:$}),C]})]})})]})},fu=({messageId:e,threadId:t,mailboxId:n,isRead:a,accountId:r,fromAddressId:o,isTrusted:i=!1,showRaw:l=!1,onToggleRaw:d})=>{const x=le(),g=fi(),{pushError:v}=ye(),m=mi()?.messageId,{mutate:b,isPending:f}=me({...Bt(),onMutate:async R=>{const P=R.body.isRead??!0,N=new Set(R.body.messageIds??[]),$=Ae({path:{threadId:t}}),C=Ce([n]);await Promise.all([x.cancelQueries({queryKey:$}),kt(x,C)]);const B=x.getQueriesData({queryKey:$}).filter(G=>G[1]!==void 0).map(([G,Y])=>({queryKey:G,data:Y})),U=jt(x,C);return x.setQueriesData({queryKey:$},G=>G&&{...G,items:_t(G.items,N,P)}),wt(x,C,G=>_t(G,N,P)),{threadMessagesPrefix:$,listPrefixes:C,previousThreadMessages:B,previousThreadsList:U}},onError:(R,P,N)=>{if(N){for(const C of N.previousThreadMessages)x.setQueryData(C.queryKey,C.data);yt(x,N.previousThreadsList)}const $=P.body.isRead??!0;v({title:$?"Couldn't mark as read":"Couldn't mark as unread",detail:Me(R),error:R})},onSettled:(R,P,N,$)=>{$&&(x.invalidateQueries({queryKey:$.threadMessagesPrefix}),Ne(x,$.listPrefixes))}}),u=c.useCallback(R=>{m&&R.includes(m)&&g()},[m,g]),{deleteMessages:h,isPending:p}=Yt({mailboxId:n,threadId:t,onAfterOptimisticRemove:u}),{moveMessages:j,isPending:y}=Vt({mailboxId:n,threadId:t,accountId:r,onAfterOptimisticRemove:u}),{toggleTrusted:k,isPending:S,error:E,reset:A}=ba({messageId:e}),O=()=>{b({body:{messageIds:[e],isRead:!1}})},F=()=>{h([e])},L=()=>{o&&k(o,i)},z=f||p||y||S,I=z||!o,_=c.useCallback(R=>{j([e],R)},[j,e]),w=o?void 0:"Sender has no parseable address";return s.jsxs("div",{className:"flex flex-col items-end gap-1",children:[s.jsxs("div",{className:"flex items-center gap-1",children:[r&&s.jsx(qs,{accountId:r,currentMailboxId:n,onMove:_,disabled:z,label:"Move this message"}),s.jsxs(pi,{trigger:s.jsx(Si,{className:"size-4"}),children:[s.jsxs(At,{onClick:L,disabled:I,children:[i?s.jsx(qt,{className:"size-4 text-positive"}):s.jsx(Ze,{className:"size-4 opacity-0"}),s.jsx("span",{title:w,children:"Trusted sender"})]}),a&&s.jsxs(At,{onClick:O,disabled:z,children:[s.jsx(Fs,{className:"size-4"}),"Mark as unread"]}),d&&s.jsxs(At,{onClick:d,children:[s.jsx(Oa,{className:"size-4"}),l?"Show formatted":"Show raw email"]}),s.jsx(hi,{}),s.jsxs(At,{onClick:F,disabled:z,destructive:!0,children:[s.jsx(bt,{className:"size-4"}),"Delete"]})]})]}),E&&s.jsx("div",{className:"w-64",children:s.jsx(Oe,{variant:"inline",title:"Couldn't update trust",error:E,onRetry:()=>{A(),L()}})})]})},mu=e=>e==="link-expired"||e==="not-ready";class ys extends Error{reason;status;constructor(t,n,a){super(n),this.name="AttachmentFetchError",this.reason=t,this.status=a}}const pu="x-remit-403-reason",hu="expired",gu=(e,t)=>{if(t?.trim()===hu)return"link-expired";const n=Bi(e,t);return n==="auth"?"auth":n==="body-missing"?"missing":"generic"},xu=300*1e3,Fn=async(e,t)=>{const n={},a=await t();a&&(n.Authorization=`Bearer ${a}`);const r=await No(e,{headers:n,signal:AbortSignal.timeout(xu)});if(r.status===202)throw new ys("not-ready","Attachment is still being fetched from the mail server",202);if(!r.ok)throw new ys(gu(r.status,r.headers.get(pu)),`Failed to download attachment (${r.status} ${r.statusText})`,r.status);return r.blob()},bu=(e,t,n)=>{switch(e){case"auth":return{title:"Your session expired",detail:`Sign in again, then download ${t} once more. Other parts of the app may also stop responding until you do.`};case"link-expired":return{title:"This download link expired and could not be renewed",detail:`Reload the page, then download ${t} again. If that keeps failing, this is worth reporting.`};case"missing":return{title:"This attachment is missing from storage",detail:"Remit has the message but not the file. Re-sync the account from Settings, then try again."};case"not-ready":return{title:"Still fetching this attachment",detail:"Remit is downloading it from the mail server now. Try again in a few seconds."};default:return{title:"Couldn't download this attachment",detail:n}}},On=e=>e instanceof ys?e.reason:"generic",vu=e=>e instanceof Error?e.message:typeof e=="string"?e:"An unexpected error occurred while downloading this attachment.",yu=(e,t,n)=>{if(e!=="auth")return ca(da({title:`Bug: attachment download failed (${e})`,errorMessage:`Downloading "${t}" failed: ${n}`}))},ku=(e,t)=>{const n=URL.createObjectURL(e),a=document.createElement("a");a.href=n,a.download=t,a.rel="noopener",document.body.append(a),a.click(),a.remove(),setTimeout(()=>URL.revokeObjectURL(n),0)},ju=e=>{const t=e.toUpperCase();return t==="OCTET-STREAM"?"FILE":t},wu=e=>{const t=e.toLowerCase().replace(/[^a-z0-9]/g,"");return t.length>0?`attachment.${t}`:"attachment"},zn=e=>e.filter(t=>!t.isMultipart&&t.disposition===Co.Attachment&&t.contentUrl.length>0).map(t=>({bodyPartId:t.bodyPartId,filename:Ti(t.dispositionFilename??"",wu(t.mediaSubtype)),typeLabel:ju(t.mediaSubtype),sizeOctets:t.sizeOctets,contentUrl:t.contentUrl})),_n={status:"idle"},Nu=({messageId:e,bodyParts:t,hasAttachment:n=!1,className:a})=>{const{getToken:r}=ua(),o=le(),[i,l]=c.useState({}),d=c.useMemo(()=>zn(t??[]),[t]),x=So({path:{messageId:e}}),g=f=>Fn(f.contentUrl,r).catch(u=>{if(!mu(On(u)))throw u;return o.refetchQueries({queryKey:x}).then(()=>{const h=o.getQueryData(x),p=h?zn(h.bodyParts).find(j=>j.bodyPartId===f.bodyPartId):void 0;return Fn(p?.contentUrl??f.contentUrl,r)})}),v=(f,u)=>l(h=>({...h,[f]:u})),m=f=>{const u=d.find(h=>h.bodyPartId===f);if(!u)throw new Error(`No attachment part ${f} on message ${e}`);v(f,{status:"downloading"}),g(u).then(h=>{ku(h,u.filename),v(f,_n)}).catch(h=>{const p=On(h),j=vu(h),{title:y,detail:k}=bu(p,u.filename,j);v(f,{status:"failed",title:y,detail:k,reportUrl:yu(p,u.filename,j)})})},b=n&&t!==void 0&&d.length===0;return s.jsx(Kc,{className:a,attachments:d.map(f=>({attachmentId:f.bodyPartId,filename:f.filename,typeLabel:f.typeLabel,sizeOctets:f.sizeOctets,download:i[f.bodyPartId]??_n})),onDownload:m,hasUnlistedAttachment:b})},hr=e=>e.status===To.active&&e.syncStatus===Io.failed;function Cu({threadMessage:e,accountId:t,className:n}){const a=hr(e),{deleteMessages:r,isPending:o}=Yt({mailboxId:e.mailboxId,threadId:e.threadId,accountId:t,messages:[e]}),i=c.useCallback(()=>{r([e.messageId])},[r,e.messageId]),l=c.useMemo(()=>a?ca(da({title:Os.delete_failed.title,errorMessage:`Message ${e.messageId}: status=${e.status} syncStatus=${e.syncStatus}`})):void 0,[a,e.messageId,e.status,e.syncStatus]);return a?s.jsx($c,{settlement:"delete_failed",onRetry:i,retryPending:o,reportHref:l,className:n}):null}const Su=({messageId:e,threadId:t,mailboxId:n,accountId:a,isRead:r,isStarred:o,onToggleStar:i,fromAddressId:l,isTrusted:d,showRaw:x,onToggleRaw:g,onReply:v,onReplyAll:m,onForward:b})=>{const f=le(),{deleteMessages:u}=Yt({mailboxId:n,threadId:t}),{moveMessages:h}=Vt({mailboxId:n,threadId:t,accountId:a}),{toggleTrusted:p}=ba({messageId:e}),{mutate:j}=me({...Bt(),onSettled:()=>{f.invalidateQueries({queryKey:Ae({path:{threadId:t}})}),Ne(f,Ce([n]))}}),y=c.useCallback(A=>{h([e],A)},[h,e]),k=c.useCallback(()=>{u([e])},[u,e]),S=c.useCallback(()=>{j({body:{messageIds:[e],isRead:!r}})},[j,e,r]),E=[];return l&&E.push({key:"trusted",label:d?"Trusted sender":"Mark sender trusted",icon:d?s.jsx(qt,{className:"size-4 text-positive"}):s.jsx(Ze,{className:"size-4"}),onSelect:()=>p(l,d)}),g&&E.push({key:"raw",label:x?"Show formatted":"Show raw email",icon:s.jsx(Oa,{className:"size-4"}),onSelect:g}),s.jsx(Xa,{hasThread:!0,onReply:v,onReplyAll:m,onForward:b,isStarred:o,onToggleStar:i,onDelete:k,isRead:r,onToggleRead:S,overflowItems:E,moveSlot:a?s.jsx(qs,{accountId:a,currentMailboxId:n,onMove:y,label:"Move this message"}):void 0})},Tu=()=>s.jsxs("div",{className:"animate-pulse space-y-2",role:"status","aria-label":"Loading raw email",children:[s.jsx("div",{className:"h-4 bg-surface-sunken rounded w-full"}),s.jsx("div",{className:"h-4 bg-surface-sunken rounded w-11/12"}),s.jsx("div",{className:"h-4 bg-surface-sunken rounded w-5/6"}),s.jsx("div",{className:"h-4 bg-surface-sunken rounded w-3/4"})]}),Iu=({messageId:e,enabled:t=!0})=>{const{data:n,isLoading:a,isError:r,error:o,refetch:i}=J({...Eo({path:{messageId:e}}),enabled:t});if(a)return s.jsx("div",{className:"message-body",children:s.jsx(Tu,{})});if(r)return s.jsx("div",{className:"message-body",children:s.jsx(Oe,{variant:"inline",title:"Couldn't load the raw email",error:o,onRetry:()=>i()})});const l=n?.raw??"";return l===""?s.jsx("div",{className:"message-body",children:s.jsx("p",{className:"text-fg-muted text-sm italic",children:"No raw source available for this message."})}):s.jsx("div",{className:"message-body",children:s.jsx("pre",{className:"email-text whitespace-pre-wrap break-words text-sm leading-relaxed bg-surface-sunken rounded-md p-3 max-h-[32rem] overflow-auto",children:l})})},Eu=()=>s.jsx(qt,{className:"inline-block size-4 ml-1 -mt-0.5 text-positive align-middle","aria-label":"Trusted sender","data-testid":"trusted-sender-badge"}),gr=(e,t)=>({id:e.messageId,fromName:e.fromName??e.fromEmail??"?",fromEmail:e.fromEmail??"",toLabel:"",dateLabel:t,snippet:e.snippet||"",bodyHtml:""}),xr=({isStarred:e,onToggleStar:t,isStarPending:n,hoverReveal:a})=>s.jsx("button",{type:"button",onClick:r=>{r.stopPropagation(),t()},disabled:n,"aria-label":e?"Remove star":"Add star",className:M("shrink-0 p-0.5 rounded transition-colors",e?"text-warning":M("text-fg-subtle hover:text-warning",a&&"opacity-0 group-hover:opacity-100 focus:opacity-100"),n&&"opacity-50"),children:s.jsx(et,{className:M("size-3.5",e&&"fill-current")})}),Ru=({threadMessage:e,isFocused:t,onToggle:n,onToggleStar:a,isStarPending:r})=>{const o=Na(e.sentDate,"datetime"),i=gr(e,o);return s.jsx(Ja,{message:i,onClick:n,isFocused:t,isUnread:!e.isRead,trailing:s.jsxs(s.Fragment,{children:[e.hasAttachment&&s.jsx(Qt,{className:"size-3 shrink-0 text-fg-subtle",role:"img","aria-label":"Has an attachment"}),s.jsx(xr,{isStarred:e.hasStars,onToggleStar:a,isStarPending:r,hoverReveal:!0}),s.jsx("span",{"data-testid":"message-date",className:"shrink-0 text-2xs text-fg-subtle tabular-nums",children:o})]})})},Mu=({threadMessage:e,messageData:t,isLoading:n,isError:a,error:r,onRetry:o,isFocused:i,onToggle:l,onToggleStar:d,isStarPending:x,accountId:g,showRaw:v,onToggleRaw:m,mobile:b,onReply:f,onReplyAll:u,onForward:h})=>{const p=Na(e.sentDate,"long"),j=!e.isRead,y=t?.envelope.from[0]?.flags?.trusted?.value===!0,k=t?.envelope.from[0]?.addressId,S=gr(e,p),E=e.autoMoved||e.spamReport?s.jsx(ou,{accountId:g,messageId:e.messageId,threadId:e.threadId,mailboxId:e.mailboxId,autoMoved:e.autoMoved,spamReport:e.spamReport}):null;return s.jsx(Za,{message:S,isFocused:b?!1:i,onHeaderClick:l,senderBadge:y?s.jsx(Eu,{}):void 0,trailing:s.jsx("span",{"data-testid":"message-date",className:"text-2xs text-fg-subtle",children:p}),to:t?s.jsx(ac,{label:"To",addresses:t.envelope.to}):null,indicators:E||!b?s.jsxs("div",{className:"flex flex-wrap items-center gap-1.5 mt-0.5",children:[E,!b&&s.jsxs(s.Fragment,{children:[s.jsx("div",{className:"flex items-center justify-end gap-1",children:s.jsx(xr,{isStarred:e.hasStars,onToggleStar:d,isStarPending:x})}),j&&s.jsx("span",{className:"size-1.5 rounded-full bg-accent","aria-label":"Unread"})]})]}):void 0,actionMenu:b?void 0:s.jsx(fu,{messageId:e.messageId,threadId:e.threadId,mailboxId:e.mailboxId,isRead:e.isRead,accountId:g,fromAddressId:k,isTrusted:y,showRaw:v,onToggleRaw:m}),actionBar:b?s.jsx(Su,{messageId:e.messageId,threadId:e.threadId,mailboxId:e.mailboxId,accountId:g,isRead:e.isRead,isStarred:e.hasStars,onToggleStar:d,fromAddressId:k,isTrusted:y,showRaw:v,onToggleRaw:m,onReply:f,onReplyAll:u,onForward:h}):void 0,body:s.jsxs(s.Fragment,{children:[s.jsx(Cu,{threadMessage:e,accountId:g,className:"mt-3"}),n?s.jsxs("div",{className:"mt-3 animate-pulse space-y-2",children:[s.jsx("div",{className:"h-4 bg-surface-sunken rounded w-full"}),s.jsx("div",{className:"h-4 bg-surface-sunken rounded w-3/4"}),s.jsx("div",{className:"h-4 bg-surface-sunken rounded w-1/2"})]}):a&&Ro(r)?s.jsx("div",{className:"mt-3",children:s.jsx(wa,{message:"This message has been deleted"})}):a?s.jsx("div",{className:"mt-3",children:s.jsx(Oe,{variant:"inline",title:"Couldn't load this message",error:r,onRetry:o})}):v?s.jsx("div",{className:"mt-3",children:s.jsx(Iu,{messageId:e.messageId})}):s.jsxs("div",{className:"mt-3",children:[s.jsx(Ri,{bodyParts:t?.bodyParts,messageId:e.messageId,fromAddressId:t?.envelope.from[0]?.addressId,isTrusted:y,category:dr(e.category)}),s.jsx(Nu,{messageId:e.messageId,bodyParts:t?.bodyParts,hasAttachment:e.hasAttachment,className:"mt-4"})]})]})})},Au=({threadMessage:e,isExpanded:t,isFocused:n,onToggle:a,onToggleStar:r,isStarPending:o,accountId:i,mobile:l,onReply:d,onReplyAll:x,onForward:g})=>{const[v,m]=c.useState(!1),{data:b,isLoading:f,isError:u,error:h,refetch:p}=J({...Ut({path:{messageId:e.messageId}}),enabled:t,meta:{softError:!0}});return t?s.jsx(Mu,{threadMessage:e,messageData:b,isLoading:f,isError:u,error:h,onRetry:()=>p(),isFocused:n,onToggle:a,onToggleStar:r,isStarPending:o,accountId:i,showRaw:v,onToggleRaw:()=>m(j=>!j),mobile:l,onReply:d,onReplyAll:x,onForward:g}):s.jsx(Ru,{threadMessage:e,isFocused:n,onToggle:a,onToggleStar:r,isStarPending:o})},$u=()=>s.jsxs("div",{className:"animate-pulse p-4",children:[s.jsx("div",{className:"h-6 bg-surface-sunken rounded w-3/4 mb-5"}),s.jsx("div",{className:"space-y-4",children:Array.from({length:2}).map((e,t)=>s.jsxs("div",{className:"flex gap-3 py-3",children:[s.jsx("div",{className:"size-10 bg-surface-sunken rounded-full shrink-0"}),s.jsxs("div",{className:"flex-1",children:[s.jsx("div",{className:"h-4 bg-surface-sunken rounded w-32 mb-2"}),s.jsx("div",{className:"h-3 bg-surface-sunken rounded w-48"})]})]},t))})]}),zp=({threadId:e,mailboxId:t,subject:n,selectedMessageId:a,authenticity:r,onOpenIntelligence:o,onBack:i,onSwipeNext:l,onSwipePrevious:d,mobileIntelligenceOpen:x,listOnScreen:g=!1})=>{const v=Es(),{handlers:m}=Gd({onSwipeLeft:l,onSwipeRight:d}),{accountId:b}=Bs(t),{data:f,isLoading:u,isError:h,error:p,refetch:j}=J({...fa({path:{threadId:e}})}),y=c.useMemo(()=>f?.items??[],[f?.items]),k=y[y.length-1],S=c.useMemo(()=>[...y].reverse(),[y]),E=c.useRef(new Map),[A,O]=c.useState(new Set),[F,L]=c.useState(null),[z,I]=c.useState(0);c.useEffect(()=>{if(y.length>0&&e!==F){L(e);const H=new Set([y[y.length-1].threadMessageId]);if(a){const Q=y.find(ae=>ae.messageId===a);Q&&H.add(Q.threadMessageId)}O(H),I(0)}},[e,y,F,a]);const _=c.useCallback(H=>{O(Q=>{const ae=new Set(Q);return ae.has(H)?ae.delete(H):ae.add(H),ae})},[]),w=c.useCallback(H=>{const Q=S[H];if(!Q)return;E.current.get(Q.threadMessageId)?.scrollIntoView({behavior:"smooth",block:"nearest"})},[S]),R=c.useCallback(()=>{if(S.length===0)return;const H=Math.min(z+1,S.length-1);I(H),w(H)},[S.length,z,w]),P=c.useCallback(()=>{if(S.length===0)return;const H=Math.max(z-1,0);I(H),w(H)},[S.length,z,w]),N=c.useCallback(()=>{const H=S[z];H&&_(H.threadMessageId)},[S,z,_]);Kd({messages:y,expandedIds:A,threadId:e,mailboxId:t,accountId:b});const{toggleStar:$,isPending:C,pendingMessageId:B}=cr({threadId:e,mailboxId:t,messages:y}),U=Mo(),G=Ao(),Y=a??k?.messageId,Z=c.useCallback((H,Q)=>{Q&&G({threadId:e,messageId:Q,mode:H})},[G,e]),ne=c.useCallback(()=>Z("reply",Y),[Z,Y]),ce=c.useCallback(()=>Z("reply-all",Y),[Z,Y]),pe=c.useCallback(()=>Z("forward",Y),[Z,Y]),te=c.useRef(null),he=U?.kind==="reply"?`${U.mode}:${U.sourceMessageId}`:void 0;if(c.useEffect(()=>{he&&te.current?.scrollIntoView({behavior:"smooth",block:"start"})},[he]),Di({enabled:!u&&y.length>0&&U===void 0,bindings:[...g?[]:[{key:"j",action:"focusNext",handler:R,preventDefault:!0},{key:"ArrowDown",action:"focusNext",handler:R,preventDefault:!0},{key:"k",action:"focusPrevious",handler:P,preventDefault:!0},{key:"ArrowUp",action:"focusPrevious",handler:P,preventDefault:!0},{key:"Enter",action:"openFocused",handler:N,preventDefault:!0},{key:"o",action:"openFocused",handler:N,preventDefault:!0}],{key:"r",action:"reply",handler:ne,preventDefault:!0},{key:"R",action:"replyAll",handler:ce,noModifiers:!1,preventDefault:!0},{key:"f",action:"forward",handler:pe,preventDefault:!0}]}),u)return s.jsx($u,{});if(h)return s.jsx("div",{className:"flex h-full items-center justify-center",children:s.jsx(Oe,{title:U?"Couldn't load this conversation, so there is nothing to answer":"Couldn't load this conversation",error:p,onRetry:()=>j()})});if(y.length===0)return s.jsx("div",{className:"flex h-full items-center justify-center p-4",children:U?s.jsx(Oe,{variant:"inline",title:"There is nothing here to answer",error:"This conversation has no messages left. Another mail client may have moved or deleted them."}):s.jsx(wa,{message:"No messages in this thread"})});const de=n||y[0]?.subject||"(No subject)",ge=y.length,ue=H=>s.jsx("div",{"data-testid":"conversation-messages",children:S.map((Q,ae)=>s.jsx("div",{ref:Ke=>{Ke&&E.current.set(Q.threadMessageId,Ke)},children:s.jsx(Au,{threadMessage:Q,isExpanded:A.has(Q.threadMessageId),isFocused:ae===z,onToggle:()=>_(Q.threadMessageId),onToggleStar:()=>$(Q.messageId,Q.hasStars),isStarPending:C&&B===Q.messageId,accountId:b,mobile:H,onReply:H?()=>Z("reply",Q.messageId):void 0,onReplyAll:H?()=>Z("reply-all",Q.messageId):void 0,onForward:H?()=>Z("forward",Q.messageId):void 0})},Q.threadMessageId))}),q=U&&s.jsx("div",{ref:te,children:U.kind==="reply"?s.jsx(Pd,{surface:U}):s.jsx("div",{className:"border-b border-line bg-canvas p-4",children:s.jsx(Oe,{variant:"inline",title:"That is not a way to answer a message",error:`"${U.segment}" is not reply, reply-all or forward.`})})}),re=s.jsxs("header",{className:"border-b border-line px-5 pt-5 pb-3",children:[s.jsx("h1",{className:"max-w-2xl text-lg font-semibold leading-snug text-fg",children:de}),s.jsxs("p",{className:"mt-1 text-2xs text-fg-subtle",children:[ge," ",ge===1?"message":"messages"]})]});return v?s.jsxs("article",{className:"h-full flex flex-col",children:[re,r?.dkimMismatch&&s.jsx(An,{authenticity:r,onOpenIntelligence:o}),s.jsxs("div",{className:"min-h-0 flex-1 overflow-auto",children:[q,ue(!1)]})]}):s.jsxs(Uc,{thread:{subject:de,messages:[]},onBack:i??(()=>{}),intelligenceOpen:x,onToggleIntelligence:o,touchHandlers:m,children:[r?.dkimMismatch&&s.jsx(An,{authenticity:r,onOpenIntelligence:o}),q,ue(!0)]})},Lu=e=>hr(e)?{settlement:"delete_failed"}:{},Pu="a[href], button, input, select, textarea, [tabindex]",Du=e=>{if(e.tabIndex<0||e.hasAttribute("disabled")||e.getAttribute("aria-disabled")==="true"||e.closest("[inert], [hidden], [aria-hidden='true']"))return!1;const t=getComputedStyle(e);return t.display!=="none"&&t.visibility!=="hidden"},Un=e=>{const t=e.querySelectorAll('[role="dialog"][aria-modal="true"]');return[...(t[t.length-1]??e).querySelectorAll(Pu)].filter(Du)},Fu=({isOpen:e,onClose:t,children:n,ariaLabel:a="Navigation",side:r="left",widthClassName:o="w-[80vw] max-w-[320px]",answers:i})=>{const l=c.useRef(null),d=c.useRef(null);if(Rs({id:"drawer",open:e,answers:{back:t,...i}}),c.useEffect(()=>{if(!e)return;d.current=document.activeElement;const g=m=>{if(m.key!=="Tab"||!l.current)return;const b=document.activeElement;if(!(b instanceof HTMLElement)||!l.current.contains(b))return;const f=Un(l.current);if(f.length===0)return;const u=f[0],h=f[f.length-1],p=f.includes(b);if(m.shiftKey){(!p||b===u)&&(m.preventDefault(),h.focus());return}(!p||b===h)&&(m.preventDefault(),u.focus())};document.addEventListener("keydown",g),l.current&&Un(l.current)[0]?.focus();const v=document.body.style.overflow;return document.body.style.overflow="hidden",()=>{document.removeEventListener("keydown",g),document.body.style.overflow=v,d.current?.focus()}},[e]),!e)return null;const x=r==="left"?"left-0 border-r animate-in slide-in-from-left duration-150":"right-0 border-l animate-in slide-in-from-right duration-150";return s.jsxs("div",{className:"fixed inset-0 z-50",role:"dialog","aria-modal":"true","aria-label":a,children:[s.jsx("button",{type:"button","aria-label":"Close menu",onClick:t,className:"absolute inset-0 bg-black/40 animate-in fade-in duration-150 cursor-default"}),s.jsxs("div",{ref:l,className:M("safe-area-frame absolute top-0 bottom-0 bg-canvas border-line shadow-xl flex flex-col",o,x),children:[s.jsx("div",{className:"flex items-center justify-end h-12 px-2 border-b border-line shrink-0",children:s.jsx("button",{type:"button",onClick:t,className:"p-2 rounded-md hover:bg-surface-raised transition-colors min-h-11 min-w-11 inline-flex items-center justify-center","aria-label":"Close menu",children:s.jsx(_e,{className:"size-5"})})}),s.jsx("div",{className:"flex-1 overflow-y-auto",children:n})]})]})},br=()=>{const{data:e}=J({...tt(),staleTime:1/0});return e?.semanticSearchEnabled},Ou=10,vr=e=>({q:e?.toLowerCase()??"",limit:Ou}),zu=(e,t)=>{if(!t)return;const n=t.toLowerCase();return e?.find(a=>a.normalizedEmail===n)};function _u(e){const t=new Date(e),n=new Date;return t.toDateString()===n.toDateString()?"today":Fi(t,{month:"short",year:"numeric"})}function yr(e){if(!e)return!0;const[,t]=e.split("@");return t?!t.includes("."):!0}const Uu="We can't verify the sender of this email, which could mean it's from an insecure source.",Bu="We couldn't read this sender's address, so we can't confirm who really sent this message.";function Ku(e,t){const n=e.category??"personal";return{value:Lo(n)?n:"uncategorized",overridden:t?.flags?.category?.value!=null&&t.flags.category.value!==e.category}}function Hu(e,t){return{name:e.fromName??e.fromEmail??"Unknown",email:e.fromEmail??"",trust:e.senderTrust,firstSeenLabel:t?_u(t.createdAt):"unknown",inboundCount:t?.inboundCount,replyCount:t?.replyCount,addressUnverified:yr(e.fromEmail)}}function qu(e){return e?.flags?{vip:e.flags.vip?.value===!0,muted:e.flags.muted?.value===!0,blocked:e.flags.blocked?.value===!0,unsubscribed:e.flags.unsubscribed?.value===!0}:{}}function Bn(e){if(e.fromName&&e.fromName!==e.fromEmail)return e.fromName}function Qu(e){return e.length===1?e[0]:`${e.slice(0,-1).join(", ")} and ${e[e.length-1]}`}function Gu(e,t){const n=[],a=e.displayNameCorrespondence;t&&(a===ns.Unrelated?n.push(`The name it shows, "${t}", has nothing to do with ${e.fromDomain}.`):a===ns.Lookalike?n.push(`The name it shows, "${t}", only looks like ${e.fromDomain}.`):a===ns.ForeignAddress&&n.push(`The name it shows, "${t}", is an address ${e.fromDomain} cannot send from.`));const r=Wu(e.offDomainLinkDomains);return r.length>0&&n.push(`Its links go to ${Qu(r.slice(0,3))}.`),n}function Wu(e){return Array.isArray(e)?e.filter(t=>typeof t=="string"&&t.length>0):[]}function Vu(e,t){const n=t>0?t:void 0;if(yr(e.fromEmail))return{verdict:"mismatch",fromDomain:"",addressUnreadable:!0,summary:Bu,similarCount:n};const a=e.authenticity;if(!a)return{verdict:"caution",fromDomain:e.fromEmail?.split("@")[1]??"",summary:Uu};if(!a.dkimMismatch){const x=Bn(e),g=Gu(a,x);return g.length>0?{verdict:"caution",fromDomain:a.fromDomain,dkimDomain:a.dkimDomain,claimedBrand:x,summary:g.join(" ")}:{verdict:"aligned",fromDomain:a.fromDomain,dkimDomain:a.dkimDomain,summary:a.dkimDomain?`This message was signed by ${a.dkimDomain}.`:"Nothing looks unusual about this sender."}}const r=a.fromDomain,o=a.dkimDomain,i=Bn(e),l=o?`it was actually sent from ${o}`:"its signature failed to verify",d=i?`The display name claims "${i}", but ${l}${o?` — not ${r}`:""}. Real senders use their own address.`:`This message claims to be from ${r}, but ${l}.`;return{verdict:"mismatch",fromDomain:r,dkimDomain:o,claimedBrand:i,summary:d,similarCount:n}}function Yu(e,t){const n=e?.fromEmail??null,a=e?.subject??"",{data:r,error:o}=J({...Ms({query:vr(n??void 0)}),enabled:!!n,staleTime:3e4}),i=zu(r?.items,n??void 0),l=br(),d=[a,n].filter(Boolean).join(" "),{data:x,isLoading:g,error:v}=J({...$o({query:{query:d,limit:5}}),enabled:!!(e&&d.length>3)&&l===!0,staleTime:6e4,retry:1});return{data:c.useMemo(()=>{if(!e)return null;const b=(x?.items??[]).filter(j=>j.messageId!==e.messageId).map(j=>({id:j.messageId,threadId:j.threadId,mailboxId:t!=null&&j.mailboxIds.includes(t)?t:j.mailboxIds[0]??"",fromName:j.fromName??"",subject:j.subject??"(No subject)",timeLabel:j.sentDate!=null?nt(j.sentDate*1e3):"",matched:j.matchedChunkType})),f=Hu(e,i),u=Vu(e,b.length),h=Ku(e,i),p=qu(i);return{sender:f,authenticity:u,category:h,flags:p,similar:b}},[e,i,x,t]),isSimilarLoading:g,similarError:v,similarErrorIsFatal:tn(v),semanticEnabled:l,addressErrorIsFatal:tn(o),addressId:i?.addressId,address:i}}function Xu(e,t){const n={...e??{}};for(const[a,r]of Object.entries(t))r==null?delete n[a]:n[a]={...r,setAt:r.setAt??Date.now()};return n}function Ju({addressId:e,senderEmail:t}){const n=le(),{pushError:a}=ye(),r=Po({query:vr(t)}),{mutate:o,isPending:i}=me({...Do(),onMutate:async d=>{const x=d.body.flags??{};await n.cancelQueries({queryKey:r});const g=n.getQueryData(r);return n.setQueryData(r,v=>v&&{...v,items:v.items.map(m=>m.addressId===d.path.addressId?{...m,flags:Xu(m.flags,x)}:m)}),{previous:g}},onError:(d,x,g)=>{g?.previous!==void 0&&n.setQueryData(r,g.previous),a({title:"Couldn't update sender preference",detail:Me(d),error:d})},onSettled:()=>{n.invalidateQueries({queryKey:r})}});return{updateFlags:c.useCallback(d=>{if(!e){Fo(new Error(`Quick action fired but the sender's address record did not resolve (sender: ${t??"unknown"}). This should never happen — the address row exists.`));return}o({path:{addressId:e},body:{flags:d}})},[e,o,t]),isPending:i}}const _p=e=>e==="vip"?"A sender you know":e==="wellknown"?"You've emailed them before":"Passed authentication",Zu=e=>e.senderTrust!=="vip"&&e.senderTrust!=="wellknown"?!1:e.authenticity?.dkimMismatch!==!0;function Up(e,t){e.recordEvent("rescue.candidates_surfaced",{count:String(t)})}function Bp(e,t){e.recordEvent("rescue.flow_opened",{count:String(t)})}function Kp(e,t){e.recordEvent("rescue.committed",{selected:String(t.selected),total:String(t.total),destination:t.toInbox?"inbox":"other"})}function ef(e,t){e.recordEvent("rescue.sent_to_junk",{count:String(t.count),senderTrust:t.senderTrust,wasRescuable:String(t.wasRescuable)})}const tf=["personal","newsletter","marketing","automated","transactional","social"],sf=e=>e.spamReport?"notSpam":"reportSpam",nf=e=>{const{similarError:t,similarErrorIsFatal:n,isSimilarLoading:a,semanticEnabled:r}=e;return r===!1?"off":t&&!n?"error":a?"loading":"ready"};function af(){return s.jsxs("aside",{className:"flex h-full w-full flex-col bg-surface-sunken",children:[s.jsxs("header",{className:"flex h-pane-header shrink-0 items-center gap-1.5 border-b border-line px-row-inset",children:[s.jsx(Ue,{className:"size-3.5 text-fg-subtle"}),s.jsx("span",{className:"text-2xs font-semibold uppercase tracking-wider text-fg-subtle",children:"Intelligence"})]}),s.jsxs("div",{className:"flex-1 animate-pulse space-y-4 p-4",children:[s.jsxs("div",{className:"space-y-2",children:[s.jsx("div",{className:"h-2.5 rounded bg-surface w-1/4"}),s.jsxs("div",{className:"flex gap-3",children:[s.jsx("div",{className:"size-10 rounded-full bg-surface shrink-0"}),s.jsxs("div",{className:"flex-1 space-y-1.5",children:[s.jsx("div",{className:"h-3 rounded bg-surface w-3/4"}),s.jsx("div",{className:"h-2.5 rounded bg-surface w-1/2"})]})]})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx("div",{className:"h-2.5 rounded bg-surface w-1/4"}),s.jsx("div",{className:"h-8 rounded bg-surface"})]}),s.jsxs("div",{className:"space-y-2",children:[s.jsx("div",{className:"h-2.5 rounded bg-surface w-1/4"}),s.jsx("div",{className:"flex gap-1.5 flex-wrap",children:Array.from({length:5}).map((e,t)=>s.jsx("div",{className:"h-6 w-16 rounded bg-surface"},t))})]})]})]})}function rf({isOpen:e,current:t,onSelect:n,onCancel:a}){return e?s.jsxs("div",{className:"fixed inset-0 z-50 flex items-center justify-center",children:[s.jsx(zo,{label:"Dismiss reclassify sender",onDismiss:a,className:"backdrop-blur-sm"}),s.jsxs("div",{role:"dialog","aria-modal":"true","aria-label":"Reclassify sender",className:"relative z-10 w-full max-w-sm rounded-sm border border-line bg-surface p-6 shadow-lg",children:[s.jsx("h2",{className:"text-lg font-semibold",children:"Reclassify this sender"}),s.jsx("p",{className:"mt-2 text-sm text-fg-muted",children:"Set a category override for future messages from this sender."}),s.jsx("div",{className:"mt-4 flex flex-col gap-1",children:tf.map(r=>s.jsxs("button",{type:"button",onClick:()=>n(r),className:`flex min-h-11 items-center justify-between rounded px-3 text-left text-sm capitalize transition-colors hover:bg-surface-raised ${r===t?"font-semibold text-accent":"text-fg"}`,children:[r,r===t&&s.jsx("span",{className:"text-2xs text-fg-subtle",children:"current"})]},r))}),s.jsx("div",{className:"mt-6 flex justify-end",children:s.jsx("button",{type:"button",onClick:a,className:"inline-flex min-h-11 items-center justify-center rounded border border-line px-4 text-sm font-medium transition-colors hover:bg-surface-raised",children:"Cancel"})})]})]}):null}function of({thread:e,onClose:t,mailboxId:n,accountId:a,hideCloseButton:r,onAfterOptimisticRemove:o}){const{data:i,addressId:l,isSimilarLoading:d,similarError:x,similarErrorIsFatal:g,semanticEnabled:v}=Yu(e,n),[m,b]=c.useState(!1),f=e.fromEmail??void 0,{updateFlags:u}=Ju({addressId:l,senderEmail:f}),{reportSpam:h,notSpam:p,isReporting:j,isRestoring:y}=mr({mailboxId:e.mailboxId,threadId:e.threadId,accountId:a,onAfterOptimisticRemove:o}),k=Oo(),S=sf(e),E=c.useCallback(()=>{p([e.messageId])},[p,e.messageId]),A=c.useCallback(()=>{ef(k,{count:1,senderTrust:e.senderTrust,wasRescuable:Zu(e)}),h([e.messageId])},[h,e,k]),O=c.useCallback(()=>{},[]),F=c.useCallback(()=>{const N=i?.flags?.vip!==!0;u({vip:{value:N}})},[i?.flags?.vip,u]),L=c.useCallback(()=>{const N=i?.flags?.muted!==!0;u({muted:{value:N}})},[i?.flags?.muted,u]),z=c.useCallback(()=>{const N=i?.flags?.unsubscribed!==!0;u({unsubscribed:{value:N}})},[i?.flags?.unsubscribed,u]),I=c.useCallback(N=>{b(!1),u({category:{value:N}})},[u]),_=l!==void 0,w={onToggleVip:_?F:void 0,onToggleMute:_?L:void 0,onToggleUnsubscribe:_?z:void 0,onReclassify:_?()=>b(!0):void 0,onNotSpam:S==="notSpam"?E:void 0,onReportSpam:S==="reportSpam"?A:void 0},R=({mailboxId:N,threadId:$,messageId:C,className:B,ariaLabel:U,children:G})=>s.jsx(ma,{to:"/mail/$mailboxId/$threadId/$messageId",params:{mailboxId:N,threadId:$,messageId:C},search:Y=>Y,variant:"row",className:B,"aria-label":U,children:G});if(!i)return s.jsx(af,{});const P=nf({similarError:x,similarErrorIsFatal:g,isSimilarLoading:d,semanticEnabled:v});return s.jsxs(s.Fragment,{children:[s.jsx(Ha,{data:i,onClose:t,hideCloseButton:r,onShowSimilar:O,actions:w,similarState:P,similarLinkComponent:R,reportSpamPending:j,notSpamPending:y,className:"border-l-0 h-full w-full"}),s.jsx(rf,{isOpen:m,current:i.category.value,onSelect:I,onCancel:()=>b(!1)})]})}const lf=({onClose:e,thread:t,mailboxId:n,accountId:a,hideCloseButton:r,onAfterOptimisticRemove:o})=>t?s.jsx(of,{thread:t,onClose:e,mailboxId:n,accountId:a,hideCloseButton:r,onAfterOptimisticRemove:o}):s.jsxs("aside",{className:"flex h-full w-full flex-col bg-surface-sunken",children:[s.jsxs("header",{className:"flex h-pane-header shrink-0 items-center gap-1.5 border-b border-line px-row-inset",children:[s.jsx(Ue,{className:"size-3.5 text-fg-subtle"}),s.jsx("span",{className:"text-2xs font-semibold uppercase tracking-wider text-fg-subtle",children:"Intelligence"})]}),s.jsxs("div",{className:"flex flex-1 flex-col items-center justify-center px-row-inset text-center",children:[s.jsx(Ue,{className:"size-8 text-fg-subtle"}),s.jsx("p",{className:"mt-3 text-sm text-fg-muted",children:"Intelligence"}),s.jsx("p",{className:"mt-1 text-2xs text-fg-subtle",children:"Sender trust, authenticity and similar messages will appear here."})]})]});function Hp({isOpen:e,onClose:t,thread:n,mailboxId:a,accountId:r,onAfterOptimisticRemove:o}){return s.jsx(Fu,{isOpen:e,onClose:t,ariaLabel:"Message details",side:"right",answers:{toggleIntelligence:t},children:s.jsx(lf,{onClose:t,thread:n,mailboxId:a,accountId:r,hideCloseButton:!0,onAfterOptimisticRemove:o})})}const cf=e=>{const{trashByAccount:t,hasAppointments:n,isError:a}=su();return c.useMemo(()=>{const r=Oi({targets:e,trashByAccount:t,hasAppointments:n,isError:a}),o=i=>i.accountId?t.get(i.accountId):void 0;return{outcome:r,staleFolderLabel:e.map(o).find(i=>i?.source==="Stale")?.staleFolderPath,guessedMailboxId:r==="unconfirmed"?e.find(i=>o(i)?.mailboxId===i.mailboxId)?.mailboxId:void 0}},[e,t,n,a])},df={delete:(e,t)=>`Deleting ${e} of ${t}…`,move:(e,t)=>`Moving ${e} of ${t}…`,markRead:(e,t)=>`Marking ${e} of ${t} as read…`},uf={delete:"moved to Trash",move:"moved",markRead:"marked as read"},kr=(e,t)=>e==="delete"&&zi(t)?"permanently deleted":uf[e],ff={delete:"couldn't be deleted",move:"couldn't be moved",markRead:"couldn't be marked as read"},mf={delete:"Couldn't delete these messages",move:"Couldn't move these messages",markRead:"Couldn't mark these messages as read"},pf={delete:"The delete didn't finish.",move:"The move didn't finish.",markRead:"The update didn't finish."},qp=(e,t,n)=>df[e](Be(t),Be(n)),hf=(e,t,n="trash")=>`${Be(t)} ${kr(e,n)}. Your mail server is still catching up.`,gf=e=>`Stopped after ${Be(e)}`,xf=(e,t,n,a="trash")=>`${Be(t)} of ${Be(n)} ${kr(e,a)}. Nothing was sent for the rest, so they are untouched.`,bf=(e,t)=>t>0?`Stopped after ${Be(t)} — some messages ${ff[e]}`:mf[e],vf=e=>pf[e],Qp=e=>e==="delete"?"danger":"info",Gp=(e,t,n,a)=>n.error!==void 0?null:n.cancelled?{severity:"warning",title:gf(n.done),detail:xf(e,n.done,t,a)}:{severity:"info",title:hf(e,n.done,a)},yf=100,kf=(e,t)=>e.kind==="move"?[t,e.destinationMailboxId]:[t],jf=({mailboxId:e,accountId:t,enabled:n,predicateKey:a,searchQuery:r})=>{const[o,i]=c.useState({kind:"idle"}),[l,d]=c.useState(void 0),[x,g]=c.useState(void 0),v=c.useRef(!1),m=c.useRef(!1),b=le(),{pushError:f}=ye(),{requestAppointment:u}=Is(),h=c.useRef(async()=>({done:0,failedIds:[],cancelled:!1}));c.useEffect(()=>{m.current||(v.current=!0),i({kind:"idle"})},[n,a]);const p=c.useRef(r);p.current=r;const j=c.useCallback(L=>async z=>{const{data:I}=await sn({path:{mailboxId:e},query:{...L,continuationToken:z,limit:yf},throwOnError:!0});return{ids:(I.items??[]).map(_=>_.messageId),continuationToken:I.continuationToken}},[e]),y=c.useCallback(async()=>{const{data:L}=await sn({path:{mailboxId:e},query:{...p.current,count:!0,results:!1},throwOnError:!0});if(L.count===void 0)throw new Error("the search returned no count for the selection");return L.count},[e]),k=c.useCallback(L=>async z=>{if(L.kind==="move"){const{data:_}=await _o({body:{messageIds:z,destinationMailboxId:L.destinationMailboxId},throwOnError:!0});return _}if(L.kind==="markRead"){const{data:_}=await Uo({body:{messageIds:z,isRead:!0},throwOnError:!0});return _}const{data:I}=await Bo({body:{messageIds:z},throwOnError:!0});return I},[]),S=c.useCallback((L,z)=>{Ne(b,Ce(kf(L,e)));const I=new Set;t&&I.add(t);for(const _ of z)_.accountId&&I.add(_.accountId);for(const _ of I)b.invalidateQueries({queryKey:st({path:{accountId:_}})})},[b,e,t]),E=c.useCallback(()=>{v.current=!1,i({kind:"counting"}),y().then(L=>{if(v.current){i({kind:"idle"});return}i({kind:"escalated",total:L})},L=>{f(nn("Couldn't count matching messages","The count didn't finish.",L)),i({kind:"idle"})})},[y,f]),A=c.useCallback(()=>{v.current=!0},[]),O=c.useCallback(()=>{m.current||(v.current=!0,i({kind:"idle"}))},[]),F=c.useCallback(async(L,z)=>{v.current=!1,m.current=!0,d(L);const I=z?.length??(o.kind==="escalated"?o.total:0),_=$=>g(zd($)),w=k(L),R=j(p.current);let P;try{P=z!==void 0?await lr(z,w,_,()=>v.current):await Od(R,o.kind==="escalated"?o.total:0,w,_,()=>v.current)}finally{m.current=!1}d(void 0),g(void 0),i({kind:"idle"});const N=P.error?aa(P.error):void 0;return N?u({accountId:N.accountId,role:N.role,reason:N.reason,action:{kind:"delete",count:I},onAppointed:async()=>{await h.current(L,z)}}):P.error&&f(nn(bf(L.kind,P.done),vf(L.kind),P.error)),P.done>0&&S(L,z??[]),P},[k,j,o,f,S,u]);return h.current=F,{phase:o,escalate:E,stop:A,clear:O,isRunning:l!==void 0,runningAction:l,progress:x,runAction:F}},wf=120,Nf=({keyboardFocusedMessageId:e,openMessageId:t,enabled:n,open:a,delayMs:r=wf})=>{const o=c.useRef(a);o.current=a;const i=c.useRef(void 0);c.useEffect(()=>{const l=e;if(!n){i.current=l;return}if(l===void 0||l===t)return;if(l===i.current){i.current=void 0;return}const d=setTimeout(()=>o.current(l),r);return()=>clearTimeout(d)},[n,e,t,r])},jr="This account has no Junk folder appointed, so there is nowhere to file these. Appoint one under Settings › Folder roles.",Cf="These are already in Junk, so there is nowhere to file them.",Sf=(e,t)=>e!==void 0&&e!==t?e:void 0,Wp=(e,t)=>{if(Sf(e,t)===void 0)return e===void 0?jr:Cf};function Tf(e,t){if(e.length!==0)return t!==void 0&&e.includes(t)?t:e[0]}const If={title:"",navSlot:null,titleMeta:null,searchSlot:null,searchField:null,searchResults:null,makeFilterSlot:null},ks=c.createContext(If),wr=()=>c.useContext(ks),Ef=({isOpen:e,messageIds:t,outcome:n,accountId:a,trashFolderLabel:r,staleFolderLabel:o,guessedMailboxId:i,isDeleting:l=!1,onConfirm:d,onCancel:x})=>{const{Account:g}=ua(),{requestAppointment:v}=Is(),m=t.length,b=()=>d([...t]),f=_i(m,n,{trashFolderLabel:r,staleFolderLabel:o});if(n==="noTrash"||n==="staleTrash"||n==="unconfirmed"){const u=n==="noTrash"?"none":n==="staleTrash"?"stale":"unconfirmed";return s.jsx($t,{isOpen:e,...f,onConfirm:()=>{if(!a)return b();const h=[...t];x(),v({accountId:a,role:"Trash",reason:u,action:{kind:"delete",count:m},staleFolderLabel:o,trashFolderLabel:r,guessedMailboxId:i,onAppointed:async()=>d(h)})},onCancel:x})}return n==="unavailable"?s.jsx(g,{fallback:s.jsx($t,{isOpen:e,...f,confirmLabel:"Reload reader",onConfirm:()=>window.location.reload(),onCancel:x}),children:({signOut:u})=>s.jsx($t,{isOpen:e,...f,onConfirm:()=>u(),onCancel:x})}):s.jsx($t,{isOpen:e,...f,destructive:!0,isBusy:l||n==="unknown",onConfirm:b,onCancel:x})},Nr=8,Cr=e=>e==="From"||e==="FromDomain",Rf=e=>({value:e.email,label:e.displayName??e.email,...e.displayName?{hint:e.email}:{},...e.fromSelection?{source:"selected"}:{}}),Mf=e=>{const t=rr(e.email);if(t!==null)return{value:t,...e.fromSelection?{source:"selected"}:{}}},Af=(e,t)=>e.value.toLowerCase().includes(t)||(e.label??"").toLowerCase().includes(t),$f=(e,t,n)=>{if(!Cr(e))return[];const a=t.trim().toLowerCase(),r=new Set,o=[];for(const i of n){if(i.email.trim()==="")continue;const l=e==="From"?Rf(i):Mf(i);if(!l)continue;const d=l.value.toLowerCase();if(!(d===""||r.has(d))&&(r.add(d),d!==a&&!(a!==""&&!Af(l,a))&&(o.push(l),o.length===Nr)))break}return o},Lf=250,Pf=2,Df=(e,t,n)=>{const a=t.trim(),r=Ta(a,Lf),o=e!==void 0&&Cr(e),{data:i}=J({...Ms({query:{q:r,limit:Nr}}),enabled:o&&r.length>=Pf});if(!o||e===void 0)return[];const l=[...n.map(d=>({email:d,fromSelection:!0})),...(i?.items??[]).map(d=>({email:d.normalizedEmail,...d.displayName?{displayName:d.displayName}:{}}))];return $f(e,a,l)},Sr=12,Ff=e=>{const{envelope:t}=e,n=t.from[0];return{id:t.messageId,sender:n?or({normalizedEmail:n.normalizedEmail,displayName:n.displayName}):"Unknown",subject:t.subject??"(No subject)",date:nt(t.date)}},Of=(e,t)=>{const n=e!==void 0&&t!==void 0,{data:a,isLoading:r}=J({...Ko({path:{mailboxId:e??""},query:{...t,limit:Sr}}),enabled:n,staleTime:3e4});return{messages:(a?.items??[]).map(zf),isPending:n&&r}},zf=e=>({id:e.messageId,sender:e.fromName||e.fromEmail||"Unknown",subject:e.subject??"(No subject)",date:nt(e.sentDate)}),_f=e=>$s({queries:e.slice(0,Sr).map(t=>({...Ut({path:{messageId:t}}),staleTime:Number.POSITIVE_INFINITY})),combine:t=>({messages:t.map(n=>n.data).filter(n=>n!==void 0).map(Ff),isPending:t.some(n=>n.isPending)})}),Uf=e=>({matchOperator:"Or",literalClauses:Wt(e)}),Bf=(e,t,n)=>{const a=me(Ho()),{mutate:r,reset:o}=a,[i,l]=c.useState(!1),d=c.useMemo(()=>Gt(n),[n]),x=c.useCallback(()=>{!e||!t||(l(!1),r({path:{accountId:e},body:ln({anchorMessageId:t,matchOperator:"And",literalClauses:[]})}))},[e,t,r]),g=c.useCallback(()=>{l(!1),o()},[o]),v=a.data,m=v?.semanticUnavailable===!0&&!i&&d.length>0;c.useEffect(()=>{!m||!e||(l(!0),r({path:{accountId:e},body:ln(Uf(d))}))},[m,e,d,r]);const b=i||(v?.semanticUnavailable??!1),f=a.isPending||m,u=i?{matchOperator:"Or",literalClauses:Wt(d)}:{...t?{anchorMessageId:t}:{},matchOperator:"And",literalClauses:[]};return{preview:x,reset:g,matchedCount:f?void 0:v?.matchedCount,messageIds:f?void 0:v?.messageIds,semanticUnavailable:b,senderFallback:i,senders:d,matchPredicate:u,isPending:f,isError:a.isError,error:a.error}},Kf=()=>[qo({path:{mailboxId:""}}),Qo({path:{mailboxId:""}}),Go()].map(e=>[{_id:e[0]._id}]),Hf=e=>gi(e)?e.pages:xi(e)?[e]:[],qf=e=>typeof e=="object"&&e!==null&&typeof e.messageId=="string",Qf=(e,t)=>{const n=new Set(t),a=new Map;for(const r of e)for(const o of Hf(r))for(const i of o.items){if(!qf(i)||!n.has(i.messageId))continue;const l=i.subject?.trim();l&&a.set(i.messageId,l)}return t.map(r=>a.get(r)).filter(r=>r!==void 0)},Gf=e=>{const t=le(),n=e.join("\0");return c.useMemo(()=>{const a=Kf().flatMap(r=>t.getQueriesData({queryKey:r}).map(([,o])=>o));return Qf(a,e)},[t,n])},Wf=new Set(["hasAttachment","isUnread","isRead","isStarred","category","before","after"]),Vf=e=>Wf.has(e),Yf=(e,{searchHadSemanticReach:t})=>{const n=[],a=[];let r,o;for(const d of e.tokens){if(d.type==="from"){n.push({field:"From",value:d.value});continue}if(d.type==="subject"){n.push({field:"Subject",value:d.value});continue}if(d.type==="in"){r={mailboxId:d.mailboxId,label:d.value};continue}if(d.type==="account"){o=d.accountId;continue}Vf(d.type)&&a.push({type:d.type,label:va(d)})}const i=e.freeText.trim(),l=i.length>0;return l&&n.push({field:"HasWords",value:i}),{clauses:n,matchOperator:"all",scopedOut:r,droppedFacets:a,targetAccountId:o,keptTerms:l,droppedSemantic:l&&t}},Xf=(e,t,n)=>e.targetAccountId??t??n[0]?.accountId,Jf=({failure:e,isStarting:t,isRunning:n,isDone:a,failedCount:r,ruleSaved:o})=>e?.kind==="restartFailed"?"backApplyRestartFailed":e?.kind==="startFailed"?o?"backApplyStartFailed":"commitFailed":a?r>0?"backApplyFailed":"backApplyComplete":e?.kind==="statusUnreadable"?"statusUnknown":t||n?"backApplyRunning":"saving",Zf=e=>{if(e.runState==="statusUnknown")return{kind:"refreshStatus"};if(e.isEscalated)return{kind:"rerunEscalated"};if(e.committedScope==="standing"||e.committedScope==="temporary")return e.createFilterFailed?{kind:"resetAndResend"}:e.backApplyPending?{kind:"startBackApply"}:{kind:"waitOnJob"};if(e.committedScope==="all-like-these"&&e.widenRunsAsJob)return{kind:"resend"};const t=new Set(e.failedIds);return{kind:"rerunBulk",targets:t.size>0?e.sent.filter(n=>t.has(n.id)):e.sent}},em=e=>e!==void 0&&e.outcome===void 0&&e.failureReason===void 0,tm=(e,t)=>{if(e){e.stop();return}t()},sm=(e,t)=>e==="run"?t.dismiss:t.cancel,nm={clauses:[],matchOperator:"any"},am={clauses:[],matchOperator:"all",droppedFacets:[],keptTerms:!1,droppedSemantic:!1},rm=[],om=(e,t,n)=>({verb:"organize",accountId:Xf(e,t.accountId,n),selection:rm,selectionRestriction:void 0,escalated:void 0,searchConversion:e}),Fe={state:"saving",matched:0,applied:0,failed:0,failures:[]},us=(e,t)=>e.map((n,a)=>({...n,id:`${t}-${a}`})),Kn=(e,t,n)=>{if(e==="delete")return{kind:"delete"};if(e==="markRead")return{kind:"markRead"};const a=e==="junk"?n:t;return a?{kind:"move",destinationMailboxId:a}:void 0},fs=e=>e==="move"||e==="junk"||e==="organize",Hn=e=>e==="junk"?jr:"No destination was chosen, so there is nowhere to file these. Go back and pick a folder.";function im({verb:e,accountId:t,mailboxId:n,selection:a,selectionRestriction:r,escalated:o,escalatedProgress:i,searchConversion:l,onFinished:d,onRunEnded:x,step:g,goToStep:v,goBack:m,closeWizard:b}){const[f]=c.useState(()=>l),[u]=c.useState(()=>o),h=f!==void 0,[p,j]=c.useState(h?"properties":"selected"),y=u?"escalated":p,[k,S]=c.useState(()=>f?{clauses:us(f.clauses,"search"),matchOperator:f.matchOperator}:nm),[E,A]=c.useState(void 0),[O,F]=c.useState(void 0),[L,z]=c.useState(!1),[I,_]=c.useState(void 0),[w,R]=c.useState(void 0),[P,N]=c.useState(),$=c.useRef(!1),C=c.useRef(!1),B=c.useMemo(()=>a.map(T=>T.id),[a]),U=c.useMemo(()=>a.map(T=>({id:T.id,accountId:T.accountId})),[a]),G=c.useMemo(()=>a.map(T=>T.email).filter(Boolean),[a]),Y=B[0],Z=Gf(B),{junkMailboxId:ne}=ur(t),ce=Bf(u?void 0:t,Y,G),{preview:pe}=ce;c.useEffect(()=>{pe()},[pe]);const te=y==="similar"||y==="properties",he=c.useMemo(()=>({matchOperator:k.matchOperator==="all"?"And":"Or",literalClauses:k.clauses.map(T=>({field:T.field,value:T.value}))}),[k.clauses,k.matchOperator]),de=y==="similar"?ce.matchPredicate:he,{count:ge,matchedIds:ue}=el(te?t:void 0,de),q=_f(te?ue:[]),re=Of(u?n:void 0,u?.searchQuery),H=u?{status:"ready",count:u.total}:te?ge:{status:"ready",count:a.length},{data:Q}=J({...vt({path:{accountId:t??""}}),enabled:!!t,staleTime:Number.POSITIVE_INFINITY}),ae=fr(t),Ke=ra(),rt=c.useMemo(()=>ia({mailboxes:Q?.items??[],folderAppointments:ae,currentMailboxId:n,translator:Ke}),[Q?.items,ae,n,Ke]),{createFolderIn:Xt}=oa(t),ot=rt.find(T=>T.id===k.moveMailboxId)?.label,it=kd(a.map(T=>({normalizedEmail:T.email,displayName:T.sender}))),lt=Ed({match:y==="properties"&&k.clauses[0]?.value.trim()||void 0,sender:it?or(it):void 0,folder:ot}),W=c.useMemo(()=>({...k,name:k.name??lt}),[k,lt]),St=Df(E?.draft.field,E?.draft.value??"",G),fe=tl(t),ke=sl(t),He=jf({mailboxId:n??"",accountId:t,enabled:!1,predicateKey:"selection-wizard",searchQuery:{}}),{runAction:qe}=He,oe=Yo({verb:e,mode:y,scope:k.scope,fromSearch:h}),X=oe[an(oe,g)],Qe=Xo(t,r),Tt=Jo(y,Qe),xe=(T=>{if(T==="folder")return Qe.destination;if(T==="rule")return W.scope==="standing"||W.scope==="until"?Tt:void 0})(X)??Zo(X,W,H),It=c.useCallback(()=>us(Id(G,Z),"seed"),[G,Z]),Et=c.useCallback(T=>{j(T),S(D=>({...D,widen:T==="similar"&&Y?{anchorCount:Math.max(a.length,1)}:void 0,...T==="properties"&&D.clauses.length===0?{clauses:It()}:{}}))},[Y,a.length,It]),Le=c.useCallback(()=>{z(!0),j("properties"),S(T=>({...T,widen:void 0,clauses:us(Wt(G),"sender"),matchOperator:"any"})),v("properties")},[G,v]),Ge=br()===!1,Se=Ge||ce.semanticUnavailable||ce.isError;c.useEffect(()=>{X==="match"&&(y!=="similar"||!Se||L||Le())},[X,y,Se,L,Le]);const ie=c.useCallback(()=>{A({mode:"add",draft:{field:"From",value:""}})},[]),je=c.useCallback(T=>{const D=k.clauses.find(V=>V.id===T);D&&A({mode:"edit",clauseId:T,draft:{field:D.field,value:D.value}})},[k.clauses]),$r=c.useCallback(T=>{S(D=>({...D,clauses:D.clauses.filter(V=>V.id!==T)}))},[]),Lr=c.useCallback(T=>{A(D=>D&&{...D,draft:T})},[]),Pr=c.useCallback(()=>{A(T=>{if(!T)return;const D=nl(T.draft.field,T.draft.value),V={...T.draft,value:D};S(We=>({...We,clauses:T.clauseId?We.clauses.map(ct=>ct.id===T.clauseId?{...ct,...V}:ct):[...We.clauses,{id:crypto.randomUUID(),...V}]}))})},[]),Dr=c.useCallback(()=>{if(xe){F(X);return}F(void 0);const T=oe[an(oe,X)+1];T&&v(T)},[xe,X,oe,v]),Zt=c.useCallback(async T=>{const D=Kn(e,W.moveMailboxId,ne);if(!D){R({matched:T.length,sent:T,failureReason:Hn(e)});return}R({matched:T.length,sent:T});const V=await qe(D,T);R({matched:T.length,sent:T,outcome:V}),C.current&&x?.(D.kind,T.length,V)},[e,W.moveMailboxId,ne,qe,x]),es=c.useCallback(async()=>{if(!u)return;const T=Kn(e,W.moveMailboxId,ne);if(!T){R({matched:u.total,sent:[],failureReason:Hn(e)});return}R({matched:u.total,sent:[]});const D=await u.run(T);R({matched:u.total,sent:[],outcome:D}),C.current&&x?.(T.kind,u.total,D)},[u,e,W.moveMailboxId,ne,x]),{start:Rt}=fe,{createFilterAsync:Ws}=ke,Mt=c.useCallback(()=>{if(u){es();return}const T=al({mode:p,ruleScope:W.scope}),D=rl({mode:p,ruleScope:W.scope,anchorMessageId:Y,clauses:W.clauses,matchOperator:W.matchOperator,moveMailboxId:W.moveMailboxId,until:W.until});if(_(T),T==="standing"||T==="temporary"){const V=ol(D)?D:void 0;N(V),Ws(D,T,(W.name??"").trim()).then(We=>{We&&V&&Rt(V)});return}if(T==="all-like-these"&&fs(e)){Rt(D);return}Zt(T==="just-these"?U:ue.map(V=>({id:V,accountId:t})))},[u,es,p,W,Y,e,t,U,ue,Ws,Rt,Zt]),Fr=c.useCallback(()=>{if(xe){F(X);return}$.current||($.current=!0,v("run"),Mt())},[xe,X,v,Mt]),Vs=c.useCallback(T=>{const D=fe.progress,V=Jf({failure:fe.failure,isStarting:fe.isStarting,isRunning:fe.isRunning,isDone:fe.isDone,failedCount:D.failedCount,ruleSaved:T});return V==="saving"||V==="commitFailed"||V==="backApplyStartFailed"?{...Fe,state:V}:{state:V,matched:D.matchedCount,applied:D.appliedCount,failed:V==="backApplyFailed"||V==="backApplyRestartFailed"?D.failedCount:0,failures:[]}},[fe]),Ys=c.useMemo(()=>{const T=new Map;for(const D of[...a,...q.messages,...re.messages])T.set(D.id,D);return T},[a,q.messages,re.messages]),Xs=u?i:He.progress,Js=c.useCallback(()=>{if(!w)return Fe;const{matched:T,outcome:D,failureReason:V}=w;if(V!==void 0)return{...Fe,state:"commitFailed",failureReason:V};if(!D){const Ve=Xs?.done??0;return{state:"backApplyRunning",matched:Math.max(T,Ve),applied:Ve,failed:0,failures:[]}}if(!(D.cancelled||D.error!==void 0))return{state:"backApplyComplete",matched:Math.max(T,D.done),applied:D.done,failed:0,failures:[]};if(D.done===0)return{...Fe,state:"commitFailed"};const ct=D.failedIds.map(Ve=>Ys.get(Ve)).filter(Ve=>Ve!==void 0),Ur=D.failedIds.length>0?D.failedIds.length:Math.max(T-D.done,1);return{state:"runStopped",matched:Math.max(T,D.done),applied:D.done,failed:Ur,failures:ct}},[w,Xs,Ys]),Pe=u?Js():I==="standing"||I==="temporary"?ke.isError?{...Fe,state:"commitFailed"}:ke.isSuccess?P?Vs(!0):{...Fe,state:"filterSaved"}:Fe:I==="all-like-these"&&fs(e)?Vs(!1):Js(),Or=()=>{const T=Zf({runState:Pe.state,isEscalated:u!==void 0,committedScope:I,createFilterFailed:ke.isError,backApplyPending:P!==void 0,widenRunsAsJob:fs(e),failedIds:w?.outcome?.failedIds??[],sent:w?.sent??U});switch(T.kind){case"refreshStatus":fe.refreshStatus();return;case"rerunEscalated":es();return;case"resetAndResend":ke.reset(),Mt();return;case"resend":Mt();return;case"startBackApply":P&&Rt(P);return;case"waitOnJob":return;case"rerunBulk":Zt(T.targets);return}},zr=c.useCallback(()=>{b(oe,X)},[b,oe,X]),ts=c.useCallback(()=>{C.current=!0,b(oe,X),d()},[b,oe,X,d]),{stop:Zs}=He,_r=c.useCallback(()=>{tm(u,Zs)},[u,Zs]);Ld({shouldBlockFn:({action:T})=>T!=="BACK"?!1:(ts(),!0),enableBeforeUnload:!1,disabled:X!=="run"});const ss={messages:u?re.messages:te?q.messages:a,count:H,label:y==="selected"?"Your selection":"A sample of what matches",emptyReason:y==="similar"&&Se?"notIndexed":"noMatch",loading:u?re.isPending:te&&(H.status==="loading"||q.isPending)};return s.jsx(ei,{verb:e,steps:oe,step:X,blockedReason:xe,nudged:O===X,onBack:m,onExit:sm(X,{dismiss:ts,cancel:zr}),onContinue:Dr,onCommit:Fr,match:{selectedCount:a.length,mode:y,accountId:Qe.accountId,onModeChange:Et,semanticUnavailable:Se,semanticOff:Ge,semanticErrorDetail:ce.error instanceof Error?ce.error.message:void 0,semanticFallbackTaken:L,onSemanticFallback:Le,escalatedScope:u?.scope,sample:ss},properties:{clauses:W.clauses,matchOperator:W.matchOperator,onMatchOperatorChange:T=>S(D=>({...D,matchOperator:T})),clauseEdit:E,onStartAddClause:ie,onStartEditClause:je,onRemoveClause:$r,onChangeDraft:Lr,onSubmitClause:Pr,onCancelClause:()=>A(void 0),clauseFields:il,clauseSuggestions:St,conversionNotice:f?Md(f):void 0,semanticFallbackTaken:L,sample:{...ss,label:"What this matches"}},folder:{folders:rt,mailboxId:W.moveMailboxId,delimiter:la(Q?.items??[]),onSelect:T=>S(D=>({...D,moveMailboxId:T})),onCreateFolder:t?Xt:void 0,restriction:Qe.destination},rule:{draft:W,onScopeChange:T=>S(D=>({...D,scope:T})),onUntilChange:T=>S(D=>({...D,until:T})),restriction:Tt},name:{name:W.name??"",onNameChange:T=>S(D=>({...D,name:T})),nudged:O===X},review:{verb:e,mode:y,selectedCount:a.length,clauses:W.clauses,matchOperator:W.matchOperator,folder:ot,scope:W.scope,until:W.until,ruleName:oe.includes("name")?W.name:void 0,escalatedScope:u?.scope,sample:ss},run:{state:Pe.state,verb:e,scope:W.scope,matched:Pe.matched,applied:Pe.applied,failedCount:Pe.failed,failures:Pe.failures,failureReason:Pe.failureReason,onRetry:Or,onDismiss:ts,onCancelRun:em(w)?_r:void 0}})}function Vp(e){const t=Wo()==="search",{searchConversion:n}=wr(),{accounts:a}=Kt(),{step:r,goToStep:o,goBack:i,closeWizard:l}=Vo(t?"properties":"match");if(Rs({id:"selection-wizard",open:r!==void 0}),!r)return null;const d=t?n??am:void 0;return s.jsx(im,{...e,...d?om(d,e,a):{},step:r,goToStep:o,goBack:i,closeWizard:l})}const lm=[],Qs=c.createContext(null),cm=e=>{const t=c.useContext(Qs);return t?t.rowInteraction(e):null},dm=()=>{const e=c.useContext(Qs);if(!e)throw new Error("useThreadListSelection must be used inside <ThreadListInteraction>");return e},um="[data-message-id]",fm=e=>Array.from(e.querySelectorAll(um)).map(t=>t.dataset.messageId).filter(t=>t!==void 0),mm=(e,t)=>e.length===t.length&&e.every((n,a)=>n===t[a]),pm=e=>{const[t,n]=c.useState([]);return c.useEffect(()=>{const a=e.current;if(!a)return;const r=()=>{const i=fm(a);n(l=>mm(l,i)?l:i)};r();const o=new MutationObserver(r);return o.observe(a,{childList:!0,subtree:!0}),()=>o.disconnect()},[e]),t};function Yp({selectedMessageId:e,rows:t,onOpen:n,onDeleteMessages:a,onSelectionVerb:r,isDeleting:o=!1,commandsRef:i,onTriageContextChange:l,children:d}){const x=Es(),{pushError:g}=ye(),v=c.useRef(null),m=pm(v),b=Ad({orderedIds:m,isDesktop:x,initialFocusedId:e}),{focusedMessageId:f,setFocusedMessageId:u,pendingDomFocusRef:h,cursorMovedByPointerRef:p,selection:j,isMultiSelectMode:y,exitSelection:k,handleRowSelect:S}=b,{selectedIds:E,selectedCount:A,isSelected:O,toggle:F,select:L,toggleAll:z}=j,I=m.length>0&&m.every(q=>E.has(q)),_=c.useCallback(()=>{m.length>0&&z(m)},[m,z]),{intersectWith:w}=j;c.useEffect(()=>{w(m)},[w,m]),c.useEffect(()=>{const q=h.current;q!==null&&(h.current=null,v.current?.querySelector(`[data-message-id="${q}"]`)?.focus())});const R=c.useCallback(q=>{p.current=!0,u(q)},[p,u]),P=c.useCallback(q=>{x||L(q)},[x,L]),N=c.useCallback(()=>{f&&n(f)},[f,n]),$=c.useCallback(q=>n(q,{replace:!0}),[n]);Nf({keyboardFocusedMessageId:b.keyboardFocusedMessageId,openMessageId:e,enabled:x&&A===0,open:$});const[C,B]=c.useState(null),{outcome:U,staleFolderLabel:G,guessedMailboxId:Y}=cf(C?.targets??lm),Z=c.useCallback(q=>{if(C!==null)return!0;if(A>0)return r(q),!0;if(q!=="delete"||!f)return!1;const re=t.find(H=>H.id===f);return!re?.mailboxId||!re.accountId?(g({title:"Couldn't delete this message",detail:"This list has lost track of which account and folder it is in, so reader can't tell whether deleting it would move it to Trash or erase it. Nothing was deleted.",action:{label:"Reload the list",href:window.location.href}}),!0):(B({ids:[f],targets:[{accountId:re.accountId,mailboxId:re.mailboxId}]}),!0)},[C,A,r,f,t,g]),ne=c.useCallback(q=>{q.length!==0&&(a(q),B(null),k())},[a,k]),ce=c.useCallback(()=>B(null),[]),pe=c.useCallback(()=>A===0?!1:(k(),!0),[A,k]),te=m.length>0;c.useEffect(()=>{if(i){if(!te){i.current=null;return}return i.current={focusNext:b.focusNext,focusPrevious:b.focusPrevious,focusFirst:b.focusFirst,focusLast:b.focusLast,openFocused:N,toggleSelect:b.toggleFocusedSelection,extendSelectDown:b.extendRangeDown,extendSelectUp:b.extendRangeUp,selectAll:b.selectAllLoaded,clearSelection:pe,requestVerb:Z,toggleDensity:()=>{}},()=>{i.current=null}}},[i,te,b.focusNext,b.focusPrevious,b.focusFirst,b.focusLast,b.toggleFocusedSelection,b.extendRangeDown,b.extendRangeUp,b.selectAllLoaded,N,pe,Z]);const he=c.useMemo(()=>Array.from(E),[E]),de=C!==null;c.useEffect(()=>{l?.({focusedMessageId:f,selectedIds:he,orderedIds:m,hasList:te})},[l,f,he,m,te]);const ge=Tf(m,f),ue=c.useMemo(()=>({selectedIds:E,selectedCount:A,exitSelection:k,startSelectionVerb:r,orderedIds:m,allSelected:I,toggleAllLoaded:_,rowInteraction:q=>({focused:q===f,isTabStop:q===ge,isDesktop:x,onFocusRow:R,selection:{isChecked:O(q),onToggleCheck:F,onRowSelect:S,isMultiSelectMode:y,onLongPress:P}})}),[E,A,k,r,m,I,_,f,ge,x,R,O,F,S,y,P]);return s.jsxs(Qs.Provider,{value:ue,children:[s.jsx("div",{ref:v,className:"contents",children:d}),s.jsx(Ef,{isOpen:de,messageIds:C?.ids??[],outcome:U,accountId:C?.targets[0]?.accountId,staleFolderLabel:G,guessedMailboxId:Y,isDeleting:o,onConfirm:ne,onCancel:ce})]})}function Xp({title:e,isDeleting:t}){const n=wr(),{selectedCount:a,exitSelection:r,startSelectionVerb:o,orderedIds:i,allSelected:l,toggleAllLoaded:d}=dm();return s.jsx(sd,{title:n.title||e,navSlot:n.navSlot,titleMeta:n.titleMeta,searchSlot:n.searchSlot,searchField:n.searchField,idleSlot:n.makeFilterSlot,count:a,onCancel:r,onDelete:()=>o("delete"),onMarkRead:()=>o("markRead"),isBusy:t,selectAll:i.length>0?{checked:l,indeterminate:a>0&&!l,onChange:d}:void 0})}const ms=e=>{e.preventDefault(),e.stopPropagation()},hm=(e,t)=>{const n=c.useRef(!1),a=c.useCallback(i=>{if(n.current=!1,i.button!==0)return;const l=xs(i);bn(l)&&t?.(e,l)&&(ms(i),n.current=!0,i.currentTarget.focus(),l.shiftKey&&window.getSelection()?.removeAllRanges())},[t,e]),r=c.useCallback(i=>{!i.ctrlKey||!t||i.preventDefault()},[t]),o=c.useCallback(i=>{if(n.current)return n.current=!1,ms(i),!0;const l=xs(i);return!bn(l)||!t?.(e,l)?!1:(ms(i),l.shiftKey&&window.getSelection()?.removeAllRanges(),!0)},[t,e]);return{onMouseDown:a,onContextMenu:r,claimClick:o}},gm=({thread:e,active:t=!1,focused:n,isTabStop:a,density:r="comfortable",isDesktop:o,badge:i,selection:l,inListbox:d=!1,link:x,onClick:g,onFocusRow:v})=>{const m=le(),b=e.id,f=cm(b),u=n??f?.focused??!1,h=a??f?.isTabStop??!1,p=l??f?.selection,j=v??f?.onFocusRow,y=o??f?.isDesktop??!0,k=p?.isChecked??!1,S=p?.isMultiSelectMode??!1,E=p?.onToggleCheck,A=p?.onRowSelect,O=p?.onLongPress,F=c.useCallback(C=>{C.preventDefault(),C.stopPropagation(),E?.(b)},[E,b]),L=hm(b,A),z=c.useCallback(C=>{if(!L.claimClick(C)){if(!y){if(S){C.preventDefault(),C.stopPropagation(),E?.(b);return}g?.();return}A?.(b,xs(C)),g?.()}},[L,y,S,E,A,g,b]),I=c.useCallback(()=>{O?.(b)},[O,b]),{longPressProps:_}=Oc({onLongPress:I,accessibilityDescription:k?"Deselect message":"Select message"}),w=c.useCallback(()=>{m.prefetchQuery(Ut({path:{messageId:b}}))},[m,b]),R=c.useCallback(()=>{w(),j?.(b)},[w,j,b]),P=Nt({"data-list-row":"","data-message-row":!0,"data-message-id":b,...d?{role:"option","aria-selected":k}:{},tabIndex:h?0:-1,onClick:z,onMouseDown:L.onMouseDown,onContextMenu:L.onContextMenu,onMouseEnter:w,onFocus:R},y||!p?{}:_),N=M(r==="compact"?Ga({active:t,focused:u}):M("group",zs({active:t,focused:u})),"outline-none focus-visible:ring-2 focus-visible:ring-accent focus-visible:ring-inset",k&&"bg-accent-soft",!y&&"min-h-11 select-none [-webkit-touch-callout:none]"),$=r==="compact"?s.jsx(Wa,{thread:e}):s.jsx(_s,{thread:e,badge:i,selection:p?{checked:k,alwaysVisible:S,onToggle:F}:void 0});return x===void 0?s.jsx("button",{type:"button",...P,className:N,children:$}):s.jsx(ma,{to:"/mail/$mailboxId/$threadId/$messageId",params:{...x,messageId:b},search:C=>C,variant:"row",...P,className:N,children:$})},Jp=c.memo(gm),xm="Open a message first",bm="This conversation hasn't loaded yet",vm="The mailbox list hasn't loaded yet",ym="Couldn't find this mailbox's account — reload to try again",km={reply:"Reply",replyAll:"Reply all",forward:"Forward",delete:"Move to Trash",move:"Move to mailbox",flag:"Star"},Zp=({hasThread:e,messageId:t,intelligenceOpen:n,canToggleIntelligence:a,onToggleIntelligence:r,onReply:o,onReplyAll:i,onForward:l,onDelete:d,onToggleStar:x,isStarred:g,moveContext:v,moveContextLoading:m})=>{const[b,f]=c.useState(null),u=t??null,h=O=>e?O==="move"?v?null:m?vm:ym:{reply:o,replyAll:i,forward:l,delete:d,flag:x}[O]?null:bm:xm,p=b&&b.messageId===u?b:null,j=p?h(p.action):null,y=p?.action==="move"&&p.overThread&&!!v,k=j??(p&&!y?`${km[p.action]} is ready — press it again`:null),S=O=>f({action:O,messageId:u,overThread:e}),E=O=>()=>S(O),A=(O,F)=>F?()=>{f(null),F()}:E(O);return s.jsx(_c,{hasThread:e,isStarred:g,onUnavailable:S,unavailableHint:k,replyTitle:`Reply ${dt("reply")}`,replyAllTitle:`Reply all ${dt("replyAll")}`,forwardTitle:`Forward ${dt("forward")}`,deleteTitle:`Move to Trash ${dt("delete")}`,flagTitle:`Star ${dt("toggleStar")}`,onReply:A("reply",o),onReplyAll:A("replyAll",i),onForward:A("forward",l),onDelete:A("delete",d),onToggleStar:A("flag",x),onMove:E("move"),moveSlot:v?s.jsx(qs,{accountId:v.accountId,currentMailboxId:v.currentMailboxId,onMove:v.onMove,label:"Move to mailbox",defaultOpen:y}):void 0,children:s.jsx(zc,{open:n,enabled:a,onToggle:r})})};function jm(e){const[t,n]=c.useState(null);t!==null&&t!==e&&n(null);const a=e!==null&&t===e,r=c.useCallback(()=>n(null),[]),o=c.useCallback(()=>n(e),[e]),i=c.useCallback(()=>n(a?null:e),[a,e]);return{isOpen:a,open:o,close:r,toggle:i}}const eh=e=>{const{intelligenceOpen:t,onToggleIntelligence:n,onRaiseIntelligence:a}=Kt(),r=pa()?.showIntelligencePane??!1,o=e??null,i=jm(o),l=!r&&i.isOpen,{open:d,toggle:x}=i,g=c.useCallback(()=>{if(r){n();return}x()},[r,n,x]),v=c.useCallback(()=>{!r||t||a()},[r,t,a]),m=c.useCallback(()=>{if(!r){d();return}v()},[r,d,v]);return{canToggle:o!==null,isShowing:o!==null&&(r?t:l),toggle:g,open:m,drawerOpen:l,closeDrawer:i.close,railFits:r,openRail:v}},th=(e,{toggle:t,open:n})=>{c.useEffect(()=>(e.current={toggle:t,open:n},()=>{e.current=null}),[e,t,n])},wm=()=>{const e=le();return c.useCallback(t=>{const n=Ae({path:{threadId:t.threadId}}),r=e.getQueriesData({queryKey:n}).flatMap(([,o])=>o?.items.map(i=>i.messageId)??[]);return r.length>0?r:[t.messageId]},[e])},Nm=[],Tr=e=>{const{data:t}=J({...fa({path:{threadId:e??""}}),enabled:!!e});return t?.items??Nm},sh=(e,t)=>{const n=Tr(e),a=t?n.find(o=>o.messageId===t):void 0,r=n.length>0?n[n.length-1]:void 0;return a??r},nh=({thread:e,isOpen:t=!1,mailboxId:n,accountId:a,onAfterOptimisticRemove:r})=>{const o=n??e?.mailboxId,i=a??e?.accountId,{accountId:l}=Bs(i?void 0:o),d=i??l,x=wm(),{deleteMessages:g}=Yt({mailboxId:o??"",threadId:e?.threadId,accountId:d,onAfterOptimisticRemove:r}),{moveMessages:v}=Vt({mailboxId:o??"",threadId:e?.threadId,accountId:d,onAfterOptimisticRemove:r}),m=Tr(t?e?.threadId:void 0),f=m.find(y=>y.messageId===e?.messageId)?.hasStars??e?.hasStars,{toggleStar:u}=cr({threadId:e?.threadId??"",mailboxId:o??"",messages:m}),h=c.useCallback(()=>{e&&g(x(e))},[e,x,g]),p=c.useCallback(y=>{e&&v(x(e),y)},[e,x,v]),j=c.useCallback(()=>{e&&u(e.messageId,f??!1)},[e,f,u]);return{mailboxId:o,accountId:d,isStarred:f,deleteThread:h,moveThread:p,toggleStar:j}},qn=(e,t,n)=>{if(!t)return null;const a=e.indexOf(t);if(a===-1)return null;const r=n==="next"?a+1:a-1;return r<0||r>=e.length?null:e[r]},ah=()=>{const[e,t]=c.useState(void 0),[n,a]=c.useState([]),[r,o]=c.useState([]),i=c.useRef(null),[l,d]=c.useState(!1),x=c.useCallback(g=>{t(g.focusedMessageId),a(g.selectedIds),g.orderedIds&&o(g.orderedIds),d(g.hasList)},[]);return{listCommandsRef:i,onTriageContextChange:x,focusedMessageId:e,selectedIds:n,orderedIds:r,hasList:l}},rh=({context:e,orderedIds:t,selectedMessageId:n,enabled:a=!0,onClose:r,handlers:o,hasOpenThread:i=!1})=>{const{listCommandsRef:l,hasList:d}=e,x=c.useCallback(()=>{l.current?.clearSelection()||n&&r()},[l,n,r]),{reply:g,replyAll:v,forward:m,...b}=o;return bi({enabled:a,handlers:{...d?{focusNext:()=>l.current?.focusNext(),focusPrevious:()=>l.current?.focusPrevious(),focusFirst:()=>l.current?.focusFirst(),focusLast:()=>l.current?.focusLast(),openFocused:()=>l.current?.openFocused(),toggleSelect:()=>l.current?.toggleSelect(),extendSelectDown:()=>l.current?.extendSelectDown(),extendSelectUp:()=>l.current?.extendSelectUp(),selectAll:()=>l.current?.selectAll(),toggleDensity:()=>l.current?.toggleDensity()}:{},back:x,...b,...i?{}:{reply:g,replyAll:v,forward:m}}}),{goBack:x,nextMessageId:qn(t,n,"next")??void 0,previousMessageId:qn(t,n,"previous")??void 0}},Cm={unread:"unread",flagged:"starred",attachment:"attachments"},Sm=new Set(Object.values(Te)),Ir=e=>Sm.has(e),oh=e=>Ir(e.category)||e.attributes.size>0,ih=e=>{const t={};Ir(e.category)&&(t.category=[e.category]);for(const n of e.attributes){const a=Cm[n];a&&(t[a]=!0)}return t},lh=e=>(e.senderTrust?.length??0)>0||e.dkimMismatch!==void 0?"loaded-pages":"whole-folder",Tm=["category","unread","starred","attachments"],Qn=e=>JSON.stringify(Tm.map(t=>e?.[t]??null)),Im=e=>{if(!Array.isArray(e))return;const[t]=e;if(typeof t!="object"||t===null)return;const n=t.query;if(!(typeof n!="object"||n===null))return n},ch=(e,t)=>{const n=Im(e);return n?Qn(n)===Qn(t):!1},Em=new Map(rd().categories.filter(e=>e.id!=="all").map(e=>[e.id,e.label])),dh=e=>Em.get(e),Rm={sender:"sender",recipient:"recipient",subject:"subject",attachment:"attachment",body:"body",entities:"entities"};function Mm(e){return Rm[e]??e}function uh(e,t){const{folder:n}=As(t,[e.mailboxId]);return{id:e.messageId,sender:e.fromName??e.fromEmail??"Unknown",...e.fromEmail?{senderEmail:e.fromEmail}:{},subject:e.subject??"(No subject)",snippet:e.snippet??"",date:nt(e.sentDate),unread:!e.isRead,flagged:e.hasStars===!0,threadId:e.threadId,mailboxId:e.mailboxId,...n?{folder:n}:{}}}function fh(e,t){const{folder:n}=As(t,e.mailboxId?[e.mailboxId]:[]);return{id:e.id,sender:e.fromName,...e.fromEmail?{senderEmail:e.fromEmail}:{},subject:e.subject,snippet:e.snippet,date:e.timeLabel,unread:!e.isRead,flagged:e.starred===!0,...e.threadId?{threadId:e.threadId}:{},...e.mailboxId?{mailboxId:e.mailboxId}:{},...n?{folder:n}:{}}}function Am(e,t){const{mailboxId:n,folder:a}=As(t,e.mailboxIds);return{id:e.messageId,sender:e.fromName??"Unknown",subject:e.subject??"(No subject)",snippet:"",date:e.sentDate!=null?nt(e.sentDate*1e3):"",threadId:e.threadId,matchedChunkLabel:Mm(e.matchedChunkType),score:e.score,...n?{mailboxId:n}:{},...a?{folder:a}:{}}}function mh(e,t,n){const a=new Set(t),r=[];for(const o of[...e].sort((i,l)=>l.score-i.score))a.has(o.threadId)||(a.add(o.threadId),r.push(Am(o,n)));return r}function $m(e){const t=e.authenticity?.dkimMismatch===!0;return{id:e.messageId,accountId:e.accountId,mailboxId:e.mailboxId,threadId:e.threadId,fromName:e.fromName??e.fromEmail??"Unknown",fromEmail:e.fromEmail??"",subject:e.subject??"(No subject)",snippet:e.snippet??"",timeLabel:nt(e.sentDate),sentDate:e.sentDate,isRead:e.isRead,hasAttachment:e.hasAttachment,starred:e.hasStars===!0,trust:e.senderTrust,category:dr(e.category),suspicious:t,...Lu(e)}}function ph(e,t){return t.some(n=>n.muted===!0)?{kind:"unknown"}:e}function hh(e){return e.filter(t=>t.muted!==!0)}function gh(e,t){const n=new Set,a=[];for(const r of[...e,...t])n.has(r.id)||(n.add(r.id),a.push(r));return a.sort((r,o)=>(o.sentDate??0)-(r.sentDate??0))}const Er=[{id:"personal",label:"Personal",category:Te.personal},{id:"transactional",label:"Transactional",category:Te.transactional},{id:"newsletter",label:"Newsletter",category:Te.newsletter},{id:"marketing",label:"Marketing",category:Te.marketing},{id:"social",label:"Social",category:Te.social},{id:"automated",label:"Automated",category:Te.automated},{id:"uncategorized",label:"Unclassified",category:Te.uncategorized}],xh=Er.map(e=>e.category);function bh(e){const t=new Map(e.map(a=>[a.category,a])),n=[];for(const a of Er){const r=t.get(a.category);!r||!(r.loading||r.failed||r.rows.length>0||r.total.kind==="exact"&&r.total.value>0)||n.push({id:a.id,label:a.label,threads:r.rows,total:r.total,atCap:r.atCap,loading:r.loading,error:r.failed})}return n}function vh(e,t){return e.fromName.toLowerCase().includes(t)||e.fromEmail.toLowerCase().includes(t)||e.subject.toLowerCase().includes(t)||e.snippet.toLowerCase().includes(t)}function Lm(e,t){return t.every(n=>{switch(n.type){case"from":{const a=n.value.toLowerCase();return e.fromEmail.toLowerCase().includes(a)||e.fromName.toLowerCase().includes(a)}case"subject":return e.subject.toLowerCase().includes(n.value.toLowerCase());case"category":return(e.category??"uncategorized")===n.category;case"hasAttachment":return e.hasAttachment===!0;case"isUnread":return!e.isRead;case"isRead":return e.isRead===!0;case"isStarred":return e.starred===!0;case"after":return e.sentDate!=null&&e.sentDate>=n.epochSeconds*1e3;case"before":return e.sentDate!=null&&e.sentDate<n.epochSeconds*1e3;case"in":return e.mailboxId===n.mailboxId;case"account":return e.accountId===n.accountId;default:return!1}})}const Pm=["from","subject","category","unread","starred","attachments"],Dt=e=>e[0],Dm=e=>{const t=Dt(e.filter(l=>l.type==="from").map(l=>l.value)),n=Dt(e.filter(l=>l.type==="subject").map(l=>l.value)),a=Dt(e.filter(l=>l.type==="category").map(l=>l.category)),r=Dt(e.filter(l=>l.type==="isUnread"||l.type==="isRead").map(l=>l.type==="isUnread")),o=e.some(l=>l.type==="isStarred")?!0:void 0,i=e.some(l=>l.type==="hasAttachment")?!0:void 0;return{...t!==void 0?{from:t}:{},...n!==void 0?{subject:n}:{},...a!==void 0?{category:[a]}:{},...r!==void 0?{unread:r}:{},...o!==void 0?{starred:o}:{},...i!==void 0?{attachments:i}:{}}},Fm=(e,t)=>{switch(t.type){case"from":return e.from?.toLowerCase()===t.value.toLowerCase();case"subject":return e.subject?.toLowerCase()===t.value.toLowerCase();case"category":return e.category?.length===1&&e.category[0]===t.category;case"isUnread":return e.unread===!0;case"isRead":return e.unread===!1;case"isStarred":return e.starred===!0;case"hasAttachment":return e.attachments===!0;case"before":case"after":case"in":case"account":return!1}},Gn=(e,t)=>Object.fromEntries(Object.entries(e).filter(([n])=>t.includes(n)));function yh(e,t={},n=Pm){const a=Gn(Dm(e),n),r={...a,...Gn(t,n)};return{params:a,residual:e.filter(o=>!Fm(r,o))}}function kh(e,t,n){if(t.length===0)return e;const a=[...t];return e.filter(r=>{const o=$m(r);return Lm({...o,accountId:o.accountId??n},a)})}const Rr=8;function Gs(e,t){const n=Math.max(0,Math.min(t,e.length)),a=Mi(e).find(o=>n>=o.start&&n<=o.end);if(!a)return{start:n,end:n,raw:""};const r=Ai(a.raw);return r?{start:a.start,end:a.end,raw:a.raw,name:r.name,value:r.value}:{start:a.start,end:a.end,raw:a.raw}}function Om(e,t){const n=Gs(e,t);if(n.name===void 0)return{kind:"token",query:n.raw};const a=ya(n.name);if(a)return{kind:"value",token:a.name,source:a.values,query:n.value??""}}const zm={mailbox:"mailboxes",account:"accounts",contact:"contacts"},_m=(e,t)=>{if(e.values==="fixed")return e.options??[];const n=zm[e.values];return n?t[n]??[]:[]},Um=(e,t)=>{if(t==="")return 1;const n=e.toLowerCase();return n.startsWith(t)?0:n.includes(t)?1:-1},js=(e,...t)=>{let n=-1;for(const a of t){if(a===void 0)continue;const r=Um(a,e);r<0||(n<0||r<n)&&(n=r)}return n},Mr=e=>{const t=new Set;return e.filter(n=>n.rank>=0).sort((n,a)=>n.rank-a.rank).filter(n=>{const a=n.suggestion.value.toLowerCase();return t.has(a)?!1:(t.add(a),!0)}).slice(0,Rr).map(n=>n.suggestion)},Wn=e=>({value:`${e.name}:`,label:`${e.name}:`,hint:e.label});function Bm(e){const t=e.trim().toLowerCase();if(t==="")return on.map(Wn);const n=[];for(const a of on)if(n.push({rank:js(t,`${a.name}:`,a.label),suggestion:Wn(a)}),a.values==="fixed")for(const r of a.options??[]){const o=ka(a.name,r.value);n.push({rank:js(t,o,r.label),suggestion:{value:o,label:r.label??o,hint:o}})}return Mr(n)}function Km(e,t,n){const a=t.trim().toLowerCase(),r=_m(e,n).map(o=>({rank:js(a,o.value,o.label),suggestion:{value:ka(e.name,o.value),label:o.label??o.value,...o.hint?{hint:o.hint}:{}}}));return Mr(r)}function Hm(e,t,n={}){const a=Gs(e,t);if(a.name===void 0)return Bm(a.raw);const r=ya(a.name);return r?Km(r,a.value??"",n):[]}function qm(e,t,n){const a=Gs(e,t),r=!n.value.endsWith(":"),o=/\s/.test(e.slice(a.end,a.end+1)),i=r&&!o?`${n.value} `:n.value;return{query:e.slice(0,a.start)+i+e.slice(a.end),cursor:a.start+i.length+(r&&o?1:0)}}const Qm=e=>({value:e.normalizedEmail,...e.displayName?{label:e.displayName,hint:e.normalizedEmail}:{}}),Gm=250,Wm=2;function Vm({query:e,cursor:t,enabled:n}){const{accounts:a}=Kt(),{mailboxesByName:r}=ja(),o=r!==void 0,i=n?Om(e,t):void 0,l=i?.source==="contact"?i.query.trim():"",d=Ta(l,Gm),{data:x}=J({...Ms({query:{q:d,limit:Rr}}),enabled:d.length>=Wm}),g=$s({queries:a.map(f=>({...vt({path:{accountId:f.accountId}}),staleTime:1/0}))}),v=c.useMemo(()=>o?vi(g.map(f=>f.data?.items??[]),a):[],[o,g,a]),m=c.useMemo(()=>yi(a),[a]),b=c.useMemo(()=>(x?.items??[]).map(Qm),[x]);return c.useMemo(()=>{if(!n)return[];const f=Hm(e,t,{mailboxes:v,accounts:m,contacts:b});return o?f:f.filter(u=>u.value!=="in:")},[n,e,t,v,m,b,o])}const Ar="remit.recentSearches",Ym=5;function ws(){try{const e=localStorage.getItem(Ar);if(!e)return[];const t=JSON.parse(e);return Array.isArray(t)?t.filter(n=>typeof n=="string"):[]}catch{return[]}}function Vn(e){const t=e.trim();if(!t)return ws();const n=[t,...ws().filter(a=>a!==t)].slice(0,Ym);try{localStorage.setItem(Ar,JSON.stringify(n))}catch{return n}return n}const Xm=e=>e.tier!=="phone"&&e.hasLiveInput&&!(e.bodyRendersCommittedResults&&e.hasCommittedQuery);function Jm(e){const{spam:t}=er([...e]),n=new Map;for(const r of t)r.mailboxId&&n.set(r.mailboxId,(n.get(r.mailboxId)??0)+1);let a;for(const[r,o]of n)(!a||o>a.count)&&(a={mailboxId:r,count:o});return a}function jh({title:e,unreadCount:t,children:n,selectionBar:a,paneOverlay:r,footer:o,searchFilter:i,searchResults:l,searchLoading:d,relatedResults:x,relatedLoading:g,onSelectSearchResult:v,searchResultsLabel:m="Top matches",relatedResultsLabel:b="Related",searchResultsInBody:f=!1,refreshControl:u}){const{accounts:h,resultFolderIndex:p,searchQuery:j,searchInput:y,onSearchChange:k,onSearchClear:S,searchViewKey:E}=Kt(),A=ja(),O=Yi(),F=pa(),L=Xi(),[z,I]=c.useState(!1),[_,w]=c.useState(ws),R=ti(),P=c.useRef(E);c.useEffect(()=>{P.current!==E&&(P.current=E,I(!1))},[E]);const[N,$]=c.useState(0),[C,B]=c.useState(!1),[U,G]=c.useState(void 0),Y=Vm({query:y,cursor:N,enabled:C&&y.trim().length>0}),Z=c.useCallback(ie=>{const je=qm(y,N,ie);k(je.query),G({cursor:je.cursor})},[y,N,k]),ne=si({count:Y.length,onAccept:ie=>{const je=Y[ie];je&&Z(je)}}),{comboboxProps:ce,handleKeyDown:pe}=ne,te=c.useMemo(()=>({comboboxProps:ce,onKeyDown:pe,onCaretChange:$,onFocusChange:B,...U?{caret:U}:{}}),[ce,pe,U]),he=ne.open?s.jsx(oi,{id:ne.listId,suggestions:Y,activeIndex:ne.activeIndex,optionId:ne.optionId,onPick:Z,onHighlight:ne.setActiveIndex,label:"Search suggestions",className:"mx-row-inset mt-1 shrink-0"}):null,de=y.trim().length>0,{mailboxesByName:ge,accountsByName:ue}=A,q=c.useMemo(()=>$i(y,{mailboxesByName:ge,accountsByName:ue}),[y,ge,ue]),re=q.tokens.map(ie=>({label:va(ie),onRemove:()=>k(Li(y,ie))})),H=l??[],Q=x??[],ae=de?[{id:"top",label:m,results:H},{id:"related",label:b,results:Q}]:[],rt=!(H.length+Q.length>0)&&(d===!0||g===!0),{scope:Xt}=ki(h),ot=ni(),it=ll(ot),lt=cl(ot,Xt,it?p.get(it)?.role:void 0),W=lt.kind==="global"?Jm([...H,...Q]):void 0,St=W?{kind:"global",onScopeToSpam:()=>O(W.mailboxId,j)}:lt,fe=Q.length>0,ke=c.useMemo(()=>Yf(q,{searchHadSemanticReach:fe}),[q,fe]),He=de?ke:void 0,qe=de?{onClick:()=>{I(!1),R("properties","search")},blockedReason:Rd(ke)?void 0:ai(ke.droppedFacets.map(ie=>ie.label))}:void 0,oe=qe?s.jsx(tr,{...qe}):null,X=Xm({tier:L,hasLiveInput:de,hasCommittedQuery:j.trim().length>0,bodyRendersCommittedResults:f}),Qe=ie=>{w(Vn(y)),v?.(ie)},Tt=s.jsx(sr,{value:y,sections:ae,loading:rt,onSelectResult:Qe,tokens:re,scope:St}),Jt=a===void 0,xe=X?s.jsx("div",{className:"h-full overflow-y-auto",children:Tt}):null,It=xe&&!Jt?xe:n,Et=xe&&Jt?xe:null,Le=Ji(L),Ge=Le&&(z||de),Se=c.useMemo(()=>({title:e,searchResults:Et,makeFilterSlot:oe,searchConversion:He,navSlot:F&&!F.showNavPane&&s.jsx(K,{variant:"ghost",size:"touch",icon:s.jsx(dl,{className:"size-5"}),onClick:()=>F.openNav(),"aria-label":"Menu",className:"-ml-2 shrink-0"}),titleMeta:s.jsxs(s.Fragment,{children:[t===null?null:s.jsxs("span",{className:"shrink-0 text-2xs text-fg-subtle",children:[t.toLocaleString()," unread"]}),s.jsx(rn,{}),u]}),searchSlot:Le&&!Ge&&s.jsx(K,{variant:"ghost",size:"touch",icon:s.jsx(ri,{className:"size-5"}),onClick:()=>I(!0),"aria-label":"Search",className:"shrink-0"}),searchField:Ge&&s.jsxs(s.Fragment,{children:[s.jsx("div",{className:"min-w-0 flex-1",children:s.jsx(ha,{value:y,onChange:k,onClear:S,globalFocusKey:!1,showClearButton:!1,suggest:te})}),s.jsx(K,{variant:"ghost",size:"touch",icon:s.jsx(_e,{className:"size-5"}),onClick:()=>{S(),I(!1)},"aria-label":"Close search",className:"shrink-0"}),s.jsx(rn,{})]})}),[e,t,F,Le,Ge,y,k,S,te,Et,oe,He,u]);if(L==="phone"&&z){const ie=je=>{w(Vn(y)),I(!1),v?.(je)};return s.jsxs(ks.Provider,{value:Se,children:[s.jsx(td,{value:y,onChange:k,onClear:S,onCancel:()=>{I(!1),S()},filter:i,recentSearches:_,onPickRecent:k,makeFilter:qe,sections:ae,loading:rt,onSelectResult:ie,tokens:re,scope:St,suggest:te,suggestList:he}),r]})}return s.jsx(ks.Provider,{value:Se,children:s.jsxs("section",{className:"relative flex h-full w-full flex-col bg-surface",children:[a?.(Se),he,s.jsx("div",{className:"min-h-0 flex-1",children:It}),o,r]})})}export{Zu as $,Bp as A,Kp as B,Qc as C,Ef as D,su as E,_p as F,ih as G,oh as H,yh as I,Bs as J,kh as K,Op as L,Jp as M,lh as N,sh as O,Yt as P,Vt as Q,ah as R,sd as S,nh as T,Dp as U,Pp as V,wm as W,cr as X,Yu as Y,Ju as Z,ef as _,Lc as a,rh as a0,jm as a1,th as a2,zp as a3,Hp as a4,lf as a5,eh as a6,Zp as a7,rd as a8,Fp as a9,Yc as aA,Yp as aB,vn as aC,dm as aD,gh as aE,vh as aF,$p as aG,Xp as aH,uh as aa,mh as ab,ch as ac,Oc as ad,Nt as ae,Fs as af,xs as ag,Rp as ah,Mp as ai,Ip as aj,Ep as ak,dh as al,jh as am,Ks as an,xt as ao,xh as ap,hh as aq,$m as ar,Lm as as,ph as at,fh as au,er as av,Jm as aw,bh as ax,Ap as ay,Xm as az,wr as b,zs as c,Lp as d,ur as e,cf as f,Ec as g,jf as h,Gp as i,Wp as j,Nf as k,hf as l,Ld as m,Ic as n,qp as o,Qp as p,Tf as q,Lu as r,Vp as s,dr as t,hm as u,Nc as v,Sf as w,tu as x,fr as y,Up as z};
|