llm-simple-router 0.6.2 → 0.6.4
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/dist/config.d.ts +2 -0
- package/dist/config.js +5 -0
- package/dist/constants.d.ts +1 -0
- package/dist/constants.js +1 -0
- package/dist/index.js +14 -0
- package/dist/metrics/sse-metrics-transform.d.ts +11 -0
- package/dist/metrics/sse-metrics-transform.js +47 -1
- package/dist/proxy/anthropic.d.ts +1 -0
- package/dist/proxy/anthropic.js +2 -2
- package/dist/proxy/loop-prevention/detectors/detector.d.ts +10 -0
- package/dist/proxy/loop-prevention/detectors/detector.js +1 -0
- package/dist/proxy/loop-prevention/detectors/ngram-detector.d.ts +15 -0
- package/dist/proxy/loop-prevention/detectors/ngram-detector.js +65 -0
- package/dist/proxy/loop-prevention/session-tracker.d.ts +14 -0
- package/dist/proxy/loop-prevention/session-tracker.js +67 -0
- package/dist/proxy/loop-prevention/stream-loop-guard.d.ts +12 -0
- package/dist/proxy/loop-prevention/stream-loop-guard.js +28 -0
- package/dist/proxy/loop-prevention/tool-loop-guard.d.ts +13 -0
- package/dist/proxy/loop-prevention/tool-loop-guard.js +63 -0
- package/dist/proxy/loop-prevention/types.d.ts +38 -0
- package/dist/proxy/loop-prevention/types.js +18 -0
- package/dist/proxy/openai.d.ts +1 -0
- package/dist/proxy/openai.js +2 -2
- package/dist/proxy/patch/deepseek/index.d.ts +1 -1
- package/dist/proxy/patch/deepseek/index.js +3 -3
- package/dist/proxy/patch/deepseek/patch-orphan-tool-results.d.ts +3 -4
- package/dist/proxy/patch/deepseek/patch-orphan-tool-results.js +23 -30
- package/dist/proxy/patch/deepseek/patch-thinking-blocks.d.ts +8 -4
- package/dist/proxy/patch/deepseek/patch-thinking-blocks.js +57 -12
- package/dist/proxy/patch/index.d.ts +12 -3
- package/dist/proxy/patch/index.js +13 -4
- package/dist/proxy/patch/router-cleanup.d.ts +13 -0
- package/dist/proxy/patch/router-cleanup.js +87 -0
- package/dist/proxy/proxy-handler.d.ts +1 -0
- package/dist/proxy/proxy-handler.js +88 -2
- package/dist/proxy/stream-proxy.d.ts +2 -1
- package/dist/proxy/stream-proxy.js +11 -3
- package/dist/proxy/transport-fn.d.ts +2 -0
- package/dist/proxy/transport-fn.js +19 -1
- package/frontend-dist/assets/{CardContent-BtAcFNMy.js → CardContent-CpiBn1Oc.js} +1 -1
- package/frontend-dist/assets/{CardTitle-Bmwf1S5Y.js → CardTitle-dwtgd_nl.js} +1 -1
- package/frontend-dist/assets/{CascadingModelSelect-CicfrqcY.js → CascadingModelSelect-CxEXwaeM.js} +1 -1
- package/frontend-dist/assets/{Checkbox-B1o39YuC.js → Checkbox-D2U4I-pO.js} +1 -1
- package/frontend-dist/assets/{CollapsibleTrigger-2jySTCeh.js → CollapsibleTrigger-B2AdbZBh.js} +1 -1
- package/frontend-dist/assets/{Collection-ChUVejsh.js → Collection-BJZSFJsF.js} +1 -1
- package/frontend-dist/assets/{Dashboard-DkJauxYu.js → Dashboard-D3cDhJNh.js} +1 -1
- package/frontend-dist/assets/{DialogTitle-D0erB-Fr.js → DialogTitle-BTuQdRm1.js} +1 -1
- package/frontend-dist/assets/{Input-BDbKynVD.js → Input-BYULYPCe.js} +1 -1
- package/frontend-dist/assets/{Label-CrHq5hrg.js → Label-sImW5XUw.js} +1 -1
- package/frontend-dist/assets/{Login-D2YdqYnu.js → Login-B0kGGZFi.js} +1 -1
- package/frontend-dist/assets/{Logs-DgeOPIkd.js → Logs-BpAeeJRi.js} +1 -1
- package/frontend-dist/assets/{ModelMappings-De_UjiND.js → ModelMappings-CsHLYqQB.js} +1 -1
- package/frontend-dist/assets/{Monitor-BgRMReMF.js → Monitor-BmMFWFJg.js} +1 -1
- package/frontend-dist/assets/{PopoverTrigger-BVsxIE2L.js → PopoverTrigger-CIN3yOIw.js} +1 -1
- package/frontend-dist/assets/{PopperContent-B23SzU9H.js → PopperContent-BoOYHCag.js} +1 -1
- package/frontend-dist/assets/{Providers-DQypvsEg.js → Providers-DrepCc4A.js} +1 -1
- package/frontend-dist/assets/{ProxyEnhancement-Cijb2FID.js → ProxyEnhancement-dK_mOQ3m.js} +1 -1
- package/frontend-dist/assets/{RetryRules-CSseSPoO.js → RetryRules-Ce5HfNcc.js} +1 -1
- package/frontend-dist/assets/{RouterKeys-ccwqoMCX.js → RouterKeys-CeSGvjll.js} +1 -1
- package/frontend-dist/assets/{RovingFocusItem-rwA4uA9N.js → RovingFocusItem-gAYs0l8Z.js} +1 -1
- package/frontend-dist/assets/{Schedules-8YYNjLNo.js → Schedules-DphkPAWD.js} +1 -1
- package/frontend-dist/assets/{SelectValue-TvIOOalu.js → SelectValue-Cbbd2Xbm.js} +1 -1
- package/frontend-dist/assets/{Settings-D1WDm5lQ.js → Settings-DIP7VawX.js} +1 -1
- package/frontend-dist/assets/{Setup-Bw-RIF9G.js → Setup-_d_M-Qi6.js} +1 -1
- package/frontend-dist/assets/{Switch-D9wFEsMF.js → Switch-BmmYsqAx.js} +1 -1
- package/frontend-dist/assets/{TableHeader-HOR173Xk.js → TableHeader-C1mpCsyo.js} +1 -1
- package/frontend-dist/assets/{TabsTrigger-BOsmgFYE.js → TabsTrigger-kN1usMvC.js} +1 -1
- package/frontend-dist/assets/{Teleport-BGbwtNTD.js → Teleport-CRn-gy0B.js} +1 -1
- package/frontend-dist/assets/{TooltipTrigger-DPzNY2Sp.js → TooltipTrigger-rlKo7E3A.js} +1 -1
- package/frontend-dist/assets/UnifiedRequestDialog-C-Ui-fav.css +1 -0
- package/frontend-dist/assets/UnifiedRequestDialog-C7pEDa9D.js +4 -0
- package/frontend-dist/assets/{VisuallyHidden-ChauvWtH.js → VisuallyHidden-CQvCw9gB.js} +1 -1
- package/frontend-dist/assets/{VisuallyHiddenInput-BcDuL0V8.js → VisuallyHiddenInput-B-DnnaWN.js} +1 -1
- package/frontend-dist/assets/{alert-dialog-DgtxmV7t.js → alert-dialog-M3PhwD75.js} +1 -1
- package/frontend-dist/assets/arrow-down-BHq-drH-.js +1 -0
- package/frontend-dist/assets/{badge-NUBqZBxu.js → badge-7WIbGMsE.js} +1 -1
- package/frontend-dist/assets/{button-BLX8zWc1.js → button-q9xTxPJh.js} +2 -2
- package/frontend-dist/assets/check-CccuM1Sj.js +1 -0
- package/frontend-dist/assets/{copy-BMWzukd1.js → copy-C1a8OrYP.js} +1 -1
- package/frontend-dist/assets/{dialog-Dsvgfiw-.js → dialog-B6RnMgGx.js} +1 -1
- package/frontend-dist/assets/{file-text-CqJ33eWr.js → file-text-CsuQUjXR.js} +1 -1
- package/frontend-dist/assets/index-Ce7hFHTt.css +1 -0
- package/frontend-dist/assets/{index-D0rWQKkW.js → index-Dh7qL0Qt.js} +1 -1
- package/frontend-dist/assets/{lib-DQotd1d8.js → lib-D1G8Xa05.js} +1 -1
- package/frontend-dist/assets/loader-circle-CVhxR0Tt.js +1 -0
- package/frontend-dist/assets/{useClipboard-BDAhyrgL.js → useClipboard-CBONMfzU.js} +1 -1
- package/frontend-dist/assets/{useFocusGuards-CHAbXhQp.js → useFocusGuards-DwFX8o1a.js} +1 -1
- package/frontend-dist/assets/useFormControl-DC32gW1A.js +1 -0
- package/frontend-dist/assets/{useLogRetention-X-CkHhJ7.js → useLogRetention-C2IbjXjr.js} +1 -1
- package/frontend-dist/assets/useNonce-t7XaR4bX.js +1 -0
- package/frontend-dist/assets/x-Bq5KcbWI.js +1 -0
- package/frontend-dist/index.html +20 -20
- package/package.json +1 -1
- package/frontend-dist/assets/UnifiedRequestDialog-BjEigSaR.css +0 -1
- package/frontend-dist/assets/UnifiedRequestDialog-CevmD2P2.js +0 -3
- package/frontend-dist/assets/arrow-down-BuK6B6yc.js +0 -1
- package/frontend-dist/assets/check-CsZv9cnK.js +0 -1
- package/frontend-dist/assets/index-_Icfkt3I.css +0 -1
- package/frontend-dist/assets/loader-circle-CnEL8ILi.js +0 -1
- package/frontend-dist/assets/useFormControl-CCVkIi3o.js +0 -1
- package/frontend-dist/assets/useNonce-DyF1ycZV.js +0 -1
- package/frontend-dist/assets/x-DMAovOe-.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
import{Dt as e,J as t,Mt as n,Pt as r,U as i,W as a,i as o,it as s,lt as c,m as l,o as u,ot as d,q as f,tt as p,yt as m}from"./button-
|
|
1
|
+
import{Dt as e,J as t,Mt as n,Pt as r,U as i,W as a,i as o,it as s,lt as c,m as l,o as u,ot as d,q as f,tt as p,yt as m}from"./button-q9xTxPJh.js";import{a as h,c as g,f as _,i as v,l as y,o as b,p as x,r as S,v as C,y as w}from"./Teleport-CRn-gy0B.js";var[T,E]=w(`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(t,{emit:i}){let a=t,o=l(a,`open`,i,{defaultValue:a.defaultOpen,passive:a.open===void 0}),s=e(),u=e(),{modal:d}=n(a);return E({open:o,modal:d,openModal:()=>{o.value=!0},onOpenChange:e=>{o.value=e},onOpenToggle:()=>{o.value=!o.value},contentId:``,titleId:``,descriptionId:``,triggerElement:s,contentElement:u}),(e,t)=>c(e.$slots,`default`,{open:r(o),close:()=>o.value=!1})}}),O=t({__name:`DialogClose`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`button`}},setup(e){let t=e;u();let n=T();return(e,a)=>(d(),i(r(o),p(t,{type:e.as===`button`?`button`:void 0,onClick:a[0]||=e=>r(n).onOpenChange(!1)}),{default:m(()=>[c(e.$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(e,{emit:t}){let n=e,a=t,o=T(),{forwardRef:l,currentElement:_}=u();return o.titleId||=g(void 0,`reka-dialog-title`),o.descriptionId||=g(void 0,`reka-dialog-description`),s(()=>{o.contentElement=_,C()!==document.body&&(o.triggerElement.value=C())}),(e,t)=>(d(),i(r(v),{"as-child":``,loop:``,trapped:n.trapFocus,onMountAutoFocus:t[5]||=e=>a(`openAutoFocus`,e),onUnmountAutoFocus:t[6]||=e=>a(`closeAutoFocus`,e)},{default:m(()=>[f(r(h),p({id:r(o).contentId,ref:r(l),as:e.as,"as-child":e.asChild,"disable-outside-pointer-events":e.disableOutsidePointerEvents,role:`dialog`,"aria-describedby":r(o).descriptionId,"aria-labelledby":r(o).titleId,"data-state":r(S)(r(o).open.value)},e.$attrs,{onDismiss:t[0]||=e=>r(o).onOpenChange(!1),onEscapeKeyDown:t[1]||=e=>a(`escapeKeyDown`,e),onFocusOutside:t[2]||=e=>a(`focusOutside`,e),onInteractOutside:t[3]||=e=>a(`interactOutside`,e),onPointerDownOutside:t[4]||=e=>a(`pointerDownOutside`,e)}),{default:m(()=>[c(e.$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(e,{emit:t}){let n=e,a=t,o=T(),s=_(a),{forwardRef:l,currentElement:f}=u();return y(f),(e,t)=>(d(),i(k,p({...n,...r(s)},{ref:r(l),"trap-focus":r(o).open.value,"disable-outside-pointer-events":!0,onCloseAutoFocus:t[0]||=e=>{e.defaultPrevented||(e.preventDefault(),r(o).triggerElement.value?.focus())},onPointerDownOutside:t[1]||=e=>{let t=e.detail.originalEvent,n=t.button===0&&t.ctrlKey===!0;(t.button===2||n)&&e.preventDefault()},onFocusOutside:t[2]||=e=>{e.preventDefault()}}),{default:m(()=>[c(e.$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:n}){let a=t,o=_(n);u();let s=T(),l=e(!1),f=e(!1);return(e,t)=>(d(),i(k,p({...a,...r(o)},{"trap-focus":!1,"disable-outside-pointer-events":!1,onCloseAutoFocus:t[0]||=e=>{e.defaultPrevented||(l.value||r(s).triggerElement.value?.focus(),e.preventDefault()),l.value=!1,f.value=!1},onInteractOutside:t[1]||=e=>{e.defaultPrevented||(l.value=!0,e.detail.originalEvent.type===`pointerdown`&&(f.value=!0));let t=e.target;r(s).triggerElement.value?.contains(t)&&e.preventDefault(),e.detail.originalEvent.type===`focusin`&&f.value&&e.preventDefault()}}),{default:m(()=>[c(e.$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(e,{emit:t}){let n=e,a=t,o=T(),s=_(a),{forwardRef:l}=u();return(e,t)=>(d(),i(r(b),{present:e.forceMount||r(o).open.value},{default:m(()=>[r(o).modal.value?(d(),i(A,p({key:0,ref:r(l)},{...n,...r(s),...e.$attrs}),{default:m(()=>[c(e.$slots,`default`)]),_:3},16)):(d(),i(j,p({key:1,ref:r(l)},{...n,...r(s),...e.$attrs}),{default:m(()=>[c(e.$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(e){let t=e;u();let n=T();return(e,a)=>(d(),i(r(o),p(t,{id:r(n).descriptionId}),{default:m(()=>[c(e.$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),u(),(e,n)=>(d(),i(r(o),{as:e.as,"as-child":e.asChild,"data-state":r(t).open.value?`open`:`closed`,style:{"pointer-events":`auto`}},{default:m(()=>[c(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(e){let t=T(),{forwardRef:n}=u();return(e,o)=>r(t)?.modal.value?(d(),i(r(b),{key:0,present:e.forceMount||r(t).open.value},{default:m(()=>[f(P,p(e.$attrs,{ref:r(n),as:e.as,"as-child":e.asChild}),{default:m(()=>[c(e.$slots,`default`)]),_:3},16,[`as`,`as-child`])]),_:3},8,[`present`])):a(`v-if`,!0)}}),I=t({__name:`DialogTitle`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`h2`}},setup(e){let t=e,n=T();return u(),(e,a)=>(d(),i(r(o),p(t,{id:r(n).titleId}),{default:m(()=>[c(e.$slots,`default`)]),_:3},16,[`id`]))}});export{O as a,M as i,F as n,D as o,N as r,I as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{Ct as e,G as t,I as n,It as r,J as i,Pt as a,bt as o,m as s,ot as c,r as l}from"./button-
|
|
1
|
+
import{Ct as e,G as t,I as n,It as r,J as i,Pt as a,bt as o,m as s,ot as c,r as l}from"./button-q9xTxPJh.js";var u=i({__name:`Input`,props:{defaultValue:{},modelValue:{},class:{type:[Boolean,null,String,Object,Array]}},emits:[`update:modelValue`],setup(i,{emit:u}){let d=i,f=s(d,`modelValue`,u,{passive:!0,defaultValue:d.defaultValue});return(i,s)=>o((c(),t(`input`,{"onUpdate:modelValue":s[0]||=t=>e(f)?f.value=t:null,"data-slot":`input`,class:r(a(l)(`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)),[[n,a(f)]])}});export{u as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{J as e,Pt as t,U as n,i as r,lt as i,o as a,ot as o,r as s,tt as c,x as l,yt as u}from"./button-
|
|
1
|
+
import{J as e,Pt as t,U as n,i as r,lt as i,o as a,ot as o,r as s,tt as c,x as l,yt as u}from"./button-q9xTxPJh.js";var d=e({__name:`Label`,props:{for:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`label`}},setup(e){let s=e;return a(),(e,a)=>(o(),n(t(r),c(s,{onMousedown:a[0]||=e=>{!e.defaultPrevented&&e.detail>1&&e.preventDefault()}}),{default:u(()=>[i(e.$slots,`default`)]),_:3},16))}}),f=e({__name:`Label`,props:{for:{},asChild:{type:Boolean},as:{},class:{type:[Boolean,null,String,Object,Array]}},setup(e){let r=e,a=l(r,`class`);return(e,l)=>(o(),n(t(d),c({"data-slot":`label`},t(a),{class:t(s)(`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`,r.class)}),{default:u(()=>[i(e.$slots,`default`)]),_:3},16,[`class`]))}});export{f as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{A as e,Dt as t,G as n,H as r,J as i,K as a,N as o,Pt as s,R as c,W as l,k as u,n as d,ot as f,q as p,yt as m,zt as h}from"./button-
|
|
1
|
+
import{A as e,Dt as t,G as n,H as r,J as i,K as a,N as o,Pt as s,R as c,W as l,k as u,n as d,ot as f,q as p,yt as m,zt as h}from"./button-q9xTxPJh.js";import{t as g}from"./Label-sImW5XUw.js";import{n as _,t as v}from"./CardContent-CpiBn1Oc.js";import{t as y}from"./Input-BYULYPCe.js";var b={class:`min-h-screen flex items-center justify-center bg-background`},x={key:0,class:`text-destructive text-sm`},S=i({__name:`Login`,setup(i){let S=o(),C=t(``),w=t(``),T=t(!1);async function E(){if(C.value){w.value=``,T.value=!0;try{await u.login(C.value),S.push(`/`)}catch(t){w.value=e(t,`登录失败`)}finally{T.value=!1}}}return(e,t)=>(f(),n(`div`,b,[p(s(_),{class:`w-full max-w-sm shadow-lg`},{default:m(()=>[p(s(v),{class:`pt-6`},{default:m(()=>[t[2]||=r(`div`,{class:`text-center mb-6`},[r(`div`,{class:`w-12 h-12 bg-primary rounded-lg mx-auto mb-3 flex items-center justify-center`},[r(`svg`,{class:`w-7 h-7 text-white`,fill:`none`,stroke:`currentColor`,viewBox:`0 0 24 24`},[r(`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`})])]),r(`h1`,{class:`text-xl font-semibold text-foreground`},`LLM Simple Router`),r(`p`,{class:`text-sm text-muted-foreground mt-1`},`管理后台登录`)],-1),r(`form`,{onSubmit:c(E,[`prevent`]),class:`space-y-4`},[r(`div`,null,[p(s(g),{class:`block text-sm font-medium text-foreground mb-1`},{default:m(()=>[...t[1]||=[a(`密码`,-1)]]),_:1}),p(s(y),{modelValue:C.value,"onUpdate:modelValue":t[0]||=e=>C.value=e,type:`password`,placeholder:`输入管理员密码`,disabled:T.value},null,8,[`modelValue`,`disabled`])]),w.value?(f(),n(`p`,x,h(w.value),1)):l(``,!0),p(s(d),{type:`submit`,class:`w-full`,disabled:T.value},{default:m(()=>[a(h(T.value?`登录中...`:`登 录`),1)]),_:1},8,[`disabled`])],32)]),_:1})]),_:1})]))}});export{S as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{A as e,Ct as t,Dt as n,G as r,H as i,It as a,J as o,K as s,Pt as c,R as l,U as u,V as d,W as f,ct as p,gt as m,it as h,k as g,n as _,ot as v,q as y,r as b,yt as x,z as S,zt as C}from"./button-BLX8zWc1.js";import{t as w}from"./format-Dln15Luw.js";import{r as ee,t as te}from"./UnifiedRequestDialog-CevmD2P2.js";import{t as T}from"./check-CsZv9cnK.js";import{a as E,i as D,n as O,r as k,t as A}from"./SelectValue-TvIOOalu.js";import{t as j}from"./copy-BMWzukd1.js";import{i as ne,n as re,r as ie,t as M}from"./TooltipTrigger-DPzNY2Sp.js";import{a as ae,n as oe,o as se,r as ce,t as le}from"./dialog-Dsvgfiw-.js";import{a as ue,c as de,i as fe,n as pe,r as me,s as he,t as ge}from"./alert-dialog-DgtxmV7t.js";import{t as N}from"./Label-CrHq5hrg.js";import{t as P}from"./badge-NUBqZBxu.js";import{n as F}from"./lib-DQotd1d8.js";import{t as I}from"./Input-BDbKynVD.js";import{a as _e,i as L,n as R,o as ve,r as z,t as ye}from"./TableHeader-HOR173Xk.js";import{t as B}from"./useClipboard-BDAhyrgL.js";import{t as be}from"./useLogRetention-X-CkHhJ7.js";var xe=o({__name:`Skeleton`,props:{class:{type:[Boolean,null,String,Object,Array]}},setup(e){let t=e;return(e,n)=>(v(),r(`div`,{"data-slot":`skeleton`,class:a(c(b)(`bg-muted rounded-md animate-pulse`,t.class))},null,2))}}),V={key:1,class:`ml-4 text-muted-foreground text-xs`},H={class:`inline-flex items-center gap-1`},U={class:`font-mono`},Se={key:2,class:`text-muted-foreground`},W={key:1,class:`text-muted-foreground`},G={key:1,class:`text-muted-foreground`},Ce=o({__name:`LogTableRow`,props:{log:{},isChild:{type:Boolean,default:!1},expanded:{type:Boolean,default:!1}},emits:[`toggleExpand`,`openDetail`],setup(e,{emit:t}){let n=t,{copied:o,copy:d}=B();function p(e){if(!e)return`未知`;try{let t=JSON.parse(e);return t.action?t.detail?`${t.action}: ${t.detail}`:t.action:e}catch{return`未知`}}return(t,m)=>(v(),u(c(z),{class:a({"bg-destructive/10":!e.isChild&&(e.log.status_code??0)>=400,"bg-muted/20":e.isChild})},{default:x(()=>[y(c(L),{class:`w-10`},{default:x(()=>[!e.isChild&&e.log.child_count?(v(),u(c(_),{key:0,variant:`ghost`,size:`xs`,onClick:m[0]||=t=>n(`toggleExpand`,e.log)},{default:x(()=>[i(`span`,{class:a([`text-xs transition-transform`,e.expanded?``:`-rotate-90`])},`▼`,2)]),_:1})):f(``,!0),e.isChild?(v(),r(`span`,V,`└`)):f(``,!0)]),_:1}),y(c(L),{class:`font-mono text-xs text-muted-foreground`,title:e.log.id},{default:x(()=>[i(`span`,H,[s(C(e.log.id.slice(0,8))+` `,1),y(c(re),null,{default:x(()=>[y(c(ne),{"delay-duration":300},{default:x(()=>[y(c(M),{"as-child":``},{default:x(()=>[y(c(_),{variant:`ghost`,size:`icon-xs`,class:`shrink-0`,onClick:m[1]||=l(t=>c(d)(e.log.id),[`stop`])},{default:x(()=>[c(o)?(v(),u(c(T),{key:0,class:`size-3 text-green-500`})):(v(),u(c(j),{key:1,class:`size-3`}))]),_:1})]),_:1}),y(c(ie),null,{default:x(()=>[...m[3]||=[s(`复制完整 ID`,-1)]]),_:1})]),_:1})]),_:1})])]),_:1},8,[`title`]),y(c(L),{class:`text-muted-foreground`},{default:x(()=>[s(C(c(w)(e.log.created_at)),1)]),_:1}),y(c(L),null,{default:x(()=>[y(c(P),{variant:e.log.api_type===`openai`?`default`:`secondary`},{default:x(()=>[s(C(e.log.api_type),1)]),_:1},8,[`variant`])]),_:1}),y(c(L),{class:`font-mono text-xs`},{default:x(()=>[s(C(e.log.model||`-`)+` `,1),!e.isChild&&e.log.original_model?(v(),u(c(P),{key:0,variant:`secondary`,class:`ml-1 text-xs`},{default:x(()=>[...m[4]||=[s(`已替换`,-1)]]),_:1})):f(``,!0)]),_:1}),y(c(L),{class:`text-xs`},{default:x(()=>[!e.isChild&&e.log.provider_id===c(`router`)?(v(),u(c(P),{key:0,variant:`secondary`,class:`text-[10px] px-1 py-0`},{default:x(()=>[s(` 代理增强:`+C(p(e.log.upstream_request)),1)]),_:1})):e.log.backend_model||e.log.provider_name?(v(),r(S,{key:1},[i(`span`,U,C(e.log.backend_model||`-`),1),m[5]||=i(`span`,{class:`text-muted-foreground`},` @ `,-1),y(c(P),{variant:`outline`,class:`text-[10px] px-1 py-0`},{default:x(()=>[s(C(e.log.provider_name||e.log.provider_id||`-`),1)]),_:1})],64)):(v(),r(`span`,Se,`-`))]),_:1}),y(c(L),null,{default:x(()=>[y(c(P),{variant:(e.log.status_code??0)<400?`default`:`destructive`},{default:x(()=>[s(C(e.log.status_code||`-`),1)]),_:1},8,[`variant`])]),_:1}),y(c(L),null,{default:x(()=>[s(C(e.log.latency_ms?e.log.latency_ms+`ms`:`-`),1)]),_:1}),y(c(L),null,{default:x(()=>[s(C(e.log.is_stream?`Yes`:`No`),1)]),_:1}),y(c(L),null,{default:x(()=>[e.log.is_retry?(v(),u(c(P),{key:0,variant:`outline`,class:`text-warning-dark border-warning`},{default:x(()=>[...m[6]||=[s(`重试`,-1)]]),_:1})):(v(),r(`span`,W,`-`))]),_:1}),y(c(L),null,{default:x(()=>[e.log.is_failover?(v(),u(c(P),{key:0,variant:`outline`,class:`text-danger-dark border-danger`},{default:x(()=>[...m[7]||=[s(`故障转移`,-1)]]),_:1})):(v(),r(`span`,G,`-`))]),_:1}),y(c(L),{class:`text-destructive text-xs`},{default:x(()=>[s(C(e.log.error_message||`-`),1)]),_:1}),y(c(L),null,{default:x(()=>[y(c(_),{variant:`ghost`,size:`sm`,onClick:m[2]||=t=>n(`openDetail`,e.log.id)},{default:x(()=>[...m[8]||=[s(`详情`,-1)]]),_:1})]),_:1})]),_:1},8,[`class`]))}}),K=[{label:`1h`,value:`1h`},{label:`5h`,value:`5h`},{label:`24h`,value:`24h`},{label:`7d`,value:`7d`},{label:`30d`,value:`30d`}];function we(){let t=n(`5h`),r=n({start:``,end:``}),i=n(`all`),a=n(`all`),o=n(`all`),s=n(`all`),c=n(`all`),l=n([]),u=n([]),f=n([]),p=d(()=>r.value.start&&r.value.end&&r.value.start<r.value.end),m=d(()=>{let{start:e,end:t}=r.value;return!e||!t?``:e>=t?`结束时间须晚于开始时间`:``}),_=d(()=>{if(i.value===`all`)return f.value;let e=l.value.find(e=>e.id===i.value);if(!e)return f.value;let t=new Set(e.models.map(e=>e.name));return f.value.filter(e=>t.has(e))});function v(e){return e.includes(`T`)?`${e}:00.000Z`:`${e}T00:00:00.000Z`}function y(e){return e.includes(`T`)?`${e}:59.999Z`:`${e}T23:59:59.999Z`}let b={"1h":36e5,"5h":18e6,"24h":864e5,"7d":6048e5,"30d":2592e6};function x(){let e={};if(p.value)e.start_time=v(r.value.start),e.end_time=y(r.value.end);else{let n=b[t.value];n&&(e.start_time=new Date(Date.now()-n).toISOString())}return s.value!==`all`&&(e.api_type=s.value),i.value!==`all`&&(e.provider_id=i.value),a.value!==`all`&&(e.model=a.value),o.value!==`all`&&(e.router_key_id=o.value),c.value!==`all`&&(e.status_code=c.value),e}function S(){r.value={start:``,end:``}}async function C(){try{l.value=await g.getProviders()}catch(t){console.error(`Failed to load providers:`,t),F.error(e(t,`加载供应商列表失败`))}}async function w(){try{u.value=await g.getRouterKeys()}catch(t){console.error(`Failed to load router keys:`,t),F.error(e(t,`加载密钥列表失败`))}}async function ee(){try{let e=await g.getMetricsSummary({period:`30d`});f.value=[...new Set(e.map(e=>e.backend_model))]}catch{f.value=[]}}return h(()=>{Promise.allSettled([C(),w(),ee()])}),{PERIODS:K,period:t,dateRange:r,dateRangeError:m,providerFilter:i,modelFilter:a,keyFilter:o,apiTypeFilter:s,statusFilter:c,providers:l,routerKeys:u,filteredModelOptions:_,hasDateRange:p,clearDateRange:S,buildFilterParams:x}}var q=20,J=864e5;function Te(){let t=n([]),r=n(0),i=n(1),a=n({}),o=n(30),s=n(!1),c=n(new Set),l=n({}),u=n({}),f=n(!1),p=n(null),m=d(()=>Math.ceil(r.value/q));async function h(n){n&&(a.value=n);try{let e=await g.getLogs({page:i.value,limit:q,view:`grouped`,...a.value});t.value=e.data,r.value=e.total,c.value.clear(),l.value={},u.value={}}catch(t){console.error(`Failed to load logs:`,t),F.error(e(t,`加载日志失败`))}}function _(e){e>=1&&e<=m.value&&e!==i.value&&(i.value=e,h())}let v=n(null),y=n(!1);async function b(){try{let e=new Date(Date.now()-o.value*J).toISOString(),t=await g.deleteLogsBefore(e);s.value=!1,i.value=1,await h(),v.value=t.deleted,y.value=!0}catch(t){console.error(`Failed to cleanup logs:`,t),F.error(e(t,`清理日志失败`))}}async function x(t){let n=t.id;if(c.value.has(n)){c.value.delete(n);return}if(c.value.add(n),!l.value[n]){u.value[n]=!0;try{l.value[n]=await g.getLogChildren(n)}catch(t){console.error(`Failed to load child logs:`,t),F.error(e(t,`加载子请求失败`))}finally{u.value[n]=!1}}}async function S(t){try{p.value=await g.getLogDetail(t),f.value=!0}catch(t){console.error(`Failed to load log detail:`,t),F.error(e(t,`加载日志详情失败`))}}return{PAGE_SIZE:q,logs:t,total:r,page:i,totalPages:m,cleanupDays:o,showCleanup:s,expandedRows:c,childLogs:l,childLoading:u,logDetailOpen:f,selectedLogEntry:p,cleanupResult:v,showCleanupResult:y,loadLogs:h,goToPage:_,handleCleanup:b,toggleExpand:x,openLogDetail:S}}var Ee={class:`p-6`},De={class:`flex items-center justify-between mb-4`},Oe={class:`flex flex-wrap items-center gap-2 mb-4`},ke={class:`flex gap-1`},Ae={class:`flex items-center gap-1`},je={key:1,class:`text-xs text-destructive whitespace-nowrap`},Me={class:`bg-card rounded-lg border overflow-hidden`},Ne={class:`flex items-center justify-between mt-4`},Pe={class:`text-sm text-muted-foreground`},Fe={class:`flex items-center gap-1`},Ie={key:0,class:`px-2 text-sm text-muted-foreground`},Le={class:`mb-4`},Re={class:`space-y-3`},ze={class:`flex items-center gap-3`},Be={class:`flex justify-end`},Ve=13,He=300,Ue=7,Y=2,X=1,We=o({__name:`Logs`,setup(e){let{PERIODS:n,period:a,dateRange:o,dateRangeError:l,providerFilter:g,modelFilter:b,keyFilter:w,statusFilter:T,providers:j,routerKeys:ne,filteredModelOptions:re,clearDateRange:ie,buildFilterParams:M}=we(),{logs:P,total:F,page:B,totalPages:V,cleanupDays:H,showCleanup:U,cleanupResult:Se,showCleanupResult:W,expandedRows:G,childLogs:K,childLoading:q,logDetailOpen:J,selectedLogEntry:We,loadLogs:Ge,goToPage:Z,handleCleanup:Ke,toggleExpand:qe,openLogDetail:Je}=Te(),Ye=d(()=>{let e=V.value,t=B.value;if(e<=Ue)return Array.from({length:e},(e,t)=>t+1);let n=[X],r=Math.max(X+1,t-Y),i=Math.min(e-X,t+Y);r>X+Y&&n.push(`...`);for(let e=r;e<=i;e++)n.push(e);return i<e-Y&&n.push(`...`),n.push(e),n}),{retentionDays:Q,retentionSaving:Xe,saveRetention:Ze,loadRetention:Qe}=be(),$=null;return m([a,o,g,b,w,T],()=>{B.value=1,$&&clearTimeout($),$=setTimeout(()=>Ge(M()),He)},{deep:!0}),h(()=>{Ge(M()),Qe()}),(e,d)=>(v(),r(`div`,Ee,[i(`div`,De,[d[19]||=i(`h2`,{class:`text-lg font-semibold text-foreground`},`请求日志`,-1),y(c(_),{variant:`outline`,class:`text-destructive border-destructive hover:bg-destructive/10`,onClick:d[0]||=e=>U.value=!0},{default:x(()=>[...d[18]||=[s(` 清理日志 `,-1)]]),_:1})]),i(`div`,Oe,[i(`div`,ke,[(v(!0),r(S,null,p(c(n),e=>(v(),u(c(_),{key:e.value,variant:c(a)===e.value?`default`:`ghost`,size:`sm`,onClick:t=>a.value=e.value},{default:x(()=>[s(C(e.label),1)]),_:2},1032,[`variant`,`onClick`]))),128))]),i(`div`,Ae,[y(c(I),{type:`datetime-local`,modelValue:c(o).start,"onUpdate:modelValue":d[1]||=e=>c(o).start=e,class:`w-44`},null,8,[`modelValue`]),d[21]||=i(`span`,{class:`text-muted-foreground text-sm`},`-`,-1),y(c(I),{type:`datetime-local`,modelValue:c(o).end,"onUpdate:modelValue":d[2]||=e=>c(o).end=e,class:`w-44`},null,8,[`modelValue`]),c(o).start||c(o).end?(v(),u(c(_),{key:0,variant:`ghost`,size:`sm`,onClick:c(ie)},{default:x(()=>[...d[20]||=[s(`清除`,-1)]]),_:1},8,[`onClick`])):f(``,!0),c(l)?(v(),r(`span`,je,C(c(l)),1)):f(``,!0)]),y(c(E),{modelValue:c(g),"onUpdate:modelValue":d[3]||=e=>t(g)?g.value=e:null},{default:x(()=>[y(c(O),{class:`w-28 truncate`},{default:x(()=>[y(c(A),{placeholder:`全部供应商`})]),_:1}),y(c(D),null,{default:x(()=>[y(c(k),{value:`all`},{default:x(()=>[...d[22]||=[s(`全部供应商`,-1)]]),_:1}),(v(!0),r(S,null,p(c(j),e=>(v(),u(c(k),{key:e.id,value:e.id},{default:x(()=>[s(C(e.name),1)]),_:2},1032,[`value`]))),128))]),_:1})]),_:1},8,[`modelValue`]),y(c(E),{modelValue:c(b),"onUpdate:modelValue":d[4]||=e=>t(b)?b.value=e:null},{default:x(()=>[y(c(O),{class:`w-32 truncate`},{default:x(()=>[y(c(A),{placeholder:`全部模型`})]),_:1}),y(c(D),null,{default:x(()=>[y(c(k),{value:`all`},{default:x(()=>[...d[23]||=[s(`全部模型`,-1)]]),_:1}),(v(!0),r(S,null,p(c(re),e=>(v(),u(c(k),{key:e,value:e},{default:x(()=>[s(C(e),1)]),_:2},1032,[`value`]))),128))]),_:1})]),_:1},8,[`modelValue`]),y(c(E),{modelValue:c(w),"onUpdate:modelValue":d[5]||=e=>t(w)?w.value=e:null},{default:x(()=>[y(c(O),{class:`w-32 truncate`},{default:x(()=>[y(c(A),{placeholder:`全部密钥`})]),_:1}),y(c(D),null,{default:x(()=>[y(c(k),{value:`all`},{default:x(()=>[...d[24]||=[s(`全部密钥`,-1)]]),_:1}),(v(!0),r(S,null,p(c(ne),e=>(v(),u(c(k),{key:e.id,value:e.id},{default:x(()=>[s(C(e.name),1)]),_:2},1032,[`value`]))),128))]),_:1})]),_:1},8,[`modelValue`]),y(c(E),{modelValue:c(T),"onUpdate:modelValue":d[6]||=e=>t(T)?T.value=e:null},{default:x(()=>[y(c(O),{class:`w-28 truncate`},{default:x(()=>[y(c(A),{placeholder:`全部状态`})]),_:1}),y(c(D),null,{default:x(()=>[y(c(k),{value:`all`},{default:x(()=>[...d[25]||=[s(`全部状态`,-1)]]),_:1}),y(c(k),{value:`200`},{default:x(()=>[...d[26]||=[s(`200`,-1)]]),_:1}),y(c(k),{value:`non200`},{default:x(()=>[...d[27]||=[s(`非 200`,-1)]]),_:1})]),_:1})]),_:1},8,[`modelValue`])]),i(`div`,Me,[y(c(ve),null,{default:x(()=>[y(c(ye),null,{default:x(()=>[y(c(z),{class:`bg-muted`},{default:x(()=>[y(c(R),{class:`w-10`}),y(c(R),{class:`text-muted-foreground`},{default:x(()=>[...d[28]||=[s(`ID`,-1)]]),_:1}),y(c(R),{class:`text-muted-foreground`},{default:x(()=>[...d[29]||=[s(`时间`,-1)]]),_:1}),y(c(R),{class:`text-muted-foreground`},{default:x(()=>[...d[30]||=[s(`类型`,-1)]]),_:1}),y(c(R),{class:`text-muted-foreground`},{default:x(()=>[...d[31]||=[s(`模型`,-1)]]),_:1}),y(c(R),{class:`text-muted-foreground`},{default:x(()=>[...d[32]||=[s(`实际转发`,-1)]]),_:1}),y(c(R),{class:`text-muted-foreground`},{default:x(()=>[...d[33]||=[s(`状态码`,-1)]]),_:1}),y(c(R),{class:`text-muted-foreground`},{default:x(()=>[...d[34]||=[s(`延迟`,-1)]]),_:1}),y(c(R),{class:`text-muted-foreground`},{default:x(()=>[...d[35]||=[s(`流式`,-1)]]),_:1}),y(c(R),{class:`text-muted-foreground`},{default:x(()=>[...d[36]||=[s(`重试`,-1)]]),_:1}),y(c(R),{class:`text-muted-foreground`},{default:x(()=>[...d[37]||=[s(`故障转移`,-1)]]),_:1}),y(c(R),{class:`text-muted-foreground`},{default:x(()=>[...d[38]||=[s(`错误`,-1)]]),_:1}),y(c(R),{class:`text-muted-foreground`},{default:x(()=>[...d[39]||=[s(`操作`,-1)]]),_:1})]),_:1})]),_:1}),y(c(_e),null,{default:x(()=>[(v(!0),r(S,null,p(c(P),e=>(v(),r(S,{key:e.id},[y(Ce,{log:e,expanded:c(G).has(e.id),onToggleExpand:c(qe),onOpenDetail:c(Je)},null,8,[`log`,`expanded`,`onToggleExpand`,`onOpenDetail`]),c(G).has(e.id)?(v(),r(S,{key:0},[c(q)[e.id]?(v(),u(c(z),{key:0},{default:x(()=>[y(c(L),{colspan:Ve,class:`text-center py-2 pl-10`},{default:x(()=>[y(c(xe),{class:`h-4 w-32 mx-auto`})]),_:1})]),_:1})):c(K)[e.id]?.length?(v(!0),r(S,{key:1},p(c(K)[e.id],e=>(v(),u(Ce,{key:e.id,log:e,"is-child":!0,onOpenDetail:c(Je)},null,8,[`log`,`onOpenDetail`]))),128)):f(``,!0)],64)):f(``,!0)],64))),128)),c(P).length===0?(v(),u(c(z),{key:0},{default:x(()=>[y(c(L),{colspan:Ve,class:`text-center text-muted-foreground py-8`},{default:x(()=>[...d[40]||=[s(`暂无日志`,-1)]]),_:1})]),_:1})):f(``,!0)]),_:1})]),_:1})]),i(`div`,Ne,[i(`p`,Pe,` 共 `+C(c(F))+` 条,第 `+C(c(B))+` / `+C(c(V))+` 页 `,1),i(`div`,Fe,[y(c(_),{variant:`outline`,size:`sm`,onClick:d[7]||=e=>c(Z)(1),disabled:c(B)<=1},{default:x(()=>[...d[41]||=[s(`首页`,-1)]]),_:1},8,[`disabled`]),y(c(_),{variant:`outline`,size:`sm`,onClick:d[8]||=e=>c(Z)(c(B)-1),disabled:c(B)<=1},{default:x(()=>[...d[42]||=[s(`上一页`,-1)]]),_:1},8,[`disabled`]),(v(!0),r(S,null,p(Ye.value,e=>(v(),r(S,{key:e},[e===`...`?(v(),r(`span`,Ie,`...`)):(v(),u(c(_),{key:1,variant:e===c(B)?`default`:`outline`,size:`sm`,class:`min-w-8`,onClick:t=>c(Z)(e)},{default:x(()=>[s(C(e),1)]),_:2},1032,[`variant`,`onClick`]))],64))),128)),y(c(_),{variant:`outline`,size:`sm`,onClick:d[9]||=e=>c(Z)(c(B)+1),disabled:c(B)>=c(V)},{default:x(()=>[...d[43]||=[s(`下一页`,-1)]]),_:1},8,[`disabled`]),y(c(_),{variant:`outline`,size:`sm`,onClick:d[10]||=e=>c(Z)(c(V)),disabled:c(B)>=c(V)},{default:x(()=>[...d[44]||=[s(`末页`,-1)]]),_:1},8,[`disabled`])])]),y(te,{open:c(J),"onUpdate:open":d[11]||=e=>t(J)?J.value=e:null,source:`history`,"log-entry":c(We)},null,8,[`open`,`log-entry`]),y(c(se),{open:c(U),"onUpdate:open":d[15]||=e=>t(U)?U.value=e:null},{default:x(()=>[y(c(ae),null,{default:x(()=>[y(c(oe),null,{default:x(()=>[y(c(le),null,{default:x(()=>[...d[45]||=[s(`清理日志`,-1)]]),_:1})]),_:1}),d[53]||=i(`p`,{class:`text-sm text-muted-foreground`},`删除指定天数之前的日志`,-1),i(`div`,Le,[y(c(N),{class:`block text-sm font-medium text-foreground mb-1`},{default:x(()=>[...d[46]||=[s(`保留最近天数`,-1)]]),_:1}),y(c(I),{modelValue:c(H),"onUpdate:modelValue":d[12]||=e=>t(H)?H.value=e:null,modelModifiers:{number:!0},type:`number`,min:1},null,8,[`modelValue`])]),y(c(ee)),i(`div`,Re,[d[50]||=i(`div`,{class:`text-sm font-medium`},`自动清理设置`,-1),i(`div`,ze,[y(c(N),{class:`whitespace-nowrap`},{default:x(()=>[...d[47]||=[s(`保留天数`,-1)]]),_:1}),y(c(I),{type:`number`,modelValue:c(Q),"onUpdate:modelValue":d[13]||=e=>t(Q)?Q.value=e:null,modelModifiers:{number:!0},min:0,max:90,class:`w-20`},null,8,[`modelValue`]),d[48]||=i(`span`,{class:`text-xs text-muted-foreground`},`0 = 不自动清理`,-1)]),i(`div`,Be,[y(c(_),{size:`sm`,onClick:c(Ze),disabled:c(Xe)},{default:x(()=>[...d[49]||=[s(` 保存设置 `,-1)]]),_:1},8,[`onClick`,`disabled`])])]),y(c(ce),null,{default:x(()=>[y(c(_),{variant:`outline`,onClick:d[14]||=e=>U.value=!1},{default:x(()=>[...d[51]||=[s(`取消`,-1)]]),_:1}),y(c(_),{variant:`destructive`,onClick:c(Ke)},{default:x(()=>[...d[52]||=[s(`确认清理`,-1)]]),_:1},8,[`onClick`])]),_:1})]),_:1})]),_:1},8,[`open`]),y(c(de),{open:c(W),"onUpdate:open":d[17]||=e=>t(W)?W.value=e:null},{default:x(()=>[y(c(ue),null,{default:x(()=>[y(c(pe),null,{default:x(()=>[y(c(ge),null,{default:x(()=>[...d[54]||=[s(`清理完成`,-1)]]),_:1}),y(c(fe),null,{default:x(()=>[s(`已删除 `+C(c(Se))+` 条日志。`,1)]),_:1})]),_:1}),y(c(me),null,{default:x(()=>[y(c(he),{onClick:d[16]||=e=>W.value=!1},{default:x(()=>[...d[55]||=[s(`确定`,-1)]]),_:1})]),_:1})]),_:1})]),_:1},8,[`open`])]))}});export{We as default};
|
|
1
|
+
import{A as e,Ct as t,Dt as n,G as r,H as i,It as a,J as o,K as s,Pt as c,R as l,U as u,V as d,W as f,ct as p,gt as m,it as h,k as g,n as _,ot as v,q as y,r as b,yt as x,z as S,zt as C}from"./button-q9xTxPJh.js";import{t as w}from"./format-Dln15Luw.js";import{r as ee,t as te}from"./UnifiedRequestDialog-C7pEDa9D.js";import{t as T}from"./check-CccuM1Sj.js";import{a as E,i as D,n as O,r as k,t as A}from"./SelectValue-Cbbd2Xbm.js";import{t as j}from"./copy-C1a8OrYP.js";import{i as ne,n as re,r as ie,t as M}from"./TooltipTrigger-rlKo7E3A.js";import{a as ae,n as oe,o as se,r as ce,t as le}from"./dialog-B6RnMgGx.js";import{a as ue,c as de,i as fe,n as pe,r as me,s as he,t as ge}from"./alert-dialog-M3PhwD75.js";import{t as N}from"./Label-sImW5XUw.js";import{t as P}from"./badge-7WIbGMsE.js";import{n as F}from"./lib-D1G8Xa05.js";import{t as I}from"./Input-BYULYPCe.js";import{a as _e,i as L,n as R,o as ve,r as z,t as ye}from"./TableHeader-C1mpCsyo.js";import{t as B}from"./useClipboard-CBONMfzU.js";import{t as be}from"./useLogRetention-C2IbjXjr.js";var xe=o({__name:`Skeleton`,props:{class:{type:[Boolean,null,String,Object,Array]}},setup(e){let t=e;return(e,n)=>(v(),r(`div`,{"data-slot":`skeleton`,class:a(c(b)(`bg-muted rounded-md animate-pulse`,t.class))},null,2))}}),V={key:1,class:`ml-4 text-muted-foreground text-xs`},H={class:`inline-flex items-center gap-1`},U={class:`font-mono`},Se={key:2,class:`text-muted-foreground`},W={key:1,class:`text-muted-foreground`},G={key:1,class:`text-muted-foreground`},Ce=o({__name:`LogTableRow`,props:{log:{},isChild:{type:Boolean,default:!1},expanded:{type:Boolean,default:!1}},emits:[`toggleExpand`,`openDetail`],setup(e,{emit:t}){let n=t,{copied:o,copy:d}=B();function p(e){if(!e)return`未知`;try{let t=JSON.parse(e);return t.action?t.detail?`${t.action}: ${t.detail}`:t.action:e}catch{return`未知`}}return(t,m)=>(v(),u(c(z),{class:a({"bg-destructive/10":!e.isChild&&(e.log.status_code??0)>=400,"bg-muted/20":e.isChild})},{default:x(()=>[y(c(L),{class:`w-10`},{default:x(()=>[!e.isChild&&e.log.child_count?(v(),u(c(_),{key:0,variant:`ghost`,size:`xs`,onClick:m[0]||=t=>n(`toggleExpand`,e.log)},{default:x(()=>[i(`span`,{class:a([`text-xs transition-transform`,e.expanded?``:`-rotate-90`])},`▼`,2)]),_:1})):f(``,!0),e.isChild?(v(),r(`span`,V,`└`)):f(``,!0)]),_:1}),y(c(L),{class:`font-mono text-xs text-muted-foreground`,title:e.log.id},{default:x(()=>[i(`span`,H,[s(C(e.log.id.slice(0,8))+` `,1),y(c(re),null,{default:x(()=>[y(c(ne),{"delay-duration":300},{default:x(()=>[y(c(M),{"as-child":``},{default:x(()=>[y(c(_),{variant:`ghost`,size:`icon-xs`,class:`shrink-0`,onClick:m[1]||=l(t=>c(d)(e.log.id),[`stop`])},{default:x(()=>[c(o)?(v(),u(c(T),{key:0,class:`size-3 text-green-500`})):(v(),u(c(j),{key:1,class:`size-3`}))]),_:1})]),_:1}),y(c(ie),null,{default:x(()=>[...m[3]||=[s(`复制完整 ID`,-1)]]),_:1})]),_:1})]),_:1})])]),_:1},8,[`title`]),y(c(L),{class:`text-muted-foreground`},{default:x(()=>[s(C(c(w)(e.log.created_at)),1)]),_:1}),y(c(L),null,{default:x(()=>[y(c(P),{variant:e.log.api_type===`openai`?`default`:`secondary`},{default:x(()=>[s(C(e.log.api_type),1)]),_:1},8,[`variant`])]),_:1}),y(c(L),{class:`font-mono text-xs`},{default:x(()=>[s(C(e.log.model||`-`)+` `,1),!e.isChild&&e.log.original_model?(v(),u(c(P),{key:0,variant:`secondary`,class:`ml-1 text-xs`},{default:x(()=>[...m[4]||=[s(`已替换`,-1)]]),_:1})):f(``,!0)]),_:1}),y(c(L),{class:`text-xs`},{default:x(()=>[!e.isChild&&e.log.provider_id===c(`router`)?(v(),u(c(P),{key:0,variant:`secondary`,class:`text-[10px] px-1 py-0`},{default:x(()=>[s(` 代理增强:`+C(p(e.log.upstream_request)),1)]),_:1})):e.log.backend_model||e.log.provider_name?(v(),r(S,{key:1},[i(`span`,U,C(e.log.backend_model||`-`),1),m[5]||=i(`span`,{class:`text-muted-foreground`},` @ `,-1),y(c(P),{variant:`outline`,class:`text-[10px] px-1 py-0`},{default:x(()=>[s(C(e.log.provider_name||e.log.provider_id||`-`),1)]),_:1})],64)):(v(),r(`span`,Se,`-`))]),_:1}),y(c(L),null,{default:x(()=>[y(c(P),{variant:(e.log.status_code??0)<400?`default`:`destructive`},{default:x(()=>[s(C(e.log.status_code||`-`),1)]),_:1},8,[`variant`])]),_:1}),y(c(L),null,{default:x(()=>[s(C(e.log.latency_ms?e.log.latency_ms+`ms`:`-`),1)]),_:1}),y(c(L),null,{default:x(()=>[s(C(e.log.is_stream?`Yes`:`No`),1)]),_:1}),y(c(L),null,{default:x(()=>[e.log.is_retry?(v(),u(c(P),{key:0,variant:`outline`,class:`text-warning-dark border-warning`},{default:x(()=>[...m[6]||=[s(`重试`,-1)]]),_:1})):(v(),r(`span`,W,`-`))]),_:1}),y(c(L),null,{default:x(()=>[e.log.is_failover?(v(),u(c(P),{key:0,variant:`outline`,class:`text-danger-dark border-danger`},{default:x(()=>[...m[7]||=[s(`故障转移`,-1)]]),_:1})):(v(),r(`span`,G,`-`))]),_:1}),y(c(L),{class:`text-destructive text-xs`},{default:x(()=>[s(C(e.log.error_message||`-`),1)]),_:1}),y(c(L),null,{default:x(()=>[y(c(_),{variant:`ghost`,size:`sm`,onClick:m[2]||=t=>n(`openDetail`,e.log.id)},{default:x(()=>[...m[8]||=[s(`详情`,-1)]]),_:1})]),_:1})]),_:1},8,[`class`]))}}),K=[{label:`1h`,value:`1h`},{label:`5h`,value:`5h`},{label:`24h`,value:`24h`},{label:`7d`,value:`7d`},{label:`30d`,value:`30d`}];function we(){let t=n(`5h`),r=n({start:``,end:``}),i=n(`all`),a=n(`all`),o=n(`all`),s=n(`all`),c=n(`all`),l=n([]),u=n([]),f=n([]),p=d(()=>r.value.start&&r.value.end&&r.value.start<r.value.end),m=d(()=>{let{start:e,end:t}=r.value;return!e||!t?``:e>=t?`结束时间须晚于开始时间`:``}),_=d(()=>{if(i.value===`all`)return f.value;let e=l.value.find(e=>e.id===i.value);if(!e)return f.value;let t=new Set(e.models.map(e=>e.name));return f.value.filter(e=>t.has(e))});function v(e){return e.includes(`T`)?`${e}:00.000Z`:`${e}T00:00:00.000Z`}function y(e){return e.includes(`T`)?`${e}:59.999Z`:`${e}T23:59:59.999Z`}let b={"1h":36e5,"5h":18e6,"24h":864e5,"7d":6048e5,"30d":2592e6};function x(){let e={};if(p.value)e.start_time=v(r.value.start),e.end_time=y(r.value.end);else{let n=b[t.value];n&&(e.start_time=new Date(Date.now()-n).toISOString())}return s.value!==`all`&&(e.api_type=s.value),i.value!==`all`&&(e.provider_id=i.value),a.value!==`all`&&(e.model=a.value),o.value!==`all`&&(e.router_key_id=o.value),c.value!==`all`&&(e.status_code=c.value),e}function S(){r.value={start:``,end:``}}async function C(){try{l.value=await g.getProviders()}catch(t){console.error(`Failed to load providers:`,t),F.error(e(t,`加载供应商列表失败`))}}async function w(){try{u.value=await g.getRouterKeys()}catch(t){console.error(`Failed to load router keys:`,t),F.error(e(t,`加载密钥列表失败`))}}async function ee(){try{let e=await g.getMetricsSummary({period:`30d`});f.value=[...new Set(e.map(e=>e.backend_model))]}catch{f.value=[]}}return h(()=>{Promise.allSettled([C(),w(),ee()])}),{PERIODS:K,period:t,dateRange:r,dateRangeError:m,providerFilter:i,modelFilter:a,keyFilter:o,apiTypeFilter:s,statusFilter:c,providers:l,routerKeys:u,filteredModelOptions:_,hasDateRange:p,clearDateRange:S,buildFilterParams:x}}var q=20,J=864e5;function Te(){let t=n([]),r=n(0),i=n(1),a=n({}),o=n(30),s=n(!1),c=n(new Set),l=n({}),u=n({}),f=n(!1),p=n(null),m=d(()=>Math.ceil(r.value/q));async function h(n){n&&(a.value=n);try{let e=await g.getLogs({page:i.value,limit:q,view:`grouped`,...a.value});t.value=e.data,r.value=e.total,c.value.clear(),l.value={},u.value={}}catch(t){console.error(`Failed to load logs:`,t),F.error(e(t,`加载日志失败`))}}function _(e){e>=1&&e<=m.value&&e!==i.value&&(i.value=e,h())}let v=n(null),y=n(!1);async function b(){try{let e=new Date(Date.now()-o.value*J).toISOString(),t=await g.deleteLogsBefore(e);s.value=!1,i.value=1,await h(),v.value=t.deleted,y.value=!0}catch(t){console.error(`Failed to cleanup logs:`,t),F.error(e(t,`清理日志失败`))}}async function x(t){let n=t.id;if(c.value.has(n)){c.value.delete(n);return}if(c.value.add(n),!l.value[n]){u.value[n]=!0;try{l.value[n]=await g.getLogChildren(n)}catch(t){console.error(`Failed to load child logs:`,t),F.error(e(t,`加载子请求失败`))}finally{u.value[n]=!1}}}async function S(t){try{p.value=await g.getLogDetail(t),f.value=!0}catch(t){console.error(`Failed to load log detail:`,t),F.error(e(t,`加载日志详情失败`))}}return{PAGE_SIZE:q,logs:t,total:r,page:i,totalPages:m,cleanupDays:o,showCleanup:s,expandedRows:c,childLogs:l,childLoading:u,logDetailOpen:f,selectedLogEntry:p,cleanupResult:v,showCleanupResult:y,loadLogs:h,goToPage:_,handleCleanup:b,toggleExpand:x,openLogDetail:S}}var Ee={class:`p-6`},De={class:`flex items-center justify-between mb-4`},Oe={class:`flex flex-wrap items-center gap-2 mb-4`},ke={class:`flex gap-1`},Ae={class:`flex items-center gap-1`},je={key:1,class:`text-xs text-destructive whitespace-nowrap`},Me={class:`bg-card rounded-lg border overflow-hidden`},Ne={class:`flex items-center justify-between mt-4`},Pe={class:`text-sm text-muted-foreground`},Fe={class:`flex items-center gap-1`},Ie={key:0,class:`px-2 text-sm text-muted-foreground`},Le={class:`mb-4`},Re={class:`space-y-3`},ze={class:`flex items-center gap-3`},Be={class:`flex justify-end`},Ve=13,He=300,Ue=7,Y=2,X=1,We=o({__name:`Logs`,setup(e){let{PERIODS:n,period:a,dateRange:o,dateRangeError:l,providerFilter:g,modelFilter:b,keyFilter:w,statusFilter:T,providers:j,routerKeys:ne,filteredModelOptions:re,clearDateRange:ie,buildFilterParams:M}=we(),{logs:P,total:F,page:B,totalPages:V,cleanupDays:H,showCleanup:U,cleanupResult:Se,showCleanupResult:W,expandedRows:G,childLogs:K,childLoading:q,logDetailOpen:J,selectedLogEntry:We,loadLogs:Ge,goToPage:Z,handleCleanup:Ke,toggleExpand:qe,openLogDetail:Je}=Te(),Ye=d(()=>{let e=V.value,t=B.value;if(e<=Ue)return Array.from({length:e},(e,t)=>t+1);let n=[X],r=Math.max(X+1,t-Y),i=Math.min(e-X,t+Y);r>X+Y&&n.push(`...`);for(let e=r;e<=i;e++)n.push(e);return i<e-Y&&n.push(`...`),n.push(e),n}),{retentionDays:Q,retentionSaving:Xe,saveRetention:Ze,loadRetention:Qe}=be(),$=null;return m([a,o,g,b,w,T],()=>{B.value=1,$&&clearTimeout($),$=setTimeout(()=>Ge(M()),He)},{deep:!0}),h(()=>{Ge(M()),Qe()}),(e,d)=>(v(),r(`div`,Ee,[i(`div`,De,[d[19]||=i(`h2`,{class:`text-lg font-semibold text-foreground`},`请求日志`,-1),y(c(_),{variant:`outline`,class:`text-destructive border-destructive hover:bg-destructive/10`,onClick:d[0]||=e=>U.value=!0},{default:x(()=>[...d[18]||=[s(` 清理日志 `,-1)]]),_:1})]),i(`div`,Oe,[i(`div`,ke,[(v(!0),r(S,null,p(c(n),e=>(v(),u(c(_),{key:e.value,variant:c(a)===e.value?`default`:`ghost`,size:`sm`,onClick:t=>a.value=e.value},{default:x(()=>[s(C(e.label),1)]),_:2},1032,[`variant`,`onClick`]))),128))]),i(`div`,Ae,[y(c(I),{type:`datetime-local`,modelValue:c(o).start,"onUpdate:modelValue":d[1]||=e=>c(o).start=e,class:`w-44`},null,8,[`modelValue`]),d[21]||=i(`span`,{class:`text-muted-foreground text-sm`},`-`,-1),y(c(I),{type:`datetime-local`,modelValue:c(o).end,"onUpdate:modelValue":d[2]||=e=>c(o).end=e,class:`w-44`},null,8,[`modelValue`]),c(o).start||c(o).end?(v(),u(c(_),{key:0,variant:`ghost`,size:`sm`,onClick:c(ie)},{default:x(()=>[...d[20]||=[s(`清除`,-1)]]),_:1},8,[`onClick`])):f(``,!0),c(l)?(v(),r(`span`,je,C(c(l)),1)):f(``,!0)]),y(c(E),{modelValue:c(g),"onUpdate:modelValue":d[3]||=e=>t(g)?g.value=e:null},{default:x(()=>[y(c(O),{class:`w-28 truncate`},{default:x(()=>[y(c(A),{placeholder:`全部供应商`})]),_:1}),y(c(D),null,{default:x(()=>[y(c(k),{value:`all`},{default:x(()=>[...d[22]||=[s(`全部供应商`,-1)]]),_:1}),(v(!0),r(S,null,p(c(j),e=>(v(),u(c(k),{key:e.id,value:e.id},{default:x(()=>[s(C(e.name),1)]),_:2},1032,[`value`]))),128))]),_:1})]),_:1},8,[`modelValue`]),y(c(E),{modelValue:c(b),"onUpdate:modelValue":d[4]||=e=>t(b)?b.value=e:null},{default:x(()=>[y(c(O),{class:`w-32 truncate`},{default:x(()=>[y(c(A),{placeholder:`全部模型`})]),_:1}),y(c(D),null,{default:x(()=>[y(c(k),{value:`all`},{default:x(()=>[...d[23]||=[s(`全部模型`,-1)]]),_:1}),(v(!0),r(S,null,p(c(re),e=>(v(),u(c(k),{key:e,value:e},{default:x(()=>[s(C(e),1)]),_:2},1032,[`value`]))),128))]),_:1})]),_:1},8,[`modelValue`]),y(c(E),{modelValue:c(w),"onUpdate:modelValue":d[5]||=e=>t(w)?w.value=e:null},{default:x(()=>[y(c(O),{class:`w-32 truncate`},{default:x(()=>[y(c(A),{placeholder:`全部密钥`})]),_:1}),y(c(D),null,{default:x(()=>[y(c(k),{value:`all`},{default:x(()=>[...d[24]||=[s(`全部密钥`,-1)]]),_:1}),(v(!0),r(S,null,p(c(ne),e=>(v(),u(c(k),{key:e.id,value:e.id},{default:x(()=>[s(C(e.name),1)]),_:2},1032,[`value`]))),128))]),_:1})]),_:1},8,[`modelValue`]),y(c(E),{modelValue:c(T),"onUpdate:modelValue":d[6]||=e=>t(T)?T.value=e:null},{default:x(()=>[y(c(O),{class:`w-28 truncate`},{default:x(()=>[y(c(A),{placeholder:`全部状态`})]),_:1}),y(c(D),null,{default:x(()=>[y(c(k),{value:`all`},{default:x(()=>[...d[25]||=[s(`全部状态`,-1)]]),_:1}),y(c(k),{value:`200`},{default:x(()=>[...d[26]||=[s(`200`,-1)]]),_:1}),y(c(k),{value:`non200`},{default:x(()=>[...d[27]||=[s(`非 200`,-1)]]),_:1})]),_:1})]),_:1},8,[`modelValue`])]),i(`div`,Me,[y(c(ve),null,{default:x(()=>[y(c(ye),null,{default:x(()=>[y(c(z),{class:`bg-muted`},{default:x(()=>[y(c(R),{class:`w-10`}),y(c(R),{class:`text-muted-foreground`},{default:x(()=>[...d[28]||=[s(`ID`,-1)]]),_:1}),y(c(R),{class:`text-muted-foreground`},{default:x(()=>[...d[29]||=[s(`时间`,-1)]]),_:1}),y(c(R),{class:`text-muted-foreground`},{default:x(()=>[...d[30]||=[s(`类型`,-1)]]),_:1}),y(c(R),{class:`text-muted-foreground`},{default:x(()=>[...d[31]||=[s(`模型`,-1)]]),_:1}),y(c(R),{class:`text-muted-foreground`},{default:x(()=>[...d[32]||=[s(`实际转发`,-1)]]),_:1}),y(c(R),{class:`text-muted-foreground`},{default:x(()=>[...d[33]||=[s(`状态码`,-1)]]),_:1}),y(c(R),{class:`text-muted-foreground`},{default:x(()=>[...d[34]||=[s(`延迟`,-1)]]),_:1}),y(c(R),{class:`text-muted-foreground`},{default:x(()=>[...d[35]||=[s(`流式`,-1)]]),_:1}),y(c(R),{class:`text-muted-foreground`},{default:x(()=>[...d[36]||=[s(`重试`,-1)]]),_:1}),y(c(R),{class:`text-muted-foreground`},{default:x(()=>[...d[37]||=[s(`故障转移`,-1)]]),_:1}),y(c(R),{class:`text-muted-foreground`},{default:x(()=>[...d[38]||=[s(`错误`,-1)]]),_:1}),y(c(R),{class:`text-muted-foreground`},{default:x(()=>[...d[39]||=[s(`操作`,-1)]]),_:1})]),_:1})]),_:1}),y(c(_e),null,{default:x(()=>[(v(!0),r(S,null,p(c(P),e=>(v(),r(S,{key:e.id},[y(Ce,{log:e,expanded:c(G).has(e.id),onToggleExpand:c(qe),onOpenDetail:c(Je)},null,8,[`log`,`expanded`,`onToggleExpand`,`onOpenDetail`]),c(G).has(e.id)?(v(),r(S,{key:0},[c(q)[e.id]?(v(),u(c(z),{key:0},{default:x(()=>[y(c(L),{colspan:Ve,class:`text-center py-2 pl-10`},{default:x(()=>[y(c(xe),{class:`h-4 w-32 mx-auto`})]),_:1})]),_:1})):c(K)[e.id]?.length?(v(!0),r(S,{key:1},p(c(K)[e.id],e=>(v(),u(Ce,{key:e.id,log:e,"is-child":!0,onOpenDetail:c(Je)},null,8,[`log`,`onOpenDetail`]))),128)):f(``,!0)],64)):f(``,!0)],64))),128)),c(P).length===0?(v(),u(c(z),{key:0},{default:x(()=>[y(c(L),{colspan:Ve,class:`text-center text-muted-foreground py-8`},{default:x(()=>[...d[40]||=[s(`暂无日志`,-1)]]),_:1})]),_:1})):f(``,!0)]),_:1})]),_:1})]),i(`div`,Ne,[i(`p`,Pe,` 共 `+C(c(F))+` 条,第 `+C(c(B))+` / `+C(c(V))+` 页 `,1),i(`div`,Fe,[y(c(_),{variant:`outline`,size:`sm`,onClick:d[7]||=e=>c(Z)(1),disabled:c(B)<=1},{default:x(()=>[...d[41]||=[s(`首页`,-1)]]),_:1},8,[`disabled`]),y(c(_),{variant:`outline`,size:`sm`,onClick:d[8]||=e=>c(Z)(c(B)-1),disabled:c(B)<=1},{default:x(()=>[...d[42]||=[s(`上一页`,-1)]]),_:1},8,[`disabled`]),(v(!0),r(S,null,p(Ye.value,e=>(v(),r(S,{key:e},[e===`...`?(v(),r(`span`,Ie,`...`)):(v(),u(c(_),{key:1,variant:e===c(B)?`default`:`outline`,size:`sm`,class:`min-w-8`,onClick:t=>c(Z)(e)},{default:x(()=>[s(C(e),1)]),_:2},1032,[`variant`,`onClick`]))],64))),128)),y(c(_),{variant:`outline`,size:`sm`,onClick:d[9]||=e=>c(Z)(c(B)+1),disabled:c(B)>=c(V)},{default:x(()=>[...d[43]||=[s(`下一页`,-1)]]),_:1},8,[`disabled`]),y(c(_),{variant:`outline`,size:`sm`,onClick:d[10]||=e=>c(Z)(c(V)),disabled:c(B)>=c(V)},{default:x(()=>[...d[44]||=[s(`末页`,-1)]]),_:1},8,[`disabled`])])]),y(te,{open:c(J),"onUpdate:open":d[11]||=e=>t(J)?J.value=e:null,source:`history`,"log-entry":c(We)},null,8,[`open`,`log-entry`]),y(c(se),{open:c(U),"onUpdate:open":d[15]||=e=>t(U)?U.value=e:null},{default:x(()=>[y(c(ae),null,{default:x(()=>[y(c(oe),null,{default:x(()=>[y(c(le),null,{default:x(()=>[...d[45]||=[s(`清理日志`,-1)]]),_:1})]),_:1}),d[53]||=i(`p`,{class:`text-sm text-muted-foreground`},`删除指定天数之前的日志`,-1),i(`div`,Le,[y(c(N),{class:`block text-sm font-medium text-foreground mb-1`},{default:x(()=>[...d[46]||=[s(`保留最近天数`,-1)]]),_:1}),y(c(I),{modelValue:c(H),"onUpdate:modelValue":d[12]||=e=>t(H)?H.value=e:null,modelModifiers:{number:!0},type:`number`,min:1},null,8,[`modelValue`])]),y(c(ee)),i(`div`,Re,[d[50]||=i(`div`,{class:`text-sm font-medium`},`自动清理设置`,-1),i(`div`,ze,[y(c(N),{class:`whitespace-nowrap`},{default:x(()=>[...d[47]||=[s(`保留天数`,-1)]]),_:1}),y(c(I),{type:`number`,modelValue:c(Q),"onUpdate:modelValue":d[13]||=e=>t(Q)?Q.value=e:null,modelModifiers:{number:!0},min:0,max:90,class:`w-20`},null,8,[`modelValue`]),d[48]||=i(`span`,{class:`text-xs text-muted-foreground`},`0 = 不自动清理`,-1)]),i(`div`,Be,[y(c(_),{size:`sm`,onClick:c(Ze),disabled:c(Xe)},{default:x(()=>[...d[49]||=[s(` 保存设置 `,-1)]]),_:1},8,[`onClick`,`disabled`])])]),y(c(ce),null,{default:x(()=>[y(c(_),{variant:`outline`,onClick:d[14]||=e=>U.value=!1},{default:x(()=>[...d[51]||=[s(`取消`,-1)]]),_:1}),y(c(_),{variant:`destructive`,onClick:c(Ke)},{default:x(()=>[...d[52]||=[s(`确认清理`,-1)]]),_:1},8,[`onClick`])]),_:1})]),_:1})]),_:1},8,[`open`]),y(c(de),{open:c(W),"onUpdate:open":d[17]||=e=>t(W)?W.value=e:null},{default:x(()=>[y(c(ue),null,{default:x(()=>[y(c(pe),null,{default:x(()=>[y(c(ge),null,{default:x(()=>[...d[54]||=[s(`清理完成`,-1)]]),_:1}),y(c(fe),null,{default:x(()=>[s(`已删除 `+C(c(Se))+` 条日志。`,1)]),_:1})]),_:1}),y(c(me),null,{default:x(()=>[y(c(he),{onClick:d[16]||=e=>W.value=!1},{default:x(()=>[...d[55]||=[s(`确定`,-1)]]),_:1})]),_:1})]),_:1})]),_:1},8,[`open`])]))}});export{We as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{A as e,Dt as t,G as n,H as r,It as i,J as a,K as o,Pt as s,R as c,U as l,V as u,W as d,ct as f,gt as p,it as m,k as h,n as g,ot as _,q as v,yt as y,z as b,zt as x}from"./button-BLX8zWc1.js";import{b as S}from"./Teleport-BGbwtNTD.js";import{t as C}from"./arrow-down-BuK6B6yc.js";import{a as w}from"./PopperContent-B23SzU9H.js";import{t as T}from"./CascadingModelSelect-CicfrqcY.js";import{i as E,n as D,r as O,t as k}from"./TooltipTrigger-DPzNY2Sp.js";import{a as A,i as j,n as M,o as N,r as P,t as F}from"./dialog-Dsvgfiw-.js";import{a as I,c as L,i as R,n as z,o as B,r as V,s as ee,t as H}from"./alert-dialog-DgtxmV7t.js";import{t as U}from"./Label-CrHq5hrg.js";import{n as W}from"./lib-DQotd1d8.js";import{n as te,t as ne}from"./CardContent-BtAcFNMy.js";import{n as re,t as ie}from"./CardTitle-Bmwf1S5Y.js";import{t as G}from"./Input-BDbKynVD.js";import"./constants-D_0jiLjw.js";var K=S(`arrow-up`,[[`path`,{d:`m5 12 7-7 7 7`,key:`hav0vg`}],[`path`,{d:`M12 19V5`,key:`x0mq9r`}]]),q=S(`circle-question-mark`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3`,key:`1u773s`}],[`path`,{d:`M12 17h.01`,key:`p32p05`}]]),J={key:0,class:`text-sm text-destructive mt-1`},Y={class:`border rounded-lg p-3 space-y-3`},X={class:`flex items-center justify-between`},Z={class:`flex items-center gap-2`},Q={key:0,class:`inline-flex items-center rounded-full bg-orange-100 dark:bg-orange-900/30 px-2 py-0.5 text-xs font-medium text-orange-700 dark:text-orange-300`},ae={key:1,class:`text-xs text-muted-foreground`},oe={key:0,class:`text-sm text-destructive`},se={class:`flex gap-3`},ce={class:`flex-1`},le={key:0,class:`text-sm text-destructive mt-1`},ue={class:`flex-1`},de={class:`text-xs text-muted-foreground mb-1 flex items-center gap-1`},fe={key:0,class:`text-xs text-primary`},pe={class:`flex justify-end gap-1`},me={key:1,class:`flex justify-center pt-1`},he={class:`flex items-center gap-1 text-xs text-muted-foreground`},ge=a({__name:`MappingGroupFormDialog`,props:{open:{type:Boolean},editingId:{},form:{},providers:{},providerGroups:{},contextWindowMap:{}},emits:[`update:open`,`save`,`addTarget`,`removeTarget`,`moveTargetUp`,`moveTargetDown`],setup(e,{emit:a}){let u=e,m=a;function h(e){return u.form.targets[e]}function S(e){let t=`${e.provider_id}:${e.backend_model}`;return u.contextWindowMap.get(t)??2e5}function I(e){let t=h(e);if(!t?.backend_model)return u.providerGroups;let n=S(t);return u.providerGroups.map(e=>({...e,models:e.models.filter(e=>e.contextWindow>=n)})).filter(e=>e.models.length>0)}function L(e){let t=h(e);if(!t?.overflow_provider_id||!t?.overflow_model)return``;let n=S(t);if(n>=1e6)return`当前模型上下文 >= 1M,无需配置溢出模型`;let r=n>=1e3?`${n/1e3}K`:`${n}`;return`上下文超过 ${t.backend_model} 限制 (${r}) 时自动切换到 ${t.overflow_model}`}function R(e,t){let n=h(e);n&&(t?(n.overflow_provider_id=t.provider_id,n.overflow_model=t.model):(n.overflow_provider_id=void 0,n.overflow_model=void 0))}function z(){V()&&m(`save`)}let B=t({});function V(){let e={};return u.form.client_model.trim()||(e.client_model=`请输入客户端模型名称`),u.form.targets.length===0&&(e.targets=`至少添加一个目标`),u.form.targets.forEach((t,n)=>{t.provider_id||(e[`target.${n}.provider_id`]=`请选择模型`),t.backend_model||(e[`target.${n}.backend_model`]=`请选择模型`)}),B.value=e,Object.keys(e).length===0}return p(()=>u.open,e=>{e&&(B.value={})}),(t,a)=>(_(),l(s(N),{open:e.open,"onUpdate:open":a[4]||=e=>m(`update:open`,e)},{default:y(()=>[v(s(A),{class:`sm:max-w-4xl max-h-[85vh] overflow-y-auto`},{default:y(()=>[v(s(M),null,{default:y(()=>[v(s(F),null,{default:y(()=>[o(x(e.editingId?`编辑分组`:`添加分组`),1)]),_:1}),v(s(j),null,{default:y(()=>[...a[5]||=[o(`配置客户端模型到后端供应商模型的映射规则`,-1)]]),_:1})]),_:1}),r(`form`,{onSubmit:c(z,[`prevent`]),class:`space-y-4`},[r(`div`,null,[v(s(U),{class:`block text-sm font-medium text-foreground mb-1`},{default:y(()=>[...a[6]||=[o(`客户端模型`,-1)]]),_:1}),v(s(G),{modelValue:e.form.client_model,"onUpdate:modelValue":a[0]||=t=>e.form.client_model=t,type:`text`,required:``,onInput:a[1]||=e=>delete B.value.client_model},null,8,[`modelValue`]),B.value.client_model?(_(),n(`p`,J,x(B.value.client_model),1)):d(``,!0)]),r(`div`,Y,[r(`div`,X,[r(`div`,Z,[a[7]||=r(`span`,{class:`text-sm font-medium text-foreground`},`故障转移链`,-1),e.form.targets.length>1?(_(),n(`span`,Q,` 已启用 `)):(_(),n(`span`,ae,`添加多个目标启用故障转移`))]),v(s(g),{type:`button`,variant:`outline`,size:`sm`,onClick:a[2]||=e=>m(`addTarget`)},{default:y(()=>[...a[8]||=[o(`添加备选`,-1)]]),_:1})]),B.value.targets?(_(),n(`p`,oe,x(B.value.targets),1)):d(``,!0),a[14]||=r(`p`,{class:`text-xs text-muted-foreground`},`请求按顺序依次尝试,当前一个目标失败时自动切换到下一个`,-1),(_(!0),n(b,null,f(e.form.targets,(t,c)=>(_(),n(`div`,{key:c,class:`border rounded-md p-2 space-y-2`},[r(`div`,{class:i([`text-xs font-medium`,c===0?`text-primary`:`text-muted-foreground`])},x(c===0?`首选`:`备选 ${c}`),3),r(`div`,se,[r(`div`,ce,[a[9]||=r(`div`,{class:`text-xs text-muted-foreground mb-1`},`模型`,-1),v(T,{providers:e.providerGroups,"model-value":{provider_id:t.provider_id,model:t.backend_model},placeholder:`选择模型...`,"onUpdate:modelValue":e=>{t.provider_id=e.provider_id,t.backend_model=e.model}},null,8,[`providers`,`model-value`,`onUpdate:modelValue`]),B.value[`target.${c}.provider_id`]||B.value[`target.${c}.backend_model`]?(_(),n(`p`,le,x(B.value[`target.${c}.provider_id`]||B.value[`target.${c}.backend_model`]),1)):d(``,!0)]),r(`div`,ue,[r(`div`,de,[a[11]||=o(` 溢出模型(可选) `,-1),v(s(D),null,{default:y(()=>[v(s(E),null,{default:y(()=>[v(s(k),{"as-child":``},{default:y(()=>[v(s(q),{class:`w-3.5 h-3.5 text-muted-foreground cursor-help`})]),_:1}),v(s(O),null,{default:y(()=>[...a[10]||=[o(`上下文超过目标模型限制时自动切换到此模型`,-1)]]),_:1})]),_:1})]),_:1})]),v(T,{providers:I(c),"model-value":t.overflow_provider_id&&t.overflow_model?{provider_id:t.overflow_provider_id,model:t.overflow_model}:void 0,placeholder:`点击选择模型...`,"onUpdate:modelValue":e=>R(c,e)},null,8,[`providers`,`model-value`,`onUpdate:modelValue`])])]),L(c)?(_(),n(`div`,fe,x(L(c)),1)):d(``,!0),r(`div`,pe,[v(s(g),{type:`button`,variant:`ghost`,size:`sm`,disabled:c===0,onClick:e=>m(`moveTargetUp`,c)},{default:y(()=>[v(s(K),{class:`w-4 h-4`})]),_:1},8,[`disabled`,`onClick`]),v(s(g),{type:`button`,variant:`ghost`,size:`sm`,disabled:c===e.form.targets.length-1,onClick:e=>m(`moveTargetDown`,c)},{default:y(()=>[v(s(C),{class:`w-4 h-4`})]),_:1},8,[`disabled`,`onClick`]),v(s(g),{type:`button`,variant:`ghost`,size:`sm`,class:`text-destructive shrink-0`,onClick:e=>m(`removeTarget`,c)},{default:y(()=>[...a[12]||=[o(`删除`,-1)]]),_:1},8,[`onClick`])]),c<e.form.targets.length-1?(_(),n(`div`,me,[r(`div`,he,[v(s(w),{class:`w-3.5 h-3.5`}),a[13]||=r(`span`,null,`失败时自动切换`,-1),v(s(w),{class:`w-3.5 h-3.5`})])])):d(``,!0)]))),128))]),v(s(P),null,{default:y(()=>[v(s(g),{type:`button`,variant:`outline`,onClick:a[3]||=e=>m(`update:open`,!1)},{default:y(()=>[...a[15]||=[o(`取消`,-1)]]),_:1}),v(s(g),{type:`submit`},{default:y(()=>[...a[16]||=[o(`保存`,-1)]]),_:1})]),_:1})],32)]),_:1})]),_:1},8,[`open`]))}}),_e=a({__name:`MappingGroupDeleteDialog`,props:{target:{}},emits:[`confirm`,`cancel`],setup(e,{emit:t}){let n=t;return(t,r)=>(_(),l(s(L),{open:!!e.target,"onUpdate:open":r[1]||=e=>{e||n(`cancel`)}},{default:y(()=>[v(s(I),null,{default:y(()=>[v(s(z),null,{default:y(()=>[v(s(H),null,{default:y(()=>[...r[2]||=[o(`确认删除`,-1)]]),_:1}),v(s(R),null,{default:y(()=>[o(`确定要删除分组「`+x(e.target?.client_model)+`」吗?`,1)]),_:1})]),_:1}),v(s(V),null,{default:y(()=>[v(s(B),null,{default:y(()=>[...r[3]||=[o(`取消`,-1)]]),_:1}),v(s(g),{variant:`destructive`,onClick:r[0]||=e=>n(`confirm`)},{default:y(()=>[...r[4]||=[o(`删除`,-1)]]),_:1})]),_:1})]),_:1})]),_:1},8,[`open`]))}}),ve={class:`p-6`},ye={class:`flex items-center justify-between mb-4`},be={class:`grid grid-cols-3 gap-4`},xe={class:`flex items-center gap-2 min-w-0`},Se={class:`flex items-center gap-1 shrink-0`},Ce={key:0,class:`mb-2`},we={class:`inline-flex items-center rounded-full bg-orange-100 dark:bg-orange-900/30 px-2 py-0.5 text-xs font-medium text-orange-700 dark:text-orange-300`},Te={class:`space-y-1 text-sm`},Ee={class:`flex items-center gap-1.5`},De={class:`font-mono`},$={class:`text-muted-foreground truncate`},Oe={class:`font-mono text-primary truncate`},ke={key:0,class:`flex items-center gap-1 pl-4 text-xs text-muted-foreground`},Ae={key:0,class:`text-xs text-muted-foreground`},je={key:0,class:`col-span-3 text-center text-muted-foreground py-12 bg-card rounded-xl border`},Me=a({__name:`ModelMappings`,setup(a){let c={client_model:``,targets:[]},p=t([]),S=t([]),C=t(!1),w=t(null),T=t(null),E=t(null),D=t({...c,targets:[]}),O=u(()=>{let e=new Map;for(let t of S.value)e.set(t.id,t.name);return e}),k=u(()=>S.value.map(e=>({provider:{id:e.id,name:e.name},models:(e.models??[]).map(e=>({name:e.name,contextWindow:e.context_window??2e5}))}))),A=u(()=>{let e=new Map;for(let t of S.value)for(let n of t.models??[])n.context_window!=null&&e.set(`${t.id}:${n.name}`,n.context_window);return e}),j=u(()=>p.value.map(e=>{let t={};try{let n=JSON.parse(e.rule);t=n.default&&!n.targets?{targets:[n.default]}:n}catch(e){console.warn(`Failed to parse mapping group rule JSON:`,e)}return{...e,parsedRule:t}}));async function M(){let t=await Promise.allSettled([h.getMappingGroups(),h.getProviders()]);t[0].status===`fulfilled`?p.value=t[0].value:console.error(`Failed to load groups:`,t[0].reason),t[1].status===`fulfilled`?S.value=t[1].value:(console.error(`Failed to load providers:`,t[1].reason),W.error(e(t[1].reason,`加载供应商失败`)))}function N(e){return S.value.find(t=>t.id===e)?.models?.[0]?.name||``}function P(){w.value=null;let e=S.value[0]?.id||``;D.value={client_model:``,targets:[{backend_model:N(e),provider_id:e}]},C.value=!0}function F(e){w.value=e.id;let t={};try{t=JSON.parse(e.rule)}catch(e){console.warn(`Failed to parse rule JSON:`,e)}let n=S.value[0]?.id||``;D.value={client_model:e.client_model,targets:Array.isArray(t.targets)?t.targets.map(e=>({backend_model:e.backend_model||``,provider_id:e.provider_id||n,overflow_provider_id:e.overflow_provider_id,overflow_model:e.overflow_model})):[{backend_model:N(n),provider_id:n}]},C.value=!0}function U(){let e=S.value[0]?.id||``;D.value.targets.push({backend_model:N(e),provider_id:e})}function G(e){D.value.targets.splice(e,1)}function K(e){if(e<=0)return;let t=D.value.targets;[t[e-1],t[e]]=[t[e],t[e-1]]}function q(e){let t=D.value.targets;e>=t.length-1||([t[e],t[e+1]]=[t[e+1],t[e]])}async function J(){try{let e=JSON.stringify({targets:D.value.targets}),t={client_model:D.value.client_model,rule:e};w.value?await h.updateMappingGroup(w.value,t):await h.createMappingGroup(t),C.value=!1,await M()}catch(t){console.error(`Failed to save mapping group:`,t),W.error(e(t,`保存分组失败`))}}async function Y(){let t=T.value;if(t){T.value=null;try{await h.deleteMappingGroup(t.id),await M()}catch(t){console.error(`Failed to delete mapping group:`,t),W.error(e(t,`删除分组失败`))}}}let X=t(null);function Z(e){E.value=e,X.value=e.id}async function Q(){let t=X.value;if(t){E.value=null,X.value=null;try{await h.toggleMappingGroup(t),await M()}catch(t){console.error(`Failed to toggle mapping group:`,t),W.error(e(t,`切换状态失败`))}}}return m(M),(e,t)=>(_(),n(`div`,ve,[r(`div`,ye,[t[4]||=r(`h2`,{class:`text-lg font-semibold text-foreground`},`模型映射`,-1),v(s(g),{onClick:P,class:`flex items-center gap-1`},{default:y(()=>[...t[3]||=[r(`svg`,{class:`w-4 h-4`,fill:`none`,stroke:`currentColor`,viewBox:`0 0 24 24`},[r(`path`,{"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`,d:`M12 4v16m8-8H4`})],-1),o(` 添加分组 `,-1)]]),_:1})]),r(`div`,be,[(_(!0),n(b,null,f(j.value,e=>(_(),l(s(te),{key:e.id,class:i({"opacity-60":!e.is_active})},{default:y(()=>[v(s(re),{class:`flex flex-row items-center justify-between gap-2 pb-2`},{default:y(()=>[r(`div`,xe,[v(s(ie),{class:`font-mono text-sm truncate`},{default:y(()=>[o(x(e.client_model),1)]),_:2},1024)]),r(`div`,Se,[v(s(g),{variant:`ghost`,size:`sm`,class:`gap-1`,onClick:t=>Z(e)},{default:y(()=>[r(`span`,{class:i([`relative inline-flex h-4 w-7 shrink-0 items-center rounded-full transition-colors`,e.is_active?`bg-primary`:`bg-input`])},[r(`span`,{class:i([`inline-block h-3 w-3 rounded-full bg-background shadow-sm transition-transform`,e.is_active?`translate-x-3.5`:`translate-x-0.5`])},null,2)],2)]),_:2},1032,[`onClick`]),v(s(g),{variant:`ghost`,size:`sm`,onClick:t=>F(e)},{default:y(()=>[...t[5]||=[o(`编辑`,-1)]]),_:1},8,[`onClick`]),v(s(g),{variant:`ghost`,size:`sm`,class:`text-destructive hover:text-destructive`,onClick:t=>T.value=e},{default:y(()=>[...t[6]||=[o(`删除`,-1)]]),_:1},8,[`onClick`])])]),_:2},1024),v(s(ne),null,{default:y(()=>[(e.parsedRule.targets||[]).length>1?(_(),n(`div`,Ce,[r(`span`,we,` 故障转移 · `+x((e.parsedRule.targets??[]).length)+` 级 `,1)])):d(``,!0),r(`div`,Te,[(_(!0),n(b,null,f(e.parsedRule.targets||[],(a,o)=>(_(),n(`div`,{key:o},[r(`div`,Ee,[r(`span`,{class:i([`text-xs shrink-0`,o===0?`text-primary font-medium`:`text-muted-foreground`])},x(o===0?`首选`:`备${o}`),3),r(`span`,De,x(a.backend_model),1),t[8]||=r(`span`,{class:`text-muted-foreground`},`/`,-1),r(`span`,$,x(O.value.get(a.provider_id)||a.provider_id),1),a.overflow_model?(_(),n(b,{key:0},[t[7]||=r(`span`,{class:`text-muted-foreground`},`→`,-1),r(`span`,Oe,x(a.overflow_model),1)],64)):d(``,!0)]),o<(e.parsedRule.targets||[]).length-1?(_(),n(`div`,ke,[...t[9]||=[r(`span`,{class:`w-3 border-t border-muted-foreground/30`},null,-1),r(`span`,null,`失败时切换`,-1)]])):d(``,!0)]))),128)),(e.parsedRule.targets||[]).length?d(``,!0):(_(),n(`div`,Ae,`无目标`))])]),_:2},1024)]),_:2},1032,[`class`]))),128)),p.value.length===0?(_(),n(`div`,je,` 暂无映射分组 `)):d(``,!0)]),v(ge,{open:C.value,"onUpdate:open":t[0]||=e=>C.value=e,"editing-id":w.value,form:D.value,providers:S.value,"provider-groups":k.value,"context-window-map":A.value,onSave:J,onAddTarget:U,onRemoveTarget:G,onMoveTargetUp:K,onMoveTargetDown:q},null,8,[`open`,`editing-id`,`form`,`providers`,`provider-groups`,`context-window-map`]),v(_e,{target:T.value,onConfirm:Y,onCancel:t[1]||=e=>T.value=null},null,8,[`target`]),v(s(L),{open:!!E.value,"onUpdate:open":t[2]||=e=>{e||(E.value=null)}},{default:y(()=>[v(s(I),null,{default:y(()=>[v(s(z),null,{default:y(()=>[v(s(H),null,{default:y(()=>[o(`确认`+x(E.value?.is_active?`禁用`:`启用`),1)]),_:1}),v(s(R),null,{default:y(()=>[o(`确定要`+x(E.value?.is_active?`禁用`:`启用`)+`映射「`+x(E.value?.client_model)+`」吗?`,1)]),_:1})]),_:1}),v(s(V),null,{default:y(()=>[v(s(B),null,{default:y(()=>[...t[10]||=[o(`取消`,-1)]]),_:1}),v(s(ee),{onClick:Q},{default:y(()=>[...t[11]||=[o(`确认`,-1)]]),_:1})]),_:1})]),_:1})]),_:1},8,[`open`])]))}});export{Me as default};
|
|
1
|
+
import{A as e,Dt as t,G as n,H as r,It as i,J as a,K as o,Pt as s,R as c,U as l,V as u,W as d,ct as f,gt as p,it as m,k as h,n as g,ot as _,q as v,yt as y,z as b,zt as x}from"./button-q9xTxPJh.js";import{b as S}from"./Teleport-CRn-gy0B.js";import{t as C}from"./arrow-down-BHq-drH-.js";import{a as w}from"./PopperContent-BoOYHCag.js";import{t as T}from"./CascadingModelSelect-CxEXwaeM.js";import{i as E,n as D,r as O,t as k}from"./TooltipTrigger-rlKo7E3A.js";import{a as A,i as j,n as M,o as N,r as P,t as F}from"./dialog-B6RnMgGx.js";import{a as I,c as L,i as R,n as z,o as B,r as V,s as ee,t as H}from"./alert-dialog-M3PhwD75.js";import{t as U}from"./Label-sImW5XUw.js";import{n as W}from"./lib-D1G8Xa05.js";import{n as te,t as ne}from"./CardContent-CpiBn1Oc.js";import{n as re,t as ie}from"./CardTitle-dwtgd_nl.js";import{t as G}from"./Input-BYULYPCe.js";import"./constants-D_0jiLjw.js";var K=S(`arrow-up`,[[`path`,{d:`m5 12 7-7 7 7`,key:`hav0vg`}],[`path`,{d:`M12 19V5`,key:`x0mq9r`}]]),q=S(`circle-question-mark`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3`,key:`1u773s`}],[`path`,{d:`M12 17h.01`,key:`p32p05`}]]),J={key:0,class:`text-sm text-destructive mt-1`},Y={class:`border rounded-lg p-3 space-y-3`},X={class:`flex items-center justify-between`},Z={class:`flex items-center gap-2`},Q={key:0,class:`inline-flex items-center rounded-full bg-orange-100 dark:bg-orange-900/30 px-2 py-0.5 text-xs font-medium text-orange-700 dark:text-orange-300`},ae={key:1,class:`text-xs text-muted-foreground`},oe={key:0,class:`text-sm text-destructive`},se={class:`flex gap-3`},ce={class:`flex-1`},le={key:0,class:`text-sm text-destructive mt-1`},ue={class:`flex-1`},de={class:`text-xs text-muted-foreground mb-1 flex items-center gap-1`},fe={key:0,class:`text-xs text-primary`},pe={class:`flex justify-end gap-1`},me={key:1,class:`flex justify-center pt-1`},he={class:`flex items-center gap-1 text-xs text-muted-foreground`},ge=a({__name:`MappingGroupFormDialog`,props:{open:{type:Boolean},editingId:{},form:{},providers:{},providerGroups:{},contextWindowMap:{}},emits:[`update:open`,`save`,`addTarget`,`removeTarget`,`moveTargetUp`,`moveTargetDown`],setup(e,{emit:a}){let u=e,m=a;function h(e){return u.form.targets[e]}function S(e){let t=`${e.provider_id}:${e.backend_model}`;return u.contextWindowMap.get(t)??2e5}function I(e){let t=h(e);if(!t?.backend_model)return u.providerGroups;let n=S(t);return u.providerGroups.map(e=>({...e,models:e.models.filter(e=>e.contextWindow>=n)})).filter(e=>e.models.length>0)}function L(e){let t=h(e);if(!t?.overflow_provider_id||!t?.overflow_model)return``;let n=S(t);if(n>=1e6)return`当前模型上下文 >= 1M,无需配置溢出模型`;let r=n>=1e3?`${n/1e3}K`:`${n}`;return`上下文超过 ${t.backend_model} 限制 (${r}) 时自动切换到 ${t.overflow_model}`}function R(e,t){let n=h(e);n&&(t?(n.overflow_provider_id=t.provider_id,n.overflow_model=t.model):(n.overflow_provider_id=void 0,n.overflow_model=void 0))}function z(){V()&&m(`save`)}let B=t({});function V(){let e={};return u.form.client_model.trim()||(e.client_model=`请输入客户端模型名称`),u.form.targets.length===0&&(e.targets=`至少添加一个目标`),u.form.targets.forEach((t,n)=>{t.provider_id||(e[`target.${n}.provider_id`]=`请选择模型`),t.backend_model||(e[`target.${n}.backend_model`]=`请选择模型`)}),B.value=e,Object.keys(e).length===0}return p(()=>u.open,e=>{e&&(B.value={})}),(t,a)=>(_(),l(s(N),{open:e.open,"onUpdate:open":a[4]||=e=>m(`update:open`,e)},{default:y(()=>[v(s(A),{class:`sm:max-w-4xl max-h-[85vh] overflow-y-auto`},{default:y(()=>[v(s(M),null,{default:y(()=>[v(s(F),null,{default:y(()=>[o(x(e.editingId?`编辑分组`:`添加分组`),1)]),_:1}),v(s(j),null,{default:y(()=>[...a[5]||=[o(`配置客户端模型到后端供应商模型的映射规则`,-1)]]),_:1})]),_:1}),r(`form`,{onSubmit:c(z,[`prevent`]),class:`space-y-4`},[r(`div`,null,[v(s(U),{class:`block text-sm font-medium text-foreground mb-1`},{default:y(()=>[...a[6]||=[o(`客户端模型`,-1)]]),_:1}),v(s(G),{modelValue:e.form.client_model,"onUpdate:modelValue":a[0]||=t=>e.form.client_model=t,type:`text`,required:``,onInput:a[1]||=e=>delete B.value.client_model},null,8,[`modelValue`]),B.value.client_model?(_(),n(`p`,J,x(B.value.client_model),1)):d(``,!0)]),r(`div`,Y,[r(`div`,X,[r(`div`,Z,[a[7]||=r(`span`,{class:`text-sm font-medium text-foreground`},`故障转移链`,-1),e.form.targets.length>1?(_(),n(`span`,Q,` 已启用 `)):(_(),n(`span`,ae,`添加多个目标启用故障转移`))]),v(s(g),{type:`button`,variant:`outline`,size:`sm`,onClick:a[2]||=e=>m(`addTarget`)},{default:y(()=>[...a[8]||=[o(`添加备选`,-1)]]),_:1})]),B.value.targets?(_(),n(`p`,oe,x(B.value.targets),1)):d(``,!0),a[14]||=r(`p`,{class:`text-xs text-muted-foreground`},`请求按顺序依次尝试,当前一个目标失败时自动切换到下一个`,-1),(_(!0),n(b,null,f(e.form.targets,(t,c)=>(_(),n(`div`,{key:c,class:`border rounded-md p-2 space-y-2`},[r(`div`,{class:i([`text-xs font-medium`,c===0?`text-primary`:`text-muted-foreground`])},x(c===0?`首选`:`备选 ${c}`),3),r(`div`,se,[r(`div`,ce,[a[9]||=r(`div`,{class:`text-xs text-muted-foreground mb-1`},`模型`,-1),v(T,{providers:e.providerGroups,"model-value":{provider_id:t.provider_id,model:t.backend_model},placeholder:`选择模型...`,"onUpdate:modelValue":e=>{t.provider_id=e.provider_id,t.backend_model=e.model}},null,8,[`providers`,`model-value`,`onUpdate:modelValue`]),B.value[`target.${c}.provider_id`]||B.value[`target.${c}.backend_model`]?(_(),n(`p`,le,x(B.value[`target.${c}.provider_id`]||B.value[`target.${c}.backend_model`]),1)):d(``,!0)]),r(`div`,ue,[r(`div`,de,[a[11]||=o(` 溢出模型(可选) `,-1),v(s(D),null,{default:y(()=>[v(s(E),null,{default:y(()=>[v(s(k),{"as-child":``},{default:y(()=>[v(s(q),{class:`w-3.5 h-3.5 text-muted-foreground cursor-help`})]),_:1}),v(s(O),null,{default:y(()=>[...a[10]||=[o(`上下文超过目标模型限制时自动切换到此模型`,-1)]]),_:1})]),_:1})]),_:1})]),v(T,{providers:I(c),"model-value":t.overflow_provider_id&&t.overflow_model?{provider_id:t.overflow_provider_id,model:t.overflow_model}:void 0,placeholder:`点击选择模型...`,"onUpdate:modelValue":e=>R(c,e)},null,8,[`providers`,`model-value`,`onUpdate:modelValue`])])]),L(c)?(_(),n(`div`,fe,x(L(c)),1)):d(``,!0),r(`div`,pe,[v(s(g),{type:`button`,variant:`ghost`,size:`sm`,disabled:c===0,onClick:e=>m(`moveTargetUp`,c)},{default:y(()=>[v(s(K),{class:`w-4 h-4`})]),_:1},8,[`disabled`,`onClick`]),v(s(g),{type:`button`,variant:`ghost`,size:`sm`,disabled:c===e.form.targets.length-1,onClick:e=>m(`moveTargetDown`,c)},{default:y(()=>[v(s(C),{class:`w-4 h-4`})]),_:1},8,[`disabled`,`onClick`]),v(s(g),{type:`button`,variant:`ghost`,size:`sm`,class:`text-destructive shrink-0`,onClick:e=>m(`removeTarget`,c)},{default:y(()=>[...a[12]||=[o(`删除`,-1)]]),_:1},8,[`onClick`])]),c<e.form.targets.length-1?(_(),n(`div`,me,[r(`div`,he,[v(s(w),{class:`w-3.5 h-3.5`}),a[13]||=r(`span`,null,`失败时自动切换`,-1),v(s(w),{class:`w-3.5 h-3.5`})])])):d(``,!0)]))),128))]),v(s(P),null,{default:y(()=>[v(s(g),{type:`button`,variant:`outline`,onClick:a[3]||=e=>m(`update:open`,!1)},{default:y(()=>[...a[15]||=[o(`取消`,-1)]]),_:1}),v(s(g),{type:`submit`},{default:y(()=>[...a[16]||=[o(`保存`,-1)]]),_:1})]),_:1})],32)]),_:1})]),_:1},8,[`open`]))}}),_e=a({__name:`MappingGroupDeleteDialog`,props:{target:{}},emits:[`confirm`,`cancel`],setup(e,{emit:t}){let n=t;return(t,r)=>(_(),l(s(L),{open:!!e.target,"onUpdate:open":r[1]||=e=>{e||n(`cancel`)}},{default:y(()=>[v(s(I),null,{default:y(()=>[v(s(z),null,{default:y(()=>[v(s(H),null,{default:y(()=>[...r[2]||=[o(`确认删除`,-1)]]),_:1}),v(s(R),null,{default:y(()=>[o(`确定要删除分组「`+x(e.target?.client_model)+`」吗?`,1)]),_:1})]),_:1}),v(s(V),null,{default:y(()=>[v(s(B),null,{default:y(()=>[...r[3]||=[o(`取消`,-1)]]),_:1}),v(s(g),{variant:`destructive`,onClick:r[0]||=e=>n(`confirm`)},{default:y(()=>[...r[4]||=[o(`删除`,-1)]]),_:1})]),_:1})]),_:1})]),_:1},8,[`open`]))}}),ve={class:`p-6`},ye={class:`flex items-center justify-between mb-4`},be={class:`grid grid-cols-3 gap-4`},xe={class:`flex items-center gap-2 min-w-0`},Se={class:`flex items-center gap-1 shrink-0`},Ce={key:0,class:`mb-2`},we={class:`inline-flex items-center rounded-full bg-orange-100 dark:bg-orange-900/30 px-2 py-0.5 text-xs font-medium text-orange-700 dark:text-orange-300`},Te={class:`space-y-1 text-sm`},Ee={class:`flex items-center gap-1.5`},De={class:`font-mono`},$={class:`text-muted-foreground truncate`},Oe={class:`font-mono text-primary truncate`},ke={key:0,class:`flex items-center gap-1 pl-4 text-xs text-muted-foreground`},Ae={key:0,class:`text-xs text-muted-foreground`},je={key:0,class:`col-span-3 text-center text-muted-foreground py-12 bg-card rounded-xl border`},Me=a({__name:`ModelMappings`,setup(a){let c={client_model:``,targets:[]},p=t([]),S=t([]),C=t(!1),w=t(null),T=t(null),E=t(null),D=t({...c,targets:[]}),O=u(()=>{let e=new Map;for(let t of S.value)e.set(t.id,t.name);return e}),k=u(()=>S.value.map(e=>({provider:{id:e.id,name:e.name},models:(e.models??[]).map(e=>({name:e.name,contextWindow:e.context_window??2e5}))}))),A=u(()=>{let e=new Map;for(let t of S.value)for(let n of t.models??[])n.context_window!=null&&e.set(`${t.id}:${n.name}`,n.context_window);return e}),j=u(()=>p.value.map(e=>{let t={};try{let n=JSON.parse(e.rule);t=n.default&&!n.targets?{targets:[n.default]}:n}catch(e){console.warn(`Failed to parse mapping group rule JSON:`,e)}return{...e,parsedRule:t}}));async function M(){let t=await Promise.allSettled([h.getMappingGroups(),h.getProviders()]);t[0].status===`fulfilled`?p.value=t[0].value:console.error(`Failed to load groups:`,t[0].reason),t[1].status===`fulfilled`?S.value=t[1].value:(console.error(`Failed to load providers:`,t[1].reason),W.error(e(t[1].reason,`加载供应商失败`)))}function N(e){return S.value.find(t=>t.id===e)?.models?.[0]?.name||``}function P(){w.value=null;let e=S.value[0]?.id||``;D.value={client_model:``,targets:[{backend_model:N(e),provider_id:e}]},C.value=!0}function F(e){w.value=e.id;let t={};try{t=JSON.parse(e.rule)}catch(e){console.warn(`Failed to parse rule JSON:`,e)}let n=S.value[0]?.id||``;D.value={client_model:e.client_model,targets:Array.isArray(t.targets)?t.targets.map(e=>({backend_model:e.backend_model||``,provider_id:e.provider_id||n,overflow_provider_id:e.overflow_provider_id,overflow_model:e.overflow_model})):[{backend_model:N(n),provider_id:n}]},C.value=!0}function U(){let e=S.value[0]?.id||``;D.value.targets.push({backend_model:N(e),provider_id:e})}function G(e){D.value.targets.splice(e,1)}function K(e){if(e<=0)return;let t=D.value.targets;[t[e-1],t[e]]=[t[e],t[e-1]]}function q(e){let t=D.value.targets;e>=t.length-1||([t[e],t[e+1]]=[t[e+1],t[e]])}async function J(){try{let e=JSON.stringify({targets:D.value.targets}),t={client_model:D.value.client_model,rule:e};w.value?await h.updateMappingGroup(w.value,t):await h.createMappingGroup(t),C.value=!1,await M()}catch(t){console.error(`Failed to save mapping group:`,t),W.error(e(t,`保存分组失败`))}}async function Y(){let t=T.value;if(t){T.value=null;try{await h.deleteMappingGroup(t.id),await M()}catch(t){console.error(`Failed to delete mapping group:`,t),W.error(e(t,`删除分组失败`))}}}let X=t(null);function Z(e){E.value=e,X.value=e.id}async function Q(){let t=X.value;if(t){E.value=null,X.value=null;try{await h.toggleMappingGroup(t),await M()}catch(t){console.error(`Failed to toggle mapping group:`,t),W.error(e(t,`切换状态失败`))}}}return m(M),(e,t)=>(_(),n(`div`,ve,[r(`div`,ye,[t[4]||=r(`h2`,{class:`text-lg font-semibold text-foreground`},`模型映射`,-1),v(s(g),{onClick:P,class:`flex items-center gap-1`},{default:y(()=>[...t[3]||=[r(`svg`,{class:`w-4 h-4`,fill:`none`,stroke:`currentColor`,viewBox:`0 0 24 24`},[r(`path`,{"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`,d:`M12 4v16m8-8H4`})],-1),o(` 添加分组 `,-1)]]),_:1})]),r(`div`,be,[(_(!0),n(b,null,f(j.value,e=>(_(),l(s(te),{key:e.id,class:i({"opacity-60":!e.is_active})},{default:y(()=>[v(s(re),{class:`flex flex-row items-center justify-between gap-2 pb-2`},{default:y(()=>[r(`div`,xe,[v(s(ie),{class:`font-mono text-sm truncate`},{default:y(()=>[o(x(e.client_model),1)]),_:2},1024)]),r(`div`,Se,[v(s(g),{variant:`ghost`,size:`sm`,class:`gap-1`,onClick:t=>Z(e)},{default:y(()=>[r(`span`,{class:i([`relative inline-flex h-4 w-7 shrink-0 items-center rounded-full transition-colors`,e.is_active?`bg-primary`:`bg-input`])},[r(`span`,{class:i([`inline-block h-3 w-3 rounded-full bg-background shadow-sm transition-transform`,e.is_active?`translate-x-3.5`:`translate-x-0.5`])},null,2)],2)]),_:2},1032,[`onClick`]),v(s(g),{variant:`ghost`,size:`sm`,onClick:t=>F(e)},{default:y(()=>[...t[5]||=[o(`编辑`,-1)]]),_:1},8,[`onClick`]),v(s(g),{variant:`ghost`,size:`sm`,class:`text-destructive hover:text-destructive`,onClick:t=>T.value=e},{default:y(()=>[...t[6]||=[o(`删除`,-1)]]),_:1},8,[`onClick`])])]),_:2},1024),v(s(ne),null,{default:y(()=>[(e.parsedRule.targets||[]).length>1?(_(),n(`div`,Ce,[r(`span`,we,` 故障转移 · `+x((e.parsedRule.targets??[]).length)+` 级 `,1)])):d(``,!0),r(`div`,Te,[(_(!0),n(b,null,f(e.parsedRule.targets||[],(a,o)=>(_(),n(`div`,{key:o},[r(`div`,Ee,[r(`span`,{class:i([`text-xs shrink-0`,o===0?`text-primary font-medium`:`text-muted-foreground`])},x(o===0?`首选`:`备${o}`),3),r(`span`,De,x(a.backend_model),1),t[8]||=r(`span`,{class:`text-muted-foreground`},`/`,-1),r(`span`,$,x(O.value.get(a.provider_id)||a.provider_id),1),a.overflow_model?(_(),n(b,{key:0},[t[7]||=r(`span`,{class:`text-muted-foreground`},`→`,-1),r(`span`,Oe,x(a.overflow_model),1)],64)):d(``,!0)]),o<(e.parsedRule.targets||[]).length-1?(_(),n(`div`,ke,[...t[9]||=[r(`span`,{class:`w-3 border-t border-muted-foreground/30`},null,-1),r(`span`,null,`失败时切换`,-1)]])):d(``,!0)]))),128)),(e.parsedRule.targets||[]).length?d(``,!0):(_(),n(`div`,Ae,`无目标`))])]),_:2},1024)]),_:2},1032,[`class`]))),128)),p.value.length===0?(_(),n(`div`,je,` 暂无映射分组 `)):d(``,!0)]),v(ge,{open:C.value,"onUpdate:open":t[0]||=e=>C.value=e,"editing-id":w.value,form:D.value,providers:S.value,"provider-groups":k.value,"context-window-map":A.value,onSave:J,onAddTarget:U,onRemoveTarget:G,onMoveTargetUp:K,onMoveTargetDown:q},null,8,[`open`,`editing-id`,`form`,`providers`,`provider-groups`,`context-window-map`]),v(_e,{target:T.value,onConfirm:Y,onCancel:t[1]||=e=>T.value=null},null,8,[`target`]),v(s(L),{open:!!E.value,"onUpdate:open":t[2]||=e=>{e||(E.value=null)}},{default:y(()=>[v(s(I),null,{default:y(()=>[v(s(z),null,{default:y(()=>[v(s(H),null,{default:y(()=>[o(`确认`+x(E.value?.is_active?`禁用`:`启用`),1)]),_:1}),v(s(R),null,{default:y(()=>[o(`确定要`+x(E.value?.is_active?`禁用`:`启用`)+`映射「`+x(E.value?.client_model)+`」吗?`,1)]),_:1})]),_:1}),v(s(V),null,{default:y(()=>[v(s(B),null,{default:y(()=>[...t[10]||=[o(`取消`,-1)]]),_:1}),v(s(ee),{onClick:Q},{default:y(()=>[...t[11]||=[o(`确认`,-1)]]),_:1})]),_:1})]),_:1})]),_:1},8,[`open`])]))}});export{Me as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{Ct as e,Dt as t,G as n,H as r,It as i,J as a,K as o,Pt as s,R as c,Rt as l,U as u,V as d,W as f,at as p,ct as m,gt as h,it as g,k as _,n as v,ot as y,q as b,yt as x,z as S,zt as C}from"./button-BLX8zWc1.js";import{n as w,t as ee}from"./UnifiedRequestDialog-CevmD2P2.js";import{t as T}from"./check-CsZv9cnK.js";import{t as E}from"./copy-BMWzukd1.js";import{i as D,n as O,r as k,t as A}from"./TooltipTrigger-DPzNY2Sp.js";import{t as j}from"./badge-NUBqZBxu.js";import{n as M,t as N}from"./CardContent-BtAcFNMy.js";import{n as P,t as F}from"./CardTitle-Bmwf1S5Y.js";import{a as I,i as L,n as R,o as z,r as B,t as V}from"./TableHeader-HOR173Xk.js";import{t as te}from"./useClipboard-BDAhyrgL.js";var H={class:`grid grid-cols-2 lg:grid-cols-4 gap-4 mb-6`},U={class:`text-2xl font-bold text-foreground mt-1`},W={class:`text-xs text-muted-foreground mt-1`},G={class:`text-2xl font-bold text-foreground mt-1`},K={class:`text-xs text-muted-foreground mt-1`},q={class:`text-2xl font-bold text-foreground mt-1`},ne={class:`text-xs text-muted-foreground mt-1`},re={class:`text-2xl font-bold text-foreground mt-1`},ie={class:`text-xs text-muted-foreground mt-1`},ae=a({__name:`MonitorHeader`,props:{stats:{},activeCount:{},streamCount:{}},setup(e){let t=e,i=d(()=>!t.stats||t.stats.totalRequests===0?`0.0`:(t.stats.errorCount/t.stats.totalRequests*100).toFixed(1)),a=d(()=>!t.stats||t.stats.totalRequests===0?`0.0`:(t.stats.retryCount/t.stats.totalRequests*100).toFixed(1)),o=d(()=>t.stats?t.stats.p50LatencyMs.toFixed(0):`--`);return(t,c)=>(y(),n(`div`,H,[b(s(M),null,{default:x(()=>[b(s(N),{class:`p-4`},{default:x(()=>[c[0]||=r(`p`,{class:`text-sm text-muted-foreground`},`活跃请求`,-1),r(`p`,U,C(e.activeCount),1),r(`p`,W,C(e.streamCount)+` 流式 / `+C(e.activeCount-e.streamCount)+` 非流式 `,1)]),_:1})]),_:1}),b(s(M),null,{default:x(()=>[b(s(N),{class:`p-4`},{default:x(()=>[c[1]||=r(`p`,{class:`text-sm text-muted-foreground`},`错误率`,-1),r(`p`,G,C(i.value)+`%`,1),r(`p`,K,C(e.stats?.errorCount??0)+` / `+C(e.stats?.totalRequests??0),1)]),_:1})]),_:1}),b(s(M),null,{default:x(()=>[b(s(N),{class:`p-4`},{default:x(()=>[c[2]||=r(`p`,{class:`text-sm text-muted-foreground`},`P50 延迟`,-1),r(`p`,q,C(o.value)+`ms`,1),r(`p`,ne,` 平均 `+C(e.stats?.avgLatencyMs?.toFixed(0)??`--`)+`ms `,1)]),_:1})]),_:1}),b(s(M),null,{default:x(()=>[b(s(N),{class:`p-4`},{default:x(()=>[c[3]||=r(`p`,{class:`text-sm text-muted-foreground`},`重试率`,-1),r(`p`,re,C(a.value)+`%`,1),r(`p`,ie,C(e.stats?.retryCount??0)+` / `+C(e.stats?.totalRequests??0),1)]),_:1})]),_:1})]))}}),J={class:`space-y-3`},Y={key:0,class:`text-sm text-muted-foreground`},X={class:`flex items-center justify-between text-sm`},Z={class:`font-medium text-foreground`},Q={class:`text-muted-foreground`},oe={key:0,class:`h-2 bg-muted rounded-full overflow-hidden`},se={key:1,class:`flex gap-3 text-xs text-muted-foreground`},ce=a({__name:`ConcurrencyPanel`,props:{providers:{}},setup(e){function t(e,t){let n=e/t;return n>=1?`bg-red-500`:n>=.8?`bg-orange-500`:n>=.5?`bg-yellow-500`:`bg-green-500`}return(a,s)=>(y(),n(`div`,J,[e.providers.length===0?(y(),n(`div`,Y,` 暂无并发数据 `)):f(``,!0),(y(!0),n(S,null,m(e.providers,e=>(y(),n(`div`,{key:e.providerId,class:`space-y-1`},[r(`div`,X,[r(`span`,Z,C(e.providerName),1),r(`span`,Q,[e.maxConcurrency===0?(y(),n(S,{key:0},[o(`未限制`)],64)):(y(),n(S,{key:1},[o(C(e.active)+` / `+C(e.maxConcurrency),1)],64))])]),e.maxConcurrency>0?(y(),n(`div`,oe,[r(`div`,{class:i([`h-full rounded-full transition-all duration-300`,t(e.active,e.maxConcurrency)]),style:l({width:`${Math.min(100,e.active/e.maxConcurrency*100)}%`})},null,6)])):f(``,!0),e.maxConcurrency>0?(y(),n(`div`,se,[r(`span`,null,`排队: `+C(e.queued),1),r(`span`,null,`队列上限: `+C(e.maxQueueSize),1)])):f(``,!0)]))),128))]))}}),le={key:0,class:`text-sm text-muted-foreground`},ue={key:1,class:`grid grid-cols-2 gap-3 text-sm`},de={class:`font-medium text-foreground`},fe={class:`font-medium text-foreground`},pe={class:`col-span-2`},me={class:`flex items-center justify-between`},he={class:`text-muted-foreground`},ge={class:`h-2 bg-muted rounded-full overflow-hidden mt-1`},_e={class:`font-medium text-foreground`},ve={class:`font-medium text-foreground`},ye={class:`col-span-2`},be={class:`font-medium text-foreground`},xe=a({__name:`RuntimePanel`,props:{runtime:{}},setup(e){let t=e,i=d(()=>!t.runtime||t.runtime.memoryUsage.heapTotal===0?0:Math.min(100,t.runtime.memoryUsage.heapUsed/t.runtime.memoryUsage.heapTotal*100));function a(e){let t=Math.floor(e/1e3);return`${Math.floor(t/3600)}h ${Math.floor(t%3600/60)}m ${t%60}s`}function o(e){return e<1024?`${e}B`:e<1024*1024?`${(e/1024).toFixed(1)}KB`:`${(e/(1024*1024)).toFixed(1)}MB`}return(t,s)=>e.runtime?(y(),n(`div`,ue,[r(`div`,null,[s[0]||=r(`p`,{class:`text-muted-foreground`},`运行时间`,-1),r(`p`,de,C(a(e.runtime.uptimeMs)),1)]),r(`div`,null,[s[1]||=r(`p`,{class:`text-muted-foreground`},`内存 RSS`,-1),r(`p`,fe,C(o(e.runtime.memoryUsage.rss)),1)]),r(`div`,pe,[r(`div`,me,[s[2]||=r(`p`,{class:`text-muted-foreground`},`Heap 使用`,-1),r(`p`,he,C(o(e.runtime.memoryUsage.heapUsed))+` / `+C(o(e.runtime.memoryUsage.heapTotal)),1)]),r(`div`,ge,[r(`div`,{class:`h-full bg-blue-500 rounded-full transition-all duration-300`,style:l({width:`${i.value}%`})},null,4)])]),r(`div`,null,[s[3]||=r(`p`,{class:`text-muted-foreground`},`Active Handles`,-1),r(`p`,_e,C(e.runtime.activeHandles),1)]),r(`div`,null,[s[4]||=r(`p`,{class:`text-muted-foreground`},`Active Requests`,-1),r(`p`,ve,C(e.runtime.activeRequests),1)]),r(`div`,ye,[s[5]||=r(`p`,{class:`text-muted-foreground`},`Event Loop 延迟`,-1),r(`p`,be,C(e.runtime.eventLoopDelayMs.toFixed(2))+`ms`,1)])])):(y(),n(`div`,le,`暂无运行时数据`))}}),Se={key:0,class:`text-sm text-muted-foreground`},Ce={key:1,class:`space-y-2`},we={class:`flex items-center justify-between text-sm`},Te={class:`text-muted-foreground`},Ee={class:`h-2 bg-muted rounded-full overflow-hidden`},De=a({__name:`StatusCodePanel`,props:{byStatusCode:{}},setup(e){let t=e,a=d(()=>Object.values(t.byStatusCode).reduce((e,t)=>e+t,0)),o=d(()=>{let e=t.byStatusCode,n=a.value||1,r=s(e,200,299),i=s(e,400,499)-(e[429]||0),o=e[429]||0,c=s(e,500,599);return[{label:`2xx 成功`,count:r,percent:(r/n*100).toFixed(1),textClass:`text-green-600 dark:text-green-400`,barClass:`bg-green-500`},{label:`4xx 客户端错误`,count:i,percent:(i/n*100).toFixed(1),textClass:`text-yellow-600 dark:text-yellow-400`,barClass:`bg-yellow-500`},{label:`429 限流`,count:o,percent:(o/n*100).toFixed(1),textClass:`text-orange-600 dark:text-orange-400`,barClass:`bg-orange-500`},{label:`5xx 服务端错误`,count:c,percent:(c/n*100).toFixed(1),textClass:`text-red-600 dark:text-red-400`,barClass:`bg-red-500`}].filter(e=>e.count>0)});function s(e,t,n){let r=0;for(let[i,a]of Object.entries(e)){let e=Number(i);e>=t&&e<=n&&(r+=a)}return r}return(e,t)=>a.value===0?(y(),n(`div`,Se,`暂无状态码数据`)):(y(),n(`div`,Ce,[(y(!0),n(S,null,m(o.value,e=>(y(),n(`div`,{key:e.label,class:`space-y-1`},[r(`div`,we,[r(`span`,{class:i(e.textClass)},C(e.label),3),r(`span`,Te,C(e.count)+` (`+C(e.percent)+`%) `,1)]),r(`div`,Ee,[r(`div`,{class:i([`h-full rounded-full transition-all duration-300`,e.barClass]),style:l({width:`${e.percent}%`})},null,6)])]))),128))]))}}),Oe={key:0,class:`text-sm text-muted-foreground py-4 text-center`},ke={key:1,class:`text-sm text-muted-foreground py-4 text-center`},Ae={class:`flex flex-wrap gap-1`},je={key:0,class:`text-xs text-muted-foreground`},Me=a({__name:`ProviderStatsTable`,props:{stats:{}},setup(e){let t=e,a=d(()=>t.stats?Object.entries(t.stats.byProvider).filter(([e])=>typeof e==`string`).map(([e,t])=>({id:e,name:t.providerName,stats:t,successRate:t.totalRequests>0?t.successCount/t.totalRequests*100:0,retryRate:t.totalRequests>0?t.retryCount/t.totalRequests*100:0})):[]);return(t,c)=>e.stats?a.value.length===0?(y(),n(`div`,ke,` 暂无 Provider 统计 `)):(y(),u(s(z),{key:2},{default:x(()=>[b(s(V),null,{default:x(()=>[b(s(B),null,{default:x(()=>[b(s(R),null,{default:x(()=>[...c[0]||=[o(`Provider`,-1)]]),_:1}),b(s(R),{class:`text-right`},{default:x(()=>[...c[1]||=[o(`请求数`,-1)]]),_:1}),b(s(R),{class:`text-right`},{default:x(()=>[...c[2]||=[o(`成功率`,-1)]]),_:1}),b(s(R),{class:`text-right`},{default:x(()=>[...c[3]||=[o(`平均延迟`,-1)]]),_:1}),b(s(R),{class:`text-right`},{default:x(()=>[...c[4]||=[o(`重试率`,-1)]]),_:1}),b(s(R),null,{default:x(()=>[...c[5]||=[o(`Top Errors`,-1)]]),_:1})]),_:1})]),_:1}),b(s(I),null,{default:x(()=>[(y(!0),n(S,null,m(a.value,e=>(y(),u(s(B),{key:e.id},{default:x(()=>[b(s(L),{class:`font-medium`},{default:x(()=>[o(C(e.name),1)]),_:2},1024),b(s(L),{class:`text-right`},{default:x(()=>[o(C(e.stats.totalRequests),1)]),_:2},1024),b(s(L),{class:`text-right`},{default:x(()=>[r(`span`,{class:i(e.successRate>=95?`text-green-600`:e.successRate>=80?`text-yellow-600`:`text-red-500`)},C(e.successRate.toFixed(1))+`% `,3)]),_:2},1024),b(s(L),{class:`text-right`},{default:x(()=>[o(C(e.stats.avgLatencyMs.toFixed(0))+`ms`,1)]),_:2},1024),b(s(L),{class:`text-right`},{default:x(()=>[r(`span`,{class:i(e.retryRate>10?`text-yellow-600`:``)},C(e.retryRate.toFixed(1))+`% `,3)]),_:2},1024),b(s(L),null,{default:x(()=>[r(`div`,Ae,[(y(!0),n(S,null,m(e.stats.topErrors.slice(0,3),e=>(y(),u(s(j),{key:e.code,variant:`destructive`,class:`text-xs`},{default:x(()=>[o(C(e.code)+` (`+C(e.count)+`) `,1)]),_:2},1024))),128)),e.stats.topErrors.length===0?(y(),n(`span`,je,`--`)):f(``,!0)])]),_:2},1024)]),_:2},1024))),128))]),_:1})]),_:1})):(y(),n(`div`,Oe,` 暂无数据 `))}});function Ne(e,t,n){let r=null,i=null;function a(){if(!r){r=new EventSource(e),r.onopen=()=>{n?.onOpen?.()};for(let[e,n]of Object.entries(t))r.addEventListener(e,n);r.onerror=()=>{o(),n?.onClose?.(),i=setTimeout(a,3e3)}}}function o(){i&&=(clearTimeout(i),null),r&&=(r.close(),null)}return p(()=>{o(),n?.onClose?.()}),{connect:a,disconnect:o}}var Pe=200;function Fe(){let e=t([]),n=t([]),r=t(null),i=t([]),a=t(null),o=t(!1),s=d(()=>e.value.filter(e=>e.isStream).length),c=d(()=>e.value.filter(e=>!e.queued)),l=d(()=>e.value.filter(e=>e.queued===!0));function u(t){let o;try{o=JSON.parse(t.data)}catch{return}switch(t.type){case`request_start`:{let t=o;n.value.some(e=>e.id===t.id)||e.value.unshift(t);break}case`request_update`:e.value=o;break;case`request_complete`:{let t=o;e.value=e.value.filter(e=>e.id!==t.id),n.value.unshift(t),n.value.length>Pe&&(n.value.length=Pe);break}case`concurrency_update`:i.value=o;break;case`stats_update`:r.value=o;break;case`stream_content_update`:{let t=o;for(let n of t){let t=e.value.find(e=>e.id===n.id);t&&(n.streamContent&&(t.streamContent=n.streamContent),n.streamMetrics&&(t.streamMetrics=n.streamMetrics))}break}case`runtime_update`:a.value=o;break}}function f(){o.value=!0}function p(){o.value=!1}async function m(){try{let[t,o,s,c,l]=await Promise.allSettled([_.getMonitorActive(),_.getMonitorRecent(),_.getMonitorStats(),_.getMonitorConcurrency(),_.getMonitorRuntime()]);t.status===`fulfilled`&&(e.value=t.value),o.status===`fulfilled`&&(n.value=o.value),s.status===`fulfilled`&&(r.value=s.value),c.status===`fulfilled`&&(i.value=c.value),l.status===`fulfilled`&&(a.value=l.value)}catch(e){console.error(`Failed to load initial monitor data:`,e),r.value=null,i.value=[],a.value=null}}let g=t(null),v=t(!1),y=t(0);async function b(t){let r=++y.value,i=e.value.find(e=>e.id===t)??n.value.find(e=>e.id===t);if(!i){g.value=null;return}g.value=null,v.value=!0;try{if(i.status===`pending`){try{let e=await _.getMonitorRequest(t);if(r!==y.value)return;g.value={clientRequest:e.clientRequest??void 0}}catch(e){if(e?.response?.status!==404)throw e;if(r!==y.value)return;let n=await _.getLogDetail(t);if(r!==y.value)return;g.value=n.client_request?{clientRequest:n.client_request}:null}return}let e=await _.getLogDetail(t);if(r!==y.value)return;let n;if(!i.isStream){let t=e.upstream_response;if(t)try{let e=JSON.parse(t);n=(typeof e.body==`string`?e.body:t)??void 0}catch{n=t}}g.value={responseBody:n,clientRequest:e.client_request??void 0,upstreamRequest:e.upstream_request??void 0}}catch(e){if(r!==y.value)return;console.warn(`Failed to load log detail:`,e),g.value=null}finally{r===y.value&&(v.value=!1)}}let x=t(null),S=t(!1);function C(e){x.value=e,S.value=!0,b(e)}let w=d(()=>x.value?e.value.find(e=>e.id===x.value)??n.value.find(e=>e.id===x.value)??null:null);return h(()=>w.value?.status,(e,t)=>{t===`pending`&&(e===`completed`||e===`failed`)&&b(x.value)}),{activeRequests:e,recentCompleted:n,stats:r,concurrency:i,runtime:a,connected:o,streamCount:s,streamingRequests:c,queuedRequests:l,selectedRequestId:x,selectedRequest:w,requestDetailOpen:S,selectRequest:C,logDetailData:g,nonStreamBodyLoading:v,handleSSEMessage:u,handleSSEOpen:f,handleSSEClose:p,loadInitialData:m}}function Ie(e){switch(e){case`pending`:return`default`;case`failed`:return`destructive`;case`completed`:return`secondary`;default:return`outline`}}function Le(e){switch(e){case`pending`:return`进行中`;case`failed`:return`失败`;case`completed`:return`完成`;default:return e}}var Re={class:`p-6`},ze={class:`flex items-center justify-between mb-4`},Be={class:`flex items-center gap-2`},Ve={class:`grid grid-cols-3 gap-4 mb-6`},He={class:`flex items-center justify-between`},Ue={key:0,class:`text-sm text-muted-foreground py-2`},We=[`onClick`],Ge={class:`text-sm text-foreground truncate flex-1`},Ke={class:`text-xs text-muted-foreground shrink-0`},qe={class:`flex items-center justify-between`},Je={key:0,class:`text-sm text-muted-foreground py-2`},Ye=[`onClick`],Xe={class:`text-sm text-foreground truncate flex-1`},Ze={class:`text-xs text-muted-foreground shrink-0`},Qe={class:`flex items-center justify-between`},$e={key:0,class:`text-sm text-muted-foreground py-2`},et=[`onClick`],tt={class:`text-sm text-foreground truncate flex-1`},nt={class:`text-xs text-muted-foreground shrink-0`},rt={class:`grid grid-cols-1 lg:grid-cols-3 gap-4`},$=1e3,it=a({__name:`Monitor`,setup(a){let{activeRequests:l,recentCompleted:d,stats:h,concurrency:_,runtime:I,connected:L,streamCount:R,streamingRequests:z,queuedRequests:B,selectedRequestId:V,selectedRequest:H,requestDetailOpen:U,selectRequest:W,logDetailData:G,handleSSEMessage:K,handleSSEOpen:q,handleSSEClose:ne,loadInitialData:re}=Fe(),{connect:ie}=Ne(`/admin/api/monitor/stream`,{request_start:K,request_update:K,request_complete:K,concurrency_update:K,stats_update:K,runtime_update:K,stream_content_update:K},{onOpen:q,onClose:ne}),{copied:J,copy:Y}=te(),X=t(Date.now()),Z=null;function Q(e){return((X.value-e)/$).toFixed(1)}function oe(e){return e.completedAt?((e.completedAt-e.startTime)/$).toFixed(1)+`s`:`--`}return g(async()=>{await re(),ie(),Z=setInterval(()=>{X.value=Date.now()},$)}),p(()=>{Z&&=(clearInterval(Z),null)}),(t,a)=>(y(),n(`div`,Re,[r(`div`,ze,[a[1]||=r(`h2`,{class:`text-lg font-semibold text-foreground`},`实时监控`,-1),r(`div`,Be,[b(s(j),{variant:s(L)?`default`:`destructive`},{default:x(()=>[o(C(s(L)?`已连接`:`未连接`),1)]),_:1},8,[`variant`])])]),b(ae,{stats:s(h),"active-count":s(l).length,"stream-count":s(R)},null,8,[`stats`,`active-count`,`stream-count`]),r(`div`,Ve,[b(s(M),null,{default:x(()=>[b(s(P),{class:`pb-2`},{default:x(()=>[r(`div`,He,[b(s(F),{class:`text-sm font-medium text-foreground`},{default:x(()=>[...a[2]||=[o(`活跃请求`,-1)]]),_:1}),b(s(j),{variant:`secondary`},{default:x(()=>[o(C(s(z).length),1)]),_:1})])]),_:1}),b(s(N),null,{default:x(()=>[b(s(w),{class:`h-64`},{default:x(()=>[s(z).length===0?(y(),n(`div`,Ue,` 暂无活跃请求 `)):f(``,!0),(y(!0),n(S,null,m(s(z),e=>(y(),n(`div`,{key:e.id,class:i([`flex items-center gap-2 py-2 px-2 rounded cursor-pointer hover:bg-muted/50 transition-colors`,{"bg-muted":s(V)===e.id}]),onClick:t=>s(W)(e.id)},[b(s(j),{variant:s(Ie)(e.status),class:`shrink-0`},{default:x(()=>[o(C(s(Le)(e.status)),1)]),_:2},1032,[`variant`]),r(`span`,Ge,C(e.model),1),b(s(j),{variant:`outline`,class:`shrink-0 text-xs`},{default:x(()=>[o(C(e.providerName),1)]),_:2},1024),r(`span`,Ke,C(Q(e.startTime))+`s`,1),e.isStream?(y(),u(s(j),{key:0,variant:`outline`,class:`shrink-0 text-xs`},{default:x(()=>[...a[3]||=[o(`SSE`,-1)]]),_:1})):f(``,!0),b(s(O),{"delay-duration":300},{default:x(()=>[b(s(D),null,{default:x(()=>[b(s(A),{"as-child":``},{default:x(()=>[b(s(v),{variant:`ghost`,size:`icon-xs`,class:`shrink-0`,onClick:c(t=>s(Y)(e.id),[`stop`])},{default:x(()=>[s(J)?(y(),u(s(T),{key:0,class:`size-3 text-green-500`})):(y(),u(s(E),{key:1,class:`size-3`}))]),_:1},8,[`onClick`])]),_:2},1024),b(s(k),null,{default:x(()=>[...a[4]||=[o(`复制 ID`,-1)]]),_:1})]),_:2},1024)]),_:2},1024)],10,We))),128))]),_:1})]),_:1})]),_:1}),b(s(M),null,{default:x(()=>[b(s(P),{class:`pb-2`},{default:x(()=>[r(`div`,qe,[b(s(F),{class:`text-sm font-medium text-foreground`},{default:x(()=>[...a[5]||=[o(`队列请求`,-1)]]),_:1}),b(s(j),{variant:`secondary`},{default:x(()=>[o(C(s(B).length),1)]),_:1})])]),_:1}),b(s(N),null,{default:x(()=>[b(s(w),{class:`h-64`},{default:x(()=>[s(B).length===0?(y(),n(`div`,Je,` 暂无排队请求 `)):f(``,!0),(y(!0),n(S,null,m(s(B),e=>(y(),n(`div`,{key:e.id,class:i([`flex items-center gap-2 py-2 px-2 rounded cursor-pointer hover:bg-muted/50 transition-colors`,{"bg-muted":s(V)===e.id}]),onClick:t=>s(W)(e.id)},[b(s(j),{variant:`outline`,class:`shrink-0`},{default:x(()=>[...a[6]||=[o(` 排队 `,-1)]]),_:1}),r(`span`,Xe,C(e.model),1),b(s(j),{variant:`outline`,class:`shrink-0 text-xs`},{default:x(()=>[o(C(e.providerName),1)]),_:2},1024),r(`span`,Ze,C(Q(e.startTime))+`s`,1),b(s(O),{"delay-duration":300},{default:x(()=>[b(s(D),null,{default:x(()=>[b(s(A),{"as-child":``},{default:x(()=>[b(s(v),{variant:`ghost`,size:`icon-xs`,class:`shrink-0`,onClick:c(t=>s(Y)(e.id),[`stop`])},{default:x(()=>[s(J)?(y(),u(s(T),{key:0,class:`size-3 text-green-500`})):(y(),u(s(E),{key:1,class:`size-3`}))]),_:1},8,[`onClick`])]),_:2},1024),b(s(k),null,{default:x(()=>[...a[7]||=[o(`复制 ID`,-1)]]),_:1})]),_:2},1024)]),_:2},1024)],10,Ye))),128))]),_:1})]),_:1})]),_:1}),b(s(M),null,{default:x(()=>[b(s(P),{class:`pb-2`},{default:x(()=>[r(`div`,Qe,[b(s(F),{class:`text-sm font-medium text-foreground`},{default:x(()=>[...a[8]||=[o(`已完成`,-1)]]),_:1}),b(s(j),{variant:`secondary`},{default:x(()=>[o(C(s(d).length),1)]),_:1})])]),_:1}),b(s(N),null,{default:x(()=>[b(s(w),{class:`h-64`},{default:x(()=>[s(d).length===0?(y(),n(`div`,$e,` 暂无已完成请求 `)):f(``,!0),(y(!0),n(S,null,m(s(d),e=>(y(),n(`div`,{key:e.id,class:i([`flex items-center gap-2 py-1.5 px-2 rounded cursor-pointer opacity-60 hover:opacity-80 hover:bg-muted/50 transition-colors`,{"bg-muted":s(V)===e.id}]),onClick:t=>s(W)(e.id)},[b(s(j),{variant:s(Ie)(e.status),class:`shrink-0`},{default:x(()=>[o(C(s(Le)(e.status)),1)]),_:2},1032,[`variant`]),r(`span`,tt,C(e.model),1),b(s(j),{variant:`outline`,class:`shrink-0 text-xs`},{default:x(()=>[o(C(e.providerName),1)]),_:2},1024),e.isStream?(y(),u(s(j),{key:0,variant:`outline`,class:`shrink-0 text-xs`},{default:x(()=>[...a[9]||=[o(`SSE`,-1)]]),_:1})):f(``,!0),r(`span`,nt,C(oe(e)),1),b(s(O),{"delay-duration":300},{default:x(()=>[b(s(D),null,{default:x(()=>[b(s(A),{"as-child":``},{default:x(()=>[b(s(v),{variant:`ghost`,size:`icon-xs`,class:`shrink-0`,onClick:c(t=>s(Y)(e.id),[`stop`])},{default:x(()=>[s(J)?(y(),u(s(T),{key:0,class:`size-3 text-green-500`})):(y(),u(s(E),{key:1,class:`size-3`}))]),_:1},8,[`onClick`])]),_:2},1024),b(s(k),null,{default:x(()=>[...a[10]||=[o(`复制 ID`,-1)]]),_:1})]),_:2},1024)]),_:2},1024)],10,et))),128))]),_:1})]),_:1})]),_:1})]),b(s(M),{class:`mb-4`},{default:x(()=>[b(s(P),null,{default:x(()=>[b(s(F),{class:`text-sm font-medium text-foreground`},{default:x(()=>[...a[11]||=[o(`Provider 统计`,-1)]]),_:1})]),_:1}),b(s(N),null,{default:x(()=>[b(Me,{stats:s(h)},null,8,[`stats`])]),_:1})]),_:1}),r(`div`,rt,[b(s(M),null,{default:x(()=>[b(s(P),null,{default:x(()=>[b(s(F),{class:`text-sm font-medium text-foreground`},{default:x(()=>[...a[12]||=[o(`并发度`,-1)]]),_:1})]),_:1}),b(s(N),null,{default:x(()=>[b(ce,{providers:s(_)},null,8,[`providers`])]),_:1})]),_:1}),b(s(M),null,{default:x(()=>[b(s(P),null,{default:x(()=>[b(s(F),{class:`text-sm font-medium text-foreground`},{default:x(()=>[...a[13]||=[o(`状态码分布`,-1)]]),_:1})]),_:1}),b(s(N),null,{default:x(()=>[b(De,{"by-status-code":s(h)?.byStatusCode??{}},null,8,[`by-status-code`])]),_:1})]),_:1}),b(s(M),null,{default:x(()=>[b(s(P),null,{default:x(()=>[b(s(F),{class:`text-sm font-medium text-foreground`},{default:x(()=>[...a[14]||=[o(`运行时`,-1)]]),_:1})]),_:1}),b(s(N),null,{default:x(()=>[b(xe,{runtime:s(I)},null,8,[`runtime`])]),_:1})]),_:1})]),b(ee,{open:s(U),"onUpdate:open":a[0]||=t=>e(U)?U.value=t:null,source:`realtime`,request:s(H),"stream-content":s(H)?.streamContent,"log-detail-data":s(G)},null,8,[`open`,`request`,`stream-content`,`log-detail-data`])]))}});export{it as default};
|
|
1
|
+
import{Ct as e,Dt as t,G as n,H as r,It as i,J as a,K as o,Pt as s,R as c,Rt as l,U as u,V as d,W as f,at as p,ct as m,gt as h,it as g,k as _,n as v,ot as y,q as b,yt as x,z as S,zt as C}from"./button-q9xTxPJh.js";import{n as w,t as ee}from"./UnifiedRequestDialog-C7pEDa9D.js";import{t as T}from"./check-CccuM1Sj.js";import{t as E}from"./copy-C1a8OrYP.js";import{i as D,n as O,r as k,t as A}from"./TooltipTrigger-rlKo7E3A.js";import{t as j}from"./badge-7WIbGMsE.js";import{n as M,t as N}from"./CardContent-CpiBn1Oc.js";import{n as P,t as F}from"./CardTitle-dwtgd_nl.js";import{a as I,i as L,n as R,o as z,r as B,t as V}from"./TableHeader-C1mpCsyo.js";import{t as te}from"./useClipboard-CBONMfzU.js";var H={class:`grid grid-cols-2 lg:grid-cols-4 gap-4 mb-6`},U={class:`text-2xl font-bold text-foreground mt-1`},W={class:`text-xs text-muted-foreground mt-1`},G={class:`text-2xl font-bold text-foreground mt-1`},K={class:`text-xs text-muted-foreground mt-1`},q={class:`text-2xl font-bold text-foreground mt-1`},ne={class:`text-xs text-muted-foreground mt-1`},re={class:`text-2xl font-bold text-foreground mt-1`},ie={class:`text-xs text-muted-foreground mt-1`},ae=a({__name:`MonitorHeader`,props:{stats:{},activeCount:{},streamCount:{}},setup(e){let t=e,i=d(()=>!t.stats||t.stats.totalRequests===0?`0.0`:(t.stats.errorCount/t.stats.totalRequests*100).toFixed(1)),a=d(()=>!t.stats||t.stats.totalRequests===0?`0.0`:(t.stats.retryCount/t.stats.totalRequests*100).toFixed(1)),o=d(()=>t.stats?t.stats.p50LatencyMs.toFixed(0):`--`);return(t,c)=>(y(),n(`div`,H,[b(s(M),null,{default:x(()=>[b(s(N),{class:`p-4`},{default:x(()=>[c[0]||=r(`p`,{class:`text-sm text-muted-foreground`},`活跃请求`,-1),r(`p`,U,C(e.activeCount),1),r(`p`,W,C(e.streamCount)+` 流式 / `+C(e.activeCount-e.streamCount)+` 非流式 `,1)]),_:1})]),_:1}),b(s(M),null,{default:x(()=>[b(s(N),{class:`p-4`},{default:x(()=>[c[1]||=r(`p`,{class:`text-sm text-muted-foreground`},`错误率`,-1),r(`p`,G,C(i.value)+`%`,1),r(`p`,K,C(e.stats?.errorCount??0)+` / `+C(e.stats?.totalRequests??0),1)]),_:1})]),_:1}),b(s(M),null,{default:x(()=>[b(s(N),{class:`p-4`},{default:x(()=>[c[2]||=r(`p`,{class:`text-sm text-muted-foreground`},`P50 延迟`,-1),r(`p`,q,C(o.value)+`ms`,1),r(`p`,ne,` 平均 `+C(e.stats?.avgLatencyMs?.toFixed(0)??`--`)+`ms `,1)]),_:1})]),_:1}),b(s(M),null,{default:x(()=>[b(s(N),{class:`p-4`},{default:x(()=>[c[3]||=r(`p`,{class:`text-sm text-muted-foreground`},`重试率`,-1),r(`p`,re,C(a.value)+`%`,1),r(`p`,ie,C(e.stats?.retryCount??0)+` / `+C(e.stats?.totalRequests??0),1)]),_:1})]),_:1})]))}}),J={class:`space-y-3`},Y={key:0,class:`text-sm text-muted-foreground`},X={class:`flex items-center justify-between text-sm`},Z={class:`font-medium text-foreground`},Q={class:`text-muted-foreground`},oe={key:0,class:`h-2 bg-muted rounded-full overflow-hidden`},se={key:1,class:`flex gap-3 text-xs text-muted-foreground`},ce=a({__name:`ConcurrencyPanel`,props:{providers:{}},setup(e){function t(e,t){let n=e/t;return n>=1?`bg-red-500`:n>=.8?`bg-orange-500`:n>=.5?`bg-yellow-500`:`bg-green-500`}return(a,s)=>(y(),n(`div`,J,[e.providers.length===0?(y(),n(`div`,Y,` 暂无并发数据 `)):f(``,!0),(y(!0),n(S,null,m(e.providers,e=>(y(),n(`div`,{key:e.providerId,class:`space-y-1`},[r(`div`,X,[r(`span`,Z,C(e.providerName),1),r(`span`,Q,[e.maxConcurrency===0?(y(),n(S,{key:0},[o(`未限制`)],64)):(y(),n(S,{key:1},[o(C(e.active)+` / `+C(e.maxConcurrency),1)],64))])]),e.maxConcurrency>0?(y(),n(`div`,oe,[r(`div`,{class:i([`h-full rounded-full transition-all duration-300`,t(e.active,e.maxConcurrency)]),style:l({width:`${Math.min(100,e.active/e.maxConcurrency*100)}%`})},null,6)])):f(``,!0),e.maxConcurrency>0?(y(),n(`div`,se,[r(`span`,null,`排队: `+C(e.queued),1),r(`span`,null,`队列上限: `+C(e.maxQueueSize),1)])):f(``,!0)]))),128))]))}}),le={key:0,class:`text-sm text-muted-foreground`},ue={key:1,class:`grid grid-cols-2 gap-3 text-sm`},de={class:`font-medium text-foreground`},fe={class:`font-medium text-foreground`},pe={class:`col-span-2`},me={class:`flex items-center justify-between`},he={class:`text-muted-foreground`},ge={class:`h-2 bg-muted rounded-full overflow-hidden mt-1`},_e={class:`font-medium text-foreground`},ve={class:`font-medium text-foreground`},ye={class:`col-span-2`},be={class:`font-medium text-foreground`},xe=a({__name:`RuntimePanel`,props:{runtime:{}},setup(e){let t=e,i=d(()=>!t.runtime||t.runtime.memoryUsage.heapTotal===0?0:Math.min(100,t.runtime.memoryUsage.heapUsed/t.runtime.memoryUsage.heapTotal*100));function a(e){let t=Math.floor(e/1e3);return`${Math.floor(t/3600)}h ${Math.floor(t%3600/60)}m ${t%60}s`}function o(e){return e<1024?`${e}B`:e<1024*1024?`${(e/1024).toFixed(1)}KB`:`${(e/(1024*1024)).toFixed(1)}MB`}return(t,s)=>e.runtime?(y(),n(`div`,ue,[r(`div`,null,[s[0]||=r(`p`,{class:`text-muted-foreground`},`运行时间`,-1),r(`p`,de,C(a(e.runtime.uptimeMs)),1)]),r(`div`,null,[s[1]||=r(`p`,{class:`text-muted-foreground`},`内存 RSS`,-1),r(`p`,fe,C(o(e.runtime.memoryUsage.rss)),1)]),r(`div`,pe,[r(`div`,me,[s[2]||=r(`p`,{class:`text-muted-foreground`},`Heap 使用`,-1),r(`p`,he,C(o(e.runtime.memoryUsage.heapUsed))+` / `+C(o(e.runtime.memoryUsage.heapTotal)),1)]),r(`div`,ge,[r(`div`,{class:`h-full bg-blue-500 rounded-full transition-all duration-300`,style:l({width:`${i.value}%`})},null,4)])]),r(`div`,null,[s[3]||=r(`p`,{class:`text-muted-foreground`},`Active Handles`,-1),r(`p`,_e,C(e.runtime.activeHandles),1)]),r(`div`,null,[s[4]||=r(`p`,{class:`text-muted-foreground`},`Active Requests`,-1),r(`p`,ve,C(e.runtime.activeRequests),1)]),r(`div`,ye,[s[5]||=r(`p`,{class:`text-muted-foreground`},`Event Loop 延迟`,-1),r(`p`,be,C(e.runtime.eventLoopDelayMs.toFixed(2))+`ms`,1)])])):(y(),n(`div`,le,`暂无运行时数据`))}}),Se={key:0,class:`text-sm text-muted-foreground`},Ce={key:1,class:`space-y-2`},we={class:`flex items-center justify-between text-sm`},Te={class:`text-muted-foreground`},Ee={class:`h-2 bg-muted rounded-full overflow-hidden`},De=a({__name:`StatusCodePanel`,props:{byStatusCode:{}},setup(e){let t=e,a=d(()=>Object.values(t.byStatusCode).reduce((e,t)=>e+t,0)),o=d(()=>{let e=t.byStatusCode,n=a.value||1,r=s(e,200,299),i=s(e,400,499)-(e[429]||0),o=e[429]||0,c=s(e,500,599);return[{label:`2xx 成功`,count:r,percent:(r/n*100).toFixed(1),textClass:`text-green-600 dark:text-green-400`,barClass:`bg-green-500`},{label:`4xx 客户端错误`,count:i,percent:(i/n*100).toFixed(1),textClass:`text-yellow-600 dark:text-yellow-400`,barClass:`bg-yellow-500`},{label:`429 限流`,count:o,percent:(o/n*100).toFixed(1),textClass:`text-orange-600 dark:text-orange-400`,barClass:`bg-orange-500`},{label:`5xx 服务端错误`,count:c,percent:(c/n*100).toFixed(1),textClass:`text-red-600 dark:text-red-400`,barClass:`bg-red-500`}].filter(e=>e.count>0)});function s(e,t,n){let r=0;for(let[i,a]of Object.entries(e)){let e=Number(i);e>=t&&e<=n&&(r+=a)}return r}return(e,t)=>a.value===0?(y(),n(`div`,Se,`暂无状态码数据`)):(y(),n(`div`,Ce,[(y(!0),n(S,null,m(o.value,e=>(y(),n(`div`,{key:e.label,class:`space-y-1`},[r(`div`,we,[r(`span`,{class:i(e.textClass)},C(e.label),3),r(`span`,Te,C(e.count)+` (`+C(e.percent)+`%) `,1)]),r(`div`,Ee,[r(`div`,{class:i([`h-full rounded-full transition-all duration-300`,e.barClass]),style:l({width:`${e.percent}%`})},null,6)])]))),128))]))}}),Oe={key:0,class:`text-sm text-muted-foreground py-4 text-center`},ke={key:1,class:`text-sm text-muted-foreground py-4 text-center`},Ae={class:`flex flex-wrap gap-1`},je={key:0,class:`text-xs text-muted-foreground`},Me=a({__name:`ProviderStatsTable`,props:{stats:{}},setup(e){let t=e,a=d(()=>t.stats?Object.entries(t.stats.byProvider).filter(([e])=>typeof e==`string`).map(([e,t])=>({id:e,name:t.providerName,stats:t,successRate:t.totalRequests>0?t.successCount/t.totalRequests*100:0,retryRate:t.totalRequests>0?t.retryCount/t.totalRequests*100:0})):[]);return(t,c)=>e.stats?a.value.length===0?(y(),n(`div`,ke,` 暂无 Provider 统计 `)):(y(),u(s(z),{key:2},{default:x(()=>[b(s(V),null,{default:x(()=>[b(s(B),null,{default:x(()=>[b(s(R),null,{default:x(()=>[...c[0]||=[o(`Provider`,-1)]]),_:1}),b(s(R),{class:`text-right`},{default:x(()=>[...c[1]||=[o(`请求数`,-1)]]),_:1}),b(s(R),{class:`text-right`},{default:x(()=>[...c[2]||=[o(`成功率`,-1)]]),_:1}),b(s(R),{class:`text-right`},{default:x(()=>[...c[3]||=[o(`平均延迟`,-1)]]),_:1}),b(s(R),{class:`text-right`},{default:x(()=>[...c[4]||=[o(`重试率`,-1)]]),_:1}),b(s(R),null,{default:x(()=>[...c[5]||=[o(`Top Errors`,-1)]]),_:1})]),_:1})]),_:1}),b(s(I),null,{default:x(()=>[(y(!0),n(S,null,m(a.value,e=>(y(),u(s(B),{key:e.id},{default:x(()=>[b(s(L),{class:`font-medium`},{default:x(()=>[o(C(e.name),1)]),_:2},1024),b(s(L),{class:`text-right`},{default:x(()=>[o(C(e.stats.totalRequests),1)]),_:2},1024),b(s(L),{class:`text-right`},{default:x(()=>[r(`span`,{class:i(e.successRate>=95?`text-green-600`:e.successRate>=80?`text-yellow-600`:`text-red-500`)},C(e.successRate.toFixed(1))+`% `,3)]),_:2},1024),b(s(L),{class:`text-right`},{default:x(()=>[o(C(e.stats.avgLatencyMs.toFixed(0))+`ms`,1)]),_:2},1024),b(s(L),{class:`text-right`},{default:x(()=>[r(`span`,{class:i(e.retryRate>10?`text-yellow-600`:``)},C(e.retryRate.toFixed(1))+`% `,3)]),_:2},1024),b(s(L),null,{default:x(()=>[r(`div`,Ae,[(y(!0),n(S,null,m(e.stats.topErrors.slice(0,3),e=>(y(),u(s(j),{key:e.code,variant:`destructive`,class:`text-xs`},{default:x(()=>[o(C(e.code)+` (`+C(e.count)+`) `,1)]),_:2},1024))),128)),e.stats.topErrors.length===0?(y(),n(`span`,je,`--`)):f(``,!0)])]),_:2},1024)]),_:2},1024))),128))]),_:1})]),_:1})):(y(),n(`div`,Oe,` 暂无数据 `))}});function Ne(e,t,n){let r=null,i=null;function a(){if(!r){r=new EventSource(e),r.onopen=()=>{n?.onOpen?.()};for(let[e,n]of Object.entries(t))r.addEventListener(e,n);r.onerror=()=>{o(),n?.onClose?.(),i=setTimeout(a,3e3)}}}function o(){i&&=(clearTimeout(i),null),r&&=(r.close(),null)}return p(()=>{o(),n?.onClose?.()}),{connect:a,disconnect:o}}var Pe=200;function Fe(){let e=t([]),n=t([]),r=t(null),i=t([]),a=t(null),o=t(!1),s=d(()=>e.value.filter(e=>e.isStream).length),c=d(()=>e.value.filter(e=>!e.queued)),l=d(()=>e.value.filter(e=>e.queued===!0));function u(t){let o;try{o=JSON.parse(t.data)}catch{return}switch(t.type){case`request_start`:{let t=o;n.value.some(e=>e.id===t.id)||e.value.unshift(t);break}case`request_update`:e.value=o;break;case`request_complete`:{let t=o;e.value=e.value.filter(e=>e.id!==t.id),n.value.unshift(t),n.value.length>Pe&&(n.value.length=Pe);break}case`concurrency_update`:i.value=o;break;case`stats_update`:r.value=o;break;case`stream_content_update`:{let t=o;for(let n of t){let t=e.value.find(e=>e.id===n.id);t&&(n.streamContent&&(t.streamContent=n.streamContent),n.streamMetrics&&(t.streamMetrics=n.streamMetrics))}break}case`runtime_update`:a.value=o;break}}function f(){o.value=!0}function p(){o.value=!1}async function m(){try{let[t,o,s,c,l]=await Promise.allSettled([_.getMonitorActive(),_.getMonitorRecent(),_.getMonitorStats(),_.getMonitorConcurrency(),_.getMonitorRuntime()]);t.status===`fulfilled`&&(e.value=t.value),o.status===`fulfilled`&&(n.value=o.value),s.status===`fulfilled`&&(r.value=s.value),c.status===`fulfilled`&&(i.value=c.value),l.status===`fulfilled`&&(a.value=l.value)}catch(e){console.error(`Failed to load initial monitor data:`,e),r.value=null,i.value=[],a.value=null}}let g=t(null),v=t(!1),y=t(0);async function b(t){let r=++y.value,i=e.value.find(e=>e.id===t)??n.value.find(e=>e.id===t);if(!i){g.value=null;return}g.value=null,v.value=!0;try{if(i.status===`pending`){try{let e=await _.getMonitorRequest(t);if(r!==y.value)return;g.value={clientRequest:e.clientRequest??void 0}}catch(e){if(e?.response?.status!==404)throw e;if(r!==y.value)return;let n=await _.getLogDetail(t);if(r!==y.value)return;g.value=n.client_request?{clientRequest:n.client_request}:null}return}let e=await _.getLogDetail(t);if(r!==y.value)return;let n;if(!i.isStream){let t=e.upstream_response;if(t)try{let e=JSON.parse(t);n=(typeof e.body==`string`?e.body:t)??void 0}catch{n=t}}g.value={responseBody:n,clientRequest:e.client_request??void 0,upstreamRequest:e.upstream_request??void 0}}catch(e){if(r!==y.value)return;console.warn(`Failed to load log detail:`,e),g.value=null}finally{r===y.value&&(v.value=!1)}}let x=t(null),S=t(!1);function C(e){x.value=e,S.value=!0,b(e)}let w=d(()=>x.value?e.value.find(e=>e.id===x.value)??n.value.find(e=>e.id===x.value)??null:null);return h(()=>w.value?.status,(e,t)=>{t===`pending`&&(e===`completed`||e===`failed`)&&b(x.value)}),{activeRequests:e,recentCompleted:n,stats:r,concurrency:i,runtime:a,connected:o,streamCount:s,streamingRequests:c,queuedRequests:l,selectedRequestId:x,selectedRequest:w,requestDetailOpen:S,selectRequest:C,logDetailData:g,nonStreamBodyLoading:v,handleSSEMessage:u,handleSSEOpen:f,handleSSEClose:p,loadInitialData:m}}function Ie(e){switch(e){case`pending`:return`default`;case`failed`:return`destructive`;case`completed`:return`secondary`;default:return`outline`}}function Le(e){switch(e){case`pending`:return`进行中`;case`failed`:return`失败`;case`completed`:return`完成`;default:return e}}var Re={class:`p-6`},ze={class:`flex items-center justify-between mb-4`},Be={class:`flex items-center gap-2`},Ve={class:`grid grid-cols-3 gap-4 mb-6`},He={class:`flex items-center justify-between`},Ue={key:0,class:`text-sm text-muted-foreground py-2`},We=[`onClick`],Ge={class:`text-sm text-foreground truncate flex-1`},Ke={class:`text-xs text-muted-foreground shrink-0`},qe={class:`flex items-center justify-between`},Je={key:0,class:`text-sm text-muted-foreground py-2`},Ye=[`onClick`],Xe={class:`text-sm text-foreground truncate flex-1`},Ze={class:`text-xs text-muted-foreground shrink-0`},Qe={class:`flex items-center justify-between`},$e={key:0,class:`text-sm text-muted-foreground py-2`},et=[`onClick`],tt={class:`text-sm text-foreground truncate flex-1`},nt={class:`text-xs text-muted-foreground shrink-0`},rt={class:`grid grid-cols-1 lg:grid-cols-3 gap-4`},$=1e3,it=a({__name:`Monitor`,setup(a){let{activeRequests:l,recentCompleted:d,stats:h,concurrency:_,runtime:I,connected:L,streamCount:R,streamingRequests:z,queuedRequests:B,selectedRequestId:V,selectedRequest:H,requestDetailOpen:U,selectRequest:W,logDetailData:G,handleSSEMessage:K,handleSSEOpen:q,handleSSEClose:ne,loadInitialData:re}=Fe(),{connect:ie}=Ne(`/admin/api/monitor/stream`,{request_start:K,request_update:K,request_complete:K,concurrency_update:K,stats_update:K,runtime_update:K,stream_content_update:K},{onOpen:q,onClose:ne}),{copied:J,copy:Y}=te(),X=t(Date.now()),Z=null;function Q(e){return((X.value-e)/$).toFixed(1)}function oe(e){return e.completedAt?((e.completedAt-e.startTime)/$).toFixed(1)+`s`:`--`}return g(async()=>{await re(),ie(),Z=setInterval(()=>{X.value=Date.now()},$)}),p(()=>{Z&&=(clearInterval(Z),null)}),(t,a)=>(y(),n(`div`,Re,[r(`div`,ze,[a[1]||=r(`h2`,{class:`text-lg font-semibold text-foreground`},`实时监控`,-1),r(`div`,Be,[b(s(j),{variant:s(L)?`default`:`destructive`},{default:x(()=>[o(C(s(L)?`已连接`:`未连接`),1)]),_:1},8,[`variant`])])]),b(ae,{stats:s(h),"active-count":s(l).length,"stream-count":s(R)},null,8,[`stats`,`active-count`,`stream-count`]),r(`div`,Ve,[b(s(M),null,{default:x(()=>[b(s(P),{class:`pb-2`},{default:x(()=>[r(`div`,He,[b(s(F),{class:`text-sm font-medium text-foreground`},{default:x(()=>[...a[2]||=[o(`活跃请求`,-1)]]),_:1}),b(s(j),{variant:`secondary`},{default:x(()=>[o(C(s(z).length),1)]),_:1})])]),_:1}),b(s(N),null,{default:x(()=>[b(s(w),{class:`h-64`},{default:x(()=>[s(z).length===0?(y(),n(`div`,Ue,` 暂无活跃请求 `)):f(``,!0),(y(!0),n(S,null,m(s(z),e=>(y(),n(`div`,{key:e.id,class:i([`flex items-center gap-2 py-2 px-2 rounded cursor-pointer hover:bg-muted/50 transition-colors`,{"bg-muted":s(V)===e.id}]),onClick:t=>s(W)(e.id)},[b(s(j),{variant:s(Ie)(e.status),class:`shrink-0`},{default:x(()=>[o(C(s(Le)(e.status)),1)]),_:2},1032,[`variant`]),r(`span`,Ge,C(e.model),1),b(s(j),{variant:`outline`,class:`shrink-0 text-xs`},{default:x(()=>[o(C(e.providerName),1)]),_:2},1024),r(`span`,Ke,C(Q(e.startTime))+`s`,1),e.isStream?(y(),u(s(j),{key:0,variant:`outline`,class:`shrink-0 text-xs`},{default:x(()=>[...a[3]||=[o(`SSE`,-1)]]),_:1})):f(``,!0),b(s(O),{"delay-duration":300},{default:x(()=>[b(s(D),null,{default:x(()=>[b(s(A),{"as-child":``},{default:x(()=>[b(s(v),{variant:`ghost`,size:`icon-xs`,class:`shrink-0`,onClick:c(t=>s(Y)(e.id),[`stop`])},{default:x(()=>[s(J)?(y(),u(s(T),{key:0,class:`size-3 text-green-500`})):(y(),u(s(E),{key:1,class:`size-3`}))]),_:1},8,[`onClick`])]),_:2},1024),b(s(k),null,{default:x(()=>[...a[4]||=[o(`复制 ID`,-1)]]),_:1})]),_:2},1024)]),_:2},1024)],10,We))),128))]),_:1})]),_:1})]),_:1}),b(s(M),null,{default:x(()=>[b(s(P),{class:`pb-2`},{default:x(()=>[r(`div`,qe,[b(s(F),{class:`text-sm font-medium text-foreground`},{default:x(()=>[...a[5]||=[o(`队列请求`,-1)]]),_:1}),b(s(j),{variant:`secondary`},{default:x(()=>[o(C(s(B).length),1)]),_:1})])]),_:1}),b(s(N),null,{default:x(()=>[b(s(w),{class:`h-64`},{default:x(()=>[s(B).length===0?(y(),n(`div`,Je,` 暂无排队请求 `)):f(``,!0),(y(!0),n(S,null,m(s(B),e=>(y(),n(`div`,{key:e.id,class:i([`flex items-center gap-2 py-2 px-2 rounded cursor-pointer hover:bg-muted/50 transition-colors`,{"bg-muted":s(V)===e.id}]),onClick:t=>s(W)(e.id)},[b(s(j),{variant:`outline`,class:`shrink-0`},{default:x(()=>[...a[6]||=[o(` 排队 `,-1)]]),_:1}),r(`span`,Xe,C(e.model),1),b(s(j),{variant:`outline`,class:`shrink-0 text-xs`},{default:x(()=>[o(C(e.providerName),1)]),_:2},1024),r(`span`,Ze,C(Q(e.startTime))+`s`,1),b(s(O),{"delay-duration":300},{default:x(()=>[b(s(D),null,{default:x(()=>[b(s(A),{"as-child":``},{default:x(()=>[b(s(v),{variant:`ghost`,size:`icon-xs`,class:`shrink-0`,onClick:c(t=>s(Y)(e.id),[`stop`])},{default:x(()=>[s(J)?(y(),u(s(T),{key:0,class:`size-3 text-green-500`})):(y(),u(s(E),{key:1,class:`size-3`}))]),_:1},8,[`onClick`])]),_:2},1024),b(s(k),null,{default:x(()=>[...a[7]||=[o(`复制 ID`,-1)]]),_:1})]),_:2},1024)]),_:2},1024)],10,Ye))),128))]),_:1})]),_:1})]),_:1}),b(s(M),null,{default:x(()=>[b(s(P),{class:`pb-2`},{default:x(()=>[r(`div`,Qe,[b(s(F),{class:`text-sm font-medium text-foreground`},{default:x(()=>[...a[8]||=[o(`已完成`,-1)]]),_:1}),b(s(j),{variant:`secondary`},{default:x(()=>[o(C(s(d).length),1)]),_:1})])]),_:1}),b(s(N),null,{default:x(()=>[b(s(w),{class:`h-64`},{default:x(()=>[s(d).length===0?(y(),n(`div`,$e,` 暂无已完成请求 `)):f(``,!0),(y(!0),n(S,null,m(s(d),e=>(y(),n(`div`,{key:e.id,class:i([`flex items-center gap-2 py-1.5 px-2 rounded cursor-pointer opacity-60 hover:opacity-80 hover:bg-muted/50 transition-colors`,{"bg-muted":s(V)===e.id}]),onClick:t=>s(W)(e.id)},[b(s(j),{variant:s(Ie)(e.status),class:`shrink-0`},{default:x(()=>[o(C(s(Le)(e.status)),1)]),_:2},1032,[`variant`]),r(`span`,tt,C(e.model),1),b(s(j),{variant:`outline`,class:`shrink-0 text-xs`},{default:x(()=>[o(C(e.providerName),1)]),_:2},1024),e.isStream?(y(),u(s(j),{key:0,variant:`outline`,class:`shrink-0 text-xs`},{default:x(()=>[...a[9]||=[o(`SSE`,-1)]]),_:1})):f(``,!0),r(`span`,nt,C(oe(e)),1),b(s(O),{"delay-duration":300},{default:x(()=>[b(s(D),null,{default:x(()=>[b(s(A),{"as-child":``},{default:x(()=>[b(s(v),{variant:`ghost`,size:`icon-xs`,class:`shrink-0`,onClick:c(t=>s(Y)(e.id),[`stop`])},{default:x(()=>[s(J)?(y(),u(s(T),{key:0,class:`size-3 text-green-500`})):(y(),u(s(E),{key:1,class:`size-3`}))]),_:1},8,[`onClick`])]),_:2},1024),b(s(k),null,{default:x(()=>[...a[10]||=[o(`复制 ID`,-1)]]),_:1})]),_:2},1024)]),_:2},1024)],10,et))),128))]),_:1})]),_:1})]),_:1})]),b(s(M),{class:`mb-4`},{default:x(()=>[b(s(P),null,{default:x(()=>[b(s(F),{class:`text-sm font-medium text-foreground`},{default:x(()=>[...a[11]||=[o(`Provider 统计`,-1)]]),_:1})]),_:1}),b(s(N),null,{default:x(()=>[b(Me,{stats:s(h)},null,8,[`stats`])]),_:1})]),_:1}),r(`div`,rt,[b(s(M),null,{default:x(()=>[b(s(P),null,{default:x(()=>[b(s(F),{class:`text-sm font-medium text-foreground`},{default:x(()=>[...a[12]||=[o(`并发度`,-1)]]),_:1})]),_:1}),b(s(N),null,{default:x(()=>[b(ce,{providers:s(_)},null,8,[`providers`])]),_:1})]),_:1}),b(s(M),null,{default:x(()=>[b(s(P),null,{default:x(()=>[b(s(F),{class:`text-sm font-medium text-foreground`},{default:x(()=>[...a[13]||=[o(`状态码分布`,-1)]]),_:1})]),_:1}),b(s(N),null,{default:x(()=>[b(De,{"by-status-code":s(h)?.byStatusCode??{}},null,8,[`by-status-code`])]),_:1})]),_:1}),b(s(M),null,{default:x(()=>[b(s(P),null,{default:x(()=>[b(s(F),{class:`text-sm font-medium text-foreground`},{default:x(()=>[...a[14]||=[o(`运行时`,-1)]]),_:1})]),_:1}),b(s(N),null,{default:x(()=>[b(xe,{runtime:s(I)},null,8,[`runtime`])]),_:1})]),_:1})]),b(ee,{open:s(U),"onUpdate:open":a[0]||=t=>e(U)?U.value=t:null,source:`realtime`,request:s(H),"stream-content":s(H)?.streamContent,"log-detail-data":s(G)},null,8,[`open`,`request`,`stream-content`,`log-detail-data`])]))}});export{it as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{Dt as e,J as t,Lt as n,Mt as r,Pt as i,R as a,U as o,X as s,dt as c,i as l,it as u,lt as d,m as f,o as p,ot as m,q as h,r as g,tt as _,x as v,yt as y}from"./button-BLX8zWc1.js";import{a as b,c as x,d as S,i as C,l as w,o as T,p as E,t as D,u as O,y as k}from"./Teleport-BGbwtNTD.js";import{i as A,r as j,t as M}from"./PopperContent-B23SzU9H.js";import{t as N}from"./useFocusGuards-CHAbXhQp.js";var[P,F]=k(`PopoverRoot`),I=t({__name:`PopoverRoot`,props:{defaultOpen:{type:Boolean,required:!1,default:!1},open:{type:Boolean,required:!1,default:void 0},modal:{type:Boolean,required:!1,default:!1}},emits:[`update:open`],setup(t,{emit:n}){let a=t,s=n,{modal:c}=r(a),l=f(a,`open`,s,{defaultValue:a.defaultOpen,passive:a.open===void 0});return F({contentId:``,triggerId:``,modal:c,open:l,onOpenChange:e=>{l.value=e},onOpenToggle:()=>{l.value=!l.value},triggerElement:e(),hasCustomAnchor:e(!1)}),(e,t)=>(m(),o(i(A),null,{default:y(()=>[d(e.$slots,`default`,{open:i(l),close:()=>l.value=!1})]),_:3}))}}),L=t({__name:`PopoverContentImpl`,props:{trapFocus:{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:[`escapeKeyDown`,`pointerDownOutside`,`focusOutside`,`interactOutside`,`openAutoFocus`,`closeAutoFocus`],setup(e,{emit:t}){let n=e,r=t,a=S(v(n,`trapFocus`,`disableOutsidePointerEvents`)),{forwardRef:s}=p(),c=P();return N(),(e,t)=>(m(),o(i(C),{"as-child":``,loop:``,trapped:e.trapFocus,onMountAutoFocus:t[5]||=e=>r(`openAutoFocus`,e),onUnmountAutoFocus:t[6]||=e=>r(`closeAutoFocus`,e)},{default:y(()=>[h(i(b),{"as-child":``,"disable-outside-pointer-events":e.disableOutsidePointerEvents,onPointerDownOutside:t[0]||=e=>r(`pointerDownOutside`,e),onInteractOutside:t[1]||=e=>r(`interactOutside`,e),onEscapeKeyDown:t[2]||=e=>r(`escapeKeyDown`,e),onFocusOutside:t[3]||=e=>r(`focusOutside`,e),onDismiss:t[4]||=e=>i(c).onOpenChange(!1)},{default:y(()=>[h(i(M),_(i(a),{id:i(c).contentId,ref:i(s),"data-state":i(c).open.value?`open`:`closed`,"aria-labelledby":i(c).triggerId,style:{"--reka-popover-content-transform-origin":`var(--reka-popper-transform-origin)`,"--reka-popover-content-available-width":`var(--reka-popper-available-width)`,"--reka-popover-content-available-height":`var(--reka-popper-available-height)`,"--reka-popover-trigger-width":`var(--reka-popper-anchor-width)`,"--reka-popover-trigger-height":`var(--reka-popper-anchor-height)`},role:`dialog`}),{default:y(()=>[d(e.$slots,`default`)]),_:3},16,[`id`,`data-state`,`aria-labelledby`])]),_:3},8,[`disable-outside-pointer-events`])]),_:3},8,[`trapped`]))}}),R=t({__name:`PopoverContentModal`,props:{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:[`escapeKeyDown`,`pointerDownOutside`,`focusOutside`,`interactOutside`,`openAutoFocus`,`closeAutoFocus`],setup(t,{emit:n}){let r=t,s=n,c=P(),l=e(!1);E(!0);let u=O(r,s),{forwardRef:f,currentElement:h}=p();return w(h),(e,t)=>(m(),o(L,_(i(u),{ref:i(f),"trap-focus":i(c).open.value,"disable-outside-pointer-events":``,onCloseAutoFocus:t[0]||=a(e=>{s(`closeAutoFocus`,e),l.value||i(c).triggerElement.value?.focus()},[`prevent`]),onPointerDownOutside:t[1]||=e=>{s(`pointerDownOutside`,e);let t=e.detail.originalEvent,n=t.button===0&&t.ctrlKey===!0;l.value=t.button===2||n},onFocusOutside:t[2]||=a(()=>{},[`prevent`])}),{default:y(()=>[d(e.$slots,`default`)]),_:3},16,[`trap-focus`]))}}),z=t({__name:`PopoverContentNonModal`,props:{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:[`escapeKeyDown`,`pointerDownOutside`,`focusOutside`,`interactOutside`,`openAutoFocus`,`closeAutoFocus`],setup(t,{emit:n}){let r=t,a=n,s=P(),c=e(!1),l=e(!1),u=O(r,a);return(e,t)=>(m(),o(L,_(i(u),{"trap-focus":!1,"disable-outside-pointer-events":!1,onCloseAutoFocus:t[0]||=e=>{a(`closeAutoFocus`,e),e.defaultPrevented||(c.value||i(s).triggerElement.value?.focus(),e.preventDefault()),c.value=!1,l.value=!1},onInteractOutside:t[1]||=async e=>{a(`interactOutside`,e),e.defaultPrevented||(c.value=!0,e.detail.originalEvent.type===`pointerdown`&&(l.value=!0));let t=e.target;i(s).triggerElement.value?.contains(t)&&e.preventDefault(),e.detail.originalEvent.type===`focusin`&&l.value&&e.preventDefault()}}),{default:y(()=>[d(e.$slots,`default`)]),_:3},16))}}),B=t({__name:`PopoverContent`,props:{forceMount:{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:[`escapeKeyDown`,`pointerDownOutside`,`focusOutside`,`interactOutside`,`openAutoFocus`,`closeAutoFocus`],setup(e,{emit:t}){let n=e,r=t,a=P(),s=O(n,r),{forwardRef:c}=p();return a.contentId||=x(void 0,`reka-popover-content`),(e,t)=>(m(),o(i(T),{present:e.forceMount||i(a).open.value},{default:y(()=>[i(a).modal.value?(m(),o(R,_({key:0},i(s),{ref:i(c)}),{default:y(()=>[d(e.$slots,`default`)]),_:3},16)):(m(),o(z,_({key:1},i(s),{ref:i(c)}),{default:y(()=>[d(e.$slots,`default`)]),_:3},16))]),_:3},8,[`present`]))}}),V=t({__name:`PopoverPortal`,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)=>(m(),o(i(D),n(s(t)),{default:y(()=>[d(e.$slots,`default`)]),_:3},16))}}),H=t({__name:`PopoverTrigger`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`button`}},setup(e){let t=e,n=P(),{forwardRef:r,currentElement:a}=p();return n.triggerId||=x(void 0,`reka-popover-trigger`),u(()=>{n.triggerElement.value=a.value}),(e,a)=>(m(),o(c(i(n).hasCustomAnchor.value?i(l):i(j)),{"as-child":``},{default:y(()=>[h(i(l),{id:i(n).triggerId,ref:i(r),type:e.as===`button`?`button`:void 0,"aria-haspopup":`dialog`,"aria-expanded":i(n).open.value,"aria-controls":i(n).contentId,"data-state":i(n).open.value?`open`:`closed`,as:e.as,"as-child":t.asChild,onClick:i(n).onOpenToggle},{default:y(()=>[d(e.$slots,`default`)]),_:3},8,[`id`,`type`,`aria-expanded`,`aria-controls`,`data-state`,`as`,`as-child`,`onClick`])]),_:3}))}}),U=t({__name:`Popover`,props:{defaultOpen:{type:Boolean},open:{type:Boolean},modal:{type:Boolean}},emits:[`update:open`],setup(e,{emit:t}){let r=O(e,t);return(e,t)=>(m(),o(i(I),_({"data-slot":`popover`},i(r)),{default:y(t=>[d(e.$slots,`default`,n(s(t)))]),_:3},16))}}),W=t({inheritAttrs:!1,__name:`PopoverContent`,props:{forceMount:{type:Boolean},side:{},sideOffset:{default:4},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:[`escapeKeyDown`,`pointerDownOutside`,`focusOutside`,`interactOutside`,`openAutoFocus`,`closeAutoFocus`],setup(e,{emit:t}){let n=e,r=t,a=O(v(n,`class`),r);return(e,t)=>(m(),o(i(V),null,{default:y(()=>[h(i(B),_({"data-slot":`popover-content`},{...e.$attrs,...i(a)},{class:i(g)(`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 flex flex-col gap-2.5 rounded-lg p-2.5 text-sm shadow-md ring-1 duration-100 z-50 w-72 origin-(--reka-popover-content-transform-origin) outline-hidden`,n.class)}),{default:y(()=>[d(e.$slots,`default`)]),_:3},16,[`class`])]),_:3}))}}),G=t({__name:`PopoverTrigger`,props:{asChild:{type:Boolean},as:{}},setup(e){let t=e;return(e,n)=>(m(),o(i(H),_({"data-slot":`popover-trigger`},t),{default:y(()=>[d(e.$slots,`default`)]),_:3},16))}});export{W as n,U as r,G as t};
|
|
1
|
+
import{Dt as e,J as t,Lt as n,Mt as r,Pt as i,R as a,U as o,X as s,dt as c,i as l,it as u,lt as d,m as f,o as p,ot as m,q as h,r as g,tt as _,x as v,yt as y}from"./button-q9xTxPJh.js";import{a as b,c as x,d as S,i as C,l as w,o as T,p as E,t as D,u as O,y as k}from"./Teleport-CRn-gy0B.js";import{i as A,r as j,t as M}from"./PopperContent-BoOYHCag.js";import{t as N}from"./useFocusGuards-DwFX8o1a.js";var[P,F]=k(`PopoverRoot`),I=t({__name:`PopoverRoot`,props:{defaultOpen:{type:Boolean,required:!1,default:!1},open:{type:Boolean,required:!1,default:void 0},modal:{type:Boolean,required:!1,default:!1}},emits:[`update:open`],setup(t,{emit:n}){let a=t,s=n,{modal:c}=r(a),l=f(a,`open`,s,{defaultValue:a.defaultOpen,passive:a.open===void 0});return F({contentId:``,triggerId:``,modal:c,open:l,onOpenChange:e=>{l.value=e},onOpenToggle:()=>{l.value=!l.value},triggerElement:e(),hasCustomAnchor:e(!1)}),(e,t)=>(m(),o(i(A),null,{default:y(()=>[d(e.$slots,`default`,{open:i(l),close:()=>l.value=!1})]),_:3}))}}),L=t({__name:`PopoverContentImpl`,props:{trapFocus:{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:[`escapeKeyDown`,`pointerDownOutside`,`focusOutside`,`interactOutside`,`openAutoFocus`,`closeAutoFocus`],setup(e,{emit:t}){let n=e,r=t,a=S(v(n,`trapFocus`,`disableOutsidePointerEvents`)),{forwardRef:s}=p(),c=P();return N(),(e,t)=>(m(),o(i(C),{"as-child":``,loop:``,trapped:e.trapFocus,onMountAutoFocus:t[5]||=e=>r(`openAutoFocus`,e),onUnmountAutoFocus:t[6]||=e=>r(`closeAutoFocus`,e)},{default:y(()=>[h(i(b),{"as-child":``,"disable-outside-pointer-events":e.disableOutsidePointerEvents,onPointerDownOutside:t[0]||=e=>r(`pointerDownOutside`,e),onInteractOutside:t[1]||=e=>r(`interactOutside`,e),onEscapeKeyDown:t[2]||=e=>r(`escapeKeyDown`,e),onFocusOutside:t[3]||=e=>r(`focusOutside`,e),onDismiss:t[4]||=e=>i(c).onOpenChange(!1)},{default:y(()=>[h(i(M),_(i(a),{id:i(c).contentId,ref:i(s),"data-state":i(c).open.value?`open`:`closed`,"aria-labelledby":i(c).triggerId,style:{"--reka-popover-content-transform-origin":`var(--reka-popper-transform-origin)`,"--reka-popover-content-available-width":`var(--reka-popper-available-width)`,"--reka-popover-content-available-height":`var(--reka-popper-available-height)`,"--reka-popover-trigger-width":`var(--reka-popper-anchor-width)`,"--reka-popover-trigger-height":`var(--reka-popper-anchor-height)`},role:`dialog`}),{default:y(()=>[d(e.$slots,`default`)]),_:3},16,[`id`,`data-state`,`aria-labelledby`])]),_:3},8,[`disable-outside-pointer-events`])]),_:3},8,[`trapped`]))}}),R=t({__name:`PopoverContentModal`,props:{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:[`escapeKeyDown`,`pointerDownOutside`,`focusOutside`,`interactOutside`,`openAutoFocus`,`closeAutoFocus`],setup(t,{emit:n}){let r=t,s=n,c=P(),l=e(!1);E(!0);let u=O(r,s),{forwardRef:f,currentElement:h}=p();return w(h),(e,t)=>(m(),o(L,_(i(u),{ref:i(f),"trap-focus":i(c).open.value,"disable-outside-pointer-events":``,onCloseAutoFocus:t[0]||=a(e=>{s(`closeAutoFocus`,e),l.value||i(c).triggerElement.value?.focus()},[`prevent`]),onPointerDownOutside:t[1]||=e=>{s(`pointerDownOutside`,e);let t=e.detail.originalEvent,n=t.button===0&&t.ctrlKey===!0;l.value=t.button===2||n},onFocusOutside:t[2]||=a(()=>{},[`prevent`])}),{default:y(()=>[d(e.$slots,`default`)]),_:3},16,[`trap-focus`]))}}),z=t({__name:`PopoverContentNonModal`,props:{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:[`escapeKeyDown`,`pointerDownOutside`,`focusOutside`,`interactOutside`,`openAutoFocus`,`closeAutoFocus`],setup(t,{emit:n}){let r=t,a=n,s=P(),c=e(!1),l=e(!1),u=O(r,a);return(e,t)=>(m(),o(L,_(i(u),{"trap-focus":!1,"disable-outside-pointer-events":!1,onCloseAutoFocus:t[0]||=e=>{a(`closeAutoFocus`,e),e.defaultPrevented||(c.value||i(s).triggerElement.value?.focus(),e.preventDefault()),c.value=!1,l.value=!1},onInteractOutside:t[1]||=async e=>{a(`interactOutside`,e),e.defaultPrevented||(c.value=!0,e.detail.originalEvent.type===`pointerdown`&&(l.value=!0));let t=e.target;i(s).triggerElement.value?.contains(t)&&e.preventDefault(),e.detail.originalEvent.type===`focusin`&&l.value&&e.preventDefault()}}),{default:y(()=>[d(e.$slots,`default`)]),_:3},16))}}),B=t({__name:`PopoverContent`,props:{forceMount:{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:[`escapeKeyDown`,`pointerDownOutside`,`focusOutside`,`interactOutside`,`openAutoFocus`,`closeAutoFocus`],setup(e,{emit:t}){let n=e,r=t,a=P(),s=O(n,r),{forwardRef:c}=p();return a.contentId||=x(void 0,`reka-popover-content`),(e,t)=>(m(),o(i(T),{present:e.forceMount||i(a).open.value},{default:y(()=>[i(a).modal.value?(m(),o(R,_({key:0},i(s),{ref:i(c)}),{default:y(()=>[d(e.$slots,`default`)]),_:3},16)):(m(),o(z,_({key:1},i(s),{ref:i(c)}),{default:y(()=>[d(e.$slots,`default`)]),_:3},16))]),_:3},8,[`present`]))}}),V=t({__name:`PopoverPortal`,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)=>(m(),o(i(D),n(s(t)),{default:y(()=>[d(e.$slots,`default`)]),_:3},16))}}),H=t({__name:`PopoverTrigger`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`button`}},setup(e){let t=e,n=P(),{forwardRef:r,currentElement:a}=p();return n.triggerId||=x(void 0,`reka-popover-trigger`),u(()=>{n.triggerElement.value=a.value}),(e,a)=>(m(),o(c(i(n).hasCustomAnchor.value?i(l):i(j)),{"as-child":``},{default:y(()=>[h(i(l),{id:i(n).triggerId,ref:i(r),type:e.as===`button`?`button`:void 0,"aria-haspopup":`dialog`,"aria-expanded":i(n).open.value,"aria-controls":i(n).contentId,"data-state":i(n).open.value?`open`:`closed`,as:e.as,"as-child":t.asChild,onClick:i(n).onOpenToggle},{default:y(()=>[d(e.$slots,`default`)]),_:3},8,[`id`,`type`,`aria-expanded`,`aria-controls`,`data-state`,`as`,`as-child`,`onClick`])]),_:3}))}}),U=t({__name:`Popover`,props:{defaultOpen:{type:Boolean},open:{type:Boolean},modal:{type:Boolean}},emits:[`update:open`],setup(e,{emit:t}){let r=O(e,t);return(e,t)=>(m(),o(i(I),_({"data-slot":`popover`},i(r)),{default:y(t=>[d(e.$slots,`default`,n(s(t)))]),_:3},16))}}),W=t({inheritAttrs:!1,__name:`PopoverContent`,props:{forceMount:{type:Boolean},side:{},sideOffset:{default:4},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:[`escapeKeyDown`,`pointerDownOutside`,`focusOutside`,`interactOutside`,`openAutoFocus`,`closeAutoFocus`],setup(e,{emit:t}){let n=e,r=t,a=O(v(n,`class`),r);return(e,t)=>(m(),o(i(V),null,{default:y(()=>[h(i(B),_({"data-slot":`popover-content`},{...e.$attrs,...i(a)},{class:i(g)(`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 flex flex-col gap-2.5 rounded-lg p-2.5 text-sm shadow-md ring-1 duration-100 z-50 w-72 origin-(--reka-popover-content-transform-origin) outline-hidden`,n.class)}),{default:y(()=>[d(e.$slots,`default`)]),_:3},16,[`class`])]),_:3}))}}),G=t({__name:`PopoverTrigger`,props:{asChild:{type:Boolean},as:{}},setup(e){let t=e;return(e,n)=>(m(),o(i(H),_({"data-slot":`popover-trigger`},t),{default:y(()=>[d(e.$slots,`default`)]),_:3},16))}});export{W as n,U as r,G as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{Dt as e,G as t,J as n,Ot as r,Pt as i,Rt as a,Tt as o,U as s,V as c,_t as l,et as u,gt as d,h as f,i as p,it as m,kt as h,lt as g,o as _,ot as v,q as y,tt as b,u as x,vt as S,xt as C,yt as w}from"./button-BLX8zWc1.js";import{b as T,y as E}from"./Teleport-BGbwtNTD.js";var D=T(`chevron-down`,[[`path`,{d:`m6 9 6 6 6-6`,key:`qrunsl`}]]);function O(t){let n=e(),r=c(()=>n.value?.width??0),i=c(()=>n.value?.height??0);return m(()=>{let e=x(t);if(e){n.value={width:e.offsetWidth,height:e.offsetHeight};let t=new ResizeObserver(t=>{if(!Array.isArray(t)||!t.length)return;let r=t[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=e.offsetWidth,a=e.offsetHeight;n.value={width:i,height:a}});return t.observe(e,{box:`border-box`}),()=>t.unobserve(e)}else n.value=void 0}),{width:r,height:i}}var[k,A]=E(`PopperRoot`),j=n({inheritAttrs:!1,__name:`PopperRoot`,setup(t){let n=e();return A({anchor:n,onAnchorChange:e=>n.value=e}),(e,t)=>g(e.$slots,`default`)}}),M=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:r}=_(),a=k();return S(()=>{a.onAnchorChange(t.reference??r.value)}),(e,t)=>(v(),s(i(p),{ref:i(n),as:e.as,"as-child":e.asChild},{default:w(()=>[g(e.$slots,`default`)]),_:3},8,[`as`,`as-child`]))}});function ee(e){return e!==null}function te(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]=ne(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 ne(e){let[t,n=`center`]=e.split(`-`);return[t,n]}var re=[`top`,`right`,`bottom`,`left`],N=Math.min,P=Math.max,F=Math.round,I=Math.floor,L=e=>({x:e,y:e}),ie={left:`right`,right:`left`,bottom:`top`,top:`bottom`};function ae(e,t,n){return P(e,N(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 oe(e){return e===`x`?`y`:`x`}function se(e){return e===`y`?`height`:`width`}function V(e){let t=e[0];return t===`t`||t===`b`?`y`:`x`}function ce(e){return oe(V(e))}function le(e,t,n){n===void 0&&(n=!1);let r=B(e),i=ce(e),a=se(i),o=i===`x`?r===(n?`end`:`start`)?`right`:`left`:r===`start`?`bottom`:`top`;return t.reference[a]>t.floating[a]&&(o=ve(o)),[o,ve(o)]}function ue(e){let t=ve(e);return[de(e),t,de(t)]}function de(e){return e.includes(`start`)?e.replace(`start`,`end`):e.replace(`end`,`start`)}var fe=[`left`,`right`],pe=[`right`,`left`],me=[`top`,`bottom`],he=[`bottom`,`top`];function ge(e,t,n){switch(e){case`top`:case`bottom`:return n?t?pe:fe:t?fe:pe;case`left`:case`right`:return t?me:he;default:return[]}}function _e(e,t,n,r){let i=B(e),a=ge(z(e),n===`start`,r);return i&&(a=a.map(e=>e+`-`+i),t&&(a=a.concat(a.map(de)))),a}function ve(e){let t=z(e);return ie[t]+e.slice(t.length)}function ye(e){return{top:0,right:0,bottom:0,left:0,...e}}function be(e){return typeof e==`number`?{top:e,right:e,bottom:e,left:e}:ye(e)}function xe(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 Se(e,t,n){let{reference:r,floating:i}=e,a=V(t),o=ce(t),s=se(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 Ce(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=be(f),m=o[d?u===`floating`?`reference`:`floating`:u],h=xe(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=xe(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 we=50,Te=async(e,t,n)=>{let{placement:r=`bottom`,strategy:i=`absolute`,middleware:a=[],platform:o}=n,s=o.detectOverflow?o:{...o,detectOverflow:Ce},c=await(o.isRTL==null?void 0:o.isRTL(t)),l=await o.getElementRects({reference:e,floating:t,strategy:i}),{x:u,y:d}=Se(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<we&&(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}=Se(l,f,c)),n=-1)}return{x:u,y:d,placement:f,strategy:i,middlewareData:m}},Ee=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=be(u),f={x:n,y:r},p=ce(i),m=se(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=N(d[_],T),D=N(d[v],T),O=E,k=C-h[m]-D,A=C/2-h[m]/2+w,j=ae(O,A,k),M=!c.arrow&&B(i)!=null&&A!==j&&a.reference[m]/2-(A<O?E:D)-h[m]/2<0,ee=M?A<O?A-O:A-k:0;return{[p]:f[p]+ee,data:{[p]:j,centerOffset:A-j-ee,...M&&{alignmentOffset:ee}},reset:M}}}),De=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?[ve(o)]:ue(o)),x=p!==`none`;!d&&x&&b.push(..._e(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=le(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 Oe(e,t){return{top:e.top-t.height,right:e.right-t.width,bottom:e.bottom-t.height,left:e.left-t.width}}function ke(e){return re.some(t=>e[t]>=0)}var Ae=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=Oe(await r.detectOverflow(t,{...a,elementContext:`reference`}),n.reference);return{data:{referenceHiddenOffsets:e,referenceHidden:ke(e)}}}case`escaped`:{let e=Oe(await r.detectOverflow(t,{...a,altBoundary:!0}),n.floating);return{data:{escapedOffsets:e,escaped:ke(e)}}}default:return{}}}}},je=new Set([`left`,`top`]);async function Me(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=je.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 Ne=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 Me(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}}}}},Pe=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=oe(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=ae(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=ae(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}}}}}},Fe=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=oe(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=je.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}}}},Ie=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=N(h-u[g],v),x=N(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=P(u.left,0),t=P(u.right,0),n=P(u.top,0),r=P(u.bottom,0);p?w=m-2*(e!==0||t!==0?e+t:P(u.left,u.right)):C=h-2*(n!==0||r!==0?n+r:P(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 Le(){return typeof window<`u`}function H(e){return Re(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((Re(e)?e.ownerDocument:e.document)||window.document)?.documentElement}function Re(e){return Le()?e instanceof Node||e instanceof U(e).Node:!1}function G(e){return Le()?e instanceof Element||e instanceof U(e).Element:!1}function K(e){return Le()?e instanceof HTMLElement||e instanceof U(e).HTMLElement:!1}function ze(e){return!Le()||typeof ShadowRoot>`u`?!1:e instanceof ShadowRoot||e instanceof U(e).ShadowRoot}function Be(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 Ve(e){return/^(table|td|th)$/.test(H(e))}function He(e){try{if(e.matches(`:popover-open`))return!0}catch{}try{return e.matches(`:modal`)}catch{return!1}}var Ue=/transform|translate|scale|rotate|perspective|filter/,We=/paint|layout|strict|content/,q=e=>!!e&&e!==`none`,Ge;function Ke(e){let t=G(e)?Y(e):e;return q(t.transform)||q(t.translate)||q(t.scale)||q(t.rotate)||q(t.perspective)||!Je()&&(q(t.backdropFilter)||q(t.filter))||Ue.test(t.willChange||``)||We.test(t.contain||``)}function qe(e){let t=X(e);for(;K(t)&&!J(t);){if(Ke(t))return t;if(He(t))return null;t=X(t)}return null}function Je(){return Ge??=typeof CSS<`u`&&CSS.supports&&CSS.supports(`-webkit-backdrop-filter`,`none`),Ge}function J(e){return/^(html|body|#document)$/.test(H(e))}function Y(e){return U(e).getComputedStyle(e)}function Ye(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||ze(e)&&e.host||W(e);return ze(t)?t.host:t}function Xe(e){let t=X(e);return J(t)?e.ownerDocument?e.ownerDocument.body:e.body:K(t)&&Be(t)?t:Xe(t)}function Ze(e,t,n){t===void 0&&(t=[]),n===void 0&&(n=!0);let r=Xe(e),i=r===e.ownerDocument?.body,a=U(r);if(i){let e=Qe(a);return t.concat(a,a.visualViewport||[],Be(r)?r:[],e&&n?Ze(e):[])}else return t.concat(r,Ze(r,[],n))}function Qe(e){return e.parent&&Object.getPrototypeOf(e.parent)?e.frameElement:null}function $e(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=F(n)!==a||F(r)!==o;return s&&(n=a,r=o),{width:n,height:r,$:s}}function et(e){return G(e)?e:e.contextElement}function Z(e){let t=et(e);if(!K(t))return L(1);let n=t.getBoundingClientRect(),{width:r,height:i,$:a}=$e(t),o=(a?F(n.width):n.width)/r,s=(a?F(n.height):n.height)/i;return(!o||!Number.isFinite(o))&&(o=1),(!s||!Number.isFinite(s))&&(s=1),{x:o,y:s}}var tt=L(0);function nt(e){let t=U(e);return!Je()||!t.visualViewport?tt:{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}}function rt(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=et(e),o=L(1);t&&(r?G(r)&&(o=Z(r)):o=Z(e));let s=rt(a,n,r)?nt(a):L(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=Qe(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=Qe(n)}}return xe({width:u,height:d,x:c,y:l})}function it(e,t){let n=Ye(e).scrollLeft;return t?t.left+n:Q(W(e)).left+n}function at(e,t){let n=e.getBoundingClientRect();return{x:n.left+t.scrollLeft-it(e,n),y:n.top+t.scrollTop}}function ot(e){let{elements:t,rect:n,offsetParent:r,strategy:i}=e,a=i===`fixed`,o=W(r),s=t?He(t.floating):!1;if(r===o||s&&a)return n;let c={scrollLeft:0,scrollTop:0},l=L(1),u=L(0),d=K(r);if((d||!d&&!a)&&((H(r)!==`body`||Be(o))&&(c=Ye(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?at(o,c):L(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 st(e){return Array.from(e.getClientRects())}function ct(e){let t=W(e),n=Ye(e),r=e.ownerDocument.body,i=P(t.scrollWidth,t.clientWidth,r.scrollWidth,r.clientWidth),a=P(t.scrollHeight,t.clientHeight,r.scrollHeight,r.clientHeight),o=-n.scrollLeft+it(e),s=-n.scrollTop;return Y(r).direction===`rtl`&&(o+=P(t.clientWidth,r.clientWidth)-i),{width:i,height:a,x:o,y:s}}var lt=25;function ut(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=Je();(!e||e&&t===`fixed`)&&(s=i.offsetLeft,c=i.offsetTop)}let l=it(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<=lt&&(a-=o)}else l<=lt&&(a+=l);return{width:a,height:o,x:s,y:c}}function dt(e,t){let n=Q(e,!0,t===`fixed`),r=n.top+e.clientTop,i=n.left+e.clientLeft,a=K(e)?Z(e):L(1);return{width:e.clientWidth*a.x,height:e.clientHeight*a.y,x:i*a.x,y:r*a.y}}function ft(e,t,n){let r;if(t===`viewport`)r=ut(e,n);else if(t===`document`)r=ct(W(e));else if(G(t))r=dt(t,n);else{let n=nt(e);r={x:t.x-n.x,y:t.y-n.y,width:t.width,height:t.height}}return xe(r)}function pt(e,t){let n=X(e);return n===t||!G(n)||J(n)?!1:Y(n).position===`fixed`||pt(n,t)}function mt(e,t){let n=t.get(e);if(n)return n;let r=Ze(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=Ke(o);!n&&t.position===`fixed`&&(i=null),(a?!n&&!i:!n&&t.position===`static`&&i&&(i.position===`absolute`||i.position===`fixed`)||Be(o)&&!n&&pt(e,o))?r=r.filter(e=>e!==o):i=t,o=X(o)}return t.set(e,r),r}function ht(e){let{element:t,boundary:n,rootBoundary:r,strategy:i}=e,a=[...n===`clippingAncestors`?He(t)?[]:mt(t,this._c):[].concat(n),r],o=ft(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=ft(t,a[e],i);s=P(n.top,s),c=N(n.right,c),l=N(n.bottom,l),u=P(n.left,u)}return{width:c-u,height:l-s,x:u,y:s}}function gt(e){let{width:t,height:n}=$e(e);return{width:t,height:n}}function _t(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=L(0);function l(){c.x=it(i)}if(r||!r&&!a)if((H(t)!==`body`||Be(i))&&(s=Ye(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?at(i,s):L(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 vt(e){return Y(e).position===`static`}function yt(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 bt(e,t){let n=U(e);if(He(e))return n;if(!K(e)){let t=X(e);for(;t&&!J(t);){if(G(t)&&!vt(t))return t;t=X(t)}return n}let r=yt(e,t);for(;r&&Ve(r)&&vt(r);)r=yt(r,t);return r&&J(r)&&vt(r)&&!Ke(r)?n:r||qe(e)||n}var xt=async function(e){let t=this.getOffsetParent||bt,n=this.getDimensions,r=await n(e.floating);return{reference:_t(e.reference,await t(e.floating),e.strategy),floating:{x:0,y:0,width:r.width,height:r.height}}};function St(e){return Y(e).direction===`rtl`}var Ct={convertOffsetParentRelativeRectToViewportRelativeRect:ot,getDocumentElement:W,getClippingRect:ht,getOffsetParent:bt,getElementRects:xt,getClientRects:st,getDimensions:gt,getScale:Z,isElement:G,isRTL:St};function wt(e,t){return e.x===t.x&&e.y===t.y&&e.width===t.width&&e.height===t.height}function Tt(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=I(d),h=I(i.clientWidth-(u+f)),g=I(i.clientHeight-(d+p)),_=I(u),v={rootMargin:-m+`px `+-h+`px `+-g+`px `+-_+`px`,threshold:P(0,N(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&&!wt(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 Et(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=et(e),u=i||a?[...l?Ze(l):[],...t?Ze(t):[]]:[];u.forEach(e=>{i&&e.addEventListener(`scroll`,n,{passive:!0}),a&&e.addEventListener(`resize`,n)});let d=l&&s?Tt(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&&!wt(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 Dt=Ne,Ot=Pe,kt=De,At=Ie,jt=Ae,Mt=Ee,Nt=Fe,Pt=(e,t,n)=>{let r=new Map,i={platform:Ct,...n},a={...i.platform,_c:r};return Te(e,t,{...i,platform:a})};function Ft(e){return typeof e==`object`&&!!e&&`$el`in e}function It(e){if(Ft(e)){let t=e.$el;return Re(t)&&H(t)===`#comment`?null:t}return e}function $(e){return typeof e==`function`?e():i(e)}function Lt(e){return{name:`arrow`,options:e,fn(t){let n=It($(e.element));return n==null?{}:Mt({element:n,padding:e.padding}).fn(t)}}}function Rt(e){return typeof window>`u`?1:(e.ownerDocument.defaultView||window).devicePixelRatio||1}function zt(e,t){let n=Rt(e);return Math.round(t*n)/n}function Bt(t,n,i){i===void 0&&(i={});let a=i.whileElementsMounted,s=c(()=>$(i.open)??!0),l=c(()=>$(i.middleware)),u=c(()=>$(i.placement)??`bottom`),f=c(()=>$(i.strategy)??`absolute`),p=c(()=>$(i.transform)??!0),m=c(()=>It(t.value)),g=c(()=>It(n.value)),_=e(0),v=e(0),y=e(f.value),b=e(u.value),x=h({}),S=e(!1),w=c(()=>{let e={position:y.value,left:`0`,top:`0`};if(!g.value)return e;let t=zt(g.value,_.value),n=zt(g.value,v.value);return p.value?{...e,transform:`translate(`+t+`px, `+n+`px)`,...Rt(g.value)>=1.5&&{willChange:`transform`}}:{position:y.value,left:t+`px`,top:n+`px`}}),T;function E(){if(m.value==null||g.value==null)return;let e=s.value;Pt(m.value,g.value,{middleware:l.value,placement:u.value,strategy:f.value}).then(t=>{_.value=t.x,v.value=t.y,y.value=t.strategy,b.value=t.placement,x.value=t.middlewareData,S.value=e!==!1})}function D(){typeof T==`function`&&(T(),T=void 0)}function O(){if(D(),a===void 0){E();return}if(m.value!=null&&g.value!=null){T=a(m.value,g.value,E);return}}function k(){s.value||(S.value=!1)}return d([l,u,f,s],E,{flush:`sync`}),d([m,g],O,{flush:`sync`}),d(s,k,{flush:`sync`}),C()&&o(D),{x:r(_),y:r(v),strategy:r(y),placement:r(b),middlewareData:r(x),isPositioned:r(S),floatingStyles:w,update:E}}var Vt={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},[Ht,Ut]=E(`PopperContent`),Wt=n({inheritAttrs:!1,__name:`PopperContent`,props:u({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}},{...Vt}),emits:[`placed`],setup(n,{emit:r}){let o=n,s=r,u=k(),{forwardRef:d,currentElement:m}=_(),h=e(),x=e(),{width:C,height:T}=O(x),E=c(()=>o.side+(o.align===`center`?``:`-${o.align}`)),D=c(()=>typeof o.collisionPadding==`number`?o.collisionPadding:{top:0,right:0,bottom:0,left:0,...o.collisionPadding}),A=c(()=>Array.isArray(o.collisionBoundary)?o.collisionBoundary:[o.collisionBoundary]),j=c(()=>({padding:D.value,boundary:A.value.filter(ee),altBoundary:A.value.length>0})),M=c(()=>({mainAxis:o.sideFlip,crossAxis:o.alignFlip})),re=f(()=>[Dt({mainAxis:o.sideOffset+T.value,alignmentAxis:o.alignOffset}),o.prioritizePosition&&o.avoidCollisions&&kt({...j.value,...M.value}),o.avoidCollisions&&Ot({mainAxis:!0,crossAxis:!!o.prioritizePosition,limiter:o.sticky===`partial`?Nt():void 0,...j.value}),!o.prioritizePosition&&o.avoidCollisions&&kt({...j.value,...M.value}),At({...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`)}}),x.value&&Lt({element:x.value,padding:o.arrowPadding}),te({arrowWidth:C.value,arrowHeight:T.value}),o.hideWhenDetached&&jt({strategy:`referenceHidden`,...j.value})]),{floatingStyles:N,placement:P,isPositioned:F,middlewareData:I,update:L}=Bt(c(()=>o.reference??u.anchor.value),h,{strategy:o.positionStrategy,placement:E,whileElementsMounted:(...e)=>Et(...e,{layoutShift:!o.disableUpdateOnLayoutShift,animationFrame:o.updatePositionStrategy===`always`}),middleware:re}),ie=c(()=>ne(P.value)[0]),ae=c(()=>ne(P.value)[1]);S(()=>{F.value&&s(`placed`)});let R=c(()=>{let e=I.value.arrow?.centerOffset!==0;return o.hideShiftedArrow&&e}),z=e(``);return l(()=>{m.value&&(z.value=window.getComputedStyle(m.value).zIndex)}),Ut({placedSide:ie,onArrowChange:e=>x.value=e,arrowX:c(()=>I.value.arrow?.x??0),arrowY:c(()=>I.value.arrow?.y??0),shouldHideArrow:R}),(e,n)=>(v(),t(`div`,{ref_key:`floatingRef`,ref:h,"data-reka-popper-content-wrapper":``,style:a({...i(N),transform:i(F)?i(N).transform:`translate(0, -200%)`,minWidth:`max-content`,zIndex:z.value,"--reka-popper-transform-origin":[i(I).transformOrigin?.x,i(I).transformOrigin?.y].join(` `),...i(I).hide?.referenceHidden&&{visibility:`hidden`,pointerEvents:`none`}})},[y(i(p),b({ref:i(d)},e.$attrs,{"as-child":o.asChild,as:e.as,"data-side":ie.value,"data-align":ae.value,style:{animation:i(F)?void 0:`none`}}),{default:w(()=>[g(e.$slots,`default`)]),_:3},16,[`as-child`,`as`,`data-side`,`data-align`,`style`])],4))}});export{D as a,j as i,Ht as n,M as r,Wt as t};
|
|
1
|
+
import{Dt as e,G as t,J as n,Ot as r,Pt as i,Rt as a,Tt as o,U as s,V as c,_t as l,et as u,gt as d,h as f,i as p,it as m,kt as h,lt as g,o as _,ot as v,q as y,tt as b,u as x,vt as S,xt as C,yt as w}from"./button-q9xTxPJh.js";import{b as T,y as E}from"./Teleport-CRn-gy0B.js";var D=T(`chevron-down`,[[`path`,{d:`m6 9 6 6 6-6`,key:`qrunsl`}]]);function O(t){let n=e(),r=c(()=>n.value?.width??0),i=c(()=>n.value?.height??0);return m(()=>{let e=x(t);if(e){n.value={width:e.offsetWidth,height:e.offsetHeight};let t=new ResizeObserver(t=>{if(!Array.isArray(t)||!t.length)return;let r=t[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=e.offsetWidth,a=e.offsetHeight;n.value={width:i,height:a}});return t.observe(e,{box:`border-box`}),()=>t.unobserve(e)}else n.value=void 0}),{width:r,height:i}}var[k,A]=E(`PopperRoot`),j=n({inheritAttrs:!1,__name:`PopperRoot`,setup(t){let n=e();return A({anchor:n,onAnchorChange:e=>n.value=e}),(e,t)=>g(e.$slots,`default`)}}),M=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:r}=_(),a=k();return S(()=>{a.onAnchorChange(t.reference??r.value)}),(e,t)=>(v(),s(i(p),{ref:i(n),as:e.as,"as-child":e.asChild},{default:w(()=>[g(e.$slots,`default`)]),_:3},8,[`as`,`as-child`]))}});function ee(e){return e!==null}function te(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]=ne(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 ne(e){let[t,n=`center`]=e.split(`-`);return[t,n]}var re=[`top`,`right`,`bottom`,`left`],N=Math.min,P=Math.max,F=Math.round,I=Math.floor,L=e=>({x:e,y:e}),ie={left:`right`,right:`left`,bottom:`top`,top:`bottom`};function ae(e,t,n){return P(e,N(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 oe(e){return e===`x`?`y`:`x`}function se(e){return e===`y`?`height`:`width`}function V(e){let t=e[0];return t===`t`||t===`b`?`y`:`x`}function ce(e){return oe(V(e))}function le(e,t,n){n===void 0&&(n=!1);let r=B(e),i=ce(e),a=se(i),o=i===`x`?r===(n?`end`:`start`)?`right`:`left`:r===`start`?`bottom`:`top`;return t.reference[a]>t.floating[a]&&(o=ve(o)),[o,ve(o)]}function ue(e){let t=ve(e);return[de(e),t,de(t)]}function de(e){return e.includes(`start`)?e.replace(`start`,`end`):e.replace(`end`,`start`)}var fe=[`left`,`right`],pe=[`right`,`left`],me=[`top`,`bottom`],he=[`bottom`,`top`];function ge(e,t,n){switch(e){case`top`:case`bottom`:return n?t?pe:fe:t?fe:pe;case`left`:case`right`:return t?me:he;default:return[]}}function _e(e,t,n,r){let i=B(e),a=ge(z(e),n===`start`,r);return i&&(a=a.map(e=>e+`-`+i),t&&(a=a.concat(a.map(de)))),a}function ve(e){let t=z(e);return ie[t]+e.slice(t.length)}function ye(e){return{top:0,right:0,bottom:0,left:0,...e}}function be(e){return typeof e==`number`?{top:e,right:e,bottom:e,left:e}:ye(e)}function xe(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 Se(e,t,n){let{reference:r,floating:i}=e,a=V(t),o=ce(t),s=se(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 Ce(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=be(f),m=o[d?u===`floating`?`reference`:`floating`:u],h=xe(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=xe(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 we=50,Te=async(e,t,n)=>{let{placement:r=`bottom`,strategy:i=`absolute`,middleware:a=[],platform:o}=n,s=o.detectOverflow?o:{...o,detectOverflow:Ce},c=await(o.isRTL==null?void 0:o.isRTL(t)),l=await o.getElementRects({reference:e,floating:t,strategy:i}),{x:u,y:d}=Se(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<we&&(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}=Se(l,f,c)),n=-1)}return{x:u,y:d,placement:f,strategy:i,middlewareData:m}},Ee=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=be(u),f={x:n,y:r},p=ce(i),m=se(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=N(d[_],T),D=N(d[v],T),O=E,k=C-h[m]-D,A=C/2-h[m]/2+w,j=ae(O,A,k),M=!c.arrow&&B(i)!=null&&A!==j&&a.reference[m]/2-(A<O?E:D)-h[m]/2<0,ee=M?A<O?A-O:A-k:0;return{[p]:f[p]+ee,data:{[p]:j,centerOffset:A-j-ee,...M&&{alignmentOffset:ee}},reset:M}}}),De=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?[ve(o)]:ue(o)),x=p!==`none`;!d&&x&&b.push(..._e(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=le(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 Oe(e,t){return{top:e.top-t.height,right:e.right-t.width,bottom:e.bottom-t.height,left:e.left-t.width}}function ke(e){return re.some(t=>e[t]>=0)}var Ae=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=Oe(await r.detectOverflow(t,{...a,elementContext:`reference`}),n.reference);return{data:{referenceHiddenOffsets:e,referenceHidden:ke(e)}}}case`escaped`:{let e=Oe(await r.detectOverflow(t,{...a,altBoundary:!0}),n.floating);return{data:{escapedOffsets:e,escaped:ke(e)}}}default:return{}}}}},je=new Set([`left`,`top`]);async function Me(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=je.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 Ne=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 Me(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}}}}},Pe=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=oe(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=ae(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=ae(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}}}}}},Fe=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=oe(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=je.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}}}},Ie=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=N(h-u[g],v),x=N(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=P(u.left,0),t=P(u.right,0),n=P(u.top,0),r=P(u.bottom,0);p?w=m-2*(e!==0||t!==0?e+t:P(u.left,u.right)):C=h-2*(n!==0||r!==0?n+r:P(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 Le(){return typeof window<`u`}function H(e){return Re(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((Re(e)?e.ownerDocument:e.document)||window.document)?.documentElement}function Re(e){return Le()?e instanceof Node||e instanceof U(e).Node:!1}function G(e){return Le()?e instanceof Element||e instanceof U(e).Element:!1}function K(e){return Le()?e instanceof HTMLElement||e instanceof U(e).HTMLElement:!1}function ze(e){return!Le()||typeof ShadowRoot>`u`?!1:e instanceof ShadowRoot||e instanceof U(e).ShadowRoot}function Be(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 Ve(e){return/^(table|td|th)$/.test(H(e))}function He(e){try{if(e.matches(`:popover-open`))return!0}catch{}try{return e.matches(`:modal`)}catch{return!1}}var Ue=/transform|translate|scale|rotate|perspective|filter/,We=/paint|layout|strict|content/,q=e=>!!e&&e!==`none`,Ge;function Ke(e){let t=G(e)?Y(e):e;return q(t.transform)||q(t.translate)||q(t.scale)||q(t.rotate)||q(t.perspective)||!Je()&&(q(t.backdropFilter)||q(t.filter))||Ue.test(t.willChange||``)||We.test(t.contain||``)}function qe(e){let t=X(e);for(;K(t)&&!J(t);){if(Ke(t))return t;if(He(t))return null;t=X(t)}return null}function Je(){return Ge??=typeof CSS<`u`&&CSS.supports&&CSS.supports(`-webkit-backdrop-filter`,`none`),Ge}function J(e){return/^(html|body|#document)$/.test(H(e))}function Y(e){return U(e).getComputedStyle(e)}function Ye(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||ze(e)&&e.host||W(e);return ze(t)?t.host:t}function Xe(e){let t=X(e);return J(t)?e.ownerDocument?e.ownerDocument.body:e.body:K(t)&&Be(t)?t:Xe(t)}function Ze(e,t,n){t===void 0&&(t=[]),n===void 0&&(n=!0);let r=Xe(e),i=r===e.ownerDocument?.body,a=U(r);if(i){let e=Qe(a);return t.concat(a,a.visualViewport||[],Be(r)?r:[],e&&n?Ze(e):[])}else return t.concat(r,Ze(r,[],n))}function Qe(e){return e.parent&&Object.getPrototypeOf(e.parent)?e.frameElement:null}function $e(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=F(n)!==a||F(r)!==o;return s&&(n=a,r=o),{width:n,height:r,$:s}}function et(e){return G(e)?e:e.contextElement}function Z(e){let t=et(e);if(!K(t))return L(1);let n=t.getBoundingClientRect(),{width:r,height:i,$:a}=$e(t),o=(a?F(n.width):n.width)/r,s=(a?F(n.height):n.height)/i;return(!o||!Number.isFinite(o))&&(o=1),(!s||!Number.isFinite(s))&&(s=1),{x:o,y:s}}var tt=L(0);function nt(e){let t=U(e);return!Je()||!t.visualViewport?tt:{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}}function rt(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=et(e),o=L(1);t&&(r?G(r)&&(o=Z(r)):o=Z(e));let s=rt(a,n,r)?nt(a):L(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=Qe(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=Qe(n)}}return xe({width:u,height:d,x:c,y:l})}function it(e,t){let n=Ye(e).scrollLeft;return t?t.left+n:Q(W(e)).left+n}function at(e,t){let n=e.getBoundingClientRect();return{x:n.left+t.scrollLeft-it(e,n),y:n.top+t.scrollTop}}function ot(e){let{elements:t,rect:n,offsetParent:r,strategy:i}=e,a=i===`fixed`,o=W(r),s=t?He(t.floating):!1;if(r===o||s&&a)return n;let c={scrollLeft:0,scrollTop:0},l=L(1),u=L(0),d=K(r);if((d||!d&&!a)&&((H(r)!==`body`||Be(o))&&(c=Ye(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?at(o,c):L(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 st(e){return Array.from(e.getClientRects())}function ct(e){let t=W(e),n=Ye(e),r=e.ownerDocument.body,i=P(t.scrollWidth,t.clientWidth,r.scrollWidth,r.clientWidth),a=P(t.scrollHeight,t.clientHeight,r.scrollHeight,r.clientHeight),o=-n.scrollLeft+it(e),s=-n.scrollTop;return Y(r).direction===`rtl`&&(o+=P(t.clientWidth,r.clientWidth)-i),{width:i,height:a,x:o,y:s}}var lt=25;function ut(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=Je();(!e||e&&t===`fixed`)&&(s=i.offsetLeft,c=i.offsetTop)}let l=it(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<=lt&&(a-=o)}else l<=lt&&(a+=l);return{width:a,height:o,x:s,y:c}}function dt(e,t){let n=Q(e,!0,t===`fixed`),r=n.top+e.clientTop,i=n.left+e.clientLeft,a=K(e)?Z(e):L(1);return{width:e.clientWidth*a.x,height:e.clientHeight*a.y,x:i*a.x,y:r*a.y}}function ft(e,t,n){let r;if(t===`viewport`)r=ut(e,n);else if(t===`document`)r=ct(W(e));else if(G(t))r=dt(t,n);else{let n=nt(e);r={x:t.x-n.x,y:t.y-n.y,width:t.width,height:t.height}}return xe(r)}function pt(e,t){let n=X(e);return n===t||!G(n)||J(n)?!1:Y(n).position===`fixed`||pt(n,t)}function mt(e,t){let n=t.get(e);if(n)return n;let r=Ze(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=Ke(o);!n&&t.position===`fixed`&&(i=null),(a?!n&&!i:!n&&t.position===`static`&&i&&(i.position===`absolute`||i.position===`fixed`)||Be(o)&&!n&&pt(e,o))?r=r.filter(e=>e!==o):i=t,o=X(o)}return t.set(e,r),r}function ht(e){let{element:t,boundary:n,rootBoundary:r,strategy:i}=e,a=[...n===`clippingAncestors`?He(t)?[]:mt(t,this._c):[].concat(n),r],o=ft(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=ft(t,a[e],i);s=P(n.top,s),c=N(n.right,c),l=N(n.bottom,l),u=P(n.left,u)}return{width:c-u,height:l-s,x:u,y:s}}function gt(e){let{width:t,height:n}=$e(e);return{width:t,height:n}}function _t(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=L(0);function l(){c.x=it(i)}if(r||!r&&!a)if((H(t)!==`body`||Be(i))&&(s=Ye(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?at(i,s):L(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 vt(e){return Y(e).position===`static`}function yt(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 bt(e,t){let n=U(e);if(He(e))return n;if(!K(e)){let t=X(e);for(;t&&!J(t);){if(G(t)&&!vt(t))return t;t=X(t)}return n}let r=yt(e,t);for(;r&&Ve(r)&&vt(r);)r=yt(r,t);return r&&J(r)&&vt(r)&&!Ke(r)?n:r||qe(e)||n}var xt=async function(e){let t=this.getOffsetParent||bt,n=this.getDimensions,r=await n(e.floating);return{reference:_t(e.reference,await t(e.floating),e.strategy),floating:{x:0,y:0,width:r.width,height:r.height}}};function St(e){return Y(e).direction===`rtl`}var Ct={convertOffsetParentRelativeRectToViewportRelativeRect:ot,getDocumentElement:W,getClippingRect:ht,getOffsetParent:bt,getElementRects:xt,getClientRects:st,getDimensions:gt,getScale:Z,isElement:G,isRTL:St};function wt(e,t){return e.x===t.x&&e.y===t.y&&e.width===t.width&&e.height===t.height}function Tt(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=I(d),h=I(i.clientWidth-(u+f)),g=I(i.clientHeight-(d+p)),_=I(u),v={rootMargin:-m+`px `+-h+`px `+-g+`px `+-_+`px`,threshold:P(0,N(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&&!wt(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 Et(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=et(e),u=i||a?[...l?Ze(l):[],...t?Ze(t):[]]:[];u.forEach(e=>{i&&e.addEventListener(`scroll`,n,{passive:!0}),a&&e.addEventListener(`resize`,n)});let d=l&&s?Tt(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&&!wt(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 Dt=Ne,Ot=Pe,kt=De,At=Ie,jt=Ae,Mt=Ee,Nt=Fe,Pt=(e,t,n)=>{let r=new Map,i={platform:Ct,...n},a={...i.platform,_c:r};return Te(e,t,{...i,platform:a})};function Ft(e){return typeof e==`object`&&!!e&&`$el`in e}function It(e){if(Ft(e)){let t=e.$el;return Re(t)&&H(t)===`#comment`?null:t}return e}function $(e){return typeof e==`function`?e():i(e)}function Lt(e){return{name:`arrow`,options:e,fn(t){let n=It($(e.element));return n==null?{}:Mt({element:n,padding:e.padding}).fn(t)}}}function Rt(e){return typeof window>`u`?1:(e.ownerDocument.defaultView||window).devicePixelRatio||1}function zt(e,t){let n=Rt(e);return Math.round(t*n)/n}function Bt(t,n,i){i===void 0&&(i={});let a=i.whileElementsMounted,s=c(()=>$(i.open)??!0),l=c(()=>$(i.middleware)),u=c(()=>$(i.placement)??`bottom`),f=c(()=>$(i.strategy)??`absolute`),p=c(()=>$(i.transform)??!0),m=c(()=>It(t.value)),g=c(()=>It(n.value)),_=e(0),v=e(0),y=e(f.value),b=e(u.value),x=h({}),S=e(!1),w=c(()=>{let e={position:y.value,left:`0`,top:`0`};if(!g.value)return e;let t=zt(g.value,_.value),n=zt(g.value,v.value);return p.value?{...e,transform:`translate(`+t+`px, `+n+`px)`,...Rt(g.value)>=1.5&&{willChange:`transform`}}:{position:y.value,left:t+`px`,top:n+`px`}}),T;function E(){if(m.value==null||g.value==null)return;let e=s.value;Pt(m.value,g.value,{middleware:l.value,placement:u.value,strategy:f.value}).then(t=>{_.value=t.x,v.value=t.y,y.value=t.strategy,b.value=t.placement,x.value=t.middlewareData,S.value=e!==!1})}function D(){typeof T==`function`&&(T(),T=void 0)}function O(){if(D(),a===void 0){E();return}if(m.value!=null&&g.value!=null){T=a(m.value,g.value,E);return}}function k(){s.value||(S.value=!1)}return d([l,u,f,s],E,{flush:`sync`}),d([m,g],O,{flush:`sync`}),d(s,k,{flush:`sync`}),C()&&o(D),{x:r(_),y:r(v),strategy:r(y),placement:r(b),middlewareData:r(x),isPositioned:r(S),floatingStyles:w,update:E}}var Vt={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},[Ht,Ut]=E(`PopperContent`),Wt=n({inheritAttrs:!1,__name:`PopperContent`,props:u({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}},{...Vt}),emits:[`placed`],setup(n,{emit:r}){let o=n,s=r,u=k(),{forwardRef:d,currentElement:m}=_(),h=e(),x=e(),{width:C,height:T}=O(x),E=c(()=>o.side+(o.align===`center`?``:`-${o.align}`)),D=c(()=>typeof o.collisionPadding==`number`?o.collisionPadding:{top:0,right:0,bottom:0,left:0,...o.collisionPadding}),A=c(()=>Array.isArray(o.collisionBoundary)?o.collisionBoundary:[o.collisionBoundary]),j=c(()=>({padding:D.value,boundary:A.value.filter(ee),altBoundary:A.value.length>0})),M=c(()=>({mainAxis:o.sideFlip,crossAxis:o.alignFlip})),re=f(()=>[Dt({mainAxis:o.sideOffset+T.value,alignmentAxis:o.alignOffset}),o.prioritizePosition&&o.avoidCollisions&&kt({...j.value,...M.value}),o.avoidCollisions&&Ot({mainAxis:!0,crossAxis:!!o.prioritizePosition,limiter:o.sticky===`partial`?Nt():void 0,...j.value}),!o.prioritizePosition&&o.avoidCollisions&&kt({...j.value,...M.value}),At({...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`)}}),x.value&&Lt({element:x.value,padding:o.arrowPadding}),te({arrowWidth:C.value,arrowHeight:T.value}),o.hideWhenDetached&&jt({strategy:`referenceHidden`,...j.value})]),{floatingStyles:N,placement:P,isPositioned:F,middlewareData:I,update:L}=Bt(c(()=>o.reference??u.anchor.value),h,{strategy:o.positionStrategy,placement:E,whileElementsMounted:(...e)=>Et(...e,{layoutShift:!o.disableUpdateOnLayoutShift,animationFrame:o.updatePositionStrategy===`always`}),middleware:re}),ie=c(()=>ne(P.value)[0]),ae=c(()=>ne(P.value)[1]);S(()=>{F.value&&s(`placed`)});let R=c(()=>{let e=I.value.arrow?.centerOffset!==0;return o.hideShiftedArrow&&e}),z=e(``);return l(()=>{m.value&&(z.value=window.getComputedStyle(m.value).zIndex)}),Ut({placedSide:ie,onArrowChange:e=>x.value=e,arrowX:c(()=>I.value.arrow?.x??0),arrowY:c(()=>I.value.arrow?.y??0),shouldHideArrow:R}),(e,n)=>(v(),t(`div`,{ref_key:`floatingRef`,ref:h,"data-reka-popper-content-wrapper":``,style:a({...i(N),transform:i(F)?i(N).transform:`translate(0, -200%)`,minWidth:`max-content`,zIndex:z.value,"--reka-popper-transform-origin":[i(I).transformOrigin?.x,i(I).transformOrigin?.y].join(` `),...i(I).hide?.referenceHidden&&{visibility:`hidden`,pointerEvents:`none`}})},[y(i(p),b({ref:i(d)},e.$attrs,{"as-child":o.asChild,as:e.as,"data-side":ie.value,"data-align":ae.value,style:{animation:i(F)?void 0:`none`}}),{default:w(()=>[g(e.$slots,`default`)]),_:3},16,[`as-child`,`as`,`data-side`,`data-align`,`style`])],4))}});export{D as a,j as i,Ht as n,M as r,Wt as t};
|