| 123 |
- import{a as e,n as t,r as n}from"./react-dom-stZKkA6x.js";import{a as r,c as i,d as a,r as o,u as s}from"./theme-Dy2IKOlV.js";import{G as c,i as l,kt as u,n as d,st as f,t as p}from"./jsx-runtime-dm82oUI8.js";import{a as ee,i as te,o as m,t as ne}from"./grid-CvLJ37H1.js";import{n as re,t as ie}from"./table-CJKsuOaW.js";import{t as h}from"./badge-CT2dDAGA.js";import{a as ae,n as oe,r as se,t as ce}from"./StatusPill-CAqweeP1.js";import{t as le}from"./input-number-5vwSxUlw.js";import{t as g}from"./descriptions-vs1os_w7.js";import{t as _}from"./form-Dc_x_ybP.js";import{t as v}from"./input-0_Xo22Fl.js";import{t as y}from"./list-BZfhgW9n.js";import{t as ue}from"./modal-hO5zE2jK.js";import{t as b}from"./CopyOutlined-DgLEpGTa.js";import{n as x,t as de}from"./EditOutlined-B4WrWHV3.js";import{t as fe}from"./PlusOutlined-DNU7Mzq3.js";import{t as pe}from"./ReloadOutlined-C_t3CP1C.js";import{t as me}from"./SearchOutlined-BDeH_Qai.js";import{_ as he,a as ge,b as _e,f as ve,h as ye,i as be,m as xe,n as Se,p as Ce,r as S,s as C,t as we}from"./index-CrChtXhS.js";import{t as w}from"./EmptyState-rI31ioMm.js";import{t as T}from"./CodeBlock-Bv1z-p9E.js";import{n as Te,t as Ee}from"./navigation-state-ixI_efPF.js";var E=n((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.default={icon:{tag:`svg`,attrs:{viewBox:`64 64 896 896`,focusable:`false`},children:[{tag:`path`,attrs:{d:`M832 64H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V96c0-17.7-14.3-32-32-32zm-40 824H232V687h97.9c11.6 32.8 32 62.3 59.1 84.7 34.5 28.5 78.2 44.3 123 44.3s88.5-15.7 123-44.3c27.1-22.4 47.5-51.9 59.1-84.7H792v-63H643.6l-5.2 24.7C626.4 708.5 573.2 752 512 752s-114.4-43.5-126.5-103.3l-5.2-24.7H232V136h560v752zM320 341h384c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H320c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8zm0 160h384c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H320c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8z`}}]},name:`container`,theme:`outlined`}})),D=e(t()),O=e(E());function k(){return k=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},k.apply(this,arguments)}var A=D.forwardRef((e,t)=>D.createElement(s,k({},e,{ref:t,icon:O.default}))),De=e(n((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.default={icon:{tag:`svg`,attrs:{viewBox:`64 64 896 896`,focusable:`false`},children:[{tag:`path`,attrs:{d:`M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM790.2 326H602V137.8L790.2 326zm1.8 562H232V136h302v216a42 42 0 0042 42h216v494zM504 618H320c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zM312 490v48c0 4.4 3.6 8 8 8h384c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H320c-4.4 0-8 3.6-8 8z`}}]},name:`file-text`,theme:`outlined`}}))());function j(){return j=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},j.apply(this,arguments)}var M=D.forwardRef((e,t)=>D.createElement(s,j({},e,{ref:t,icon:De.default}))),Oe=e(n((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.default={icon:{tag:`svg`,attrs:{viewBox:`64 64 896 896`,focusable:`false`},children:[{tag:`path`,attrs:{d:`M880 298.4H521L403.7 186.2a8.15 8.15 0 00-5.5-2.2H144c-17.7 0-32 14.3-32 32v592c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V330.4c0-17.7-14.3-32-32-32zM840 768H184V256h188.5l119.6 114.4H840V768z`}}]},name:`folder`,theme:`outlined`}}))());function N(){return N=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},N.apply(this,arguments)}var ke=D.forwardRef((e,t)=>D.createElement(s,N({},e,{ref:t,icon:Oe.default}))),P=p(),Ae=[`INBOX`,`Sent`,`Drafts`,`Trash`,`Junk`,`Archive`];function F(){let{message:e}=a.useApp(),t=ne.useBreakpoint(),n=we(`(min-width: 1280px)`),{locale:s,t:p}=r(),{config:h}=Se(),b=ve(),x=Ce(),ge=xe(),[S,C]=ye(),[T]=_.useForm(),[E]=_.useForm(),[O,k]=(0,D.useState)([]),[A,De]=(0,D.useState)([]),[j,M]=(0,D.useState)(L()),[Oe,N]=(0,D.useState)([]),[ke,Ae]=(0,D.useState)(0),[F,I]=(0,D.useState)(null),[Ge,R]=(0,D.useState)(!0),[Ke,B]=(0,D.useState)(!1),[Je,V]=(0,D.useState)(!1),[Ye,Xe]=(0,D.useState)(!1),[H,Ze]=(0,D.useState)(``),[Qe,$e]=(0,D.useState)(``),[et,tt]=(0,D.useState)(``),[nt,rt]=(0,D.useState)(``),[it,at]=(0,D.useState)(``),[ot,st]=(0,D.useState)(``),[ct,lt]=(0,D.useState)(``),[ut,dt]=(0,D.useState)(S.get(`q`)||``),[ft,pt]=(0,D.useState)(!1),[U,mt]=(0,D.useState)(null),[ht,gt]=(0,D.useState)(``),[_t,vt]=(0,D.useState)(`activity`),[yt,bt]=(0,D.useState)(``),[xt,St]=(0,D.useState)(`domain`),[Ct,W]=(0,D.useState)(null),[wt,Tt]=(0,D.useState)(null),Et=(0,D.useRef)(null),Dt=(0,D.useRef)(0),G=(0,D.useRef)(0),K=(0,D.useRef)(0),q=(0,D.useRef)(0),J=(0,D.useRef)(0),Y=S.get(`workspace`)===`routing`?`routing`:`messages`,X=Number(S.get(`mailboxId`)||0)||null,Ot=S.get(`folder`)||`INBOX`,kt=S.get(`read`)||`all`,At=S.get(`q`)||``,jt=Math.max(1,Number(S.get(`page`)||1)||1),Z=Number(ge.messageId||0)||null,Mt=Pe(S.get(`tab`));(0,D.useEffect)(()=>{dt(At)},[At]);let Nt=(0,D.useMemo)(()=>A.map(e=>({value:e.id,label:s.startsWith(`en`)?`${e.address} · ${e.unreadCount} unread / ${e.messageCount} total`:`${e.address} · ${e.unreadCount} 未读 / ${e.messageCount} 封`})),[s,A]),Pt=(0,D.useMemo)(()=>ze(Re(A,ht),_t),[ht,_t,A]),Ft=(0,D.useMemo)(()=>He(Ve(O,yt),xt),[O,yt,xt]),Q=(0,D.useCallback)(async()=>{let e=++Dt.current;R(!0),Ze(``),$e(``);let[t,n]=await Promise.allSettled([o.domains(),o.inboundMailboxes()]);e===Dt.current&&(t.status===`fulfilled`?k(t.value.domains||[]):$e(t.reason instanceof Error?t.reason.message:p(`common.error`)),n.status===`fulfilled`?De(n.value.mailboxes||[]):Ze(n.reason instanceof Error?n.reason.message:p(`common.error`)),R(!1))},[p]);(0,D.useEffect)(()=>(Q(),()=>{Dt.current+=1}),[Q]),(0,D.useEffect)(()=>{if(!A.length||Z&&(!S.has(`mailboxId`)||!S.has(`folder`))||X&&A.some(e=>e.id===X))return;let e=Le(A,X);if(!e)return;let t=new URLSearchParams(S);t.set(`mailboxId`,String(e)),t.set(`folder`,`INBOX`),t.set(`page`,`1`),C(t,{replace:!0})},[A,Z,S,X,C]);let $=(0,D.useCallback)(async()=>{let e=++G.current;if(!X){M(L()),at(``),Xe(!1);return}Xe(!0),at(``),M(L());try{let t=await o.inboundFolders(X);if(e!==G.current)return;if(!t.folders?.length)throw Error(s.startsWith(`en`)?`Folder counts are unavailable.`:`文件夹计数暂不可用。`);M(t.folders.map(e=>({...e,countsAvailable:!0})))}catch(t){if(e!==G.current)return;M(L()),at(t instanceof Error?t.message:s.startsWith(`en`)?`Unable to load folder counts.`:`文件夹计数加载失败。`)}finally{e===G.current&&Xe(!1)}},[s,X]);(0,D.useEffect)(()=>($(),()=>{G.current+=1}),[$]);let It=(0,D.useCallback)(async()=>{let e=++K.current;if(!X||Y!==`messages`){N([]),Ae(0),tt(``),B(!1);return}B(!0),tt(``);try{let t=await o.inboundMessages({mailboxId:X,folder:Ot,page:jt,pageSize:25,q:At||void 0,read:kt===`read`?!0:kt===`unread`?!1:void 0});if(e!==K.current)return;N(t.messages||[]),Ae(t.total??t.messages?.length??0)}catch(t){e===K.current&&tt(t instanceof Error?t.message:p(`common.error`))}finally{e===K.current&&B(!1)}},[Ot,jt,At,kt,X,p,Y]);(0,D.useEffect)(()=>(It(),()=>{K.current+=1}),[It]),(0,D.useEffect)(()=>{let e=++q.current;if(J.current+=1,st(``),!Z){I(null),rt(``),V(!1);return}return V(!0),rt(``),o.inboundMessage(Z).then(t=>{if(e!==q.current)return;let n=t.message;if(!n){rt(p(`inbox.messageNotFound`));return}if(I(n),!n.read){let t=++J.current;o.markInboundMessageRead(n.id,!0).then(()=>{e!==q.current||t!==J.current||(I(e=>e?.id===n.id?{...e,read:!0}:e),N(e=>e.map(e=>e.id===n.id?{...e,read:!0}:e)),De(e=>e.map(e=>e.id===n.mailboxId?{...e,unreadCount:Math.max(0,e.unreadCount-1)}:e)),$())}).catch(n=>{e!==q.current||t!==J.current||st(n instanceof Error?n.message:s.startsWith(`en`)?`Unable to mark this message as read.`:`邮件标记已读失败。`)})}}).catch(t=>{e===q.current&&rt(t instanceof Error?t.message:p(`inbox.detailLoadFailed`))}).finally(()=>{e===q.current&&V(!1)}),()=>{q.current===e&&(q.current+=1),J.current+=1}},[$,s,Z,p]),(0,D.useEffect)(()=>{if(!Z||F?.id!==Z||S.has(`mailboxId`)&&S.has(`folder`))return;let e=new URLSearchParams(S);e.set(`mailboxId`,String(F.mailboxId)),e.set(`folder`,F.folder||`INBOX`),C(e,{replace:!0})},[Z,S,F,C]),(0,D.useEffect)(()=>{let e=Et.current;!e||Te(b.state)?.origin===`direct`||(Et.current=null,x(e,{replace:!0}))},[b.key,b.state,x]);function Lt(e){let t=new URLSearchParams(S);Object.entries(e).forEach(([e,n])=>{n===null||n===``?t.delete(e):t.set(e,String(n))}),C(t)}function Rt(e){let t=new URLSearchParams(S);e===`routing`?t.set(`workspace`,`routing`):t.delete(`workspace`);let n=t.toString();x(`/inbox${n?`?${n}`:``}`)}function zt(e){let t=new URLSearchParams(S);t.set(`mailboxId`,String(e)),t.set(`folder`,`INBOX`),t.set(`page`,`1`);let n=t.toString();x(`/inbox${n?`?${n}`:``}`)}function Bt(e){let t=new URLSearchParams(S);t.set(`folder`,e),t.set(`page`,`1`);let n=t.toString();x(`/inbox${n?`?${n}`:``}`)}function Vt(e){I(e);let t=S.toString(),n=`/inbox/messages/${e.id}${t?`?${t}`:``}`,r=Te(b.state);if(r){x(n,{state:Ee(r.listPath,r.depth+1,r.origin)});return}if(Z){x(n,{replace:!0});return}x(n,{state:Ee(`${b.pathname}${b.search}`,1)})}function Ht(){let e=Te(b.state);if(e?.origin===`list`){x(-e.depth);return}let t=F?.id===Z?F:null,n=Fe(S,t);if(e?.origin===`direct`){Et.current=n,x(-e.depth);return}x(n,{replace:!0})}function Ut(e){let t=new URLSearchParams(S);e===`text`?t.delete(`tab`):t.set(`tab`,e);let n=Te(b.state),r=F?.id===Z?F:null,i=t.toString();x({pathname:b.pathname,search:i?`?${i}`:``},{state:Ee(n?.listPath||Fe(S,r),(n?.depth||0)+1,n?.origin||`direct`)})}async function Wt(t){t&&(await navigator.clipboard.writeText(t),e.success(p(`common.copied`)))}function Gt(){mt(null),T.resetFields(),T.setFieldsValue({domain:O[0]?.domain,password:qe(),quotaMb:1024,keepForwarded:!0,status:`active`}),pt(!0)}function Kt(e){mt(e),T.resetFields(),T.setFieldsValue({localPart:e.localPart,domain:e.domain,password:``,displayName:e.displayName,quotaMb:e.quotaMb,aliases:e.aliases.join(`
- `),forwardTo:e.forwardTo.join(`
- `),keepForwarded:e.keepForwarded,status:e.status}),pt(!0)}function qt(){pt(!1),mt(null),T.resetFields()}async function Jt(){let t=await T.validateFields(),n=U?`mailbox:update:${U.id}`:`mailbox:create`;lt(n);try{if(U){let n=String(t.password||``).trim(),r=await o.updateInboundMailbox(U.id,{displayName:t.displayName||``,aliases:t.aliases||``,forwardTo:t.forwardTo||``,keepForwarded:!!t.keepForwarded,quotaMb:t.quotaMb??null,status:t.status||U.status,...n?{password:n}:{}});e.success(s.startsWith(`en`)?`Mailbox updated`:`收信邮箱已更新`),n&&W(r.clientConfig||z(r.mailbox,h,n))}else{let n=await o.createInboundMailbox({address:`${t.localPart}@${t.domain}`,displayName:t.displayName,password:t.password,aliases:t.aliases,forwardTo:t.forwardTo,keepForwarded:t.keepForwarded,quotaMb:t.quotaMb});e.success(p(`actions.inboundMailboxCreated`)),W(n.clientConfig||z(n.mailbox,h,t.password))}qt(),await Q()}catch(t){e.error(t instanceof Error?t.message:p(`common.error`))}finally{lt(``)}}function Yt(e){Tt(e),E.setFieldsValue({catchAllAddress:e.catchAllAddress||``})}async function Xt(){if(!wt)return;let t=await E.validateFields();lt(`catch-all:${wt.id}`);try{let n=await o.patchDomain(wt.id,{catchAllAddress:String(t.catchAllAddress||``).trim()});k(e=>e.map(e=>e.id===n.domain.id?n.domain:e)),Tt(null),e.success(p(`actions.domainSaved`))}catch(t){e.error(t instanceof Error?t.message:p(`common.error`))}finally{lt(``)}}let Zt=[{title:p(`inbox.mailboxAddress`),dataIndex:`address`,render:(e,t)=>(0,P.jsxs)(l,{direction:`vertical`,size:0,children:[(0,P.jsx)(d.Text,{strong:!0,children:e}),t.displayName?(0,P.jsx)(d.Text,{type:`secondary`,children:t.displayName}):null]})},{title:p(`common.status`),dataIndex:`status`,width:120,render:e=>(0,P.jsx)(ce,{tone:e===`active`?`success`:`warning`,children:e})},{title:p(`inbox.forwardTo`),dataIndex:`forwardTo`,render:(e,t)=>e?.length?(0,P.jsxs)(l,{direction:`vertical`,size:2,children:[(0,P.jsx)(d.Text,{children:e.join(`, `)}),(0,P.jsx)(he,{children:t.keepForwarded?p(`inbox.keepForwarded`):p(`inbox.forwardOnly`)})]}):`—`},{title:p(`inbox.unread`),dataIndex:`unreadCount`,width:90},{title:p(`inbox.messageCount`),dataIndex:`messageCount`,width:100},{title:p(`common.actions`),width:330,render:(e,t)=>(0,P.jsxs)(l,{wrap:!0,children:[(0,P.jsx)(u,{icon:(0,P.jsx)(de,{}),onClick:()=>Kt(t),children:p(`common.edit`)}),(0,P.jsx)(u,{icon:(0,P.jsx)(be,{}),onClick:()=>W(z(t,h)),children:p(`inbox.clientConfig`)}),(0,P.jsx)(u,{icon:(0,P.jsx)(i,{}),onClick:()=>x(`/integrations/webhooks?mailboxId=${t.id}`),children:p(`inbox.mailboxWebhooks`)})]})}],Qt=[{title:p(`domains.domain`),dataIndex:`domain`,render:e=>(0,P.jsx)(d.Text,{strong:!0,children:e})},{title:p(`inbox.catchAllAddress`),dataIndex:`catchAllAddress`,render:e=>e?(0,P.jsx)(he,{color:e===`/dev/null`?`default`:`blue`,children:e}):(0,P.jsx)(he,{children:p(`inbox.catchAllDisabled`)})},{title:p(`common.actions`),width:130,render:(e,t)=>(0,P.jsx)(u,{icon:(0,P.jsx)(be,{}),onClick:()=>Yt(t),children:p(`common.edit`)})}];return Ge?(0,P.jsx)(oe,{children:(0,P.jsx)(f,{active:!0,paragraph:{rows:12}})}):(0,P.jsxs)(l,{direction:`vertical`,size:20,className:`full-width`,children:[(0,P.jsx)(se,{title:p(`inbox.title`),subtitle:p(`inbox.subtitle`),extra:Y===`routing`?(0,P.jsx)(u,{type:`primary`,icon:(0,P.jsx)(fe,{}),disabled:!O.length,onClick:Gt,style:{minHeight:44},children:p(`inbox.createMailbox`)}):null}),H?(0,P.jsx)(m,{type:`error`,showIcon:!0,message:H,action:(0,P.jsx)(u,{icon:(0,P.jsx)(pe,{}),onClick:()=>void Q(),children:p(`common.refresh`)})}):null,Qe?(0,P.jsx)(m,{type:`warning`,showIcon:!0,message:s.startsWith(`en`)?`Domain and routing options are temporarily unavailable.`:`域名与路由选项暂不可用。`,description:Qe,action:(0,P.jsx)(u,{icon:(0,P.jsx)(pe,{}),onClick:()=>void Q(),children:p(`common.refresh`)})}):null,h?.submission?.inboundEnabled===!1?(0,P.jsx)(m,{type:`warning`,showIcon:!0,message:p(`inbox.inboundDisabled`)}):null,(0,P.jsx)(ee,{activeKey:Y,onChange:Rt,items:[{key:`messages`,label:(0,P.jsxs)(l,{children:[(0,P.jsx)(i,{}),s.startsWith(`en`)?`Mail`:`邮件`]})},{key:`routing`,label:(0,P.jsxs)(l,{children:[(0,P.jsx)(be,{}),s.startsWith(`en`)?`Mailboxes & routing`:`邮箱与路由`]})}]}),Y===`messages`?H&&!A.length?null:A.length?(0,P.jsxs)(`div`,{style:{display:`grid`,gridTemplateColumns:n?`220px minmax(320px, 380px) minmax(0, 1fr)`:t.md?`220px minmax(0, 1fr)`:`minmax(0, 1fr)`,gap:16,minWidth:0},children:[t.md?(0,P.jsx)(je,{mailboxOptions:Nt,selectedMailboxId:X,folders:j,foldersLoading:Ye,foldersError:it,activeFolder:Ot,onMailbox:zt,onFolder:Bt,onRetryFolders:$,locale:s,mailboxLabel:p(`inbox.mailboxFilter`),refreshLabel:p(`common.refresh`)}):null,(0,P.jsxs)(te,{styles:{body:{padding:0,minWidth:0}},children:[(0,P.jsxs)(`div`,{style:{padding:12,borderBottom:`1px solid #EAECF0`},children:[t.md?null:(0,P.jsxs)(l,{direction:`vertical`,size:8,className:`full-width`,style:{marginBottom:8},children:[(0,P.jsx)(c,{value:X||void 0,onChange:zt,options:Nt,showSearch:!0,optionFilterProp:`label`,className:`full-width`,"aria-label":p(`inbox.mailboxFilter`)}),it?(0,P.jsx)(m,{type:`warning`,showIcon:!0,message:s.startsWith(`en`)?`Folder counts are unavailable.`:`文件夹计数暂不可用。`,action:(0,P.jsx)(u,{size:`small`,loading:Ye,onClick:()=>void $(),children:p(`common.refresh`)})}):null,(0,P.jsx)(c,{value:Ot,onChange:Bt,loading:Ye,options:j.map(e=>({value:e.name,label:We(e,s)})),className:`full-width`,"aria-label":s.startsWith(`en`)?`Folder`:`文件夹`})]}),(0,P.jsxs)(l.Compact,{block:!0,children:[(0,P.jsx)(v,{value:ut,allowClear:!0,prefix:(0,P.jsx)(me,{}),placeholder:p(`inbox.searchPlaceholder`),onChange:e=>dt(e.target.value),onPressEnter:()=>Lt({q:ut.trim(),page:1})}),(0,P.jsx)(u,{"aria-label":p(`common.refresh`),icon:(0,P.jsx)(pe,{}),loading:Ke,onClick:()=>void It()})]}),(0,P.jsx)(c,{value:kt,onChange:e=>Lt({read:e===`all`?null:e,page:1}),style:{width:`100%`,marginTop:8},"aria-label":s.startsWith(`en`)?`Read state`:`阅读状态`,options:[{value:`all`,label:s.startsWith(`en`)?`All mail`:`全部邮件`},{value:`unread`,label:p(`inbox.unread`)},{value:`read`,label:p(`inbox.read`)}]})]}),et?(0,P.jsx)(m,{type:`error`,showIcon:!0,message:et,action:(0,P.jsx)(u,{onClick:()=>void It(),children:p(`common.refresh`)})}):null,(0,P.jsx)(Me,{items:Oe,loading:Ke,activeId:Z,onOpen:Vt,locale:s,t:p}),ke>25?(0,P.jsx)(`div`,{style:{padding:12,display:`flex`,justifyContent:`center`},children:(0,P.jsx)(ae,{size:`small`,current:jt,pageSize:25,total:ke,showSizeChanger:!1,onChange:e=>Lt({page:e})})}):null]}),n?(0,P.jsx)(te,{styles:{body:{padding:20,minWidth:0}},children:(0,P.jsx)(Ne,{message:F,loading:Je,error:nt,mutationError:ot,activeTab:Mt,onTabChange:Ut,onCopy:Wt,t:p})}):null]}):(0,P.jsx)(w,{description:s.startsWith(`en`)?`No receiving mailbox has been created yet.`:`尚未创建收信邮箱。`,action:(0,P.jsx)(u,{icon:(0,P.jsx)(fe,{}),disabled:!O.length,onClick:()=>{Rt(`routing`),Gt()},children:p(`inbox.createMailbox`)})}):(0,P.jsxs)(l,{direction:`vertical`,size:20,className:`full-width`,children:[(0,P.jsx)(oe,{title:p(`inbox.mailboxes`),extra:(0,P.jsx)(ce,{tone:`neutral`,children:A.length}),children:A.length?(0,P.jsxs)(l,{direction:`vertical`,size:12,className:`full-width`,children:[(0,P.jsxs)(l,{wrap:!0,className:`full-width`,children:[(0,P.jsx)(v,{allowClear:!0,"aria-label":s.startsWith(`en`)?`Search mailboxes`:`搜索收信邮箱`,prefix:(0,P.jsx)(me,{}),placeholder:s.startsWith(`en`)?`Search address, alias, or forwarding target`:`搜索邮箱、别名或转发地址`,value:ht,onChange:e=>gt(e.target.value),style:{flex:`1 1 280px`}}),(0,P.jsx)(c,{"aria-label":s.startsWith(`en`)?`Sort mailboxes`:`收信邮箱排序`,value:_t,onChange:vt,style:{minWidth:180},options:Be(s)})]}),t.md?(0,P.jsx)(ie,{rowKey:`id`,columns:Zt,dataSource:Pt,scroll:{x:1040}}):(0,P.jsx)(y,{dataSource:Pt,renderItem:e=>(0,P.jsx)(y.Item,{children:(0,P.jsx)(te,{size:`small`,className:`full-width`,title:e.address,children:(0,P.jsxs)(l,{direction:`vertical`,className:`full-width`,children:[(0,P.jsxs)(d.Text,{type:`secondary`,children:[e.messageCount,` `,p(`inbox.messageCount`),` · `,e.unreadCount,` `,p(`inbox.unread`)]}),(0,P.jsxs)(l,{wrap:!0,children:[(0,P.jsx)(u,{icon:(0,P.jsx)(de,{}),onClick:()=>Kt(e),children:p(`common.edit`)}),(0,P.jsx)(u,{onClick:()=>W(z(e,h)),children:p(`inbox.clientConfig`)}),(0,P.jsx)(u,{onClick:()=>x(`/integrations/webhooks?mailboxId=${e.id}`),children:p(`inbox.mailboxWebhooks`)})]})]})})})})]}):H?null:(0,P.jsx)(w,{description:p(`inbox.noDomain`),action:(0,P.jsx)(u,{icon:(0,P.jsx)(fe,{}),disabled:!O.length,onClick:Gt,children:p(`inbox.createMailbox`)})})}),(0,P.jsx)(oe,{title:p(`inbox.domainRoutes`),extra:(0,P.jsx)(ce,{tone:`neutral`,children:O.length}),children:O.length?(0,P.jsxs)(l,{direction:`vertical`,size:12,className:`full-width`,children:[(0,P.jsxs)(l,{wrap:!0,className:`full-width`,children:[(0,P.jsx)(v,{allowClear:!0,"aria-label":s.startsWith(`en`)?`Search receiving routes`:`搜索域名收信路由`,prefix:(0,P.jsx)(me,{}),placeholder:s.startsWith(`en`)?`Search domain or catch-all address`:`搜索域名或未知地址收件邮箱`,value:yt,onChange:e=>bt(e.target.value),style:{flex:`1 1 280px`}}),(0,P.jsx)(c,{"aria-label":s.startsWith(`en`)?`Sort receiving routes`:`域名收信路由排序`,value:xt,onChange:St,style:{minWidth:180},options:Ue(s)})]}),t.md?(0,P.jsx)(ie,{rowKey:`id`,columns:Qt,dataSource:Ft}):(0,P.jsx)(y,{dataSource:Ft,renderItem:e=>(0,P.jsx)(y.Item,{actions:[(0,P.jsx)(u,{onClick:()=>Yt(e),children:p(`common.edit`)},`edit`)],children:(0,P.jsx)(y.Item.Meta,{title:e.domain,description:e.catchAllAddress||p(`inbox.catchAllDisabled`)})})})]}):Qe?null:(0,P.jsx)(w,{description:p(`inbox.noDomain`),action:(0,P.jsx)(u,{onClick:()=>x(`/domains?create=1`),children:p(`common.addDomain`)})})})]}),n?null:(0,P.jsx)(_e,{title:p(`inbox.messageDetail`),width:t.md?680:`100%`,open:!!Z,onClose:Ht,children:(0,P.jsx)(Ne,{message:F,loading:Je,error:nt,mutationError:ot,activeTab:Mt,onTabChange:Ut,onCopy:Wt,t:p})}),(0,P.jsx)(_e,{title:U?s.startsWith(`en`)?`Edit mailbox`:`编辑收信邮箱`:p(`inbox.createMailbox`),width:560,open:ft,onClose:qt,destroyOnHidden:!0,footer:(0,P.jsxs)(l,{style:{display:`flex`,justifyContent:`flex-end`},children:[(0,P.jsx)(u,{onClick:qt,children:p(`common.cancel`)}),(0,P.jsx)(u,{type:`primary`,loading:ct===`mailbox:create`||ct===`mailbox:update:${U?.id}`,onClick:()=>void Jt(),children:p(U?`common.save`:`inbox.createMailbox`)})]}),children:O.length?(0,P.jsxs)(_,{form:T,layout:`vertical`,children:[U?(0,P.jsx)(g,{bordered:!0,column:1,size:`small`,style:{marginBottom:20},children:(0,P.jsx)(g.Item,{label:p(`inbox.mailboxAddress`),children:(0,P.jsx)(d.Text,{code:!0,children:U.address})})}):(0,P.jsxs)(`div`,{style:{display:`grid`,gridTemplateColumns:t.sm?`minmax(0, 1fr) minmax(220px, 0.8fr)`:`minmax(0, 1fr)`,columnGap:t.sm?0:8},children:[(0,P.jsx)(_.Item,{name:`localPart`,label:p(`inbox.localPart`),rules:[{required:!0,message:p(`inbox.localPartRequired`)},{pattern:/^[^@\s]+$/,message:p(`inbox.localPartInvalid`)}],children:(0,P.jsx)(v,{autoComplete:`off`})}),(0,P.jsx)(_.Item,{name:`domain`,label:p(`domains.domain`),rules:[{required:!0,message:p(`inbox.domainRequired`)}],children:(0,P.jsx)(c,{options:O.map(e=>({value:e.domain,label:`@${e.domain}`}))})})]}),(0,P.jsx)(_.Item,{name:`displayName`,label:p(`inbox.displayName`),children:(0,P.jsx)(v,{})}),(0,P.jsx)(_.Item,{name:`password`,label:U?s.startsWith(`en`)?`New password`:`新密码`:p(`inbox.password`),extra:U?s.startsWith(`en`)?`Leave blank to keep the current password.`:`留空表示保留当前密码。`:void 0,rules:[{required:!U,message:p(`inbox.passwordRequired`)},{min:8,message:p(`inbox.passwordMin`)}],children:(0,P.jsx)(v.Password,{autoComplete:`new-password`})}),(0,P.jsx)(u,{onClick:()=>T.setFieldValue(`password`,qe()),children:p(`inbox.generatePassword`)}),(0,P.jsx)(_.Item,{name:`quotaMb`,label:`${p(`inbox.quotaMb`)} (MB)`,style:{marginTop:20},children:(0,P.jsx)(le,{min:1,className:`full-width`})}),(0,P.jsx)(_.Item,{name:`aliases`,label:p(`inbox.aliases`),extra:p(`inbox.aliasesExtra`),children:(0,P.jsx)(v.TextArea,{rows:3})}),(0,P.jsx)(_.Item,{name:`forwardTo`,label:p(`inbox.forwardTo`),extra:p(`inbox.forwardToExtra`),children:(0,P.jsx)(v.TextArea,{rows:3})}),(0,P.jsx)(_.Item,{name:`keepForwarded`,valuePropName:`checked`,children:(0,P.jsx)(re,{children:p(`inbox.keepForwarded`)})}),U?(0,P.jsx)(_.Item,{name:`status`,label:p(`common.status`),rules:[{required:!0}],children:(0,P.jsx)(c,{options:[{value:`active`,label:s.startsWith(`en`)?`Active`:`启用`},{value:`disabled`,label:s.startsWith(`en`)?`Disabled`:`停用`}]})}):null]}):(0,P.jsx)(m,{type:`warning`,showIcon:!0,message:p(`inbox.noDomain`)})}),(0,P.jsx)(ue,{title:p(`inbox.catchAllTitle`),open:!!wt,confirmLoading:ct.startsWith(`catch-all:`),onCancel:()=>Tt(null),onOk:()=>void Xt(),children:(0,P.jsx)(_,{form:E,layout:`vertical`,children:(0,P.jsx)(_.Item,{name:`catchAllAddress`,label:p(`inbox.catchAllAddress`),extra:p(`inbox.catchAllExtra`),children:(0,P.jsx)(v,{placeholder:`catchall@example.com / /dev/null`})})})}),(0,P.jsx)(ue,{title:p(`inbox.clientConfig`),open:!!Ct,width:720,footer:(0,P.jsx)(u,{type:`primary`,onClick:()=>W(null),children:p(`common.confirm`)}),onCancel:()=>W(null),children:Ct?(0,P.jsx)(Ie,{config:Ct,onCopy:Wt,t:p}):null})]})}function je({mailboxOptions:e,selectedMailboxId:t,folders:n,foldersLoading:r,foldersError:i,activeFolder:a,onMailbox:o,onFolder:s,onRetryFolders:f,locale:p,mailboxLabel:ee,refreshLabel:ne}){return(0,P.jsxs)(te,{styles:{body:{padding:8}},children:[(0,P.jsx)(c,{"aria-label":ee,value:t||void 0,onChange:o,options:e,showSearch:!0,optionFilterProp:`label`,className:`full-width`,style:{marginBottom:12}}),i?(0,P.jsx)(m,{type:`warning`,showIcon:!0,message:p.startsWith(`en`)?`Folder counts are unavailable.`:`文件夹计数暂不可用。`,description:i,action:(0,P.jsx)(u,{size:`small`,loading:r,onClick:()=>void f(),children:ne}),style:{marginBottom:8}}):null,(0,P.jsx)(l,{direction:`vertical`,size:2,className:`full-width`,children:n.map(e=>(0,P.jsxs)(u,{type:a===e.name?`primary`:`text`,icon:Ke(e.name),onClick:()=>s(e.name),style:{width:`100%`,minHeight:44,display:`flex`,alignItems:`center`,justifyContent:`flex-start`},children:[(0,P.jsx)(`span`,{style:{flex:1,textAlign:`left`},children:R(e.name,p)}),e.countsAvailable?e.unreadCount?(0,P.jsx)(h,{count:e.unreadCount,size:`small`}):(0,P.jsx)(d.Text,{type:`secondary`,children:e.messageCount}):(0,P.jsx)(d.Text,{type:`secondary`,"aria-label":p.startsWith(`en`)?`Count unavailable`:`计数不可用`,children:`—`})]},e.name))})]})}function Me({items:e,loading:t,activeId:n,onOpen:r,locale:i,t:a}){return t?(0,P.jsx)(`div`,{style:{padding:16},children:(0,P.jsx)(f,{active:!0,paragraph:{rows:8}})}):e.length?(0,P.jsx)(y,{dataSource:e,split:!0,renderItem:e=>(0,P.jsx)(y.Item,{style:{padding:0},children:(0,P.jsx)(`button`,{type:`button`,"aria-label":`${e.subject||a(`inbox.noSubject`)} · ${e.sender}`,onClick:()=>r(e),style:{width:`100%`,minHeight:88,padding:`12px 16px`,border:0,textAlign:`left`,background:n===e.id?`#EEF2FF`:e.read?`#FFFFFF`:`#F8FAFF`,cursor:`pointer`},children:(0,P.jsxs)(l,{direction:`vertical`,size:4,style:{width:`100%`},children:[(0,P.jsxs)(l,{style:{width:`100%`,justifyContent:`space-between`},children:[(0,P.jsx)(d.Text,{strong:!e.read,ellipsis:!0,style:{maxWidth:`65%`},children:e.sender||`—`}),(0,P.jsx)(d.Text,{type:`secondary`,style:{fontSize:12},children:Je(e.receivedAt)})]}),(0,P.jsx)(d.Text,{strong:!e.read,ellipsis:!0,children:e.subject||a(`inbox.noSubject`)}),(0,P.jsx)(d.Text,{type:`secondary`,ellipsis:!0,children:e.preview||`—`})]})})})}):(0,P.jsx)(w,{description:i.startsWith(`en`)?`No messages match this folder and filter.`:`当前文件夹和筛选条件下没有邮件。`})}function Ne({message:e,loading:t,error:n,mutationError:r,activeTab:i,onTabChange:a,onCopy:o,t:s}){return t?(0,P.jsx)(f,{active:!0,paragraph:{rows:12}}):n?(0,P.jsx)(m,{type:`error`,showIcon:!0,message:n}):e?(0,P.jsxs)(l,{direction:`vertical`,size:20,className:`full-width`,children:[r?(0,P.jsx)(m,{type:`warning`,showIcon:!0,message:r}):null,(0,P.jsxs)(`div`,{children:[(0,P.jsx)(d.Title,{level:4,style:{marginBottom:4},children:e.subject||s(`inbox.noSubject`)}),(0,P.jsx)(d.Text,{type:`secondary`,children:V(e.receivedAt)})]}),(0,P.jsxs)(g,{column:1,size:`small`,children:[(0,P.jsx)(g.Item,{label:s(`inbox.sender`),children:e.sender||`—`}),(0,P.jsx)(g.Item,{label:s(`inbox.recipients`),children:e.recipients.join(`, `)||`—`}),(0,P.jsx)(g.Item,{label:s(`logs.messageId`),children:(0,P.jsx)(d.Text,{code:!0,copyable:{onCopy:()=>o(e.messageId)},children:e.messageId||`—`})})]}),(0,P.jsx)(ee,{activeKey:i,onChange:e=>a(Pe(e)),items:[{key:`text`,label:s(`inbox.textBody`),children:e.textBody?(0,P.jsx)(`pre`,{className:`inbox-message-body`,children:e.textBody}):(0,P.jsx)(w,{description:s(`inbox.noTextBody`)})},{key:`html`,label:s(`inbox.htmlBody`),children:e.htmlBody?(0,P.jsx)(T,{value:e.htmlBody,onCopy:o}):(0,P.jsx)(w,{description:s(`inbox.noHtmlBody`)})},{key:`raw`,label:s(`inbox.rawMessage`),children:e.rawMessage?(0,P.jsx)(T,{value:e.rawMessage,onCopy:o}):(0,P.jsx)(w,{description:s(`inbox.noRawMessage`)})}]})]}):(0,P.jsx)(w,{description:s(`inbox.messageDetail`)})}function Pe(e){return e===`html`||e===`raw`?e:`text`}function Fe(e,t){let n=new URLSearchParams(e);n.delete(`tab`),t&&(!n.has(`mailboxId`)||!n.has(`folder`))&&(n.set(`mailboxId`,String(t.mailboxId)),n.set(`folder`,t.folder||`INBOX`));let r=n.toString();return`/inbox${r?`?${r}`:``}`}function Ie({config:e,onCopy:t,t:n}){let r=[{key:`imap`,label:n(`inbox.incomingConfig`),value:e.incoming},...e.pop3?[{key:`pop3`,label:n(`inbox.pop3Config`),value:e.pop3}]:[],{key:`smtp`,label:n(`inbox.outgoingConfig`),value:e.outgoing}];return(0,P.jsxs)(l,{direction:`vertical`,size:16,className:`full-width`,children:[(0,P.jsx)(m,{type:`info`,showIcon:!0,message:n(`inbox.clientConfigHelpSummary`)}),(0,P.jsxs)(g,{bordered:!0,column:1,size:`small`,children:[(0,P.jsx)(g.Item,{label:n(`inbox.configUsername`),children:I(e.username,t)}),(0,P.jsx)(g.Item,{label:n(`inbox.configPassword`),children:e.password?I(e.password,t):(0,P.jsx)(d.Text,{type:`secondary`,children:n(`inbox.passwordNotShown`)})})]}),(0,P.jsx)(ee,{items:r.map(e=>({key:e.key,label:e.label,children:(0,P.jsxs)(g,{bordered:!0,column:1,size:`small`,children:[(0,P.jsx)(g.Item,{label:n(`inbox.configHost`),children:I(e.value.host,t)}),(0,P.jsx)(g.Item,{label:n(`inbox.configPort`),children:I(e.value.port,t)}),(0,P.jsx)(g.Item,{label:n(`inbox.configSecurity`),children:e.value.security}),(0,P.jsx)(g.Item,{label:n(`inbox.configAuthMethod`),children:e.value.authMethod})]})}))})]})}function I(e,t){return(0,P.jsxs)(l,{children:[(0,P.jsx)(d.Text,{code:!0,children:e}),(0,P.jsx)(u,{"aria-label":`Copy`,icon:(0,P.jsx)(b,{}),onClick:()=>void t(String(e))})]})}function Le(e,t){return t&&e.some(e=>e.id===t)?t:[...e].filter(e=>e.lastMessageAt).sort((e,t)=>Date.parse(t.lastMessageAt||``)-Date.parse(e.lastMessageAt||``))[0]?.id||e.find(e=>e.messageCount>0)?.id||e[0]?.id||null}function Re(e,t){let n=t.trim().toLocaleLowerCase();return n?e.filter(e=>[e.address,e.displayName,...e.aliases,...e.forwardTo].some(e=>String(e||``).toLocaleLowerCase().includes(n))):e}function ze(e,t){return[...e].sort((e,n)=>{if(t===`address`)return e.address.localeCompare(n.address);if(t===`unread`)return n.unreadCount-e.unreadCount||e.address.localeCompare(n.address);if(t===`messages`)return n.messageCount-e.messageCount||e.address.localeCompare(n.address);let r=Date.parse(e.lastMessageAt||``)||0;return(Date.parse(n.lastMessageAt||``)||0)-r||e.address.localeCompare(n.address)})}function Be(e){return e.startsWith(`en`)?[{value:`activity`,label:`Recent activity`},{value:`address`,label:`Address`},{value:`unread`,label:`Unread count`},{value:`messages`,label:`Message count`}]:[{value:`activity`,label:`最近收信`},{value:`address`,label:`邮箱地址`},{value:`unread`,label:`未读数`},{value:`messages`,label:`邮件数`}]}function Ve(e,t){let n=t.trim().toLocaleLowerCase();return n?e.filter(e=>[e.domain,e.catchAllAddress].some(e=>String(e||``).toLocaleLowerCase().includes(n))):e}function He(e,t){return[...e].sort((e,n)=>{if(t===`configured`){let t=Number(!!n.catchAllAddress)-Number(!!e.catchAllAddress);if(t)return t}return e.domain.localeCompare(n.domain)})}function Ue(e){return e.startsWith(`en`)?[{value:`domain`,label:`Domain`},{value:`configured`,label:`Configured first`}]:[{value:`domain`,label:`域名`},{value:`configured`,label:`已配置优先`}]}function L(){return Ae.map(e=>({name:e,specialUse:Ge(e),messageCount:0,unreadCount:0,countsAvailable:!1}))}function We(e,t){let n=e.countsAvailable?e.unreadCount:`—`;return`${R(e.name,t)} (${n})`}function Ge(e){return{INBOX:null,Sent:`\\Sent`,Drafts:`\\Drafts`,Trash:`\\Trash`,Junk:`\\Junk`,Archive:`\\Archive`}[e]??null}function R(e,t){return t.startsWith(`en`)?e:{INBOX:`收件箱`,Sent:`已发送`,Drafts:`草稿`,Trash:`已删除`,Junk:`垃圾邮件`,Archive:`归档`}[e]||e}function Ke(e){return e===`INBOX`?(0,P.jsx)(C,{}):e===`Sent`?(0,P.jsx)(ge,{}):e===`Drafts`?(0,P.jsx)(M,{}):e===`Trash`?(0,P.jsx)(x,{}):e===`Junk`?(0,P.jsx)(S,{}):e===`Archive`?(0,P.jsx)(A,{}):(0,P.jsx)(ke,{})}function z(e,t,n=``){let r=B(t?.submission?.ports||[],[587,465]),i=B(t?.mailAccess?.imap.ports||[],[993,143]),a=B(t?.mailAccess?.pop3.ports||[],[995,110]),o=t?.mailAccess?.host||t?.submission?.host||t?.mailHostname||e.domain;return{username:e.address,password:n,incoming:{protocol:`IMAP`,host:o,port:i?.port||143,security:i?.protocol||`IMAP + STARTTLS`,authMethod:`Normal password`,username:e.address,password:n},pop3:{protocol:`POP3`,host:o,port:a?.port||110,security:a?.protocol||`POP3 + STLS`,authMethod:`Normal password`,username:e.address,password:n},outgoing:{protocol:`SMTP`,host:t?.submission?.host||t?.mailHostname||e.domain,port:r?.port||587,security:r?.protocol||`SMTP + STARTTLS`,authMethod:`Normal password`,username:e.address,password:n}}}function B(e,t){for(let n of t){let t=e.find(e=>e.port===n);if(t)return t}return e[0]||null}function qe(){let e=new Uint8Array(14);return globalThis.crypto.getRandomValues(e),Array.from(e,e=>(e%36).toString(36)).join(``)}function Je(e){let t=new Date(e),n=new Date;return t.toDateString()===n.toDateString()?t.toLocaleTimeString([],{hour:`2-digit`,minute:`2-digit`}):t.toLocaleDateString()}function V(e){return e?new Date(e).toLocaleString():`—`}export{F as default};
|