llm-simple-router 0.3.5 → 0.3.6
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/README.md +11 -0
- package/dist/admin/services.d.ts +7 -0
- package/dist/admin/services.js +63 -0
- package/dist/cli.js +0 -0
- package/dist/index.js +0 -0
- package/frontend-dist/assets/CardContent-DKzAH8lX.js +1 -0
- package/frontend-dist/assets/{CardHeader-BjkSQf27.js → CardHeader-BBKKDXEh.js} +1 -1
- package/frontend-dist/assets/CardTitle-BQtpsfYd.js +1 -0
- package/frontend-dist/assets/Checkbox-DhBbPKjw.js +1 -0
- package/frontend-dist/assets/CollapsibleTrigger-BC4bE5yr.js +1 -0
- package/frontend-dist/assets/Dashboard-3z77m9VQ.js +3 -0
- package/frontend-dist/assets/DialogTitle-Bh2A7j2j.js +1 -0
- package/frontend-dist/assets/Input-C5_w9X6Y.js +1 -0
- package/frontend-dist/assets/Label-9sUKofNb.js +1 -0
- package/frontend-dist/assets/Login-Dxo1j9ZV.js +1 -0
- package/frontend-dist/assets/Logs-KthJmRch.js +3 -0
- package/frontend-dist/assets/ModelMappings-Dci1SkBO.js +1 -0
- package/frontend-dist/assets/PopperContent-DGr-wo47.js +1 -0
- package/frontend-dist/assets/Providers-wZxNIXXh.js +1 -0
- package/frontend-dist/assets/ProxyEnhancement-CcvyXQNb.js +1 -0
- package/frontend-dist/assets/RetryRules-B9Cw-Ycd.js +1 -0
- package/frontend-dist/assets/RouterKeys-yZrj5YNm.js +1 -0
- package/frontend-dist/assets/RovingFocusItem-CvMnUs02.js +1 -0
- package/frontend-dist/assets/SelectValue-DhqRtJKk.js +1 -0
- package/frontend-dist/assets/Setup-DPk7lIZy.js +1 -0
- package/frontend-dist/assets/TableHeader-D9I1uQTp.js +1 -0
- package/frontend-dist/assets/TabsTrigger-D4xjbMaQ.js +1 -0
- package/frontend-dist/assets/VisuallyHiddenInput-Dr8wp-H0.js +1 -0
- package/frontend-dist/assets/alert-dialog-ChPy9vB2.js +1 -0
- package/frontend-dist/assets/badge-HGT44FNA.js +3 -0
- package/frontend-dist/assets/button-B3kgf-D2.js +1 -0
- package/frontend-dist/assets/{client-DvdghFBq.js → client-BBW9-06a.js} +2 -2
- package/frontend-dist/assets/{createLucideIcon-DCD7INQf.js → createLucideIcon-CCI4wMy0.js} +1 -1
- package/frontend-dist/assets/dialog-BFhbK4vw.js +1 -0
- package/frontend-dist/assets/index-DSrFEJ7Y.css +1 -0
- package/frontend-dist/assets/index-SUCErp6B.js +1 -0
- package/frontend-dist/assets/lib-D-4ywYag.js +1 -0
- package/frontend-dist/assets/{ohash.D__AXeF1-CNudYmrX.js → ohash.D__AXeF1-Bj3Sy1wQ.js} +1 -1
- package/frontend-dist/assets/{useClipboard-aPMKfK25.js → useClipboard-XyA4kDfF.js} +1 -1
- package/frontend-dist/assets/useForwardExpose-CIZH3-CG.js +1 -0
- package/frontend-dist/assets/x-CTNEl6Fz.js +1 -0
- package/frontend-dist/index.html +7 -7
- package/package.json +1 -1
- package/frontend-dist/assets/CardContent-B40ArIqh.js +0 -1
- package/frontend-dist/assets/CardTitle-DjG2kSF3.js +0 -1
- package/frontend-dist/assets/Checkbox-Cw0rq2D9.js +0 -1
- package/frontend-dist/assets/CollapsibleTrigger-BvYqNbGA.js +0 -1
- package/frontend-dist/assets/Collection-CQ4pV54w.js +0 -3
- package/frontend-dist/assets/Dashboard-CsOTBnSa.js +0 -3
- package/frontend-dist/assets/DialogTitle-PS2W-IfG.js +0 -1
- package/frontend-dist/assets/Input-toxjzsir.js +0 -1
- package/frontend-dist/assets/Label-fZNDEQjf.js +0 -1
- package/frontend-dist/assets/LogResponseViewer-B9kSncNr.js +0 -3
- package/frontend-dist/assets/Login-DRm9DHq1.js +0 -1
- package/frontend-dist/assets/Logs-NHxebwmP.js +0 -1
- package/frontend-dist/assets/ModelMappings-DV0RPnO2.js +0 -1
- package/frontend-dist/assets/Monitor-B5TYWb2n.js +0 -1
- package/frontend-dist/assets/PopperContent-BvKlcZEO.js +0 -1
- package/frontend-dist/assets/Providers-D1Rauu-D.js +0 -1
- package/frontend-dist/assets/ProxyEnhancement-B2OliarO.js +0 -5
- package/frontend-dist/assets/RetryRules-BWu2gicT.js +0 -1
- package/frontend-dist/assets/RouterKeys-BP6XJCVa.js +0 -1
- package/frontend-dist/assets/RovingFocusItem-DHfpgdA0.js +0 -1
- package/frontend-dist/assets/SelectValue-CFf_mD9E.js +0 -1
- package/frontend-dist/assets/Setup-BMjCT-Tl.js +0 -1
- package/frontend-dist/assets/Switch-BGCQ7puL.js +0 -1
- package/frontend-dist/assets/TableHeader-DAOs6nSA.js +0 -1
- package/frontend-dist/assets/TabsTrigger-DBAYM66g.js +0 -1
- package/frontend-dist/assets/VisuallyHidden-Dh7svQf3.js +0 -1
- package/frontend-dist/assets/VisuallyHiddenInput-BOaRSEmd.js +0 -1
- package/frontend-dist/assets/alert-dialog-CUNSZqpB.js +0 -1
- package/frontend-dist/assets/button-CfQs66fX.js +0 -1
- package/frontend-dist/assets/dialog-DQFRGKR6.js +0 -1
- package/frontend-dist/assets/index--5JhZIwi.js +0 -1
- package/frontend-dist/assets/index-Bx15k8FA.css +0 -1
- package/frontend-dist/assets/lib-BJNsNHLO.js +0 -1
- package/frontend-dist/assets/useForwardExpose-u2vjohek.js +0 -1
- package/frontend-dist/assets/useNonce-ClXGIm-8.js +0 -1
- package/frontend-dist/assets/x-ILQhskuj.js +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{A as e,C as t,I as n,N as r,S as i,Y as a,_ as o,dt as s,mt as c,ot as l,v as u,z as d}from"./client-BBW9-06a.js";import{i as f}from"./button-B3kgf-D2.js";import{C as p,c as m,d as h,f as g,g as _,o as v,s as y,u as b,v as x,w as S}from"./badge-HGT44FNA.js";import{c as C,t as w}from"./useForwardExpose-CIZH3-CG.js";var[T,E]=S(`DialogRoot`),D=t({inheritAttrs:!1,__name:`DialogRoot`,props:{open:{type:Boolean,required:!1,default:void 0},defaultOpen:{type:Boolean,required:!1,default:!1},modal:{type:Boolean,required:!1,default:!0}},emits:[`update:open`],setup(e,{emit:t}){let n=e,r=C(n,`open`,t,{defaultValue:n.defaultOpen,passive:n.open===void 0}),i=l(),a=l(),{modal:o}=s(n);return E({open:r,modal:o,openModal:()=>{r.value=!0},onOpenChange:e=>{r.value=e},onOpenToggle:()=>{r.value=!r.value},contentId:``,titleId:``,descriptionId:``,triggerElement:i,contentElement:a}),(e,t)=>d(e.$slots,`default`,{open:c(r),close:()=>r.value=!1})}}),O=t({__name:`DialogClose`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`button`}},setup(t){let r=t;w();let i=T();return(t,s)=>(n(),o(c(f),e(r,{type:t.as===`button`?`button`:void 0,onClick:s[0]||=e=>c(i).onOpenChange(!1)}),{default:a(()=>[d(t.$slots,`default`)]),_:3},16,[`type`]))}}),k=t({__name:`DialogContentImpl`,props:{forceMount:{type:Boolean,required:!1},trapFocus:{type:Boolean,required:!1},disableOutsidePointerEvents:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`escapeKeyDown`,`pointerDownOutside`,`focusOutside`,`interactOutside`,`openAutoFocus`,`closeAutoFocus`],setup(t,{emit:s}){let l=t,u=s,f=T(),{forwardRef:g,currentElement:_}=w();return f.titleId||=h(void 0,`reka-dialog-title`),f.descriptionId||=h(void 0,`reka-dialog-description`),r(()=>{f.contentElement=_,p()!==document.body&&(f.triggerElement.value=p())}),(t,r)=>(n(),o(c(y),{"as-child":``,loop:``,trapped:l.trapFocus,onMountAutoFocus:r[5]||=e=>u(`openAutoFocus`,e),onUnmountAutoFocus:r[6]||=e=>u(`closeAutoFocus`,e)},{default:a(()=>[i(c(m),e({id:c(f).contentId,ref:c(g),as:t.as,"as-child":t.asChild,"disable-outside-pointer-events":t.disableOutsidePointerEvents,role:`dialog`,"aria-describedby":c(f).descriptionId,"aria-labelledby":c(f).titleId,"data-state":c(v)(c(f).open.value)},t.$attrs,{onDismiss:r[0]||=e=>c(f).onOpenChange(!1),onEscapeKeyDown:r[1]||=e=>u(`escapeKeyDown`,e),onFocusOutside:r[2]||=e=>u(`focusOutside`,e),onInteractOutside:r[3]||=e=>u(`interactOutside`,e),onPointerDownOutside:r[4]||=e=>u(`pointerDownOutside`,e)}),{default:a(()=>[d(t.$slots,`default`)]),_:3},16,[`id`,`as`,`as-child`,`disable-outside-pointer-events`,`aria-describedby`,`aria-labelledby`,`data-state`])]),_:3},8,[`trapped`]))}}),A=t({__name:`DialogContentModal`,props:{forceMount:{type:Boolean,required:!1},trapFocus:{type:Boolean,required:!1},disableOutsidePointerEvents:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`escapeKeyDown`,`pointerDownOutside`,`focusOutside`,`interactOutside`,`openAutoFocus`,`closeAutoFocus`],setup(t,{emit:r}){let i=t,s=r,l=T(),u=_(s),{forwardRef:f,currentElement:p}=w();return g(p),(t,r)=>(n(),o(k,e({...i,...c(u)},{ref:c(f),"trap-focus":c(l).open.value,"disable-outside-pointer-events":!0,onCloseAutoFocus:r[0]||=e=>{e.defaultPrevented||(e.preventDefault(),c(l).triggerElement.value?.focus())},onPointerDownOutside:r[1]||=e=>{let t=e.detail.originalEvent,n=t.button===0&&t.ctrlKey===!0;(t.button===2||n)&&e.preventDefault()},onFocusOutside:r[2]||=e=>{e.preventDefault()}}),{default:a(()=>[d(t.$slots,`default`)]),_:3},16,[`trap-focus`]))}}),j=t({__name:`DialogContentNonModal`,props:{forceMount:{type:Boolean,required:!1},trapFocus:{type:Boolean,required:!1},disableOutsidePointerEvents:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`escapeKeyDown`,`pointerDownOutside`,`focusOutside`,`interactOutside`,`openAutoFocus`,`closeAutoFocus`],setup(t,{emit:r}){let i=t,s=_(r);w();let u=T(),f=l(!1),p=l(!1);return(t,r)=>(n(),o(k,e({...i,...c(s)},{"trap-focus":!1,"disable-outside-pointer-events":!1,onCloseAutoFocus:r[0]||=e=>{e.defaultPrevented||(f.value||c(u).triggerElement.value?.focus(),e.preventDefault()),f.value=!1,p.value=!1},onInteractOutside:r[1]||=e=>{e.defaultPrevented||(f.value=!0,e.detail.originalEvent.type===`pointerdown`&&(p.value=!0));let t=e.target;c(u).triggerElement.value?.contains(t)&&e.preventDefault(),e.detail.originalEvent.type===`focusin`&&p.value&&e.preventDefault()}}),{default:a(()=>[d(t.$slots,`default`)]),_:3},16))}}),M=t({__name:`DialogContent`,props:{forceMount:{type:Boolean,required:!1},disableOutsidePointerEvents:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`escapeKeyDown`,`pointerDownOutside`,`focusOutside`,`interactOutside`,`openAutoFocus`,`closeAutoFocus`],setup(t,{emit:r}){let i=t,s=r,l=T(),u=_(s),{forwardRef:f}=w();return(t,r)=>(n(),o(c(b),{present:t.forceMount||c(l).open.value},{default:a(()=>[c(l).modal.value?(n(),o(A,e({key:0,ref:c(f)},{...i,...c(u),...t.$attrs}),{default:a(()=>[d(t.$slots,`default`)]),_:3},16)):(n(),o(j,e({key:1,ref:c(f)},{...i,...c(u),...t.$attrs}),{default:a(()=>[d(t.$slots,`default`)]),_:3},16))]),_:3},8,[`present`]))}}),N=t({__name:`DialogDescription`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`p`}},setup(t){let r=t;w();let i=T();return(t,s)=>(n(),o(c(f),e(r,{id:c(i).descriptionId}),{default:a(()=>[d(t.$slots,`default`)]),_:3},16,[`id`]))}}),P=t({__name:`DialogOverlayImpl`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){let t=T();return x(!0),w(),(e,r)=>(n(),o(c(f),{as:e.as,"as-child":e.asChild,"data-state":c(t).open.value?`open`:`closed`,style:{"pointer-events":`auto`}},{default:a(()=>[d(e.$slots,`default`)]),_:3},8,[`as`,`as-child`,`data-state`]))}}),F=t({__name:`DialogOverlay`,props:{forceMount:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(t){let r=T(),{forwardRef:s}=w();return(t,l)=>c(r)?.modal.value?(n(),o(c(b),{key:0,present:t.forceMount||c(r).open.value},{default:a(()=>[i(P,e(t.$attrs,{ref:c(s),as:t.as,"as-child":t.asChild}),{default:a(()=>[d(t.$slots,`default`)]),_:3},16,[`as`,`as-child`])]),_:3},8,[`present`])):u(`v-if`,!0)}}),I=t({__name:`DialogTitle`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`h2`}},setup(t){let r=t,i=T();return w(),(t,s)=>(n(),o(c(f),e(r,{id:c(i).titleId}),{default:a(()=>[d(t.$slots,`default`)]),_:3},16,[`id`]))}});export{O as a,M as i,F as n,D as o,N as r,I as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{C as e,I as t,X as n,c as r,gt as i,mt as a,tt as o,y as s}from"./client-BBW9-06a.js";import{r as c}from"./button-B3kgf-D2.js";import{c as l}from"./useForwardExpose-CIZH3-CG.js";var u=e({__name:`Input`,props:{defaultValue:{},modelValue:{},class:{type:[Boolean,null,String,Object,Array]}},emits:[`update:modelValue`],setup(e,{emit:u}){let d=e,f=l(d,`modelValue`,u,{passive:!0,defaultValue:d.defaultValue});return(e,l)=>n((t(),s(`input`,{"onUpdate:modelValue":l[0]||=e=>o(f)?f.value=e:null,"data-slot":`input`,class:i(a(c)(`dark:bg-input/30 border-input focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 disabled:bg-input/50 dark:disabled:bg-input/80 h-8 rounded-lg border bg-transparent px-2.5 py-1 text-base transition-colors file:h-6 file:text-sm file:font-medium focus-visible:ring-3 aria-invalid:ring-3 md:text-sm w-full min-w-0 outline-none file:inline-flex file:border-0 file:bg-transparent file:text-foreground placeholder:text-muted-foreground disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50`,d.class))},null,2)),[[r,a(f)]])}});export{u as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{A as e,C as t,I as n,Y as r,_ as i,mt as a,z as o}from"./client-BBW9-06a.js";import{i as s,r as c}from"./button-B3kgf-D2.js";import{h as l,t as u}from"./useForwardExpose-CIZH3-CG.js";var d=t({__name:`Label`,props:{for:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`label`}},setup(t){let c=t;return u(),(t,l)=>(n(),i(a(s),e(c,{onMousedown:l[0]||=e=>{!e.defaultPrevented&&e.detail>1&&e.preventDefault()}}),{default:r(()=>[o(t.$slots,`default`)]),_:3},16))}}),f=t({__name:`Label`,props:{for:{},asChild:{type:Boolean},as:{},class:{type:[Boolean,null,String,Object,Array]}},setup(t){let s=t,u=l(s,`class`);return(t,l)=>(n(),i(a(d),e({"data-slot":`label`},a(u),{class:a(c)(`gap-2 text-sm leading-none font-medium group-data-[disabled=true]:opacity-50 peer-disabled:opacity-50 flex items-center select-none group-data-[disabled=true]:pointer-events-none peer-disabled:cursor-not-allowed`,s.class)}),{default:r(()=>[o(t.$slots,`default`)]),_:3},16,[`class`]))}});export{f as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{C as e,I as t,S as n,Y as r,a as i,g as a,mt as o,ot as s,t as c,u as l,v as u,x as d,y as f,yt as p}from"./client-BBW9-06a.js";import{n as m}from"./button-B3kgf-D2.js";import{t as h}from"./Label-9sUKofNb.js";import{n as g,t as _}from"./CardContent-DKzAH8lX.js";import{t as v}from"./Input-C5_w9X6Y.js";var y={class:`min-h-screen flex items-center justify-center bg-background`},b={key:0,class:`text-destructive text-sm`},x=e({__name:`Login`,setup(e){let x=i(),S=s(``),C=s(``),w=s(!1);async function T(){if(S.value){C.value=``,w.value=!0;try{await c.login(S.value),x.push(`/`)}catch(e){C.value=e.response?.data?.error?.message||`登录失败`}finally{w.value=!1}}}return(e,i)=>(t(),f(`div`,y,[n(o(g),{class:`w-full max-w-sm shadow-lg`},{default:r(()=>[n(o(_),{class:`pt-6`},{default:r(()=>[i[2]||=a(`div`,{class:`text-center mb-6`},[a(`div`,{class:`w-12 h-12 bg-primary rounded-lg mx-auto mb-3 flex items-center justify-center`},[a(`svg`,{class:`w-7 h-7 text-white`,fill:`none`,stroke:`currentColor`,viewBox:`0 0 24 24`},[a(`path`,{"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`,d:`M8 9l3 3-3 3m5 0h3M5 20h14a2 2 0 002-2V6a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z`})])]),a(`h1`,{class:`text-xl font-semibold text-foreground`},`LLM Simple Router`),a(`p`,{class:`text-sm text-muted-foreground mt-1`},`管理后台登录`)],-1),a(`form`,{onSubmit:l(T,[`prevent`]),class:`space-y-4`},[a(`div`,null,[n(o(h),{class:`block text-sm font-medium text-foreground mb-1`},{default:r(()=>[...i[1]||=[d(`密码`,-1)]]),_:1}),n(o(v),{modelValue:S.value,"onUpdate:modelValue":i[0]||=e=>S.value=e,type:`password`,placeholder:`输入管理员密码`,disabled:w.value},null,8,[`modelValue`,`disabled`])]),C.value?(t(),f(`p`,b,p(C.value),1)):u(``,!0),n(o(m),{type:`submit`,class:`w-full`,disabled:w.value},{default:r(()=>[d(p(w.value?`登录中...`:`登 录`),1)]),_:1},8,[`disabled`])],32)]),_:1})]),_:1})]))}});export{x as default};
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import{C as e,I as t,N as n,R as r,S as i,Y as a,_ as o,f as s,g as c,gt as l,h as u,it as ee,mt as d,ot as f,t as p,v as m,x as h,y as g,yt as _}from"./client-BBW9-06a.js";import{a as te,i as v,n as ne,r as y,t as b}from"./SelectValue-DhqRtJKk.js";import{n as x,r as S}from"./button-B3kgf-D2.js";import{t as C}from"./badge-HGT44FNA.js";import{n as w,r as T,t as E}from"./CollapsibleTrigger-BC4bE5yr.js";import{a as re,i as D,n as O,o as k,r as A,s as j,t as ie}from"./dialog-BFhbK4vw.js";import{t as ae}from"./Label-9sUKofNb.js";import{i as M,n as N,r as P,t as F}from"./TabsTrigger-D4xjbMaQ.js";import{n as I}from"./lib-D-4ywYag.js";import{n as L,t as R}from"./CardContent-DKzAH8lX.js";import{t as z}from"./CardHeader-BBKKDXEh.js";import{a as oe,i as B,n as V,o as se,r as H,t as ce}from"./TableHeader-D9I1uQTp.js";import{t as U}from"./Input-C5_w9X6Y.js";import{t as le}from"./useClipboard-XyA4kDfF.js";var W=e({__name:`Skeleton`,props:{class:{type:[Boolean,null,String,Object,Array]}},setup(e){let n=e;return(e,r)=>(t(),g(`div`,{"data-slot":`skeleton`,class:l(d(S)(`bg-muted rounded-md animate-pulse`,n.class))},null,2))}}),G={class:`relative`},K={class:`bg-background text-foreground rounded-md p-3 text-xs overflow-auto max-h-[40vh] whitespace-pre-wrap break-all border`},ue=e({__name:`JsonCopyBlock`,props:{content:{},hideCopyButton:{type:Boolean}},setup(e){let n=e,{copied:r,copy:i}=le();async function s(){await i(n.content)}return(n,i)=>(t(),g(`div`,G,[e.hideCopyButton?m(``,!0):(t(),o(d(x),{key:0,variant:`outline`,size:`sm`,class:`absolute top-2 right-2 h-7 text-xs`,onClick:s},{default:a(()=>[h(_(d(r)?`已复制`:`复制`),1)]),_:1})),c(`pre`,K,_(e.content),1)]))}}),q={class:`opacity-70`},J=e({__name:`StatPill`,props:{label:{},value:{},highlight:{type:Boolean}},setup(e){return(n,r)=>(t(),o(d(C),{variant:e.highlight?`default`:`secondary`,class:`font-mono text-sm px-3 py-1.5 rounded-md gap-1`},{default:a(()=>[c(`span`,q,_(e.label)+`:`,1),h(` `+_(e.value),1)]),_:1},8,[`variant`]))}}),Y=e({__name:`TagPill`,props:{label:{}},setup(e){return(n,r)=>(t(),o(d(C),{variant:`outline`,class:`font-mono text-[10px] rounded-full px-2 py-0.5`},{default:a(()=>[h(_(e.label),1)]),_:1}))}}),X={system:`bg-muted text-muted-foreground`,user:`bg-info-light text-info-dark dark:text-info`,assistant:`bg-success-light text-success-dark dark:text-success`,tool:`bg-warning-light text-warning-dark dark:text-warning`},Z={thinking:`bg-info-light text-info-dark dark:text-info`,tool_use:`bg-warning-light text-warning-dark dark:text-warning`,tool_result:`bg-success-light text-success-dark dark:text-success`,text:`bg-success-light text-success-dark dark:text-success`,error:`bg-danger-light text-danger-dark dark:text-danger`},Q={thinking:`border-info`,tool_use:`border-warning`,tool_result:`border-success`,text:`border-success`,error:`border-danger`},$={"system-reminder":`bg-muted text-muted-foreground`,thinking:`bg-info-light text-info-dark dark:text-info`,"antml:function_calls":`bg-warning-light text-warning-dark dark:text-warning`,"antml:function_results":`bg-success-light text-success-dark dark:text-success`,tool_use:`bg-warning-light text-warning-dark dark:text-warning`,tool_result:`bg-success-light text-success-dark dark:text-success`,"env-info":`bg-info-light text-info-dark dark:text-info`,feedback:`bg-warning-light text-warning-dark dark:text-warning`,error:`bg-danger-light text-danger-dark dark:text-danger`,"local-command-caveat":`bg-muted text-muted-foreground`,"local-command-stdout":`bg-muted text-muted-foreground`,"command-name":`bg-info-light text-info-dark dark:text-info`,"command-message":`bg-info-light text-info-dark dark:text-info`,"command-args":`bg-info-light text-info-dark dark:text-info`},de=`bg-muted text-muted-foreground`,fe=e=>X[e]??de,pe=e=>Z[e]??de,me=e=>Q[e]??`border-muted`,he=e=>$[e]??de,ge={class:`w-8 h-8 rounded-full bg-teal-600 text-white flex items-center justify-center text-xs font-bold`},_e={class:`flex-1`},ve={class:`text-sm font-medium text-teal-900 dark:text-teal-100`},ye={key:0,class:`text-xs text-teal-700 dark:text-teal-300`},be={key:0,class:`text-right text-xs text-teal-700 dark:text-teal-300 space-y-0.5`},xe=e({__name:`InfoBanner`,props:{icon:{},title:{},subtitle:{},details:{}},setup(e){return(n,l)=>(t(),o(d(L),{class:`border-teal-200 dark:border-teal-800`},{default:a(()=>[i(d(R),{class:`p-3 flex items-center gap-3 bg-teal-50 dark:bg-teal-900`},{default:a(()=>[c(`div`,ge,_(e.icon),1),c(`div`,_e,[c(`div`,ve,_(e.title),1),e.subtitle?(t(),g(`div`,ye,_(e.subtitle),1)):m(``,!0)]),e.details?.length?(t(),g(`div`,be,[(t(!0),g(s,null,r(e.details,e=>(t(),g(`div`,{key:e},_(e),1))),128))])):m(``,!0)]),_:1})]),_:1}))}}),Se=2,Ce=/<([a-zA-Z][a-zA-Z0-9:_-]*)(?:\s[^>]*)?>([\s\S]*?)<\/\1>/g;function we(e){let t=new RegExp(Ce.source,`g`),n=[],r=0,i;for(;(i=t.exec(e))!==null;){let a=e.slice(r,i.index).trim();a&&n.push({type:`text`,text:a}),n.push({type:i[1],text:i[2]}),r=t.lastIndex}let a=e.slice(r).trim();return a&&n.push({type:`text`,text:a}),n.length>0?n:[{type:`text`,text:e}]}function Te(e){return typeof e==`string`?we(e):Array.isArray(e)?e.flatMap(e=>{let t=e,n=String(t.type||`unknown`);if(n===`text`&&typeof t.text==`string`)return we(t.text);if(n===`image`)return[{type:`image`,text:``}];if(n===`tool_use`){let e=String(t.name||``);return[{type:`tool_use`,text:t.input?JSON.stringify(t.input,null,Se):``,label:e||void 0}]}if(n===`tool_result`){let e=t.content,n=``;return typeof e==`string`?n=e:Array.isArray(e)&&(n=e.map(e=>typeof e.text==`string`?e.text:JSON.stringify(e)).join(`
|
|
2
|
+
`)),[{type:`tool_result`,text:n}]}return n===`thinking`?[{type:`thinking`,text:String(t.thinking||``)}]:[{type:n,text:typeof t.text==`string`?t.text:``}]}):[{type:`text`,text:String(e??``)}]}var Ee={key:0,class:`flex items-center justify-between py-2 border-b mb-2 sticky top-0 z-10 bg-background`},De={key:0,class:`text-destructive text-sm`},Oe={key:1,class:`text-xs text-muted-foreground break-all`},ke={class:`flex flex-wrap gap-2`},Ae={class:`rounded-md border overflow-hidden mt-1`},je={key:2,class:`space-y-2`},Me={key:0,class:`text-xs text-muted-foreground`},Ne={key:0},Pe={key:0,class:`text-sm`},Fe={key:1,class:`text-sm whitespace-pre-wrap break-all`},Ie={key:1,class:`text-xs text-muted-foreground`},Le={class:`mt-1 whitespace-pre-wrap break-all text-[11px] bg-muted rounded-md p-2 border`},Re={key:2,class:`text-xs`},ze={key:3},Be={class:`flex flex-wrap gap-1`},Ve={key:4},He={key:0},Ue={class:`mt-1 whitespace-pre-wrap break-all text-xs bg-muted rounded p-2 border`},We=8,Ge=1024,Ke=e({__name:`LogRequestViewer`,props:{raw:{},apiType:{},showUrl:{type:Boolean},mode:{}},setup(e){let n=e,p=f(!1),te=ee({}),v=f(!1),{copied:ne,copy:y}=le(),b=u(()=>{try{return JSON.parse(n.raw)}catch{return{}}}),S=u(()=>{try{return JSON.parse(n.raw),!1}catch{return!0}});async function re(){await y(n.raw)}let D=u(()=>{let e=b.value.headers||{},t=new Set(Object.keys(e));return Object.entries(e).filter(([e])=>t.has(e)).map(([e,t])=>e.toLowerCase()===`authorization`?[e,`Bearer sk-****`]:[e,t])}),O=u(()=>{let e=b.value.body;if(typeof e==`string`)try{return JSON.parse(e)}catch{return{}}return e||{}}),k=u(()=>(b.value.headers?.[`user-agent`]||``).includes(`claude-cli`)),A=u(()=>{let e=(b.value.headers?.[`user-agent`]||``).match(/claude-cli\/[^\s]+\s+\(([^)]+)\)/);return e?e[1]:`external, cli`}),j=u(()=>{let e=O.value.thinking;return e&&typeof e.budget_tokens==`number`?e.budget_tokens:void 0}),ie=u(()=>{let e=O.value.tools;return Array.isArray(e)?e.length:void 0}),ae=u(()=>{let e=[];return j.value!=null&&e.push(`thinking: ${j.value} tokens`),ie.value!=null&&e.push(`tools: ${ie.value} 个`),e}),I=u(()=>(O.value.messages||[]).map(e=>{let t=Te(e.content),n={};for(let e of t)e.type!==`text`&&e.text&&(n[e.type]=(n[e.type]||0)+1);let r=new Set(Object.keys(n)),i=Object.entries(n).filter(([e])=>r.has(e)).map(([e,t])=>`${e}${t>1?` x${t}`:``}`).join(`, `)||void 0;return{role:e.role,blocks:t,blockSummary:i}})),U=u(()=>(O.value.tools||[]).map(e=>e.function?.name||e.name||`unknown`).filter(Boolean)),W=u(()=>v.value?U.value:U.value.slice(0,We)),G=u(()=>{let e=O.value.system;return e?Array.isArray(e)?e.map(e=>({type:e.type||`text`,text:e.text||``})):typeof e==`string`?[{type:`text`,text:e}]:[{type:`unknown`,text:JSON.stringify(e)}]:[]}),K=new Set([`model`,`stream`,`max_tokens`,`thinking`,`messages`,`tools`,`system`]),q=u(()=>{let e={};for(let t of Object.keys(O.value))K.has(t)||(e[t]=O.value[t]);return e}),X=u(()=>Object.keys(q.value));function Z(e){let t=new TextEncoder().encode(e).length;return t<Ge?`${t}B`:`${(t/Ge).toFixed(1)}KB`}return(n,u)=>(t(),o(d(M),{"default-value":e.mode??`structured`,"model-value":e.mode,class:`w-full`},{default:a(()=>[e.mode?m(``,!0):(t(),g(`div`,Ee,[i(d(N),null,{default:a(()=>[i(d(F),{value:`structured`},{default:a(()=>[...u[2]||=[h(`结构化`,-1)]]),_:1}),i(d(F),{value:`raw`},{default:a(()=>[...u[3]||=[h(`原始 JSON`,-1)]]),_:1})]),_:1}),i(d(x),{variant:`ghost`,size:`xs`,class:`h-auto py-1`,onClick:re},{default:a(()=>[h(_(d(ne)?`已复制`:`复制 JSON`),1)]),_:1})])),i(d(P),{value:`structured`,class:`space-y-3`},{default:a(()=>[S.value?(t(),g(`div`,De,`解析失败,请切换到原始 JSON 查看`)):(t(),g(s,{key:1},[k.value?(t(),o(xe,{key:0,icon:`CC`,title:`Claude Code 请求`,subtitle:`user-agent: ${A.value}`,details:ae.value},null,8,[`subtitle`,`details`])):m(``,!0),e.showUrl&&b.value.url?(t(),g(`div`,Oe,_(b.value.url),1)):m(``,!0),c(`div`,ke,[b.value.body?.model?(t(),o(J,{key:0,label:`model`,value:String(b.value.body.model),highlight:!0},null,8,[`value`])):m(``,!0),b.value.body?.stream==null?m(``,!0):(t(),o(J,{key:1,label:`stream`,value:String(b.value.body.stream)},null,8,[`value`])),b.value.body?.max_tokens==null?m(``,!0):(t(),o(J,{key:2,label:`max_tokens`,value:String(b.value.body.max_tokens)},null,8,[`value`])),b.value.body?.thinking==null?m(``,!0):(t(),o(Y,{key:3,label:`thinking`}))]),i(d(T),{open:p.value,"onUpdate:open":u[0]||=e=>p.value=e},{default:a(()=>[i(d(E),{"as-child":``},{default:a(()=>[i(d(x),{variant:`ghost`,size:`xs`,class:`px-0 h-auto`},{default:a(()=>[h(` Headers (`+_(D.value.length)+` 个) `,1)]),_:1})]),_:1}),i(d(w),null,{default:a(()=>[c(`div`,Ae,[i(d(se),null,{default:a(()=>[i(d(ce),null,{default:a(()=>[i(d(H),null,{default:a(()=>[i(d(V),{class:`w-1/3`},{default:a(()=>[...u[4]||=[h(`Key`,-1)]]),_:1}),i(d(V),null,{default:a(()=>[...u[5]||=[h(`Value`,-1)]]),_:1})]),_:1})]),_:1}),i(d(oe),null,{default:a(()=>[(t(!0),g(s,null,r(D.value,([e,n])=>(t(),o(d(H),{key:e},{default:a(()=>[i(d(B),{class:`font-medium`},{default:a(()=>[h(_(e),1)]),_:2},1024),i(d(B),{class:`break-all`},{default:a(()=>[h(_(n),1)]),_:2},1024)]),_:2},1024))),128))]),_:1})]),_:1})])]),_:1})]),_:1},8,[`open`]),I.value.length?(t(),g(`div`,je,[u[7]||=c(`div`,{class:`text-xs font-medium text-muted-foreground`},`Messages`,-1),(t(!0),g(s,null,r(I.value,(e,n)=>(t(),o(d(L),{key:n,class:`bg-muted/40`},{default:a(()=>[i(d(z),{class:`pb-2 flex flex-row items-center gap-2`},{default:a(()=>[i(d(C),{class:l(d(fe)(e.role))},{default:a(()=>[h(_(e.role),1)]),_:2},1032,[`class`]),e.blockSummary?(t(),g(`span`,Me,_(e.blockSummary),1)):m(``,!0)]),_:2},1024),i(d(R),{class:`space-y-2`},{default:a(()=>[(t(!0),g(s,null,r(e.blocks,(e,r)=>(t(),g(`div`,{key:r},[e.type===`text`?(t(),g(`div`,Ne,[e.text.length>120&&!te[`${n}-${r}`]?(t(),g(`div`,Pe,[h(_(e.text.slice(0,120))+` `,1),i(d(x),{variant:`link`,size:`xs`,class:`px-0 h-auto`,onClick:e=>te[`${n}-${r}`]=!0},{default:a(()=>[...u[6]||=[h(`展开`,-1)]]),_:1},8,[`onClick`])])):(t(),g(`div`,Fe,_(e.text),1))])):e.text?(t(),g(`div`,Ie,[i(d(T),null,{default:a(()=>[i(d(E),{"as-child":``},{default:a(()=>[i(d(x),{variant:`ghost`,size:`xs`,class:`px-0 h-auto`},{default:a(()=>[i(d(C),{class:l([d(he)(e.type),`mr-1`])},{default:a(()=>[h(_(e.label||e.type),1)]),_:2},1032,[`class`]),h(` `+_(Z(e.text)),1)]),_:2},1024)]),_:2},1024),i(d(w),null,{default:a(()=>[c(`pre`,Le,_(e.text),1)]),_:2},1024)]),_:2},1024)])):(t(),g(`div`,Re,[i(d(C),{class:l([d(he)(e.type),`mr-1`])},{default:a(()=>[h(_(e.label||e.type),1)]),_:2},1032,[`class`])]))]))),128))]),_:2},1024)]),_:2},1024))),128))])):m(``,!0),U.value.length?(t(),g(`div`,ze,[u[8]||=c(`div`,{class:`text-xs font-medium text-muted-foreground mb-1`},`Tools`,-1),c(`div`,Be,[(t(!0),g(s,null,r(W.value,e=>(t(),o(Y,{key:e,label:e},null,8,[`label`]))),128)),U.value.length>8?(t(),o(d(x),{key:0,variant:`ghost`,size:`xs`,class:`px-1 h-5`,onClick:u[1]||=e=>v.value=!v.value},{default:a(()=>[h(_(v.value?`收起`:`+${U.value.length-8}`),1)]),_:1})):m(``,!0)])])):m(``,!0),G.value.length?(t(),g(`div`,Ve,[u[9]||=c(`div`,{class:`text-xs font-medium text-muted-foreground mb-1`},`System`,-1),i(d(L),{class:`bg-muted/40`},{default:a(()=>[i(d(R),{class:`space-y-2`},{default:a(()=>[(t(!0),g(s,null,r(G.value,(e,n)=>(t(),g(`div`,{key:n,class:`text-sm whitespace-pre-wrap break-all`},[i(d(C),{variant:`outline`,class:`mb-1`},{default:a(()=>[h(_(e.type),1)]),_:2},1024),e.text?(t(),g(`div`,He,_(e.text),1)):m(``,!0)]))),128))]),_:1})]),_:1})])):m(``,!0),X.value.length?(t(),o(d(T),{key:5},{default:a(()=>[i(d(E),{"as-child":``},{default:a(()=>[i(d(x),{variant:`ghost`,size:`xs`,class:`px-0 h-auto`},{default:a(()=>[...u[10]||=[h(` 其他字段 `,-1)]]),_:1})]),_:1}),i(d(w),null,{default:a(()=>[c(`pre`,Ue,_(JSON.stringify(q.value,null,2)),1)]),_:1})]),_:1})):m(``,!0)],64))]),_:1}),i(d(P),{value:`raw`},{default:a(()=>[i(ue,{content:e.raw,"hide-copy-button":``},null,8,[`content`])]),_:1})]),_:1},8,[`default-value`,`model-value`]))}}),qe={class:`text-xs text-foreground`},Je=e({__name:`SseEventLine`,props:{eventType:{},summary:{},highlight:{type:Boolean}},setup(e){return(n,r)=>(t(),g(`div`,{class:l([`px-3 py-2 flex items-center gap-2`,e.highlight?`bg-warning/10`:``])},[c(`span`,{class:l([`px-1.5 py-0.5 rounded text-[10px] font-medium`,{"bg-teal-200 text-teal-700 dark:bg-teal-800 dark:text-teal-300":e.eventType===`message_start`,"bg-teal-300 text-teal-700 dark:bg-teal-700 dark:text-teal-200":e.eventType===`content_block_start`,"bg-muted text-muted-foreground":e.eventType===`content_block_delta`,"bg-teal-500 text-white dark:bg-teal-600":e.eventType===`message_delta`,"bg-success-light text-success":e.eventType===`message_stop`}])},_(e.eventType),3),c(`span`,qe,_(e.summary),1)],2))}}),Ye=5,Xe=2,Ze=3;function Qe(e,t,n){let r=u(()=>{if(!t||!e.value)return[];let n=e.value.split(`
|
|
3
|
+
`),r=[];for(let e of n){let t=e.trim();if(!t.startsWith(`data:`))continue;let n=t.slice(Ye).trim();if(n===`[DONE]`){r.push({type:`done`,data:n});continue}try{let e=JSON.parse(n);r.push({type:`data`,data:e})}catch{r.push({type:`raw`,data:n})}}return r});return{sseEvents:r,assembledBlocks:u(()=>{if(!t||!e.value)return[];let n=[],i=null;for(let e of r.value){if(e.type!==`data`)continue;let t=e.data;if(t.type===`content_block_start`){let e=t.content_block;if(i={type:String(e?.type||``),content:``,eventCount:0,toolName:e?.name?String(e.name):void 0},i.type===`tool_use`&&e?.input){let t=e.input;Object.keys(t).length>0&&(i.content=JSON.stringify(t,null,Xe))}continue}if(t.type===`content_block_delta`&&i){let e=t.delta;i.content+=e.thinking||e.text||e.partial_json||``,i.eventCount++;continue}t.type===`content_block_stop`&&i&&(n.push(i),i=null)}return i&&n.push(i),n}),sseMeta:u(()=>{let e=``,t=``,n=0,i=0,a=``;for(let o of r.value){if(o.type!==`data`)continue;let r=o.data;if(r.type===`message_start`){let i=r.message;e=String(i?.id||``),t=String(i?.model||``),n=Number(i?.usage?.input_tokens??0)}if(r.type===`message_delta`){let e=r.delta,t=r.usage;a=String(e?.stop_reason||``),i=Number(t?.output_tokens??0)}}return{id:e,model:t,inputTokens:n,outputTokens:i,stopReason:a}}),openaiAssembled:u(()=>{if(n!==`openai`||!t)return null;let e=``,i=``,a=``,o=null,s=0;for(let t of r.value){if(t.type!==`data`)continue;let n=t.data,r=n.choices||[],c=r[0]?.delta;c?.role&&(e=String(c.role)),c?.content&&(i+=String(c.content),s++),r[0]?.finish_reason&&(a=String(r[0].finish_reason)),n.usage&&(o=n.usage)}return{role:e,content:i,contentEventCount:s,finishReason:a,usage:o}}),anthropicMessageStart:u(()=>{for(let e of r.value){if(e.type!==`data`)continue;let t=e.data;if(t.type===`message_start`){let e=t.message;return{id:String(e?.id||``),model:String(e?.model||``),input_tokens:Number(e?.usage?.input_tokens??0)}}}return null}),anthropicContentBlockStarts:u(()=>{let e=[];for(let t of r.value){if(t.type!==`data`)continue;let n=t.data;if(n.type===`content_block_start`){let t=n.content_block;e.push({index:Number(n.index??0),type:String(t?.type||``)})}}return e}),anthropicDeltaGroups:u(()=>{let e={};for(let t of r.value){if(t.type!==`data`)continue;let n=t.data;if(n.type!==`content_block_delta`)continue;let r=n.delta,i=String(r?.type||`unknown`);e[i]||(e[i]={deltaType:i,kept:0,folded:0,foldedChars:0});let a=e[i];if(a.kept<Ze)a.kept++;else{a.folded++;let e=r,t=String(e.thinking||e.text||e.partial_json||``);a.foldedChars+=t.length}}return Object.values(e).filter(e=>e.kept>0||e.folded>0)}),anthropicMessageDelta:u(()=>{for(let e of r.value){if(e.type!==`data`)continue;let t=e.data;if(t.type===`message_delta`){let e=t.delta,n=t.usage;return{output_tokens:Number(n?.output_tokens??0),stop_reason:String(e?.stop_reason||``)}}}return null}),anthropicMessageStop:u(()=>r.value.some(e=>e.type===`data`&&e.data.type===`message_stop`)),openaiSseRole:u(()=>{for(let e of r.value){if(e.type!==`data`)continue;let t=(e.data.choices||[])[0]?.delta;if(t?.role)return String(t.role)}return null}),openaiSseFirstContent:u(()=>{for(let e of r.value){if(e.type!==`data`)continue;let t=(e.data.choices||[])[0]?.delta;if(t?.content)return String(t.content)}return null}),openaiSseFinishReason:u(()=>{for(let e of r.value){if(e.type!==`data`)continue;let t=(e.data.choices||[])[0]?.finish_reason;if(t)return String(t)}return null}),openaiSseCollapsedCount:u(()=>{let e=0,t=!1;for(let n of r.value){if(n.type!==`data`)continue;let r=(n.data.choices||[])[0]?.delta;if(!t){r?.content&&(t=!0);continue}(r?.content||r?.role)&&e++}return e}),openaiSseUsage:u(()=>{for(let e=r.value.length-1;e>=0;e--){let t=r.value[e];if(t.type!==`data`)continue;let n=t.data.usage;if(n)return{prompt_tokens:n.prompt_tokens,completion_tokens:n.completion_tokens,total_tokens:n.total_tokens,cached_tokens:n.cached_tokens??n.prompt_tokens_details?.cached_tokens}}return null})}}var $e={key:0,class:`flex items-center justify-between py-2 border-b mb-2 sticky top-0 z-10 bg-background`},et={key:0,class:`text-destructive text-sm`},tt={class:`flex items-center gap-2`},nt={class:`rounded-md border overflow-hidden mt-1`},rt={class:`flex flex-wrap gap-2`},it={key:0,class:`space-y-2`},at={class:`mt-1 whitespace-pre-wrap break-all text-xs bg-muted rounded-md p-2 border`},ot={key:1,class:`grid grid-cols-2 sm:grid-cols-4 gap-2`},st={class:`font-medium`},ct={class:`font-medium`},lt={class:`font-medium`},ut={class:`font-medium`},dt={class:`flex flex-wrap gap-2`},ft={key:0,class:`space-y-2`},pt={class:`flex items-center gap-2 mb-2`},mt={key:0,class:`text-sm`},ht={key:1,class:`grid grid-cols-2 sm:grid-cols-4 gap-2`},gt={class:`font-medium`},_t={class:`font-medium`},vt={class:`font-medium`},yt={class:`font-medium`},bt={key:1,class:`space-y-3`},xt={class:`flex gap-1`},St={class:`flex flex-wrap gap-2`},Ct={class:`flex items-center gap-2 mb-2`},wt={class:`text-xs text-muted-foreground`},Tt={key:0,class:`text-xs font-mono`},Et={class:`whitespace-pre-wrap break-all text-sm bg-muted rounded-md p-3 border`},Dt={key:1,class:`whitespace-pre-wrap break-all text-sm bg-muted rounded-md p-3 border max-h-[40vh] overflow-auto`},Ot={class:`flex flex-wrap gap-2`},kt={class:`flex flex-wrap gap-2`},At={class:`whitespace-pre-wrap break-all text-sm bg-muted rounded-md p-3 max-h-[40vh] overflow-auto`},jt={key:0,class:`grid grid-cols-2 sm:grid-cols-4 gap-2`},Mt={class:`font-medium`},Nt={class:`font-medium`},Pt={class:`font-medium`},Ft={key:0,class:`text-sm`},It={key:1,class:`text-sm`},Lt={key:2,class:`text-sm`},Rt={key:3,class:`text-xs text-muted-foreground`},zt={key:4,class:`grid grid-cols-2 sm:grid-cols-4 gap-2`},Bt={class:`font-medium`},Vt={class:`font-medium`},Ht={class:`font-medium`},Ut={class:`font-medium`},Wt=400,Gt=e({__name:`LogResponseViewer`,props:{raw:{},apiType:{},isStream:{type:Boolean},mode:{}},setup(e){let n=e,p=u(()=>{try{return JSON.parse(n.raw)}catch{return null}}),te=u(()=>p.value===null),v=u(()=>(p.value?.statusCode??0)>=Wt?`destructive`:`default`),ne=u(()=>{let e=p.value?.headers||{};return Object.entries(e)}),y=u(()=>{if(!n.isStream&&p.value?.body)try{return JSON.parse(p.value.body)}catch{return{}}return{}}),b=u(()=>(y.value.choices||[]).map(e=>({role:e.message?.role||`assistant`,content:e.message?.content||``,finish_reason:e.finish_reason||``}))),S=u(()=>{let e=y.value.usage;return e?{prompt_tokens:e.prompt_tokens,completion_tokens:e.completion_tokens,total_tokens:e.total_tokens,cached_tokens:e.cached_tokens??e.prompt_tokens_details?.cached_tokens}:null}),re=u(()=>y.value.content||[]),D=u(()=>{let e=y.value.usage;return e?{input_tokens:e.input_tokens,output_tokens:e.output_tokens,cache_creation_input_tokens:e.cache_creation_input_tokens,cache_read_input_tokens:e.cache_read_input_tokens}:null}),{assembledBlocks:O,sseMeta:k,openaiAssembled:A,anthropicMessageStart:j,anthropicContentBlockStarts:ie,anthropicDeltaGroups:ae,anthropicMessageDelta:I,anthropicMessageStop:U,openaiSseRole:W,openaiSseFirstContent:G,openaiSseFinishReason:K,openaiSseCollapsedCount:q,openaiSseUsage:Y}=Qe(u(()=>p.value?.body),n.isStream,n.apiType),X=ee({}),Z=f(`assembled`),{copied:Q,copy:$}=le();async function de(){await $(n.raw)}return(n,u)=>(t(),o(d(M),{"default-value":e.mode??`structured`,"model-value":e.mode,class:`w-full`},{default:a(()=>[e.mode?m(``,!0):(t(),g(`div`,$e,[i(d(N),null,{default:a(()=>[i(d(F),{value:`structured`},{default:a(()=>[...u[2]||=[h(`结构化`,-1)]]),_:1}),i(d(F),{value:`raw`},{default:a(()=>[h(_(e.isStream?`原始 SSE 文本`:`原始 JSON`),1)]),_:1})]),_:1}),i(d(x),{variant:`ghost`,size:`xs`,class:`h-auto py-1`,onClick:de},{default:a(()=>[h(_(d(Q)?`已复制`:`复制`),1)]),_:1})])),i(d(P),{value:`structured`,class:`space-y-3`},{default:a(()=>[te.value?(t(),g(`div`,et,`解析失败,请切换到原始 JSON 查看`)):(t(),g(s,{key:1},[c(`div`,tt,[i(d(C),{variant:v.value},{default:a(()=>[h(`status: `+_(p.value.statusCode),1)]),_:1},8,[`variant`])]),i(d(T),null,{default:a(()=>[i(d(E),{"as-child":``},{default:a(()=>[i(d(x),{variant:`ghost`,size:`xs`,class:`px-0 h-auto text-xs`},{default:a(()=>[h(` Headers (`+_(ne.value.length)+` 个) `,1)]),_:1})]),_:1}),i(d(w),null,{default:a(()=>[c(`div`,nt,[i(d(se),null,{default:a(()=>[i(d(ce),null,{default:a(()=>[i(d(H),null,{default:a(()=>[i(d(V),{class:`w-1/3`},{default:a(()=>[...u[3]||=[h(`Key`,-1)]]),_:1}),i(d(V),null,{default:a(()=>[...u[4]||=[h(`Value`,-1)]]),_:1})]),_:1})]),_:1}),i(d(oe),null,{default:a(()=>[(t(!0),g(s,null,r(ne.value,([e,n])=>(t(),o(d(H),{key:e},{default:a(()=>[i(d(B),{class:`font-medium`},{default:a(()=>[h(_(e),1)]),_:2},1024),i(d(B),{class:`break-all`},{default:a(()=>[h(_(n),1)]),_:2},1024)]),_:2},1024))),128))]),_:1})]),_:1})])]),_:1})]),_:1}),e.isStream?(t(),g(`div`,bt,[c(`div`,xt,[i(d(x),{variant:`ghost`,class:l([Z.value===`assembled`?`bg-secondary`:``,`h-auto py-1`]),size:`xs`,onClick:u[0]||=e=>Z.value=`assembled`},{default:a(()=>[...u[16]||=[h(`完整响应`,-1)]]),_:1},8,[`class`]),i(d(x),{variant:`ghost`,class:l([Z.value===`raw-events`?`bg-secondary`:``,`h-auto py-1`]),size:`xs`,onClick:u[1]||=e=>Z.value=`raw-events`},{default:a(()=>[...u[17]||=[h(`原始事件流`,-1)]]),_:1},8,[`class`])]),Z.value===`assembled`?(t(),g(s,{key:0},[e.apiType===`anthropic`?(t(),g(s,{key:0},[c(`div`,St,[d(k).id?(t(),o(J,{key:0,label:`id`,value:d(k).id},null,8,[`value`])):m(``,!0),d(k).model?(t(),o(J,{key:1,label:`model`,value:d(k).model,highlight:!0},null,8,[`value`])):m(``,!0),i(J,{label:`input`,value:String(d(k).inputTokens)},null,8,[`value`])]),(t(!0),g(s,null,r(d(O),(e,n)=>(t(),g(`div`,{key:n,class:l([`rounded-md border p-3`,d(me)(e.type)])},[c(`div`,Ct,[i(d(C),{class:l(d(pe)(e.type))},{default:a(()=>[h(_(e.type),1)]),_:2},1032,[`class`]),c(`span`,wt,_(e.eventCount)+` 个 delta 事件`,1),e.toolName?(t(),g(`span`,Tt,_(e.toolName),1)):m(``,!0)]),e.content.length>500&&!X[n]?(t(),g(s,{key:0},[c(`pre`,Et,_(e.content.slice(0,500))+`...`,1),i(d(x),{variant:`link`,size:`xs`,class:`px-0`,onClick:e=>X[n]=!0},{default:a(()=>[...u[18]||=[h(`展开全部`,-1)]]),_:1},8,[`onClick`])],64)):(t(),g(`pre`,Dt,_(e.content),1))],2))),128)),c(`div`,Ot,[i(J,{label:`stop_reason`,value:d(k).stopReason||`-`},null,8,[`value`]),i(J,{label:`output_tokens`,value:String(d(k).outputTokens||`-`)},null,8,[`value`])])],64)):m(``,!0),e.apiType===`openai`&&d(A)?(t(),g(s,{key:1},[c(`div`,kt,[d(A).role?(t(),o(J,{key:0,label:`role`,value:d(A).role},null,8,[`value`])):m(``,!0),i(J,{label:`content delta`,value:String(d(A).contentEventCount)},null,8,[`value`]),d(A).finishReason?(t(),o(J,{key:1,label:`finish`,value:d(A).finishReason},null,8,[`value`])):m(``,!0)]),c(`div`,{class:l([`rounded-md border p-3`,d(me)(`text`)])},[c(`pre`,At,_(d(A).content),1)],2),d(A).usage?(t(),g(`div`,jt,[i(d(L),{class:`bg-muted/40`},{default:a(()=>[i(d(R),{class:`py-2 px-3 text-xs`},{default:a(()=>[u[19]||=c(`div`,{class:`text-muted-foreground`},`prompt_tokens`,-1),c(`div`,Mt,_(d(A).usage.prompt_tokens??`-`),1)]),_:1})]),_:1}),i(d(L),{class:`bg-muted/40`},{default:a(()=>[i(d(R),{class:`py-2 px-3 text-xs`},{default:a(()=>[u[20]||=c(`div`,{class:`text-muted-foreground`},`completion_tokens`,-1),c(`div`,Nt,_(d(A).usage.completion_tokens??`-`),1)]),_:1})]),_:1}),i(d(L),{class:`bg-muted/40`},{default:a(()=>[i(d(R),{class:`py-2 px-3 text-xs`},{default:a(()=>[u[21]||=c(`div`,{class:`text-muted-foreground`},`total_tokens`,-1),c(`div`,Pt,_(d(A).usage.total_tokens??`-`),1)]),_:1})]),_:1})])):m(``,!0)],64)):m(``,!0)],64)):m(``,!0),Z.value===`raw-events`?(t(),g(s,{key:1},[e.apiType===`openai`?(t(),g(s,{key:0},[d(W)?(t(),g(`div`,Ft,[u[22]||=c(`span`,{class:`text-muted-foreground`},`role:`,-1),h(` `+_(d(W)),1)])):m(``,!0),d(G)?(t(),g(`div`,It,[u[23]||=c(`span`,{class:`text-muted-foreground`},`first content delta:`,-1),h(` `+_(d(G)),1)])):m(``,!0),d(K)?(t(),g(`div`,Lt,[u[24]||=c(`span`,{class:`text-muted-foreground`},`finish_reason:`,-1),h(` `+_(d(K)),1)])):m(``,!0),d(q)>0?(t(),g(`div`,Rt,` +`+_(d(q))+` 个 delta 事件已折叠 `,1)):m(``,!0),d(Y)?(t(),g(`div`,zt,[i(d(L),{class:`bg-muted/40`},{default:a(()=>[i(d(R),{class:`py-2 px-3 text-xs`},{default:a(()=>[u[25]||=c(`div`,{class:`text-muted-foreground`},`prompt_tokens`,-1),c(`div`,Bt,_(d(Y).prompt_tokens??`-`),1)]),_:1})]),_:1}),i(d(L),{class:`bg-muted/40`},{default:a(()=>[i(d(R),{class:`py-2 px-3 text-xs`},{default:a(()=>[u[26]||=c(`div`,{class:`text-muted-foreground`},`completion_tokens`,-1),c(`div`,Vt,_(d(Y).completion_tokens??`-`),1)]),_:1})]),_:1}),i(d(L),{class:`bg-muted/40`},{default:a(()=>[i(d(R),{class:`py-2 px-3 text-xs`},{default:a(()=>[u[27]||=c(`div`,{class:`text-muted-foreground`},`total_tokens`,-1),c(`div`,Ht,_(d(Y).total_tokens??`-`),1)]),_:1})]),_:1}),i(d(L),{class:`bg-muted/40`},{default:a(()=>[i(d(R),{class:`py-2 px-3 text-xs`},{default:a(()=>[u[28]||=c(`div`,{class:`text-muted-foreground`},`cached_tokens`,-1),c(`div`,Ut,_(d(Y).cached_tokens??`-`),1)]),_:1})]),_:1})])):m(``,!0)],64)):m(``,!0),e.apiType===`anthropic`?(t(),g(s,{key:1},[d(j)?(t(),o(Je,{key:0,"event-type":`message_start`,summary:`id=${d(j).id} model=${d(j).model} input_tokens=${d(j).input_tokens}`},null,8,[`summary`])):m(``,!0),(t(!0),g(s,null,r(d(ie),(e,n)=>(t(),o(Je,{key:`cbs-`+n,"event-type":`content_block_start`,summary:`[${e.index}] ${e.type}`},null,8,[`summary`]))),128)),(t(!0),g(s,null,r(d(ae),(e,n)=>(t(),o(Je,{key:`dg-`+n,"event-type":`content_block_delta`,summary:`${e.deltaType} · keep ${e.kept} 个${e.folded>0?` +${e.folded} 个已折叠 (${e.foldedChars} 字符)`:``}`},null,8,[`summary`]))),128)),d(I)?(t(),o(Je,{key:1,"event-type":`message_delta`,summary:`output_tokens=${d(I).output_tokens} stop_reason=${d(I).stop_reason}`,highlight:!0},null,8,[`summary`])):m(``,!0),d(U)?(t(),o(Je,{key:2,"event-type":`message_stop`,summary:`流结束`})):m(``,!0)],64)):m(``,!0)],64)):m(``,!0)])):(t(),g(s,{key:0},[e.apiType===`openai`?(t(),g(s,{key:0},[c(`div`,rt,[y.value.id?(t(),o(J,{key:0,label:`id`,value:String(y.value.id)},null,8,[`value`])):m(``,!0),y.value.model?(t(),o(J,{key:1,label:`model`,value:String(y.value.model),highlight:!0},null,8,[`value`])):m(``,!0),y.value.system_fingerprint?(t(),o(J,{key:2,label:`fingerprint`,value:String(y.value.system_fingerprint)},null,8,[`value`])):m(``,!0)]),b.value.length?(t(),g(`div`,it,[u[6]||=c(`div`,{class:`text-xs font-medium text-muted-foreground`},`Choices`,-1),(t(!0),g(s,null,r(b.value,(e,n)=>(t(),o(d(L),{key:n,class:`bg-muted/40`},{default:a(()=>[i(d(z),{class:`pb-2 flex flex-row items-center gap-2`},{default:a(()=>[i(d(C),{variant:`secondary`},{default:a(()=>[h(_(e.role||`assistant`),1)]),_:2},1024),e.finish_reason?(t(),o(d(C),{key:0,variant:`outline`},{default:a(()=>[h(_(e.finish_reason),1)]),_:2},1024)):m(``,!0)]),_:2},1024),i(d(R),null,{default:a(()=>[i(d(T),null,{default:a(()=>[i(d(E),{"as-child":``},{default:a(()=>[i(d(x),{variant:`ghost`,size:`xs`,class:`px-0 h-auto text-xs`},{default:a(()=>[...u[5]||=[h(`内容`,-1)]]),_:1})]),_:1}),i(d(w),null,{default:a(()=>[c(`pre`,at,_(e.content),1)]),_:2},1024)]),_:2},1024)]),_:2},1024)]),_:2},1024))),128))])):m(``,!0),S.value?(t(),g(`div`,ot,[i(d(L),{class:`bg-muted/40`},{default:a(()=>[i(d(R),{class:`py-2 px-3 text-xs`},{default:a(()=>[u[7]||=c(`div`,{class:`text-muted-foreground`},`prompt_tokens`,-1),c(`div`,st,_(S.value.prompt_tokens??`-`),1)]),_:1})]),_:1}),i(d(L),{class:`bg-muted/40`},{default:a(()=>[i(d(R),{class:`py-2 px-3 text-xs`},{default:a(()=>[u[8]||=c(`div`,{class:`text-muted-foreground`},`completion_tokens`,-1),c(`div`,ct,_(S.value.completion_tokens??`-`),1)]),_:1})]),_:1}),i(d(L),{class:`bg-muted/40`},{default:a(()=>[i(d(R),{class:`py-2 px-3 text-xs`},{default:a(()=>[u[9]||=c(`div`,{class:`text-muted-foreground`},`total_tokens`,-1),c(`div`,lt,_(S.value.total_tokens??`-`),1)]),_:1})]),_:1}),i(d(L),{class:`bg-muted/40`},{default:a(()=>[i(d(R),{class:`py-2 px-3 text-xs`},{default:a(()=>[u[10]||=c(`div`,{class:`text-muted-foreground`},`cached_tokens`,-1),c(`div`,ut,_(S.value.cached_tokens??`-`),1)]),_:1})]),_:1})])):m(``,!0)],64)):m(``,!0),e.apiType===`anthropic`?(t(),g(s,{key:1},[c(`div`,dt,[y.value.id?(t(),o(J,{key:0,label:`id`,value:String(y.value.id)},null,8,[`value`])):m(``,!0),y.value.type?(t(),o(J,{key:1,label:`type`,value:String(y.value.type)},null,8,[`value`])):m(``,!0),y.value.model?(t(),o(J,{key:2,label:`model`,value:String(y.value.model),highlight:!0},null,8,[`value`])):m(``,!0),y.value.stop_reason?(t(),o(J,{key:3,label:`stop_reason`,value:String(y.value.stop_reason)},null,8,[`value`])):m(``,!0)]),re.value.length?(t(),g(`div`,ft,[u[11]||=c(`div`,{class:`text-xs font-medium text-muted-foreground`},`Content`,-1),(t(!0),g(s,null,r(re.value,(e,n)=>(t(),g(`div`,{key:n,class:`rounded-md border p-3`},[c(`div`,pt,[i(d(C),{class:l(d(pe)(e.type))},{default:a(()=>[h(_(e.type),1)]),_:2},1032,[`class`]),e.text?(t(),g(`span`,mt,_(e.text),1)):m(``,!0)])]))),128))])):m(``,!0),D.value?(t(),g(`div`,ht,[i(d(L),{class:`bg-muted/40`},{default:a(()=>[i(d(R),{class:`py-2 px-3 text-xs`},{default:a(()=>[u[12]||=c(`div`,{class:`text-muted-foreground`},`input_tokens`,-1),c(`div`,gt,_(D.value.input_tokens??`-`),1)]),_:1})]),_:1}),i(d(L),{class:`bg-muted/40`},{default:a(()=>[i(d(R),{class:`py-2 px-3 text-xs`},{default:a(()=>[u[13]||=c(`div`,{class:`text-muted-foreground`},`output_tokens`,-1),c(`div`,_t,_(D.value.output_tokens??`-`),1)]),_:1})]),_:1}),i(d(L),{class:`bg-muted/40`},{default:a(()=>[i(d(R),{class:`py-2 px-3 text-xs`},{default:a(()=>[u[14]||=c(`div`,{class:`text-muted-foreground`},`cache_creation`,-1),c(`div`,vt,_(D.value.cache_creation_input_tokens??`-`),1)]),_:1})]),_:1}),i(d(L),{class:`bg-muted/40`},{default:a(()=>[i(d(R),{class:`py-2 px-3 text-xs`},{default:a(()=>[u[15]||=c(`div`,{class:`text-muted-foreground`},`cache_read`,-1),c(`div`,yt,_(D.value.cache_read_input_tokens??`-`),1)]),_:1})]),_:1})])):m(``,!0)],64)):m(``,!0)],64))],64))]),_:1}),i(d(P),{value:`raw`},{default:a(()=>[i(ue,{content:e.raw,"hide-copy-button":``},null,8,[`content`])]),_:1})]),_:1},8,[`default-value`,`model-value`]))}}),Kt={class:`p-6`},qt={class:`flex items-center justify-between mb-4`},Jt={class:`flex items-center gap-2`},Yt={class:`bg-card rounded-lg border overflow-hidden`},Xt={class:`font-mono`},Zt={key:2,class:`text-muted-foreground`},Qt={key:1,class:`text-muted-foreground`},$t={class:`flex items-center justify-between mt-4`},en={class:`text-sm text-muted-foreground`},tn={class:`flex gap-1`},nn={class:`px-3 py-1 text-sm text-muted-foreground`},rn={key:0,class:`font-mono text-xs text-muted-foreground font-normal select-all`},an={key:0,class:`space-y-3 py-4`},on={class:`flex gap-2`},sn={key:0,class:`flex items-center gap-2 mb-3 px-1`},cn={class:`text-xs text-muted-foreground`},ln={class:`bg-muted/50 rounded-md p-3 text-sm grid grid-cols-3 gap-2`},un={class:`font-medium font-mono`},dn={key:0,class:`col-span-3`},fn={class:`font-mono text-xs`},pn={class:`font-medium`},mn={class:`font-medium`},hn={class:`font-medium`},gn={class:`flex items-center justify-between px-4 py-2 border-b sticky top-0 z-10 bg-background`},_n={class:`inline-flex h-8 items-center gap-1 rounded-md bg-muted p-1`},vn={class:`p-4`},yn={class:`flex items-center justify-between px-4 py-2 border-b sticky top-0 z-10 bg-background`},bn={class:`inline-flex h-8 items-center gap-1 rounded-md bg-muted p-1`},xn={class:`p-4`},Sn={class:`flex items-center justify-between px-4 py-2 border-b sticky top-0 z-10 bg-background`},Cn={class:`inline-flex h-8 items-center gap-1 rounded-md bg-muted p-1`},wn={class:`p-4`},Tn={class:`flex items-center justify-between px-4 py-2 border-b sticky top-0 z-10 bg-background`},En={class:`inline-flex h-8 items-center gap-1 rounded-md bg-muted p-1`},Dn={class:`p-4`},On={key:2,class:`py-8 text-center text-muted-foreground`},kn={class:`mb-4`},An=20,jn=e({__name:`Logs`,setup(e){let u=f([]),S=f(0),M=f(1),N=f(`all`),P=f(`all`),F=f([]),z=f(!1),G=f(30),K=f(!1),ue=f(!1),q=f(null),J=f(!0),Y=f(!1),X=f(!1),Z=f(!1),Q=ee({client_request:`structured`,upstream_request:`structured`,upstream_response:`structured`,client_response:`structured`}),$=f(null),{copy:de}=le();function fe(e){return q.value?{client_request:_e(q.value),upstream_request:q.value.upstream_request||`{}`,upstream_response:q.value.upstream_response||q.value.response_body||`{}`,client_response:ve(q.value)}[e]:`{}`}async function pe(e){await de(fe(e))?($.value=e,setTimeout(()=>{$.value=null},2e3)):I.error(`复制失败`)}function me(e){return e===`openai`?`openai`:`anthropic`}function he(e){if(!e)return`未知`;try{let t=JSON.parse(e);if(t.action)return t.detail?`${t.action}: ${t.detail}`:t.action}catch{}return`未知`}function ge(e){return e.provider_id===`router`}function _e(e){if(!e.client_request)return e.request_body||`{}`;try{let t=JSON.parse(e.client_request);if(t.body!=null)return e.client_request;if(e.request_body){try{t.body=JSON.parse(e.request_body)}catch{t.body=e.request_body}return JSON.stringify(t)}}catch{}return e.client_request}function ve(e){return e.client_response?e.client_response:e.response_body?JSON.stringify({statusCode:e.status_code,body:e.response_body}):``}async function ye(e){K.value=!0,ue.value=!0,q.value=null,J.value=!0,Y.value=!1,X.value=!1,Z.value=!1,Q.client_request=`structured`,Q.upstream_request=`structured`,Q.upstream_response=`structured`,Q.client_response=`structured`;try{q.value=(await p.getLogDetail(e)).data}catch(e){console.error(`Failed to load log detail:`,e),I.error(`加载日志详情失败`)}finally{ue.value=!1}}function be(e){ye(e)}function xe(e){return new Date(e).toLocaleString(`zh-CN`)}async function Se(){try{let e={page:M.value,limit:An};N.value&&N.value!==`all`&&(e.api_type=N.value),P.value&&P.value!==`all`&&(e.router_key_id=P.value);let t=await p.getLogs(e);u.value=t.data.data,S.value=t.data.total}catch(e){console.error(`Failed to load logs:`,e),I.error(`加载日志失败`)}}function Ce(){M.value=1,Se()}function we(){M.value>1&&(M.value--,Se())}function Te(){M.value++,Se()}async function Ee(){try{let e=new Date(Date.now()-G.value*864e5).toISOString(),t=await p.deleteLogsBefore(e);z.value=!1,M.value=1,await Se(),I.success(`已清理 ${t.data.deleted} 条日志`)}catch(e){console.error(`Failed to cleanup logs:`,e),I.error(`清理日志失败`)}}async function De(){try{F.value=(await p.getRouterKeys()).data}catch(e){console.error(`Failed to load router keys:`,e),I.error(`加载密钥列表失败`)}}return n(()=>{De(),Se()}),(e,n)=>(t(),g(`div`,Kt,[c(`div`,qt,[n[29]||=c(`h2`,{class:`text-lg font-semibold text-foreground`},`请求日志`,-1),c(`div`,Jt,[i(d(te),{modelValue:N.value,"onUpdate:modelValue":[n[0]||=e=>N.value=e,Ce]},{default:a(()=>[i(d(ne),{class:`w-[140px]`},{default:a(()=>[i(d(b),{placeholder:`全部类型`})]),_:1}),i(d(v),null,{default:a(()=>[i(d(y),{value:`all`},{default:a(()=>[...n[24]||=[h(`全部类型`,-1)]]),_:1}),i(d(y),{value:`openai`},{default:a(()=>[...n[25]||=[h(`OpenAI`,-1)]]),_:1}),i(d(y),{value:`anthropic`},{default:a(()=>[...n[26]||=[h(`Anthropic`,-1)]]),_:1})]),_:1})]),_:1},8,[`modelValue`]),i(d(te),{modelValue:P.value,"onUpdate:modelValue":[n[1]||=e=>P.value=e,Ce]},{default:a(()=>[i(d(ne),{class:`w-48`},{default:a(()=>[i(d(b),{placeholder:`全部密钥`})]),_:1}),i(d(v),null,{default:a(()=>[i(d(y),{value:`all`},{default:a(()=>[...n[27]||=[h(`全部密钥`,-1)]]),_:1}),(t(!0),g(s,null,r(F.value,e=>(t(),o(d(y),{key:e.id,value:e.id},{default:a(()=>[h(_(e.name),1)]),_:2},1032,[`value`]))),128))]),_:1})]),_:1},8,[`modelValue`]),i(d(x),{variant:`outline`,class:`text-destructive border-destructive hover:bg-destructive/10`,onClick:n[2]||=e=>z.value=!0},{default:a(()=>[...n[28]||=[h(` 清理日志 `,-1)]]),_:1})])]),c(`div`,Yt,[i(d(se),null,{default:a(()=>[i(d(ce),null,{default:a(()=>[i(d(H),{class:`bg-muted`},{default:a(()=>[i(d(V),{class:`text-muted-foreground`},{default:a(()=>[...n[30]||=[h(`ID`,-1)]]),_:1}),i(d(V),{class:`text-muted-foreground`},{default:a(()=>[...n[31]||=[h(`时间`,-1)]]),_:1}),i(d(V),{class:`text-muted-foreground`},{default:a(()=>[...n[32]||=[h(`类型`,-1)]]),_:1}),i(d(V),{class:`text-muted-foreground`},{default:a(()=>[...n[33]||=[h(`模型`,-1)]]),_:1}),i(d(V),{class:`text-muted-foreground`},{default:a(()=>[...n[34]||=[h(`实际转发`,-1)]]),_:1}),i(d(V),{class:`text-muted-foreground`},{default:a(()=>[...n[35]||=[h(`状态码`,-1)]]),_:1}),i(d(V),{class:`text-muted-foreground`},{default:a(()=>[...n[36]||=[h(`延迟`,-1)]]),_:1}),i(d(V),{class:`text-muted-foreground`},{default:a(()=>[...n[37]||=[h(`流式`,-1)]]),_:1}),i(d(V),{class:`text-muted-foreground`},{default:a(()=>[...n[38]||=[h(`重试`,-1)]]),_:1}),i(d(V),{class:`text-muted-foreground`},{default:a(()=>[...n[39]||=[h(`错误`,-1)]]),_:1}),i(d(V),{class:`text-muted-foreground`},{default:a(()=>[...n[40]||=[h(`操作`,-1)]]),_:1})]),_:1})]),_:1}),i(d(oe),null,{default:a(()=>[(t(!0),g(s,null,r(u.value,e=>(t(),o(d(H),{key:e.id,class:l({"bg-destructive/10":(e.status_code??0)>=400,"bg-warning-light":e.is_retry})},{default:a(()=>[i(d(B),{class:`font-mono text-xs text-muted-foreground`,title:e.id},{default:a(()=>[h(_(e.id.slice(0,8)),1)]),_:2},1032,[`title`]),i(d(B),{class:`text-muted-foreground`},{default:a(()=>[h(_(xe(e.created_at)),1)]),_:2},1024),i(d(B),null,{default:a(()=>[i(d(C),{variant:e.api_type===`openai`?`default`:`secondary`},{default:a(()=>[h(_(e.api_type),1)]),_:2},1032,[`variant`])]),_:2},1024),i(d(B),{class:`font-mono text-xs`},{default:a(()=>[h(_(e.model||`-`)+` `,1),e.original_model?(t(),o(d(C),{key:0,variant:`secondary`,class:`ml-1 text-xs`},{default:a(()=>[...n[41]||=[h(`已替换`,-1)]]),_:1})):m(``,!0)]),_:2},1024),i(d(B),{class:`text-xs`},{default:a(()=>[e.provider_id===`router`?(t(),o(d(C),{key:0,variant:`secondary`,class:`text-[10px] px-1 py-0`},{default:a(()=>[h(`代理增强:`+_(he(e.upstream_request)),1)]),_:2},1024)):e.backend_model||e.provider_name?(t(),g(s,{key:1},[c(`span`,Xt,_(e.backend_model||`-`),1),n[42]||=c(`span`,{class:`text-muted-foreground`},` @ `,-1),i(d(C),{variant:`outline`,class:`text-[10px] px-1 py-0`},{default:a(()=>[h(_(e.provider_name||e.provider_id||`-`),1)]),_:2},1024)],64)):(t(),g(`span`,Zt,`-`))]),_:2},1024),i(d(B),null,{default:a(()=>[i(d(C),{variant:(e.status_code??0)<400?`default`:`destructive`},{default:a(()=>[h(_(e.status_code||`-`),1)]),_:2},1032,[`variant`])]),_:2},1024),i(d(B),null,{default:a(()=>[h(_(e.latency_ms?e.latency_ms+`ms`:`-`),1)]),_:2},1024),i(d(B),null,{default:a(()=>[h(_(e.is_stream?`Yes`:`No`),1)]),_:2},1024),i(d(B),null,{default:a(()=>[e.is_retry?(t(),o(d(C),{key:0,variant:`outline`,class:`text-warning-dark border-warning`},{default:a(()=>[...n[43]||=[h(`重试`,-1)]]),_:1})):(t(),g(`span`,Qt,`-`))]),_:2},1024),i(d(B),{class:`text-destructive text-xs`},{default:a(()=>[h(_(e.error_message||`-`),1)]),_:2},1024),i(d(B),null,{default:a(()=>[i(d(x),{variant:`ghost`,size:`sm`,onClick:t=>ye(e.id)},{default:a(()=>[...n[44]||=[h(`详情`,-1)]]),_:1},8,[`onClick`])]),_:2},1024)]),_:2},1032,[`class`]))),128)),u.value.length===0?(t(),o(d(H),{key:0},{default:a(()=>[i(d(B),{colspan:`10`,class:`text-center text-muted-foreground py-8`},{default:a(()=>[...n[45]||=[h(`暂无日志`,-1)]]),_:1})]),_:1})):m(``,!0)]),_:1})]),_:1})]),c(`div`,$t,[c(`p`,en,`共 `+_(S.value)+` 条`,1),c(`div`,tn,[i(d(x),{variant:`outline`,size:`sm`,onClick:we,disabled:M.value<=1},{default:a(()=>[...n[46]||=[h(`上一页`,-1)]]),_:1},8,[`disabled`]),c(`span`,nn,`第 `+_(M.value)+` 页`,1),i(d(x),{variant:`outline`,size:`sm`,onClick:Te,disabled:u.value.length<An},{default:a(()=>[...n[47]||=[h(`下一页`,-1)]]),_:1},8,[`disabled`])])]),i(d(j),{open:K.value,"onUpdate:open":n[20]||=e=>K.value=e},{default:a(()=>[i(d(O),{class:`max-w-4xl max-h-[85vh]`},{default:a(()=>[i(d(A),null,{default:a(()=>[i(d(ie),{class:`flex items-center gap-2`},{default:a(()=>[n[48]||=h(`请求详情 `,-1),q.value?(t(),g(`span`,rn,_(q.value.id),1)):m(``,!0)]),_:1}),i(d(re),{class:`sr-only`},{default:a(()=>[...n[49]||=[h(`请求日志详情`,-1)]]),_:1})]),_:1}),ue.value?(t(),g(`div`,an,[c(`div`,on,[i(d(W),{class:`h-6 w-16`}),i(d(W),{class:`h-6 w-48`}),i(d(W),{class:`h-6 w-12`})]),(t(),g(s,null,r(4,e=>i(d(W),{class:`h-12 w-full`,key:e})),64))])):q.value?(t(),g(s,{key:1},[q.value.is_retry?(t(),g(`div`,sn,[i(d(C),{variant:`outline`,class:`text-warning-dark border-warning`},{default:a(()=>[...n[50]||=[h(`重试请求`,-1)]]),_:1}),c(`span`,cn,[n[51]||=h(` 原始请求: `,-1),i(d(x),{variant:`link`,class:`h-auto p-0 text-xs font-mono text-primary underline`,onClick:n[3]||=e=>be(q.value.original_request_id)},{default:a(()=>[h(_(q.value.original_request_id?.slice(0,8)),1)]),_:1})])])):m(``,!0),c(`div`,ln,[c(`div`,null,[n[52]||=c(`span`,{class:`text-muted-foreground`},`类型:`,-1),n[53]||=h(),i(d(C),{variant:q.value.api_type===`openai`?`default`:`secondary`,class:`text-xs`},{default:a(()=>[h(_(q.value.api_type),1)]),_:1},8,[`variant`])]),c(`div`,null,[n[54]||=c(`span`,{class:`text-muted-foreground`},`模型:`,-1),n[55]||=h(),c(`span`,un,_(q.value.model||`-`),1)]),q.value.original_model?(t(),g(`div`,dn,[n[56]||=c(`span`,{class:`text-muted-foreground`},`模型替换:`,-1),n[57]||=h(),c(`span`,fn,_(q.value.original_model)+` → `+_(q.value.backend_model||q.value.model),1)])):m(``,!0),c(`div`,null,[n[58]||=c(`span`,{class:`text-muted-foreground`},`状态码:`,-1),n[59]||=h(),i(d(C),{variant:(q.value.status_code??0)<400?`default`:`destructive`,class:`text-xs`},{default:a(()=>[h(_(q.value.status_code||`-`),1)]),_:1},8,[`variant`])]),c(`div`,null,[n[60]||=c(`span`,{class:`text-muted-foreground`},`延迟:`,-1),n[61]||=h(),c(`span`,pn,_(q.value.latency_ms?q.value.latency_ms+`ms`:`-`),1)]),c(`div`,null,[n[62]||=c(`span`,{class:`text-muted-foreground`},`流式:`,-1),n[63]||=h(),c(`span`,mn,_(q.value.is_stream?`Yes`:`No`),1)]),c(`div`,null,[n[64]||=c(`span`,{class:`text-muted-foreground`},`时间:`,-1),n[65]||=h(),c(`span`,hn,_(xe(q.value.created_at)),1)])]),i(d(T),{open:J.value,"onUpdate:open":n[7]||=e=>J.value=e,class:`border rounded-md`},{default:a(()=>[i(d(E),{"as-child":``},{default:a(()=>[i(d(x),{variant:`ghost`,class:`w-full px-4 py-3 text-left text-sm font-medium text-foreground bg-muted/50 hover:bg-muted rounded-none rounded-t-md flex items-center gap-2`},{default:a(()=>[c(`span`,{class:l([`text-xs transition-transform`,J.value?`rotate-0`:`-rotate-90`])},`▼`,2),n[66]||=h(` 客户端原始请求 `,-1)]),_:1})]),_:1}),i(d(w),null,{default:a(()=>[c(`div`,gn,[c(`div`,_n,[i(d(x),{variant:`ghost`,size:`xs`,class:l(Q.client_request===`structured`?`bg-background shadow`:``),onClick:n[4]||=e=>Q.client_request=`structured`},{default:a(()=>[...n[67]||=[h(`结构化`,-1)]]),_:1},8,[`class`]),i(d(x),{variant:`ghost`,size:`xs`,class:l(Q.client_request===`raw`?`bg-background shadow`:``),onClick:n[5]||=e=>Q.client_request=`raw`},{default:a(()=>[...n[68]||=[h(`原始 JSON`,-1)]]),_:1},8,[`class`])]),i(d(x),{variant:`ghost`,size:`xs`,class:`h-auto py-1`,onClick:n[6]||=e=>pe(`client_request`)},{default:a(()=>[h(_($.value===`client_request`?`已复制`:`复制`),1)]),_:1})]),c(`div`,vn,[i(Ke,{raw:_e(q.value),"api-type":me(q.value.api_type),mode:Q.client_request},null,8,[`raw`,`api-type`,`mode`])])]),_:1})]),_:1},8,[`open`]),q.value.upstream_request&&!ge(q.value)?(t(),o(d(T),{key:1,open:Y.value,"onUpdate:open":n[11]||=e=>Y.value=e,class:`border rounded-md`},{default:a(()=>[i(d(E),{"as-child":``},{default:a(()=>[i(d(x),{variant:`ghost`,class:`w-full px-4 py-3 text-left text-sm font-medium text-foreground bg-muted/50 hover:bg-muted rounded-none rounded-t-md flex items-center gap-2`},{default:a(()=>[c(`span`,{class:l([`text-xs transition-transform`,Y.value?`rotate-0`:`-rotate-90`])},`▼`,2),n[69]||=h(` Router → LLM API 请求 `,-1)]),_:1})]),_:1}),i(d(w),null,{default:a(()=>[c(`div`,yn,[c(`div`,bn,[i(d(x),{variant:`ghost`,size:`xs`,class:l(Q.upstream_request===`structured`?`bg-background shadow`:``),onClick:n[8]||=e=>Q.upstream_request=`structured`},{default:a(()=>[...n[70]||=[h(`结构化`,-1)]]),_:1},8,[`class`]),i(d(x),{variant:`ghost`,size:`xs`,class:l(Q.upstream_request===`raw`?`bg-background shadow`:``),onClick:n[9]||=e=>Q.upstream_request=`raw`},{default:a(()=>[...n[71]||=[h(`原始 JSON`,-1)]]),_:1},8,[`class`])]),i(d(x),{variant:`ghost`,size:`xs`,class:`h-auto py-1`,onClick:n[10]||=e=>pe(`upstream_request`)},{default:a(()=>[h(_($.value===`upstream_request`?`已复制`:`复制`),1)]),_:1})]),c(`div`,xn,[i(Ke,{raw:q.value.upstream_request,"api-type":me(q.value.api_type),"show-url":!0,mode:Q.upstream_request},null,8,[`raw`,`api-type`,`mode`])])]),_:1})]),_:1},8,[`open`])):m(``,!0),ge(q.value)?m(``,!0):(t(),o(d(T),{key:2,open:X.value,"onUpdate:open":n[15]||=e=>X.value=e,class:`border rounded-md`},{default:a(()=>[i(d(E),{"as-child":``},{default:a(()=>[i(d(x),{variant:`ghost`,class:`w-full px-4 py-3 text-left text-sm font-medium text-foreground bg-muted/50 hover:bg-muted rounded-none rounded-t-md flex items-center gap-2`},{default:a(()=>[c(`span`,{class:l([`text-xs transition-transform`,X.value?`rotate-0`:`-rotate-90`])},`▼`,2),n[72]||=h(` LLM API 返回的原始响应 `,-1)]),_:1})]),_:1}),i(d(w),null,{default:a(()=>[c(`div`,Sn,[c(`div`,Cn,[i(d(x),{variant:`ghost`,size:`xs`,class:l(Q.upstream_response===`structured`?`bg-background shadow`:``),onClick:n[12]||=e=>Q.upstream_response=`structured`},{default:a(()=>[...n[73]||=[h(`结构化`,-1)]]),_:1},8,[`class`]),i(d(x),{variant:`ghost`,size:`xs`,class:l(Q.upstream_response===`raw`?`bg-background shadow`:``),onClick:n[13]||=e=>Q.upstream_response=`raw`},{default:a(()=>[h(_(q.value.is_stream?`原始 SSE 文本`:`原始 JSON`),1)]),_:1},8,[`class`])]),i(d(x),{variant:`ghost`,size:`xs`,class:`h-auto py-1`,onClick:n[14]||=e=>pe(`upstream_response`)},{default:a(()=>[h(_($.value===`upstream_response`?`已复制`:`复制`),1)]),_:1})]),c(`div`,wn,[i(Gt,{raw:q.value.upstream_response||q.value.response_body||`{}`,"api-type":me(q.value.api_type),"is-stream":!!q.value.is_stream,mode:Q.upstream_response},null,8,[`raw`,`api-type`,`is-stream`,`mode`])])]),_:1})]),_:1},8,[`open`])),ve(q.value)?(t(),o(d(T),{key:3,open:Z.value,"onUpdate:open":n[19]||=e=>Z.value=e,class:`border rounded-md`},{default:a(()=>[i(d(E),{"as-child":``},{default:a(()=>[i(d(x),{variant:`ghost`,class:`w-full px-4 py-3 text-left text-sm font-medium text-foreground bg-muted/50 hover:bg-muted rounded-none rounded-t-md flex items-center gap-2`},{default:a(()=>[c(`span`,{class:l([`text-xs transition-transform`,Z.value?`rotate-0`:`-rotate-90`])},`▼`,2),n[74]||=h(` Router → 客户端响应 `,-1)]),_:1})]),_:1}),i(d(w),null,{default:a(()=>[c(`div`,Tn,[c(`div`,En,[i(d(x),{variant:`ghost`,size:`xs`,class:l(Q.client_response===`structured`?`bg-background shadow`:``),onClick:n[16]||=e=>Q.client_response=`structured`},{default:a(()=>[...n[75]||=[h(`结构化`,-1)]]),_:1},8,[`class`]),i(d(x),{variant:`ghost`,size:`xs`,class:l(Q.client_response===`raw`?`bg-background shadow`:``),onClick:n[17]||=e=>Q.client_response=`raw`},{default:a(()=>[h(_(q.value.is_stream?`原始 SSE 文本`:`原始 JSON`),1)]),_:1},8,[`class`])]),i(d(x),{variant:`ghost`,size:`xs`,class:`h-auto py-1`,onClick:n[18]||=e=>pe(`client_response`)},{default:a(()=>[h(_($.value===`client_response`?`已复制`:`复制`),1)]),_:1})]),c(`div`,Dn,[i(Gt,{raw:ve(q.value),"api-type":me(q.value.api_type),"is-stream":!!q.value.is_stream,mode:Q.client_response},null,8,[`raw`,`api-type`,`is-stream`,`mode`])])]),_:1})]),_:1},8,[`open`])):m(``,!0),q.value.error_message?(t(),o(d(L),{key:4,class:`bg-destructive/10 ring-destructive/20`},{default:a(()=>[i(d(R),{class:`py-3 text-sm text-destructive`},{default:a(()=>[h(_(q.value.error_message),1)]),_:1})]),_:1})):m(``,!0)],64)):(t(),g(`div`,On,`未找到日志`))]),_:1})]),_:1},8,[`open`]),i(d(j),{open:z.value,"onUpdate:open":n[23]||=e=>z.value=e},{default:a(()=>[i(d(k),null,{default:a(()=>[i(d(A),null,{default:a(()=>[i(d(ie),null,{default:a(()=>[...n[76]||=[h(`清理日志`,-1)]]),_:1})]),_:1}),n[80]||=c(`p`,{class:`text-sm text-muted-foreground`},`删除指定天数之前的日志`,-1),c(`div`,kn,[i(d(ae),{class:`block text-sm font-medium text-foreground mb-1`},{default:a(()=>[...n[77]||=[h(`保留最近天数`,-1)]]),_:1}),i(d(U),{modelValue:G.value,"onUpdate:modelValue":n[21]||=e=>G.value=e,modelModifiers:{number:!0},type:`number`,min:1},null,8,[`modelValue`])]),i(d(D),null,{default:a(()=>[i(d(x),{variant:`outline`,onClick:n[22]||=e=>z.value=!1},{default:a(()=>[...n[78]||=[h(`取消`,-1)]]),_:1}),i(d(x),{variant:`destructive`,onClick:Ee},{default:a(()=>[...n[79]||=[h(`确认清理`,-1)]]),_:1})]),_:1})]),_:1})]),_:1},8,[`open`])]))}});export{jn as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{C as e,I as t,N as n,R as r,S as i,Y as a,_ as o,f as s,g as c,h as l,mt as u,ot as d,t as f,u as p,v as m,x as h,y as g,yt as _}from"./client-BBW9-06a.js";import{a as v,i as y,n as b,r as x,t as S}from"./SelectValue-DhqRtJKk.js";import{n as C}from"./button-B3kgf-D2.js";import{t as w}from"./badge-HGT44FNA.js";import{n as T,r as E,t as D}from"./CollapsibleTrigger-BC4bE5yr.js";import{a as O,i as k,o as A,r as j,s as M,t as N}from"./dialog-BFhbK4vw.js";import{a as P,c as F,i as I,n as L,o as R,r as z,t as B}from"./alert-dialog-ChPy9vB2.js";import{t as V}from"./Label-9sUKofNb.js";import{n as H}from"./lib-D-4ywYag.js";import{n as U,t as ee}from"./CardContent-DKzAH8lX.js";import{t as te}from"./CardHeader-BBKKDXEh.js";import{t as W}from"./CardTitle-BQtpsfYd.js";import{t as G}from"./Input-C5_w9X6Y.js";var K={class:`border rounded-lg p-3 space-y-3`},q={class:`flex gap-3`},J={class:`flex-1`},Y={class:`flex-1`},X={class:`border rounded-lg p-3 space-y-3`},Z={class:`flex items-center justify-between`},Q={class:`flex items-end gap-2`},ne={class:`w-24`},re={class:`w-24`},ie={class:`flex gap-3`},ae={class:`flex-1`},oe={class:`flex-1`},se={key:0,class:`text-sm text-muted-foreground`},ce={key:1,class:`border rounded-lg p-3 space-y-3`},le={class:`flex items-center justify-between`},ue={class:`flex gap-3`},de={class:`flex-1`},fe={class:`flex-1`},pe={class:`flex justify-end gap-1`},me={key:0,class:`text-sm text-muted-foreground`},he=e({__name:`MappingGroupFormDialog`,props:{open:{type:Boolean},editingId:{},form:{},providers:{},providerModels:{}},emits:[`update:open`,`save`,`addWindow`,`removeWindow`,`addTarget`,`removeTarget`,`moveTargetUp`,`moveTargetDown`],setup(e,{emit:n}){let d=e,f=n,w=l(()=>d.providerModels.get(d.form.default.provider_id)||[]);function T(e){let t=d.form.windows[e]?.target?.provider_id;return t&&d.providerModels.get(t)||[]}function E(e){if(typeof e!=`string`)return;d.form.default.provider_id=e;let t=d.providerModels.get(e)||[];d.form.default.backend_model=t[0]||``}function D(e,t){if(typeof t!=`string`)return;d.form.windows[e].target.provider_id=t;let n=d.providerModels.get(t)||[];d.form.windows[e].target.backend_model=n[0]||``}function P(e){let t=d.form.targets[e]?.provider_id;return t&&d.providerModels.get(t)||[]}function F(e,t){if(typeof t!=`string`)return;d.form.targets[e].provider_id=t;let n=d.providerModels.get(t)||[];d.form.targets[e].backend_model=n[0]||``}function I(){f(`save`)}return(n,l)=>(t(),o(u(M),{open:e.open,"onUpdate:open":l[6]||=e=>f(`update:open`,e)},{default:a(()=>[i(u(A),{class:`max-w-2xl`},{default:a(()=>[i(u(j),null,{default:a(()=>[i(u(N),null,{default:a(()=>[h(_(e.editingId?`编辑分组`:`添加分组`),1)]),_:1}),i(u(O),null,{default:a(()=>[...l[7]||=[h(`配置客户端模型到后端供应商模型的映射规则`,-1)]]),_:1})]),_:1}),c(`form`,{onSubmit:p(I,[`prevent`]),class:`space-y-4`},[c(`div`,null,[i(u(V),{class:`block text-sm font-medium text-foreground mb-1`},{default:a(()=>[...l[8]||=[h(`客户端模型`,-1)]]),_:1}),i(u(G),{modelValue:e.form.client_model,"onUpdate:modelValue":l[0]||=t=>e.form.client_model=t,type:`text`,required:``},null,8,[`modelValue`])]),c(`div`,null,[i(u(V),{class:`block text-sm font-medium text-foreground mb-1`},{default:a(()=>[...l[9]||=[h(`策略`,-1)]]),_:1}),i(u(v),{modelValue:e.form.strategy,"onUpdate:modelValue":l[1]||=t=>e.form.strategy=t},{default:a(()=>[i(u(b),null,{default:a(()=>[i(u(S),{placeholder:`选择策略`})]),_:1}),i(u(y),null,{default:a(()=>[i(u(x),{value:`scheduled`},{default:a(()=>[...l[10]||=[h(`定时切换 (scheduled)`,-1)]]),_:1}),i(u(x),{value:`round-robin`},{default:a(()=>[...l[11]||=[h(`轮询 (round-robin)`,-1)]]),_:1}),i(u(x),{value:`random`},{default:a(()=>[...l[12]||=[h(`随机 (random)`,-1)]]),_:1}),i(u(x),{value:`failover`},{default:a(()=>[...l[13]||=[h(`故障转移 (failover)`,-1)]]),_:1})]),_:1})]),_:1},8,[`modelValue`])]),e.form.strategy===`scheduled`?(t(),g(s,{key:0},[c(`div`,K,[l[16]||=c(`div`,{class:`text-sm font-medium text-foreground`},`默认目标`,-1),c(`div`,q,[c(`div`,J,[i(u(V),{class:`block text-xs text-muted-foreground mb-1`},{default:a(()=>[...l[14]||=[h(`供应商`,-1)]]),_:1}),i(u(v),{"model-value":e.form.default.provider_id,"onUpdate:modelValue":E},{default:a(()=>[i(u(b),null,{default:a(()=>[i(u(S),{placeholder:`选择供应商`})]),_:1}),i(u(y),null,{default:a(()=>[(t(!0),g(s,null,r(e.providers,e=>(t(),o(u(x),{key:e.id,value:e.id},{default:a(()=>[h(_(e.name),1)]),_:2},1032,[`value`]))),128))]),_:1})]),_:1},8,[`model-value`])]),c(`div`,Y,[i(u(V),{class:`block text-xs text-muted-foreground mb-1`},{default:a(()=>[...l[15]||=[h(`后端模型`,-1)]]),_:1}),i(u(v),{modelValue:e.form.default.backend_model,"onUpdate:modelValue":l[2]||=t=>e.form.default.backend_model=t,disabled:w.value.length===0},{default:a(()=>[i(u(b),null,{default:a(()=>[i(u(S),{placeholder:w.value.length===0?`暂无可用模型`:`选择后端模型`},null,8,[`placeholder`])]),_:1}),i(u(y),null,{default:a(()=>[(t(!0),g(s,null,r(w.value,e=>(t(),o(u(x),{key:e,value:e},{default:a(()=>[h(_(e),1)]),_:2},1032,[`value`]))),128))]),_:1})]),_:1},8,[`modelValue`,`disabled`])])])]),c(`div`,X,[c(`div`,Z,[l[18]||=c(`div`,{class:`text-sm font-medium text-foreground`},`时间窗口`,-1),i(u(C),{type:`button`,variant:`outline`,size:`sm`,onClick:l[3]||=e=>f(`addWindow`)},{default:a(()=>[...l[17]||=[h(`添加窗口`,-1)]]),_:1})]),(t(!0),g(s,null,r(e.form.windows,(n,d)=>(t(),g(`div`,{key:d,class:`border rounded-md p-2 space-y-2`},[c(`div`,Q,[c(`div`,ne,[i(u(V),{class:`block text-xs text-muted-foreground mb-1`},{default:a(()=>[...l[19]||=[h(`开始`,-1)]]),_:1}),i(u(G),{modelValue:n.start,"onUpdate:modelValue":e=>n.start=e,type:`text`,placeholder:`HH:MM`,required:``},null,8,[`modelValue`,`onUpdate:modelValue`])]),l[22]||=c(`span`,{class:`text-muted-foreground pb-1.5`},`-`,-1),c(`div`,re,[i(u(V),{class:`block text-xs text-muted-foreground mb-1`},{default:a(()=>[...l[20]||=[h(`结束`,-1)]]),_:1}),i(u(G),{modelValue:n.end,"onUpdate:modelValue":e=>n.end=e,type:`text`,placeholder:`HH:MM`,required:``},null,8,[`modelValue`,`onUpdate:modelValue`])]),l[23]||=c(`div`,{class:`flex-1`},null,-1),i(u(C),{type:`button`,variant:`ghost`,size:`sm`,class:`text-destructive shrink-0`,onClick:e=>f(`removeWindow`,d)},{default:a(()=>[...l[21]||=[h(`删除`,-1)]]),_:1},8,[`onClick`])]),c(`div`,ie,[c(`div`,ae,[i(u(V),{class:`block text-xs text-muted-foreground mb-1`},{default:a(()=>[...l[24]||=[h(`供应商`,-1)]]),_:1}),i(u(v),{"model-value":n.target.provider_id,"onUpdate:modelValue":e=>D(d,e)},{default:a(()=>[i(u(b),null,{default:a(()=>[i(u(S),{placeholder:`选择供应商`})]),_:1}),i(u(y),null,{default:a(()=>[(t(!0),g(s,null,r(e.providers,e=>(t(),o(u(x),{key:e.id,value:e.id},{default:a(()=>[h(_(e.name),1)]),_:2},1032,[`value`]))),128))]),_:1})]),_:1},8,[`model-value`,`onUpdate:modelValue`])]),c(`div`,oe,[i(u(V),{class:`block text-xs text-muted-foreground mb-1`},{default:a(()=>[...l[25]||=[h(`后端模型`,-1)]]),_:1}),i(u(v),{modelValue:n.target.backend_model,"onUpdate:modelValue":e=>n.target.backend_model=e,disabled:T(d).length===0},{default:a(()=>[i(u(b),null,{default:a(()=>[i(u(S),{placeholder:T(d).length===0?`暂无可用模型`:`选择后端模型`},null,8,[`placeholder`])]),_:2},1024),i(u(y),null,{default:a(()=>[(t(!0),g(s,null,r(T(d),e=>(t(),o(u(x),{key:e,value:e},{default:a(()=>[h(_(e),1)]),_:2},1032,[`value`]))),128))]),_:2},1024)]),_:2},1032,[`modelValue`,`onUpdate:modelValue`,`disabled`])])])]))),128)),e.form.windows.length===0?(t(),g(`div`,se,`暂无窗口`)):m(``,!0)])],64)):(t(),g(`div`,ce,[c(`div`,le,[l[27]||=c(`div`,{class:`text-sm font-medium text-foreground`},`目标列表`,-1),i(u(C),{type:`button`,variant:`outline`,size:`sm`,onClick:l[4]||=e=>f(`addTarget`)},{default:a(()=>[...l[26]||=[h(`添加目标`,-1)]]),_:1})]),(t(!0),g(s,null,r(e.form.targets,(n,d)=>(t(),g(`div`,{key:d,class:`border rounded-md p-2 space-y-2`},[c(`div`,ue,[c(`div`,de,[i(u(V),{class:`block text-xs text-muted-foreground mb-1`},{default:a(()=>[...l[28]||=[h(`供应商`,-1)]]),_:1}),i(u(v),{"model-value":n.provider_id,"onUpdate:modelValue":e=>F(d,e)},{default:a(()=>[i(u(b),null,{default:a(()=>[i(u(S),{placeholder:`选择供应商`})]),_:1}),i(u(y),null,{default:a(()=>[(t(!0),g(s,null,r(e.providers,e=>(t(),o(u(x),{key:e.id,value:e.id},{default:a(()=>[h(_(e.name),1)]),_:2},1032,[`value`]))),128))]),_:1})]),_:1},8,[`model-value`,`onUpdate:modelValue`])]),c(`div`,fe,[i(u(V),{class:`block text-xs text-muted-foreground mb-1`},{default:a(()=>[...l[29]||=[h(`后端模型`,-1)]]),_:1}),i(u(v),{modelValue:n.backend_model,"onUpdate:modelValue":e=>n.backend_model=e,disabled:P(d).length===0},{default:a(()=>[i(u(b),null,{default:a(()=>[i(u(S),{placeholder:P(d).length===0?`暂无可用模型`:`选择后端模型`},null,8,[`placeholder`])]),_:2},1024),i(u(y),null,{default:a(()=>[(t(!0),g(s,null,r(P(d),e=>(t(),o(u(x),{key:e,value:e},{default:a(()=>[h(_(e),1)]),_:2},1032,[`value`]))),128))]),_:2},1024)]),_:2},1032,[`modelValue`,`onUpdate:modelValue`,`disabled`])])]),c(`div`,pe,[e.form.strategy===`failover`?(t(),o(u(C),{key:0,type:`button`,variant:`ghost`,size:`sm`,disabled:d===0,onClick:e=>f(`moveTargetUp`,d)},{default:a(()=>[...l[30]||=[h(`↑`,-1)]]),_:1},8,[`disabled`,`onClick`])):m(``,!0),e.form.strategy===`failover`?(t(),o(u(C),{key:1,type:`button`,variant:`ghost`,size:`sm`,disabled:d===e.form.targets.length-1,onClick:e=>f(`moveTargetDown`,d)},{default:a(()=>[...l[31]||=[h(`↓`,-1)]]),_:1},8,[`disabled`,`onClick`])):m(``,!0),i(u(C),{type:`button`,variant:`ghost`,size:`sm`,class:`text-destructive shrink-0`,onClick:e=>f(`removeTarget`,d)},{default:a(()=>[...l[32]||=[h(`删除`,-1)]]),_:1},8,[`onClick`])])]))),128)),e.form.targets.length===0?(t(),g(`div`,me,`暂无目标`)):m(``,!0)])),i(u(k),null,{default:a(()=>[i(u(C),{type:`button`,variant:`outline`,onClick:l[5]||=e=>f(`update:open`,!1)},{default:a(()=>[...l[33]||=[h(`取消`,-1)]]),_:1}),i(u(C),{type:`submit`},{default:a(()=>[...l[34]||=[h(`保存`,-1)]]),_:1})]),_:1})],32)]),_:1})]),_:1},8,[`open`]))}}),ge=e({__name:`MappingGroupDeleteDialog`,props:{target:{}},emits:[`confirm`,`cancel`],setup(e,{emit:n}){let r=n;return(n,s)=>(t(),o(u(F),{open:!!e.target,"onUpdate:open":s[1]||=e=>{e||r(`cancel`)}},{default:a(()=>[i(u(P),null,{default:a(()=>[i(u(L),null,{default:a(()=>[i(u(B),null,{default:a(()=>[...s[2]||=[h(`确认删除`,-1)]]),_:1}),i(u(I),null,{default:a(()=>[h(`确定要删除分组「`+_(e.target?.client_model)+`」吗?`,1)]),_:1})]),_:1}),i(u(z),null,{default:a(()=>[i(u(R),null,{default:a(()=>[...s[3]||=[h(`取消`,-1)]]),_:1}),i(u(C),{variant:`destructive`,onClick:s[0]||=e=>r(`confirm`)},{default:a(()=>[...s[4]||=[h(`删除`,-1)]]),_:1})]),_:1})]),_:1})]),_:1},8,[`open`]))}}),_e={class:`p-6`},ve={class:`flex items-center justify-between mb-4`},ye={class:`space-y-4`},be={class:`flex items-center gap-3`},xe={class:`flex items-center gap-2`},Se={key:0,class:`space-y-3`},Ce={class:`flex items-center gap-2 text-sm`},we={class:`font-mono`},Te={key:0,class:`space-y-2`},Ee={class:`font-mono text-xs bg-muted px-2 py-0.5 rounded`},De={class:`font-mono`},$={key:1,class:`text-sm text-muted-foreground`},Oe={key:1,class:`space-y-2`},ke={key:0,class:`text-muted-foreground text-xs`},Ae={class:`font-mono`},je={key:0,class:`text-sm text-muted-foreground`},Me={key:0,class:`text-center text-muted-foreground py-12 bg-card rounded-xl border`},Ne=e({__name:`ModelMappings`,setup(e){let p={client_model:``,strategy:`scheduled`,default:{backend_model:``,provider_id:``},windows:[],targets:[]},v=d([]),y=d([]),b=d(!1),x=d(null),S=d(null),O=d({...p}),k=l(()=>{let e=new Map;for(let t of y.value)e.set(t.id,t.name);return e}),A=l(()=>{let e=new Map;for(let t of y.value){let n=t.models;Array.isArray(n)&&n.length>0&&e.set(t.id,[...n])}return e}),j=l(()=>v.value.map(e=>{let t={};try{t=JSON.parse(e.rule)}catch{}return{...e,parsedRule:t}}));async function M(){let e=await Promise.allSettled([f.getMappingGroups(),f.getProviders()]);e[0].status===`fulfilled`?v.value=e[0].value.data:console.error(`Failed to load groups:`,e[0].reason),e[1].status===`fulfilled`?y.value=e[1].value:(console.error(`Failed to load providers:`,e[1].reason),H.error(`加载供应商失败`))}function N(){x.value=null;let e=y.value[0]?.id||``;O.value={client_model:``,strategy:`scheduled`,default:{backend_model:(A.value.get(e)||[])[0]||``,provider_id:e},windows:[],targets:[]},b.value=!0}function P(e){x.value=e.id;let t={};try{t=JSON.parse(e.rule)}catch{}if(e.strategy===`scheduled`)O.value={...p,client_model:e.client_model,strategy:e.strategy,default:{backend_model:t.default?.backend_model||``,provider_id:t.default?.provider_id||y.value[0]?.id||``},windows:t.windows?JSON.parse(JSON.stringify(t.windows)):[]};else{let n=y.value[0]?.id||``,r=A.value.get(n)||[];O.value={...p,client_model:e.client_model,strategy:e.strategy,targets:Array.isArray(t.targets)?t.targets.map(e=>({backend_model:e.backend_model||``,provider_id:e.provider_id||n})):[{backend_model:r[0]||``,provider_id:n}]}}b.value=!0}function F(){let e=y.value[0]?.id||``,t=A.value.get(e)||[];O.value.windows.push({start:``,end:``,target:{backend_model:t[0]||``,provider_id:e}})}function I(e){O.value.windows.splice(e,1)}function L(){let e=y.value[0]?.id||``,t=A.value.get(e)||[];O.value.targets.push({backend_model:t[0]||``,provider_id:e})}function R(e){O.value.targets.splice(e,1)}function z(e){if(e<=0)return;let t=O.value.targets;[t[e-1],t[e]]=[t[e],t[e-1]]}function B(e){let t=O.value.targets;e>=t.length-1||([t[e],t[e+1]]=[t[e+1],t[e]])}async function V(){try{let e;e=O.value.strategy===`scheduled`?JSON.stringify({default:O.value.default,windows:O.value.windows}):JSON.stringify({targets:O.value.targets});let t={client_model:O.value.client_model,strategy:O.value.strategy,rule:e};x.value?await f.updateMappingGroup(x.value,t):await f.createMappingGroup(t),b.value=!1,await M()}catch(e){console.error(`Failed to save mapping group:`,e),H.error(`保存分组失败`)}}async function G(){let e=S.value;if(e){S.value=null;try{await f.deleteMappingGroup(e.id),await M()}catch(e){console.error(`Failed to delete mapping group:`,e),H.error(`删除分组失败`)}}}return n(M),(e,n)=>(t(),g(`div`,_e,[c(`div`,ve,[n[3]||=c(`h2`,{class:`text-lg font-semibold text-foreground`},`模型映射`,-1),i(u(C),{onClick:N,class:`flex items-center gap-1`},{default:a(()=>[...n[2]||=[c(`svg`,{class:`w-4 h-4`,fill:`none`,stroke:`currentColor`,viewBox:`0 0 24 24`},[c(`path`,{"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`,d:`M12 4v16m8-8H4`})],-1),h(` 添加分组 `,-1)]]),_:1})]),c(`div`,ye,[(t(!0),g(s,null,r(j.value,e=>(t(),o(u(U),{key:e.id},{default:a(()=>[i(u(E),{"default-open":!1},{default:a(()=>[i(u(te),{class:`flex flex-row items-center justify-between gap-4`},{default:a(()=>[c(`div`,be,[i(u(W),{class:`font-mono text-sm`},{default:a(()=>[h(_(e.client_model),1)]),_:2},1024),i(u(w),{variant:`secondary`},{default:a(()=>[h(_(e.strategy),1)]),_:2},1024)]),c(`div`,xe,[i(u(D),{"as-child":``},{default:a(()=>[i(u(C),{variant:`ghost`,size:`sm`},{default:a(()=>[...n[4]||=[h(` 展开 `,-1)]]),_:1})]),_:1}),i(u(C),{variant:`ghost`,size:`sm`,onClick:t=>P(e)},{default:a(()=>[...n[5]||=[h(`编辑`,-1)]]),_:1},8,[`onClick`]),i(u(C),{variant:`ghost`,size:`sm`,class:`text-destructive hover:text-destructive`,onClick:t=>S.value=e},{default:a(()=>[...n[6]||=[h(`删除`,-1)]]),_:1},8,[`onClick`])])]),_:2},1024),i(u(T),null,{default:a(()=>[i(u(ee),null,{default:a(()=>[e.strategy===`scheduled`?(t(),g(`div`,Se,[c(`div`,Ce,[n[7]||=c(`span`,{class:`text-muted-foreground`},`默认模型:`,-1),c(`span`,we,_(e.parsedRule.default?.backend_model||`-`),1),n[8]||=c(`span`,{class:`text-muted-foreground`},`/`,-1),c(`span`,null,_(k.value.get(e.parsedRule.default?.provider_id||``)||`-`),1)]),e.parsedRule.windows?.length?(t(),g(`div`,Te,[n[10]||=c(`div`,{class:`text-sm text-muted-foreground`},`时间窗口`,-1),(t(!0),g(s,null,r(e.parsedRule.windows,(e,r)=>(t(),g(`div`,{key:r,class:`flex items-center gap-2 text-sm`},[c(`span`,Ee,_(e.start)+` - `+_(e.end),1),c(`span`,De,_(e.target.backend_model),1),n[9]||=c(`span`,{class:`text-muted-foreground`},`/`,-1),c(`span`,null,_(k.value.get(e.target.provider_id)||e.target.provider_id),1)]))),128))])):(t(),g(`div`,$,`无时间窗口`))])):(t(),g(`div`,Oe,[(t(!0),g(s,null,r(e.parsedRule.targets||[],(r,i)=>(t(),g(`div`,{key:i,class:`flex items-center gap-2 text-sm`},[e.strategy===`failover`?(t(),g(`span`,ke,_(i+1)+`.`,1)):m(``,!0),c(`span`,Ae,_(r.backend_model),1),n[11]||=c(`span`,{class:`text-muted-foreground`},`/`,-1),c(`span`,null,_(k.value.get(r.provider_id)||r.provider_id),1)]))),128)),(e.parsedRule.targets||[]).length?m(``,!0):(t(),g(`div`,je,`无目标`))]))]),_:2},1024)]),_:2},1024)]),_:2},1024)]),_:2},1024))),128)),v.value.length===0?(t(),g(`div`,Me,` 暂无映射分组 `)):m(``,!0)]),i(he,{open:b.value,"onUpdate:open":n[0]||=e=>b.value=e,"editing-id":x.value,form:O.value,providers:y.value,"provider-models":A.value,onSave:V,onAddWindow:F,onRemoveWindow:I,onAddTarget:L,onRemoveTarget:R,onMoveTargetUp:z,onMoveTargetDown:B},null,8,[`open`,`editing-id`,`form`,`providers`,`provider-models`]),i(ge,{target:S.value,onConfirm:G,onCancel:n[1]||=e=>S.value=null},null,8,[`target`])]))}});export{Ne as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{$ as e,A as t,C as n,I as r,J as i,K as a,N as o,S as s,Y as c,_ as l,ct as u,h as d,k as f,mt as p,ot as m,q as h,rt as g,st as _,vt as v,y,z as b}from"./client-BBW9-06a.js";import{i as x}from"./button-B3kgf-D2.js";import{w as S}from"./badge-HGT44FNA.js";import{i as C,l as w,t as T}from"./useForwardExpose-CIZH3-CG.js";function E(e){let t=m(),n=d(()=>t.value?.width??0),r=d(()=>t.value?.height??0);return o(()=>{let n=C(e);if(n){t.value={width:n.offsetWidth,height:n.offsetHeight};let e=new ResizeObserver(e=>{if(!Array.isArray(e)||!e.length)return;let r=e[0],i,a;if(`borderBoxSize`in r){let e=r.borderBoxSize,t=Array.isArray(e)?e[0]:e;i=t.inlineSize,a=t.blockSize}else i=n.offsetWidth,a=n.offsetHeight;t.value={width:i,height:a}});return e.observe(n,{box:`border-box`}),()=>e.unobserve(n)}else t.value=void 0}),{width:n,height:r}}var[D,O]=S(`PopperRoot`),ee=n({inheritAttrs:!1,__name:`PopperRoot`,setup(e){let t=m();return O({anchor:t,onAnchorChange:e=>t.value=e}),(e,t)=>b(e.$slots,`default`)}}),k=n({__name:`PopperAnchor`,props:{reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){let t=e,{forwardRef:n,currentElement:a}=T(),o=D();return i(()=>{o.onAnchorChange(t.reference??a.value)}),(e,t)=>(r(),l(p(x),{ref:p(n),as:e.as,"as-child":e.asChild},{default:c(()=>[b(e.$slots,`default`)]),_:3},8,[`as`,`as-child`]))}});function te(e){return e!==null}function ne(e){return{name:`transformOrigin`,options:e,fn(t){let{placement:n,rects:r,middlewareData:i}=t,a=i.arrow?.centerOffset!==0,o=a?0:e.arrowWidth,s=a?0:e.arrowHeight,[c,l]=A(n),u={start:`0%`,center:`50%`,end:`100%`}[l],d=(i.arrow?.x??0)+o/2,f=(i.arrow?.y??0)+s/2,p=``,m=``;return c===`bottom`?(p=a?u:`${d}px`,m=`${-s}px`):c===`top`?(p=a?u:`${d}px`,m=`${r.floating.height+s}px`):c===`right`?(p=`${-s}px`,m=a?u:`${f}px`):c===`left`&&(p=`${r.floating.width+s}px`,m=a?u:`${f}px`),{data:{x:p,y:m}}}}}function A(e){let[t,n=`center`]=e.split(`-`);return[t,n]}var j=[`top`,`right`,`bottom`,`left`],M=Math.min,N=Math.max,P=Math.round,F=Math.floor,I=e=>({x:e,y:e}),L={left:`right`,right:`left`,bottom:`top`,top:`bottom`};function re(e,t,n){return N(e,M(t,n))}function R(e,t){return typeof e==`function`?e(t):e}function z(e){return e.split(`-`)[0]}function B(e){return e.split(`-`)[1]}function ie(e){return e===`x`?`y`:`x`}function ae(e){return e===`y`?`height`:`width`}function V(e){let t=e[0];return t===`t`||t===`b`?`y`:`x`}function oe(e){return ie(V(e))}function se(e,t,n){n===void 0&&(n=!1);let r=B(e),i=oe(e),a=ae(i),o=i===`x`?r===(n?`end`:`start`)?`right`:`left`:r===`start`?`bottom`:`top`;return t.reference[a]>t.floating[a]&&(o=ge(o)),[o,ge(o)]}function ce(e){let t=ge(e);return[le(e),t,le(t)]}function le(e){return e.includes(`start`)?e.replace(`start`,`end`):e.replace(`end`,`start`)}var ue=[`left`,`right`],de=[`right`,`left`],fe=[`top`,`bottom`],pe=[`bottom`,`top`];function me(e,t,n){switch(e){case`top`:case`bottom`:return n?t?de:ue:t?ue:de;case`left`:case`right`:return t?fe:pe;default:return[]}}function he(e,t,n,r){let i=B(e),a=me(z(e),n===`start`,r);return i&&(a=a.map(e=>e+`-`+i),t&&(a=a.concat(a.map(le)))),a}function ge(e){let t=z(e);return L[t]+e.slice(t.length)}function _e(e){return{top:0,right:0,bottom:0,left:0,...e}}function ve(e){return typeof e==`number`?{top:e,right:e,bottom:e,left:e}:_e(e)}function ye(e){let{x:t,y:n,width:r,height:i}=e;return{width:r,height:i,top:n,left:t,right:t+r,bottom:n+i,x:t,y:n}}function be(e,t,n){let{reference:r,floating:i}=e,a=V(t),o=oe(t),s=ae(o),c=z(t),l=a===`y`,u=r.x+r.width/2-i.width/2,d=r.y+r.height/2-i.height/2,f=r[s]/2-i[s]/2,p;switch(c){case`top`:p={x:u,y:r.y-i.height};break;case`bottom`:p={x:u,y:r.y+r.height};break;case`right`:p={x:r.x+r.width,y:d};break;case`left`:p={x:r.x-i.width,y:d};break;default:p={x:r.x,y:r.y}}switch(B(t)){case`start`:p[o]-=f*(n&&l?-1:1);break;case`end`:p[o]+=f*(n&&l?-1:1);break}return p}async function xe(e,t){t===void 0&&(t={});let{x:n,y:r,platform:i,rects:a,elements:o,strategy:s}=e,{boundary:c=`clippingAncestors`,rootBoundary:l=`viewport`,elementContext:u=`floating`,altBoundary:d=!1,padding:f=0}=R(t,e),p=ve(f),m=o[d?u===`floating`?`reference`:`floating`:u],h=ye(await i.getClippingRect({element:await(i.isElement==null?void 0:i.isElement(m))??!0?m:m.contextElement||await(i.getDocumentElement==null?void 0:i.getDocumentElement(o.floating)),boundary:c,rootBoundary:l,strategy:s})),g=u===`floating`?{x:n,y:r,width:a.floating.width,height:a.floating.height}:a.reference,_=await(i.getOffsetParent==null?void 0:i.getOffsetParent(o.floating)),v=await(i.isElement==null?void 0:i.isElement(_))&&await(i.getScale==null?void 0:i.getScale(_))||{x:1,y:1},y=ye(i.convertOffsetParentRelativeRectToViewportRelativeRect?await i.convertOffsetParentRelativeRectToViewportRelativeRect({elements:o,rect:g,offsetParent:_,strategy:s}):g);return{top:(h.top-y.top+p.top)/v.y,bottom:(y.bottom-h.bottom+p.bottom)/v.y,left:(h.left-y.left+p.left)/v.x,right:(y.right-h.right+p.right)/v.x}}var Se=50,Ce=async(e,t,n)=>{let{placement:r=`bottom`,strategy:i=`absolute`,middleware:a=[],platform:o}=n,s=o.detectOverflow?o:{...o,detectOverflow:xe},c=await(o.isRTL==null?void 0:o.isRTL(t)),l=await o.getElementRects({reference:e,floating:t,strategy:i}),{x:u,y:d}=be(l,r,c),f=r,p=0,m={};for(let n=0;n<a.length;n++){let h=a[n];if(!h)continue;let{name:g,fn:_}=h,{x:v,y,data:b,reset:x}=await _({x:u,y:d,initialPlacement:r,placement:f,strategy:i,middlewareData:m,rects:l,platform:s,elements:{reference:e,floating:t}});u=v??u,d=y??d,m[g]={...m[g],...b},x&&p<Se&&(p++,typeof x==`object`&&(x.placement&&(f=x.placement),x.rects&&(l=x.rects===!0?await o.getElementRects({reference:e,floating:t,strategy:i}):x.rects),{x:u,y:d}=be(l,f,c)),n=-1)}return{x:u,y:d,placement:f,strategy:i,middlewareData:m}},we=e=>({name:`arrow`,options:e,async fn(t){let{x:n,y:r,placement:i,rects:a,platform:o,elements:s,middlewareData:c}=t,{element:l,padding:u=0}=R(e,t)||{};if(l==null)return{};let d=ve(u),f={x:n,y:r},p=oe(i),m=ae(p),h=await o.getDimensions(l),g=p===`y`,_=g?`top`:`left`,v=g?`bottom`:`right`,y=g?`clientHeight`:`clientWidth`,b=a.reference[m]+a.reference[p]-f[p]-a.floating[m],x=f[p]-a.reference[p],S=await(o.getOffsetParent==null?void 0:o.getOffsetParent(l)),C=S?S[y]:0;(!C||!await(o.isElement==null?void 0:o.isElement(S)))&&(C=s.floating[y]||a.floating[m]);let w=b/2-x/2,T=C/2-h[m]/2-1,E=M(d[_],T),D=M(d[v],T),O=E,ee=C-h[m]-D,k=C/2-h[m]/2+w,te=re(O,k,ee),ne=!c.arrow&&B(i)!=null&&k!==te&&a.reference[m]/2-(k<O?E:D)-h[m]/2<0,A=ne?k<O?k-O:k-ee:0;return{[p]:f[p]+A,data:{[p]:te,centerOffset:k-te-A,...ne&&{alignmentOffset:A}},reset:ne}}}),Te=function(e){return e===void 0&&(e={}),{name:`flip`,options:e,async fn(t){var n;let{placement:r,middlewareData:i,rects:a,initialPlacement:o,platform:s,elements:c}=t,{mainAxis:l=!0,crossAxis:u=!0,fallbackPlacements:d,fallbackStrategy:f=`bestFit`,fallbackAxisSideDirection:p=`none`,flipAlignment:m=!0,...h}=R(e,t);if((n=i.arrow)!=null&&n.alignmentOffset)return{};let g=z(r),_=V(o),v=z(o)===o,y=await(s.isRTL==null?void 0:s.isRTL(c.floating)),b=d||(v||!m?[ge(o)]:ce(o)),x=p!==`none`;!d&&x&&b.push(...he(o,m,p,y));let S=[o,...b],C=await s.detectOverflow(t,h),w=[],T=i.flip?.overflows||[];if(l&&w.push(C[g]),u){let e=se(r,a,y);w.push(C[e[0]],C[e[1]])}if(T=[...T,{placement:r,overflows:w}],!w.every(e=>e<=0)){let e=(i.flip?.index||0)+1,t=S[e];if(t&&(!(u===`alignment`&&_!==V(t))||T.every(e=>V(e.placement)===_?e.overflows[0]>0:!0)))return{data:{index:e,overflows:T},reset:{placement:t}};let n=T.filter(e=>e.overflows[0]<=0).sort((e,t)=>e.overflows[1]-t.overflows[1])[0]?.placement;if(!n)switch(f){case`bestFit`:{let e=T.filter(e=>{if(x){let t=V(e.placement);return t===_||t===`y`}return!0}).map(e=>[e.placement,e.overflows.filter(e=>e>0).reduce((e,t)=>e+t,0)]).sort((e,t)=>e[1]-t[1])[0]?.[0];e&&(n=e);break}case`initialPlacement`:n=o;break}if(r!==n)return{reset:{placement:n}}}return{}}}};function Ee(e,t){return{top:e.top-t.height,right:e.right-t.width,bottom:e.bottom-t.height,left:e.left-t.width}}function De(e){return j.some(t=>e[t]>=0)}var Oe=function(e){return e===void 0&&(e={}),{name:`hide`,options:e,async fn(t){let{rects:n,platform:r}=t,{strategy:i=`referenceHidden`,...a}=R(e,t);switch(i){case`referenceHidden`:{let e=Ee(await r.detectOverflow(t,{...a,elementContext:`reference`}),n.reference);return{data:{referenceHiddenOffsets:e,referenceHidden:De(e)}}}case`escaped`:{let e=Ee(await r.detectOverflow(t,{...a,altBoundary:!0}),n.floating);return{data:{escapedOffsets:e,escaped:De(e)}}}default:return{}}}}},ke=new Set([`left`,`top`]);async function Ae(e,t){let{placement:n,platform:r,elements:i}=e,a=await(r.isRTL==null?void 0:r.isRTL(i.floating)),o=z(n),s=B(n),c=V(n)===`y`,l=ke.has(o)?-1:1,u=a&&c?-1:1,d=R(t,e),{mainAxis:f,crossAxis:p,alignmentAxis:m}=typeof d==`number`?{mainAxis:d,crossAxis:0,alignmentAxis:null}:{mainAxis:d.mainAxis||0,crossAxis:d.crossAxis||0,alignmentAxis:d.alignmentAxis};return s&&typeof m==`number`&&(p=s===`end`?m*-1:m),c?{x:p*u,y:f*l}:{x:f*l,y:p*u}}var je=function(e){return e===void 0&&(e=0),{name:`offset`,options:e,async fn(t){var n;let{x:r,y:i,placement:a,middlewareData:o}=t,s=await Ae(t,e);return a===o.offset?.placement&&(n=o.arrow)!=null&&n.alignmentOffset?{}:{x:r+s.x,y:i+s.y,data:{...s,placement:a}}}}},Me=function(e){return e===void 0&&(e={}),{name:`shift`,options:e,async fn(t){let{x:n,y:r,placement:i,platform:a}=t,{mainAxis:o=!0,crossAxis:s=!1,limiter:c={fn:e=>{let{x:t,y:n}=e;return{x:t,y:n}}},...l}=R(e,t),u={x:n,y:r},d=await a.detectOverflow(t,l),f=V(z(i)),p=ie(f),m=u[p],h=u[f];if(o){let e=p===`y`?`top`:`left`,t=p===`y`?`bottom`:`right`,n=m+d[e],r=m-d[t];m=re(n,m,r)}if(s){let e=f===`y`?`top`:`left`,t=f===`y`?`bottom`:`right`,n=h+d[e],r=h-d[t];h=re(n,h,r)}let g=c.fn({...t,[p]:m,[f]:h});return{...g,data:{x:g.x-n,y:g.y-r,enabled:{[p]:o,[f]:s}}}}}},Ne=function(e){return e===void 0&&(e={}),{options:e,fn(t){let{x:n,y:r,placement:i,rects:a,middlewareData:o}=t,{offset:s=0,mainAxis:c=!0,crossAxis:l=!0}=R(e,t),u={x:n,y:r},d=V(i),f=ie(d),p=u[f],m=u[d],h=R(s,t),g=typeof h==`number`?{mainAxis:h,crossAxis:0}:{mainAxis:0,crossAxis:0,...h};if(c){let e=f===`y`?`height`:`width`,t=a.reference[f]-a.floating[e]+g.mainAxis,n=a.reference[f]+a.reference[e]-g.mainAxis;p<t?p=t:p>n&&(p=n)}if(l){let e=f===`y`?`width`:`height`,t=ke.has(z(i)),n=a.reference[d]-a.floating[e]+(t&&o.offset?.[d]||0)+(t?0:g.crossAxis),r=a.reference[d]+a.reference[e]+(t?0:o.offset?.[d]||0)-(t?g.crossAxis:0);m<n?m=n:m>r&&(m=r)}return{[f]:p,[d]:m}}}},Pe=function(e){return e===void 0&&(e={}),{name:`size`,options:e,async fn(t){var n,r;let{placement:i,rects:a,platform:o,elements:s}=t,{apply:c=()=>{},...l}=R(e,t),u=await o.detectOverflow(t,l),d=z(i),f=B(i),p=V(i)===`y`,{width:m,height:h}=a.floating,g,_;d===`top`||d===`bottom`?(g=d,_=f===(await(o.isRTL==null?void 0:o.isRTL(s.floating))?`start`:`end`)?`left`:`right`):(_=d,g=f===`end`?`top`:`bottom`);let v=h-u.top-u.bottom,y=m-u.left-u.right,b=M(h-u[g],v),x=M(m-u[_],y),S=!t.middlewareData.shift,C=b,w=x;if((n=t.middlewareData.shift)!=null&&n.enabled.x&&(w=y),(r=t.middlewareData.shift)!=null&&r.enabled.y&&(C=v),S&&!f){let e=N(u.left,0),t=N(u.right,0),n=N(u.top,0),r=N(u.bottom,0);p?w=m-2*(e!==0||t!==0?e+t:N(u.left,u.right)):C=h-2*(n!==0||r!==0?n+r:N(u.top,u.bottom))}await c({...t,availableWidth:w,availableHeight:C});let T=await o.getDimensions(s.floating);return m!==T.width||h!==T.height?{reset:{rects:!0}}:{}}}};function Fe(){return typeof window<`u`}function H(e){return Ie(e)?(e.nodeName||``).toLowerCase():`#document`}function U(e){var t;return(e==null||(t=e.ownerDocument)==null?void 0:t.defaultView)||window}function W(e){return((Ie(e)?e.ownerDocument:e.document)||window.document)?.documentElement}function Ie(e){return Fe()?e instanceof Node||e instanceof U(e).Node:!1}function G(e){return Fe()?e instanceof Element||e instanceof U(e).Element:!1}function K(e){return Fe()?e instanceof HTMLElement||e instanceof U(e).HTMLElement:!1}function Le(e){return!Fe()||typeof ShadowRoot>`u`?!1:e instanceof ShadowRoot||e instanceof U(e).ShadowRoot}function Re(e){let{overflow:t,overflowX:n,overflowY:r,display:i}=Y(e);return/auto|scroll|overlay|hidden|clip/.test(t+r+n)&&i!==`inline`&&i!==`contents`}function ze(e){return/^(table|td|th)$/.test(H(e))}function Be(e){try{if(e.matches(`:popover-open`))return!0}catch{}try{return e.matches(`:modal`)}catch{return!1}}var Ve=/transform|translate|scale|rotate|perspective|filter/,He=/paint|layout|strict|content/,q=e=>!!e&&e!==`none`,Ue;function We(e){let t=G(e)?Y(e):e;return q(t.transform)||q(t.translate)||q(t.scale)||q(t.rotate)||q(t.perspective)||!Ke()&&(q(t.backdropFilter)||q(t.filter))||Ve.test(t.willChange||``)||He.test(t.contain||``)}function Ge(e){let t=X(e);for(;K(t)&&!J(t);){if(We(t))return t;if(Be(t))return null;t=X(t)}return null}function Ke(){return Ue??=typeof CSS<`u`&&CSS.supports&&CSS.supports(`-webkit-backdrop-filter`,`none`),Ue}function J(e){return/^(html|body|#document)$/.test(H(e))}function Y(e){return U(e).getComputedStyle(e)}function qe(e){return G(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.scrollX,scrollTop:e.scrollY}}function X(e){if(H(e)===`html`)return e;let t=e.assignedSlot||e.parentNode||Le(e)&&e.host||W(e);return Le(t)?t.host:t}function Je(e){let t=X(e);return J(t)?e.ownerDocument?e.ownerDocument.body:e.body:K(t)&&Re(t)?t:Je(t)}function Ye(e,t,n){t===void 0&&(t=[]),n===void 0&&(n=!0);let r=Je(e),i=r===e.ownerDocument?.body,a=U(r);if(i){let e=Xe(a);return t.concat(a,a.visualViewport||[],Re(r)?r:[],e&&n?Ye(e):[])}else return t.concat(r,Ye(r,[],n))}function Xe(e){return e.parent&&Object.getPrototypeOf(e.parent)?e.frameElement:null}function Ze(e){let t=Y(e),n=parseFloat(t.width)||0,r=parseFloat(t.height)||0,i=K(e),a=i?e.offsetWidth:n,o=i?e.offsetHeight:r,s=P(n)!==a||P(r)!==o;return s&&(n=a,r=o),{width:n,height:r,$:s}}function Qe(e){return G(e)?e:e.contextElement}function Z(e){let t=Qe(e);if(!K(t))return I(1);let n=t.getBoundingClientRect(),{width:r,height:i,$:a}=Ze(t),o=(a?P(n.width):n.width)/r,s=(a?P(n.height):n.height)/i;return(!o||!Number.isFinite(o))&&(o=1),(!s||!Number.isFinite(s))&&(s=1),{x:o,y:s}}var $e=I(0);function et(e){let t=U(e);return!Ke()||!t.visualViewport?$e:{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}}function tt(e,t,n){return t===void 0&&(t=!1),!n||t&&n!==U(e)?!1:t}function Q(e,t,n,r){t===void 0&&(t=!1),n===void 0&&(n=!1);let i=e.getBoundingClientRect(),a=Qe(e),o=I(1);t&&(r?G(r)&&(o=Z(r)):o=Z(e));let s=tt(a,n,r)?et(a):I(0),c=(i.left+s.x)/o.x,l=(i.top+s.y)/o.y,u=i.width/o.x,d=i.height/o.y;if(a){let e=U(a),t=r&&G(r)?U(r):r,n=e,i=Xe(n);for(;i&&r&&t!==n;){let e=Z(i),t=i.getBoundingClientRect(),r=Y(i),a=t.left+(i.clientLeft+parseFloat(r.paddingLeft))*e.x,o=t.top+(i.clientTop+parseFloat(r.paddingTop))*e.y;c*=e.x,l*=e.y,u*=e.x,d*=e.y,c+=a,l+=o,n=U(i),i=Xe(n)}}return ye({width:u,height:d,x:c,y:l})}function nt(e,t){let n=qe(e).scrollLeft;return t?t.left+n:Q(W(e)).left+n}function rt(e,t){let n=e.getBoundingClientRect();return{x:n.left+t.scrollLeft-nt(e,n),y:n.top+t.scrollTop}}function it(e){let{elements:t,rect:n,offsetParent:r,strategy:i}=e,a=i===`fixed`,o=W(r),s=t?Be(t.floating):!1;if(r===o||s&&a)return n;let c={scrollLeft:0,scrollTop:0},l=I(1),u=I(0),d=K(r);if((d||!d&&!a)&&((H(r)!==`body`||Re(o))&&(c=qe(r)),d)){let e=Q(r);l=Z(r),u.x=e.x+r.clientLeft,u.y=e.y+r.clientTop}let f=o&&!d&&!a?rt(o,c):I(0);return{width:n.width*l.x,height:n.height*l.y,x:n.x*l.x-c.scrollLeft*l.x+u.x+f.x,y:n.y*l.y-c.scrollTop*l.y+u.y+f.y}}function at(e){return Array.from(e.getClientRects())}function ot(e){let t=W(e),n=qe(e),r=e.ownerDocument.body,i=N(t.scrollWidth,t.clientWidth,r.scrollWidth,r.clientWidth),a=N(t.scrollHeight,t.clientHeight,r.scrollHeight,r.clientHeight),o=-n.scrollLeft+nt(e),s=-n.scrollTop;return Y(r).direction===`rtl`&&(o+=N(t.clientWidth,r.clientWidth)-i),{width:i,height:a,x:o,y:s}}var st=25;function ct(e,t){let n=U(e),r=W(e),i=n.visualViewport,a=r.clientWidth,o=r.clientHeight,s=0,c=0;if(i){a=i.width,o=i.height;let e=Ke();(!e||e&&t===`fixed`)&&(s=i.offsetLeft,c=i.offsetTop)}let l=nt(r);if(l<=0){let e=r.ownerDocument,t=e.body,n=getComputedStyle(t),i=e.compatMode===`CSS1Compat`&&parseFloat(n.marginLeft)+parseFloat(n.marginRight)||0,o=Math.abs(r.clientWidth-t.clientWidth-i);o<=st&&(a-=o)}else l<=st&&(a+=l);return{width:a,height:o,x:s,y:c}}function lt(e,t){let n=Q(e,!0,t===`fixed`),r=n.top+e.clientTop,i=n.left+e.clientLeft,a=K(e)?Z(e):I(1);return{width:e.clientWidth*a.x,height:e.clientHeight*a.y,x:i*a.x,y:r*a.y}}function ut(e,t,n){let r;if(t===`viewport`)r=ct(e,n);else if(t===`document`)r=ot(W(e));else if(G(t))r=lt(t,n);else{let n=et(e);r={x:t.x-n.x,y:t.y-n.y,width:t.width,height:t.height}}return ye(r)}function dt(e,t){let n=X(e);return n===t||!G(n)||J(n)?!1:Y(n).position===`fixed`||dt(n,t)}function ft(e,t){let n=t.get(e);if(n)return n;let r=Ye(e,[],!1).filter(e=>G(e)&&H(e)!==`body`),i=null,a=Y(e).position===`fixed`,o=a?X(e):e;for(;G(o)&&!J(o);){let t=Y(o),n=We(o);!n&&t.position===`fixed`&&(i=null),(a?!n&&!i:!n&&t.position===`static`&&i&&(i.position===`absolute`||i.position===`fixed`)||Re(o)&&!n&&dt(e,o))?r=r.filter(e=>e!==o):i=t,o=X(o)}return t.set(e,r),r}function pt(e){let{element:t,boundary:n,rootBoundary:r,strategy:i}=e,a=[...n===`clippingAncestors`?Be(t)?[]:ft(t,this._c):[].concat(n),r],o=ut(t,a[0],i),s=o.top,c=o.right,l=o.bottom,u=o.left;for(let e=1;e<a.length;e++){let n=ut(t,a[e],i);s=N(n.top,s),c=M(n.right,c),l=M(n.bottom,l),u=N(n.left,u)}return{width:c-u,height:l-s,x:u,y:s}}function mt(e){let{width:t,height:n}=Ze(e);return{width:t,height:n}}function ht(e,t,n){let r=K(t),i=W(t),a=n===`fixed`,o=Q(e,!0,a,t),s={scrollLeft:0,scrollTop:0},c=I(0);function l(){c.x=nt(i)}if(r||!r&&!a)if((H(t)!==`body`||Re(i))&&(s=qe(t)),r){let e=Q(t,!0,a,t);c.x=e.x+t.clientLeft,c.y=e.y+t.clientTop}else i&&l();a&&!r&&i&&l();let u=i&&!r&&!a?rt(i,s):I(0);return{x:o.left+s.scrollLeft-c.x-u.x,y:o.top+s.scrollTop-c.y-u.y,width:o.width,height:o.height}}function gt(e){return Y(e).position===`static`}function _t(e,t){if(!K(e)||Y(e).position===`fixed`)return null;if(t)return t(e);let n=e.offsetParent;return W(e)===n&&(n=n.ownerDocument.body),n}function vt(e,t){let n=U(e);if(Be(e))return n;if(!K(e)){let t=X(e);for(;t&&!J(t);){if(G(t)&&!gt(t))return t;t=X(t)}return n}let r=_t(e,t);for(;r&&ze(r)&>(r);)r=_t(r,t);return r&&J(r)&>(r)&&!We(r)?n:r||Ge(e)||n}var yt=async function(e){let t=this.getOffsetParent||vt,n=this.getDimensions,r=await n(e.floating);return{reference:ht(e.reference,await t(e.floating),e.strategy),floating:{x:0,y:0,width:r.width,height:r.height}}};function bt(e){return Y(e).direction===`rtl`}var xt={convertOffsetParentRelativeRectToViewportRelativeRect:it,getDocumentElement:W,getClippingRect:pt,getOffsetParent:vt,getElementRects:yt,getClientRects:at,getDimensions:mt,getScale:Z,isElement:G,isRTL:bt};function St(e,t){return e.x===t.x&&e.y===t.y&&e.width===t.width&&e.height===t.height}function Ct(e,t){let n=null,r,i=W(e);function a(){var e;clearTimeout(r),(e=n)==null||e.disconnect(),n=null}function o(s,c){s===void 0&&(s=!1),c===void 0&&(c=1),a();let l=e.getBoundingClientRect(),{left:u,top:d,width:f,height:p}=l;if(s||t(),!f||!p)return;let m=F(d),h=F(i.clientWidth-(u+f)),g=F(i.clientHeight-(d+p)),_=F(u),v={rootMargin:-m+`px `+-h+`px `+-g+`px `+-_+`px`,threshold:N(0,M(1,c))||1},y=!0;function b(t){let n=t[0].intersectionRatio;if(n!==c){if(!y)return o();n?o(!1,n):r=setTimeout(()=>{o(!1,1e-7)},1e3)}n===1&&!St(l,e.getBoundingClientRect())&&o(),y=!1}try{n=new IntersectionObserver(b,{...v,root:i.ownerDocument})}catch{n=new IntersectionObserver(b,v)}n.observe(e)}return o(!0),a}function wt(e,t,n,r){r===void 0&&(r={});let{ancestorScroll:i=!0,ancestorResize:a=!0,elementResize:o=typeof ResizeObserver==`function`,layoutShift:s=typeof IntersectionObserver==`function`,animationFrame:c=!1}=r,l=Qe(e),u=i||a?[...l?Ye(l):[],...t?Ye(t):[]]:[];u.forEach(e=>{i&&e.addEventListener(`scroll`,n,{passive:!0}),a&&e.addEventListener(`resize`,n)});let d=l&&s?Ct(l,n):null,f=-1,p=null;o&&(p=new ResizeObserver(e=>{let[r]=e;r&&r.target===l&&p&&t&&(p.unobserve(t),cancelAnimationFrame(f),f=requestAnimationFrame(()=>{var e;(e=p)==null||e.observe(t)})),n()}),l&&!c&&p.observe(l),t&&p.observe(t));let m,h=c?Q(e):null;c&&g();function g(){let t=Q(e);h&&!St(h,t)&&n(),h=t,m=requestAnimationFrame(g)}return n(),()=>{var e;u.forEach(e=>{i&&e.removeEventListener(`scroll`,n),a&&e.removeEventListener(`resize`,n)}),d?.(),(e=p)==null||e.disconnect(),p=null,c&&cancelAnimationFrame(m)}}var Tt=je,Et=Me,Dt=Te,Ot=Pe,kt=Oe,At=we,jt=Ne,Mt=(e,t,n)=>{let r=new Map,i={platform:xt,...n},a={...i.platform,_c:r};return Ce(e,t,{...i,platform:a})};function Nt(e){return typeof e==`object`&&!!e&&`$el`in e}function Pt(e){if(Nt(e)){let t=e.$el;return Ie(t)&&H(t)===`#comment`?null:t}return e}function $(e){return typeof e==`function`?e():p(e)}function Ft(e){return{name:`arrow`,options:e,fn(t){let n=Pt($(e.element));return n==null?{}:At({element:n,padding:e.padding}).fn(t)}}}function It(e){return typeof window>`u`?1:(e.ownerDocument.defaultView||window).devicePixelRatio||1}function Lt(e,t){let n=It(e);return Math.round(t*n)/n}function Rt(t,n,r){r===void 0&&(r={});let i=r.whileElementsMounted,o=d(()=>$(r.open)??!0),s=d(()=>$(r.middleware)),c=d(()=>$(r.placement)??`bottom`),l=d(()=>$(r.strategy)??`absolute`),f=d(()=>$(r.transform)??!0),p=d(()=>Pt(t.value)),h=d(()=>Pt(n.value)),v=m(0),y=m(0),b=m(l.value),x=m(c.value),S=u({}),C=m(!1),w=d(()=>{let e={position:b.value,left:`0`,top:`0`};if(!h.value)return e;let t=Lt(h.value,v.value),n=Lt(h.value,y.value);return f.value?{...e,transform:`translate(`+t+`px, `+n+`px)`,...It(h.value)>=1.5&&{willChange:`transform`}}:{position:b.value,left:t+`px`,top:n+`px`}}),T;function E(){if(p.value==null||h.value==null)return;let e=o.value;Mt(p.value,h.value,{middleware:s.value,placement:c.value,strategy:l.value}).then(t=>{v.value=t.x,y.value=t.y,b.value=t.strategy,x.value=t.placement,S.value=t.middlewareData,C.value=e!==!1})}function D(){typeof T==`function`&&(T(),T=void 0)}function O(){if(D(),i===void 0){E();return}if(p.value!=null&&h.value!=null){T=i(p.value,h.value,E);return}}function ee(){o.value||(C.value=!1)}return a([s,c,l,o],E,{flush:`sync`}),a([p,h],O,{flush:`sync`}),a(o,ee,{flush:`sync`}),e()&&g(D),{x:_(v),y:_(y),strategy:_(b),placement:_(x),middlewareData:_(S),isPositioned:_(C),floatingStyles:w,update:E}}var zt={side:`bottom`,sideOffset:0,sideFlip:!0,align:`center`,alignOffset:0,alignFlip:!0,arrowPadding:0,hideShiftedArrow:!0,avoidCollisions:!0,collisionBoundary:()=>[],collisionPadding:0,sticky:`partial`,hideWhenDetached:!1,positionStrategy:`fixed`,updatePositionStrategy:`optimized`,prioritizePosition:!1},[Bt,Vt]=S(`PopperContent`),Ht=n({inheritAttrs:!1,__name:`PopperContent`,props:f({side:{type:null,required:!1},sideOffset:{type:Number,required:!1},sideFlip:{type:Boolean,required:!1},align:{type:null,required:!1},alignOffset:{type:Number,required:!1},alignFlip:{type:Boolean,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},hideShiftedArrow:{type:Boolean,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1},disableUpdateOnLayoutShift:{type:Boolean,required:!1},prioritizePosition:{type:Boolean,required:!1},reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},{...zt}),emits:[`placed`],setup(e,{emit:n}){let a=e,o=n,l=D(),{forwardRef:u,currentElement:f}=T(),g=m(),_=m(),{width:S,height:C}=E(_),O=d(()=>a.side+(a.align===`center`?``:`-${a.align}`)),ee=d(()=>typeof a.collisionPadding==`number`?a.collisionPadding:{top:0,right:0,bottom:0,left:0,...a.collisionPadding}),k=d(()=>Array.isArray(a.collisionBoundary)?a.collisionBoundary:[a.collisionBoundary]),j=d(()=>({padding:ee.value,boundary:k.value.filter(te),altBoundary:k.value.length>0})),M=d(()=>({mainAxis:a.sideFlip,crossAxis:a.alignFlip})),N=w(()=>[Tt({mainAxis:a.sideOffset+C.value,alignmentAxis:a.alignOffset}),a.prioritizePosition&&a.avoidCollisions&&Dt({...j.value,...M.value}),a.avoidCollisions&&Et({mainAxis:!0,crossAxis:!!a.prioritizePosition,limiter:a.sticky===`partial`?jt():void 0,...j.value}),!a.prioritizePosition&&a.avoidCollisions&&Dt({...j.value,...M.value}),Ot({...j.value,apply:({elements:e,rects:t,availableWidth:n,availableHeight:r})=>{let{width:i,height:a}=t.reference,o=e.floating.style;o.setProperty(`--reka-popper-available-width`,`${n}px`),o.setProperty(`--reka-popper-available-height`,`${r}px`),o.setProperty(`--reka-popper-anchor-width`,`${i}px`),o.setProperty(`--reka-popper-anchor-height`,`${a}px`)}}),_.value&&Ft({element:_.value,padding:a.arrowPadding}),ne({arrowWidth:S.value,arrowHeight:C.value}),a.hideWhenDetached&&kt({strategy:`referenceHidden`,...j.value})]),{floatingStyles:P,placement:F,isPositioned:I,middlewareData:L,update:re}=Rt(d(()=>a.reference??l.anchor.value),g,{strategy:a.positionStrategy,placement:O,whileElementsMounted:(...e)=>wt(...e,{layoutShift:!a.disableUpdateOnLayoutShift,animationFrame:a.updatePositionStrategy===`always`}),middleware:N}),R=d(()=>A(F.value)[0]),z=d(()=>A(F.value)[1]);i(()=>{I.value&&o(`placed`)});let B=d(()=>{let e=L.value.arrow?.centerOffset!==0;return a.hideShiftedArrow&&e}),ie=m(``);return h(()=>{f.value&&(ie.value=window.getComputedStyle(f.value).zIndex)}),Vt({placedSide:R,onArrowChange:e=>_.value=e,arrowX:d(()=>L.value.arrow?.x??0),arrowY:d(()=>L.value.arrow?.y??0),shouldHideArrow:B}),(e,n)=>(r(),y(`div`,{ref_key:`floatingRef`,ref:g,"data-reka-popper-content-wrapper":``,style:v({...p(P),transform:p(I)?p(P).transform:`translate(0, -200%)`,minWidth:`max-content`,zIndex:ie.value,"--reka-popper-transform-origin":[p(L).transformOrigin?.x,p(L).transformOrigin?.y].join(` `),...p(L).hide?.referenceHidden&&{visibility:`hidden`,pointerEvents:`none`}})},[s(p(x),t({ref:p(u)},e.$attrs,{"as-child":a.asChild,as:e.as,"data-side":R.value,"data-align":z.value,style:{animation:p(I)?void 0:`none`}}),{default:c(()=>[b(e.$slots,`default`)]),_:3},16,[`as-child`,`as`,`data-side`,`data-align`,`style`])],4))}});export{ee as i,Bt as n,k as r,Ht as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{C as e,I as t,N as n,R as r,S as i,Y as a,_ as o,f as s,g as c,gt as ee,h as te,l as ne,mt as l,ot as u,t as d,u as f,v as p,x as m,y as h,yt as g}from"./client-BBW9-06a.js";import{a as _,i as v,n as y,r as b,t as x}from"./SelectValue-DhqRtJKk.js";import{n as S}from"./button-B3kgf-D2.js";import{t as C}from"./badge-HGT44FNA.js";import{t as re}from"./Checkbox-DhBbPKjw.js";import{i as w,o as T,r as ie,s as ae,t as oe}from"./dialog-BFhbK4vw.js";import{a as se,c as ce,i as le,n as ue,o as E,r as de,t as fe}from"./alert-dialog-ChPy9vB2.js";import{t as D}from"./Label-9sUKofNb.js";import{n as O}from"./lib-D-4ywYag.js";import{a as pe,i as k,n as A,o as j,r as M,t as N}from"./TableHeader-D9I1uQTp.js";import{t as P}from"./Input-C5_w9X6Y.js";var F=[{group:`智谱`,presets:[{plan:`标准`,presetName:`智谱`,apiType:`openai`,baseUrl:`https://open.bigmodel.cn/api/paas/v4`,models:[`glm-5.1`,`glm-5`,`glm-5-turbo`,`glm-4.7`,`glm-4.7-flash`,`glm-4.6`]},{plan:`Coding Plan`,presetName:`智谱 Coding Plan`,apiType:`anthropic`,baseUrl:`https://open.bigmodel.cn/api/anthropic`,models:[`glm-5.1`,`glm-5-turbo`,`glm-4.7`,`glm-4.5-air`]}]},{group:`KIMI`,presets:[{plan:`标准`,presetName:`KIMI`,apiType:`openai`,baseUrl:`https://api.moonshot.cn`,models:[`kimi-k2.5`,`kimi-k2-0905-preview`,`kimi-k2-turbo-preview`,`kimi-k2-thinking`,`kimi-k2-thinking-turbo`,`moonshot-v1-128k`]},{plan:`Coding Plan`,presetName:`KIMI Coding Plan`,apiType:`anthropic`,baseUrl:`https://api.kimi.com/coding`,models:[`kimi-for-coding`,`kimi-k2.5`]}]},{group:`Minimax`,presets:[{plan:`标准`,presetName:`Minimax`,apiType:`openai`,baseUrl:`https://api.minimax.chat`,models:[`MiniMax-M2.7`,`MiniMax-M2.7-highspeed`,`MiniMax-M2.5`,`MiniMax-M2.5-highspeed`,`MiniMax-M2.1`,`MiniMax-M2`]},{plan:`Token Plan`,presetName:`Minimax Token Plan`,apiType:`anthropic`,baseUrl:`https://api.minimaxi.com/anthropic`,models:[`MiniMax-M2.7`]}]},{group:`火山引擎`,presets:[{plan:`标准`,presetName:`火山引擎`,apiType:`openai`,baseUrl:`https://ark.cn-beijing.volces.com/api/v3`,models:[`doubao-seed-2-0-pro-260215`,`doubao-seed-1-8-251228`,`doubao-seed-code-preview-251028`]},{plan:`Coding Plan`,presetName:`火山引擎 Coding Plan`,apiType:`anthropic`,baseUrl:`https://ark.cn-beijing.volces.com/api/compatible`,models:[`ark-code-latest`,`doubao-seed-2.0-code`,`kimi-k2.5`,`glm-4.7`,`deepseek-v3.2`]}]},{group:`阿里云`,presets:[{plan:`标准`,presetName:`阿里云百炼`,apiType:`openai`,baseUrl:`https://dashscope.aliyuncs.com/compatible-mode`,models:[`qwen3.6-plus`,`qwen3.5-plus`,`qwen3-max`,`qwen3.5-flash`,`qwen3-coder-plus`,`qwen3-coder-next`]},{plan:`Coding Plan`,presetName:`阿里云 Coding Plan`,apiType:`anthropic`,baseUrl:`https://coding.dashscope.aliyuncs.com/apps/anthropic`,models:[`qwen3.6-plus`,`qwen3-coder-next`,`qwen3-coder-plus`,`kimi-k2.5`,`glm-5`,`MiniMax-M2.5`]}]},{group:`腾讯云`,presets:[{plan:`标准`,presetName:`腾讯云混元`,apiType:`openai`,baseUrl:`https://api.hunyuan.cloud.tencent.com`,models:[`hunyuan-2.0-thinking`,`hunyuan-2.0-instruct`,`hunyuan-t1-latest`,`hunyuan-a13b`,`hunyuan-turbos-latest`]},{plan:`Coding Plan`,presetName:`腾讯云 Coding Plan`,apiType:`anthropic`,baseUrl:`https://api.lkeap.cloud.tencent.com/coding/anthropic`,models:[`tc-code-latest`,`hunyuan-2.0-instruct`,`hunyuan-2.0-thinking`,`hunyuan-turbos`,`hunyuan-t1`,`glm-5`,`kimi-k2.5`]}]},{group:`阶跃星辰`,presets:[{plan:`标准`,presetName:`阶跃星辰`,apiType:`openai`,baseUrl:`https://api.stepfun.com`,models:[`step-3.5-flash`,`step-3`,`step-2-mini`,`step-2-16k`,`step-1-8k`,`step-1-32k`]},{plan:`Step Plan`,presetName:`阶跃星辰 Step Plan`,apiType:`anthropic`,baseUrl:`https://api.stepfun.com/step_plan`,models:[`step-3.5-flash-2603`,`step-3.5-flash`]}]}],I={class:`p-6`},L={class:`flex items-center justify-between mb-4`},R={class:`bg-card rounded-lg border overflow-hidden`},z={class:`flex flex-wrap gap-1`},B={key:0,class:`text-muted-foreground text-xs`},me={class:`rounded-md border bg-muted/40 p-3 space-y-2`},he={class:`flex gap-2`},ge={class:`flex flex-wrap gap-1.5 mb-1.5`},_e={class:`flex gap-2`},ve={class:`flex items-center gap-2`},V=e({__name:`Providers`,setup(e){let V={name:``,api_type:`anthropic`,base_url:``,api_key:``,models:[],is_active:!0},H=u(``),U=u([]),W=u(!1),G=u(null),K=u(null),q=u({...V}),J=u(``),Y=u(``),X=te(()=>J.value?F.find(e=>e.group===J.value)?.presets??[]:[]);function ye(){Y.value=``}function be(){let e=X.value.find(e=>e.plan===Y.value);e&&(q.value.name=e.presetName,q.value.api_type=`anthropic`,q.value.base_url=e.baseUrl,q.value.models=[...e.models])}async function Z(){try{U.value=await d.getProviders()}catch(e){console.error(`Failed to load providers:`,e),O.error(`加载供应商失败`)}}function Q(){let e=H.value.trim();if(!e)return;let t=e.split(/[,,]/).map(e=>e.trim()).filter(Boolean);for(let e of t)q.value.models.includes(e)||q.value.models.push(e);H.value=``}function xe(e){q.value.models.splice(e,1)}function $(){G.value=null,q.value={name:``,api_type:`anthropic`,base_url:``,api_key:``,models:[],is_active:!0},H.value=``,J.value=``,Y.value=``,W.value=!0}function Se(e){G.value=e.id,q.value={name:e.name,api_type:`anthropic`,base_url:e.base_url,api_key:e.api_key,models:[...e.models||[]],is_active:!!e.is_active},H.value=``,J.value=``,Y.value=``,W.value=!0}function Ce(){let e={name:q.value.name,api_type:`anthropic`,base_url:q.value.base_url,models:q.value.models,is_active:+!!q.value.is_active};return q.value.api_key&&(e.api_key=q.value.api_key),e}async function we(){let e=q.value.name.trim();if(!/^[a-zA-Z0-9_-]+$/.test(e)){O.error(`名称仅允许英文大小写字母、数字、横线和下划线`);return}try{let t=Ce();t.name=e,G.value?await d.updateProvider(G.value,t):(t.api_key=q.value.api_key,await d.createProvider(t)),W.value=!1,await Z()}catch(e){console.error(`Failed to save provider:`,e),O.error(`保存供应商失败`)}}function Te(e){K.value=e}async function Ee(){let e=K.value;if(e){K.value=null;try{await d.deleteProvider(e.id),await Z()}catch(e){console.error(`Failed to delete provider:`,e),O.error(`删除供应商失败`)}}}return n(Z),(e,n)=>(t(),h(`div`,I,[c(`div`,L,[n[11]||=c(`h2`,{class:`text-lg font-semibold text-foreground`},`供应商`,-1),i(l(S),{onClick:$,class:`flex items-center gap-1`},{default:a(()=>[...n[10]||=[c(`svg`,{class:`w-4 h-4`,fill:`none`,stroke:`currentColor`,viewBox:`0 0 24 24`},[c(`path`,{"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`,d:`M12 4v16m8-8H4`})],-1),m(` 添加供应商 `,-1)]]),_:1})]),c(`div`,R,[i(l(j),null,{default:a(()=>[i(l(N),null,{default:a(()=>[i(l(M),{class:`bg-muted`},{default:a(()=>[i(l(A),{class:`text-muted-foreground`},{default:a(()=>[...n[12]||=[m(`名称`,-1)]]),_:1}),i(l(A),{class:`text-muted-foreground`},{default:a(()=>[...n[13]||=[m(`类型`,-1)]]),_:1}),i(l(A),{class:`text-muted-foreground`},{default:a(()=>[...n[14]||=[m(`Base URL`,-1)]]),_:1}),i(l(A),{class:`text-muted-foreground`},{default:a(()=>[...n[15]||=[m(`API Key`,-1)]]),_:1}),i(l(A),{class:`text-muted-foreground`},{default:a(()=>[...n[16]||=[m(`模型`,-1)]]),_:1}),i(l(A),{class:`text-muted-foreground`},{default:a(()=>[...n[17]||=[m(`状态`,-1)]]),_:1}),i(l(A),{class:`text-right text-muted-foreground`},{default:a(()=>[...n[18]||=[m(`操作`,-1)]]),_:1})]),_:1})]),_:1}),i(l(pe),null,{default:a(()=>[(t(!0),h(s,null,r(U.value,e=>(t(),o(l(M),{key:e.id,class:ee({"opacity-60":!e.is_active})},{default:a(()=>[i(l(k),{class:`font-medium`},{default:a(()=>[m(g(e.name),1)]),_:2},1024),i(l(k),null,{default:a(()=>[i(l(C),{variant:`secondary`},{default:a(()=>[m(g(e.api_type),1)]),_:2},1024)]),_:2},1024),i(l(k),{class:`text-muted-foreground`},{default:a(()=>[m(g(e.base_url),1)]),_:2},1024),i(l(k),{class:`text-muted-foreground font-mono text-xs`},{default:a(()=>[m(g(e.api_key),1)]),_:2},1024),i(l(k),null,{default:a(()=>[c(`div`,z,[(t(!0),h(s,null,r(e.models||[],e=>(t(),o(l(C),{key:e,variant:`secondary`,class:`text-xs`},{default:a(()=>[m(g(e),1)]),_:2},1024))),128)),e.models?.length?p(``,!0):(t(),h(`span`,B,`-`))])]),_:2},1024),i(l(k),null,{default:a(()=>[i(l(C),{variant:e.is_active?`default`:`secondary`},{default:a(()=>[m(g(e.is_active?`启用`:`禁用`),1)]),_:2},1032,[`variant`])]),_:2},1024),i(l(k),{class:`text-right`},{default:a(()=>[i(l(S),{variant:`ghost`,size:`sm`,onClick:t=>Se(e),class:`text-muted-foreground hover:text-primary mr-2`},{default:a(()=>[...n[19]||=[m(`编辑`,-1)]]),_:1},8,[`onClick`]),i(l(S),{variant:`ghost`,size:`sm`,onClick:t=>Te(e),class:`text-muted-foreground hover:text-destructive`},{default:a(()=>[...n[20]||=[m(`删除`,-1)]]),_:1},8,[`onClick`])]),_:2},1024)]),_:2},1032,[`class`]))),128)),U.value.length===0?(t(),o(l(M),{key:0},{default:a(()=>[i(l(k),{colspan:`7`,class:`text-center text-muted-foreground py-8`},{default:a(()=>[...n[21]||=[m(`暂无供应商`,-1)]]),_:1})]),_:1})):p(``,!0)]),_:1})]),_:1})]),i(l(ae),{open:W.value,"onUpdate:open":n[8]||=e=>W.value=e},{default:a(()=>[i(l(T),null,{default:a(()=>[i(l(ie),null,{default:a(()=>[i(l(oe),null,{default:a(()=>[m(g(G.value?`编辑供应商`:`添加供应商`),1)]),_:1})]),_:1}),c(`form`,{onSubmit:f(we,[`prevent`]),class:`space-y-3`},[c(`div`,me,[n[22]||=c(`div`,{class:`text-xs font-medium text-muted-foreground`},`快速配置`,-1),c(`div`,he,[i(l(_),{modelValue:J.value,"onUpdate:modelValue":[n[0]||=e=>J.value=e,ye]},{default:a(()=>[i(l(y),{class:`flex-1`},{default:a(()=>[i(l(x),{placeholder:`选择供应商`})]),_:1}),i(l(v),null,{default:a(()=>[(t(!0),h(s,null,r(l(F),e=>(t(),o(l(b),{key:e.group,value:e.group},{default:a(()=>[m(g(e.group),1)]),_:2},1032,[`value`]))),128))]),_:1})]),_:1},8,[`modelValue`]),i(l(_),{modelValue:Y.value,"onUpdate:modelValue":[n[1]||=e=>Y.value=e,be],disabled:!J.value},{default:a(()=>[i(l(y),{class:`flex-1`},{default:a(()=>[i(l(x),{placeholder:`选择套餐`})]),_:1}),i(l(v),null,{default:a(()=>[(t(!0),h(s,null,r(X.value,e=>(t(),o(l(b),{key:e.plan,value:e.plan},{default:a(()=>[m(g(e.plan),1)]),_:2},1032,[`value`]))),128))]),_:1})]),_:1},8,[`modelValue`,`disabled`])])]),c(`div`,null,[i(l(D),{class:`block text-sm font-medium text-foreground mb-1`},{default:a(()=>[...n[23]||=[m(`名称`,-1)]]),_:1}),i(l(P),{modelValue:q.value.name,"onUpdate:modelValue":n[2]||=e=>q.value.name=e,type:`text`,required:``},null,8,[`modelValue`])]),c(`div`,null,[i(l(D),{class:`block text-sm font-medium text-foreground mb-1`},{default:a(()=>[...n[24]||=[m(`Base URL`,-1)]]),_:1}),i(l(P),{modelValue:q.value.base_url,"onUpdate:modelValue":n[3]||=e=>q.value.base_url=e,type:`url`,required:``},null,8,[`modelValue`])]),c(`div`,null,[i(l(D),{class:`block text-sm font-medium text-foreground mb-1`},{default:a(()=>[...n[25]||=[m(`API Key`,-1)]]),_:1}),i(l(P),{modelValue:q.value.api_key,"onUpdate:modelValue":n[4]||=e=>q.value.api_key=e,type:`text`,required:``},null,8,[`modelValue`])]),c(`div`,null,[i(l(D),{class:`block text-sm font-medium text-foreground mb-1`},{default:a(()=>[...n[26]||=[m(`可用模型`,-1)]]),_:1}),c(`div`,ge,[(t(!0),h(s,null,r(q.value.models,(e,r)=>(t(),o(l(C),{key:r,variant:`secondary`,class:`gap-1 pr-1`},{default:a(()=>[m(g(e)+` `,1),i(l(S),{type:`button`,variant:`ghost`,size:`icon`,class:`h-4 w-4 rounded-full hover:bg-muted p-0 text-xs leading-none`,onClick:e=>xe(r)},{default:a(()=>[...n[27]||=[m(`×`,-1)]]),_:1},8,[`onClick`])]),_:2},1024))),128))]),c(`div`,_e,[i(l(P),{modelValue:H.value,"onUpdate:modelValue":n[5]||=e=>H.value=e,placeholder:`输入模型名称,多个用逗号分隔`,onKeydown:ne(f(Q,[`prevent`]),[`enter`]),class:`flex-1`},null,8,[`modelValue`,`onKeydown`]),i(l(S),{type:`button`,variant:`outline`,size:`sm`,onClick:Q,disabled:!H.value.trim()},{default:a(()=>[...n[28]||=[m(`添加`,-1)]]),_:1},8,[`disabled`])])]),c(`div`,ve,[i(l(re),{modelValue:q.value.is_active,"onUpdate:modelValue":n[6]||=e=>q.value.is_active=e,id:`svc-active`},null,8,[`modelValue`]),i(l(D),{for:`svc-active`,class:`text-sm text-foreground`},{default:a(()=>[...n[29]||=[m(`启用`,-1)]]),_:1})]),i(l(w),null,{default:a(()=>[i(l(S),{type:`button`,variant:`outline`,onClick:n[7]||=e=>W.value=!1},{default:a(()=>[...n[30]||=[m(`取消`,-1)]]),_:1}),i(l(S),{type:`submit`},{default:a(()=>[...n[31]||=[m(`保存`,-1)]]),_:1})]),_:1})],32)]),_:1})]),_:1},8,[`open`]),i(l(ce),{open:!!K.value,"onUpdate:open":n[9]||=e=>{e||(K.value=null)}},{default:a(()=>[i(l(se),null,{default:a(()=>[i(l(ue),null,{default:a(()=>[i(l(fe),null,{default:a(()=>[...n[32]||=[m(`确认删除`,-1)]]),_:1}),i(l(le),null,{default:a(()=>[m(`确定要删除供应商「`+g(K.value?.name)+`」吗?此操作不可撤销。`,1)]),_:1})]),_:1}),i(l(de),null,{default:a(()=>[i(l(E),null,{default:a(()=>[...n[33]||=[m(`取消`,-1)]]),_:1}),i(l(S),{variant:`destructive`,onClick:Ee},{default:a(()=>[...n[34]||=[m(`删除`,-1)]]),_:1})]),_:1})]),_:1})]),_:1},8,[`open`])]))}});export{V as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{A as e,C as t,H as n,I as r,K as i,N as a,R as o,S as s,T as c,V as l,Y as u,_ as d,_t as f,dt as p,f as m,g as h,gt as g,h as _,l as v,mt as y,ot as b,q as x,t as S,u as C,v as w,vt as T,x as E,y as D,yt as O,z as k}from"./client-BBW9-06a.js";import{i as A,n as j,r as M}from"./button-B3kgf-D2.js";import{c as ee,d as te,h as ne,i as re,m as ie,n as ae,p as N,t as P,u as oe,w as F,y as se}from"./badge-HGT44FNA.js";import{a as ce,c as I,g as le,h as L,t as R,u as ue,v as de,y as z}from"./useForwardExpose-CIZH3-CG.js";import{i as fe,n as pe,r as me,t as he}from"./PopperContent-DGr-wo47.js";import{n as ge,r as _e,t as ve}from"./CollapsibleTrigger-BC4bE5yr.js";import{a as ye,c as be,i as xe,n as Se,o as Ce,r as we,s as Te,t as Ee}from"./alert-dialog-ChPy9vB2.js";import{t as De}from"./VisuallyHiddenInput-Dr8wp-H0.js";import{t as Oe}from"./Label-9sUKofNb.js";import{i as ke,n as Ae,r as B,t as V}from"./TabsTrigger-D4xjbMaQ.js";import{n as H}from"./lib-D-4ywYag.js";import{n as U,t as W}from"./CardContent-DKzAH8lX.js";import{t as G}from"./CardHeader-BBKKDXEh.js";import{t as K}from"./CardTitle-BQtpsfYd.js";import{a as je,i as q,n as J,o as Me,r as Y,t as Ne}from"./TableHeader-D9I1uQTp.js";function Pe(e,t){let n=le(!1,300);de(()=>{n.value=!1});let r=b(null),i=ue();function a(){r.value=null,n.value=!1}function o(e,t){if(!t)return;let i=e.currentTarget,a={x:e.clientX,y:e.clientY},o=Ie(a,Fe(a,i.getBoundingClientRect()),1),s=Le(t.getBoundingClientRect());r.value=ze([...o,...s]),n.value=!0}return x(n=>{if(e.value&&t.value){let r=e=>o(e,t.value),i=t=>o(t,e.value);e.value.addEventListener(`pointerleave`,r),t.value.addEventListener(`pointerleave`,i),n(()=>{e.value?.removeEventListener(`pointerleave`,r),t.value?.removeEventListener(`pointerleave`,i)})}}),x(n=>{if(r.value){let o=n=>{if(!r.value||!(n.target instanceof Element))return;let o=n.target,s={x:n.clientX,y:n.clientY},c=e.value?.contains(o)||t.value?.contains(o),l=!Re(s,r.value),u=!!o.closest(`[data-grace-area-trigger]`);c?a():(l||u)&&(a(),i.trigger())};e.value?.ownerDocument.addEventListener(`pointermove`,o),n(()=>e.value?.ownerDocument.removeEventListener(`pointermove`,o))}}),{isPointerInTransit:n,onPointerExit:i.on}}function Fe(e,t){let n=Math.abs(t.top-e.y),r=Math.abs(t.bottom-e.y),i=Math.abs(t.right-e.x),a=Math.abs(t.left-e.x);switch(Math.min(n,r,i,a)){case a:return`left`;case i:return`right`;case n:return`top`;case r:return`bottom`;default:throw Error(`unreachable`)}}function Ie(e,t,n=5){let r=[];switch(t){case`top`:r.push({x:e.x-n,y:e.y+n},{x:e.x+n,y:e.y+n});break;case`bottom`:r.push({x:e.x-n,y:e.y-n},{x:e.x+n,y:e.y-n});break;case`left`:r.push({x:e.x+n,y:e.y-n},{x:e.x+n,y:e.y+n});break;case`right`:r.push({x:e.x-n,y:e.y-n},{x:e.x-n,y:e.y+n});break}return r}function Le(e){let{top:t,right:n,bottom:r,left:i}=e;return[{x:i,y:t},{x:n,y:t},{x:n,y:r},{x:i,y:r}]}function Re(e,t){let{x:n,y:r}=e,i=!1;for(let e=0,a=t.length-1;e<t.length;a=e++){let o=t[e].x,s=t[e].y,c=t[a].x,l=t[a].y;s>r!=l>r&&n<(c-o)*(r-s)/(l-s)+o&&(i=!i)}return i}function ze(e){let t=e.slice();return t.sort((e,t)=>e.x<t.x?-1:e.x>t.x?1:e.y<t.y?-1:+(e.y>t.y)),Be(t)}function Be(e){if(e.length<=1)return e.slice();let t=[];for(let n=0;n<e.length;n++){let r=e[n];for(;t.length>=2;){let e=t.at(-1),n=t[t.length-2];if((e.x-n.x)*(r.y-n.y)>=(e.y-n.y)*(r.x-n.x))t.pop();else break}t.push(r)}t.pop();let n=[];for(let t=e.length-1;t>=0;t--){let r=e[t];for(;n.length>=2;){let e=n.at(-1),t=n[n.length-2];if((e.x-t.x)*(r.y-t.y)>=(e.y-t.y)*(r.x-t.x))n.pop();else break}n.push(r)}return n.pop(),t.length===1&&n.length===1&&t[0].x===n[0].x&&t[0].y===n[0].y?t:t.concat(n)}var Ve={key:0,d:`M0 0L6 6L12 0`},He={key:1,d:`M0 0L4.58579 4.58579C5.36683 5.36683 6.63316 5.36684 7.41421 4.58579L12 0`},Ue=t({__name:`Arrow`,props:{width:{type:Number,required:!1,default:10},height:{type:Number,required:!1,default:5},rounded:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`svg`}},setup(t){let n=t;return R(),(t,i)=>(r(),d(y(A),e(n,{width:t.width,height:t.height,viewBox:t.asChild?void 0:`0 0 12 6`,preserveAspectRatio:t.asChild?void 0:`none`}),{default:u(()=>[k(t.$slots,`default`,{},()=>[t.rounded?(r(),D(`path`,He)):(r(),D(`path`,Ve))])]),_:3},16,[`width`,`height`,`viewBox`,`preserveAspectRatio`]))}}),We={top:`bottom`,right:`left`,bottom:`top`,left:`right`},Ge=t({inheritAttrs:!1,__name:`PopperArrow`,props:{width:{type:Number,required:!1},height:{type:Number,required:!1},rounded:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`svg`}},setup(t){let{forwardRef:n}=R(),i=pe(),a=_(()=>We[i.placedSide.value]);return(t,o)=>(r(),D(`span`,{ref:e=>{y(i).onArrowChange(e??void 0)},style:T({position:`absolute`,left:y(i).arrowX?.value?`${y(i).arrowX?.value}px`:void 0,top:y(i).arrowY?.value?`${y(i).arrowY?.value}px`:void 0,[a.value]:0,transformOrigin:{top:``,right:`0 0`,bottom:`center 0`,left:`100% 0`}[y(i).placedSide.value],transform:{top:`translateY(100%)`,right:`translateY(50%) rotate(90deg) translateX(-50%)`,bottom:`rotate(180deg)`,left:`translateY(50%) rotate(-90deg) translateX(50%)`}[y(i).placedSide.value],visibility:y(i).shouldHideArrow.value?`hidden`:void 0})},[s(Ue,e(t.$attrs,{ref:y(n),style:{display:`block`},as:t.as,"as-child":t.asChild,rounded:t.rounded,width:t.width,height:t.height}),{default:u(()=>[k(t.$slots,`default`)]),_:3},16,[`as`,`as-child`,`rounded`,`width`,`height`])],4))}}),[Ke,qe]=F(`SwitchRoot`),Je=t({__name:`SwitchRoot`,props:{defaultValue:{type:null,required:!1},modelValue:{type:null,required:!1,default:void 0},disabled:{type:Boolean,required:!1},id:{type:String,required:!1},value:{type:String,required:!1,default:`on`},trueValue:{type:null,required:!1,default:()=>!0},falseValue:{type:null,required:!1,default:()=>!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`button`},name:{type:String,required:!1},required:{type:Boolean,required:!1}},emits:[`update:modelValue`],setup(t,{emit:n}){let i=t,a=n,{disabled:o}=p(i),s=I(i,`modelValue`,a,{defaultValue:i.defaultValue??i.falseValue,passive:i.modelValue===void 0}),c=_(()=>s.value===i.trueValue);function l(){o.value||(s.value=c.value?i.falseValue:i.trueValue)}let{forwardRef:f,currentElement:m}=R(),h=ne(m),g=_(()=>i.id&&m.value?document.querySelector(`[for="${i.id}"]`)?.innerText:void 0);return qe({checked:c,toggleCheck:l,disabled:o}),(t,n)=>(r(),d(y(A),e(t.$attrs,{id:t.id,ref:y(f),role:`switch`,type:t.as===`button`?`button`:void 0,value:t.value,"aria-label":t.$attrs[`aria-label`]||g.value,"aria-checked":c.value,"aria-required":t.required,"data-state":c.value?`checked`:`unchecked`,"data-disabled":y(o)?``:void 0,"as-child":t.asChild,as:t.as,disabled:y(o),onClick:l,onKeydown:v(C(l,[`prevent`]),[`enter`])}),{default:u(()=>[k(t.$slots,`default`,{modelValue:y(s),checked:c.value}),y(h)&&t.name?(r(),d(y(De),{key:0,type:`checkbox`,name:t.name,disabled:y(o),required:t.required,value:t.value,checked:c.value},null,8,[`name`,`disabled`,`required`,`value`,`checked`])):w(`v-if`,!0)]),_:3},16,[`id`,`type`,`value`,`aria-label`,`aria-checked`,`aria-required`,`data-state`,`data-disabled`,`as-child`,`as`,`disabled`,`onKeydown`]))}}),Ye=t({__name:`SwitchThumb`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`span`}},setup(e){let t=Ke();return R(),(e,n)=>(r(),d(y(A),{"data-state":y(t).checked.value?`checked`:`unchecked`,"data-disabled":y(t).disabled.value?``:void 0,"as-child":e.asChild,as:e.as},{default:u(()=>[k(e.$slots,`default`)]),_:3},8,[`data-state`,`data-disabled`,`as-child`,`as`]))}}),Xe=t({__name:`TooltipArrow`,props:{width:{type:Number,required:!1,default:10},height:{type:Number,required:!1,default:5},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`svg`}},setup(e){let t=e;return R(),(e,n)=>(r(),d(y(Ge),f(c(t)),{default:u(()=>[k(e.$slots,`default`)]),_:3},16))}}),[X,Ze]=F(`TooltipProvider`),Qe=t({inheritAttrs:!1,__name:`TooltipProvider`,props:{delayDuration:{type:Number,required:!1,default:700},skipDelayDuration:{type:Number,required:!1,default:300},disableHoverableContent:{type:Boolean,required:!1,default:!1},disableClosingTrigger:{type:Boolean,required:!1},disabled:{type:Boolean,required:!1},ignoreNonKeyboardFocus:{type:Boolean,required:!1,default:!1},content:{type:Object,required:!1}},setup(e){let{delayDuration:t,skipDelayDuration:n,disableHoverableContent:r,disableClosingTrigger:i,ignoreNonKeyboardFocus:a,disabled:o,content:s}=p(e);R();let c=b(!0),l=b(!1),{start:u,stop:d}=z(()=>{c.value=!0},n,{immediate:!1});return Ze({isOpenDelayed:c,delayDuration:t,onOpen(){d(),c.value=!1},onClose(){u()},isPointerInTransitRef:l,disableHoverableContent:r,disableClosingTrigger:i,disabled:o,ignoreNonKeyboardFocus:a,content:s}),(e,t)=>k(e.$slots,`default`)}}),Z=`tooltip.open`,[Q,$e]=F(`TooltipRoot`),et=t({__name:`TooltipRoot`,props:{defaultOpen:{type:Boolean,required:!1,default:!1},open:{type:Boolean,required:!1,default:void 0},delayDuration:{type:Number,required:!1,default:void 0},disableHoverableContent:{type:Boolean,required:!1,default:void 0},disableClosingTrigger:{type:Boolean,required:!1,default:void 0},disabled:{type:Boolean,required:!1,default:void 0},ignoreNonKeyboardFocus:{type:Boolean,required:!1,default:void 0}},emits:[`update:open`],setup(e,{emit:t}){let n=e,a=t;R();let o=X(),s=_(()=>n.disableHoverableContent??o.disableHoverableContent.value),c=_(()=>n.disableClosingTrigger??o.disableClosingTrigger.value),l=_(()=>n.disabled??o.disabled.value),f=_(()=>n.delayDuration??o.delayDuration.value),p=_(()=>n.ignoreNonKeyboardFocus??o.ignoreNonKeyboardFocus.value),m=I(n,`open`,a,{defaultValue:n.defaultOpen,passive:n.open===void 0});i(m,e=>{o.onClose&&(e?(o.onOpen(),document.dispatchEvent(new CustomEvent(Z))):o.onClose())});let h=b(!1),g=b(),v=_(()=>m.value?h.value?`delayed-open`:`instant-open`:`closed`),{start:x,stop:S}=z(()=>{h.value=!0,m.value=!0},f,{immediate:!1});function C(){S(),h.value=!1,m.value=!0}function w(){S(),m.value=!1}function T(){x()}return $e({contentId:``,open:m,stateAttribute:v,trigger:g,onTriggerChange(e){g.value=e},onTriggerEnter(){o.isOpenDelayed.value?T():C()},onTriggerLeave(){s.value?w():S()},onOpen:C,onClose:w,disableHoverableContent:s,disableClosingTrigger:c,disabled:l,ignoreNonKeyboardFocus:p}),(e,t)=>(r(),d(y(fe),null,{default:u(()=>[k(e.$slots,`default`,{open:y(m)})]),_:3}))}}),tt=t({__name:`TooltipContentImpl`,props:{ariaLabel:{type:String,required:!1},asChild:{type:Boolean,required:!1,default:void 0},as:{type:null,required:!1},side:{type:null,required:!1},sideOffset:{type:Number,required:!1},align:{type:null,required:!1},alignOffset:{type:Number,required:!1},avoidCollisions:{type:Boolean,required:!1,default:void 0},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1,default:void 0},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1}},emits:[`escapeKeyDown`,`pointerDownOutside`],setup(t,{emit:n}){let i=t,o=n,c=Q(),l=X(),{forwardRef:f,currentElement:p}=R(),m=_(()=>i.ariaLabel||p.value?.textContent),h=_(()=>{let{ariaLabel:e,...t}=i;return se(t,l.content.value??{},{side:`top`,sideOffset:0,align:`center`,avoidCollisions:!0,collisionBoundary:[],collisionPadding:0,arrowPadding:0,sticky:`partial`,hideWhenDetached:!1})});return a(()=>{ce(window,`scroll`,e=>{e.target?.contains(c.trigger.value)&&c.onClose()},{capture:!0}),ce(window,Z,c.onClose)}),(t,n)=>(r(),d(y(ee),{"as-child":``,"disable-outside-pointer-events":!1,onEscapeKeyDown:n[0]||=e=>o(`escapeKeyDown`,e),onPointerDownOutside:n[1]||=e=>{y(c).disableClosingTrigger.value&&y(c).trigger.value?.contains(e.target)&&e.preventDefault(),o(`pointerDownOutside`,e)},onFocusOutside:n[2]||=C(()=>{},[`prevent`]),onDismiss:n[3]||=e=>y(c).onClose()},{default:u(()=>[s(y(he),e({ref:y(f),"data-state":y(c).stateAttribute.value},{...t.$attrs,...h.value},{style:{"--reka-tooltip-content-transform-origin":`var(--reka-popper-transform-origin)`,"--reka-tooltip-content-available-width":`var(--reka-popper-available-width)`,"--reka-tooltip-content-available-height":`var(--reka-popper-available-height)`,"--reka-tooltip-trigger-width":`var(--reka-popper-anchor-width)`,"--reka-tooltip-trigger-height":`var(--reka-popper-anchor-height)`}}),{default:u(()=>[k(t.$slots,`default`),s(y(ae),{id:y(c).contentId,role:`tooltip`},{default:u(()=>[E(O(m.value),1)]),_:1},8,[`id`])]),_:3},16,[`data-state`])]),_:3}))}}),nt=t({__name:`TooltipContentHoverable`,props:{ariaLabel:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1},side:{type:null,required:!1},sideOffset:{type:Number,required:!1},align:{type:null,required:!1},alignOffset:{type:Number,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1}},setup(t){let n=ie(t),{forwardRef:i,currentElement:a}=R(),{trigger:o,onClose:s}=Q(),c=X(),{isPointerInTransit:l,onPointerExit:f}=Pe(o,a);return c.isPointerInTransitRef=l,f(()=>{s()}),(t,a)=>(r(),d(tt,e({ref:y(i)},y(n)),{default:u(()=>[k(t.$slots,`default`)]),_:3},16))}}),rt=t({__name:`TooltipContent`,props:{forceMount:{type:Boolean,required:!1},ariaLabel:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1},side:{type:null,required:!1},sideOffset:{type:Number,required:!1},align:{type:null,required:!1},alignOffset:{type:Number,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1}},emits:[`escapeKeyDown`,`pointerDownOutside`],setup(t,{emit:n}){let i=t,a=n,o=Q(),s=N(i,a),{forwardRef:c}=R();return(t,n)=>(r(),d(y(oe),{present:t.forceMount||y(o).open.value},{default:u(()=>[(r(),d(l(y(o).disableHoverableContent.value?tt:nt),e({ref:y(c)},y(s)),{default:u(()=>[k(t.$slots,`default`)]),_:3},16))]),_:3},8,[`present`]))}}),it=t({__name:`TooltipPortal`,props:{to:{type:null,required:!1},disabled:{type:Boolean,required:!1},defer:{type:Boolean,required:!1},forceMount:{type:Boolean,required:!1}},setup(e){let t=e;return(e,n)=>(r(),d(y(re),f(c(t)),{default:u(()=>[k(e.$slots,`default`)]),_:3},16))}}),at=t({__name:`TooltipTrigger`,props:{reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`button`}},setup(t){let i=t,o=Q(),c=X();o.contentId||=te(void 0,`reka-tooltip-content`);let{forwardRef:l,currentElement:f}=R(),p=b(!1),m=b(!1),h=_(()=>o.disabled.value?{}:{click:T,focus:C,pointermove:x,pointerleave:S,pointerdown:v,blur:w});a(()=>{o.onTriggerChange(f.value)});function g(){setTimeout(()=>{p.value=!1},1)}function v(){o.open&&!o.disableClosingTrigger.value&&o.onClose(),p.value=!0,document.addEventListener(`pointerup`,g,{once:!0})}function x(e){e.pointerType!==`touch`&&!m.value&&!c.isPointerInTransitRef.value&&(o.onTriggerEnter(),m.value=!0)}function S(){o.onTriggerLeave(),m.value=!1}function C(e){p.value||o.ignoreNonKeyboardFocus.value&&!e.target.matches?.(`:focus-visible`)||o.onOpen()}function w(){o.onClose()}function T(){o.disableClosingTrigger.value||o.onClose()}return(t,a)=>(r(),d(y(me),{"as-child":``,reference:t.reference},{default:u(()=>[s(y(A),e({ref:y(l),"aria-describedby":y(o).open.value?y(o).contentId:void 0,"data-state":y(o).stateAttribute.value,as:t.as,"as-child":i.asChild,"data-grace-area-trigger":``},n(h.value)),{default:u(()=>[k(t.$slots,`default`)]),_:3},16,[`aria-describedby`,`data-state`,`as`,`as-child`])]),_:3},8,[`reference`]))}}),ot=t({__name:`CardDescription`,props:{class:{type:[Boolean,null,String,Object,Array]}},setup(e){let t=e;return(e,n)=>(r(),D(`div`,{"data-slot":`card-description`,class:g(y(M)(`text-muted-foreground text-sm`,t.class))},[k(e.$slots,`default`)],2))}}),st=t({__name:`Switch`,props:{defaultValue:{},modelValue:{},disabled:{type:Boolean},id:{},value:{},trueValue:{},falseValue:{},asChild:{type:Boolean},as:{},name:{},required:{type:Boolean},class:{type:[Boolean,null,String,Object,Array]},size:{default:`default`}},emits:[`update:modelValue`],setup(t,{emit:n}){let i=t,a=n,o=N(L(i,`class`,`size`),a);return(n,a)=>(r(),d(y(Je),e({"data-slot":`switch`,"data-size":t.size},y(o),{class:y(M)(`data-[state=checked]:bg-primary data-[state=unchecked]:bg-input focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 dark:data-[state=unchecked]:bg-input/80 shrink-0 rounded-full border border-transparent focus-visible:ring-3 aria-invalid:ring-3 data-[size=default]:h-[18.4px] data-[size=default]:w-[32px] data-[size=sm]:h-[14px] data-[size=sm]:w-[24px] peer group/switch relative inline-flex items-center transition-all outline-none after:absolute after:-inset-x-3 after:-inset-y-2 data-[disabled]:cursor-not-allowed data-[disabled]:opacity-50`,i.class)}),{default:u(e=>[s(y(Ye),{"data-slot":`switch-thumb`,class:`bg-background dark:data-[state=unchecked]:bg-foreground dark:data-[state=checked]:bg-primary-foreground rounded-full group-data-[size=default]/switch:size-4 group-data-[size=sm]/switch:size-3 group-data-[size=default]/switch:data-[state=checked]:translate-x-[calc(100%-2px)] group-data-[size=sm]/switch:data-[state=checked]:translate-x-[calc(100%-2px)] group-data-[size=default]/switch:data-[state=unchecked]:translate-x-0 group-data-[size=sm]/switch:data-[state=unchecked]:translate-x-0 pointer-events-none block ring-0 transition-transform`},{default:u(()=>[k(n.$slots,`thumb`,f(c(e)))]),_:2},1024)]),_:3},16,[`data-size`,`class`]))}}),ct=t({__name:`Tooltip`,props:{defaultOpen:{type:Boolean},open:{type:Boolean},delayDuration:{},disableHoverableContent:{type:Boolean},disableClosingTrigger:{type:Boolean},disabled:{type:Boolean},ignoreNonKeyboardFocus:{type:Boolean}},emits:[`update:open`],setup(t,{emit:n}){let i=N(t,n);return(t,n)=>(r(),d(y(et),e({"data-slot":`tooltip`},y(i)),{default:u(e=>[k(t.$slots,`default`,f(c(e)))]),_:3},16))}}),lt=t({inheritAttrs:!1,__name:`TooltipContent`,props:{forceMount:{type:Boolean},ariaLabel:{},asChild:{type:Boolean},as:{},side:{},sideOffset:{default:0},align:{},alignOffset:{},avoidCollisions:{type:Boolean},collisionBoundary:{},collisionPadding:{},arrowPadding:{},sticky:{},hideWhenDetached:{type:Boolean},positionStrategy:{},updatePositionStrategy:{},class:{type:[Boolean,null,String,Object,Array]}},emits:[`escapeKeyDown`,`pointerDownOutside`],setup(t,{emit:n}){let i=t,a=n,o=N(L(i,`class`),a);return(t,n)=>(r(),d(y(it),null,{default:u(()=>[s(y(rt),e({"data-slot":`tooltip-content`},{...y(o),...t.$attrs},{class:y(M)(`data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-[state=delayed-open]:animate-in data-[state=delayed-open]:fade-in-0 data-[state=delayed-open]:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 inline-flex items-center gap-1.5 rounded-md px-3 py-1.5 text-xs has-data-[slot=kbd]:pr-1.5 **:data-[slot=kbd]:relative **:data-[slot=kbd]:isolate **:data-[slot=kbd]:z-dropdown **:data-[slot=kbd]:rounded-sm bg-foreground text-background z-dropdown w-fit max-w-xs origin-(--reka-tooltip-content-transform-origin)`,i.class)}),{default:u(()=>[k(t.$slots,`default`),s(y(Xe),{class:`size-2.5 rotate-45 rounded-[2px] bg-foreground fill-foreground z-dropdown translate-y-[calc(-50%_-_2px)]`})]),_:3},16,[`class`])]),_:3}))}}),ut=t({__name:`TooltipProvider`,props:{delayDuration:{default:0},skipDelayDuration:{},disableHoverableContent:{type:Boolean},disableClosingTrigger:{type:Boolean},disabled:{type:Boolean},ignoreNonKeyboardFocus:{type:Boolean},content:{}},setup(e){let t=e;return(e,n)=>(r(),d(y(Qe),f(c(t)),{default:u(()=>[k(e.$slots,`default`)]),_:3},16))}}),dt=t({__name:`TooltipTrigger`,props:{reference:{},asChild:{type:Boolean},as:{}},setup(t){let n=t;return(t,i)=>(r(),d(y(at),e({"data-slot":`tooltip-trigger`},n),{default:u(()=>[k(t.$slots,`default`)]),_:3},16))}}),ft={key:0,class:`py-8 text-center text-muted-foreground`},pt={key:1,class:`py-8 text-center text-muted-foreground`},mt={class:`cursor-default font-mono text-xs`},ht={class:`font-mono text-xs`},gt={key:0,class:`text-muted-foreground`},_t={key:1,class:`text-muted-foreground`},vt={class:`flex items-center gap-2`},yt={class:`space-y-2`},bt={class:`text-muted-foreground whitespace-nowrap`},xt={class:`text-muted-foreground`},St={class:`font-medium`},Ct=8,wt=6e4,Tt=60,$=24,Et=t({__name:`SessionTable`,props:{sessions:{},loading:{type:Boolean},historyMap:{}},emits:[`clear`,`viewHistory`],setup(e,{emit:t}){let n=t,i=b(!1),a=b(null);function c(e){a.value=e,i.value=!0}function l(){a.value&&=(n(`clear`,a.value),null)}function f(e){return e.slice(0,Ct)+`...`}function p(e){let t=Date.now()-new Date(e).getTime(),n=Math.floor(t/wt);if(n<1)return`刚刚`;if(n<Tt)return`${n} 分钟前`;let r=Math.floor(n/Tt);return r<$?`${r} 小时前`:`${Math.floor(r/$)} 天前`}function g(e){return new Date(e).toLocaleString()}return(t,n)=>(r(),D(m,null,[e.loading?(r(),D(`div`,ft,`加载中...`)):e.sessions.length===0?(r(),D(`div`,pt,`暂无活跃 Session`)):(r(),d(y(Me),{key:2},{default:u(()=>[s(y(Ne),null,{default:u(()=>[s(y(Y),null,{default:u(()=>[s(y(J),null,{default:u(()=>[...n[1]||=[E(`密钥名称`,-1)]]),_:1}),s(y(J),null,{default:u(()=>[...n[2]||=[E(`Session ID`,-1)]]),_:1}),s(y(J),null,{default:u(()=>[...n[3]||=[E(`当前模型`,-1)]]),_:1}),s(y(J),null,{default:u(()=>[...n[4]||=[E(`原始模型`,-1)]]),_:1}),s(y(J),null,{default:u(()=>[...n[5]||=[E(`最后活跃`,-1)]]),_:1}),s(y(J),null,{default:u(()=>[...n[6]||=[E(`操作`,-1)]]),_:1})]),_:1})]),_:1}),s(y(je),null,{default:u(()=>[(r(!0),D(m,null,o(e.sessions,i=>(r(),D(m,{key:i.id},[s(y(Y),null,{default:u(()=>[s(y(q),{class:`font-medium`},{default:u(()=>[E(O(i.router_key_name),1)]),_:2},1024),s(y(q),null,{default:u(()=>[s(y(ut),null,{default:u(()=>[s(y(ct),null,{default:u(()=>[s(y(dt),{"as-child":``},{default:u(()=>[h(`span`,mt,O(f(i.session_id)),1)]),_:2},1024),s(y(lt),null,{default:u(()=>[h(`p`,ht,O(i.session_id),1)]),_:2},1024)]),_:2},1024)]),_:2},1024)]),_:2},1024),s(y(q),null,{default:u(()=>[s(y(P),{variant:`secondary`},{default:u(()=>[E(O(i.current_model),1)]),_:2},1024)]),_:2},1024),s(y(q),null,{default:u(()=>[i.original_model?(r(),D(`span`,gt,O(i.original_model),1)):(r(),D(`span`,_t,`-`))]),_:2},1024),s(y(q),{class:`text-muted-foreground text-sm`},{default:u(()=>[E(O(p(i.last_active_at)),1)]),_:2},1024),s(y(q),null,{default:u(()=>[h(`div`,vt,[s(y(j),{variant:`ghost`,size:`sm`,onClick:e=>t.$emit(`viewHistory`,i)},{default:u(()=>[E(O(e.historyMap[i.session_id]?`收起`:`历史`),1)]),_:2},1032,[`onClick`]),s(y(j),{variant:`ghost`,size:`sm`,class:`text-destructive hover:text-destructive`,onClick:e=>c(i)},{default:u(()=>[...n[7]||=[E(` 清除 `,-1)]]),_:1},8,[`onClick`])])]),_:2},1024)]),_:2},1024),e.historyMap[i.session_id]?(r(),d(y(Y),{key:0},{default:u(()=>[s(y(q),{colspan:`6`,class:`bg-muted/50 px-6 py-3`},{default:u(()=>[h(`div`,yt,[n[9]||=h(`p`,{class:`text-sm font-medium text-foreground`},`切换历史`,-1),(r(!0),D(m,null,o(e.historyMap[i.session_id],e=>(r(),D(`div`,{key:e.id,class:`flex items-center gap-3 text-sm`},[h(`span`,bt,O(g(e.created_at)),1),s(y(P),{variant:`outline`,class:`text-xs`},{default:u(()=>[E(O(e.trigger_type),1)]),_:2},1024),h(`span`,null,[h(`span`,xt,O(e.old_model||`默认`),1),n[8]||=h(`span`,{class:`mx-1`},`→`,-1),h(`span`,St,O(e.new_model),1)])]))),128))])]),_:2},1024)]),_:2},1024)):w(``,!0)],64))),128))]),_:1})]),_:1})),s(y(be),{open:i.value,"onUpdate:open":n[0]||=e=>i.value=e},{default:u(()=>[s(y(ye),null,{default:u(()=>[s(y(Se),null,{default:u(()=>[s(y(Ee),null,{default:u(()=>[...n[10]||=[E(`确认清除 Session`,-1)]]),_:1}),s(y(xe),null,{default:u(()=>[...n[11]||=[E(` 清除后,该 Session 将恢复使用默认模型映射。此操作不可撤销。 `,-1)]]),_:1})]),_:1}),s(y(we),null,{default:u(()=>[s(y(Ce),null,{default:u(()=>[...n[12]||=[E(`取消`,-1)]]),_:1}),s(y(Te),{onClick:l},{default:u(()=>[...n[13]||=[E(`确认清除`,-1)]]),_:1})]),_:1})]),_:1})]),_:1},8,[`open`])],64))}}),Dt={class:`p-6`},Ot={class:`flex items-center justify-between mb-4`},kt={key:0,class:`flex items-center gap-1`},At={key:1},jt={class:`flex items-center gap-3`},Mt={class:`flex items-center justify-between`},Nt=`[router-command: select-model $ARGUMENTS]`,Pt=t({__name:`ProxyEnhancement`,setup(e){let t=b(!1),n=b(!1),i=b(!0),o=b([]),c=b(!1),l=b({});async function d(){try{t.value=(await S.getProxyEnhancement()).claude_code_enabled}catch(e){console.error(`Failed to load proxy enhancement config:`,e),H.error(`加载配置失败`)}}async function f(){n.value=!0;try{await S.updateProxyEnhancement({claude_code_enabled:t.value}),H.success(`保存成功`)}catch(e){console.error(`Failed to save proxy enhancement config:`,e),H.error(`保存失败`)}finally{n.value=!1}}async function p(){c.value=!0;try{o.value=await S.getSessionStates()}catch(e){console.error(`Failed to load sessions:`,e),H.error(`加载 Session 列表失败`)}finally{c.value=!1}}async function m(e){try{await S.deleteSessionState(e.router_key_id,e.session_id),H.success(`Session 已清除`),p()}catch(e){console.error(`Failed to clear session:`,e),H.error(`清除 Session 失败`)}}async function _(e){let t=e.session_id;if(l.value[t]){delete l.value[t];return}try{let n=await S.getSessionHistory(e.router_key_id,e.session_id);l.value[t]=n}catch(e){console.error(`Failed to load history:`,e),H.error(`加载历史记录失败`)}}return a(()=>{d(),p()}),(e,a)=>(r(),D(`div`,Dt,[h(`div`,Ot,[a[3]||=h(`h2`,{class:`text-lg font-semibold text-foreground`},`代理增强`,-1),s(y(j),{disabled:n.value,onClick:f},{default:u(()=>[n.value?(r(),D(`span`,kt,[...a[2]||=[h(`svg`,{class:`w-4 h-4 animate-spin`,fill:`none`,viewBox:`0 0 24 24`},[h(`circle`,{class:`opacity-25`,cx:`12`,cy:`12`,r:`10`,stroke:`currentColor`,"stroke-width":`4`}),h(`path`,{class:`opacity-75`,fill:`currentColor`,d:`M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z`})],-1),E(` 保存中... `,-1)]])):(r(),D(`span`,At,`保存`))]),_:1},8,[`disabled`])]),s(y(ke),{"default-value":`claude-code`},{default:u(()=>[s(y(Ae),null,{default:u(()=>[s(y(V),{value:`claude-code`},{default:u(()=>[...a[4]||=[E(`Claude Code`,-1)]]),_:1}),s(y(V),{value:`opencode`},{default:u(()=>[...a[5]||=[E(`OpenCode`,-1)]]),_:1})]),_:1}),s(y(B),{value:`claude-code`},{default:u(()=>[s(y(U),null,{default:u(()=>[s(y(G),null,{default:u(()=>[s(y(K),null,{default:u(()=>[...a[6]||=[E(`Claude Code 动态模型切换`,-1)]]),_:1}),s(y(ot),null,{default:u(()=>[...a[7]||=[E(` 启用后,Claude Code 客户端可在对话中通过指令动态切换后端模型,无需修改路由配置。 `,-1)]]),_:1})]),_:1}),s(y(W),null,{default:u(()=>[h(`div`,jt,[s(y(st),{id:`claude-code-toggle`,modelValue:t.value,"onUpdate:modelValue":a[0]||=e=>t.value=e},null,8,[`modelValue`]),s(y(Oe),{for:`claude-code-toggle`},{default:u(()=>[E(O(t.value?`已启用`:`已禁用`),1)]),_:1})])]),_:1})]),_:1}),s(y(_e),{open:i.value,"onUpdate:open":a[1]||=e=>i.value=e,class:`mt-4`},{default:u(()=>[s(y(ve),{"as-child":``},{default:u(()=>[s(y(j),{variant:`ghost`,class:`w-full justify-between`},{default:u(()=>[a[9]||=h(`span`,null,`使用说明`,-1),(r(),D(`svg`,{class:g([`w-4 h-4 transition-transform`,{"rotate-180":i.value}]),fill:`none`,stroke:`currentColor`,viewBox:`0 0 24 24`},[...a[8]||=[h(`path`,{"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`,d:`M19 9l-7 7-7-7`},null,-1)]],2))]),_:1})]),_:1}),s(y(ge),{class:`mt-2`},{default:u(()=>[s(y(U),null,{default:u(()=>[s(y(W),{class:`space-y-4 text-sm`},{default:u(()=>[h(`div`,null,[a[10]||=h(`p`,{class:`font-medium text-foreground mb-1 leading-relaxed`},`配置方法`,-1),a[11]||=h(`p`,{class:`text-muted-foreground leading-relaxed`},` 创建一个 Claude Code 的 Command ,内容是 `,-1),h(`code`,{class:`block mt-1 px-3 py-2 bg-muted rounded text-xs font-mono whitespace-pre-wrap leading-relaxed`,textContent:Nt})]),a[12]||=h(`div`,null,[h(`p`,{class:`text-muted-foreground leading-relaxed`},` Command 可以是项目级或者全局级 `),h(`code`,{class:`block mt-1 px-3 py-2 bg-muted rounded text-xs font-mono whitespace-pre-wrap leading-relaxed`},[E(` # 项目级 Command `),h(`br`),E(` .claude/commands/select-model.md `)]),h(`code`,{class:`block mt-1 px-3 py-2 bg-muted rounded text-xs font-mono whitespace-pre-wrap leading-relaxed`},[E(` # 全局级 Command `),h(`br`),E(` ~/.claude/commands/select-model.md `)])],-1),a[13]||=h(`div`,null,[h(`p`,{class:`font-medium text-foreground mb-1 leading-relaxed`},`使用方法`),h(`div`,null,[h(`p`,{class:`text-muted-foreground leading-relaxed`},` 在 Claude Code 中查看可用模型 `),h(`code`,{class:`block mt-1 px-3 py-2 bg-muted rounded text-xs font-mono whitespace-pre-wrap leading-relaxed`},[E(` # 输入命令 `),h(`br`),E(` /select-model `)]),h(`code`,{class:`block mt-1 px-3 py-2 bg-muted rounded text-xs font-mono whitespace-pre-wrap leading-relaxed`},[E(` # 得到结果是你在供应商配置的 provider/model 列表 `),h(`br`),E(` 1. zai-coding-plan/glm-5 `),h(`br`),E(` 2. zai-coding-plan/glm-5.1 `),h(`br`),E(` 3. zai-coding-plan/glm-5-turbo `),h(`br`),E(` 4. kimi-coding-plan/kimi-for-coding `),h(`br`)])]),h(`div`,null,[h(`p`,{class:`text-muted-foreground leading-relaxed`},` 在Claude Code 中选择模型 `),h(`code`,{class:`block mt-1 px-3 py-2 bg-muted rounded text-xs font-mono whitespace-pre-wrap leading-relaxed`},[E(` # 输入命令 `),h(`br`),E(` /select-model zai-coding-plan/glm-5.1 `)]),h(`code`,{class:`block mt-1 px-3 py-2 bg-muted rounded text-xs font-mono whitespace-pre-wrap leading-relaxed`},[E(` # 得到结果 `),h(`br`),E(` 已选择模型: zai-coding-plan/glm-5.1 `)]),h(`p`,{class:`text-muted-foreground leading-relaxed`},` 之后可以在 活跃 Session 中查看模型设置情况。在 请求日志 页面查看请求是否已经路由到了已选择模型。 `)])],-1)]),_:1})]),_:1})]),_:1})]),_:1},8,[`open`]),s(y(U),{class:`mt-4`},{default:u(()=>[s(y(G),null,{default:u(()=>[h(`div`,Mt,[h(`div`,null,[s(y(K),null,{default:u(()=>[...a[14]||=[E(`活跃 Session`,-1)]]),_:1}),s(y(ot),null,{default:u(()=>[...a[15]||=[E(`查看和管理当前已配置模型的 session`,-1)]]),_:1})]),s(y(j),{variant:`outline`,size:`sm`,onClick:p,disabled:c.value},{default:u(()=>[...a[16]||=[E(`刷新`,-1)]]),_:1},8,[`disabled`])])]),_:1}),s(y(W),null,{default:u(()=>[s(Et,{sessions:o.value,loading:c.value,"history-map":l.value,onClear:m,onViewHistory:_},null,8,[`sessions`,`loading`,`history-map`])]),_:1})]),_:1})]),_:1}),s(y(B),{value:`opencode`},{default:u(()=>[...a[17]||=[h(`div`,{class:`flex flex-col items-center justify-center py-16 text-muted-foreground`},[h(`p`,{class:`text-lg`},`暂未支持 OpenCode 增强`)],-1)]]),_:1})]),_:1})]))}});export{Pt as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{C as e,I as t,N as n,R as r,S as i,Y as a,_ as o,f as s,g as c,mt as l,ot as u,t as d,u as f,v as p,x as m,y as h,yt as g}from"./client-BBW9-06a.js";import{a as ee,i as te,n as ne,r as _,t as re}from"./SelectValue-DhqRtJKk.js";import{n as v}from"./button-B3kgf-D2.js";import{t as y}from"./badge-HGT44FNA.js";import{t as b}from"./Checkbox-DhBbPKjw.js";import{i as x,o as S,r as C,s as w,t as T}from"./dialog-BFhbK4vw.js";import{a as ie,c as ae,i as E,n as D,o as O,r as k,t as A}from"./alert-dialog-ChPy9vB2.js";import{t as j}from"./Label-9sUKofNb.js";import{n as M}from"./lib-D-4ywYag.js";import{a as N,i as P,n as F,o as I,r as L,t as R}from"./TableHeader-D9I1uQTp.js";import{t as z}from"./Input-C5_w9X6Y.js";var B={class:`p-6`},V={class:`flex items-center justify-between mb-4`},oe={class:`bg-card rounded-lg border overflow-hidden`},H={class:`flex items-center gap-2`},U={class:`text-xs text-muted-foreground`},W={class:`grid grid-cols-2 gap-3`},G={key:0},K={class:`flex items-center gap-2`},q=e({__name:`RetryRules`,setup(e){let q={name:``,status_code:429,body_pattern:``,is_active:!0,retry_strategy:`exponential`,retry_delay_ms:5e3,max_retries:10,max_delay_ms:6e4},J=u([]),Y=u(!1),X=u(null),Z=u(null),Q=u({...q});async function $(){try{J.value=(await d.getRetryRules()).data}catch(e){console.error(`Failed to load retry rules:`,e),M.error(`加载数据失败`)}}function se(){X.value=null,Q.value={...q},Y.value=!0}function ce(e){X.value=e.id,Q.value={name:e.name,status_code:e.status_code,body_pattern:e.body_pattern,is_active:!!e.is_active,retry_strategy:e.retry_strategy,retry_delay_ms:e.retry_delay_ms,max_retries:e.max_retries,max_delay_ms:e.max_delay_ms},Y.value=!0}async function le(){try{let e={name:Q.value.name,status_code:Number(Q.value.status_code),body_pattern:Q.value.body_pattern,is_active:+!!Q.value.is_active,retry_strategy:Q.value.retry_strategy,retry_delay_ms:Number(Q.value.retry_delay_ms),max_retries:Number(Q.value.max_retries),max_delay_ms:Number(Q.value.max_delay_ms)};X.value?await d.updateRetryRule(X.value,e):await d.createRetryRule(e),Y.value=!1,await $()}catch(e){console.error(`Failed to save retry rule:`,e),M.error(`保存规则失败`)}}function ue(e){Z.value=e}async function de(){let e=Z.value;if(e){Z.value=null;try{await d.deleteRetryRule(e.id),await $()}catch(e){console.error(`Failed to delete retry rule:`,e),M.error(`删除规则失败`)}}}return n($),(e,n)=>(t(),h(`div`,B,[c(`div`,V,[n[12]||=c(`h2`,{class:`text-lg font-semibold text-foreground`},`重试规则`,-1),i(l(v),{onClick:se,class:`flex items-center gap-1`},{default:a(()=>[...n[11]||=[c(`svg`,{class:`w-4 h-4`,fill:`none`,stroke:`currentColor`,viewBox:`0 0 24 24`},[c(`path`,{"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`,d:`M12 4v16m8-8H4`})],-1),m(` 添加规则 `,-1)]]),_:1})]),c(`div`,oe,[i(l(I),null,{default:a(()=>[i(l(R),null,{default:a(()=>[i(l(L),{class:`bg-muted`},{default:a(()=>[i(l(F),{class:`text-muted-foreground`},{default:a(()=>[...n[13]||=[m(`名称`,-1)]]),_:1}),i(l(F),{class:`text-muted-foreground`},{default:a(()=>[...n[14]||=[m(`HTTP 状态码`,-1)]]),_:1}),i(l(F),{class:`text-muted-foreground`},{default:a(()=>[...n[15]||=[m(`响应体匹配`,-1)]]),_:1}),i(l(F),{class:`text-muted-foreground`},{default:a(()=>[...n[16]||=[m(`重试策略`,-1)]]),_:1}),i(l(F),{class:`text-muted-foreground`},{default:a(()=>[...n[17]||=[m(`状态`,-1)]]),_:1}),i(l(F),{class:`text-right text-muted-foreground`},{default:a(()=>[...n[18]||=[m(`操作`,-1)]]),_:1})]),_:1})]),_:1}),i(l(N),null,{default:a(()=>[(t(!0),h(s,null,r(J.value,e=>(t(),o(l(L),{key:e.id},{default:a(()=>[i(l(P),{class:`font-mono text-sm`},{default:a(()=>[m(g(e.name),1)]),_:2},1024),i(l(P),null,{default:a(()=>[m(g(e.status_code),1)]),_:2},1024),i(l(P),{class:`font-mono text-xs text-muted-foreground`},{default:a(()=>[m(g(e.body_pattern),1)]),_:2},1024),i(l(P),null,{default:a(()=>[c(`div`,H,[i(l(y),{variant:`outline`},{default:a(()=>[m(g(e.retry_strategy===`fixed`?`固定间隔`:`指数退避`),1)]),_:2},1024),c(`span`,U,[m(g(e.retry_delay_ms/1e3)+`s · `+g(e.max_retries)+`次 `,1),e.retry_strategy===`exponential`?(t(),h(s,{key:0},[m(` · 上限`+g(e.max_delay_ms/1e3)+`s`,1)],64)):p(``,!0)])])]),_:2},1024),i(l(P),null,{default:a(()=>[i(l(y),{variant:e.is_active?`default`:`secondary`},{default:a(()=>[m(g(e.is_active?`启用`:`禁用`),1)]),_:2},1032,[`variant`])]),_:2},1024),i(l(P),{class:`text-right`},{default:a(()=>[i(l(v),{variant:`ghost`,size:`sm`,onClick:t=>ce(e),class:`mr-2`},{default:a(()=>[...n[19]||=[m(`编辑`,-1)]]),_:1},8,[`onClick`]),i(l(v),{variant:`ghost`,size:`sm`,class:`text-destructive hover:text-destructive`,onClick:t=>ue(e)},{default:a(()=>[...n[20]||=[m(`删除`,-1)]]),_:1},8,[`onClick`])]),_:2},1024)]),_:2},1024))),128)),J.value.length===0?(t(),o(l(L),{key:0},{default:a(()=>[i(l(P),{colspan:`6`,class:`text-center text-muted-foreground py-8`},{default:a(()=>[...n[21]||=[m(`暂无规则`,-1)]]),_:1})]),_:1})):p(``,!0)]),_:1})]),_:1})]),i(l(w),{open:Y.value,"onUpdate:open":n[9]||=e=>Y.value=e},{default:a(()=>[i(l(S),null,{default:a(()=>[i(l(C),null,{default:a(()=>[i(l(T),null,{default:a(()=>[m(g(X.value?`编辑规则`:`添加规则`),1)]),_:1})]),_:1}),c(`form`,{onSubmit:f(le,[`prevent`]),class:`space-y-3`},[c(`div`,null,[i(l(j),{class:`block text-sm font-medium text-foreground mb-1`},{default:a(()=>[...n[22]||=[m(`名称`,-1)]]),_:1}),i(l(z),{modelValue:Q.value.name,"onUpdate:modelValue":n[0]||=e=>Q.value.name=e,type:`text`,required:``},null,8,[`modelValue`])]),c(`div`,null,[i(l(j),{class:`block text-sm font-medium text-foreground mb-1`},{default:a(()=>[...n[23]||=[m(`HTTP 状态码`,-1)]]),_:1}),i(l(z),{modelValue:Q.value.status_code,"onUpdate:modelValue":n[1]||=e=>Q.value.status_code=e,modelModifiers:{number:!0},type:`number`,required:``},null,8,[`modelValue`])]),c(`div`,null,[i(l(j),{class:`block text-sm font-medium text-foreground mb-1`},{default:a(()=>[...n[24]||=[m(`响应体匹配`,-1)]]),_:1}),i(l(z),{modelValue:Q.value.body_pattern,"onUpdate:modelValue":n[2]||=e=>Q.value.body_pattern=e,type:`text`,placeholder:`正则表达式,例如 .*rate_limit.*`,required:``},null,8,[`modelValue`])]),c(`div`,null,[i(l(j),{class:`block text-sm font-medium text-foreground mb-1`},{default:a(()=>[...n[25]||=[m(`重试策略`,-1)]]),_:1}),i(l(ee),{modelValue:Q.value.retry_strategy,"onUpdate:modelValue":n[3]||=e=>Q.value.retry_strategy=e},{default:a(()=>[i(l(ne),{class:`w-full`},{default:a(()=>[i(l(re),{placeholder:`选择策略`})]),_:1}),i(l(te),null,{default:a(()=>[i(l(_),{value:`exponential`},{default:a(()=>[...n[26]||=[m(`指数退避`,-1)]]),_:1}),i(l(_),{value:`fixed`},{default:a(()=>[...n[27]||=[m(`固定间隔`,-1)]]),_:1})]),_:1})]),_:1},8,[`modelValue`])]),c(`div`,W,[c(`div`,null,[i(l(j),{class:`block text-sm font-medium text-foreground mb-1`},{default:a(()=>[m(g(Q.value.retry_strategy===`fixed`?`间隔时间 (ms)`:`初始延迟 (ms)`),1)]),_:1}),i(l(z),{modelValue:Q.value.retry_delay_ms,"onUpdate:modelValue":n[4]||=e=>Q.value.retry_delay_ms=e,modelModifiers:{number:!0},type:`number`,min:100,required:``},null,8,[`modelValue`])]),c(`div`,null,[i(l(j),{class:`block text-sm font-medium text-foreground mb-1`},{default:a(()=>[...n[28]||=[m(`最大重试次数`,-1)]]),_:1}),i(l(z),{modelValue:Q.value.max_retries,"onUpdate:modelValue":n[5]||=e=>Q.value.max_retries=e,modelModifiers:{number:!0},type:`number`,min:0,max:100,required:``},null,8,[`modelValue`])])]),Q.value.retry_strategy===`exponential`?(t(),h(`div`,G,[i(l(j),{class:`block text-sm font-medium text-foreground mb-1`},{default:a(()=>[...n[29]||=[m(`延迟上限 (ms)`,-1)]]),_:1}),i(l(z),{modelValue:Q.value.max_delay_ms,"onUpdate:modelValue":n[6]||=e=>Q.value.max_delay_ms=e,modelModifiers:{number:!0},type:`number`,min:100,required:``},null,8,[`modelValue`])])):p(``,!0),c(`div`,K,[i(l(b),{modelValue:Q.value.is_active,"onUpdate:modelValue":n[7]||=e=>Q.value.is_active=e,id:`rule-active`},null,8,[`modelValue`]),i(l(j),{for:`rule-active`,class:`text-sm text-foreground`},{default:a(()=>[...n[30]||=[m(`启用`,-1)]]),_:1})]),i(l(x),null,{default:a(()=>[i(l(v),{type:`button`,variant:`outline`,onClick:n[8]||=e=>Y.value=!1},{default:a(()=>[...n[31]||=[m(`取消`,-1)]]),_:1}),i(l(v),{type:`submit`},{default:a(()=>[...n[32]||=[m(`保存`,-1)]]),_:1})]),_:1})],32)]),_:1})]),_:1},8,[`open`]),i(l(ae),{open:!!Z.value,"onUpdate:open":n[10]||=e=>{e||(Z.value=null)}},{default:a(()=>[i(l(ie),null,{default:a(()=>[i(l(D),null,{default:a(()=>[i(l(A),null,{default:a(()=>[...n[33]||=[m(`确认删除`,-1)]]),_:1}),i(l(E),null,{default:a(()=>[m(`确定要删除规则「`+g(Z.value?.name)+`」吗?`,1)]),_:1})]),_:1}),i(l(k),null,{default:a(()=>[i(l(O),null,{default:a(()=>[...n[34]||=[m(`取消`,-1)]]),_:1}),i(l(v),{variant:`destructive`,onClick:de},{default:a(()=>[...n[35]||=[m(`删除`,-1)]]),_:1})]),_:1})]),_:1})]),_:1},8,[`open`])]))}});export{q as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{C as e,I as t,N as n,R as r,S as i,Y as a,_ as o,f as s,g as c,gt as l,mt as u,ot as d,t as f,u as p,v as m,x as h,y as g,yt as _}from"./client-BBW9-06a.js";import{n as v}from"./button-B3kgf-D2.js";import{t as y}from"./badge-HGT44FNA.js";import{t as b}from"./Checkbox-DhBbPKjw.js";import{i as x,o as S,r as C,s as ee,t as te}from"./dialog-BFhbK4vw.js";import{a as ne,c as re,i as ie,n as ae,o as oe,r as se,t as ce}from"./alert-dialog-ChPy9vB2.js";import{t as w}from"./Label-9sUKofNb.js";import{n as T}from"./lib-D-4ywYag.js";import{a as E,i as D,n as O,o as k,r as A,t as j}from"./TableHeader-D9I1uQTp.js";import{t as M}from"./Input-C5_w9X6Y.js";import{t as N}from"./useClipboard-XyA4kDfF.js";var P={class:`p-6`},F={class:`flex items-center justify-between mb-4`},I={class:`bg-card rounded-lg border overflow-hidden`},L={class:`flex items-center gap-1`},R={class:`font-mono text-xs text-muted-foreground`},z={key:0,class:`w-3.5 h-3.5`,fill:`none`,stroke:`currentColor`,viewBox:`0 0 24 24`},B={key:1,class:`w-3.5 h-3.5 text-success`,fill:`none`,stroke:`currentColor`,viewBox:`0 0 24 24`},V={key:0,class:`flex flex-wrap gap-1`},H={class:`border rounded-md p-3 max-h-48 overflow-y-auto space-y-2 bg-muted`},U={class:`font-mono text-xs`},le={key:0,class:`text-muted-foreground text-sm text-center py-2`},W={key:0,class:`flex flex-wrap gap-1 mt-2`},ue={key:0,class:`flex items-center gap-2`},G=e({__name:`RouterKeys`,setup(e){let G={name:``,allowed_models:[],is_active:!0},K=d([]),q=d([]),J=d(!1),Y=d(null),X=d(null),Z=d({...G,allowed_models:[]}),{copied:de,copy:fe}=N();function pe(e){return new Date(e).toLocaleString(`zh-CN`)}function me(e){let t=Z.value.allowed_models.indexOf(e);t>=0&&Z.value.allowed_models.splice(t,1)}async function Q(){try{let[e,t]=await Promise.allSettled([f.getRouterKeys(),f.getAvailableModels()]);e.status===`fulfilled`&&(K.value=e.value.data),t.status===`fulfilled`&&(q.value=t.value.data)}catch(e){console.error(`Failed to load data:`,e),T.error(`加载数据失败`)}}function he(){Y.value=null,Z.value={...G,allowed_models:[]},J.value=!0}function ge(e){Y.value=e.id,Z.value={name:e.name,allowed_models:e.allowed_models?[...e.allowed_models]:[],is_active:!!e.is_active},J.value=!0}function $(){return{name:Z.value.name,allowed_models:Z.value.allowed_models.length>0?Z.value.allowed_models:null,is_active:+!!Z.value.is_active}}function _e(){return{name:Z.value.name,allowed_models:Z.value.allowed_models.length>0?Z.value.allowed_models:null}}async function ve(){try{Y.value?await f.updateRouterKey(Y.value,$()):await f.createRouterKey(_e()),J.value=!1,await Q()}catch(e){console.error(`Failed to save router key:`,e),T.error(`保存密钥失败`)}}function ye(e){X.value=e}async function be(){let e=X.value;if(e){X.value=null;try{await f.deleteRouterKey(e.id),await Q()}catch(e){console.error(`Failed to delete router key:`,e),T.error(`删除密钥失败`)}}}return n(Q),(e,n)=>(t(),g(`div`,P,[c(`div`,F,[n[6]||=c(`h2`,{class:`text-lg font-semibold text-foreground`},`API 密钥`,-1),i(u(v),{onClick:he,class:`flex items-center gap-1`},{default:a(()=>[...n[5]||=[c(`svg`,{class:`w-4 h-4`,fill:`none`,stroke:`currentColor`,viewBox:`0 0 24 24`},[c(`path`,{"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`,d:`M12 4v16m8-8H4`})],-1),h(` 创建密钥 `,-1)]]),_:1})]),c(`div`,I,[i(u(k),null,{default:a(()=>[i(u(j),null,{default:a(()=>[i(u(A),{class:`bg-muted`},{default:a(()=>[i(u(O),{class:`text-muted-foreground`},{default:a(()=>[...n[7]||=[h(`名称`,-1)]]),_:1}),i(u(O),{class:`text-muted-foreground`},{default:a(()=>[...n[8]||=[h(`密钥`,-1)]]),_:1}),i(u(O),{class:`text-muted-foreground`},{default:a(()=>[...n[9]||=[h(`白名单模型`,-1)]]),_:1}),i(u(O),{class:`text-muted-foreground`},{default:a(()=>[...n[10]||=[h(`状态`,-1)]]),_:1}),i(u(O),{class:`text-muted-foreground`},{default:a(()=>[...n[11]||=[h(`创建时间`,-1)]]),_:1}),i(u(O),{class:`text-right text-muted-foreground`},{default:a(()=>[...n[12]||=[h(`操作`,-1)]]),_:1})]),_:1})]),_:1}),i(u(E),null,{default:a(()=>[(t(!0),g(s,null,r(K.value,e=>(t(),o(u(A),{key:e.id,class:l({"opacity-60":!e.is_active})},{default:a(()=>[i(u(D),{class:`font-medium`},{default:a(()=>[h(_(e.name),1)]),_:2},1024),i(u(D),null,{default:a(()=>[c(`div`,L,[c(`span`,R,_(e.key),1),i(u(v),{variant:`ghost`,size:`sm`,class:`h-6 w-6 p-0`,onClick:t=>u(fe)(e.key)},{default:a(()=>[u(de)?(t(),g(`svg`,B,[...n[14]||=[c(`path`,{"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`,d:`M5 13l4 4L19 7`},null,-1)]])):(t(),g(`svg`,z,[...n[13]||=[c(`path`,{"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`,d:`M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z`},null,-1)]]))]),_:1},8,[`onClick`])])]),_:2},1024),i(u(D),null,{default:a(()=>[e.allowed_models&&e.allowed_models.length>0?(t(),g(`div`,V,[(t(!0),g(s,null,r(e.allowed_models,e=>(t(),o(u(y),{key:e,variant:`outline`,class:`text-xs`},{default:a(()=>[h(_(e),1)]),_:2},1024))),128))])):(t(),o(u(y),{key:1,variant:`secondary`},{default:a(()=>[...n[15]||=[h(`全部模型`,-1)]]),_:1}))]),_:2},1024),i(u(D),null,{default:a(()=>[i(u(y),{variant:e.is_active?`default`:`secondary`},{default:a(()=>[h(_(e.is_active?`启用`:`禁用`),1)]),_:2},1032,[`variant`])]),_:2},1024),i(u(D),{class:`text-muted-foreground text-sm`},{default:a(()=>[h(_(pe(e.created_at)),1)]),_:2},1024),i(u(D),{class:`text-right`},{default:a(()=>[i(u(v),{variant:`ghost`,size:`sm`,onClick:t=>ge(e),class:`text-muted-foreground hover:text-primary mr-2`},{default:a(()=>[...n[16]||=[h(`编辑`,-1)]]),_:1},8,[`onClick`]),i(u(v),{variant:`ghost`,size:`sm`,onClick:t=>ye(e),class:`text-muted-foreground hover:text-destructive`},{default:a(()=>[...n[17]||=[h(`删除`,-1)]]),_:1},8,[`onClick`])]),_:2},1024)]),_:2},1032,[`class`]))),128)),K.value.length===0?(t(),o(u(A),{key:0},{default:a(()=>[i(u(D),{colspan:`6`,class:`text-center text-muted-foreground py-8`},{default:a(()=>[...n[18]||=[h(`暂无密钥`,-1)]]),_:1})]),_:1})):m(``,!0)]),_:1})]),_:1})]),i(u(ee),{open:J.value,"onUpdate:open":n[3]||=e=>J.value=e},{default:a(()=>[i(u(S),{class:`sm:max-w-lg`},{default:a(()=>[i(u(C),null,{default:a(()=>[i(u(te),null,{default:a(()=>[h(_(Y.value?`编辑密钥`:`创建密钥`),1)]),_:1})]),_:1}),c(`form`,{onSubmit:p(ve,[`prevent`]),class:`space-y-4`},[c(`div`,null,[i(u(w),{class:`block text-sm font-medium text-foreground mb-1`},{default:a(()=>[...n[19]||=[h(`名称`,-1)]]),_:1}),i(u(M),{modelValue:Z.value.name,"onUpdate:modelValue":n[0]||=e=>Z.value.name=e,type:`text`,required:``,placeholder:`例如:生产环境`},null,8,[`modelValue`])]),c(`div`,null,[i(u(w),{class:`block text-sm font-medium text-foreground mb-1`},{default:a(()=>[...n[20]||=[h(`白名单模型`,-1)]]),_:1}),n[22]||=c(`div`,{class:`text-xs text-muted-foreground mb-2`},`不选择 = 允许所有模型`,-1),c(`div`,H,[(t(!0),g(s,null,r(q.value,e=>(t(),o(u(w),{key:e,class:`flex items-center gap-2 cursor-pointer text-sm font-normal`},{default:a(()=>[i(u(b),{"model-value":Z.value.allowed_models.includes(e),"onUpdate:modelValue":t=>{if(t&&t!==`indeterminate`&&!Z.value.allowed_models.includes(e))Z.value.allowed_models.push(e);else if(!t){let t=Z.value.allowed_models.indexOf(e);t>=0&&Z.value.allowed_models.splice(t,1)}}},null,8,[`model-value`,`onUpdate:modelValue`]),c(`span`,U,_(e),1)]),_:2},1024))),128)),q.value.length===0?(t(),g(`div`,le,` 暂无可用模型,请先配置模型映射 `)):m(``,!0)]),Z.value.allowed_models.length>0?(t(),g(`div`,W,[(t(!0),g(s,null,r(Z.value.allowed_models,e=>(t(),o(u(y),{key:e,variant:`outline`,class:`text-xs`},{default:a(()=>[h(_(e)+` `,1),i(u(v),{type:`button`,variant:`ghost`,size:`sm`,class:`ml-1 h-4 w-4 p-0 text-muted-foreground hover:text-destructive`,onClick:t=>me(e)},{default:a(()=>[...n[21]||=[h(`×`,-1)]]),_:1},8,[`onClick`])]),_:2},1024))),128))])):m(``,!0)]),Y.value?(t(),g(`div`,ue,[i(u(b),{modelValue:Z.value.is_active,"onUpdate:modelValue":n[1]||=e=>Z.value.is_active=e,id:`key-active`},null,8,[`modelValue`]),i(u(w),{for:`key-active`,class:`text-sm text-foreground`},{default:a(()=>[...n[23]||=[h(`启用`,-1)]]),_:1})])):m(``,!0),i(u(x),null,{default:a(()=>[i(u(v),{type:`button`,variant:`outline`,onClick:n[2]||=e=>J.value=!1},{default:a(()=>[...n[24]||=[h(`取消`,-1)]]),_:1}),i(u(v),{type:`submit`},{default:a(()=>[...n[25]||=[h(`保存`,-1)]]),_:1})]),_:1})],32)]),_:1})]),_:1},8,[`open`]),i(u(re),{open:!!X.value,"onUpdate:open":n[4]||=e=>{e||(X.value=null)}},{default:a(()=>[i(u(ne),null,{default:a(()=>[i(u(ae),null,{default:a(()=>[i(u(ce),null,{default:a(()=>[...n[26]||=[h(`确认删除`,-1)]]),_:1}),i(u(ie),null,{default:a(()=>[h(`确定要删除密钥「`+_(X.value?.name)+`」吗?使用此密钥的所有请求将被拒绝,此操作不可撤销。`,1)]),_:1})]),_:1}),i(u(se),null,{default:a(()=>[i(u(oe),null,{default:a(()=>[...n[27]||=[h(`取消`,-1)]]),_:1}),i(u(v),{variant:`destructive`,onClick:be},{default:a(()=>[...n[28]||=[h(`删除`,-1)]]),_:1})]),_:1})]),_:1})]),_:1},8,[`open`])]))}});export{G as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{C as e,I as t,N as n,P as r,S as i,Y as a,_ as o,dt as s,h as c,j as l,mt as u,ot as d,z as f}from"./client-BBW9-06a.js";import{i as p}from"./button-B3kgf-D2.js";import{C as m,_ as h,d as g,r as _,w as v}from"./badge-HGT44FNA.js";import{c as y}from"./useForwardExpose-CIZH3-CG.js";var b=`rovingFocusGroup.onEntryFocus`,x={bubbles:!1,cancelable:!0},S={ArrowLeft:`prev`,ArrowUp:`prev`,ArrowRight:`next`,ArrowDown:`next`,PageUp:`first`,Home:`first`,PageDown:`last`,End:`last`};function C(e,t){return t===`rtl`?e===`ArrowLeft`?`ArrowRight`:e===`ArrowRight`?`ArrowLeft`:e:e}function w(e,t,n){let r=C(e.key,n);if(!(t===`vertical`&&[`ArrowLeft`,`ArrowRight`].includes(r))&&!(t===`horizontal`&&[`ArrowUp`,`ArrowDown`].includes(r)))return S[r]}function T(e,t=!1){let n=m();for(let r of e)if(r===n||(r.focus({preventScroll:t}),m()!==n))return}function E(e,t){return e.map((n,r)=>e[(t+r)%e.length])}var[D,O]=v(`RovingFocusGroup`),k=e({__name:`RovingFocusGroup`,props:{orientation:{type:String,required:!1,default:void 0},dir:{type:String,required:!1},loop:{type:Boolean,required:!1,default:!1},currentTabStopId:{type:[String,null],required:!1},defaultCurrentTabStopId:{type:String,required:!1},preventScrollOnEntryFocus:{type:Boolean,required:!1,default:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`entryFocus`,`update:currentTabStopId`],setup(e,{expose:n,emit:r}){let c=e,l=r,{loop:m,orientation:g,dir:v}=s(c),S=h(v),C=y(c,`currentTabStopId`,l,{defaultValue:c.defaultCurrentTabStopId,passive:c.currentTabStopId===void 0}),w=d(!1),E=d(!1),D=d(0),{getItems:k,CollectionSlot:A}=_({isProvider:!0});function j(e){let t=!E.value;if(e.currentTarget&&e.target===e.currentTarget&&t&&!w.value){let t=new CustomEvent(b,x);if(e.currentTarget.dispatchEvent(t),l(`entryFocus`,t),!t.defaultPrevented){let e=k().map(e=>e.ref).filter(e=>e.dataset.disabled!==``);T([e.find(e=>e.getAttribute(`data-active`)===``),e.find(e=>e.getAttribute(`data-highlighted`)===``),e.find(e=>e.id===C.value),...e].filter(Boolean),c.preventScrollOnEntryFocus)}}E.value=!1}function M(){setTimeout(()=>{E.value=!1},1)}return n({getItems:k}),O({loop:m,dir:S,orientation:g,currentTabStopId:C,onItemFocus:e=>{C.value=e},onItemShiftTab:()=>{w.value=!0},onFocusableItemAdd:()=>{D.value++},onFocusableItemRemove:()=>{D.value--}}),(e,n)=>(t(),o(u(A),null,{default:a(()=>[i(u(p),{tabindex:w.value||D.value===0?-1:0,"data-orientation":u(g),as:e.as,"as-child":e.asChild,dir:u(S),style:{outline:`none`},onMousedown:n[0]||=e=>E.value=!0,onMouseup:M,onFocus:j,onBlur:n[1]||=e=>w.value=!1},{default:a(()=>[f(e.$slots,`default`)]),_:3},8,[`tabindex`,`data-orientation`,`as`,`as-child`,`dir`])]),_:3}))}}),A=e({__name:`RovingFocusItem`,props:{tabStopId:{type:String,required:!1},focusable:{type:Boolean,required:!1,default:!0},active:{type:Boolean,required:!1},allowShiftKey:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`span`}},setup(e){let s=e,d=D(),m=g(),h=c(()=>s.tabStopId||m),v=c(()=>d.currentTabStopId.value===h.value),{getItems:y,CollectionItem:b}=_();n(()=>{s.focusable&&d.onFocusableItemAdd()}),r(()=>{s.focusable&&d.onFocusableItemRemove()});function x(e){if(e.key===`Tab`&&e.shiftKey){d.onItemShiftTab();return}if(e.target!==e.currentTarget)return;let t=w(e,d.orientation.value,d.dir.value);if(t!==void 0){if(e.metaKey||e.ctrlKey||e.altKey||!s.allowShiftKey&&e.shiftKey)return;e.preventDefault();let n=[...y().map(e=>e.ref).filter(e=>e.dataset.disabled!==``)];if(t===`last`)n.reverse();else if(t===`prev`||t===`next`){t===`prev`&&n.reverse();let r=n.indexOf(e.currentTarget);n=d.loop.value?E(n,r+1):n.slice(r+1)}l(()=>T(n))}}return(e,n)=>(t(),o(u(b),null,{default:a(()=>[i(u(p),{tabindex:v.value?0:-1,"data-orientation":u(d).orientation.value,"data-active":e.active?``:void 0,"data-disabled":e.focusable?void 0:``,as:e.as,"as-child":e.asChild,onMousedown:n[0]||=t=>{e.focusable?u(d).onItemFocus(h.value):t.preventDefault()},onFocus:n[1]||=e=>u(d).onItemFocus(h.value),onKeydown:x},{default:a(()=>[f(e.$slots,`default`)]),_:3},8,[`tabindex`,`data-orientation`,`data-active`,`data-disabled`,`as`,`as-child`])]),_:3}))}});export{k as n,A as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{A as e,C as t,I as n,K as r,M as i,N as a,P as o,R as s,S as c,T as l,V as u,Y as d,_ as f,_t as p,dt as m,f as h,g,gt as _,h as v,j as y,mt as b,ot as x,p as S,q as C,u as w,v as T,vt as E,x as D,y as O,yt as k,z as A}from"./client-BBW9-06a.js";import{t as j}from"./createLucideIcon-CCI4wMy0.js";import{n as M,t as N}from"./ohash.D__AXeF1-Bj3Sy1wQ.js";import{i as P,r as F}from"./button-B3kgf-D2.js";import{C as I,S as ee,_ as te,a as ne,b as re,c as ie,d as ae,f as oe,h as se,i as ce,m as L,n as le,p as R,r as z,s as ue,u as de,v as fe,w as B,x as V}from"./badge-HGT44FNA.js";import{c as H,g as pe,h as U,i as me,p as he,s as ge,t as W}from"./useForwardExpose-CIZH3-CG.js";import{i as _e,r as ve,t as ye}from"./PopperContent-DGr-wo47.js";var G=j(`chevron-down`,[[`path`,{d:`m6 9 6 6 6-6`,key:`qrunsl`}]]),be=j(`chevron-up`,[[`path`,{d:`m18 15-6-6-6 6`,key:`153udz`}]]);function K(e,t=-1/0,n=1/0){return Math.min(n,Math.max(t,e))}var q=0;function xe(){C(e=>{if(!he)return;let t=document.querySelectorAll(`[data-reka-focus-guard]`);document.body.insertAdjacentElement(`afterbegin`,t[0]??J()),document.body.insertAdjacentElement(`beforeend`,t[1]??J()),q++,e(()=>{q===1&&document.querySelectorAll(`[data-reka-focus-guard]`).forEach(e=>e.remove()),q--})})}function J(){let e=document.createElement(`span`);return e.setAttribute(`data-reka-focus-guard`,``),e.tabIndex=0,e.style.outline=`none`,e.style.opacity=`0`,e.style.position=`fixed`,e.style.pointerEvents=`none`,e}function Se(e){let t=pe(``,1e3);return{search:t,handleTypeaheadSearch:(n,r)=>{if(t.value+=n,e)e(n);else{let e=I(),n=r.map(e=>({...e,textValue:e.value?.textValue??e.ref.textContent?.trim()??``})),i=n.find(t=>t.ref===e),a=we(n.map(e=>e.textValue),t.value,i?.textValue),o=n.find(e=>e.textValue===a);return o&&o.ref.focus(),o?.ref}},resetTypeahead:()=>{t.value=``}}}function Ce(e,t){return e.map((n,r)=>e[(t+r)%e.length])}function we(e,t,n){let r=t.length>1&&Array.from(t).every(e=>e===t[0])?t[0]:t,i=n?e.indexOf(n):-1,a=Ce(e,Math.max(i,0));r.length===1&&(a=a.filter(e=>e!==n));let o=a.find(e=>e.toLowerCase().startsWith(r.toLowerCase()));return o===n?void 0:o}function Te(e){let t=re({nonce:x()});return v(()=>e?.value||t.nonce?.value)}var Ee=[` `,`Enter`,`ArrowUp`,`ArrowDown`],De=[` `,`Enter`];function Y(e,t,n){return e===void 0?!1:Array.isArray(e)?e.some(e=>X(e,t,n)):X(e,t,n)}function X(e,t,n){return e===void 0||t===void 0?!1:typeof e==`string`?e===t:typeof n==`function`?n(e,t):typeof n==`string`?e?.[n]===t?.[n]:N(e,t)}function Oe(e){return e==null||e===``||Array.isArray(e)&&e.length===0}var ke={key:0,value:``},[Z,Ae]=B(`SelectRoot`),je=t({inheritAttrs:!1,__name:`SelectRoot`,props:{open:{type:Boolean,required:!1,default:void 0},defaultOpen:{type:Boolean,required:!1},defaultValue:{type:null,required:!1},modelValue:{type:null,required:!1,default:void 0},by:{type:[String,Function],required:!1},dir:{type:String,required:!1},multiple:{type:Boolean,required:!1},autocomplete:{type:String,required:!1},disabled:{type:Boolean,required:!1},name:{type:String,required:!1},required:{type:Boolean,required:!1}},emits:[`update:modelValue`,`update:open`],setup(t,{emit:r}){let i=t,a=r,{required:o,disabled:c,multiple:l,dir:u}=m(i),p=H(i,`modelValue`,a,{defaultValue:i.defaultValue??(l.value?[]:void 0),passive:i.modelValue===void 0,deep:!0}),g=H(i,`open`,a,{defaultValue:i.defaultOpen,passive:i.open===void 0}),_=x(),y=x(),S=x({x:0,y:0}),C=v(()=>l.value&&Array.isArray(p.value)?p.value?.length===0:V(p.value));z({isProvider:!0});let w=te(u),E=se(_),D=x(new Set),k=v(()=>Array.from(D.value).map(e=>e.value).join(`;`));function j(e){if(l.value){let t=Array.isArray(p.value)?[...p.value]:[],n=t.findIndex(t=>X(t,e,i.by));n===-1?t.push(e):t.splice(n,1),p.value=[...t]}else p.value=e}function M(e){return Array.from(D.value).find(t=>Y(e,t.value,i.by))}return Ae({triggerElement:_,onTriggerChange:e=>{_.value=e},valueElement:y,onValueElementChange:e=>{y.value=e},contentId:``,modelValue:p,onValueChange:j,by:i.by,open:g,multiple:l,required:o,onOpenChange:e=>{g.value=e},dir:w,triggerPointerDownPosRef:S,disabled:c,isEmptyModelValue:C,optionsSet:D,onOptionAdd:e=>{let t=M(e.value);t&&D.value.delete(t),D.value.add(e)},onOptionRemove:e=>{let t=M(e.value);t&&D.value.delete(t)}}),(t,r)=>(n(),f(b(_e),null,{default:d(()=>[A(t.$slots,`default`,{modelValue:b(p),open:b(g)}),b(E)&&t.name?(n(),f(Me,{key:k.value,"aria-hidden":`true`,tabindex:`-1`,multiple:b(l),required:b(o),name:t.name,autocomplete:t.autocomplete,disabled:b(c),value:b(p)},{default:d(()=>[b(V)(b(p))?(n(),O(`option`,ke)):T(`v-if`,!0),(n(!0),O(h,null,s(Array.from(D.value),t=>(n(),O(`option`,e({key:t.value??``},{ref_for:!0},t),null,16))),128))]),_:1},8,[`multiple`,`required`,`name`,`autocomplete`,`disabled`,`value`])):T(`v-if`,!0)]),_:3}))}}),Me=t({__name:`BubbleSelect`,props:{autocomplete:{type:String,required:!1},autofocus:{type:Boolean,required:!1},disabled:{type:Boolean,required:!1},form:{type:String,required:!1},multiple:{type:Boolean,required:!1},name:{type:String,required:!1},required:{type:Boolean,required:!1},size:{type:Number,required:!1},value:{type:null,required:!1}},setup(t){let i=t,a=x(),o=Z();r(()=>i.value,(e,t)=>{let n=window.HTMLSelectElement.prototype,r=Object.getOwnPropertyDescriptor(n,`value`).set;if(e!==t&&r&&a.value){let t=new Event(`change`,{bubbles:!0});r.call(a.value,e),a.value.dispatchEvent(t)}});function s(e){o.onValueChange(e.target.value)}return(t,r)=>(n(),f(b(le),{"as-child":``},{default:d(()=>[g(`select`,e({ref_key:`selectElement`,ref:a},i,{onInput:s}),[A(t.$slots,`default`)],16)]),_:3}))}}),Ne=t({__name:`SelectPopperPosition`,props:{side:{type:null,required:!1},sideOffset:{type:Number,required:!1},sideFlip:{type:Boolean,required:!1},align:{type:null,required:!1,default:`start`},alignOffset:{type:Number,required:!1},alignFlip:{type:Boolean,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1,default:10},arrowPadding:{type:Number,required:!1},hideShiftedArrow:{type:Boolean,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1},disableUpdateOnLayoutShift:{type:Boolean,required:!1},prioritizePosition:{type:Boolean,required:!1},reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(t){let r=L(t);return(t,i)=>(n(),f(b(ye),e(b(r),{style:{boxSizing:`border-box`,"--reka-select-content-transform-origin":`var(--reka-popper-transform-origin)`,"--reka-select-content-available-width":`var(--reka-popper-available-width)`,"--reka-select-content-available-height":`var(--reka-popper-available-height)`,"--reka-select-trigger-width":`var(--reka-popper-anchor-width)`,"--reka-select-trigger-height":`var(--reka-popper-anchor-height)`}}),{default:d(()=>[A(t.$slots,`default`)]),_:3},16))}}),Pe={onViewportChange:()=>{},itemTextRefCallback:()=>{},itemRefCallback:()=>{}},[Q,Fe]=B(`SelectContent`),Ie=t({__name:`SelectContentImpl`,props:{position:{type:String,required:!1,default:`item-aligned`},bodyLock:{type:Boolean,required:!1,default:!0},side:{type:null,required:!1},sideOffset:{type:Number,required:!1},sideFlip:{type:Boolean,required:!1},align:{type:null,required:!1,default:`start`},alignOffset:{type:Number,required:!1},alignFlip:{type:Boolean,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},hideShiftedArrow:{type:Boolean,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1},disableUpdateOnLayoutShift:{type:Boolean,required:!1},prioritizePosition:{type:Boolean,required:!1},reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1},disableOutsidePointerEvents:{type:Boolean,required:!1,default:!0}},emits:[`closeAutoFocus`,`escapeKeyDown`,`pointerDownOutside`],setup(t,{emit:i}){let a=t,o=i,s=Z();xe(),fe(a.bodyLock);let{CollectionSlot:l,getItems:p}=z(),m=x();oe(m);let{search:h,handleTypeaheadSearch:g}=Se(),_=x(),y=x(),S=x(),T=x(!1),E=x(!1),D=x(!1);function O(){y.value&&m.value&&ne([y.value,m.value])}r(T,()=>{O()});let{onOpenChange:k,triggerPointerDownPosRef:j}=s;C(e=>{if(!m.value)return;let t={x:0,y:0},n=e=>{t={x:Math.abs(Math.round(e.pageX)-(j.value?.x??0)),y:Math.abs(Math.round(e.pageY)-(j.value?.y??0))}},r=e=>{e.pointerType!==`touch`&&(t.x<=10&&t.y<=10?e.preventDefault():m.value?.contains(e.target)||k(!1),document.removeEventListener(`pointermove`,n),j.value=null)};j.value!==null&&(document.addEventListener(`pointermove`,n),document.addEventListener(`pointerup`,r,{capture:!0,once:!0})),e(()=>{document.removeEventListener(`pointermove`,n),document.removeEventListener(`pointerup`,r,{capture:!0})})});function M(e){let t=e.ctrlKey||e.altKey||e.metaKey;if(e.key===`Tab`&&e.preventDefault(),!t&&e.key.length===1&&g(e.key,p()),[`ArrowUp`,`ArrowDown`,`Home`,`End`].includes(e.key)){let t=[...p().map(e=>e.ref)];if([`ArrowUp`,`End`].includes(e.key)&&(t=t.slice().reverse()),[`ArrowUp`,`ArrowDown`].includes(e.key)){let n=e.target,r=t.indexOf(n);t=t.slice(r+1)}setTimeout(()=>ne(t)),e.preventDefault()}}let N=L(v(()=>a.position===`popper`?a:{}).value);return Fe({content:m,viewport:_,onViewportChange:e=>{_.value=e},itemRefCallback:(e,t,n)=>{let r=!E.value&&!n,i=Y(s.modelValue.value,t,s.by);if(s.multiple.value){if(D.value)return;(i||r)&&(y.value=e,i&&(D.value=!0))}else (i||r)&&(y.value=e);r&&(E.value=!0)},selectedItem:y,selectedItemText:S,onItemLeave:()=>{m.value?.focus()},itemTextRefCallback:(e,t,n)=>{let r=!E.value&&!n;(Y(s.modelValue.value,t,s.by)||r)&&(S.value=e)},focusSelectedItem:O,position:a.position,isPositioned:T,searchRef:h}),(t,r)=>(n(),f(b(l),null,{default:d(()=>[c(b(ue),{"as-child":``,onMountAutoFocus:r[6]||=w(()=>{},[`prevent`]),onUnmountAutoFocus:r[7]||=e=>{o(`closeAutoFocus`,e),!e.defaultPrevented&&(b(s).triggerElement.value?.focus({preventScroll:!0}),e.preventDefault())}},{default:d(()=>[c(b(ie),{"as-child":``,"disable-outside-pointer-events":t.disableOutsidePointerEvents,onFocusOutside:r[2]||=w(()=>{},[`prevent`]),onDismiss:r[3]||=e=>b(s).onOpenChange(!1),onEscapeKeyDown:r[4]||=e=>o(`escapeKeyDown`,e),onPointerDownOutside:r[5]||=e=>o(`pointerDownOutside`,e)},{default:d(()=>[(n(),f(u(t.position===`popper`?Ne:Re),e({...t.$attrs,...b(N)},{id:b(s).contentId,ref:e=>{if(!e)return;let t=b(me)(e);t?.hasAttribute(`data-reka-popper-content-wrapper`)?m.value=t.firstElementChild:m.value=t},role:`listbox`,"data-state":b(s).open.value?`open`:`closed`,dir:b(s).dir.value,style:{display:`flex`,flexDirection:`column`,outline:`none`},onContextmenu:r[0]||=w(()=>{},[`prevent`]),onPlaced:r[1]||=e=>T.value=!0,onKeydown:M}),{default:d(()=>[A(t.$slots,`default`)]),_:3},16,[`id`,`data-state`,`dir`,`onKeydown`]))]),_:3},8,[`disable-outside-pointer-events`])]),_:3})]),_:3}))}}),[$,Le]=B(`SelectItemAlignedPosition`),Re=t({inheritAttrs:!1,__name:`SelectItemAlignedPosition`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`placed`],setup(t,{emit:r}){let i=t,o=r,{getItems:s}=z(),l=Z(),u=Q(),f=x(!1),p=x(!0),m=x(),{forwardRef:h,currentElement:g}=W(),{viewport:_,selectedItem:v,selectedItemText:S,focusSelectedItem:C}=u;function w(){if(l.triggerElement.value&&l.valueElement.value&&m.value&&g.value&&_?.value&&v?.value&&S?.value){let e=l.triggerElement.value.getBoundingClientRect(),t=g.value.getBoundingClientRect(),n=l.valueElement.value.getBoundingClientRect(),r=S.value.getBoundingClientRect();if(l.dir.value!==`rtl`){let i=r.left-t.left,a=n.left-i,o=e.left-a,s=e.width+o,c=Math.max(s,t.width),l=window.innerWidth-10,u=K(a,10,Math.max(10,l-c));m.value.style.minWidth=`${s}px`,m.value.style.left=`${u}px`}else{let i=t.right-r.right,a=window.innerWidth-n.right-i,o=window.innerWidth-e.right-a,s=e.width+o,c=Math.max(s,t.width),l=window.innerWidth-10,u=K(a,10,Math.max(10,l-c));m.value.style.minWidth=`${s}px`,m.value.style.right=`${u}px`}let i=s().map(e=>e.ref),a=window.innerHeight-20,c=_.value.scrollHeight,u=window.getComputedStyle(g.value),d=Number.parseInt(u.borderTopWidth,10),p=Number.parseInt(u.paddingTop,10),h=Number.parseInt(u.borderBottomWidth,10),y=Number.parseInt(u.paddingBottom,10),b=d+p+c+y+h,x=Math.min(v.value.offsetHeight*5,b),C=window.getComputedStyle(_.value),w=Number.parseInt(C.paddingTop,10),T=Number.parseInt(C.paddingBottom,10),E=e.top+e.height/2-10,D=a-E,O=v.value.offsetHeight/2,k=v.value.offsetTop+O,A=d+p+k,j=b-A;if(A<=E){let e=v.value===i.at(-1);m.value.style.bottom=`0px`;let t=g.value.clientHeight-_.value.offsetTop-_.value.offsetHeight,n=A+Math.max(D,O+(e?T:0)+t+h);m.value.style.height=`${n}px`}else{let e=v.value===i[0];m.value.style.top=`0px`;let t=Math.max(E,d+_.value.offsetTop+(e?w:0)+O)+j;m.value.style.height=`${t}px`,_.value.scrollTop=A-E+_.value.offsetTop}m.value.style.margin=`10px 0`,m.value.style.minHeight=`${x}px`,m.value.style.maxHeight=`${a}px`,o(`placed`),requestAnimationFrame(()=>f.value=!0)}}let T=x(``);a(async()=>{await y(),w(),g.value&&(T.value=window.getComputedStyle(g.value).zIndex)});function D(e){e&&p.value===!0&&(w(),C?.(),p.value=!1)}return ge(l.triggerElement,()=>{w()}),Le({contentWrapper:m,shouldExpandOnScrollRef:f,onScrollButtonChange:D}),(t,r)=>(n(),O(`div`,{ref_key:`contentWrapperElement`,ref:m,style:E({display:`flex`,flexDirection:`column`,position:`fixed`,zIndex:T.value})},[c(b(P),e({ref:b(h),style:{boxSizing:`border-box`,maxHeight:`100%`}},{...t.$attrs,...i}),{default:d(()=>[A(t.$slots,`default`)]),_:3},16)],4))}}),ze=t({inheritAttrs:!1,__name:`SelectProvider`,props:{context:{type:Object,required:!0}},setup(e){return Ae(e.context),Fe(Pe),(e,t)=>A(e.$slots,`default`)}}),Be={key:1},Ve=t({inheritAttrs:!1,__name:`SelectContent`,props:{forceMount:{type:Boolean,required:!1},position:{type:String,required:!1},bodyLock:{type:Boolean,required:!1},side:{type:null,required:!1},sideOffset:{type:Number,required:!1},sideFlip:{type:Boolean,required:!1},align:{type:null,required:!1},alignOffset:{type:Number,required:!1},alignFlip:{type:Boolean,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},hideShiftedArrow:{type:Boolean,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1},disableUpdateOnLayoutShift:{type:Boolean,required:!1},prioritizePosition:{type:Boolean,required:!1},reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1},disableOutsidePointerEvents:{type:Boolean,required:!1}},emits:[`closeAutoFocus`,`escapeKeyDown`,`pointerDownOutside`],setup(e,{emit:t}){let i=e,o=R(i,t),s=Z(),u=x();a(()=>{u.value=new DocumentFragment});let m=x(),h=v(()=>i.forceMount||s.open.value),g=x(h.value);return r(h,()=>{setTimeout(()=>g.value=h.value)}),(e,t)=>h.value||g.value||m.value?.present?(n(),f(b(de),{key:0,ref_key:`presenceRef`,ref:m,present:h.value},{default:d(()=>[c(Ie,p(l({...b(o),...e.$attrs})),{default:d(()=>[A(e.$slots,`default`)]),_:3},16)]),_:3},8,[`present`])):u.value?(n(),O(`div`,Be,[(n(),f(S,{to:u.value},[c(ze,{context:b(s)},{default:d(()=>[A(e.$slots,`default`)]),_:3},8,[`context`])],8,[`to`]))])):T(`v-if`,!0)}}),He=t({__name:`SelectIcon`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`span`}},setup(e){return(e,t)=>(n(),f(b(P),{"aria-hidden":`true`,as:e.as,"as-child":e.asChild},{default:d(()=>[A(e.$slots,`default`,{},()=>[t[0]||=D(`▼`)])]),_:3},8,[`as`,`as-child`]))}}),[Ue,We]=B(`SelectItem`),Ge=t({__name:`SelectItem`,props:{value:{type:null,required:!0},disabled:{type:Boolean,required:!1},textValue:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`select`],setup(e,{emit:t}){let r=e,i=t,{disabled:o}=m(r),s=Z(),l=Q(),{forwardRef:u,currentElement:p}=W(),{CollectionItem:h}=z(),g=v(()=>Y(s.modelValue?.value,r.value,s.by)),_=x(!1),S=x(r.textValue??``),C=ae(void 0,`reka-select-item-text`);async function T(e){e.defaultPrevented||ee(`select.select`,E,{originalEvent:e,value:r.value})}async function E(e){await y(),i(`select`,e),!e.defaultPrevented&&(o.value||(s.onValueChange(r.value),s.multiple.value||s.onOpenChange(!1)))}async function D(e){await y(),!e.defaultPrevented&&(o.value?l.onItemLeave?.():e.currentTarget?.focus({preventScroll:!0}))}async function O(e){await y(),!e.defaultPrevented&&e.currentTarget===I()&&l.onItemLeave?.()}async function k(e){await y(),!e.defaultPrevented&&(l.searchRef?.value!==``&&e.key===` `||(De.includes(e.key)&&T(e),e.key===` `&&e.preventDefault()))}if(r.value===``)throw Error(`A <SelectItem /> must have a value prop that is not an empty string. This is because the Select value can be set to an empty string to clear the selection and show the placeholder.`);return a(()=>{p.value&&l.itemRefCallback(p.value,r.value,r.disabled)}),We({value:r.value,disabled:o,textId:C,isSelected:g,onItemTextChange:e=>{S.value=((S.value||e?.textContent)??``).trim()}}),(e,t)=>(n(),f(b(h),{value:{textValue:S.value}},{default:d(()=>[c(b(P),{ref:b(u),role:`option`,"aria-labelledby":b(C),"data-highlighted":_.value?``:void 0,"aria-selected":g.value,"data-state":g.value?`checked`:`unchecked`,"aria-disabled":b(o)||void 0,"data-disabled":b(o)?``:void 0,tabindex:b(o)?void 0:-1,as:e.as,"as-child":e.asChild,onFocus:t[0]||=e=>_.value=!0,onBlur:t[1]||=e=>_.value=!1,onPointerup:T,onPointerdown:t[2]||=e=>{e.currentTarget.focus({preventScroll:!0})},onTouchend:t[3]||=w(()=>{},[`prevent`,`stop`]),onPointermove:D,onPointerleave:O,onKeydown:k},{default:d(()=>[A(e.$slots,`default`)]),_:3},8,[`aria-labelledby`,`data-highlighted`,`aria-selected`,`data-state`,`aria-disabled`,`data-disabled`,`tabindex`,`as`,`as-child`])]),_:3},8,[`value`]))}}),Ke=t({__name:`SelectItemIndicator`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`span`}},setup(t){let r=t,i=Ue();return(t,a)=>b(i).isSelected.value?(n(),f(b(P),e({key:0,"aria-hidden":`true`},r),{default:d(()=>[A(t.$slots,`default`)]),_:3},16)):T(`v-if`,!0)}}),qe=t({inheritAttrs:!1,__name:`SelectItemText`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`span`}},setup(t){let r=t,i=Z(),s=Q(),c=Ue(),{forwardRef:l,currentElement:u}=W(),p=v(()=>({value:c.value,disabled:c.disabled.value,textContent:u.value?.textContent??c.value?.toString()??``}));return a(()=>{u.value&&(c.onItemTextChange(u.value),s.itemTextRefCallback(u.value,c.value,c.disabled.value),i.onOptionAdd(p.value))}),o(()=>{i.onOptionRemove(p.value)}),(t,i)=>(n(),f(b(P),e({id:b(c).textId,ref:b(l)},{...r,...t.$attrs}),{default:d(()=>[A(t.$slots,`default`)]),_:3},16,[`id`]))}}),Je=t({__name:`SelectPortal`,props:{to:{type:null,required:!1},disabled:{type:Boolean,required:!1},defer:{type:Boolean,required:!1},forceMount:{type:Boolean,required:!1}},setup(e){let t=e;return(e,r)=>(n(),f(b(ce),p(l(t)),{default:d(()=>[A(e.$slots,`default`)]),_:3},16))}}),Ye=t({__name:`SelectScrollButtonImpl`,emits:[`autoScroll`],setup(t,{emit:r}){let a=r,{getItems:o}=z(),s=Q(),c=x(null);function l(){c.value!==null&&(window.clearInterval(c.value),c.value=null)}C(()=>{o().map(e=>e.ref).find(e=>e===I())?.scrollIntoView({block:`nearest`})});function u(){c.value===null&&(c.value=window.setInterval(()=>{a(`autoScroll`)},50))}function p(){s.onItemLeave?.(),c.value===null&&(c.value=window.setInterval(()=>{a(`autoScroll`)},50))}return i(()=>l()),(t,r)=>(n(),f(b(P),e({"aria-hidden":`true`,style:{flexShrink:0}},t.$parent?.$props,{onPointerdown:u,onPointermove:p,onPointerleave:r[0]||=()=>{l()}}),{default:d(()=>[A(t.$slots,`default`)]),_:3},16))}}),Xe=t({__name:`SelectScrollDownButton`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){let t=Q(),i=t.position===`item-aligned`?$():void 0,{forwardRef:a,currentElement:o}=W(),s=x(!1);return C(e=>{if(t.viewport?.value&&t.isPositioned?.value){let n=t.viewport.value;function r(){let e=n.scrollHeight-n.clientHeight;s.value=Math.ceil(n.scrollTop)<e}r(),n.addEventListener(`scroll`,r),e(()=>n.removeEventListener(`scroll`,r))}}),r(o,()=>{o.value&&i?.onScrollButtonChange(o.value)}),(e,r)=>s.value?(n(),f(Ye,{key:0,ref:b(a),onAutoScroll:r[0]||=()=>{let{viewport:e,selectedItem:n}=b(t);e?.value&&n?.value&&(e.value.scrollTop=e.value.scrollTop+n.value.offsetHeight)}},{default:d(()=>[A(e.$slots,`default`)]),_:3},512)):T(`v-if`,!0)}}),Ze=t({__name:`SelectScrollUpButton`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){let t=Q(),i=t.position===`item-aligned`?$():void 0,{forwardRef:a,currentElement:o}=W(),s=x(!1);return C(e=>{if(t.viewport?.value&&t.isPositioned?.value){let n=t.viewport.value;function r(){s.value=n.scrollTop>0}r(),n.addEventListener(`scroll`,r),e(()=>n.removeEventListener(`scroll`,r))}}),r(o,()=>{o.value&&i?.onScrollButtonChange(o.value)}),(e,r)=>s.value?(n(),f(Ye,{key:0,ref:b(a),onAutoScroll:r[0]||=()=>{let{viewport:e,selectedItem:n}=b(t);e?.value&&n?.value&&(e.value.scrollTop=e.value.scrollTop-n.value.offsetHeight)}},{default:d(()=>[A(e.$slots,`default`)]),_:3},512)):T(`v-if`,!0)}}),Qe=t({__name:`SelectTrigger`,props:{disabled:{type:Boolean,required:!1},reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`button`}},setup(e){let t=e,r=Z(),{forwardRef:i,currentElement:o}=W(),s=v(()=>r.disabled?.value||t.disabled);r.contentId||=ae(void 0,`reka-select-content`),a(()=>{r.onTriggerChange(o.value)});let{getItems:l}=z(),{search:u,handleTypeaheadSearch:p,resetTypeahead:m}=Se();function h(){s.value||(r.onOpenChange(!0),m())}function g(e){h(),r.triggerPointerDownPosRef.value={x:Math.round(e.pageX),y:Math.round(e.pageY)}}return(e,t)=>(n(),f(b(ve),{"as-child":``,reference:e.reference},{default:d(()=>[c(b(P),{ref:b(i),role:`combobox`,type:e.as===`button`?`button`:void 0,"aria-controls":b(r).contentId,"aria-expanded":b(r).open.value||!1,"aria-required":b(r).required?.value,"aria-autocomplete":`none`,disabled:s.value,dir:b(r)?.dir.value,"data-state":b(r)?.open.value?`open`:`closed`,"data-disabled":s.value?``:void 0,"data-placeholder":b(Oe)(b(r).modelValue?.value)?``:void 0,"as-child":e.asChild,as:e.as,onClick:t[0]||=e=>{(e?.currentTarget)?.focus()},onPointerdown:t[1]||=e=>{if(e.pointerType===`touch`)return e.preventDefault();let t=e.target;t.hasPointerCapture(e.pointerId)&&t.releasePointerCapture(e.pointerId),e.button===0&&e.ctrlKey===!1&&(g(e),e.preventDefault())},onPointerup:t[2]||=w(e=>{e.pointerType===`touch`&&g(e)},[`prevent`]),onKeydown:t[3]||=e=>{let t=b(u)!==``;!(e.ctrlKey||e.altKey||e.metaKey)&&e.key.length===1&&t&&e.key===` `||(b(p)(e.key,b(l)()),b(Ee).includes(e.key)&&(h(),e.preventDefault()))}},{default:d(()=>[A(e.$slots,`default`)]),_:3},8,[`type`,`aria-controls`,`aria-expanded`,`aria-required`,`disabled`,`dir`,`data-state`,`data-disabled`,`data-placeholder`,`as-child`,`as`])]),_:3},8,[`reference`]))}}),$e=t({__name:`SelectValue`,props:{placeholder:{type:String,required:!1,default:``},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`span`}},setup(e){let t=e,{forwardRef:r,currentElement:i}=W(),o=Z();a(()=>{o.valueElement=i});let s=v(()=>{let e=[],t=Array.from(o.optionsSet.value),n=e=>t.find(t=>Y(e,t.value,o.by));return e=Array.isArray(o.modelValue.value)?o.modelValue.value.map(e=>n(e)?.textContent??``):[n(o.modelValue.value)?.textContent??``],e.filter(Boolean)}),c=v(()=>s.value.length?s.value.join(`, `):t.placeholder);return(e,i)=>(n(),f(b(P),{ref:b(r),as:e.as,"as-child":e.asChild,style:{pointerEvents:`none`},"data-placeholder":s.value.length?void 0:t.placeholder},{default:d(()=>[A(e.$slots,`default`,{selectedLabel:s.value,modelValue:b(o).modelValue.value},()=>[D(k(c.value),1)])]),_:3},8,[`as`,`as-child`,`data-placeholder`]))}}),et=t({__name:`SelectViewport`,props:{nonce:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(t){let r=t,{nonce:i}=m(r),o=Te(i),s=Q(),l=s.position===`item-aligned`?$():void 0,{forwardRef:u,currentElement:f}=W();a(()=>{s?.onViewportChange(f.value)});let p=x(0);function g(e){let t=e.currentTarget,{shouldExpandOnScrollRef:n,contentWrapper:r}=l??{};if(n?.value&&r?.value){let e=Math.abs(p.value-t.scrollTop);if(e>0){let n=window.innerHeight-20,i=Number.parseFloat(r.value.style.minHeight),a=Number.parseFloat(r.value.style.height),o=Math.max(i,a);if(o<n){let i=o+e,a=Math.min(n,i),s=i-a;r.value.style.height=`${a}px`,r.value.style.bottom===`0px`&&(t.scrollTop=s>0?s:0,r.value.style.justifyContent=`flex-end`)}}}p.value=t.scrollTop}return(t,i)=>(n(),O(h,null,[c(b(P),e({ref:b(u),"data-reka-select-viewport":``,role:`presentation`},{...t.$attrs,...r},{style:{position:`relative`,flex:1,overflow:`hidden auto`},onScroll:g}),{default:d(()=>[A(t.$slots,`default`)]),_:3},16),c(b(P),{as:`style`,nonce:b(o)},{default:d(()=>i[0]||=[D(` /* Hide scrollbars cross-browser and enable momentum scroll for touch devices */ [data-reka-select-viewport] { scrollbar-width:none; -ms-overflow-style: none; -webkit-overflow-scrolling: touch; } [data-reka-select-viewport]::-webkit-scrollbar { display: none; } `)]),_:1,__:[0]},8,[`nonce`])],64))}}),tt=t({__name:`Select`,props:{open:{type:Boolean},defaultOpen:{type:Boolean},defaultValue:{},modelValue:{},by:{type:[String,Function]},dir:{},multiple:{type:Boolean},autocomplete:{},disabled:{type:Boolean},name:{},required:{type:Boolean}},emits:[`update:modelValue`,`update:open`],setup(t,{emit:r}){let i=R(t,r);return(t,r)=>(n(),f(b(je),e({"data-slot":`select`},b(i)),{default:d(e=>[A(t.$slots,`default`,p(l(e)))]),_:3},16))}}),nt=t({inheritAttrs:!1,__name:`SelectContent`,props:{forceMount:{type:Boolean},position:{default:`item-aligned`},bodyLock:{type:Boolean},side:{},sideOffset:{},sideFlip:{type:Boolean},align:{default:`center`},alignOffset:{},alignFlip:{type:Boolean},avoidCollisions:{type:Boolean},collisionBoundary:{},collisionPadding:{},arrowPadding:{},hideShiftedArrow:{type:Boolean},sticky:{},hideWhenDetached:{type:Boolean},positionStrategy:{},updatePositionStrategy:{},disableUpdateOnLayoutShift:{type:Boolean},prioritizePosition:{type:Boolean},reference:{},asChild:{type:Boolean},as:{},disableOutsidePointerEvents:{type:Boolean},class:{type:[Boolean,null,String,Object,Array]}},emits:[`closeAutoFocus`,`escapeKeyDown`,`pointerDownOutside`],setup(t,{emit:r}){let i=t,a=r,o=R(U(i,`class`),a);return(r,a)=>(n(),f(b(Je),null,{default:d(()=>[c(b(Ve),e({"data-slot":`select-content`,"data-align-trigger":t.position===`item-aligned`},{...r.$attrs,...b(o)},{class:b(F)(`bg-popover text-popover-foreground data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/10 min-w-36 rounded-lg shadow-md ring-1 duration-100 data-[side=inline-start]:slide-in-from-right-2 data-[side=inline-end]:slide-in-from-left-2 cn-menu-translucent relative z-dropdown max-h-(--reka-select-content-available-height) origin-(--reka-select-content-transform-origin) overflow-x-hidden overflow-y-auto data-[align-trigger=true]:animate-none`,t.position===`popper`&&`data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1`,i.class)}),{default:d(()=>[c(b(ot)),c(b(et),{"data-position":t.position,class:_(b(F)(`data-[position=popper]:h-[var(--reka-select-trigger-height)] data-[position=popper]:w-full data-[position=popper]:min-w-[var(--reka-select-trigger-width)]`))},{default:d(()=>[A(r.$slots,`default`)]),_:3},8,[`data-position`,`class`]),c(b(at))]),_:3},16,[`data-align-trigger`,`class`])]),_:3}))}}),rt={class:`pointer-events-none absolute right-2 flex size-4 items-center justify-center`},it=t({__name:`SelectItem`,props:{value:{},disabled:{type:Boolean},textValue:{},asChild:{type:Boolean},as:{},class:{type:[Boolean,null,String,Object,Array]}},setup(t){let r=t,i=L(U(r,`class`));return(t,a)=>(n(),f(b(Ge),e({"data-slot":`select-item`},b(i),{class:b(F)(`focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm [&_svg:not([class*=size-])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2 relative flex w-full cursor-default items-center outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0`,r.class)}),{default:d(()=>[g(`span`,rt,[c(b(Ke),null,{default:d(()=>[A(t.$slots,`indicator-icon`,{},()=>[c(b(M),{class:`pointer-events-none`})])]),_:3})]),c(b(qe),null,{default:d(()=>[A(t.$slots,`default`)]),_:3})]),_:3},16,[`class`]))}}),at=t({__name:`SelectScrollDownButton`,props:{asChild:{type:Boolean},as:{},class:{type:[Boolean,null,String,Object,Array]}},setup(t){let r=t,i=L(U(r,`class`));return(t,a)=>(n(),f(b(Xe),e({"data-slot":`select-scroll-down-button`},b(i),{class:b(F)(`bg-popover z-10 flex cursor-default items-center justify-center py-1 [&_svg:not([class*=size-])]:size-4`,r.class)}),{default:d(()=>[A(t.$slots,`default`,{},()=>[c(b(G))])]),_:3},16,[`class`]))}}),ot=t({__name:`SelectScrollUpButton`,props:{asChild:{type:Boolean},as:{},class:{type:[Boolean,null,String,Object,Array]}},setup(t){let r=t,i=L(U(r,`class`));return(t,a)=>(n(),f(b(Ze),e({"data-slot":`select-scroll-up-button`},b(i),{class:b(F)(`bg-popover z-10 flex cursor-default items-center justify-center py-1 [&_svg:not([class*=size-])]:size-4`,r.class)}),{default:d(()=>[A(t.$slots,`default`,{},()=>[c(b(be))])]),_:3},16,[`class`]))}}),st=t({__name:`SelectTrigger`,props:{disabled:{type:Boolean},reference:{},asChild:{type:Boolean},as:{},class:{type:[Boolean,null,String,Object,Array]},size:{default:`default`}},setup(t){let r=t,i=L(U(r,`class`,`size`));return(a,o)=>(n(),f(b(Qe),e({"data-slot":`select-trigger`,"data-size":t.size},b(i),{class:b(F)(`border-input data-placeholder:text-muted-foreground dark:bg-input/30 dark:hover:bg-input/50 focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 gap-1.5 rounded-lg border bg-transparent py-2 pr-2 pl-2.5 text-sm transition-colors select-none focus-visible:ring-3 aria-invalid:ring-3 data-[size=default]:h-8 data-[size=sm]:h-7 data-[size=sm]:rounded-md *:data-[slot=select-value]:gap-1.5 [&_svg:not([class*=size-])]:size-4 flex w-fit items-center justify-between whitespace-nowrap outline-none disabled:cursor-not-allowed disabled:opacity-50 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center [&_svg]:pointer-events-none [&_svg]:shrink-0`,r.class)}),{default:d(()=>[A(a.$slots,`default`),c(b(He),{"as-child":``},{default:d(()=>[c(b(G),{class:`text-muted-foreground size-4 pointer-events-none`})]),_:1})]),_:3},16,[`data-size`,`class`]))}}),ct=t({__name:`SelectValue`,props:{placeholder:{},asChild:{type:Boolean},as:{}},setup(t){let r=t;return(t,i)=>(n(),f(b($e),e({"data-slot":`select-value`},r),{default:d(()=>[A(t.$slots,`default`)]),_:3},16))}});export{tt as a,nt as i,st as n,it as r,ct as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{C as e,I as t,S as n,Y as r,a as i,g as a,mt as o,ot as s,t as c,u as l,v as u,x as d,y as f,yt as p}from"./client-BBW9-06a.js";import{n as m}from"./button-B3kgf-D2.js";import{t as h}from"./Label-9sUKofNb.js";import{n as g,t as _}from"./CardContent-DKzAH8lX.js";import{t as v}from"./Input-C5_w9X6Y.js";var y={class:`min-h-screen flex items-center justify-center bg-background`},b={key:0,class:`text-destructive text-sm`},x=e({__name:`Setup`,setup(e){let x=i(),S=s(``),C=s(``),w=s(``),T=s(!1);async function E(){if(!S.value||!C.value){w.value=`请输入密码`;return}if(S.value!==C.value){w.value=`两次密码不一致`;return}if(S.value.length<6){w.value=`密码至少 6 位`;return}w.value=``,T.value=!0;try{await c.initializeSetup(S.value),x.push(`/admin/dashboard`)}catch(e){w.value=e.response?.data?.error?.message||`设置失败`}finally{T.value=!1}}return(e,i)=>(t(),f(`div`,y,[n(o(g),{class:`w-full max-w-sm shadow-lg`},{default:r(()=>[n(o(_),{class:`pt-6`},{default:r(()=>[i[4]||=a(`div`,{class:`text-center mb-6`},[a(`div`,{class:`w-12 h-12 bg-primary rounded-lg mx-auto mb-3 flex items-center justify-center`},[a(`svg`,{class:`w-7 h-7 text-white`,fill:`none`,stroke:`currentColor`,viewBox:`0 0 24 24`},[a(`path`,{"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`,d:`M8 9l3 3-3 3m5 0h3M5 20h14a2 2 0 002-2V6a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z`})])]),a(`h1`,{class:`text-xl font-semibold text-foreground`},`LLM Simple Router`),a(`p`,{class:`text-sm text-muted-foreground mt-1`},`初始设置 — 设置管理员密码`)],-1),a(`form`,{onSubmit:l(E,[`prevent`]),class:`space-y-4`},[a(`div`,null,[n(o(h),{class:`block text-sm font-medium text-foreground mb-1`},{default:r(()=>[...i[2]||=[d(`密码`,-1)]]),_:1}),n(o(v),{modelValue:S.value,"onUpdate:modelValue":i[0]||=e=>S.value=e,type:`password`,placeholder:`至少 6 位`,disabled:T.value},null,8,[`modelValue`,`disabled`])]),a(`div`,null,[n(o(h),{class:`block text-sm font-medium text-foreground mb-1`},{default:r(()=>[...i[3]||=[d(`确认密码`,-1)]]),_:1}),n(o(v),{modelValue:C.value,"onUpdate:modelValue":i[1]||=e=>C.value=e,type:`password`,placeholder:`再次输入密码`,disabled:T.value},null,8,[`modelValue`,`disabled`])]),w.value?(t(),f(`p`,b,p(w.value),1)):u(``,!0),n(o(m),{type:`submit`,class:`w-full`,disabled:T.value},{default:r(()=>[d(p(T.value?`设置中...`:`完成设置`),1)]),_:1},8,[`disabled`])],32)]),_:1})]),_:1})]))}});export{x as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{C as e,I as t,g as n,gt as r,mt as i,y as a,z as o}from"./client-BBW9-06a.js";import{r as s}from"./button-B3kgf-D2.js";var c={"data-slot":`table-container`,class:`relative w-full overflow-x-auto`},l=e({__name:`Table`,props:{class:{type:[Boolean,null,String,Object,Array]}},setup(e){let l=e;return(e,u)=>(t(),a(`div`,c,[n(`table`,{"data-slot":`table`,class:r(i(s)(`w-full caption-bottom text-sm`,l.class))},[o(e.$slots,`default`)],2)]))}}),u=e({__name:`TableBody`,props:{class:{type:[Boolean,null,String,Object,Array]}},setup(e){let n=e;return(e,c)=>(t(),a(`tbody`,{"data-slot":`table-body`,class:r(i(s)(`[&_tr:last-child]:border-0`,n.class))},[o(e.$slots,`default`)],2))}}),d=e({__name:`TableCell`,props:{class:{type:[Boolean,null,String,Object,Array]}},setup(e){let n=e;return(e,c)=>(t(),a(`td`,{"data-slot":`table-cell`,class:r(i(s)(`p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0`,n.class))},[o(e.$slots,`default`)],2))}}),f=e({__name:`TableRow`,props:{class:{type:[Boolean,null,String,Object,Array]}},setup(e){let n=e;return(e,c)=>(t(),a(`tr`,{"data-slot":`table-row`,class:r(i(s)(`hover:bg-muted/50 data-[state=selected]:bg-muted border-b transition-colors has-aria-expanded:bg-muted/50`,n.class))},[o(e.$slots,`default`)],2))}}),p=e({__name:`TableHead`,props:{class:{type:[Boolean,null,String,Object,Array]}},setup(e){let n=e;return(e,c)=>(t(),a(`th`,{"data-slot":`table-head`,class:r(i(s)(`text-foreground h-10 px-2 text-left align-middle font-medium whitespace-nowrap [&:has([role=checkbox])]:pr-0`,n.class))},[o(e.$slots,`default`)],2))}}),m=e({__name:`TableHeader`,props:{class:{type:[Boolean,null,String,Object,Array]}},setup(e){let n=e;return(e,c)=>(t(),a(`thead`,{"data-slot":`table-header`,class:r(i(s)(`[&_tr]:border-b`,n.class))},[o(e.$slots,`default`)],2))}});export{u as a,d as i,p as n,l as o,f as r,m as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{A as e,C as t,I as n,M as r,N as i,S as a,T as o,Y as s,_ as c,_t as l,ct as u,dt as d,h as f,l as p,mt as m,ot as h,u as g,v as _,vt as v,z as y}from"./client-BBW9-06a.js";import{i as b,r as x}from"./button-B3kgf-D2.js";import{_ as S,d as C,m as w,p as T,u as E,w as D}from"./badge-HGT44FNA.js";import{c as O,h as k,t as A}from"./useForwardExpose-CIZH3-CG.js";import{n as j,t as M}from"./RovingFocusItem-CvMnUs02.js";var[N,P]=D(`TabsRoot`),F=t({__name:`TabsRoot`,props:{defaultValue:{type:null,required:!1},orientation:{type:String,required:!1,default:`horizontal`},dir:{type:String,required:!1},activationMode:{type:String,required:!1,default:`automatic`},modelValue:{type:null,required:!1},unmountOnHide:{type:Boolean,required:!1,default:!0},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`update:modelValue`],setup(e,{emit:t}){let r=e,i=t,{orientation:a,unmountOnHide:o,dir:l}=d(r),f=S(l);A();let p=O(r,`modelValue`,i,{defaultValue:r.defaultValue,passive:r.modelValue===void 0}),g=h(),_=u(new Set);return P({modelValue:p,changeModelValue:e=>{p.value=e},orientation:a,dir:f,unmountOnHide:o,activationMode:r.activationMode,baseId:C(void 0,`reka-tabs`),tabsList:g,contentIds:_,registerContent:e=>{_.value=new Set([..._.value,e])},unregisterContent:e=>{let t=new Set(_.value);t.delete(e),_.value=t}}),(e,t)=>(n(),c(m(b),{dir:m(f),"data-orientation":m(a),"as-child":e.asChild,as:e.as},{default:s(()=>[y(e.$slots,`default`,{modelValue:m(p)})]),_:3},8,[`dir`,`data-orientation`,`as-child`,`as`]))}});function I(e,t){return`${e}-trigger-${t}`}function L(e,t){return`${e}-content-${t}`}var R=t({__name:`TabsContent`,props:{value:{type:[String,Number],required:!0},forceMount:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){let t=e,{forwardRef:o}=A(),l=N(),u=f(()=>I(l.baseId,t.value)),d=f(()=>L(l.baseId,t.value)),p=f(()=>t.value===l.modelValue.value),g=h(p.value);return i(()=>{l.registerContent(t.value),requestAnimationFrame(()=>{g.value=!1})}),r(()=>{l.unregisterContent(t.value)}),(e,t)=>(n(),c(m(E),{present:e.forceMount||p.value,"force-mount":``},{default:s(({present:t})=>[a(m(b),{id:d.value,ref:m(o),"as-child":e.asChild,as:e.as,role:`tabpanel`,"data-state":p.value?`active`:`inactive`,"data-orientation":m(l).orientation.value,"aria-labelledby":u.value,hidden:!t,tabindex:`0`,style:v({animationDuration:g.value?`0s`:void 0})},{default:s(()=>[!m(l).unmountOnHide.value||t?y(e.$slots,`default`,{key:0}):_(`v-if`,!0)]),_:2},1032,[`id`,`as-child`,`as`,`data-state`,`data-orientation`,`aria-labelledby`,`hidden`,`style`])]),_:3},8,[`present`]))}}),z=t({__name:`TabsList`,props:{loop:{type:Boolean,required:!1,default:!0},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){let{loop:t}=d(e),{forwardRef:r,currentElement:i}=A(),o=N();return o.tabsList=i,(e,i)=>(n(),c(m(j),{"as-child":``,orientation:m(o).orientation.value,dir:m(o).dir.value,loop:m(t)},{default:s(()=>[a(m(b),{ref:m(r),role:`tablist`,"as-child":e.asChild,as:e.as,"aria-orientation":m(o).orientation.value},{default:s(()=>[y(e.$slots,`default`)]),_:3},8,[`as-child`,`as`,`aria-orientation`])]),_:3},8,[`orientation`,`dir`,`loop`]))}}),B=t({__name:`TabsTrigger`,props:{value:{type:[String,Number],required:!0},disabled:{type:Boolean,required:!1,default:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`button`}},setup(e){let t=e,{forwardRef:r}=A(),i=N(),o=f(()=>I(i.baseId,t.value)),l=f(()=>i.contentIds.value.has(t.value)?L(i.baseId,t.value):void 0),u=f(()=>t.value===i.modelValue.value);return(e,t)=>(n(),c(m(M),{"as-child":``,focusable:!e.disabled,active:u.value},{default:s(()=>[a(m(b),{id:o.value,ref:m(r),role:`tab`,type:e.as===`button`?`button`:void 0,as:e.as,"as-child":e.asChild,"aria-selected":u.value?`true`:`false`,"aria-controls":l.value,"data-state":u.value?`active`:`inactive`,disabled:e.disabled,"data-disabled":e.disabled?``:void 0,"data-orientation":m(i).orientation.value,onMousedown:t[0]||=g(t=>{!e.disabled&&t.ctrlKey===!1?m(i).changeModelValue(e.value):t.preventDefault()},[`left`]),onKeydown:t[1]||=p(t=>m(i).changeModelValue(e.value),[`enter`,`space`]),onFocus:t[2]||=()=>{let t=m(i).activationMode!==`manual`;!u.value&&!e.disabled&&t&&m(i).changeModelValue(e.value)}},{default:s(()=>[y(e.$slots,`default`)]),_:3},8,[`id`,`type`,`as`,`as-child`,`aria-selected`,`aria-controls`,`data-state`,`disabled`,`data-disabled`,`data-orientation`])]),_:3},8,[`focusable`,`active`]))}}),V=t({__name:`Tabs`,props:{defaultValue:{},orientation:{},dir:{},activationMode:{},modelValue:{},unmountOnHide:{type:Boolean},asChild:{type:Boolean},as:{},class:{type:[Boolean,null,String,Object,Array]}},emits:[`update:modelValue`],setup(t,{emit:r}){let i=t,a=r,u=T(k(i,`class`),a);return(t,r)=>(n(),c(m(F),e({"data-slot":`tabs`,"data-orientation":m(u).orientation||`horizontal`},m(u),{class:m(x)(`gap-2 group/tabs flex data-[orientation=horizontal]:flex-col`,i.class)}),{default:s(e=>[y(t.$slots,`default`,l(o(e)))]),_:3},16,[`data-orientation`,`class`]))}}),H=t({__name:`TabsContent`,props:{value:{},forceMount:{type:Boolean},asChild:{type:Boolean},as:{},class:{type:[Boolean,null,String,Object,Array]}},setup(t){let r=t,i=k(r,`class`);return(t,a)=>(n(),c(m(R),e({"data-slot":`tabs-content`,class:m(x)(`text-sm flex-1 outline-none`,r.class)},m(i)),{default:s(()=>[y(t.$slots,`default`)]),_:3},16,[`class`]))}}),U=t({__name:`TabsList`,props:{loop:{type:Boolean},asChild:{type:Boolean},as:{},class:{type:[Boolean,null,String,Object,Array]},variant:{default:`default`}},setup(t){let r=t,i=k(r,`class`,`variant`);return(a,o)=>(n(),c(m(z),e({"data-slot":`tabs-list`,"data-variant":t.variant},m(i),{class:m(x)(`rounded-lg p-[3px] group-data-[orientation=horizontal]/tabs:h-8 data-[variant=line]:rounded-none group/tabs-list inline-flex w-fit items-center justify-center text-muted-foreground group-data-[orientation=vertical]/tabs:h-fit group-data-[orientation=vertical]/tabs:flex-col`,t.variant===`default`&&`bg-muted`,t.variant===`line`&&`gap-1 bg-transparent`,r.class)}),{default:s(()=>[y(a.$slots,`default`)]),_:3},16,[`data-variant`,`class`]))}}),W=t({__name:`TabsTrigger`,props:{value:{},disabled:{type:Boolean},asChild:{type:Boolean},as:{},class:{type:[Boolean,null,String,Object,Array]}},setup(t){let r=t,i=w(k(r,`class`));return(t,a)=>(n(),c(m(B),e({"data-slot":`tabs-trigger`,class:m(x)(`gap-1.5 rounded-md border border-transparent px-1.5 py-0.5 text-sm font-medium group-data-[variant=default]/tabs-list:data-[state=active]:shadow-sm group-data-[variant=line]/tabs-list:data-[state=active]:shadow-none [&_svg:not([class*=size-])]:size-4 has-data-[icon=inline-end]:pr-1 has-data-[icon=inline-start]:pl-1 relative inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center whitespace-nowrap text-foreground/60 transition-all group-data-[orientation=vertical]/tabs:w-full group-data-[orientation=vertical]/tabs:justify-start hover:text-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1 focus-visible:outline-ring disabled:pointer-events-none disabled:opacity-50 dark:text-muted-foreground dark:hover:text-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0`,`group-data-[variant=line]/tabs-list:bg-transparent group-data-[variant=line]/tabs-list:data-[state=active]:bg-transparent dark:group-data-[variant=line]/tabs-list:data-[state=active]:border-transparent dark:group-data-[variant=line]/tabs-list:data-[state=active]:bg-transparent`,`data-[state=active]:bg-background data-[state=active]:text-foreground dark:data-[state=active]:border-input dark:data-[state=active]:bg-input/30 dark:data-[state=active]:text-foreground`,`after:absolute after:bg-foreground after:opacity-0 after:transition-opacity group-data-[orientation=horizontal]/tabs:after:inset-x-0 group-data-[orientation=horizontal]/tabs:after:bottom-[-5px] group-data-[orientation=horizontal]/tabs:after:h-0.5 group-data-[orientation=vertical]/tabs:after:inset-y-0 group-data-[orientation=vertical]/tabs:after:-right-1 group-data-[orientation=vertical]/tabs:after:w-0.5 group-data-[variant=line]/tabs-list:data-[state=active]:after:opacity-100`,r.class)},m(i)),{default:s(()=>[y(t.$slots,`default`)]),_:3},16,[`class`]))}});export{V as i,U as n,H as r,W as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{A as e,C as t,I as n,K as r,R as i,_ as a,f as o,h as s,v as c,y as l}from"./client-BBW9-06a.js";import{l as u,n as d}from"./badge-HGT44FNA.js";var f=t({inheritAttrs:!1,__name:`VisuallyHiddenInputBubble`,props:{name:{type:String,required:!0},value:{type:null,required:!0},checked:{type:Boolean,required:!1,default:void 0},required:{type:Boolean,required:!1},disabled:{type:Boolean,required:!1},feature:{type:String,required:!1,default:`fully-hidden`}},setup(t){let i=t,{primitiveElement:o,currentElement:c}=u();return r(s(()=>i.checked??i.value),(e,t)=>{if(!c.value)return;let n=c.value,r=window.HTMLInputElement.prototype,i=Object.getOwnPropertyDescriptor(r,`value`).set;if(i&&e!==t){let t=new Event(`input`,{bubbles:!0}),r=new Event(`change`,{bubbles:!0});i.call(n,e),n.dispatchEvent(t),n.dispatchEvent(r)}}),(t,r)=>(n(),a(d,e({ref_key:`primitiveElement`,ref:o},{...i,...t.$attrs},{as:`input`}),null,16))}}),p=t({inheritAttrs:!1,__name:`VisuallyHiddenInput`,props:{name:{type:String,required:!0},value:{type:null,required:!0},checked:{type:Boolean,required:!1,default:void 0},required:{type:Boolean,required:!1},disabled:{type:Boolean,required:!1},feature:{type:String,required:!1,default:`fully-hidden`}},setup(t){let r=t,u=s(()=>typeof r.value==`object`&&Array.isArray(r.value)&&r.value.length===0&&r.required),d=s(()=>typeof r.value==`string`||typeof r.value==`number`||typeof r.value==`boolean`||r.value===null||r.value===void 0?[{name:r.name,value:r.value}]:typeof r.value==`object`&&Array.isArray(r.value)?r.value.flatMap((e,t)=>typeof e==`object`?Object.entries(e).map(([e,n])=>({name:`${r.name}[${t}][${e}]`,value:n})):{name:`${r.name}[${t}]`,value:e}):r.value!==null&&typeof r.value==`object`&&!Array.isArray(r.value)?Object.entries(r.value).map(([e,t])=>({name:`${r.name}[${e}]`,value:t})):[]);return(t,s)=>(n(),l(o,null,[c(` We render single input if it's required `),u.value?(n(),a(f,e({key:t.name},{...r,...t.$attrs},{name:t.name,value:t.value}),null,16,[`name`,`value`])):(n(!0),l(o,{key:1},i(d.value,i=>(n(),a(f,e({key:i.name},{ref_for:!0},{...r,...t.$attrs},{name:i.name,value:i.value}),null,16,[`name`,`value`]))),128))],2112))}});export{p as t};
|