1import{k as e,r as d,u as Ue}from"./react-core-QNRZhnR1.js";import{_ as L,T as _e,an as Ee,ae as Ge,al as Ce,a4 as Fe,J as M,av as Be,aw as We,Y as Je,at as ke,aO as He,Z as ue,aP as Qe,aQ as Ye,aR as Ze,W as be,E as Xe,G as O,a9 as Ae,aK as et,C as tt,D as Te,L as st,a2 as Ne,a3 as B,$ as Me,aN as Ke,a1 as nt,aE as at,aS as lt,aM as ot,aH as it,aI as rt,ar as oe,aT as we}from"./semi-ui-61B7usrt.js";import{t as Ie,s as I,N as ct,S as dt,q as Oe,O as ve,k as Le,c as pe,A as G,M as ut,x as mt}from"./index-Dm8l550f.js";import{f as W,e as ht,u as Pe,v as pt}from"./render-DJUgnHP0.js";import{C as ft,a as xt,u as gt,b as yt}from"./useTableCompactMode-CNOSVY1R.js";import{I as wt,a as jt}from"./IllustrationNoResult-cZLsBYCo.js";import{u as ze}from"./i18n-DqLeUXkN.js";import{e as Re}from"./base64-C94kA9SO.js";import{a as kt}from"./token-BtzT1NG1.js";import"./tools-D6jkvNIx.js";import"./vite-preload-BPXyjPM0.js";import"./lobe-icons-BdaGwTCc.js";import"./antd-BUm1ErOG.js";import"./radar-MK3ICKWK-DdY0WKD1.js";import"./mermaid-CqUL-gp7.js";const bt=n=>{if(n===100)return"var(--semi-color-success)";if(n<=10)return"var(--semi-color-danger)";if(n<=30)return"var(--semi-color-warning)"};function $e(n){return e.jsx(e.Fragment,{children:Ie(n)})}const Ct=(n,t,s)=>{const k=n===1;let p="black",h=s("æªç¥ç¶æ");return k?(p="green",h=s("å·²å¯ç¨")):n===2?(p="red",h=s("å·²ç¦ç¨")):n===3?(p="yellow",h=s("å·²è¿æ")):n===4&&(p="grey",h=s("å·²èå°½")),e.jsx(L,{color:p,shape:"circle",size:"small",children:h})},vt=(n,t,s)=>n==="auto"?e.jsx(Ce,{content:s("å½ååç»ä¸º autoï¼ä¼èªå¨éæ©æä¼åç»ï¼å½ä¸ä¸ªç»ä¸å¯ç¨æ¶èªå¨é级å°ä¸ä¸ä¸ªç»ï¼çææºå¶ï¼"),position:"top",children:e.jsxs(L,{color:"white",shape:"circle",children:[s("æºè½çæ"),t&&t.cross_group_retry?`(${s("è·¨åç»")})`:""]})}):ht(n),_t=(n,t,s,k,p,h,i)=>{const c=!!s[t.id],C=!!p[t.id],v=c&&k[t.id]?k[t.id]:t.key||"",_=v?`sk-${v}`:"";return e.jsx("div",{className:"w-[200px]",children:e.jsx(Fe,{readOnly:!0,value:_,size:"small",suffix:e.jsxs("div",{className:"flex items-center",children:[e.jsx(M,{theme:"borderless",size:"small",type:"tertiary",icon:c?e.jsx(Be,{}):e.jsx(We,{}),loading:C,"aria-label":"toggle token visibility",onClick:async u=>{u.stopPropagation(),await h(t)}}),e.jsx(M,{theme:"borderless",size:"small",type:"tertiary",icon:e.jsx(Je,{}),loading:C,"aria-label":"copy token key",onClick:async u=>{u.stopPropagation(),await i(t)}})]})})})},St=(n,t,s)=>{if(t.model_limits_enabled&&n){const k=n.split(",").filter(Boolean),p=Pe(s),h=[],i=new Set;Object.entries(p).forEach(([C,v])=>{if(C==="all"||!v.icon||!v.filter)return;const _=k.filter(u=>v.filter({model_name:u}));_.length>0&&(h.push(e.jsx(Ce,{content:_.join(", "),position:"top",showArrow:!0,children:e.jsx(ke,{size:"extra-extra-small",alt:v.label,color:"transparent",children:v.icon})},C)),_.forEach(u=>i.add(u)))});const c=k.filter(C=>!i.has(C));return c.length>0&&h.push(e.jsx(Ce,{content:c.join(", "),position:"top",showArrow:!0,children:e.jsx(ke,{size:"extra-extra-small",alt:"unknown",children:s("å ¶ä»")})},"unknown")),e.jsx(He,{size:"extra-extra-small",children:h})}else return e.jsx(L,{color:"white",shape:"circle",children:s("æ éå¶")})},Tt=(n,t)=>{if(!n||n.trim()==="")return e.jsx(L,{color:"white",shape:"circle",children:t("æ éå¶")});const s=n.split(` 2`).map(i=>i.trim()).filter(Boolean),k=s.slice(0,1),p=s.length-k.length,h=k.map((i,c)=>e.jsx(L,{shape:"circle",children:i},c));return p>0&&h.push(e.jsx(Ce,{content:s.slice(1).join(", "),position:"top",showArrow:!0,children:e.jsx(L,{shape:"circle",children:"+"+p})},"extra")),e.jsx(ue,{wrap:!0,children:h})},Nt=(n,t,s)=>{const{Paragraph:k}=_e,p=parseInt(t.used_quota)||0,h=parseInt(t.remain_quota)||0,i=parseInt(t.quota_cycle_amount)||0,c=parseInt(t.quota_cycle_used)||0,C=!!(t.quota_cycle&&i>0),v=C?i:p+h,_=C?c:p,u=v>0?h/v*100:0;if(t.unlimited_quota){const $=e.jsx("div",{className:"text-xs p-2",children:e.jsxs(k,{copyable:{content:W(p)},children:[s("å·²ç¨é¢åº¦"),": ",W(p)]})});return e.jsx(Ee,{content:$,position:"top",children:e.jsx(L,{color:"white",shape:"circle",children:s("æ éé¢åº¦")})})}const g=e.jsxs("div",{className:"text-xs p-2",children:[e.jsxs(k,{copyable:{content:W(_)},children:[s("å·²ç¨é¢åº¦"),": ",W(_)]}),e.jsxs(k,{copyable:{content:W(h)},children:[s("å©ä½é¢åº¦"),": ",W(h)," (",u.toFixed(0),"%)"]}),e.jsxs(k,{copyable:{content:W(v)},children:[s("æ»é¢åº¦"),": ",W(v)]})]}),S={daily:{label:s("æ¯æ¥"),color:"light-blue"},weekly:{label:s("æ¯å¨"),color:"purple"},monthly:{label:s("æ¯æ"),color:"indigo"}},K=t.quota_cycle&&S[t.quota_cycle];
2return e.jsx(Ee,{content:g,position:"top",children:e.jsxs("div",{style:{display:"inline-flex",flexDirection:"column",border:"1px solid var(--semi-color-border)",borderRadius:"999px",padding:"2px 10px 3px 5px",gap:"0px",background:"var(--semi-color-bg-1)",minWidth:"130px",boxShadow:"0 1px 2px rgba(0, 0, 0, 0.04)"},children:[e.jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"center",gap:"5px"},children:[K&&e.jsx(L,{color:K.color,size:"small",shape:"circle",style:{flexShrink:0,fontSize:"11px",height:"18px",lineHeight:"18px"},children:K.label}),e.jsx("span",{style:{fontSize:"12px",whiteSpace:"nowrap",color:"var(--semi-color-text-0)",lineHeight:"18px"},children:`${W(h)} / ${W(v)}`})]}),e.jsx(Ge,{percent:u,stroke:bt(u),"aria-label":"quota usage",showInfo:!1,size:"small",style:{marginBottom:0,height:"3px"}})]})})},It=(n,t,s,k,p,h,i,c)=>{let C=[];try{const v=localStorage.getItem("chats"),_=JSON.parse(v);if(Array.isArray(_))for(let u=0;u<_.length;u++){const g=_[u],S=Object.keys(g)[0];S&&C.push({node:"item",key:u,name:S,value:g[S],onClick:()=>s(S,g[S],t)})}}catch{I(c("è天龿¥é
ç½®é误ï¼è¯·è系管çå"))}return e.jsxs(ue,{wrap:!0,children:[e.jsxs(Qe,{className:"overflow-hidden","aria-label":c("é¡¹ç®æä½æé®ç»"),children:[e.jsx(M,{size:"small",type:"tertiary",onClick:()=>{if(C.length===0)I(c("请è系管çåé
ç½®è天龿¥"));else{const v=C[0];s(v.name,v.value,t)}},children:c("è天")}),e.jsx(Ye,{trigger:"click",position:"bottomRight",menu:C,children:e.jsx(M,{type:"tertiary",icon:e.jsx(Ze,{}),size:"small"})})]}),t.status===1?e.jsx(M,{type:"danger",size:"small",onClick:async()=>{await h(t.id,"disable",t),await i()},children:c("ç¦ç¨")}):e.jsx(M,{size:"small",onClick:async()=>{await h(t.id,"enable",t),await i()},children:c("å¯ç¨")}),e.jsx(M,{type:"tertiary",size:"small",onClick:()=>{k(t),p(!0)},children:c("ç¼è¾")}),e.jsx(M,{type:"danger",size:"small",onClick:()=>{be.confirm({title:c("ç¡®å®æ¯å¦è¦å 餿¤ä»¤çï¼"),content:c("æ¤ä¿®æ¹å°ä¸å¯é"),onOk:()=>{(async()=>(await h(t.id,"delete",t),await i()))()}})},children:c("å é¤")})]})},Mt=({t:n,showKeys:t,resolvedTokenKeys:s,loadingTokenKeys:k,toggleTokenVisibility:p,copyTokenKey:h,manageToken:i,onOpenLink:c,setEditingToken:C,setShowEdit:v,refresh:_})=>[{title:n("åç§°"),dataIndex:"name"},{title:n("ç¶æ"),dataIndex:"status",key:"status",render:(u,g)=>Ct(u,g,n)},{title:n("å©ä½é¢åº¦/æ»é¢åº¦"),key:"quota_usage",width:"auto",minWidth:140,render:(u,g)=>Nt(u,g,n)},{title:n("累计使ç¨"),key:"used_quota",width:"auto",minWidth:100,render:(u,g)=>{const S=parseInt(g.used_quota)||0;return S?e.jsx(L,{color:"white",shape:"circle",children:e.jsx("span",{style:{fontSize:"12px",whiteSpace:"nowrap"},children:W(S)})}):e.jsx(L,{color:"white",shape:"circle",children:e.jsx("span",{style:{fontSize:"12px"},children:"$0.00"})})}},{title:n("åç»"),dataIndex:"group",key:"group",render:(u,g)=>vt(u,g,n)},{title:n("å¯é¥"),key:"token_key",render:(u,g)=>_t(u,g,t,s,k,p,h)},{title:n("å¯ç¨æ¨¡å"),dataIndex:"model_limits",render:(u,g)=>St(u,g,n)},{title:n("IPéå¶"),dataIndex:"allow_ips",render:u=>Tt(u,n)},{title:n("å建æ¶é´"),dataIndex:"created_time",render:(u,g,S)=>e.jsx("div",{children:$e(u)})},{title:n("è¿ææ¶é´"),dataIndex:"expired_time",render:(u,g,S)=>e.jsx("div",{children:g.expired_time===-1?n("æ°¸ä¸è¿æ"):$e(u)})},{title:"",dataIndex:"operate",fixed:"right",render:(u,g,S)=>It(u,g,c,C,v,i,_,n)}],Pt=n=>{const{tokens:t,loading:s,activePage:k,pageSize:p,tokenCount:h,compactMode:i,handlePageChange:c,handlePageSizeChange:C,rowSelection:v,handleRow:_,showKeys:u,resolvedTokenKeys:g,loadingTokenKeys:S,toggleTokenVisibility:K,copyTokenKey:$,manageToken:T,onOpenLink:z,setEditingToken:q,setShowEdit:V,refresh:J,t:X}=n,U=d.useMemo(()=>Mt({t:X,showKeys:u,resolvedTokenKeys:g,loadingTokenKeys:S,toggleTokenVisibility:K,copyTokenKey:$,manageToken:T,onOpenLink:z,setEditingToken:q,setShowEdit:V,refresh:J}),[X,u,g,S,K,$,T,z,q,V,J]),ie=d.useMemo(()=>i?U.map(ee=>{if(ee.dataIndex==="operate"){const{fixed:H,...Q}=ee;return Q}return ee}):U,[i,U]);return e.jsx(ft,{columns:ie,dataSource:t,scroll:i?void 0:{x:"max-content"},pagination:{currentPage:k,pageSize:p,total:h,showSizeChanger:!0,pageSizeOptions:[10,20,50,100],onPageSizeChange:C,onPageChange:c},hidePagination:!0,loading:s,rowSelection:v,onRow:_,empty:e.jsx(Xe,{image:e.jsx(jt,{style:{width:150,height:150}}),darkModeImage:e.jsx(wt,{style:{width:150,height:150}}),description:X("æç´¢æ ç»æ"),style:{padding:30}}),className:"rounded-xl overflow-hidden",size:"middle"})},zt=({visible:n,onCancel:t,batchCopyTokens:s,t:k})=>{const p=async()=>{await s("name+key"),t()},h=async()=>{await s("key-only"),t()};return e.jsx(be,{title:k("å¤å¶ä»¤ç"),icon:null,visible:n,onCancel:t,footer
2:e.jsxs(ue,{children:[e.jsx(M,{type:"tertiary",onClick:p,children:k("åç§°+å¯é¥")}),e.jsx(M,{onClick:h,children:k("ä»
å¯é¥")})]}),children:k("è¯·éæ©ä½ çå¤å¶æ¹å¼")})},qt=({visible:n,onCancel:t,onConfirm:s,selectedKeys:k,t:p})=>e.jsx(be,{title:p("æ¹éå é¤ä»¤ç"),visible:n,onCancel:t,onOk:s,type:"warning",children:e.jsx("div",{children:p("ç¡®å®è¦å 餿éç {{count}} 个令çåï¼",{count:k.length})})}),Et=({selectedKeys:n,setEditingToken:t,setShowEdit:s,batchCopyTokens:k,batchDeleteTokens:p,onViewTokenUsage:h,t:i})=>{const[c,C]=d.useState(!1),[v,_]=d.useState(!1),[u,g]=d.useState(!1),S=()=>{if(n.length===0){I(i("请è³å°éæ©ä¸ä¸ªä»¤çï¼"));return}C(!0)},K=()=>{if(n.length===0){I(i("请è³å°éæ©ä¸ä¸ªä»¤çï¼"));return}_(!0)},$=async q=>{if(!q){I(i("è¯·éæ©ä¸ä¸ªä»¤ç"));return}g(!0);try{await h(q)}catch{}finally{g(!1)}},T=async()=>{if(n.length===0){I(i("请è³å°éæ©ä¸ä¸ªä»¤çï¼"));return}if(n.length>1){I(i("请åªéæ©ä¸ä¸ªä»¤çæ¥çç¨é"));return}await $(n[0])},z=()=>{p(),_(!1)};return e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"flex flex-wrap gap-2 w-full md:w-auto order-2 md:order-1",children:[e.jsx(M,{type:"primary",className:"flex-1 md:flex-initial",onClick:()=>{t({id:void 0}),s(!0)},size:"small",children:i("æ·»å 令ç")}),e.jsx(M,{type:"tertiary",className:"flex-1 md:flex-initial",onClick:S,size:"small",children:i("å¤å¶æé令ç")}),e.jsx(M,{type:"danger",className:"w-full md:w-auto",onClick:K,size:"small",children:i("å 餿é令ç")}),e.jsx(M,{type:"secondary",className:"w-full md:w-auto",onClick:T,loading:u,size:"small",children:i("æ¥çæé令çç¨é")})]}),e.jsx(zt,{visible:c,onCancel:()=>C(!1),batchCopyTokens:k,t:i}),e.jsx(qt,{visible:v,onCancel:()=>_(!1),onConfirm:z,selectedKeys:n,t:i})]})},At=({formInitValues:n,setFormApi:t,searchTokens:s,loading:k,searching:p,t:h})=>{const i=d.useRef(null),c=()=>{i.current&&(i.current.reset(),setTimeout(()=>{s()},100))};return e.jsx(O,{initValues:n,getFormApi:C=>{t(C),i.current=C},onSubmit:()=>s(1),allowEmpty:!0,autoComplete:"off",layout:"horizontal",trigger:"change",stopValidateWithError:!1,className:"w-full md:w-auto order-1 md:order-2",children:e.jsxs("div",{className:"flex flex-col md:flex-row items-center gap-2 w-full md:w-auto",children:[e.jsx("div",{className:"relative w-full md:w-56",children:e.jsx(O.Input,{field:"searchKeyword",prefix:e.jsx(Ae,{}),placeholder:h("æç´¢å
³é®å"),showClear:!0,pure:!0,size:"small"})}),e.jsx("div",{className:"relative w-full md:w-56",children:e.jsx(O.Input,{field:"searchToken",prefix:e.jsx(Ae,{}),placeholder:h("å¯é¥"),showClear:!0,pure:!0,size:"small"})}),e.jsxs("div",{className:"flex gap-2 w-full md:w-auto",children:[e.jsx(M,{type:"tertiary",htmlType:"submit",loading:k||p,className:"flex-1 md:flex-initial md:w-auto",size:"small",children:h("æ¥è¯¢")}),e.jsx(M,{type:"tertiary",onClick:c,className:"flex-1 md:flex-initial md:w-auto",size:"small",children:h("éç½®")})]})]})})},{Text:Kt}=_e,Rt=({compactMode:n,setCompactMode:t,t:s})=>e.jsxs("div",{className:"flex flex-col md:flex-row justify-between items-start md:items-center gap-2 w-full",children:[e.jsxs("div",{className:"flex items-center text-blue-500",children:[e.jsx(ct,{size:16,className:"mr-2"}),e.jsx(Kt,{children:s("令ç管ç")})]}),e.jsx(xt,{compactMode:n,setCompactMode:t,t:s})]}),{Text:de,Title:$t}=_e,Ft="https://1xm.ai/docs/guide/token-groups.html",Ot={1:"OpenAI",3:"Azure OpenAI",14:"Anthropic",24:"Google Gemini",33:"AWS Bedrock",41:"Vertex AI",43:"DeepSeek",45:"ç«å±±å¼æ"},Lt=n=>{const{t}=ze(),[s,k]=d.useContext(dt),[p,h]=d.useState(!1),i=Oe(),c=d.useRef(null),[C,v]=d.useState([]),[_,u]=d.useState([]),[g,S]=d.useState([]),[K,$]=d.useState([]),[T,z]=d.useState([]),q=n.editingToken.id!==void 0,V=()=>({name:"",remain_quota:0,remain_quota_dollar:0,expired_time:-1,unlimited_quota:!0,model_limits_enabled:!1,model_limits:[],allow_ips:"",group:"",cross_group_retry:!1,quota_cycle:"",quota_cycle_amount:0,tokenCount:1}),J=()=>{n.handleClose()},X=()=>e.jsxs("span",{className:"inline-flex items-center gap-2",children:[e.jsx("span",{children:t("令çåç»")}),e.jsx("a",{href:Ft,target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-1 rounded-full bg-blue-50 px-2 py-0.5 text-xs font-medium text-blue-600 ring-1 ring-blue-200 transition-colors hover:bg-blue-100 hover:text-blue-700",onClick:o=>o.stopPropagation(),children:t("äºè§£æ´å¤")})]}),U=(o,a,l,r)=>{let j=new Date().getTime()/1e3,y=o*30*24*60*60;y+=a*24*60*60,y+=l*60*60,y+=r*60,c.current&&(y!==0?(j+=y,c.current.setValue("expired_time",Ie(j))):c.current.setValue("expired_time",-1))},ie=async()=>{let o=await G.get("/api/user/models");const{success:a,message:l,data:r}=o.data;if(a){const f=Pe(t);let j=r.map(y=>{let w=null;for(const[E,A]of Object.entries(f))if(E!=="all"&&A.filter({model_name:y})){w=A.icon;break}return{label:e.jsxs("span",{className:"flex items-center gap-1",children:[w,y]}),value:y}});v(j)}else I(t(l))},ee=async()=>
2{if(K.length>0)return;const o=await G.get("/api/pricing"),{success:a,data:l}=o.data;a&&Array.isArray(l)&&($(l),g.length>0&&H(g,l))},H=(o,a)=>{const l=a||K;if(!o||o.length===0||o.length===1&&(o[0]===""||o[0]==="auto")){z([]);return}const r=l.filter(f=>Array.isArray(f.enable_groups)&&o.some(j=>f.enable_groups.includes(j))).map(f=>f.model_name);z([...new Set(r)])},Q=async()=>{var f;let o=await G.get("/api/user/self/groups");const{success:a,message:l,data:r}=o.data;if(a){let j=Object.entries(r).map(([y,w])=>({label:w.desc,value:y,ratio:w.ratio,channel_types:Array.isArray(w.channel_types)?w.channel_types:[]}));(f=s==null?void 0:s.status)!=null&&f.default_use_auto_group&&j.some(y=>y.value==="auto")&&j.sort((y,w)=>y.value==="auto"?-1:1),u(j)}else I(t(l))},re=async()=>{h(!0);let o=await G.get(`/api/token/${n.editingToken.id}`);const{success:a,message:l,data:r}=o.data;if(a){if(r.expired_time!==-1&&(r.expired_time=Ie(r.expired_time)),r.model_limits!==""?r.model_limits=r.model_limits.split(","):r.model_limits=[],c.current){const f=r.remain_quota?parseFloat((r.remain_quota/5e5).toFixed(2)):0,j={...V(),...r,remain_quota_dollar:f};if(c.current.setValues(j),c.current.setValue("remain_quota_dollar",f),c.current.setValue("quota_cycle",r.quota_cycle||""),r.group){const y=r.group.split(",").filter(Boolean);S(y),c.current.setValue("group",r.group),H(y)}else S([]),H([])}}else I(l);h(!1)};d.useEffect(()=>{c.current&&(q||(c.current.setValues(V()),S([]))),ie(),Q(),ee()},[n.editingToken.id]),d.useEffect(()=>{var o,a;n.visiable?q?re():((o=c.current)==null||o.setValues(V()),S([])):((a=c.current)==null||a.reset(),S([]),z([]))},[n.visiable,n.editingToken.id]);const fe=()=>{const o="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";let a="";for(let l=0;l<6;l++)a+=o.charAt(Math.floor(Math.random()*o.length));return a},se=d.useCallback(o=>{const a=_.find(l=>l.value===o);return Array.isArray(a==null?void 0:a.channel_types)?a.channel_types:[]},[_]),me=d.useCallback(o=>!o||o.length===0?t("æªç¥ä¾åºå"):o.map(a=>Ot[a]||`Provider #${a}`).join(" / "),[t]),te=d.useCallback((o,a=-1)=>{if(!o||o==="auto")return!1;const l=se(o);return l.length===0?!1:g.some((r,f)=>{if(f===a||!r||r==="auto")return!1;const j=se(r);return l.some(y=>j.includes(y))})},[se,g]),ne=d.useCallback((o=-1)=>{const a=g.some((l,r)=>r!==o&&l&&l!=="auto");return _.map(l=>({...l,label:l.label,value:l.value,disabled:l.value==="auto"?a:te(l.value,o)}))},[_,te,g]),Y=d.useCallback(o=>{const a=o.filter(Boolean);c.current&&(c.current.setValue("group",a.join(",")),H(a))},[K]),xe=d.useCallback((o,a)=>{S(l=>{let r;return a==="auto"?r=["auto"]:(r=[...l],r[o]=a,r=r.filter(f=>f&&f!=="auto")),Y(r),r})},[Y]),he=d.useCallback(()=>{S(o=>{const a=o.length===0?[""]:[...o,""];return Y(a),a})},[Y]),ge=d.useCallback(o=>{S(a=>{const l=a.filter((r,f)=>f!==o);return Y(l),l})},[Y]),ae=g.includes("auto"),Z=async o=>{var a;if(h(!0),q){let{tokenCount:l,remain_quota_dollar:r,...f}=o;if(f.remain_quota=Math.round((parseFloat(r)||0)*5e5),f.quota_cycle_amount=f.quota_cycle?f.remain_quota:0,f.quota_cycle||(f.quota_cycle=""),f.expired_time!==-1){let E=Date.parse(f.expired_time);if(isNaN(E)){I(t("è¿ææ¶é´æ ¼å¼é误ï¼")),h(!1);return}f.expired_time=Math.ceil(E/1e3)}f.model_limits=f.model_limits.join(","),f.model_limits_enabled=f.model_limits.length>0;let j=await G.put("/api/token/",{...f,id:parseInt(n.editingToken.id)});const{success:y,message:w}=j.data;y?(pe(t("ä»¤çæ´æ°æåï¼")),n.refresh(),n.handleClose()):I(t(w))}else{const l=parseInt(o.tokenCount,10)||1;let r=0;for(let f=0;f<l;f++){let{tokenCount:j,remain_quota_dollar:y,...w}=o;const E=o.name.trim()===""?"default":o.name.trim();if(f!==0||o.name.trim()===""?w.name=`${E}-${fe()}`:w.name=E,w.remain_quota=Math.round((parseFloat(y)||0)*5e5),w.quota_cycle_amount=w.quota_cycle?w.remain_quota:0,w.quota_cycle||(w.quota_cycle=""),w.expired_time!==-1){let le=Date.parse(w.expired_time);if(isNaN(le)){I(t("è¿ææ¶é´æ ¼å¼é误ï¼")),h(!1);break}w.expired_time=Math.ceil(le/1e3)}w.model_limits=w.model_limits.join(","),w.model_limits_enabled=w.model_limits.length>0;let A=await G.post("/api/token/",w);const{success:D,message:ye}=A.data;if(D)r++;else{I(t(ye));break}}r>0&&(pe(t("令çå建æåï¼è¯·å¨å表页é¢ç¹å»å¤å¶è·å令çï¼")),n.refresh(),n.handleClose())}h(!1),(a=c.current)==null||a.setValues(V())};return e.jsx(et,{placement:q?"right":"left",title:e.jsxs(ue,{children:[q?e.jsx(L,{color:"blue",shape:"circle",children:t("æ´æ°")}):e.jsx(L,{color:"green",shape:"circle",children:t("æ°å»º")}),e.jsx($t,{heading:4,className:"m-0",children:t(q?"æ´æ°ä»¤çä
2¿¡æ¯":"å建æ°ç令ç")})]}),bodyStyle:{padding:"0"},visible:n.visiable,width:i?"100%":600,footer:e.jsx("div",{className:"flex justify-end bg-white",children:e.jsxs(ue,{children:[e.jsx(M,{theme:"solid",className:"!rounded-lg",onClick:()=>{var o;return(o=c.current)==null?void 0:o.submitForm()},icon:e.jsx(ot,{}),loading:p,children:t("æäº¤")}),e.jsx(M,{theme:"light",className:"!rounded-lg",type:"primary",onClick:J,icon:e.jsx(Ke,{}),children:t("åæ¶")})]})}),closeIcon:null,onCancel:()=>J(),children:e.jsx(tt,{spinning:p,children:e.jsx(O,{initValues:V(),getFormApi:o=>c.current=o,onSubmit:Z,children:({values:o})=>{var a,l,r,f;return e.jsxs("div",{className:"p-2",children:[e.jsxs(Te,{className:"!rounded-2xl shadow-sm border-0",children:[e.jsxs("div",{className:"flex items-center mb-2",children:[e.jsx(ke,{size:"small",color:"blue",className:"mr-2 shadow-md",children:e.jsx(st,{size:16})}),e.jsxs("div",{children:[e.jsx(de,{className:"text-lg font-medium",children:t("åºæ¬ä¿¡æ¯")}),e.jsx("div",{className:"text-xs text-gray-600",children:t("设置令ççåºæ¬ä¿¡æ¯")})]})]}),e.jsxs(Ne,{gutter:12,children:[e.jsx(B,{span:24,children:e.jsx(O.Input,{field:"name",label:t("åç§°"),placeholder:t("请è¾å
¥åç§°"),rules:[{required:!0,message:t("请è¾å
¥åç§°")}],showClear:!0})}),e.jsxs(B,{span:24,children:[e.jsx(O.Input,{field:"group",noLabel:!0,fieldStyle:{display:"none"},rules:[{required:!0,message:t("è¯·éæ©ä»¤çåç»")}]}),e.jsx(O.Slot,{label:X(),error:(f=(r=(l=(a=c.current)==null?void 0:a.getFormState)==null?void 0:l.call(a))==null?void 0:r.errors)==null?void 0:f.group,style:{marginTop:0},children:_.length>0?e.jsxs("div",{className:"flex flex-col gap-2 pt-1",children:[(g.length>
20?g:[""]).map((j,y)=>{const w=_.find(D=>D.value===j),E=se(j),A=g.length>1||!!j;return e.jsxs("div",{className:"flex flex-col gap-1 rounded-lg border border-solid border-[var(--semi-color-border)] bg-[var(--semi-color-fill-0)] p-2",children:[e.jsxs("div",{className:"flex items-start gap-2",children:[e.jsx("div",{className:"flex-1",children:e.jsx(Me,{placeholder:t(y===0?"è¯·éæ©ä»¤çåç»":"è¯·éæ©é¢å¤åç»"),value:j||void 0,optionList:ne(y),filter:ve,onChange:D=>xe(y,D),renderOptionItem:pt,style:{width:"100%"}})}),A&&e.jsx(M,{icon:e.jsx(Ke,{}),type:"tertiary",theme:"borderless",onClick:()=>ge(y)})]}),j&&e.jsxs("div",{className:"flex flex-wrap items-center gap-2 pl-1 text-xs",children:[e.jsx(de,{type:"tertiary",children:t("åç»")}),e.jsx(L,{size:"small",color:j==="auto"?"white":"blue",shape:"circle",children:j==="auto"?t("æºè½çæ"):j}),e.jsx(de,{type:"tertiary",children:t("ä¾åºå")}),e.jsx(L,{size:"small",color:j==="auto"?"white":"blue",shape:"circle",children:j==="auto"?t("èªå¨éæ©"):me(E)}),(w==null?void 0:w.ratio)!=null&&e.jsxs(e.Fragment,{children:[e.jsx(de,{type:"tertiary",children:t("åç")}),e.jsxs(L,{size:"small",color:"green",shape:"circle",children:["Ã",w.ratio]})]})]})]},`${y}-${j||"empty"}`)}),!ae&&g.filter(Boolean).length>0&&e.jsx(M,{type:"primary",theme:"light",icon:e.jsx(nt,{}),className:"self-start",style:{border:"1px solid var(--semi-color-primary-light-active)"},onClick:he,disabled:ne(g.length).every(j=>j.disabled||g.includes(j.value)),children:t("æ·»å åç»")})]}):e.jsx(de,{type:"tertiary",children:t("管çåæªè®¾ç½®ç¨æ·å¯éåç»")})})]}),T.length>0&&e.jsx(B,{span:24,children:e.jsx(O.Slot,{label:t("å½ååç»å¯ç¨æ¨¡å"),children:e.jsx("div",{className:"flex flex-wrap gap-1 py-1",children:T.map(j=>e.jsx(L,{size:"small",color:"blue",style:{cursor:"pointer",userSelect:"none"},title:t("ç¹å»å¤å¶æ¨¡ååç§°"),onClick:async y=>{y.stopPropagation(),await Le(j)?pe(t("å·²å¤å¶ï¼{{name}}",{name:j})):I(t("å¤å¶å¤±è´¥"))},children:j},j))})})}),e.jsx(B,{span:24,style:{display:ae?"block":"none"},children:e.jsx(O.Switch,{field:"cross_group_retry",label:t("è·¨åç»éè¯"),size:"default",extraText:t("å¼å¯åï¼å½ååç»æ¸ é失败æ¶ä¼æé¡ºåºå°è¯ä¸ä¸ä¸ªåç»çæ¸ é")})}),e.jsx(B,{xs:24,sm:24,md:24,lg:10,xl:10,children:e.jsx(O.DatePicker,{field:"expired_time",label:t("è¿ææ¶é´"),type:"dateTime",placeholder:t("è¯·éæ©è¿ææ¶é´"),rules:[{required:!0,message:t("è¯·éæ©è¿ææ¶é´")},{validator:(j,y)=>{if(y===-1||!y)return Promise.resolve();const w=Date.parse(y);return isNaN(w)?Promise.reject(t("è¿ææ¶é´æ ¼å¼é误ï¼")):w<=Date.now()?Promise.reject(t("è¿ææ¶é´ä¸è½æ©äºå½åæ¶é´ï¼")):Promise.resolve()}}],showClear:!0,style:{width:"100%"}})}),e.jsx(B,{xs:24,sm:24,md:24,lg:14,xl:14,children:e.jsx(O.Slot,{label:t("è¿ææ¶é´å¿«æ·è®¾ç½®"),children:e.jsxs(ue,{wrap:!0,children:[e.jsx(M,{theme:"light",type:"primary",onClick:()=>U(0,0,0,0),children:t("æ°¸ä¸è¿æ")}),e.jsx(M,{theme:"light",type:"tertiary",onClick:()=>U(1,0,0,0),children:t("ä¸ä¸ªæ")}),e.jsx(M,{theme:"light",type:"tertiary",onClick:()=>U(0,1,0,0),children:t("ä¸å¤©")}),e.jsx(M,{theme:"light",type:"tertiary",onClick:()=>U(0,0,1,0),children:t("ä¸å°æ¶")})]})})}),!q&&e.jsx(B,{span:24,children:e.jsx(O.InputNumber,{field:"tokenCount",label:t("æ°å»ºæ°é"),min:1,extraText:t("æ¹éå建æ¶ä¼å¨åç§°åèªå¨æ·»å éæºåç¼"),rules:[{required:!0,message:t("请è¾å
¥æ°å»ºæ°é")}],style:{width:"100%"}})})]})]}),e.jsxs(Te,{className:"!rounded-2xl shadow-sm border-0",children:[e.jsxs("div",{className:"flex items-center mb-2",children:[e.jsx(ke,{size:"small",color:"green",className:"mr-2 shadow-md",children:e.jsx(at,{size:16})}),e.jsxs("div",{children:[e.jsx(de,{className:"text-lg font-medium",children:t("é¢åº¦è®¾ç½®")}),e.jsx("div",{className:"text-xs text-gray-600",children:t("设置令çå¯ç¨é¢åº¦åæ°é")})]})]}),e.jsxs(Ne,{gutter:12,children:[e.jsx(B,{span:24,children:e.jsx(O.InputNumber,{field:"remain_quota_dollar",label:t("é¢åº¦ï¼$ï¼"),placeholder:t("请è¾å
¥é¢åº¦"),disabled:o.unlimited_quota,min:0,step:1,precision:2,
2suffix:"$",extraText:!o.unlimited_quota&&o.remain_quota_dollar?t("â {{n}} tokens",{n:Math.round(o.remain_quota_dollar*5e5).toLocaleString()}):"",rules:o.unlimited_quota?[]:[{required:!0,message:t("请è¾å
¥é¢åº¦")}]})}),e.jsx(B,{span:24,children:e.jsx(O.Switch,{field:"unlimited_quota",label:t("æ éé¢åº¦"),size:"default",extraText:t("令ççé¢åº¦ä»
ç¨äºéå¶ä»¤çæ¬èº«çæå¤§é¢åº¦ä½¿ç¨éï¼å®é
ç使ç¨åå°è´¦æ·çå©ä½é¢åº¦éå¶")})}),!o.unlimited_quota&&e.jsx(B,{span:24,children:e.jsx(O.Select,{field:"quota_cycle",label:t("é¢åº¦å¨æéç½®"),placeholder:t("ä¸éç½®"),style:{width:"100%"},optionList:[{value:"",label:t("ä¸éç½®")},{value:"daily",label:t("æ¯æ¥ï¼æ¬¡æ¥ 00:00 éç½®ï¼")},{value:"weekly",label:t("æ¯å¨ï¼å¨ä¸ 00:00 éç½®ï¼")},{value:"monthly",label:t("æ¯æï¼1æ¥ 00:00 éç½®ï¼")}]})})]})]}),e.jsxs(Te,{className:"!rounded-2xl shadow-sm border-0",children:[e.jsxs("div",{className:"flex items-center mb-2",children:[e.jsx(ke,{size:"small",color:"purple",className:"mr-2 shadow-md",children:e.jsx(lt,{size:16})}),e.jsxs("div",{children:[e.jsx(de,{className:"text-lg font-medium",children:t("访é®éå¶")}),e.jsx("div",{className:"text-xs text-gray-600",children:t("设置令çç访é®éå¶")})]})]}),e.jsxs(Ne,{gutter:12,children:[e.jsx(B,{span:24,children:e.jsx(O.Select,{field:"model_limits",label:t("模åéå¶å表"),placeholder:t("è¯·éæ©è¯¥ä»¤çæ¯æç模åï¼çç©ºæ¯ææææ¨¡å"),multiple:!0,optionList:C,extraText:t("éå¿
è¦ï¼ä¸å»ºè®®å¯ç¨æ¨¡åéå¶"),filter:ve,autoClearSearchValue:!1,searchPosition:"dropdown",showClear:!0,style:{width:"100%"}})}),e.jsx(B,{span:24,children:e.jsx(O.TextArea,{field:"allow_ips",label:t("IPç½ååï¼æ¯æCIDR表达å¼ï¼"),placeholder:t("å
许çIPï¼ä¸è¡ä¸ä¸ªï¼ä¸å¡«ååä¸éå¶"),autosize:!0,rows:1,extraText:t("请å¿è¿åº¦ä¿¡ä»»æ¤åè½ï¼IPå¯è½è¢«ä¼ªé ï¼è¯·é
ånginxåcdnçç½å
³ä½¿ç¨"),showClear:!0,style:{width:"100%"}})})]})]})]})}},q?"edit":"new")})})},je={claude:{label:"Claude",defaultName:"My Claude",modelFields:[{key:"model",label:"主模å"},{key:"haikuModel",label:"Haiku 模å"},{key:"sonnetModel",label:"Sonnet 模å"},{key:"opusModel",label:"Opus 模å"}]},codex:{label:"Codex",defaultName:"My Codex",modelFields:[{key:"model",label:"主模å"}]},gemini:{label:"Gemini",defaultName:"My Gemini",modelFields:[{key:"model",label:"主模å"}]}};function Vt(){try{const n=localStorage.getItem("status");if(n){const t=JSON.parse(n);if(t.server_address)return t.server_address}}catch{}return window.location.origin}function Dt(n,t,s,k){const p=Vt(),h=n==="codex"?p+"/v1":p,i=new URLSearchParams;i.set("resource","provider"),i.set("app",n),i.set("name",t),i.set("endpoint",h),i.set("apiKey",k);for(const[c,C]of Object.entries(s))C&&i.set(c,C);return i.set("homepage",p),i.set("enabled","true"),`ccswitch://v1/import?${i.toString()}`}function Ut({visible:n,onClose:t,tokenKey:s,modelOptions:k}){const{t:p}=ze(),[h,i]=d.useState("claude"),[c,C]=d.useState(je.claude.defaultName),[v,_]=d.useState({}),u=je[h];d.useEffect(()=>{n&&(_({}),i("claude"),C(je.claude.defaultName))},[n]);const g=T=>{i(T),C(je[T].defaultName),_({})},S=(T,z)=>{_(q=>({...q,[T]:z}))},K=()=>{if(!v.model){oe.warning(p("è¯·éæ©ä¸»æ¨¡å"));return}const T=Dt(h,c,v,"sk-"+s);window.open(T,"_blank"),t()},$=d.useMemo(()=>({marginBottom:4,fontSize:13,color:"var(--semi-color-text-1)"}),[]);return e.jsx(be,{title:p("å¡«å
¥ CC Switch"),visible:n,onCancel:t,onOk:K,okText:p("æå¼ CC Switch"),cancelText:p("åæ¶"),maskClosable:!1,width:480,children:e.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:16},children:[e.jsxs("div",{children:[e.jsx("div",{style:$,children:p("åºç¨")}),e.jsx(it,{type:"button",value:h,onChange:T=>g(T.target.value),style:{width:"100%"},children:Object.entries(je).map(([T,z])=>e.jsx(rt,{value:T,children:z.label},T))})]}),e.jsxs("div",{children:[e.jsx("div",{style:$,children:p("åç§°")}),e.jsx(Fe,{value:c,onChange:C,placeholder:u.defaultName})]}),u.modelFields.map(T=>e.jsxs("div",{children:[e.jsxs("div",{style:$,children:[p(T.label),T.key==="model"&&e.jsx(_e.Text,{type:"danger",children:" *"})]}),e.jsx(Me,{placeholder:p("è¯·éæ©æ¨¡å"),optionList:k,value:v[T.key]||void 0,onChange:z=>S(T.key,z),filter:ve,style:{width:"100%"},showClear:!0,searchable:!0,emptyContent:p("ææ æ°æ®")})]},T.key))]})})}const Gt=(n,t)=>{const{t:s}
2=ze(),[k,p]=d.useState([]),[h,i]=d.useState(!0),[c,C]=d.useState(1),[v,_]=d.useState(0),[u,g]=d.useState(ut),[S,K]=d.useState(!1),[$,T]=d.useState(!1),[z,q]=d.useState([]),[V,J]=d.useState(!1),[X,U]=d.useState({id:void 0}),[ie,ee]=gt("tokens"),[H,Q]=d.useState({}),[re,fe]=d.useState({}),[se,me]=d.useState({}),te=d.useRef({}),[ne,Y]=d.useState(null),xe={searchKeyword:"",searchToken:""},he=()=>{const m=ne?ne.getValues():{};return{searchKeyword:m.searchKeyword||"",searchToken:m.searchToken||""}},ge=()=>{J(!1),setTimeout(()=>{U({id:void 0})},500)},ae=m=>{p(m.items||[]),_(m.total||0),C(m.page||1),g(m.page_size||u),Q({})},Z=async(m=1,x=u)=>{i(!0),T(!1);const R=await G.get(`/api/token/?p=${m}&size=${x}`),{success:b,message:P,data:N}=R.data;b?ae(N):I(P),i(!1)},o=async(m=c)=>{await Z(m),q([])},a=async m=>{await Le(m)?pe(s("å·²å¤å¶å°åªè´´æ¿ï¼")):be.error({title:s("æ æ³å¤å¶å°åªè´´æ¿ï¼è¯·æå¨å¤å¶"),content:m,size:"large"})},l=async(m,x={})=>{const{suppressError:R=!1}=x,b=typeof m=="object"?m==null?void 0:m.id:Number(m);if(!b){const N=new Error(s("令çä¸åå¨"));throw R||I(N.message),N}if(re[b])return re[b];if(te.current[b])return te.current[b];const P=(async()=>{me(N=>({...N,[b]:!0}));try{const N=await kt(b);return fe(F=>({...F,[b]:N})),N}catch(N){const F=new Error((N==null?void 0:N.message)||s("è·å令çå¯é¥å¤±è´¥"));throw R||I(F.message),F}finally{delete te.current[b],me(N=>{const F={...N};return delete F[b],F})}})();return te.current[b]=P,P},r=async m=>{const x=m==null?void 0:m.id;if(!x)return;if(H[x]){Q(b=>({...b,[x]:!1}));return}await l(m)&&Q(b=>({...b,[x]:!0}))},f=async m=>{const x=await l(m);await a(`sk-${x}`)},j=async(m,x,R)=>{const b=await l(R);if(x&&x.startsWith("ccswitch")){t(b);return}if(x&&x.startsWith("fluent")){n(b);return}let P=localStorage.getItem("status"),N="";if(P&&(P=JSON.parse(P),N=P.server_address),N===""&&(N=window.location.origin),x.includes("{cherryConfig}")===!0){let F={id:"new-api",baseUrl:N,apiKey:`sk-${b}`},ce=encodeURIComponent(Re(JSON.stringify(F)));x=x.replaceAll("{cherryConfig}",ce)}else if(x.includes("{aionuiConfig}")===!0){let F={platform:"new-api",baseUrl:N,apiKey:`sk-${b}`},ce=encodeURIComponent(Re(JSON.stringify(F)));x=x.replaceAll("{aionuiConfig}",ce)}else{let F=encodeURIComponent(N);x=x.replaceAll("{address}",F),x=x.replaceAll("{key}",`sk-${b}`)}window.open(x,"_blank")},y=async(m,x,R)=>{i(!0);let b={id:m},P;switch(x){case"delete":P=await G.delete(`/api/token/${m}/`);break;case"enable":b.status=1,P=await G.put("/api/token/?status_only=true",b);break;case"disable":b.status=2,P=await G.put("/api/token/?status_only=true",b);break}const{success:N,message:F}=P.data;if(N){pe(s("æä½æå宿ï¼"));let ce=P.data.data,Se=[...k];x!=="delete"&&(R.status=ce.status),p(Se)}else I(F);i(!1)},w=async(m=1,x=u)=>{const R=Number.isInteger(m)&&m>0?m:1,b=Number.isInteger(x)&&x>0?x:u,{searchKeyword:P,searchToken:N}=he();if(P===""&&N===""){T(!1),await Z(1);return}K(!0);const F=await G.get(`/api/token/search?keyword=${encodeURIComponent(P)}&token=${encodeURIComponent(N)}&p=${R}&size=${b}`),{success:ce,message:Se,data:De}=F.data;ce?(T(!0),ae(De)):I(Se),K(!1)},E=m=>{if(k.length===0)return;i(!0);let x=[...k];x.sort((R,b)=>(""+R[m]).localeCompare(b[m])),x[0].id===k[0].id&&x.reverse(),p(x),i(!1)},A=m=>{$?w(m,u).then():Z(m,u).then()},D=async m=>{g(m),$?await w(1,m):await Z(1,m)},ye={onSelect:(m,x)=>{},onSelectAll:(m,x)=>{},onChange:(m,x)=>{q(x)}},le=(m,x)=>m.status!==1?{style:{background:"var(--semi-color-disabled-border)"}}:{},qe=async()=>{var m,x;if(z.length===0){I(s("请å éæ©è¦å é¤ç令çï¼"));return}i(!0);try{const R=z.map(P=>P.id),b=await G.post("/api/token/batch",{ids:R});if((m=b==null?void 0:b.data)!=null&&m.success){const P=b.data.data||0;pe(s("å·²å é¤ {{count}} 个令çï¼",{count:P})),await o(),setTimeout(()=>{k.length===0&&c>1&&o(c-1)},100)}else I(((x=b==null?void 0:b.data)==null?void 0:x.message)||s("å é¤å¤±è´¥"))}catch(R){I(R.message)}finally{i(!1)}},Ve=async m=>{if(z.length===0){I(s("请è³å°éæ©ä¸ä¸ªä»¤çï¼"));return}try{const x=await Promise.all(z.map(b=>l(b,{suppressError:!0}))),R=z.map((b,P)=>{const N=x[P];return m==="name+key"?`${b.name} sk-${N}`:`sk-${N}`}).join(` 3`);await a(R)}catch(x){I((x==null?void 0:x.message)||s("å¤å¶ä»¤ç失败"))}};return d.useEffect(()=>{Z(1).then().catch(m=>{I(m)})},[u]),{tokens:k,loading:h,activePage:c,tokenCount:v,pageSize:u,searching:S,selectedKeys:z,setSelectedKeys:q,showEdit:V,setShowEdit:J,editingToken:X,setEditingToken:U,closeEdit:ge,compactMode:ie,setCompactMode:ee,showKeys:H,setShowKeys:Q,resolvedTokenKeys:re,loadingTokenKeys:se,formApi:ne,setFormApi:Y,formInitValues:xe,getFormValues:he,loadTokens:Z,refresh:o,copyText:a,fetchTokenKey:l,toggleTokenVisibility:r,copyTokenKey:f,onOpenLink:j,manageToken:y,searchTokens:w,sortToken:E,handlePageChange:A,handlePageSizeChange:D,rowSelection:ye,handleRow:le,batchDeleteTokens:qe,batchCopyTokens:Ve,syncPageData:ae,t:s}};function Bt(){const n=d.useRef(null),t=d.useRef(null),s=Gt(a=>{var l;return(l=n.current)==null?void 0:l.call(n,a)},a=>{var l;return(l=t.current)==null?void 0:l.call(t,a)}),k=Ue(),p=Oe(),h=d.useRef({tokens:[],selectedKeys:[],t:a=>a,selectedModel:"",prefillKey:"",fetchTokenKey:async()=>""}
3),[i,c]=d.useState([]),[C,v]=d.useState(""),[_,u]=d.useState(!1),[g,S]=d.useState(""),[K,$]=d.useState(!1),[T,z]=d.useState("");d.useEffect(()=>{h.current={tokens:s.tokens,selectedKeys:s.selectedKeys,t:s.t,selectedModel:C,prefillKey:g,fetchTokenKey:s.fetchTokenKey}},[s.tokens,s.selectedKeys,s.t,C,g,s.fetchTokenKey]);const q=async()=>{try{const a=await G.get("/api/user/models"),{success:l,message:r,data:f}=a.data||{};if(l){const j=Pe(s.t),y=(f||[]).map(w=>{let E=null;for(const[A,D]of Object.entries(j))if(A!=="all"&&D.filter({model_name:w})){E=D.icon;break}return{label:e.jsxs("span",{className:"flex items-center gap-1",children:[E,w]}),value:w}});c(y)}else I(s.t(r))}catch(a){I(a.message||"Failed to load models")}};function V(a){const{t:l}=h.current,r="fluent_notify_suppressed";if(i.length===0&&q(),!a&&localStorage.getItem(r)==="1")return;if(!document.getElementById("fluent-new-api-container")){oe.warning(l("æªæ£æµå° FluentReadï¼æµç
é
读ï¼ï¼è¯·ç¡®è®¤æ©å±å·²å¯ç¨"));return}S(a||""),u(!0),we.info({id:"fluent-detected",title:l("æ£æµå° FluentReadï¼æµç
é
读ï¼"),content:e.jsxs("div",{children:[e.jsx("div",{style:{marginBottom:8},children:l(a?"è¯·éæ©æ¨¡åã":"éæ©æ¨¡ååå¯ä¸é®å¡«å
å½åéä¸ä»¤çï¼ææ¬é¡µç¬¬ä¸ä¸ªä»¤çï¼ã")}),e.jsx("div",{style:{marginBottom:8},children:e.jsx(Me,{placeholder:l("è¯·éæ©æ¨¡å"),optionList:i,onChange:v,filter:ve,style:{width:320},showClear:!0,searchable:!0,emptyContent:l("ææ æ°æ®")})}),e.jsxs(ue,{children:[e.jsx(M,{theme:"solid",type:"primary",onClick:X,children:l("ä¸é®å¡«å
å° FluentRead")}),!a&&e.jsx(M,{type:"warning",onClick:()=>{localStorage.setItem(r,"1"),we.close("fluent-detected"),oe.info(l("å·²å
³éåç»æé"))},children:l("ä¸åæé")}),e.jsx(M,{type:"tertiary",onClick:()=>we.close("fluent-detected"),children:l("å
³é")})]})]}),duration:0})}n.current=V;function J(a){i.length===0&&q(),z(a||""),$(!0)}t.current=J;const X=async()=>{const{tokens:a,selectedKeys:l,t:r,selectedModel:f,prefillKey:j,fetchTokenKey:y}=h.current,w=document.getElementById("fluent-new-api-container");if(!w){oe.error(r("æªæ£æµå° Fluent 容å¨"));return}if(!f){oe.warning(r("è¯·éæ©æ¨¡å"));return}let E=localStorage.getItem("status"),A="";if(E)try{E=JSON.parse(E),A=E.server_address||""}catch{}A||(A=window.location.origin);let D="";if(j)D="sk-"+j;else{const le=l&&l.length===1?l[0]:a&&a.length>0?a[0]:null;if(!le){oe.warning(r("没æå¯ç¨ä»¤çç¨äºå¡«å
"));return}try{D="sk-"+await y(le)}catch{return}}const ye={id:"new-api",baseUrl:A,apiKey:D,model:f};w.dispatchEvent(new CustomEvent("fluent:prefill",{detail:ye})),oe.success(r("å·²åéå° Fluent")),we.close("fluent-detected")},U=async a=>{if(!(a!=null&&a.id)){oe.warning(s.t("è¯·éæ©ä¸ä¸ªä»¤ç"));return}const l=await s.fetchTokenKey(a);k("/usage-query",{state:{apiKey:`sk-${l}`,tokenName:a.name||s.t("æªå½å令ç"),source:"token-management"}})};d.useEffect(()=>{const a=()=>{V()},l=()=>{u(!1),we.close("fluent-detected")};return window.addEventListener("fluent-container:appeared",a),window.addEventListener("fluent-container:removed",l),()=>{window.removeEventListener("fluent-container:appeared",a),window.removeEventListener("fluent-container:removed",l)}},[]),d.useEffect(()=>{_&&V()},[i,C,s.t,_]),d.useEffect(()=>{const a="#fluent-new-api-container",l=document.body||document.documentElement,r=document.querySelector(a);r&&(console.log("Fluent container detected (initial):",r),window.dispatchEvent(new CustomEvent("fluent-container:appeared",{detail:r})));const f=y=>y&&y.nodeType===1?y.id==="fluent-new-api-container"?!0:typeof y.querySelector=="function"&&!!y.querySelector(a):!1,j=new MutationObserver(y=>{for(const w of y){for(const E of w.addedNodes)if(f(E)){const A=document.querySelector(a);A&&(console.log("Fluent container appeared:",A),window.dispatchEvent(new CustomEvent("fluent-container:appeared",{detail:A})));break}for(const E of w.removedNodes)if(f(E)){document.querySelector(a)||(console.log("Fluent container removed"),window.dispatchEvent(new CustomEvent("fluent-container:removed")));break}}});return j.observe(l,{childList:!0,subtree:!0}),()=>j.disconnect()},[]);const{showEdit:ie,editingToken:ee,closeEdit:H,refresh:Q,selectedKeys:re,setEditingToken:fe,setShowEdit:se,batchCopyTokens:me,batchDeleteTokens:te,formInitValues:ne,setFormApi:Y,searchTokens:xe,loading:he,searching:ge,compactMode:ae,setCompactMode:Z,t:o}=s;return e.jsxs(e.Fragment,{children:[e.jsx(Lt,{refresh:Q,editingToken:ee,visiable:ie,handleClose:H}),e.jsx(Ut,{visible:K,onClose:()=>$(!1),tokenKey:T,modelOptions:i}),e.jsx(yt,{type:"type1",descriptionArea:e.jsx(Rt,{compactMode:ae,setCompactMode:Z,t:o}),actionsArea:e.jsxs("div",{className:"flex flex-col md:flex-row justify-between items-center gap-2 w-full",children:[e.jsx(Et,{selectedKeys:re,setEditingToken:fe,setShowEdit:se,batchCopyTokens:me,batchDeleteTokens:te,onViewTokenUsage:U,t:o}),e.jsx("div",{className:"w-full md:w-full lg:w-auto order-1 md:order-2",children:e.jsx(At,{formInitValues:ne,setFormApi:Y,searchTokens:xe,loading:he,searching:ge,t:o})})]}),paginationArea:mt({currentPage:s.activePage,pageSize:s.pageSize,total:s.tokenCount,onPageChange:s.handlePageChange,onPageSizeChange:s.handlePageSizeChange,isMobile:p,t:s.t}),t:s.t,children:e.jsx(Pt,{...s})})]})}const rs=()=>e.jsx("div",{className:"mt-[60px] px-2",children:e.jsx(Bt,{})});
3export{rs as default};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.