llm-simple-router 0.5.0 → 0.5.2

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.
Files changed (179) hide show
  1. package/config/recommended-providers.json +76 -0
  2. package/config/recommended-retry-rules.json +10 -0
  3. package/dist/admin/api-response.d.ts +27 -0
  4. package/dist/admin/api-response.js +40 -0
  5. package/dist/admin/constants.d.ts +0 -2
  6. package/dist/admin/constants.js +0 -3
  7. package/dist/admin/groups.js +9 -5
  8. package/dist/admin/logs.js +3 -2
  9. package/dist/admin/mappings.js +7 -6
  10. package/dist/admin/metrics.js +23 -5
  11. package/dist/admin/monitor.js +2 -1
  12. package/dist/admin/providers.js +13 -4
  13. package/dist/admin/proxy-enhancement.js +11 -6
  14. package/dist/admin/recommended.js +1 -9
  15. package/dist/admin/retry-rules.js +8 -4
  16. package/dist/admin/router-keys.js +5 -1
  17. package/dist/admin/routes.js +2 -0
  18. package/dist/admin/settings-import-export.js +3 -2
  19. package/dist/admin/settings.js +7 -5
  20. package/dist/admin/setup.js +3 -2
  21. package/dist/admin/stats.js +20 -3
  22. package/dist/admin/upgrade.d.ts +13 -0
  23. package/dist/admin/upgrade.js +114 -0
  24. package/dist/admin/usage.js +12 -24
  25. package/dist/config.d.ts +1 -1
  26. package/dist/config.js +1 -1
  27. package/dist/constants.d.ts +3 -0
  28. package/dist/constants.js +11 -0
  29. package/dist/db/index.d.ts +3 -3
  30. package/dist/db/index.js +2 -2
  31. package/dist/db/mappings.js +5 -8
  32. package/dist/db/metrics.js +3 -4
  33. package/dist/db/providers.d.ts +8 -0
  34. package/dist/db/providers.js +6 -0
  35. package/dist/db/retry-rules.d.ts +1 -0
  36. package/dist/db/retry-rules.js +3 -0
  37. package/dist/db/settings.d.ts +2 -0
  38. package/dist/db/settings.js +7 -0
  39. package/dist/db/stats.d.ts +1 -2
  40. package/dist/db/stats.js +7 -11
  41. package/dist/index.d.ts +2 -0
  42. package/dist/index.js +55 -34
  43. package/dist/metrics/metrics-extractor.js +1 -1
  44. package/dist/metrics/sse-parser.js +2 -0
  45. package/dist/middleware/admin-auth.js +6 -5
  46. package/dist/middleware/auth.js +1 -10
  47. package/dist/monitor/request-tracker.d.ts +1 -0
  48. package/dist/monitor/request-tracker.js +9 -45
  49. package/dist/monitor/runtime-collector.js +1 -1
  50. package/dist/monitor/stream-content-accumulator.d.ts +14 -0
  51. package/dist/monitor/stream-content-accumulator.js +58 -0
  52. package/dist/proxy/anthropic.d.ts +2 -1
  53. package/dist/proxy/anthropic.js +3 -3
  54. package/dist/proxy/enhancement/directive-parser.d.ts +18 -0
  55. package/dist/proxy/{directive-parser.js → enhancement/directive-parser.js} +44 -0
  56. package/dist/proxy/{enhancement-handler.js → enhancement/enhancement-handler.js} +152 -32
  57. package/dist/proxy/enhancement/index.d.ts +3 -0
  58. package/dist/proxy/enhancement/index.js +3 -0
  59. package/dist/proxy/{response-cleaner.js → enhancement/response-cleaner.js} +14 -0
  60. package/dist/proxy/log-helpers.d.ts +1 -1
  61. package/dist/proxy/mapping-resolver.js +4 -4
  62. package/dist/proxy/openai.d.ts +2 -1
  63. package/dist/proxy/openai.js +4 -4
  64. package/dist/proxy/orchestrator.d.ts +0 -1
  65. package/dist/proxy/orchestrator.js +1 -3
  66. package/dist/proxy/proxy-core.d.ts +0 -4
  67. package/dist/proxy/proxy-core.js +0 -2
  68. package/dist/proxy/proxy-handler.d.ts +1 -1
  69. package/dist/proxy/proxy-handler.js +52 -132
  70. package/dist/proxy/proxy-logging.d.ts +0 -2
  71. package/dist/proxy/proxy-logging.js +1 -3
  72. package/dist/proxy/resilience.d.ts +5 -2
  73. package/dist/proxy/resilience.js +16 -7
  74. package/dist/proxy/strategy/failover.js +2 -7
  75. package/dist/proxy/strategy/random.js +2 -2
  76. package/dist/proxy/strategy/round-robin.js +2 -2
  77. package/dist/proxy/strategy/scheduled.js +1 -8
  78. package/dist/proxy/strategy/targets-rule.d.ts +1 -0
  79. package/dist/proxy/strategy/targets-rule.js +5 -0
  80. package/dist/proxy/transport-fn.d.ts +25 -0
  81. package/dist/proxy/transport-fn.js +55 -0
  82. package/dist/proxy/transport.d.ts +0 -25
  83. package/dist/proxy/transport.js +0 -38
  84. package/dist/upgrade/checker.d.ts +25 -0
  85. package/dist/upgrade/checker.js +120 -0
  86. package/dist/upgrade/deployment.d.ts +2 -0
  87. package/dist/upgrade/deployment.js +20 -0
  88. package/dist/upgrade/version.d.ts +1 -0
  89. package/dist/upgrade/version.js +13 -0
  90. package/dist/utils/password.js +4 -2
  91. package/dist/utils/time-range.d.ts +9 -0
  92. package/dist/utils/time-range.js +40 -0
  93. package/frontend-dist/assets/CardContent-WrBnGhTg.js +1 -0
  94. package/frontend-dist/assets/CardTitle-BcDYk7cq.js +1 -0
  95. package/frontend-dist/assets/Checkbox-MZf0YsDG.js +1 -0
  96. package/frontend-dist/assets/CollapsibleTrigger-CrOH9HlW.js +1 -0
  97. package/frontend-dist/assets/Collection-DcTx_Y54.js +1 -0
  98. package/frontend-dist/assets/Dashboard-D0oDrSLr.js +3 -0
  99. package/frontend-dist/assets/DialogTitle-Cl5Cd7QH.js +1 -0
  100. package/frontend-dist/assets/{Input-l5ZurXX5.js → Input-O0ebU-Va.js} +1 -1
  101. package/frontend-dist/assets/Label-C_S0y7Um.js +1 -0
  102. package/frontend-dist/assets/Login-DGY7uF8P.js +1 -0
  103. package/frontend-dist/assets/Logs-ls8pv89b.js +1 -0
  104. package/frontend-dist/assets/ModelMappings-DGlf0S4s.js +1 -0
  105. package/frontend-dist/assets/Monitor-BSI87grz.js +1 -0
  106. package/frontend-dist/assets/PopperContent-C6Q7hDmf.js +1 -0
  107. package/frontend-dist/assets/Providers-ZkRpj8_m.js +1 -0
  108. package/frontend-dist/assets/ProxyEnhancement-DFPI1W6Z.js +5 -0
  109. package/frontend-dist/assets/RetryRules-DtM31qsl.js +1 -0
  110. package/frontend-dist/assets/RouterKeys-D63tRFKm.js +1 -0
  111. package/frontend-dist/assets/RovingFocusItem-BJoylAKU.js +1 -0
  112. package/frontend-dist/assets/SelectValue-CLp5z6_I.js +1 -0
  113. package/frontend-dist/assets/Settings-DSgRKbTQ.js +6 -0
  114. package/frontend-dist/assets/Setup-BDmj6CRk.js +1 -0
  115. package/frontend-dist/assets/Switch-Wz-t_zkv.js +1 -0
  116. package/frontend-dist/assets/TableHeader-DGtcqGkw.js +1 -0
  117. package/frontend-dist/assets/TabsTrigger-CPCi2HIa.js +1 -0
  118. package/frontend-dist/assets/Teleport-DdjYHlNK.js +3 -0
  119. package/frontend-dist/assets/TooltipTrigger-H_QoPY1n.js +1 -0
  120. package/frontend-dist/assets/UnifiedRequestDialog-BAAfMJJl.js +3 -0
  121. package/frontend-dist/assets/{VisuallyHidden-BwwTtzb9.js → VisuallyHidden-Cyk-jWwh.js} +1 -1
  122. package/frontend-dist/assets/VisuallyHiddenInput-CYjNe_H8.js +1 -0
  123. package/frontend-dist/assets/alert-dialog-Bi3dliLl.js +1 -0
  124. package/frontend-dist/assets/badge-Kkta3e9W.js +1 -0
  125. package/frontend-dist/assets/button-BQ3s7yNh.js +12 -0
  126. package/frontend-dist/assets/{createLucideIcon-Biq59l_W.js → createLucideIcon-D1tkPDOQ.js} +1 -1
  127. package/frontend-dist/assets/dialog-DoIATUYw.js +1 -0
  128. package/frontend-dist/assets/{file-text-DoRW0hQW.js → file-text-Dt6QP1bZ.js} +1 -1
  129. package/frontend-dist/assets/index-BY0E7CHR.js +1 -0
  130. package/frontend-dist/assets/index-Bnrh1mFY.css +1 -0
  131. package/frontend-dist/assets/lib-CxwxnlwW.js +1 -0
  132. package/frontend-dist/assets/{ohash.D__AXeF1-BGxYMs6k.js → ohash.D__AXeF1-b0PiKZB_.js} +1 -1
  133. package/frontend-dist/assets/{useClipboard-vaHkvJHw.js → useClipboard-Cnnz6AAN.js} +1 -1
  134. package/frontend-dist/assets/useLogRetention-DYP5LOAc.js +1 -0
  135. package/frontend-dist/assets/useNonce-DKbOCfgM.js +1 -0
  136. package/frontend-dist/assets/x-CAoitXRt.js +1 -0
  137. package/frontend-dist/index.html +18 -9
  138. package/package.json +2 -1
  139. package/dist/proxy/directive-parser.d.ts +0 -7
  140. package/frontend-dist/assets/CardContent-CIO85eT6.js +0 -1
  141. package/frontend-dist/assets/CardTitle-DiqIReMT.js +0 -1
  142. package/frontend-dist/assets/Checkbox-C2u5pIp4.js +0 -1
  143. package/frontend-dist/assets/CollapsibleTrigger-RKFL41om.js +0 -1
  144. package/frontend-dist/assets/Collection-iiNnuTQj.js +0 -1
  145. package/frontend-dist/assets/Dashboard-DOEqP6gF.js +0 -3
  146. package/frontend-dist/assets/DialogTitle-CEqndrf6.js +0 -1
  147. package/frontend-dist/assets/Label-PgGtS8v2.js +0 -1
  148. package/frontend-dist/assets/Login-DaN6ZcCx.js +0 -1
  149. package/frontend-dist/assets/Logs-CleRQ7Xk.js +0 -1
  150. package/frontend-dist/assets/ModelMappings-CacA_ua_.js +0 -1
  151. package/frontend-dist/assets/Monitor-LSMFOBN2.js +0 -1
  152. package/frontend-dist/assets/PopperContent-zLFHqQP0.js +0 -1
  153. package/frontend-dist/assets/Providers-NT5MUDU0.js +0 -1
  154. package/frontend-dist/assets/ProxyEnhancement-DhOy8nNy.js +0 -5
  155. package/frontend-dist/assets/RetryRules-7arWa3jB.js +0 -1
  156. package/frontend-dist/assets/RouterKeys-CdaZunRg.js +0 -1
  157. package/frontend-dist/assets/SelectValue-CSg-MKW_.js +0 -1
  158. package/frontend-dist/assets/Settings-1ntV9XE3.js +0 -6
  159. package/frontend-dist/assets/Setup-CXLTDhYJ.js +0 -1
  160. package/frontend-dist/assets/Switch-DivrIFE3.js +0 -1
  161. package/frontend-dist/assets/TableHeader-Bn0bodWx.js +0 -1
  162. package/frontend-dist/assets/TabsContent-MWvOH_LJ.js +0 -1
  163. package/frontend-dist/assets/TabsTrigger-WKkUfO2M.js +0 -1
  164. package/frontend-dist/assets/Teleport-B0PNXZbP.js +0 -3
  165. package/frontend-dist/assets/UnifiedRequestDialog-Ba2e7YuJ.js +0 -3
  166. package/frontend-dist/assets/VisuallyHiddenInput-EGZSP7s8.js +0 -1
  167. package/frontend-dist/assets/alert-dialog-CS1yFhdV.js +0 -1
  168. package/frontend-dist/assets/badge-C-QcC5n2.js +0 -1
  169. package/frontend-dist/assets/button-Dbz2Be22.js +0 -12
  170. package/frontend-dist/assets/dialog-Cr0YQlLW.js +0 -1
  171. package/frontend-dist/assets/index-0H2uCGbx.js +0 -1
  172. package/frontend-dist/assets/index-D-cdVNCb.css +0 -1
  173. package/frontend-dist/assets/lib-B0lieqgg.js +0 -1
  174. package/frontend-dist/assets/useForwardExpose-C2_ks3sW.js +0 -1
  175. package/frontend-dist/assets/useLogRetention-Cs_fiKql.js +0 -1
  176. package/frontend-dist/assets/useNonce-C9do0jOI.js +0 -1
  177. package/frontend-dist/assets/x-BlTnH_0_.js +0 -1
  178. /package/dist/proxy/{enhancement-handler.d.ts → enhancement/enhancement-handler.d.ts} +0 -0
  179. /package/dist/proxy/{response-cleaner.d.ts → enhancement/response-cleaner.d.ts} +0 -0
@@ -0,0 +1 @@
1
+ import{B as e,Et as t,G as n,H as r,K as i,L as a,Nt as o,R as s,Rt as c,U as l,V as u,W as d,at as f,ht as p,k as m,n as h,q as g,rt as _,st as v,vt as y}from"./button-BQ3s7yNh.js";import{a as b,i as x,n as S,r as C,t as w}from"./SelectValue-CLp5z6_I.js";import{n as T,r as E,t as D}from"./CollapsibleTrigger-CrOH9HlW.js";import{a as O,i as k,n as A,o as j,r as M,t as N}from"./dialog-DoIATUYw.js";import{a as P,c as F,i as I,n as L,o as R,r as z,t as B}from"./alert-dialog-Bi3dliLl.js";import{t as V}from"./Label-C_S0y7Um.js";import{t as H}from"./badge-Kkta3e9W.js";import{n as U}from"./lib-CxwxnlwW.js";import{n as W,t as ee}from"./CardContent-WrBnGhTg.js";import{n as te,t as G}from"./CardTitle-BcDYk7cq.js";import{t as K}from"./Input-O0ebU-Va.js";var q={key:0,class:`text-sm text-destructive mt-1`},J={class:`border rounded-lg p-3 space-y-3`},Y={class:`flex gap-3`},X={class:`flex-1`},Z={key:0,class:`text-sm text-destructive mt-1`},Q={class:`flex-1`},ne={key:0,class:`text-sm text-destructive mt-1`},re={class:`border rounded-lg p-3 space-y-3`},ie={class:`flex items-center justify-between`},ae={class:`flex items-end gap-2`},oe={class:`w-24`},se={key:0,class:`text-sm text-destructive mt-1`},ce={class:`w-24`},le={key:0,class:`text-sm text-destructive mt-1`},ue={class:`flex gap-3`},de={class:`flex-1`},fe={key:0,class:`text-sm text-destructive mt-1`},pe={class:`flex-1`},me={key:0,class:`text-sm text-destructive mt-1`},he={key:0,class:`text-sm text-muted-foreground`},ge={key:1,class:`border rounded-lg p-3 space-y-3`},_e={class:`flex items-center justify-between`},ve={key:0,class:`text-sm text-destructive`},ye={class:`flex gap-3`},be={class:`flex-1`},xe={key:0,class:`text-sm text-destructive mt-1`},Se={class:`flex-1`},Ce={key:0,class:`text-sm text-destructive mt-1`},we={class:`flex justify-end gap-1`},Te={key:1,class:`text-sm text-muted-foreground`},Ee=g({__name:`MappingGroupFormDialog`,props:{open:{type:Boolean},editingId:{},form:{},providers:{},providerModels:{}},emits:[`update:open`,`save`,`addWindow`,`removeWindow`,`addTarget`,`removeTarget`,`moveTargetUp`,`moveTargetDown`],setup(m,{emit:g}){let _=m,T=g,E=e(()=>_.providerModels.get(_.form.default.provider_id)||[]);function D(e){let t=_.form.windows[e]?.target?.provider_id;return t&&_.providerModels.get(t)||[]}function P(e){if(typeof e!=`string`)return;_.form.default.provider_id=e;let t=_.providerModels.get(e)||[];_.form.default.backend_model=t[0]||``}function F(e,t){if(typeof t!=`string`)return;_.form.windows[e].target.provider_id=t;let n=_.providerModels.get(t)||[];_.form.windows[e].target.backend_model=n[0]||``}function I(e){let t=_.form.targets[e]?.provider_id;return t&&_.providerModels.get(t)||[]}function L(e,t){if(typeof t!=`string`)return;_.form.targets[e].provider_id=t;let n=_.providerModels.get(t)||[];_.form.targets[e].backend_model=n[0]||``}function R(){H()&&T(`save`)}let z=/^\d{2}:\d{2}$/,B=t({});function H(){let e={};return _.form.client_model.trim()||(e.client_model=`请输入客户端模型名称`),_.form.strategy===`scheduled`?(_.form.default.provider_id||(e[`default.provider_id`]=`请选择供应商`),_.form.default.backend_model||(e[`default.backend_model`]=`请选择后端模型`),_.form.windows.forEach((t,n)=>{z.test(t.start)||(e[`window.${n}.start`]=`格式:HH:MM`),z.test(t.end)||(e[`window.${n}.end`]=`格式:HH:MM`),t.target.provider_id||(e[`window.${n}.provider_id`]=`请选择供应商`),t.target.backend_model||(e[`window.${n}.backend_model`]=`请选择后端模型`)})):(_.form.targets.length===0&&(e.targets=`至少添加一个目标`),_.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(()=>_.open,e=>{e&&(B.value={})}),(e,t)=>(f(),r(o(j),{open:m.open,"onUpdate:open":t[7]||=e=>T(`update:open`,e)},{default:y(()=>[i(o(O),{class:`max-w-2xl`},{default:y(()=>[i(o(A),null,{default:y(()=>[i(o(N),null,{default:y(()=>[n(c(m.editingId?`编辑分组`:`添加分组`),1)]),_:1}),i(o(k),null,{default:y(()=>[...t[8]||=[n(`配置客户端模型到后端供应商模型的映射规则`,-1)]]),_:1})]),_:1}),u(`form`,{onSubmit:a(R,[`prevent`]),class:`space-y-4`},[u(`div`,null,[i(o(V),{class:`block text-sm font-medium text-foreground mb-1`},{default:y(()=>[...t[9]||=[n(`客户端模型`,-1)]]),_:1}),i(o(K),{modelValue:m.form.client_model,"onUpdate:modelValue":t[0]||=e=>m.form.client_model=e,type:`text`,required:``,onInput:t[1]||=e=>delete B.value.client_model},null,8,[`modelValue`]),B.value.client_model?(f(),d(`p`,q,c(B.value.client_model),1)):l(``,!0)]),u(`div`,null,[i(o(V),{class:`block text-sm font-medium text-foreground mb-1`},{default:y(()=>[...t[10]||=[n(`策略`,-1)]]),_:1}),i(o(b),{modelValue:m.form.strategy,"onUpdate:modelValue":t[2]||=e=>m.form.strategy=e},{default:y(()=>[i(o(S),null,{default:y(()=>[i(o(w),{placeholder:`选择策略`})]),_:1}),i(o(x),null,{default:y(()=>[i(o(C),{value:`scheduled`},{default:y(()=>[...t[11]||=[n(`定时切换 (scheduled)`,-1)]]),_:1}),i(o(C),{value:`round-robin`},{default:y(()=>[...t[12]||=[n(`轮询 (round-robin)`,-1)]]),_:1}),i(o(C),{value:`random`},{default:y(()=>[...t[13]||=[n(`随机 (random)`,-1)]]),_:1}),i(o(C),{value:`failover`},{default:y(()=>[...t[14]||=[n(`故障转移 (failover)`,-1)]]),_:1})]),_:1})]),_:1},8,[`modelValue`])]),m.form.strategy===`scheduled`?(f(),d(s,{key:0},[u(`div`,J,[t[17]||=u(`div`,{class:`text-sm font-medium text-foreground`},`默认目标`,-1),u(`div`,Y,[u(`div`,X,[i(o(V),{class:`block text-xs text-muted-foreground mb-1`},{default:y(()=>[...t[15]||=[n(`供应商`,-1)]]),_:1}),i(o(b),{"model-value":m.form.default.provider_id,"onUpdate:modelValue":P},{default:y(()=>[i(o(S),null,{default:y(()=>[i(o(w),{placeholder:`选择供应商`})]),_:1}),i(o(x),null,{default:y(()=>[(f(!0),d(s,null,v(m.providers,e=>(f(),r(o(C),{key:e.id,value:e.id},{default:y(()=>[n(c(e.name),1)]),_:2},1032,[`value`]))),128))]),_:1})]),_:1},8,[`model-value`]),B.value[`default.provider_id`]?(f(),d(`p`,Z,c(B.value[`default.provider_id`]),1)):l(``,!0)]),u(`div`,Q,[i(o(V),{class:`block text-xs text-muted-foreground mb-1`},{default:y(()=>[...t[16]||=[n(`后端模型`,-1)]]),_:1}),i(o(b),{modelValue:m.form.default.backend_model,"onUpdate:modelValue":t[3]||=e=>m.form.default.backend_model=e,disabled:E.value.length===0},{default:y(()=>[i(o(S),null,{default:y(()=>[i(o(w),{placeholder:E.value.length===0?`暂无可用模型`:`选择后端模型`},null,8,[`placeholder`])]),_:1}),i(o(x),null,{default:y(()=>[(f(!0),d(s,null,v(E.value,e=>(f(),r(o(C),{key:e,value:e},{default:y(()=>[n(c(e),1)]),_:2},1032,[`value`]))),128))]),_:1})]),_:1},8,[`modelValue`,`disabled`]),B.value[`default.backend_model`]?(f(),d(`p`,ne,c(B.value[`default.backend_model`]),1)):l(``,!0)])])]),u(`div`,re,[u(`div`,ie,[t[19]||=u(`div`,{class:`text-sm font-medium text-foreground`},`时间窗口`,-1),i(o(h),{type:`button`,variant:`outline`,size:`sm`,onClick:t[4]||=e=>T(`addWindow`)},{default:y(()=>[...t[18]||=[n(`添加窗口`,-1)]]),_:1})]),(f(!0),d(s,null,v(m.form.windows,(e,a)=>(f(),d(`div`,{key:a,class:`border rounded-md p-2 space-y-2`},[u(`div`,ae,[u(`div`,oe,[i(o(V),{class:`block text-xs text-muted-foreground mb-1`},{default:y(()=>[...t[20]||=[n(`开始`,-1)]]),_:1}),i(o(K),{modelValue:e.start,"onUpdate:modelValue":t=>e.start=t,type:`text`,placeholder:`HH:MM`,required:``,onInput:e=>delete B.value[`window.${a}.start`]},null,8,[`modelValue`,`onUpdate:modelValue`,`onInput`]),B.value[`window.${a}.start`]?(f(),d(`p`,se,c(B.value[`window.${a}.start`]),1)):l(``,!0)]),t[23]||=u(`span`,{class:`text-muted-foreground pb-1.5`},`-`,-1),u(`div`,ce,[i(o(V),{class:`block text-xs text-muted-foreground mb-1`},{default:y(()=>[...t[21]||=[n(`结束`,-1)]]),_:1}),i(o(K),{modelValue:e.end,"onUpdate:modelValue":t=>e.end=t,type:`text`,placeholder:`HH:MM`,required:``,onInput:e=>delete B.value[`window.${a}.end`]},null,8,[`modelValue`,`onUpdate:modelValue`,`onInput`]),B.value[`window.${a}.end`]?(f(),d(`p`,le,c(B.value[`window.${a}.end`]),1)):l(``,!0)]),t[24]||=u(`div`,{class:`flex-1`},null,-1),i(o(h),{type:`button`,variant:`ghost`,size:`sm`,class:`text-destructive shrink-0`,onClick:e=>T(`removeWindow`,a)},{default:y(()=>[...t[22]||=[n(`删除`,-1)]]),_:1},8,[`onClick`])]),u(`div`,ue,[u(`div`,de,[i(o(V),{class:`block text-xs text-muted-foreground mb-1`},{default:y(()=>[...t[25]||=[n(`供应商`,-1)]]),_:1}),i(o(b),{"model-value":e.target.provider_id,"onUpdate:modelValue":e=>F(a,e)},{default:y(()=>[i(o(S),null,{default:y(()=>[i(o(w),{placeholder:`选择供应商`})]),_:1}),i(o(x),null,{default:y(()=>[(f(!0),d(s,null,v(m.providers,e=>(f(),r(o(C),{key:e.id,value:e.id},{default:y(()=>[n(c(e.name),1)]),_:2},1032,[`value`]))),128))]),_:1})]),_:1},8,[`model-value`,`onUpdate:modelValue`]),B.value[`window.${a}.provider_id`]?(f(),d(`p`,fe,c(B.value[`window.${a}.provider_id`]),1)):l(``,!0)]),u(`div`,pe,[i(o(V),{class:`block text-xs text-muted-foreground mb-1`},{default:y(()=>[...t[26]||=[n(`后端模型`,-1)]]),_:1}),i(o(b),{modelValue:e.target.backend_model,"onUpdate:modelValue":t=>e.target.backend_model=t,disabled:D(a).length===0},{default:y(()=>[i(o(S),null,{default:y(()=>[i(o(w),{placeholder:D(a).length===0?`暂无可用模型`:`选择后端模型`},null,8,[`placeholder`])]),_:2},1024),i(o(x),null,{default:y(()=>[(f(!0),d(s,null,v(D(a),e=>(f(),r(o(C),{key:e,value:e},{default:y(()=>[n(c(e),1)]),_:2},1032,[`value`]))),128))]),_:2},1024)]),_:2},1032,[`modelValue`,`onUpdate:modelValue`,`disabled`]),B.value[`window.${a}.backend_model`]?(f(),d(`p`,me,c(B.value[`window.${a}.backend_model`]),1)):l(``,!0)])])]))),128)),m.form.windows.length===0?(f(),d(`div`,he,`暂无窗口`)):l(``,!0)])],64)):(f(),d(`div`,ge,[u(`div`,_e,[t[28]||=u(`div`,{class:`text-sm font-medium text-foreground`},`目标列表`,-1),i(o(h),{type:`button`,variant:`outline`,size:`sm`,onClick:t[5]||=e=>T(`addTarget`)},{default:y(()=>[...t[27]||=[n(`添加目标`,-1)]]),_:1})]),B.value.targets?(f(),d(`p`,ve,c(B.value.targets),1)):l(``,!0),(f(!0),d(s,null,v(m.form.targets,(e,a)=>(f(),d(`div`,{key:a,class:`border rounded-md p-2 space-y-2`},[u(`div`,ye,[u(`div`,be,[i(o(V),{class:`block text-xs text-muted-foreground mb-1`},{default:y(()=>[...t[29]||=[n(`供应商`,-1)]]),_:1}),i(o(b),{"model-value":e.provider_id,"onUpdate:modelValue":e=>L(a,e)},{default:y(()=>[i(o(S),null,{default:y(()=>[i(o(w),{placeholder:`选择供应商`})]),_:1}),i(o(x),null,{default:y(()=>[(f(!0),d(s,null,v(m.providers,e=>(f(),r(o(C),{key:e.id,value:e.id},{default:y(()=>[n(c(e.name),1)]),_:2},1032,[`value`]))),128))]),_:1})]),_:1},8,[`model-value`,`onUpdate:modelValue`]),B.value[`target.${a}.provider_id`]?(f(),d(`p`,xe,c(B.value[`target.${a}.provider_id`]),1)):l(``,!0)]),u(`div`,Se,[i(o(V),{class:`block text-xs text-muted-foreground mb-1`},{default:y(()=>[...t[30]||=[n(`后端模型`,-1)]]),_:1}),i(o(b),{modelValue:e.backend_model,"onUpdate:modelValue":t=>e.backend_model=t,disabled:I(a).length===0},{default:y(()=>[i(o(S),null,{default:y(()=>[i(o(w),{placeholder:I(a).length===0?`暂无可用模型`:`选择后端模型`},null,8,[`placeholder`])]),_:2},1024),i(o(x),null,{default:y(()=>[(f(!0),d(s,null,v(I(a),e=>(f(),r(o(C),{key:e,value:e},{default:y(()=>[n(c(e),1)]),_:2},1032,[`value`]))),128))]),_:2},1024)]),_:2},1032,[`modelValue`,`onUpdate:modelValue`,`disabled`]),B.value[`target.${a}.backend_model`]?(f(),d(`p`,Ce,c(B.value[`target.${a}.backend_model`]),1)):l(``,!0)])]),u(`div`,we,[m.form.strategy===`failover`?(f(),r(o(h),{key:0,type:`button`,variant:`ghost`,size:`sm`,disabled:a===0,onClick:e=>T(`moveTargetUp`,a)},{default:y(()=>[...t[31]||=[n(`↑`,-1)]]),_:1},8,[`disabled`,`onClick`])):l(``,!0),m.form.strategy===`failover`?(f(),r(o(h),{key:1,type:`button`,variant:`ghost`,size:`sm`,disabled:a===m.form.targets.length-1,onClick:e=>T(`moveTargetDown`,a)},{default:y(()=>[...t[32]||=[n(`↓`,-1)]]),_:1},8,[`disabled`,`onClick`])):l(``,!0),i(o(h),{type:`button`,variant:`ghost`,size:`sm`,class:`text-destructive shrink-0`,onClick:e=>T(`removeTarget`,a)},{default:y(()=>[...t[33]||=[n(`删除`,-1)]]),_:1},8,[`onClick`])])]))),128)),m.form.targets.length===0?(f(),d(`div`,Te,`暂无目标`)):l(``,!0)])),i(o(M),null,{default:y(()=>[i(o(h),{type:`button`,variant:`outline`,onClick:t[6]||=e=>T(`update:open`,!1)},{default:y(()=>[...t[34]||=[n(`取消`,-1)]]),_:1}),i(o(h),{type:`submit`},{default:y(()=>[...t[35]||=[n(`保存`,-1)]]),_:1})]),_:1})],32)]),_:1})]),_:1},8,[`open`]))}}),De=g({__name:`MappingGroupDeleteDialog`,props:{target:{}},emits:[`confirm`,`cancel`],setup(e,{emit:t}){let a=t;return(t,s)=>(f(),r(o(F),{open:!!e.target,"onUpdate:open":s[1]||=e=>{e||a(`cancel`)}},{default:y(()=>[i(o(P),null,{default:y(()=>[i(o(L),null,{default:y(()=>[i(o(B),null,{default:y(()=>[...s[2]||=[n(`确认删除`,-1)]]),_:1}),i(o(I),null,{default:y(()=>[n(`确定要删除分组「`+c(e.target?.client_model)+`」吗?`,1)]),_:1})]),_:1}),i(o(z),null,{default:y(()=>[i(o(R),null,{default:y(()=>[...s[3]||=[n(`取消`,-1)]]),_:1}),i(o(h),{variant:`destructive`,onClick:s[0]||=e=>a(`confirm`)},{default:y(()=>[...s[4]||=[n(`删除`,-1)]]),_:1})]),_:1})]),_:1})]),_:1},8,[`open`]))}}),Oe={class:`p-6`},ke={class:`flex items-center justify-between mb-4`},Ae={class:`space-y-4`},je={class:`flex items-center gap-3`},Me={class:`flex items-center gap-2`},Ne={key:0,class:`space-y-3`},Pe={class:`flex items-center gap-2 text-sm`},$={class:`font-mono`},Fe={key:0,class:`space-y-2`},Ie={class:`font-mono text-xs bg-muted px-2 py-0.5 rounded`},Le={class:`font-mono`},Re={key:1,class:`text-sm text-muted-foreground`},ze={key:1,class:`space-y-2`},Be={key:0,class:`text-muted-foreground text-xs`},Ve={class:`font-mono`},He={key:0,class:`text-sm text-muted-foreground`},Ue={key:0,class:`text-center text-muted-foreground py-12 bg-card rounded-xl border`},We=g({__name:`ModelMappings`,setup(a){let p={client_model:``,strategy:`scheduled`,default:{backend_model:``,provider_id:``},windows:[],targets:[]},g=t([]),b=t([]),x=t(!1),S=t(null),C=t(null),w=t({...p}),O=e(()=>{let e=new Map;for(let t of b.value)e.set(t.id,t.name);return e}),k=e(()=>{let e=new Map;for(let t of b.value){let n=t.models;Array.isArray(n)&&n.length>0&&e.set(t.id,[...n])}return e}),A=e(()=>g.value.map(e=>{let t={};try{t=JSON.parse(e.rule)}catch{}return{...e,parsedRule:t}}));async function j(){let e=await Promise.allSettled([m.getMappingGroups(),m.getProviders()]);e[0].status===`fulfilled`?g.value=e[0].value:console.error(`Failed to load groups:`,e[0].reason),e[1].status===`fulfilled`?b.value=e[1].value:(console.error(`Failed to load providers:`,e[1].reason),U.error(e[1].reason?.apiMessage||`加载供应商失败`))}function M(){S.value=null;let e=b.value[0]?.id||``;w.value={client_model:``,strategy:`scheduled`,default:{backend_model:(k.value.get(e)||[])[0]||``,provider_id:e},windows:[],targets:[]},x.value=!0}function N(e){S.value=e.id;let t={};try{t=JSON.parse(e.rule)}catch{}if(e.strategy===`scheduled`)w.value={...p,client_model:e.client_model,strategy:e.strategy,default:{backend_model:t.default?.backend_model||``,provider_id:t.default?.provider_id||b.value[0]?.id||``},windows:t.windows?JSON.parse(JSON.stringify(t.windows)):[]};else{let n=b.value[0]?.id||``,r=k.value.get(n)||[];w.value={...p,client_model:e.client_model,strategy:e.strategy,targets:Array.isArray(t.targets)?t.targets.map(e=>({backend_model:e.backend_model||``,provider_id:e.provider_id||n})):[{backend_model:r[0]||``,provider_id:n}]}}x.value=!0}function P(){let e=b.value[0]?.id||``,t=k.value.get(e)||[];w.value.windows.push({start:``,end:``,target:{backend_model:t[0]||``,provider_id:e}})}function F(e){w.value.windows.splice(e,1)}function I(){let e=b.value[0]?.id||``,t=k.value.get(e)||[];w.value.targets.push({backend_model:t[0]||``,provider_id:e})}function L(e){w.value.targets.splice(e,1)}function R(e){if(e<=0)return;let t=w.value.targets;[t[e-1],t[e]]=[t[e],t[e-1]]}function z(e){let t=w.value.targets;e>=t.length-1||([t[e],t[e+1]]=[t[e+1],t[e]])}async function B(){try{let e;e=w.value.strategy===`scheduled`?JSON.stringify({default:w.value.default,windows:w.value.windows}):JSON.stringify({targets:w.value.targets});let t={client_model:w.value.client_model,strategy:w.value.strategy,rule:e};S.value?await m.updateMappingGroup(S.value,t):await m.createMappingGroup(t),x.value=!1,await j()}catch(e){console.error(`Failed to save mapping group:`,e),U.error(e.apiMessage||`保存分组失败`)}}async function V(){let e=C.value;if(e){C.value=null;try{await m.deleteMappingGroup(e.id),await j()}catch(e){console.error(`Failed to delete mapping group:`,e),U.error(e.apiMessage||`删除分组失败`)}}}return _(j),(e,t)=>(f(),d(`div`,Oe,[u(`div`,ke,[t[3]||=u(`h2`,{class:`text-lg font-semibold text-foreground`},`模型映射`,-1),i(o(h),{onClick:M,class:`flex items-center gap-1`},{default:y(()=>[...t[2]||=[u(`svg`,{class:`w-4 h-4`,fill:`none`,stroke:`currentColor`,viewBox:`0 0 24 24`},[u(`path`,{"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`,d:`M12 4v16m8-8H4`})],-1),n(` 添加分组 `,-1)]]),_:1})]),u(`div`,Ae,[(f(!0),d(s,null,v(A.value,e=>(f(),r(o(W),{key:e.id},{default:y(()=>[i(o(E),{"default-open":!0},{default:y(()=>[i(o(te),{class:`flex flex-row items-center justify-between gap-4`},{default:y(()=>[u(`div`,je,[i(o(G),{class:`font-mono text-sm`},{default:y(()=>[n(c(e.client_model),1)]),_:2},1024),i(o(H),{variant:`secondary`},{default:y(()=>[n(c(e.strategy),1)]),_:2},1024)]),u(`div`,Me,[i(o(D),{"as-child":``},{default:y(()=>[i(o(h),{variant:`ghost`,size:`sm`},{default:y(()=>[...t[4]||=[n(` 展开 `,-1)]]),_:1})]),_:1}),i(o(h),{variant:`ghost`,size:`sm`,onClick:t=>N(e)},{default:y(()=>[...t[5]||=[n(`编辑`,-1)]]),_:1},8,[`onClick`]),i(o(h),{variant:`ghost`,size:`sm`,class:`text-destructive hover:text-destructive`,onClick:t=>C.value=e},{default:y(()=>[...t[6]||=[n(`删除`,-1)]]),_:1},8,[`onClick`])])]),_:2},1024),i(o(T),null,{default:y(()=>[i(o(ee),null,{default:y(()=>[e.strategy===`scheduled`?(f(),d(`div`,Ne,[u(`div`,Pe,[t[7]||=u(`span`,{class:`text-muted-foreground`},`默认模型:`,-1),u(`span`,$,c(e.parsedRule.default?.backend_model||`-`),1),t[8]||=u(`span`,{class:`text-muted-foreground`},`/`,-1),u(`span`,null,c(O.value.get(e.parsedRule.default?.provider_id||``)||`-`),1)]),e.parsedRule.windows?.length?(f(),d(`div`,Fe,[t[10]||=u(`div`,{class:`text-sm text-muted-foreground`},`时间窗口`,-1),(f(!0),d(s,null,v(e.parsedRule.windows,(e,n)=>(f(),d(`div`,{key:n,class:`flex items-center gap-2 text-sm`},[u(`span`,Ie,c(e.start)+` - `+c(e.end),1),u(`span`,Le,c(e.target.backend_model),1),t[9]||=u(`span`,{class:`text-muted-foreground`},`/`,-1),u(`span`,null,c(O.value.get(e.target.provider_id)||e.target.provider_id),1)]))),128))])):(f(),d(`div`,Re,`无时间窗口`))])):(f(),d(`div`,ze,[(f(!0),d(s,null,v(e.parsedRule.targets||[],(n,r)=>(f(),d(`div`,{key:r,class:`flex items-center gap-2 text-sm`},[e.strategy===`failover`?(f(),d(`span`,Be,c(r+1)+`.`,1)):l(``,!0),u(`span`,Ve,c(n.backend_model),1),t[11]||=u(`span`,{class:`text-muted-foreground`},`/`,-1),u(`span`,null,c(O.value.get(n.provider_id)||n.provider_id),1)]))),128)),(e.parsedRule.targets||[]).length?l(``,!0):(f(),d(`div`,He,`无目标`))]))]),_:2},1024)]),_:2},1024)]),_:2},1024)]),_:2},1024))),128)),g.value.length===0?(f(),d(`div`,Ue,` 暂无映射分组 `)):l(``,!0)]),i(Ee,{open:x.value,"onUpdate:open":t[0]||=e=>x.value=e,"editing-id":S.value,form:w.value,providers:b.value,"provider-models":k.value,onSave:B,onAddWindow:P,onRemoveWindow:F,onAddTarget:I,onRemoveTarget:L,onMoveTargetUp:R,onMoveTargetDown:z},null,8,[`open`,`editing-id`,`form`,`providers`,`provider-models`]),i(De,{target:C.value,onConfirm:V,onCancel:t[1]||=e=>C.value=null},null,8,[`target`])]))}});export{We as default};
@@ -0,0 +1 @@
1
+ import{B as e,Et as t,Ft as n,G as r,H as i,K as a,Lt as o,Nt as s,R as c,Rt as l,St as u,U as d,V as f,W as p,at as m,ht as h,it as g,k as _,q as v,rt as y,st as b,vt as x}from"./button-BQ3s7yNh.js";import{n as S,t as C}from"./UnifiedRequestDialog-BAAfMJJl.js";import{t as w}from"./badge-Kkta3e9W.js";import{n as T,t as E}from"./CardContent-WrBnGhTg.js";import{n as D,t as O}from"./CardTitle-BcDYk7cq.js";import{a as k,i as A,n as j,o as M,r as N,t as P}from"./TableHeader-DGtcqGkw.js";var F={class:`grid grid-cols-2 lg:grid-cols-4 gap-4 mb-6`},I={class:`text-2xl font-bold text-foreground mt-1`},L={class:`text-xs text-muted-foreground mt-1`},R={class:`text-2xl font-bold text-foreground mt-1`},z={class:`text-xs text-muted-foreground mt-1`},B={class:`text-2xl font-bold text-foreground mt-1`},V={class:`text-xs text-muted-foreground mt-1`},H={class:`text-2xl font-bold text-foreground mt-1`},ee={class:`text-xs text-muted-foreground mt-1`},te=v({__name:`MonitorHeader`,props:{stats:{},activeCount:{},streamCount:{}},setup(t){let n=t,r=e(()=>!n.stats||n.stats.totalRequests===0?`0.0`:(n.stats.errorCount/n.stats.totalRequests*100).toFixed(1)),i=e(()=>!n.stats||n.stats.totalRequests===0?`0.0`:(n.stats.retryCount/n.stats.totalRequests*100).toFixed(1)),o=e(()=>n.stats?n.stats.p50LatencyMs.toFixed(0):`--`);return(e,n)=>(m(),p(`div`,F,[a(s(T),null,{default:x(()=>[a(s(E),{class:`p-4`},{default:x(()=>[n[0]||=f(`p`,{class:`text-sm text-muted-foreground`},`活跃请求`,-1),f(`p`,I,l(t.activeCount),1),f(`p`,L,l(t.streamCount)+` 流式 / `+l(t.activeCount-t.streamCount)+` 非流式 `,1)]),_:1})]),_:1}),a(s(T),null,{default:x(()=>[a(s(E),{class:`p-4`},{default:x(()=>[n[1]||=f(`p`,{class:`text-sm text-muted-foreground`},`错误率`,-1),f(`p`,R,l(r.value)+`%`,1),f(`p`,z,l(t.stats?.errorCount??0)+` / `+l(t.stats?.totalRequests??0),1)]),_:1})]),_:1}),a(s(T),null,{default:x(()=>[a(s(E),{class:`p-4`},{default:x(()=>[n[2]||=f(`p`,{class:`text-sm text-muted-foreground`},`P50 延迟`,-1),f(`p`,B,l(o.value)+`ms`,1),f(`p`,V,` 平均 `+l(t.stats?.avgLatencyMs?.toFixed(0)??`--`)+`ms `,1)]),_:1})]),_:1}),a(s(T),null,{default:x(()=>[a(s(E),{class:`p-4`},{default:x(()=>[n[3]||=f(`p`,{class:`text-sm text-muted-foreground`},`重试率`,-1),f(`p`,H,l(i.value)+`%`,1),f(`p`,ee,l(t.stats?.retryCount??0)+` / `+l(t.stats?.totalRequests??0),1)]),_:1})]),_:1})]))}}),ne={class:`space-y-3`},re={key:0,class:`text-sm text-muted-foreground`},ie={class:`flex items-center justify-between text-sm`},U={class:`font-medium text-foreground`},W={class:`text-muted-foreground`},G={key:0,class:`h-2 bg-muted rounded-full overflow-hidden`},K={key:1,class:`flex gap-3 text-xs text-muted-foreground`},q=v({__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(i,a)=>(m(),p(`div`,ne,[e.providers.length===0?(m(),p(`div`,re,` 暂无并发数据 `)):d(``,!0),(m(!0),p(c,null,b(e.providers,e=>(m(),p(`div`,{key:e.providerId,class:`space-y-1`},[f(`div`,ie,[f(`span`,U,l(e.providerName),1),f(`span`,W,[e.maxConcurrency===0?(m(),p(c,{key:0},[r(`未限制`)],64)):(m(),p(c,{key:1},[r(l(e.active)+` / `+l(e.maxConcurrency),1)],64))])]),e.maxConcurrency>0?(m(),p(`div`,G,[f(`div`,{class:n([`h-full rounded-full transition-all duration-300`,t(e.active,e.maxConcurrency)]),style:o({width:`${Math.min(100,e.active/e.maxConcurrency*100)}%`})},null,6)])):d(``,!0),e.maxConcurrency>0?(m(),p(`div`,K,[f(`span`,null,`排队: `+l(e.queued),1),f(`span`,null,`队列上限: `+l(e.maxQueueSize),1)])):d(``,!0)]))),128))]))}}),J={key:0,class:`text-sm text-muted-foreground`},Y={key:1,class:`grid grid-cols-2 gap-3 text-sm`},ae={class:`font-medium text-foreground`},oe={class:`font-medium text-foreground`},se={class:`col-span-2`},ce={class:`flex items-center justify-between`},le={class:`text-muted-foreground`},ue={class:`h-2 bg-muted rounded-full overflow-hidden mt-1`},de={class:`font-medium text-foreground`},fe={class:`font-medium text-foreground`},pe={class:`col-span-2`},me={class:`font-medium text-foreground`},he=v({__name:`RuntimePanel`,props:{runtime:{}},setup(t){let n=t,r=e(()=>!n.runtime||n.runtime.memoryUsage.heapTotal===0?0:Math.min(100,n.runtime.memoryUsage.heapUsed/n.runtime.memoryUsage.heapTotal*100));function i(e){let t=Math.floor(e/1e3);return`${Math.floor(t/3600)}h ${Math.floor(t%3600/60)}m ${t%60}s`}function a(e){return e<1024?`${e}B`:e<1024*1024?`${(e/1024).toFixed(1)}KB`:`${(e/(1024*1024)).toFixed(1)}MB`}return(e,n)=>t.runtime?(m(),p(`div`,Y,[f(`div`,null,[n[0]||=f(`p`,{class:`text-muted-foreground`},`运行时间`,-1),f(`p`,ae,l(i(t.runtime.uptimeMs)),1)]),f(`div`,null,[n[1]||=f(`p`,{class:`text-muted-foreground`},`内存 RSS`,-1),f(`p`,oe,l(a(t.runtime.memoryUsage.rss)),1)]),f(`div`,se,[f(`div`,ce,[n[2]||=f(`p`,{class:`text-muted-foreground`},`Heap 使用`,-1),f(`p`,le,l(a(t.runtime.memoryUsage.heapUsed))+` / `+l(a(t.runtime.memoryUsage.heapTotal)),1)]),f(`div`,ue,[f(`div`,{class:`h-full bg-blue-500 rounded-full transition-all duration-300`,style:o({width:`${r.value}%`})},null,4)])]),f(`div`,null,[n[3]||=f(`p`,{class:`text-muted-foreground`},`Active Handles`,-1),f(`p`,de,l(t.runtime.activeHandles),1)]),f(`div`,null,[n[4]||=f(`p`,{class:`text-muted-foreground`},`Active Requests`,-1),f(`p`,fe,l(t.runtime.activeRequests),1)]),f(`div`,pe,[n[5]||=f(`p`,{class:`text-muted-foreground`},`Event Loop 延迟`,-1),f(`p`,me,l(t.runtime.eventLoopDelayMs.toFixed(2))+`ms`,1)])])):(m(),p(`div`,J,`暂无运行时数据`))}}),ge={key:0,class:`text-sm text-muted-foreground`},_e={key:1,class:`space-y-2`},ve={class:`flex items-center justify-between text-sm`},ye={class:`text-muted-foreground`},be={class:`h-2 bg-muted rounded-full overflow-hidden`},xe=v({__name:`StatusCodePanel`,props:{byStatusCode:{}},setup(t){let r=t,i=e(()=>Object.values(r.byStatusCode).reduce((e,t)=>e+t,0)),a=e(()=>{let e=r.byStatusCode,t=i.value||1,n=s(e,200,299),a=s(e,400,499)-(e[429]||0),o=e[429]||0,c=s(e,500,599);return[{label:`2xx 成功`,count:n,percent:(n/t*100).toFixed(1),textClass:`text-green-600 dark:text-green-400`,barClass:`bg-green-500`},{label:`4xx 客户端错误`,count:a,percent:(a/t*100).toFixed(1),textClass:`text-yellow-600 dark:text-yellow-400`,barClass:`bg-yellow-500`},{label:`429 限流`,count:o,percent:(o/t*100).toFixed(1),textClass:`text-orange-600 dark:text-orange-400`,barClass:`bg-orange-500`},{label:`5xx 服务端错误`,count:c,percent:(c/t*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)=>i.value===0?(m(),p(`div`,ge,`暂无状态码数据`)):(m(),p(`div`,_e,[(m(!0),p(c,null,b(a.value,e=>(m(),p(`div`,{key:e.label,class:`space-y-1`},[f(`div`,ve,[f(`span`,{class:n(e.textClass)},l(e.label),3),f(`span`,ye,l(e.count)+` (`+l(e.percent)+`%) `,1)]),f(`div`,be,[f(`div`,{class:n([`h-full rounded-full transition-all duration-300`,e.barClass]),style:o({width:`${e.percent}%`})},null,6)])]))),128))]))}}),Se={key:0,class:`text-sm text-muted-foreground py-4 text-center`},Ce={key:1,class:`text-sm text-muted-foreground py-4 text-center`},we={class:`flex flex-wrap gap-1`},Te={key:0,class:`text-xs text-muted-foreground`},Ee=v({__name:`ProviderStatsTable`,props:{stats:{}},setup(t){let o=t,u=e(()=>o.stats?Object.entries(o.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,p99Latency:o.stats.p99LatencyMs.toFixed(0)+`ms`})):[]);return(e,o)=>t.stats?u.value.length===0?(m(),p(`div`,Ce,` 暂无 Provider 统计 `)):(m(),i(s(M),{key:2},{default:x(()=>[a(s(P),null,{default:x(()=>[a(s(N),null,{default:x(()=>[a(s(j),null,{default:x(()=>[...o[0]||=[r(`Provider`,-1)]]),_:1}),a(s(j),{class:`text-right`},{default:x(()=>[...o[1]||=[r(`请求数`,-1)]]),_:1}),a(s(j),{class:`text-right`},{default:x(()=>[...o[2]||=[r(`成功率`,-1)]]),_:1}),a(s(j),{class:`text-right`},{default:x(()=>[...o[3]||=[r(`平均延迟`,-1)]]),_:1}),a(s(j),{class:`text-right`},{default:x(()=>[...o[4]||=[r(`P99 延迟`,-1)]]),_:1}),a(s(j),{class:`text-right`},{default:x(()=>[...o[5]||=[r(`重试率`,-1)]]),_:1}),a(s(j),null,{default:x(()=>[...o[6]||=[r(`Top Errors`,-1)]]),_:1})]),_:1})]),_:1}),a(s(k),null,{default:x(()=>[(m(!0),p(c,null,b(u.value,e=>(m(),i(s(N),{key:e.id},{default:x(()=>[a(s(A),{class:`font-medium`},{default:x(()=>[r(l(e.name),1)]),_:2},1024),a(s(A),{class:`text-right`},{default:x(()=>[r(l(e.stats.totalRequests),1)]),_:2},1024),a(s(A),{class:`text-right`},{default:x(()=>[f(`span`,{class:n(e.successRate>=95?`text-green-600`:e.successRate>=80?`text-yellow-600`:`text-red-500`)},l(e.successRate.toFixed(1))+`% `,3)]),_:2},1024),a(s(A),{class:`text-right`},{default:x(()=>[r(l(e.stats.avgLatencyMs.toFixed(0))+`ms`,1)]),_:2},1024),a(s(A),{class:`text-right`},{default:x(()=>[r(l(e.p99Latency),1)]),_:2},1024),a(s(A),{class:`text-right`},{default:x(()=>[f(`span`,{class:n(e.retryRate>10?`text-yellow-600`:``)},l(e.retryRate.toFixed(1))+`% `,3)]),_:2},1024),a(s(A),null,{default:x(()=>[f(`div`,we,[(m(!0),p(c,null,b(e.stats.topErrors.slice(0,3),e=>(m(),i(s(w),{key:e.code,variant:`destructive`,class:`text-xs`},{default:x(()=>[r(l(e.code)+` (`+l(e.count)+`) `,1)]),_:2},1024))),128)),e.stats.topErrors.length===0?(m(),p(`span`,Te,`--`)):d(``,!0)])]),_:2},1024)]),_:2},1024))),128))]),_:1})]),_:1})):(m(),p(`div`,Se,` 暂无数据 `))}});function De(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 g(()=>{o(),n?.onClose?.()}),{connect:a,disconnect:o}}var X=200;function Oe(){let n=t([]),r=t([]),i=t(null),a=t([]),o=t(null),s=t(!1),c=e(()=>n.value.filter(e=>e.isStream).length),l=e(()=>n.value.filter(e=>!e.queued)),u=e(()=>n.value.filter(e=>e.queued===!0));function d(e){let t;try{t=JSON.parse(e.data)}catch{return}switch(e.type){case`request_start`:{let e=t;r.value.some(t=>t.id===e.id)||n.value.unshift(e);break}case`request_update`:n.value=t;break;case`request_complete`:{let e=t;n.value=n.value.filter(t=>t.id!==e.id),r.value.unshift(e),r.value.length>X&&(r.value.length=X);break}case`concurrency_update`:a.value=t;break;case`stats_update`:i.value=t;break;case`runtime_update`:o.value=t;break}}function f(){s.value=!0}function p(){s.value=!1}async function m(){try{let[e,t,s,c,l]=await Promise.allSettled([_.getMonitorActive(),_.getMonitorRecent(),_.getMonitorStats(),_.getMonitorConcurrency(),_.getMonitorRuntime()]);e.status===`fulfilled`&&(n.value=e.value),t.status===`fulfilled`&&(r.value=t.value),s.status===`fulfilled`&&(i.value=s.value),c.status===`fulfilled`&&(a.value=c.value),l.status===`fulfilled`&&(o.value=l.value)}catch(e){console.error(`Failed to load initial monitor data:`,e),i.value=null,a.value=[],o.value=null}}let g=t(null),v=t(!1),y=t(0);async function b(e){let t=++y.value,i=n.value.find(t=>t.id===e)??r.value.find(t=>t.id===e);if(!i){g.value=null;return}g.value=null,v.value=!0;try{if(i.status===`pending`){try{let n=await _.getMonitorRequest(e);if(t!==y.value)return;g.value={clientRequest:n.clientRequest??void 0}}catch(n){if(n?.response?.status!==404)throw n;if(t!==y.value)return;let r=await _.getLogDetail(e);if(t!==y.value)return;g.value=r.client_request?{clientRequest:r.client_request}:null}return}let n=await _.getLogDetail(e);if(t!==y.value)return;let r;if(!i.isStream){let e=n.upstream_response;if(e)try{let t=JSON.parse(e);r=(typeof t.body==`string`?t.body:e)??void 0}catch{r=e}}g.value={responseBody:r,clientRequest:n.client_request??void 0,upstreamRequest:n.upstream_request??void 0}}catch(e){if(t!==y.value)return;console.warn(`Failed to load log detail:`,e),g.value=null}finally{t===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=e(()=>x.value?n.value.find(e=>e.id===x.value)??r.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:n,recentCompleted:r,stats:i,concurrency:a,runtime:o,connected:s,streamCount:c,streamingRequests:l,queuedRequests:u,selectedRequestId:x,selectedRequest:w,requestDetailOpen:S,selectRequest:C,logDetailData:g,nonStreamBodyLoading:v,handleSSEMessage:d,handleSSEOpen:f,handleSSEClose:p,loadInitialData:m}}function Z(e){switch(e){case`pending`:return`default`;case`failed`:return`destructive`;case`completed`:return`secondary`;default:return`outline`}}function Q(e){switch(e){case`pending`:return`进行中`;case`failed`:return`失败`;case`completed`:return`完成`;default:return e}}var ke={class:`p-6`},Ae={class:`flex items-center justify-between mb-4`},je={class:`flex items-center gap-2`},Me={class:`grid grid-cols-3 gap-4 mb-6`},Ne={class:`flex items-center justify-between`},Pe={key:0,class:`text-sm text-muted-foreground py-2`},$=[`onClick`],Fe={class:`text-sm text-foreground truncate flex-1`},Ie={class:`text-xs text-muted-foreground shrink-0`},Le={class:`flex items-center justify-between`},Re={key:0,class:`text-sm text-muted-foreground py-2`},ze=[`onClick`],Be={class:`text-sm text-foreground truncate flex-1`},Ve={class:`text-xs text-muted-foreground shrink-0`},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:`grid grid-cols-1 lg:grid-cols-3 gap-4`},qe=1e3,Je=v({__name:`Monitor`,setup(e){let{activeRequests:t,recentCompleted:o,stats:h,concurrency:g,runtime:_,connected:v,streamCount:k,streamingRequests:A,queuedRequests:j,selectedRequestId:M,selectedRequest:N,requestDetailOpen:P,selectRequest:F,logDetailData:I,handleSSEMessage:L,handleSSEOpen:R,handleSSEClose:z,loadInitialData:B}=Oe(),{connect:V}=De(`/admin/api/monitor/stream`,{request_start:L,request_update:L,request_complete:L,concurrency_update:L,stats_update:L,runtime_update:L},{onOpen:R,onClose:z});function H(e){return((Date.now()-e)/qe).toFixed(1)}return y(async()=>{await B(),V()}),(e,y)=>(m(),p(`div`,ke,[f(`div`,Ae,[y[1]||=f(`h2`,{class:`text-lg font-semibold text-foreground`},`实时监控`,-1),f(`div`,je,[a(s(w),{variant:s(v)?`default`:`destructive`},{default:x(()=>[r(l(s(v)?`已连接`:`未连接`),1)]),_:1},8,[`variant`])])]),a(te,{stats:s(h),"active-count":s(t).length,"stream-count":s(k)},null,8,[`stats`,`active-count`,`stream-count`]),f(`div`,Me,[a(s(T),null,{default:x(()=>[a(s(D),{class:`pb-2`},{default:x(()=>[f(`div`,Ne,[a(s(O),{class:`text-sm font-medium text-foreground`},{default:x(()=>[...y[2]||=[r(`活跃请求`,-1)]]),_:1}),a(s(w),{variant:`secondary`},{default:x(()=>[r(l(s(A).length),1)]),_:1})])]),_:1}),a(s(E),null,{default:x(()=>[a(s(S),{class:`h-64`},{default:x(()=>[s(A).length===0?(m(),p(`div`,Pe,` 暂无活跃请求 `)):d(``,!0),(m(!0),p(c,null,b(s(A),e=>(m(),p(`div`,{key:e.id,class:n([`flex items-center gap-2 py-2 px-2 rounded cursor-pointer hover:bg-muted/50 transition-colors`,{"bg-muted":s(M)===e.id}]),onClick:t=>s(F)(e.id)},[a(s(w),{variant:s(Z)(e.status),class:`shrink-0`},{default:x(()=>[r(l(s(Q)(e.status)),1)]),_:2},1032,[`variant`]),f(`span`,Fe,l(e.model),1),a(s(w),{variant:`outline`,class:`shrink-0 text-xs`},{default:x(()=>[r(l(e.providerName),1)]),_:2},1024),f(`span`,Ie,l(H(e.startTime))+`s`,1),e.isStream?(m(),i(s(w),{key:0,variant:`outline`,class:`shrink-0 text-xs`},{default:x(()=>[...y[3]||=[r(`SSE`,-1)]]),_:1})):d(``,!0)],10,$))),128))]),_:1})]),_:1})]),_:1}),a(s(T),null,{default:x(()=>[a(s(D),{class:`pb-2`},{default:x(()=>[f(`div`,Le,[a(s(O),{class:`text-sm font-medium text-foreground`},{default:x(()=>[...y[4]||=[r(`队列请求`,-1)]]),_:1}),a(s(w),{variant:`secondary`},{default:x(()=>[r(l(s(j).length),1)]),_:1})])]),_:1}),a(s(E),null,{default:x(()=>[a(s(S),{class:`h-64`},{default:x(()=>[s(j).length===0?(m(),p(`div`,Re,` 暂无排队请求 `)):d(``,!0),(m(!0),p(c,null,b(s(j),e=>(m(),p(`div`,{key:e.id,class:n([`flex items-center gap-2 py-2 px-2 rounded cursor-pointer hover:bg-muted/50 transition-colors`,{"bg-muted":s(M)===e.id}]),onClick:t=>s(F)(e.id)},[a(s(w),{variant:`outline`,class:`shrink-0`},{default:x(()=>[...y[5]||=[r(` 排队 `,-1)]]),_:1}),f(`span`,Be,l(e.model),1),a(s(w),{variant:`outline`,class:`shrink-0 text-xs`},{default:x(()=>[r(l(e.providerName),1)]),_:2},1024),f(`span`,Ve,l(H(e.startTime))+`s`,1)],10,ze))),128))]),_:1})]),_:1})]),_:1}),a(s(T),null,{default:x(()=>[a(s(D),{class:`pb-2`},{default:x(()=>[f(`div`,He,[a(s(O),{class:`text-sm font-medium text-foreground`},{default:x(()=>[...y[6]||=[r(`已完成`,-1)]]),_:1}),a(s(w),{variant:`secondary`},{default:x(()=>[r(l(s(o).length),1)]),_:1})])]),_:1}),a(s(E),null,{default:x(()=>[a(s(S),{class:`h-64`},{default:x(()=>[s(o).length===0?(m(),p(`div`,Ue,` 暂无已完成请求 `)):d(``,!0),(m(!0),p(c,null,b(s(o),e=>(m(),p(`div`,{key:e.id,class:n([`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(M)===e.id}]),onClick:t=>s(F)(e.id)},[a(s(w),{variant:s(Z)(e.status),class:`shrink-0`},{default:x(()=>[r(l(s(Q)(e.status)),1)]),_:2},1032,[`variant`]),f(`span`,Ge,l(e.model),1),a(s(w),{variant:`outline`,class:`shrink-0 text-xs`},{default:x(()=>[r(l(e.providerName),1)]),_:2},1024),e.isStream?(m(),i(s(w),{key:0,variant:`outline`,class:`shrink-0 text-xs`},{default:x(()=>[...y[7]||=[r(`SSE`,-1)]]),_:1})):d(``,!0)],10,We))),128))]),_:1})]),_:1})]),_:1})]),a(s(T),{class:`mb-4`},{default:x(()=>[a(s(D),null,{default:x(()=>[a(s(O),{class:`text-sm font-medium text-foreground`},{default:x(()=>[...y[8]||=[r(`Provider 统计`,-1)]]),_:1})]),_:1}),a(s(E),null,{default:x(()=>[a(Ee,{stats:s(h)},null,8,[`stats`])]),_:1})]),_:1}),f(`div`,Ke,[a(s(T),null,{default:x(()=>[a(s(D),null,{default:x(()=>[a(s(O),{class:`text-sm font-medium text-foreground`},{default:x(()=>[...y[9]||=[r(`并发度`,-1)]]),_:1})]),_:1}),a(s(E),null,{default:x(()=>[a(q,{providers:s(g)},null,8,[`providers`])]),_:1})]),_:1}),a(s(T),null,{default:x(()=>[a(s(D),null,{default:x(()=>[a(s(O),{class:`text-sm font-medium text-foreground`},{default:x(()=>[...y[10]||=[r(`状态码分布`,-1)]]),_:1})]),_:1}),a(s(E),null,{default:x(()=>[a(xe,{"by-status-code":s(h)?.byStatusCode??{}},null,8,[`by-status-code`])]),_:1})]),_:1}),a(s(T),null,{default:x(()=>[a(s(D),null,{default:x(()=>[a(s(O),{class:`text-sm font-medium text-foreground`},{default:x(()=>[...y[11]||=[r(`运行时`,-1)]]),_:1})]),_:1}),a(s(E),null,{default:x(()=>[a(he,{runtime:s(_)},null,8,[`runtime`])]),_:1})]),_:1})]),a(C,{open:s(P),"onUpdate:open":y[0]||=e=>u(P)?P.value=e:null,source:`realtime`,request:s(N),"stream-content":s(N)?.streamContent,"log-detail-data":s(I)},null,8,[`open`,`request`,`stream-content`,`log-detail-data`])]))}});export{Je as default};
@@ -0,0 +1 @@
1
+ import{$ as e,B as t,Dt as n,Et as r,H as i,K as a,Lt as o,Nt as s,Ot as c,W as l,_t as u,at as d,bt as f,ct as p,et as m,gt as h,h as g,ht as _,i as v,o as y,q as b,rt as x,u as S,vt as C,wt as w}from"./button-BQ3s7yNh.js";import{y as T}from"./Teleport-DdjYHlNK.js";function E(e){let n=r(),i=t(()=>n.value?.width??0),a=t(()=>n.value?.height??0);return x(()=>{let t=S(e);if(t){n.value={width:t.offsetWidth,height:t.offsetHeight};let e=new ResizeObserver(e=>{if(!Array.isArray(e)||!e.length)return;let r=e[0],i,a;if(`borderBoxSize`in r){let e=r.borderBoxSize,t=Array.isArray(e)?e[0]:e;i=t.inlineSize,a=t.blockSize}else i=t.offsetWidth,a=t.offsetHeight;n.value={width:i,height:a}});return e.observe(t,{box:`border-box`}),()=>e.unobserve(t)}else n.value=void 0}),{width:i,height:a}}var[D,O]=T(`PopperRoot`),ee=b({inheritAttrs:!1,__name:`PopperRoot`,setup(e){let t=r();return O({anchor:t,onAnchorChange:e=>t.value=e}),(e,t)=>p(e.$slots,`default`)}}),k=b({__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}=y(),a=D();return u(()=>{a.onAnchorChange(t.reference??r.value)}),(e,t)=>(d(),i(s(v),{ref:s(n),as:e.as,"as-child":e.asChild},{default:C(()=>[p(e.$slots,`default`)]),_:3},8,[`as`,`as-child`]))}});function te(e){return e!==null}function ne(e){return{name:`transformOrigin`,options:e,fn(t){let{placement:n,rects:r,middlewareData:i}=t,a=i.arrow?.centerOffset!==0,o=a?0:e.arrowWidth,s=a?0:e.arrowHeight,[c,l]=A(n),u={start:`0%`,center:`50%`,end:`100%`}[l],d=(i.arrow?.x??0)+o/2,f=(i.arrow?.y??0)+s/2,p=``,m=``;return c===`bottom`?(p=a?u:`${d}px`,m=`${-s}px`):c===`top`?(p=a?u:`${d}px`,m=`${r.floating.height+s}px`):c===`right`?(p=`${-s}px`,m=a?u:`${f}px`):c===`left`&&(p=`${r.floating.width+s}px`,m=a?u:`${f}px`),{data:{x:p,y:m}}}}}function A(e){let[t,n=`center`]=e.split(`-`);return[t,n]}var j=[`top`,`right`,`bottom`,`left`],M=Math.min,N=Math.max,P=Math.round,F=Math.floor,I=e=>({x:e,y:e}),L={left:`right`,right:`left`,bottom:`top`,top:`bottom`};function re(e,t,n){return N(e,M(t,n))}function R(e,t){return typeof e==`function`?e(t):e}function z(e){return e.split(`-`)[0]}function B(e){return e.split(`-`)[1]}function ie(e){return e===`x`?`y`:`x`}function ae(e){return e===`y`?`height`:`width`}function V(e){let t=e[0];return t===`t`||t===`b`?`y`:`x`}function oe(e){return ie(V(e))}function se(e,t,n){n===void 0&&(n=!1);let r=B(e),i=oe(e),a=ae(i),o=i===`x`?r===(n?`end`:`start`)?`right`:`left`:r===`start`?`bottom`:`top`;return t.reference[a]>t.floating[a]&&(o=ge(o)),[o,ge(o)]}function ce(e){let t=ge(e);return[le(e),t,le(t)]}function le(e){return e.includes(`start`)?e.replace(`start`,`end`):e.replace(`end`,`start`)}var ue=[`left`,`right`],de=[`right`,`left`],fe=[`top`,`bottom`],pe=[`bottom`,`top`];function me(e,t,n){switch(e){case`top`:case`bottom`:return n?t?de:ue:t?ue:de;case`left`:case`right`:return t?fe:pe;default:return[]}}function he(e,t,n,r){let i=B(e),a=me(z(e),n===`start`,r);return i&&(a=a.map(e=>e+`-`+i),t&&(a=a.concat(a.map(le)))),a}function ge(e){let t=z(e);return L[t]+e.slice(t.length)}function _e(e){return{top:0,right:0,bottom:0,left:0,...e}}function ve(e){return typeof e==`number`?{top:e,right:e,bottom:e,left:e}:_e(e)}function ye(e){let{x:t,y:n,width:r,height:i}=e;return{width:r,height:i,top:n,left:t,right:t+r,bottom:n+i,x:t,y:n}}function be(e,t,n){let{reference:r,floating:i}=e,a=V(t),o=oe(t),s=ae(o),c=z(t),l=a===`y`,u=r.x+r.width/2-i.width/2,d=r.y+r.height/2-i.height/2,f=r[s]/2-i[s]/2,p;switch(c){case`top`:p={x:u,y:r.y-i.height};break;case`bottom`:p={x:u,y:r.y+r.height};break;case`right`:p={x:r.x+r.width,y:d};break;case`left`:p={x:r.x-i.width,y:d};break;default:p={x:r.x,y:r.y}}switch(B(t)){case`start`:p[o]-=f*(n&&l?-1:1);break;case`end`:p[o]+=f*(n&&l?-1:1);break}return p}async function xe(e,t){t===void 0&&(t={});let{x:n,y:r,platform:i,rects:a,elements:o,strategy:s}=e,{boundary:c=`clippingAncestors`,rootBoundary:l=`viewport`,elementContext:u=`floating`,altBoundary:d=!1,padding:f=0}=R(t,e),p=ve(f),m=o[d?u===`floating`?`reference`:`floating`:u],h=ye(await i.getClippingRect({element:await(i.isElement==null?void 0:i.isElement(m))??!0?m:m.contextElement||await(i.getDocumentElement==null?void 0:i.getDocumentElement(o.floating)),boundary:c,rootBoundary:l,strategy:s})),g=u===`floating`?{x:n,y:r,width:a.floating.width,height:a.floating.height}:a.reference,_=await(i.getOffsetParent==null?void 0:i.getOffsetParent(o.floating)),v=await(i.isElement==null?void 0:i.isElement(_))&&await(i.getScale==null?void 0:i.getScale(_))||{x:1,y:1},y=ye(i.convertOffsetParentRelativeRectToViewportRelativeRect?await i.convertOffsetParentRelativeRectToViewportRelativeRect({elements:o,rect:g,offsetParent:_,strategy:s}):g);return{top:(h.top-y.top+p.top)/v.y,bottom:(y.bottom-h.bottom+p.bottom)/v.y,left:(h.left-y.left+p.left)/v.x,right:(y.right-h.right+p.right)/v.x}}var Se=50,Ce=async(e,t,n)=>{let{placement:r=`bottom`,strategy:i=`absolute`,middleware:a=[],platform:o}=n,s=o.detectOverflow?o:{...o,detectOverflow:xe},c=await(o.isRTL==null?void 0:o.isRTL(t)),l=await o.getElementRects({reference:e,floating:t,strategy:i}),{x:u,y:d}=be(l,r,c),f=r,p=0,m={};for(let n=0;n<a.length;n++){let h=a[n];if(!h)continue;let{name:g,fn:_}=h,{x:v,y,data:b,reset:x}=await _({x:u,y:d,initialPlacement:r,placement:f,strategy:i,middlewareData:m,rects:l,platform:s,elements:{reference:e,floating:t}});u=v??u,d=y??d,m[g]={...m[g],...b},x&&p<Se&&(p++,typeof x==`object`&&(x.placement&&(f=x.placement),x.rects&&(l=x.rects===!0?await o.getElementRects({reference:e,floating:t,strategy:i}):x.rects),{x:u,y:d}=be(l,f,c)),n=-1)}return{x:u,y:d,placement:f,strategy:i,middlewareData:m}},we=e=>({name:`arrow`,options:e,async fn(t){let{x:n,y:r,placement:i,rects:a,platform:o,elements:s,middlewareData:c}=t,{element:l,padding:u=0}=R(e,t)||{};if(l==null)return{};let d=ve(u),f={x:n,y:r},p=oe(i),m=ae(p),h=await o.getDimensions(l),g=p===`y`,_=g?`top`:`left`,v=g?`bottom`:`right`,y=g?`clientHeight`:`clientWidth`,b=a.reference[m]+a.reference[p]-f[p]-a.floating[m],x=f[p]-a.reference[p],S=await(o.getOffsetParent==null?void 0:o.getOffsetParent(l)),C=S?S[y]:0;(!C||!await(o.isElement==null?void 0:o.isElement(S)))&&(C=s.floating[y]||a.floating[m]);let w=b/2-x/2,T=C/2-h[m]/2-1,E=M(d[_],T),D=M(d[v],T),O=E,ee=C-h[m]-D,k=C/2-h[m]/2+w,te=re(O,k,ee),ne=!c.arrow&&B(i)!=null&&k!==te&&a.reference[m]/2-(k<O?E:D)-h[m]/2<0,A=ne?k<O?k-O:k-ee:0;return{[p]:f[p]+A,data:{[p]:te,centerOffset:k-te-A,...ne&&{alignmentOffset:A}},reset:ne}}}),Te=function(e){return e===void 0&&(e={}),{name:`flip`,options:e,async fn(t){var n;let{placement:r,middlewareData:i,rects:a,initialPlacement:o,platform:s,elements:c}=t,{mainAxis:l=!0,crossAxis:u=!0,fallbackPlacements:d,fallbackStrategy:f=`bestFit`,fallbackAxisSideDirection:p=`none`,flipAlignment:m=!0,...h}=R(e,t);if((n=i.arrow)!=null&&n.alignmentOffset)return{};let g=z(r),_=V(o),v=z(o)===o,y=await(s.isRTL==null?void 0:s.isRTL(c.floating)),b=d||(v||!m?[ge(o)]:ce(o)),x=p!==`none`;!d&&x&&b.push(...he(o,m,p,y));let S=[o,...b],C=await s.detectOverflow(t,h),w=[],T=i.flip?.overflows||[];if(l&&w.push(C[g]),u){let e=se(r,a,y);w.push(C[e[0]],C[e[1]])}if(T=[...T,{placement:r,overflows:w}],!w.every(e=>e<=0)){let e=(i.flip?.index||0)+1,t=S[e];if(t&&(!(u===`alignment`&&_!==V(t))||T.every(e=>V(e.placement)===_?e.overflows[0]>0:!0)))return{data:{index:e,overflows:T},reset:{placement:t}};let n=T.filter(e=>e.overflows[0]<=0).sort((e,t)=>e.overflows[1]-t.overflows[1])[0]?.placement;if(!n)switch(f){case`bestFit`:{let e=T.filter(e=>{if(x){let t=V(e.placement);return t===_||t===`y`}return!0}).map(e=>[e.placement,e.overflows.filter(e=>e>0).reduce((e,t)=>e+t,0)]).sort((e,t)=>e[1]-t[1])[0]?.[0];e&&(n=e);break}case`initialPlacement`:n=o;break}if(r!==n)return{reset:{placement:n}}}return{}}}};function Ee(e,t){return{top:e.top-t.height,right:e.right-t.width,bottom:e.bottom-t.height,left:e.left-t.width}}function De(e){return j.some(t=>e[t]>=0)}var Oe=function(e){return e===void 0&&(e={}),{name:`hide`,options:e,async fn(t){let{rects:n,platform:r}=t,{strategy:i=`referenceHidden`,...a}=R(e,t);switch(i){case`referenceHidden`:{let e=Ee(await r.detectOverflow(t,{...a,elementContext:`reference`}),n.reference);return{data:{referenceHiddenOffsets:e,referenceHidden:De(e)}}}case`escaped`:{let e=Ee(await r.detectOverflow(t,{...a,altBoundary:!0}),n.floating);return{data:{escapedOffsets:e,escaped:De(e)}}}default:return{}}}}},ke=new Set([`left`,`top`]);async function Ae(e,t){let{placement:n,platform:r,elements:i}=e,a=await(r.isRTL==null?void 0:r.isRTL(i.floating)),o=z(n),s=B(n),c=V(n)===`y`,l=ke.has(o)?-1:1,u=a&&c?-1:1,d=R(t,e),{mainAxis:f,crossAxis:p,alignmentAxis:m}=typeof d==`number`?{mainAxis:d,crossAxis:0,alignmentAxis:null}:{mainAxis:d.mainAxis||0,crossAxis:d.crossAxis||0,alignmentAxis:d.alignmentAxis};return s&&typeof m==`number`&&(p=s===`end`?m*-1:m),c?{x:p*u,y:f*l}:{x:f*l,y:p*u}}var je=function(e){return e===void 0&&(e=0),{name:`offset`,options:e,async fn(t){var n;let{x:r,y:i,placement:a,middlewareData:o}=t,s=await Ae(t,e);return a===o.offset?.placement&&(n=o.arrow)!=null&&n.alignmentOffset?{}:{x:r+s.x,y:i+s.y,data:{...s,placement:a}}}}},Me=function(e){return e===void 0&&(e={}),{name:`shift`,options:e,async fn(t){let{x:n,y:r,placement:i,platform:a}=t,{mainAxis:o=!0,crossAxis:s=!1,limiter:c={fn:e=>{let{x:t,y:n}=e;return{x:t,y:n}}},...l}=R(e,t),u={x:n,y:r},d=await a.detectOverflow(t,l),f=V(z(i)),p=ie(f),m=u[p],h=u[f];if(o){let e=p===`y`?`top`:`left`,t=p===`y`?`bottom`:`right`,n=m+d[e],r=m-d[t];m=re(n,m,r)}if(s){let e=f===`y`?`top`:`left`,t=f===`y`?`bottom`:`right`,n=h+d[e],r=h-d[t];h=re(n,h,r)}let g=c.fn({...t,[p]:m,[f]:h});return{...g,data:{x:g.x-n,y:g.y-r,enabled:{[p]:o,[f]:s}}}}}},Ne=function(e){return e===void 0&&(e={}),{options:e,fn(t){let{x:n,y:r,placement:i,rects:a,middlewareData:o}=t,{offset:s=0,mainAxis:c=!0,crossAxis:l=!0}=R(e,t),u={x:n,y:r},d=V(i),f=ie(d),p=u[f],m=u[d],h=R(s,t),g=typeof h==`number`?{mainAxis:h,crossAxis:0}:{mainAxis:0,crossAxis:0,...h};if(c){let e=f===`y`?`height`:`width`,t=a.reference[f]-a.floating[e]+g.mainAxis,n=a.reference[f]+a.reference[e]-g.mainAxis;p<t?p=t:p>n&&(p=n)}if(l){let e=f===`y`?`width`:`height`,t=ke.has(z(i)),n=a.reference[d]-a.floating[e]+(t&&o.offset?.[d]||0)+(t?0:g.crossAxis),r=a.reference[d]+a.reference[e]+(t?0:o.offset?.[d]||0)-(t?g.crossAxis:0);m<n?m=n:m>r&&(m=r)}return{[f]:p,[d]:m}}}},Pe=function(e){return e===void 0&&(e={}),{name:`size`,options:e,async fn(t){var n,r;let{placement:i,rects:a,platform:o,elements:s}=t,{apply:c=()=>{},...l}=R(e,t),u=await o.detectOverflow(t,l),d=z(i),f=B(i),p=V(i)===`y`,{width:m,height:h}=a.floating,g,_;d===`top`||d===`bottom`?(g=d,_=f===(await(o.isRTL==null?void 0:o.isRTL(s.floating))?`start`:`end`)?`left`:`right`):(_=d,g=f===`end`?`top`:`bottom`);let v=h-u.top-u.bottom,y=m-u.left-u.right,b=M(h-u[g],v),x=M(m-u[_],y),S=!t.middlewareData.shift,C=b,w=x;if((n=t.middlewareData.shift)!=null&&n.enabled.x&&(w=y),(r=t.middlewareData.shift)!=null&&r.enabled.y&&(C=v),S&&!f){let e=N(u.left,0),t=N(u.right,0),n=N(u.top,0),r=N(u.bottom,0);p?w=m-2*(e!==0||t!==0?e+t:N(u.left,u.right)):C=h-2*(n!==0||r!==0?n+r:N(u.top,u.bottom))}await c({...t,availableWidth:w,availableHeight:C});let T=await o.getDimensions(s.floating);return m!==T.width||h!==T.height?{reset:{rects:!0}}:{}}}};function Fe(){return typeof window<`u`}function H(e){return Ie(e)?(e.nodeName||``).toLowerCase():`#document`}function U(e){var t;return(e==null||(t=e.ownerDocument)==null?void 0:t.defaultView)||window}function W(e){return((Ie(e)?e.ownerDocument:e.document)||window.document)?.documentElement}function Ie(e){return Fe()?e instanceof Node||e instanceof U(e).Node:!1}function G(e){return Fe()?e instanceof Element||e instanceof U(e).Element:!1}function K(e){return Fe()?e instanceof HTMLElement||e instanceof U(e).HTMLElement:!1}function Le(e){return!Fe()||typeof ShadowRoot>`u`?!1:e instanceof ShadowRoot||e instanceof U(e).ShadowRoot}function Re(e){let{overflow:t,overflowX:n,overflowY:r,display:i}=Y(e);return/auto|scroll|overlay|hidden|clip/.test(t+r+n)&&i!==`inline`&&i!==`contents`}function ze(e){return/^(table|td|th)$/.test(H(e))}function Be(e){try{if(e.matches(`:popover-open`))return!0}catch{}try{return e.matches(`:modal`)}catch{return!1}}var Ve=/transform|translate|scale|rotate|perspective|filter/,He=/paint|layout|strict|content/,q=e=>!!e&&e!==`none`,Ue;function We(e){let t=G(e)?Y(e):e;return q(t.transform)||q(t.translate)||q(t.scale)||q(t.rotate)||q(t.perspective)||!Ke()&&(q(t.backdropFilter)||q(t.filter))||Ve.test(t.willChange||``)||He.test(t.contain||``)}function Ge(e){let t=X(e);for(;K(t)&&!J(t);){if(We(t))return t;if(Be(t))return null;t=X(t)}return null}function Ke(){return Ue??=typeof CSS<`u`&&CSS.supports&&CSS.supports(`-webkit-backdrop-filter`,`none`),Ue}function J(e){return/^(html|body|#document)$/.test(H(e))}function Y(e){return U(e).getComputedStyle(e)}function qe(e){return G(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.scrollX,scrollTop:e.scrollY}}function X(e){if(H(e)===`html`)return e;let t=e.assignedSlot||e.parentNode||Le(e)&&e.host||W(e);return Le(t)?t.host:t}function Je(e){let t=X(e);return J(t)?e.ownerDocument?e.ownerDocument.body:e.body:K(t)&&Re(t)?t:Je(t)}function Ye(e,t,n){t===void 0&&(t=[]),n===void 0&&(n=!0);let r=Je(e),i=r===e.ownerDocument?.body,a=U(r);if(i){let e=Xe(a);return t.concat(a,a.visualViewport||[],Re(r)?r:[],e&&n?Ye(e):[])}else return t.concat(r,Ye(r,[],n))}function Xe(e){return e.parent&&Object.getPrototypeOf(e.parent)?e.frameElement:null}function Ze(e){let t=Y(e),n=parseFloat(t.width)||0,r=parseFloat(t.height)||0,i=K(e),a=i?e.offsetWidth:n,o=i?e.offsetHeight:r,s=P(n)!==a||P(r)!==o;return s&&(n=a,r=o),{width:n,height:r,$:s}}function Qe(e){return G(e)?e:e.contextElement}function Z(e){let t=Qe(e);if(!K(t))return I(1);let n=t.getBoundingClientRect(),{width:r,height:i,$:a}=Ze(t),o=(a?P(n.width):n.width)/r,s=(a?P(n.height):n.height)/i;return(!o||!Number.isFinite(o))&&(o=1),(!s||!Number.isFinite(s))&&(s=1),{x:o,y:s}}var $e=I(0);function et(e){let t=U(e);return!Ke()||!t.visualViewport?$e:{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}}function tt(e,t,n){return t===void 0&&(t=!1),!n||t&&n!==U(e)?!1:t}function Q(e,t,n,r){t===void 0&&(t=!1),n===void 0&&(n=!1);let i=e.getBoundingClientRect(),a=Qe(e),o=I(1);t&&(r?G(r)&&(o=Z(r)):o=Z(e));let s=tt(a,n,r)?et(a):I(0),c=(i.left+s.x)/o.x,l=(i.top+s.y)/o.y,u=i.width/o.x,d=i.height/o.y;if(a){let e=U(a),t=r&&G(r)?U(r):r,n=e,i=Xe(n);for(;i&&r&&t!==n;){let e=Z(i),t=i.getBoundingClientRect(),r=Y(i),a=t.left+(i.clientLeft+parseFloat(r.paddingLeft))*e.x,o=t.top+(i.clientTop+parseFloat(r.paddingTop))*e.y;c*=e.x,l*=e.y,u*=e.x,d*=e.y,c+=a,l+=o,n=U(i),i=Xe(n)}}return ye({width:u,height:d,x:c,y:l})}function nt(e,t){let n=qe(e).scrollLeft;return t?t.left+n:Q(W(e)).left+n}function rt(e,t){let n=e.getBoundingClientRect();return{x:n.left+t.scrollLeft-nt(e,n),y:n.top+t.scrollTop}}function it(e){let{elements:t,rect:n,offsetParent:r,strategy:i}=e,a=i===`fixed`,o=W(r),s=t?Be(t.floating):!1;if(r===o||s&&a)return n;let c={scrollLeft:0,scrollTop:0},l=I(1),u=I(0),d=K(r);if((d||!d&&!a)&&((H(r)!==`body`||Re(o))&&(c=qe(r)),d)){let e=Q(r);l=Z(r),u.x=e.x+r.clientLeft,u.y=e.y+r.clientTop}let f=o&&!d&&!a?rt(o,c):I(0);return{width:n.width*l.x,height:n.height*l.y,x:n.x*l.x-c.scrollLeft*l.x+u.x+f.x,y:n.y*l.y-c.scrollTop*l.y+u.y+f.y}}function at(e){return Array.from(e.getClientRects())}function ot(e){let t=W(e),n=qe(e),r=e.ownerDocument.body,i=N(t.scrollWidth,t.clientWidth,r.scrollWidth,r.clientWidth),a=N(t.scrollHeight,t.clientHeight,r.scrollHeight,r.clientHeight),o=-n.scrollLeft+nt(e),s=-n.scrollTop;return Y(r).direction===`rtl`&&(o+=N(t.clientWidth,r.clientWidth)-i),{width:i,height:a,x:o,y:s}}var st=25;function ct(e,t){let n=U(e),r=W(e),i=n.visualViewport,a=r.clientWidth,o=r.clientHeight,s=0,c=0;if(i){a=i.width,o=i.height;let e=Ke();(!e||e&&t===`fixed`)&&(s=i.offsetLeft,c=i.offsetTop)}let l=nt(r);if(l<=0){let e=r.ownerDocument,t=e.body,n=getComputedStyle(t),i=e.compatMode===`CSS1Compat`&&parseFloat(n.marginLeft)+parseFloat(n.marginRight)||0,o=Math.abs(r.clientWidth-t.clientWidth-i);o<=st&&(a-=o)}else l<=st&&(a+=l);return{width:a,height:o,x:s,y:c}}function lt(e,t){let n=Q(e,!0,t===`fixed`),r=n.top+e.clientTop,i=n.left+e.clientLeft,a=K(e)?Z(e):I(1);return{width:e.clientWidth*a.x,height:e.clientHeight*a.y,x:i*a.x,y:r*a.y}}function ut(e,t,n){let r;if(t===`viewport`)r=ct(e,n);else if(t===`document`)r=ot(W(e));else if(G(t))r=lt(t,n);else{let n=et(e);r={x:t.x-n.x,y:t.y-n.y,width:t.width,height:t.height}}return ye(r)}function dt(e,t){let n=X(e);return n===t||!G(n)||J(n)?!1:Y(n).position===`fixed`||dt(n,t)}function ft(e,t){let n=t.get(e);if(n)return n;let r=Ye(e,[],!1).filter(e=>G(e)&&H(e)!==`body`),i=null,a=Y(e).position===`fixed`,o=a?X(e):e;for(;G(o)&&!J(o);){let t=Y(o),n=We(o);!n&&t.position===`fixed`&&(i=null),(a?!n&&!i:!n&&t.position===`static`&&i&&(i.position===`absolute`||i.position===`fixed`)||Re(o)&&!n&&dt(e,o))?r=r.filter(e=>e!==o):i=t,o=X(o)}return t.set(e,r),r}function pt(e){let{element:t,boundary:n,rootBoundary:r,strategy:i}=e,a=[...n===`clippingAncestors`?Be(t)?[]:ft(t,this._c):[].concat(n),r],o=ut(t,a[0],i),s=o.top,c=o.right,l=o.bottom,u=o.left;for(let e=1;e<a.length;e++){let n=ut(t,a[e],i);s=N(n.top,s),c=M(n.right,c),l=M(n.bottom,l),u=N(n.left,u)}return{width:c-u,height:l-s,x:u,y:s}}function mt(e){let{width:t,height:n}=Ze(e);return{width:t,height:n}}function ht(e,t,n){let r=K(t),i=W(t),a=n===`fixed`,o=Q(e,!0,a,t),s={scrollLeft:0,scrollTop:0},c=I(0);function l(){c.x=nt(i)}if(r||!r&&!a)if((H(t)!==`body`||Re(i))&&(s=qe(t)),r){let e=Q(t,!0,a,t);c.x=e.x+t.clientLeft,c.y=e.y+t.clientTop}else i&&l();a&&!r&&i&&l();let u=i&&!r&&!a?rt(i,s):I(0);return{x:o.left+s.scrollLeft-c.x-u.x,y:o.top+s.scrollTop-c.y-u.y,width:o.width,height:o.height}}function gt(e){return Y(e).position===`static`}function _t(e,t){if(!K(e)||Y(e).position===`fixed`)return null;if(t)return t(e);let n=e.offsetParent;return W(e)===n&&(n=n.ownerDocument.body),n}function vt(e,t){let n=U(e);if(Be(e))return n;if(!K(e)){let t=X(e);for(;t&&!J(t);){if(G(t)&&!gt(t))return t;t=X(t)}return n}let r=_t(e,t);for(;r&&ze(r)&&gt(r);)r=_t(r,t);return r&&J(r)&&gt(r)&&!We(r)?n:r||Ge(e)||n}var yt=async function(e){let t=this.getOffsetParent||vt,n=this.getDimensions,r=await n(e.floating);return{reference:ht(e.reference,await t(e.floating),e.strategy),floating:{x:0,y:0,width:r.width,height:r.height}}};function bt(e){return Y(e).direction===`rtl`}var xt={convertOffsetParentRelativeRectToViewportRelativeRect:it,getDocumentElement:W,getClippingRect:pt,getOffsetParent:vt,getElementRects:yt,getClientRects:at,getDimensions:mt,getScale:Z,isElement:G,isRTL:bt};function St(e,t){return e.x===t.x&&e.y===t.y&&e.width===t.width&&e.height===t.height}function Ct(e,t){let n=null,r,i=W(e);function a(){var e;clearTimeout(r),(e=n)==null||e.disconnect(),n=null}function o(s,c){s===void 0&&(s=!1),c===void 0&&(c=1),a();let l=e.getBoundingClientRect(),{left:u,top:d,width:f,height:p}=l;if(s||t(),!f||!p)return;let m=F(d),h=F(i.clientWidth-(u+f)),g=F(i.clientHeight-(d+p)),_=F(u),v={rootMargin:-m+`px `+-h+`px `+-g+`px `+-_+`px`,threshold:N(0,M(1,c))||1},y=!0;function b(t){let n=t[0].intersectionRatio;if(n!==c){if(!y)return o();n?o(!1,n):r=setTimeout(()=>{o(!1,1e-7)},1e3)}n===1&&!St(l,e.getBoundingClientRect())&&o(),y=!1}try{n=new IntersectionObserver(b,{...v,root:i.ownerDocument})}catch{n=new IntersectionObserver(b,v)}n.observe(e)}return o(!0),a}function wt(e,t,n,r){r===void 0&&(r={});let{ancestorScroll:i=!0,ancestorResize:a=!0,elementResize:o=typeof ResizeObserver==`function`,layoutShift:s=typeof IntersectionObserver==`function`,animationFrame:c=!1}=r,l=Qe(e),u=i||a?[...l?Ye(l):[],...t?Ye(t):[]]:[];u.forEach(e=>{i&&e.addEventListener(`scroll`,n,{passive:!0}),a&&e.addEventListener(`resize`,n)});let d=l&&s?Ct(l,n):null,f=-1,p=null;o&&(p=new ResizeObserver(e=>{let[r]=e;r&&r.target===l&&p&&t&&(p.unobserve(t),cancelAnimationFrame(f),f=requestAnimationFrame(()=>{var e;(e=p)==null||e.observe(t)})),n()}),l&&!c&&p.observe(l),t&&p.observe(t));let m,h=c?Q(e):null;c&&g();function g(){let t=Q(e);h&&!St(h,t)&&n(),h=t,m=requestAnimationFrame(g)}return n(),()=>{var e;u.forEach(e=>{i&&e.removeEventListener(`scroll`,n),a&&e.removeEventListener(`resize`,n)}),d?.(),(e=p)==null||e.disconnect(),p=null,c&&cancelAnimationFrame(m)}}var Tt=je,Et=Me,Dt=Te,Ot=Pe,kt=Oe,At=we,jt=Ne,Mt=(e,t,n)=>{let r=new Map,i={platform:xt,...n},a={...i.platform,_c:r};return Ce(e,t,{...i,platform:a})};function Nt(e){return typeof e==`object`&&!!e&&`$el`in e}function Pt(e){if(Nt(e)){let t=e.$el;return Ie(t)&&H(t)===`#comment`?null:t}return e}function $(e){return typeof e==`function`?e():s(e)}function Ft(e){return{name:`arrow`,options:e,fn(t){let n=Pt($(e.element));return n==null?{}:At({element:n,padding:e.padding}).fn(t)}}}function It(e){return typeof window>`u`?1:(e.ownerDocument.defaultView||window).devicePixelRatio||1}function Lt(e,t){let n=It(e);return Math.round(t*n)/n}function Rt(e,i,a){a===void 0&&(a={});let o=a.whileElementsMounted,s=t(()=>$(a.open)??!0),l=t(()=>$(a.middleware)),u=t(()=>$(a.placement)??`bottom`),d=t(()=>$(a.strategy)??`absolute`),p=t(()=>$(a.transform)??!0),m=t(()=>Pt(e.value)),h=t(()=>Pt(i.value)),g=r(0),v=r(0),y=r(d.value),b=r(u.value),x=c({}),S=r(!1),C=t(()=>{let e={position:y.value,left:`0`,top:`0`};if(!h.value)return e;let t=Lt(h.value,g.value),n=Lt(h.value,v.value);return p.value?{...e,transform:`translate(`+t+`px, `+n+`px)`,...It(h.value)>=1.5&&{willChange:`transform`}}:{position:y.value,left:t+`px`,top:n+`px`}}),T;function E(){if(m.value==null||h.value==null)return;let e=s.value;Mt(m.value,h.value,{middleware:l.value,placement:u.value,strategy:d.value}).then(t=>{g.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(),o===void 0){E();return}if(m.value!=null&&h.value!=null){T=o(m.value,h.value,E);return}}function ee(){s.value||(S.value=!1)}return _([l,u,d,s],E,{flush:`sync`}),_([m,h],O,{flush:`sync`}),_(s,ee,{flush:`sync`}),f()&&w(D),{x:n(g),y:n(v),strategy:n(y),placement:n(b),middlewareData:n(x),isPositioned:n(S),floatingStyles:C,update:E}}var zt={side:`bottom`,sideOffset:0,sideFlip:!0,align:`center`,alignOffset:0,alignFlip:!0,arrowPadding:0,hideShiftedArrow:!0,avoidCollisions:!0,collisionBoundary:()=>[],collisionPadding:0,sticky:`partial`,hideWhenDetached:!1,positionStrategy:`fixed`,updatePositionStrategy:`optimized`,prioritizePosition:!1},[Bt,Vt]=T(`PopperContent`),Ht=b({inheritAttrs:!1,__name:`PopperContent`,props:e({side:{type:null,required:!1},sideOffset:{type:Number,required:!1},sideFlip:{type:Boolean,required:!1},align:{type:null,required:!1},alignOffset:{type:Number,required:!1},alignFlip:{type:Boolean,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},hideShiftedArrow:{type:Boolean,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1},disableUpdateOnLayoutShift:{type:Boolean,required:!1},prioritizePosition:{type:Boolean,required:!1},reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},{...zt}),emits:[`placed`],setup(e,{emit:n}){let i=e,c=n,f=D(),{forwardRef:_,currentElement:b}=y(),x=r(),S=r(),{width:w,height:T}=E(S),O=t(()=>i.side+(i.align===`center`?``:`-${i.align}`)),ee=t(()=>typeof i.collisionPadding==`number`?i.collisionPadding:{top:0,right:0,bottom:0,left:0,...i.collisionPadding}),k=t(()=>Array.isArray(i.collisionBoundary)?i.collisionBoundary:[i.collisionBoundary]),j=t(()=>({padding:ee.value,boundary:k.value.filter(te),altBoundary:k.value.length>0})),M=t(()=>({mainAxis:i.sideFlip,crossAxis:i.alignFlip})),N=g(()=>[Tt({mainAxis:i.sideOffset+T.value,alignmentAxis:i.alignOffset}),i.prioritizePosition&&i.avoidCollisions&&Dt({...j.value,...M.value}),i.avoidCollisions&&Et({mainAxis:!0,crossAxis:!!i.prioritizePosition,limiter:i.sticky===`partial`?jt():void 0,...j.value}),!i.prioritizePosition&&i.avoidCollisions&&Dt({...j.value,...M.value}),Ot({...j.value,apply:({elements:e,rects:t,availableWidth:n,availableHeight:r})=>{let{width:i,height:a}=t.reference,o=e.floating.style;o.setProperty(`--reka-popper-available-width`,`${n}px`),o.setProperty(`--reka-popper-available-height`,`${r}px`),o.setProperty(`--reka-popper-anchor-width`,`${i}px`),o.setProperty(`--reka-popper-anchor-height`,`${a}px`)}}),S.value&&Ft({element:S.value,padding:i.arrowPadding}),ne({arrowWidth:w.value,arrowHeight:T.value}),i.hideWhenDetached&&kt({strategy:`referenceHidden`,...j.value})]),{floatingStyles:P,placement:F,isPositioned:I,middlewareData:L,update:re}=Rt(t(()=>i.reference??f.anchor.value),x,{strategy:i.positionStrategy,placement:O,whileElementsMounted:(...e)=>wt(...e,{layoutShift:!i.disableUpdateOnLayoutShift,animationFrame:i.updatePositionStrategy===`always`}),middleware:N}),R=t(()=>A(F.value)[0]),z=t(()=>A(F.value)[1]);u(()=>{I.value&&c(`placed`)});let B=t(()=>{let e=L.value.arrow?.centerOffset!==0;return i.hideShiftedArrow&&e}),ie=r(``);return h(()=>{b.value&&(ie.value=window.getComputedStyle(b.value).zIndex)}),Vt({placedSide:R,onArrowChange:e=>S.value=e,arrowX:t(()=>L.value.arrow?.x??0),arrowY:t(()=>L.value.arrow?.y??0),shouldHideArrow:B}),(e,t)=>(d(),l(`div`,{ref_key:`floatingRef`,ref:x,"data-reka-popper-content-wrapper":``,style:o({...s(P),transform:s(I)?s(P).transform:`translate(0, -200%)`,minWidth:`max-content`,zIndex:ie.value,"--reka-popper-transform-origin":[s(L).transformOrigin?.x,s(L).transformOrigin?.y].join(` `),...s(L).hide?.referenceHidden&&{visibility:`hidden`,pointerEvents:`none`}})},[a(s(v),m({ref:s(_)},e.$attrs,{"as-child":i.asChild,as:e.as,"data-side":R.value,"data-align":z.value,style:{animation:s(I)?void 0:`none`}}),{default:C(()=>[p(e.$slots,`default`)]),_:3},16,[`as-child`,`as`,`data-side`,`data-align`,`style`])],4))}});export{ee as i,Bt as n,k as r,Ht as t};
@@ -0,0 +1 @@
1
+ import{B as e,Et as t,Ft as n,G as r,H as i,I as a,K as o,L as s,Nt as c,R as ee,Rt as l,U as u,V as d,W as f,at as p,k as m,n as h,q as te,rt as ne,st as g,ut as re,vt as _}from"./button-BQ3s7yNh.js";import{t as ie}from"./createLucideIcon-D1tkPDOQ.js";import{n as ae}from"./ohash.D__AXeF1-b0PiKZB_.js";import{a as oe,i as se,n as ce,r as le,t as ue}from"./SelectValue-CLp5z6_I.js";import{t as de}from"./Checkbox-MZf0YsDG.js";import{a as fe,n as pe,o as me,r as he,t as ge}from"./dialog-DoIATUYw.js";import{a as _e,c as ve,i as ye,n as be,o as xe,r as Se,t as Ce}from"./alert-dialog-Bi3dliLl.js";import{t as v}from"./Label-C_S0y7Um.js";import{t as we}from"./Switch-Wz-t_zkv.js";import{t as Te}from"./badge-Kkta3e9W.js";import{n as Ee}from"./lib-CxwxnlwW.js";import{t as y}from"./Input-O0ebU-Va.js";import{a as De,i as b,n as x,o as Oe,r as ke,t as Ae}from"./TableHeader-DGtcqGkw.js";var je=ie(`copy`,[[`rect`,{width:`14`,height:`14`,x:`8`,y:`8`,rx:`2`,ry:`2`,key:`17jyea`}],[`path`,{d:`M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2`,key:`zix9uf`}]]),S;(function(e){e.assertEqual=e=>{};function t(e){}e.assertIs=t;function n(e){throw Error()}e.assertNever=n,e.arrayToEnum=e=>{let t={};for(let n of e)t[n]=n;return t},e.getValidEnumValues=t=>{let n=e.objectKeys(t).filter(e=>typeof t[t[e]]!=`number`),r={};for(let e of n)r[e]=t[e];return e.objectValues(r)},e.objectValues=t=>e.objectKeys(t).map(function(e){return t[e]}),e.objectKeys=typeof Object.keys==`function`?e=>Object.keys(e):e=>{let t=[];for(let n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.push(n);return t},e.find=(e,t)=>{for(let n of e)if(t(n))return n},e.isInteger=typeof Number.isInteger==`function`?e=>Number.isInteger(e):e=>typeof e==`number`&&Number.isFinite(e)&&Math.floor(e)===e;function r(e,t=` | `){return e.map(e=>typeof e==`string`?`'${e}'`:e).join(t)}e.joinValues=r,e.jsonStringifyReplacer=(e,t)=>typeof t==`bigint`?t.toString():t})(S||={});var Me;(function(e){e.mergeShapes=(e,t)=>({...e,...t})})(Me||={});var C=S.arrayToEnum([`string`,`nan`,`number`,`integer`,`float`,`boolean`,`date`,`bigint`,`symbol`,`function`,`undefined`,`null`,`array`,`object`,`unknown`,`promise`,`void`,`never`,`map`,`set`]),w=e=>{switch(typeof e){case`undefined`:return C.undefined;case`string`:return C.string;case`number`:return Number.isNaN(e)?C.nan:C.number;case`boolean`:return C.boolean;case`function`:return C.function;case`bigint`:return C.bigint;case`symbol`:return C.symbol;case`object`:return Array.isArray(e)?C.array:e===null?C.null:e.then&&typeof e.then==`function`&&e.catch&&typeof e.catch==`function`?C.promise:typeof Map<`u`&&e instanceof Map?C.map:typeof Set<`u`&&e instanceof Set?C.set:typeof Date<`u`&&e instanceof Date?C.date:C.object;default:return C.unknown}},T=S.arrayToEnum([`invalid_type`,`invalid_literal`,`custom`,`invalid_union`,`invalid_union_discriminator`,`invalid_enum_value`,`unrecognized_keys`,`invalid_arguments`,`invalid_return_type`,`invalid_date`,`invalid_string`,`too_small`,`too_big`,`invalid_intersection_types`,`not_multiple_of`,`not_finite`]),E=class e extends Error{get errors(){return this.issues}constructor(e){super(),this.issues=[],this.addIssue=e=>{this.issues=[...this.issues,e]},this.addIssues=(e=[])=>{this.issues=[...this.issues,...e]};let t=new.target.prototype;Object.setPrototypeOf?Object.setPrototypeOf(this,t):this.__proto__=t,this.name=`ZodError`,this.issues=e}format(e){let t=e||function(e){return e.message},n={_errors:[]},r=e=>{for(let i of e.issues)if(i.code===`invalid_union`)i.unionErrors.map(r);else if(i.code===`invalid_return_type`)r(i.returnTypeError);else if(i.code===`invalid_arguments`)r(i.argumentsError);else if(i.path.length===0)n._errors.push(t(i));else{let e=n,r=0;for(;r<i.path.length;){let n=i.path[r];r===i.path.length-1?(e[n]=e[n]||{_errors:[]},e[n]._errors.push(t(i))):e[n]=e[n]||{_errors:[]},e=e[n],r++}}};return r(this),n}static assert(t){if(!(t instanceof e))throw Error(`Not a ZodError: ${t}`)}toString(){return this.message}get message(){return JSON.stringify(this.issues,S.jsonStringifyReplacer,2)}get isEmpty(){return this.issues.length===0}flatten(e=e=>e.message){let t={},n=[];for(let r of this.issues)if(r.path.length>0){let n=r.path[0];t[n]=t[n]||[],t[n].push(e(r))}else n.push(e(r));return{formErrors:n,fieldErrors:t}}get formErrors(){return this.flatten()}};E.create=e=>new E(e);var D=(e,t)=>{let n;switch(e.code){case T.invalid_type:n=e.received===C.undefined?`Required`:`Expected ${e.expected}, received ${e.received}`;break;case T.invalid_literal:n=`Invalid literal value, expected ${JSON.stringify(e.expected,S.jsonStringifyReplacer)}`;break;case T.unrecognized_keys:n=`Unrecognized key(s) in object: ${S.joinValues(e.keys,`, `)}`;break;case T.invalid_union:n=`Invalid input`;break;case T.invalid_union_discriminator:n=`Invalid discriminator value. Expected ${S.joinValues(e.options)}`;break;case T.invalid_enum_value:n=`Invalid enum value. Expected ${S.joinValues(e.options)}, received '${e.received}'`;break;case T.invalid_arguments:n=`Invalid function arguments`;break;case T.invalid_return_type:n=`Invalid function return type`;break;case T.invalid_date:n=`Invalid date`;break;case T.invalid_string:typeof e.validation==`object`?`includes`in e.validation?(n=`Invalid input: must include "${e.validation.includes}"`,typeof e.validation.position==`number`&&(n=`${n} at one or more positions greater than or equal to ${e.validation.position}`)):`startsWith`in e.validation?n=`Invalid input: must start with "${e.validation.startsWith}"`:`endsWith`in e.validation?n=`Invalid input: must end with "${e.validation.endsWith}"`:S.assertNever(e.validation):n=e.validation===`regex`?`Invalid`:`Invalid ${e.validation}`;break;case T.too_small:n=e.type===`array`?`Array must contain ${e.exact?`exactly`:e.inclusive?`at least`:`more than`} ${e.minimum} element(s)`:e.type===`string`?`String must contain ${e.exact?`exactly`:e.inclusive?`at least`:`over`} ${e.minimum} character(s)`:e.type===`number`||e.type===`bigint`?`Number must be ${e.exact?`exactly equal to `:e.inclusive?`greater than or equal to `:`greater than `}${e.minimum}`:e.type===`date`?`Date must be ${e.exact?`exactly equal to `:e.inclusive?`greater than or equal to `:`greater than `}${new Date(Number(e.minimum))}`:`Invalid input`;break;case T.too_big:n=e.type===`array`?`Array must contain ${e.exact?`exactly`:e.inclusive?`at most`:`less than`} ${e.maximum} element(s)`:e.type===`string`?`String must contain ${e.exact?`exactly`:e.inclusive?`at most`:`under`} ${e.maximum} character(s)`:e.type===`number`?`Number must be ${e.exact?`exactly`:e.inclusive?`less than or equal to`:`less than`} ${e.maximum}`:e.type===`bigint`?`BigInt must be ${e.exact?`exactly`:e.inclusive?`less than or equal to`:`less than`} ${e.maximum}`:e.type===`date`?`Date must be ${e.exact?`exactly`:e.inclusive?`smaller than or equal to`:`smaller than`} ${new Date(Number(e.maximum))}`:`Invalid input`;break;case T.custom:n=`Invalid input`;break;case T.invalid_intersection_types:n=`Intersection results could not be merged`;break;case T.not_multiple_of:n=`Number must be a multiple of ${e.multipleOf}`;break;case T.not_finite:n=`Number must be finite`;break;default:n=t.defaultError,S.assertNever(e)}return{message:n}},O=D;function k(){return O}var A=e=>{let{data:t,path:n,errorMaps:r,issueData:i}=e,a=[...n,...i.path||[]],o={...i,path:a};if(i.message!==void 0)return{...i,path:a,message:i.message};let s=``,c=r.filter(e=>!!e).slice().reverse();for(let e of c)s=e(o,{data:t,defaultError:s}).message;return{...i,path:a,message:s}};function j(e,t){let n=k(),r=A({issueData:t,data:e.data,path:e.path,errorMaps:[e.common.contextualErrorMap,e.schemaErrorMap,n,n===D?void 0:D].filter(e=>!!e)});e.common.issues.push(r)}var M=class e{constructor(){this.value=`valid`}dirty(){this.value===`valid`&&(this.value=`dirty`)}abort(){this.value!==`aborted`&&(this.value=`aborted`)}static mergeArray(e,t){let n=[];for(let r of t){if(r.status===`aborted`)return N;r.status===`dirty`&&e.dirty(),n.push(r.value)}return{status:e.value,value:n}}static async mergeObjectAsync(t,n){let r=[];for(let e of n){let t=await e.key,n=await e.value;r.push({key:t,value:n})}return e.mergeObjectSync(t,r)}static mergeObjectSync(e,t){let n={};for(let r of t){let{key:t,value:i}=r;if(t.status===`aborted`||i.status===`aborted`)return N;t.status===`dirty`&&e.dirty(),i.status===`dirty`&&e.dirty(),t.value!==`__proto__`&&(i.value!==void 0||r.alwaysSet)&&(n[t.value]=i.value)}return{status:e.value,value:n}}},N=Object.freeze({status:`aborted`}),Ne=e=>({status:`dirty`,value:e}),P=e=>({status:`valid`,value:e}),F=e=>e.status===`aborted`,Pe=e=>e.status===`dirty`,I=e=>e.status===`valid`,L=e=>typeof Promise<`u`&&e instanceof Promise,R;(function(e){e.errToObj=e=>typeof e==`string`?{message:e}:e||{},e.toString=e=>typeof e==`string`?e:e?.message})(R||={});var z=class{constructor(e,t,n,r){this._cachedPath=[],this.parent=e,this.data=t,this._path=n,this._key=r}get path(){return this._cachedPath.length||(Array.isArray(this._key)?this._cachedPath.push(...this._path,...this._key):this._cachedPath.push(...this._path,this._key)),this._cachedPath}},Fe=(e,t)=>{if(I(t))return{success:!0,data:t.value};if(!e.common.issues.length)throw Error(`Validation failed but no issues detected.`);return{success:!1,get error(){return this._error||=new E(e.common.issues),this._error}}};function B(e){if(!e)return{};let{errorMap:t,invalid_type_error:n,required_error:r,description:i}=e;if(t&&(n||r))throw Error(`Can't use "invalid_type_error" or "required_error" in conjunction with custom error map.`);return t?{errorMap:t,description:i}:{errorMap:(t,i)=>{let{message:a}=e;return t.code===`invalid_enum_value`?{message:a??i.defaultError}:i.data===void 0?{message:a??r??i.defaultError}:t.code===`invalid_type`?{message:a??n??i.defaultError}:{message:i.defaultError}},description:i}}var V=class{get description(){return this._def.description}_getType(e){return w(e.data)}_getOrReturnCtx(e,t){return t||{common:e.parent.common,data:e.data,parsedType:w(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}_processInputParams(e){return{status:new M,ctx:{common:e.parent.common,data:e.data,parsedType:w(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}}_parseSync(e){let t=this._parse(e);if(L(t))throw Error(`Synchronous parse encountered promise.`);return t}_parseAsync(e){let t=this._parse(e);return Promise.resolve(t)}parse(e,t){let n=this.safeParse(e,t);if(n.success)return n.data;throw n.error}safeParse(e,t){let n={common:{issues:[],async:t?.async??!1,contextualErrorMap:t?.errorMap},path:t?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:w(e)};return Fe(n,this._parseSync({data:e,path:n.path,parent:n}))}"~validate"(e){let t={common:{issues:[],async:!!this[`~standard`].async},path:[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:w(e)};if(!this[`~standard`].async)try{let n=this._parseSync({data:e,path:[],parent:t});return I(n)?{value:n.value}:{issues:t.common.issues}}catch(e){e?.message?.toLowerCase()?.includes(`encountered`)&&(this[`~standard`].async=!0),t.common={issues:[],async:!0}}return this._parseAsync({data:e,path:[],parent:t}).then(e=>I(e)?{value:e.value}:{issues:t.common.issues})}async parseAsync(e,t){let n=await this.safeParseAsync(e,t);if(n.success)return n.data;throw n.error}async safeParseAsync(e,t){let n={common:{issues:[],contextualErrorMap:t?.errorMap,async:!0},path:t?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:w(e)},r=this._parse({data:e,path:n.path,parent:n});return Fe(n,await(L(r)?r:Promise.resolve(r)))}refine(e,t){let n=e=>typeof t==`string`||t===void 0?{message:t}:typeof t==`function`?t(e):t;return this._refinement((t,r)=>{let i=e(t),a=()=>r.addIssue({code:T.custom,...n(t)});return typeof Promise<`u`&&i instanceof Promise?i.then(e=>e?!0:(a(),!1)):i?!0:(a(),!1)})}refinement(e,t){return this._refinement((n,r)=>e(n)?!0:(r.addIssue(typeof t==`function`?t(n,r):t),!1))}_refinement(e){return new X({schema:this,typeName:$.ZodEffects,effect:{type:`refinement`,refinement:e}})}superRefine(e){return this._refinement(e)}constructor(e){this.spa=this.safeParseAsync,this._def=e,this.parse=this.parse.bind(this),this.safeParse=this.safeParse.bind(this),this.parseAsync=this.parseAsync.bind(this),this.safeParseAsync=this.safeParseAsync.bind(this),this.spa=this.spa.bind(this),this.refine=this.refine.bind(this),this.refinement=this.refinement.bind(this),this.superRefine=this.superRefine.bind(this),this.optional=this.optional.bind(this),this.nullable=this.nullable.bind(this),this.nullish=this.nullish.bind(this),this.array=this.array.bind(this),this.promise=this.promise.bind(this),this.or=this.or.bind(this),this.and=this.and.bind(this),this.transform=this.transform.bind(this),this.brand=this.brand.bind(this),this.default=this.default.bind(this),this.catch=this.catch.bind(this),this.describe=this.describe.bind(this),this.pipe=this.pipe.bind(this),this.readonly=this.readonly.bind(this),this.isNullable=this.isNullable.bind(this),this.isOptional=this.isOptional.bind(this),this[`~standard`]={version:1,vendor:`zod`,validate:e=>this[`~validate`](e)}}optional(){return Z.create(this,this._def)}nullable(){return Q.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return W.create(this)}promise(){return Y.create(this,this._def)}or(e){return _t.create([this,e],this._def)}and(e){return bt.create(this,e,this._def)}transform(e){return new X({...B(this._def),schema:this,typeName:$.ZodEffects,effect:{type:`transform`,transform:e}})}default(e){let t=typeof e==`function`?e:()=>e;return new At({...B(this._def),innerType:this,defaultValue:t,typeName:$.ZodDefault})}brand(){return new Nt({typeName:$.ZodBranded,type:this,...B(this._def)})}catch(e){let t=typeof e==`function`?e:()=>e;return new jt({...B(this._def),innerType:this,catchValue:t,typeName:$.ZodCatch})}describe(e){let t=this.constructor;return new t({...this._def,description:e})}pipe(e){return Pt.create(this,e)}readonly(){return Ft.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}},Ie=/^c[^\s-]{8,}$/i,Le=/^[0-9a-z]+$/,Re=/^[0-9A-HJKMNP-TV-Z]{26}$/i,ze=/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/i,Be=/^[a-z0-9_-]{21}$/i,Ve=/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/,He=/^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/,Ue=/^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i,We=`^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$`,Ge,Ke=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,qe=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/(3[0-2]|[12]?[0-9])$/,Je=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/,Ye=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,Xe=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,Ze=/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,Qe=`((\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\d|30)|(02)-(0[1-9]|1\\d|2[0-8])))`,$e=RegExp(`^${Qe}$`);function et(e){let t=`[0-5]\\d`;e.precision?t=`${t}\\.\\d{${e.precision}}`:e.precision??(t=`${t}(\\.\\d+)?`);let n=e.precision?`+`:`?`;return`([01]\\d|2[0-3]):[0-5]\\d(:${t})${n}`}function tt(e){return RegExp(`^${et(e)}$`)}function nt(e){let t=`${Qe}T${et(e)}`,n=[];return n.push(e.local?`Z?`:`Z`),e.offset&&n.push(`([+-]\\d{2}:?\\d{2})`),t=`${t}(${n.join(`|`)})`,RegExp(`^${t}$`)}function rt(e,t){return!!((t===`v4`||!t)&&Ke.test(e)||(t===`v6`||!t)&&Je.test(e))}function it(e,t){if(!Ve.test(e))return!1;try{let[n]=e.split(`.`);if(!n)return!1;let r=n.replace(/-/g,`+`).replace(/_/g,`/`).padEnd(n.length+(4-n.length%4)%4,`=`),i=JSON.parse(atob(r));return!(typeof i!=`object`||!i||`typ`in i&&i?.typ!==`JWT`||!i.alg||t&&i.alg!==t)}catch{return!1}}function at(e,t){return!!((t===`v4`||!t)&&qe.test(e)||(t===`v6`||!t)&&Ye.test(e))}var ot=class e extends V{_parse(e){if(this._def.coerce&&(e.data=String(e.data)),this._getType(e)!==C.string){let t=this._getOrReturnCtx(e);return j(t,{code:T.invalid_type,expected:C.string,received:t.parsedType}),N}let t=new M,n;for(let r of this._def.checks)if(r.kind===`min`)e.data.length<r.value&&(n=this._getOrReturnCtx(e,n),j(n,{code:T.too_small,minimum:r.value,type:`string`,inclusive:!0,exact:!1,message:r.message}),t.dirty());else if(r.kind===`max`)e.data.length>r.value&&(n=this._getOrReturnCtx(e,n),j(n,{code:T.too_big,maximum:r.value,type:`string`,inclusive:!0,exact:!1,message:r.message}),t.dirty());else if(r.kind===`length`){let i=e.data.length>r.value,a=e.data.length<r.value;(i||a)&&(n=this._getOrReturnCtx(e,n),i?j(n,{code:T.too_big,maximum:r.value,type:`string`,inclusive:!0,exact:!0,message:r.message}):a&&j(n,{code:T.too_small,minimum:r.value,type:`string`,inclusive:!0,exact:!0,message:r.message}),t.dirty())}else if(r.kind===`email`)Ue.test(e.data)||(n=this._getOrReturnCtx(e,n),j(n,{validation:`email`,code:T.invalid_string,message:r.message}),t.dirty());else if(r.kind===`emoji`)Ge||=new RegExp(We,`u`),Ge.test(e.data)||(n=this._getOrReturnCtx(e,n),j(n,{validation:`emoji`,code:T.invalid_string,message:r.message}),t.dirty());else if(r.kind===`uuid`)ze.test(e.data)||(n=this._getOrReturnCtx(e,n),j(n,{validation:`uuid`,code:T.invalid_string,message:r.message}),t.dirty());else if(r.kind===`nanoid`)Be.test(e.data)||(n=this._getOrReturnCtx(e,n),j(n,{validation:`nanoid`,code:T.invalid_string,message:r.message}),t.dirty());else if(r.kind===`cuid`)Ie.test(e.data)||(n=this._getOrReturnCtx(e,n),j(n,{validation:`cuid`,code:T.invalid_string,message:r.message}),t.dirty());else if(r.kind===`cuid2`)Le.test(e.data)||(n=this._getOrReturnCtx(e,n),j(n,{validation:`cuid2`,code:T.invalid_string,message:r.message}),t.dirty());else if(r.kind===`ulid`)Re.test(e.data)||(n=this._getOrReturnCtx(e,n),j(n,{validation:`ulid`,code:T.invalid_string,message:r.message}),t.dirty());else if(r.kind===`url`)try{new URL(e.data)}catch{n=this._getOrReturnCtx(e,n),j(n,{validation:`url`,code:T.invalid_string,message:r.message}),t.dirty()}else r.kind===`regex`?(r.regex.lastIndex=0,r.regex.test(e.data)||(n=this._getOrReturnCtx(e,n),j(n,{validation:`regex`,code:T.invalid_string,message:r.message}),t.dirty())):r.kind===`trim`?e.data=e.data.trim():r.kind===`includes`?e.data.includes(r.value,r.position)||(n=this._getOrReturnCtx(e,n),j(n,{code:T.invalid_string,validation:{includes:r.value,position:r.position},message:r.message}),t.dirty()):r.kind===`toLowerCase`?e.data=e.data.toLowerCase():r.kind===`toUpperCase`?e.data=e.data.toUpperCase():r.kind===`startsWith`?e.data.startsWith(r.value)||(n=this._getOrReturnCtx(e,n),j(n,{code:T.invalid_string,validation:{startsWith:r.value},message:r.message}),t.dirty()):r.kind===`endsWith`?e.data.endsWith(r.value)||(n=this._getOrReturnCtx(e,n),j(n,{code:T.invalid_string,validation:{endsWith:r.value},message:r.message}),t.dirty()):r.kind===`datetime`?nt(r).test(e.data)||(n=this._getOrReturnCtx(e,n),j(n,{code:T.invalid_string,validation:`datetime`,message:r.message}),t.dirty()):r.kind===`date`?$e.test(e.data)||(n=this._getOrReturnCtx(e,n),j(n,{code:T.invalid_string,validation:`date`,message:r.message}),t.dirty()):r.kind===`time`?tt(r).test(e.data)||(n=this._getOrReturnCtx(e,n),j(n,{code:T.invalid_string,validation:`time`,message:r.message}),t.dirty()):r.kind===`duration`?He.test(e.data)||(n=this._getOrReturnCtx(e,n),j(n,{validation:`duration`,code:T.invalid_string,message:r.message}),t.dirty()):r.kind===`ip`?rt(e.data,r.version)||(n=this._getOrReturnCtx(e,n),j(n,{validation:`ip`,code:T.invalid_string,message:r.message}),t.dirty()):r.kind===`jwt`?it(e.data,r.alg)||(n=this._getOrReturnCtx(e,n),j(n,{validation:`jwt`,code:T.invalid_string,message:r.message}),t.dirty()):r.kind===`cidr`?at(e.data,r.version)||(n=this._getOrReturnCtx(e,n),j(n,{validation:`cidr`,code:T.invalid_string,message:r.message}),t.dirty()):r.kind===`base64`?Xe.test(e.data)||(n=this._getOrReturnCtx(e,n),j(n,{validation:`base64`,code:T.invalid_string,message:r.message}),t.dirty()):r.kind===`base64url`?Ze.test(e.data)||(n=this._getOrReturnCtx(e,n),j(n,{validation:`base64url`,code:T.invalid_string,message:r.message}),t.dirty()):S.assertNever(r);return{status:t.value,value:e.data}}_regex(e,t,n){return this.refinement(t=>e.test(t),{validation:t,code:T.invalid_string,...R.errToObj(n)})}_addCheck(t){return new e({...this._def,checks:[...this._def.checks,t]})}email(e){return this._addCheck({kind:`email`,...R.errToObj(e)})}url(e){return this._addCheck({kind:`url`,...R.errToObj(e)})}emoji(e){return this._addCheck({kind:`emoji`,...R.errToObj(e)})}uuid(e){return this._addCheck({kind:`uuid`,...R.errToObj(e)})}nanoid(e){return this._addCheck({kind:`nanoid`,...R.errToObj(e)})}cuid(e){return this._addCheck({kind:`cuid`,...R.errToObj(e)})}cuid2(e){return this._addCheck({kind:`cuid2`,...R.errToObj(e)})}ulid(e){return this._addCheck({kind:`ulid`,...R.errToObj(e)})}base64(e){return this._addCheck({kind:`base64`,...R.errToObj(e)})}base64url(e){return this._addCheck({kind:`base64url`,...R.errToObj(e)})}jwt(e){return this._addCheck({kind:`jwt`,...R.errToObj(e)})}ip(e){return this._addCheck({kind:`ip`,...R.errToObj(e)})}cidr(e){return this._addCheck({kind:`cidr`,...R.errToObj(e)})}datetime(e){return typeof e==`string`?this._addCheck({kind:`datetime`,precision:null,offset:!1,local:!1,message:e}):this._addCheck({kind:`datetime`,precision:e?.precision===void 0?null:e?.precision,offset:e?.offset??!1,local:e?.local??!1,...R.errToObj(e?.message)})}date(e){return this._addCheck({kind:`date`,message:e})}time(e){return typeof e==`string`?this._addCheck({kind:`time`,precision:null,message:e}):this._addCheck({kind:`time`,precision:e?.precision===void 0?null:e?.precision,...R.errToObj(e?.message)})}duration(e){return this._addCheck({kind:`duration`,...R.errToObj(e)})}regex(e,t){return this._addCheck({kind:`regex`,regex:e,...R.errToObj(t)})}includes(e,t){return this._addCheck({kind:`includes`,value:e,position:t?.position,...R.errToObj(t?.message)})}startsWith(e,t){return this._addCheck({kind:`startsWith`,value:e,...R.errToObj(t)})}endsWith(e,t){return this._addCheck({kind:`endsWith`,value:e,...R.errToObj(t)})}min(e,t){return this._addCheck({kind:`min`,value:e,...R.errToObj(t)})}max(e,t){return this._addCheck({kind:`max`,value:e,...R.errToObj(t)})}length(e,t){return this._addCheck({kind:`length`,value:e,...R.errToObj(t)})}nonempty(e){return this.min(1,R.errToObj(e))}trim(){return new e({...this._def,checks:[...this._def.checks,{kind:`trim`}]})}toLowerCase(){return new e({...this._def,checks:[...this._def.checks,{kind:`toLowerCase`}]})}toUpperCase(){return new e({...this._def,checks:[...this._def.checks,{kind:`toUpperCase`}]})}get isDatetime(){return!!this._def.checks.find(e=>e.kind===`datetime`)}get isDate(){return!!this._def.checks.find(e=>e.kind===`date`)}get isTime(){return!!this._def.checks.find(e=>e.kind===`time`)}get isDuration(){return!!this._def.checks.find(e=>e.kind===`duration`)}get isEmail(){return!!this._def.checks.find(e=>e.kind===`email`)}get isURL(){return!!this._def.checks.find(e=>e.kind===`url`)}get isEmoji(){return!!this._def.checks.find(e=>e.kind===`emoji`)}get isUUID(){return!!this._def.checks.find(e=>e.kind===`uuid`)}get isNANOID(){return!!this._def.checks.find(e=>e.kind===`nanoid`)}get isCUID(){return!!this._def.checks.find(e=>e.kind===`cuid`)}get isCUID2(){return!!this._def.checks.find(e=>e.kind===`cuid2`)}get isULID(){return!!this._def.checks.find(e=>e.kind===`ulid`)}get isIP(){return!!this._def.checks.find(e=>e.kind===`ip`)}get isCIDR(){return!!this._def.checks.find(e=>e.kind===`cidr`)}get isBase64(){return!!this._def.checks.find(e=>e.kind===`base64`)}get isBase64url(){return!!this._def.checks.find(e=>e.kind===`base64url`)}get minLength(){let e=null;for(let t of this._def.checks)t.kind===`min`&&(e===null||t.value>e)&&(e=t.value);return e}get maxLength(){let e=null;for(let t of this._def.checks)t.kind===`max`&&(e===null||t.value<e)&&(e=t.value);return e}};ot.create=e=>new ot({checks:[],typeName:$.ZodString,coerce:e?.coerce??!1,...B(e)});function st(e,t){let n=(e.toString().split(`.`)[1]||``).length,r=(t.toString().split(`.`)[1]||``).length,i=n>r?n:r;return Number.parseInt(e.toFixed(i).replace(`.`,``))%Number.parseInt(t.toFixed(i).replace(`.`,``))/10**i}var ct=class e extends V{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte,this.step=this.multipleOf}_parse(e){if(this._def.coerce&&(e.data=Number(e.data)),this._getType(e)!==C.number){let t=this._getOrReturnCtx(e);return j(t,{code:T.invalid_type,expected:C.number,received:t.parsedType}),N}let t,n=new M;for(let r of this._def.checks)r.kind===`int`?S.isInteger(e.data)||(t=this._getOrReturnCtx(e,t),j(t,{code:T.invalid_type,expected:`integer`,received:`float`,message:r.message}),n.dirty()):r.kind===`min`?(r.inclusive?e.data<r.value:e.data<=r.value)&&(t=this._getOrReturnCtx(e,t),j(t,{code:T.too_small,minimum:r.value,type:`number`,inclusive:r.inclusive,exact:!1,message:r.message}),n.dirty()):r.kind===`max`?(r.inclusive?e.data>r.value:e.data>=r.value)&&(t=this._getOrReturnCtx(e,t),j(t,{code:T.too_big,maximum:r.value,type:`number`,inclusive:r.inclusive,exact:!1,message:r.message}),n.dirty()):r.kind===`multipleOf`?st(e.data,r.value)!==0&&(t=this._getOrReturnCtx(e,t),j(t,{code:T.not_multiple_of,multipleOf:r.value,message:r.message}),n.dirty()):r.kind===`finite`?Number.isFinite(e.data)||(t=this._getOrReturnCtx(e,t),j(t,{code:T.not_finite,message:r.message}),n.dirty()):S.assertNever(r);return{status:n.value,value:e.data}}gte(e,t){return this.setLimit(`min`,e,!0,R.toString(t))}gt(e,t){return this.setLimit(`min`,e,!1,R.toString(t))}lte(e,t){return this.setLimit(`max`,e,!0,R.toString(t))}lt(e,t){return this.setLimit(`max`,e,!1,R.toString(t))}setLimit(t,n,r,i){return new e({...this._def,checks:[...this._def.checks,{kind:t,value:n,inclusive:r,message:R.toString(i)}]})}_addCheck(t){return new e({...this._def,checks:[...this._def.checks,t]})}int(e){return this._addCheck({kind:`int`,message:R.toString(e)})}positive(e){return this._addCheck({kind:`min`,value:0,inclusive:!1,message:R.toString(e)})}negative(e){return this._addCheck({kind:`max`,value:0,inclusive:!1,message:R.toString(e)})}nonpositive(e){return this._addCheck({kind:`max`,value:0,inclusive:!0,message:R.toString(e)})}nonnegative(e){return this._addCheck({kind:`min`,value:0,inclusive:!0,message:R.toString(e)})}multipleOf(e,t){return this._addCheck({kind:`multipleOf`,value:e,message:R.toString(t)})}finite(e){return this._addCheck({kind:`finite`,message:R.toString(e)})}safe(e){return this._addCheck({kind:`min`,inclusive:!0,value:-(2**53-1),message:R.toString(e)})._addCheck({kind:`max`,inclusive:!0,value:2**53-1,message:R.toString(e)})}get minValue(){let e=null;for(let t of this._def.checks)t.kind===`min`&&(e===null||t.value>e)&&(e=t.value);return e}get maxValue(){let e=null;for(let t of this._def.checks)t.kind===`max`&&(e===null||t.value<e)&&(e=t.value);return e}get isInt(){return!!this._def.checks.find(e=>e.kind===`int`||e.kind===`multipleOf`&&S.isInteger(e.value))}get isFinite(){let e=null,t=null;for(let n of this._def.checks)if(n.kind===`finite`||n.kind===`int`||n.kind===`multipleOf`)return!0;else n.kind===`min`?(t===null||n.value>t)&&(t=n.value):n.kind===`max`&&(e===null||n.value<e)&&(e=n.value);return Number.isFinite(t)&&Number.isFinite(e)}};ct.create=e=>new ct({checks:[],typeName:$.ZodNumber,coerce:e?.coerce||!1,...B(e)});var lt=class e extends V{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte}_parse(e){if(this._def.coerce)try{e.data=BigInt(e.data)}catch{return this._getInvalidInput(e)}if(this._getType(e)!==C.bigint)return this._getInvalidInput(e);let t,n=new M;for(let r of this._def.checks)r.kind===`min`?(r.inclusive?e.data<r.value:e.data<=r.value)&&(t=this._getOrReturnCtx(e,t),j(t,{code:T.too_small,type:`bigint`,minimum:r.value,inclusive:r.inclusive,message:r.message}),n.dirty()):r.kind===`max`?(r.inclusive?e.data>r.value:e.data>=r.value)&&(t=this._getOrReturnCtx(e,t),j(t,{code:T.too_big,type:`bigint`,maximum:r.value,inclusive:r.inclusive,message:r.message}),n.dirty()):r.kind===`multipleOf`?e.data%r.value!==BigInt(0)&&(t=this._getOrReturnCtx(e,t),j(t,{code:T.not_multiple_of,multipleOf:r.value,message:r.message}),n.dirty()):S.assertNever(r);return{status:n.value,value:e.data}}_getInvalidInput(e){let t=this._getOrReturnCtx(e);return j(t,{code:T.invalid_type,expected:C.bigint,received:t.parsedType}),N}gte(e,t){return this.setLimit(`min`,e,!0,R.toString(t))}gt(e,t){return this.setLimit(`min`,e,!1,R.toString(t))}lte(e,t){return this.setLimit(`max`,e,!0,R.toString(t))}lt(e,t){return this.setLimit(`max`,e,!1,R.toString(t))}setLimit(t,n,r,i){return new e({...this._def,checks:[...this._def.checks,{kind:t,value:n,inclusive:r,message:R.toString(i)}]})}_addCheck(t){return new e({...this._def,checks:[...this._def.checks,t]})}positive(e){return this._addCheck({kind:`min`,value:BigInt(0),inclusive:!1,message:R.toString(e)})}negative(e){return this._addCheck({kind:`max`,value:BigInt(0),inclusive:!1,message:R.toString(e)})}nonpositive(e){return this._addCheck({kind:`max`,value:BigInt(0),inclusive:!0,message:R.toString(e)})}nonnegative(e){return this._addCheck({kind:`min`,value:BigInt(0),inclusive:!0,message:R.toString(e)})}multipleOf(e,t){return this._addCheck({kind:`multipleOf`,value:e,message:R.toString(t)})}get minValue(){let e=null;for(let t of this._def.checks)t.kind===`min`&&(e===null||t.value>e)&&(e=t.value);return e}get maxValue(){let e=null;for(let t of this._def.checks)t.kind===`max`&&(e===null||t.value<e)&&(e=t.value);return e}};lt.create=e=>new lt({checks:[],typeName:$.ZodBigInt,coerce:e?.coerce??!1,...B(e)});var ut=class extends V{_parse(e){if(this._def.coerce&&(e.data=!!e.data),this._getType(e)!==C.boolean){let t=this._getOrReturnCtx(e);return j(t,{code:T.invalid_type,expected:C.boolean,received:t.parsedType}),N}return P(e.data)}};ut.create=e=>new ut({typeName:$.ZodBoolean,coerce:e?.coerce||!1,...B(e)});var dt=class e extends V{_parse(e){if(this._def.coerce&&(e.data=new Date(e.data)),this._getType(e)!==C.date){let t=this._getOrReturnCtx(e);return j(t,{code:T.invalid_type,expected:C.date,received:t.parsedType}),N}if(Number.isNaN(e.data.getTime()))return j(this._getOrReturnCtx(e),{code:T.invalid_date}),N;let t=new M,n;for(let r of this._def.checks)r.kind===`min`?e.data.getTime()<r.value&&(n=this._getOrReturnCtx(e,n),j(n,{code:T.too_small,message:r.message,inclusive:!0,exact:!1,minimum:r.value,type:`date`}),t.dirty()):r.kind===`max`?e.data.getTime()>r.value&&(n=this._getOrReturnCtx(e,n),j(n,{code:T.too_big,message:r.message,inclusive:!0,exact:!1,maximum:r.value,type:`date`}),t.dirty()):S.assertNever(r);return{status:t.value,value:new Date(e.data.getTime())}}_addCheck(t){return new e({...this._def,checks:[...this._def.checks,t]})}min(e,t){return this._addCheck({kind:`min`,value:e.getTime(),message:R.toString(t)})}max(e,t){return this._addCheck({kind:`max`,value:e.getTime(),message:R.toString(t)})}get minDate(){let e=null;for(let t of this._def.checks)t.kind===`min`&&(e===null||t.value>e)&&(e=t.value);return e==null?null:new Date(e)}get maxDate(){let e=null;for(let t of this._def.checks)t.kind===`max`&&(e===null||t.value<e)&&(e=t.value);return e==null?null:new Date(e)}};dt.create=e=>new dt({checks:[],coerce:e?.coerce||!1,typeName:$.ZodDate,...B(e)});var ft=class extends V{_parse(e){if(this._getType(e)!==C.symbol){let t=this._getOrReturnCtx(e);return j(t,{code:T.invalid_type,expected:C.symbol,received:t.parsedType}),N}return P(e.data)}};ft.create=e=>new ft({typeName:$.ZodSymbol,...B(e)});var pt=class extends V{_parse(e){if(this._getType(e)!==C.undefined){let t=this._getOrReturnCtx(e);return j(t,{code:T.invalid_type,expected:C.undefined,received:t.parsedType}),N}return P(e.data)}};pt.create=e=>new pt({typeName:$.ZodUndefined,...B(e)});var mt=class extends V{_parse(e){if(this._getType(e)!==C.null){let t=this._getOrReturnCtx(e);return j(t,{code:T.invalid_type,expected:C.null,received:t.parsedType}),N}return P(e.data)}};mt.create=e=>new mt({typeName:$.ZodNull,...B(e)});var ht=class extends V{constructor(){super(...arguments),this._any=!0}_parse(e){return P(e.data)}};ht.create=e=>new ht({typeName:$.ZodAny,...B(e)});var H=class extends V{constructor(){super(...arguments),this._unknown=!0}_parse(e){return P(e.data)}};H.create=e=>new H({typeName:$.ZodUnknown,...B(e)});var U=class extends V{_parse(e){let t=this._getOrReturnCtx(e);return j(t,{code:T.invalid_type,expected:C.never,received:t.parsedType}),N}};U.create=e=>new U({typeName:$.ZodNever,...B(e)});var gt=class extends V{_parse(e){if(this._getType(e)!==C.undefined){let t=this._getOrReturnCtx(e);return j(t,{code:T.invalid_type,expected:C.void,received:t.parsedType}),N}return P(e.data)}};gt.create=e=>new gt({typeName:$.ZodVoid,...B(e)});var W=class e extends V{_parse(e){let{ctx:t,status:n}=this._processInputParams(e),r=this._def;if(t.parsedType!==C.array)return j(t,{code:T.invalid_type,expected:C.array,received:t.parsedType}),N;if(r.exactLength!==null){let e=t.data.length>r.exactLength.value,i=t.data.length<r.exactLength.value;(e||i)&&(j(t,{code:e?T.too_big:T.too_small,minimum:i?r.exactLength.value:void 0,maximum:e?r.exactLength.value:void 0,type:`array`,inclusive:!0,exact:!0,message:r.exactLength.message}),n.dirty())}if(r.minLength!==null&&t.data.length<r.minLength.value&&(j(t,{code:T.too_small,minimum:r.minLength.value,type:`array`,inclusive:!0,exact:!1,message:r.minLength.message}),n.dirty()),r.maxLength!==null&&t.data.length>r.maxLength.value&&(j(t,{code:T.too_big,maximum:r.maxLength.value,type:`array`,inclusive:!0,exact:!1,message:r.maxLength.message}),n.dirty()),t.common.async)return Promise.all([...t.data].map((e,n)=>r.type._parseAsync(new z(t,e,t.path,n)))).then(e=>M.mergeArray(n,e));let i=[...t.data].map((e,n)=>r.type._parseSync(new z(t,e,t.path,n)));return M.mergeArray(n,i)}get element(){return this._def.type}min(t,n){return new e({...this._def,minLength:{value:t,message:R.toString(n)}})}max(t,n){return new e({...this._def,maxLength:{value:t,message:R.toString(n)}})}length(t,n){return new e({...this._def,exactLength:{value:t,message:R.toString(n)}})}nonempty(e){return this.min(1,e)}};W.create=(e,t)=>new W({type:e,minLength:null,maxLength:null,exactLength:null,typeName:$.ZodArray,...B(t)});function G(e){if(e instanceof K){let t={};for(let n in e.shape){let r=e.shape[n];t[n]=Z.create(G(r))}return new K({...e._def,shape:()=>t})}else if(e instanceof W)return new W({...e._def,type:G(e.element)});else if(e instanceof Z)return Z.create(G(e.unwrap()));else if(e instanceof Q)return Q.create(G(e.unwrap()));else if(e instanceof J)return J.create(e.items.map(e=>G(e)));else return e}var K=class e extends V{constructor(){super(...arguments),this._cached=null,this.nonstrict=this.passthrough,this.augment=this.extend}_getCached(){if(this._cached!==null)return this._cached;let e=this._def.shape();return this._cached={shape:e,keys:S.objectKeys(e)},this._cached}_parse(e){if(this._getType(e)!==C.object){let t=this._getOrReturnCtx(e);return j(t,{code:T.invalid_type,expected:C.object,received:t.parsedType}),N}let{status:t,ctx:n}=this._processInputParams(e),{shape:r,keys:i}=this._getCached(),a=[];if(!(this._def.catchall instanceof U&&this._def.unknownKeys===`strip`))for(let e in n.data)i.includes(e)||a.push(e);let o=[];for(let e of i){let t=r[e],i=n.data[e];o.push({key:{status:`valid`,value:e},value:t._parse(new z(n,i,n.path,e)),alwaysSet:e in n.data})}if(this._def.catchall instanceof U){let e=this._def.unknownKeys;if(e===`passthrough`)for(let e of a)o.push({key:{status:`valid`,value:e},value:{status:`valid`,value:n.data[e]}});else if(e===`strict`)a.length>0&&(j(n,{code:T.unrecognized_keys,keys:a}),t.dirty());else if(e!==`strip`)throw Error(`Internal ZodObject error: invalid unknownKeys value.`)}else{let e=this._def.catchall;for(let t of a){let r=n.data[t];o.push({key:{status:`valid`,value:t},value:e._parse(new z(n,r,n.path,t)),alwaysSet:t in n.data})}}return n.common.async?Promise.resolve().then(async()=>{let e=[];for(let t of o){let n=await t.key,r=await t.value;e.push({key:n,value:r,alwaysSet:t.alwaysSet})}return e}).then(e=>M.mergeObjectSync(t,e)):M.mergeObjectSync(t,o)}get shape(){return this._def.shape()}strict(t){return R.errToObj,new e({...this._def,unknownKeys:`strict`,...t===void 0?{}:{errorMap:(e,n)=>{let r=this._def.errorMap?.(e,n).message??n.defaultError;return e.code===`unrecognized_keys`?{message:R.errToObj(t).message??r}:{message:r}}}})}strip(){return new e({...this._def,unknownKeys:`strip`})}passthrough(){return new e({...this._def,unknownKeys:`passthrough`})}extend(t){return new e({...this._def,shape:()=>({...this._def.shape(),...t})})}merge(t){return new e({unknownKeys:t._def.unknownKeys,catchall:t._def.catchall,shape:()=>({...this._def.shape(),...t._def.shape()}),typeName:$.ZodObject})}setKey(e,t){return this.augment({[e]:t})}catchall(t){return new e({...this._def,catchall:t})}pick(t){let n={};for(let e of S.objectKeys(t))t[e]&&this.shape[e]&&(n[e]=this.shape[e]);return new e({...this._def,shape:()=>n})}omit(t){let n={};for(let e of S.objectKeys(this.shape))t[e]||(n[e]=this.shape[e]);return new e({...this._def,shape:()=>n})}deepPartial(){return G(this)}partial(t){let n={};for(let e of S.objectKeys(this.shape)){let r=this.shape[e];t&&!t[e]?n[e]=r:n[e]=r.optional()}return new e({...this._def,shape:()=>n})}required(t){let n={};for(let e of S.objectKeys(this.shape))if(t&&!t[e])n[e]=this.shape[e];else{let t=this.shape[e];for(;t instanceof Z;)t=t._def.innerType;n[e]=t}return new e({...this._def,shape:()=>n})}keyof(){return Dt(S.objectKeys(this.shape))}};K.create=(e,t)=>new K({shape:()=>e,unknownKeys:`strip`,catchall:U.create(),typeName:$.ZodObject,...B(t)}),K.strictCreate=(e,t)=>new K({shape:()=>e,unknownKeys:`strict`,catchall:U.create(),typeName:$.ZodObject,...B(t)}),K.lazycreate=(e,t)=>new K({shape:e,unknownKeys:`strip`,catchall:U.create(),typeName:$.ZodObject,...B(t)});var _t=class extends V{_parse(e){let{ctx:t}=this._processInputParams(e),n=this._def.options;function r(e){for(let t of e)if(t.result.status===`valid`)return t.result;for(let n of e)if(n.result.status===`dirty`)return t.common.issues.push(...n.ctx.common.issues),n.result;let n=e.map(e=>new E(e.ctx.common.issues));return j(t,{code:T.invalid_union,unionErrors:n}),N}if(t.common.async)return Promise.all(n.map(async e=>{let n={...t,common:{...t.common,issues:[]},parent:null};return{result:await e._parseAsync({data:t.data,path:t.path,parent:n}),ctx:n}})).then(r);{let e,r=[];for(let i of n){let n={...t,common:{...t.common,issues:[]},parent:null},a=i._parseSync({data:t.data,path:t.path,parent:n});if(a.status===`valid`)return a;a.status===`dirty`&&!e&&(e={result:a,ctx:n}),n.common.issues.length&&r.push(n.common.issues)}if(e)return t.common.issues.push(...e.ctx.common.issues),e.result;let i=r.map(e=>new E(e));return j(t,{code:T.invalid_union,unionErrors:i}),N}}get options(){return this._def.options}};_t.create=(e,t)=>new _t({options:e,typeName:$.ZodUnion,...B(t)});var q=e=>e instanceof Tt?q(e.schema):e instanceof X?q(e.innerType()):e instanceof Et?[e.value]:e instanceof Ot?e.options:e instanceof kt?S.objectValues(e.enum):e instanceof At?q(e._def.innerType):e instanceof pt?[void 0]:e instanceof mt?[null]:e instanceof Z?[void 0,...q(e.unwrap())]:e instanceof Q?[null,...q(e.unwrap())]:e instanceof Nt||e instanceof Ft?q(e.unwrap()):e instanceof jt?q(e._def.innerType):[],vt=class e extends V{_parse(e){let{ctx:t}=this._processInputParams(e);if(t.parsedType!==C.object)return j(t,{code:T.invalid_type,expected:C.object,received:t.parsedType}),N;let n=this.discriminator,r=t.data[n],i=this.optionsMap.get(r);return i?t.common.async?i._parseAsync({data:t.data,path:t.path,parent:t}):i._parseSync({data:t.data,path:t.path,parent:t}):(j(t,{code:T.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[n]}),N)}get discriminator(){return this._def.discriminator}get options(){return this._def.options}get optionsMap(){return this._def.optionsMap}static create(t,n,r){let i=new Map;for(let e of n){let n=q(e.shape[t]);if(!n.length)throw Error(`A discriminator value for key \`${t}\` could not be extracted from all schema options`);for(let r of n){if(i.has(r))throw Error(`Discriminator property ${String(t)} has duplicate value ${String(r)}`);i.set(r,e)}}return new e({typeName:$.ZodDiscriminatedUnion,discriminator:t,options:n,optionsMap:i,...B(r)})}};function yt(e,t){let n=w(e),r=w(t);if(e===t)return{valid:!0,data:e};if(n===C.object&&r===C.object){let n=S.objectKeys(t),r=S.objectKeys(e).filter(e=>n.indexOf(e)!==-1),i={...e,...t};for(let n of r){let r=yt(e[n],t[n]);if(!r.valid)return{valid:!1};i[n]=r.data}return{valid:!0,data:i}}else if(n===C.array&&r===C.array){if(e.length!==t.length)return{valid:!1};let n=[];for(let r=0;r<e.length;r++){let i=e[r],a=t[r],o=yt(i,a);if(!o.valid)return{valid:!1};n.push(o.data)}return{valid:!0,data:n}}else if(n===C.date&&r===C.date&&+e==+t)return{valid:!0,data:e};else return{valid:!1}}var bt=class extends V{_parse(e){let{status:t,ctx:n}=this._processInputParams(e),r=(e,r)=>{if(F(e)||F(r))return N;let i=yt(e.value,r.value);return i.valid?((Pe(e)||Pe(r))&&t.dirty(),{status:t.value,value:i.data}):(j(n,{code:T.invalid_intersection_types}),N)};return n.common.async?Promise.all([this._def.left._parseAsync({data:n.data,path:n.path,parent:n}),this._def.right._parseAsync({data:n.data,path:n.path,parent:n})]).then(([e,t])=>r(e,t)):r(this._def.left._parseSync({data:n.data,path:n.path,parent:n}),this._def.right._parseSync({data:n.data,path:n.path,parent:n}))}};bt.create=(e,t,n)=>new bt({left:e,right:t,typeName:$.ZodIntersection,...B(n)});var J=class e extends V{_parse(e){let{status:t,ctx:n}=this._processInputParams(e);if(n.parsedType!==C.array)return j(n,{code:T.invalid_type,expected:C.array,received:n.parsedType}),N;if(n.data.length<this._def.items.length)return j(n,{code:T.too_small,minimum:this._def.items.length,inclusive:!0,exact:!1,type:`array`}),N;!this._def.rest&&n.data.length>this._def.items.length&&(j(n,{code:T.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:`array`}),t.dirty());let r=[...n.data].map((e,t)=>{let r=this._def.items[t]||this._def.rest;return r?r._parse(new z(n,e,n.path,t)):null}).filter(e=>!!e);return n.common.async?Promise.all(r).then(e=>M.mergeArray(t,e)):M.mergeArray(t,r)}get items(){return this._def.items}rest(t){return new e({...this._def,rest:t})}};J.create=(e,t)=>{if(!Array.isArray(e))throw Error(`You must pass an array of schemas to z.tuple([ ... ])`);return new J({items:e,typeName:$.ZodTuple,rest:null,...B(t)})};var xt=class e extends V{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){let{status:t,ctx:n}=this._processInputParams(e);if(n.parsedType!==C.object)return j(n,{code:T.invalid_type,expected:C.object,received:n.parsedType}),N;let r=[],i=this._def.keyType,a=this._def.valueType;for(let e in n.data)r.push({key:i._parse(new z(n,e,n.path,e)),value:a._parse(new z(n,n.data[e],n.path,e)),alwaysSet:e in n.data});return n.common.async?M.mergeObjectAsync(t,r):M.mergeObjectSync(t,r)}get element(){return this._def.valueType}static create(t,n,r){return n instanceof V?new e({keyType:t,valueType:n,typeName:$.ZodRecord,...B(r)}):new e({keyType:ot.create(),valueType:t,typeName:$.ZodRecord,...B(n)})}},St=class extends V{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){let{status:t,ctx:n}=this._processInputParams(e);if(n.parsedType!==C.map)return j(n,{code:T.invalid_type,expected:C.map,received:n.parsedType}),N;let r=this._def.keyType,i=this._def.valueType,a=[...n.data.entries()].map(([e,t],a)=>({key:r._parse(new z(n,e,n.path,[a,`key`])),value:i._parse(new z(n,t,n.path,[a,`value`]))}));if(n.common.async){let e=new Map;return Promise.resolve().then(async()=>{for(let n of a){let r=await n.key,i=await n.value;if(r.status===`aborted`||i.status===`aborted`)return N;(r.status===`dirty`||i.status===`dirty`)&&t.dirty(),e.set(r.value,i.value)}return{status:t.value,value:e}})}else{let e=new Map;for(let n of a){let r=n.key,i=n.value;if(r.status===`aborted`||i.status===`aborted`)return N;(r.status===`dirty`||i.status===`dirty`)&&t.dirty(),e.set(r.value,i.value)}return{status:t.value,value:e}}}};St.create=(e,t,n)=>new St({valueType:t,keyType:e,typeName:$.ZodMap,...B(n)});var Ct=class e extends V{_parse(e){let{status:t,ctx:n}=this._processInputParams(e);if(n.parsedType!==C.set)return j(n,{code:T.invalid_type,expected:C.set,received:n.parsedType}),N;let r=this._def;r.minSize!==null&&n.data.size<r.minSize.value&&(j(n,{code:T.too_small,minimum:r.minSize.value,type:`set`,inclusive:!0,exact:!1,message:r.minSize.message}),t.dirty()),r.maxSize!==null&&n.data.size>r.maxSize.value&&(j(n,{code:T.too_big,maximum:r.maxSize.value,type:`set`,inclusive:!0,exact:!1,message:r.maxSize.message}),t.dirty());let i=this._def.valueType;function a(e){let n=new Set;for(let r of e){if(r.status===`aborted`)return N;r.status===`dirty`&&t.dirty(),n.add(r.value)}return{status:t.value,value:n}}let o=[...n.data.values()].map((e,t)=>i._parse(new z(n,e,n.path,t)));return n.common.async?Promise.all(o).then(e=>a(e)):a(o)}min(t,n){return new e({...this._def,minSize:{value:t,message:R.toString(n)}})}max(t,n){return new e({...this._def,maxSize:{value:t,message:R.toString(n)}})}size(e,t){return this.min(e,t).max(e,t)}nonempty(e){return this.min(1,e)}};Ct.create=(e,t)=>new Ct({valueType:e,minSize:null,maxSize:null,typeName:$.ZodSet,...B(t)});var wt=class e extends V{constructor(){super(...arguments),this.validate=this.implement}_parse(e){let{ctx:t}=this._processInputParams(e);if(t.parsedType!==C.function)return j(t,{code:T.invalid_type,expected:C.function,received:t.parsedType}),N;function n(e,n){return A({data:e,path:t.path,errorMaps:[t.common.contextualErrorMap,t.schemaErrorMap,k(),D].filter(e=>!!e),issueData:{code:T.invalid_arguments,argumentsError:n}})}function r(e,n){return A({data:e,path:t.path,errorMaps:[t.common.contextualErrorMap,t.schemaErrorMap,k(),D].filter(e=>!!e),issueData:{code:T.invalid_return_type,returnTypeError:n}})}let i={errorMap:t.common.contextualErrorMap},a=t.data;if(this._def.returns instanceof Y){let e=this;return P(async function(...t){let o=new E([]),s=await e._def.args.parseAsync(t,i).catch(e=>{throw o.addIssue(n(t,e)),o}),c=await Reflect.apply(a,this,s);return await e._def.returns._def.type.parseAsync(c,i).catch(e=>{throw o.addIssue(r(c,e)),o})})}else{let e=this;return P(function(...t){let o=e._def.args.safeParse(t,i);if(!o.success)throw new E([n(t,o.error)]);let s=Reflect.apply(a,this,o.data),c=e._def.returns.safeParse(s,i);if(!c.success)throw new E([r(s,c.error)]);return c.data})}}parameters(){return this._def.args}returnType(){return this._def.returns}args(...t){return new e({...this._def,args:J.create(t).rest(H.create())})}returns(t){return new e({...this._def,returns:t})}implement(e){return this.parse(e)}strictImplement(e){return this.parse(e)}static create(t,n,r){return new e({args:t||J.create([]).rest(H.create()),returns:n||H.create(),typeName:$.ZodFunction,...B(r)})}},Tt=class extends V{get schema(){return this._def.getter()}_parse(e){let{ctx:t}=this._processInputParams(e);return this._def.getter()._parse({data:t.data,path:t.path,parent:t})}};Tt.create=(e,t)=>new Tt({getter:e,typeName:$.ZodLazy,...B(t)});var Et=class extends V{_parse(e){if(e.data!==this._def.value){let t=this._getOrReturnCtx(e);return j(t,{received:t.data,code:T.invalid_literal,expected:this._def.value}),N}return{status:`valid`,value:e.data}}get value(){return this._def.value}};Et.create=(e,t)=>new Et({value:e,typeName:$.ZodLiteral,...B(t)});function Dt(e,t){return new Ot({values:e,typeName:$.ZodEnum,...B(t)})}var Ot=class e extends V{_parse(e){if(typeof e.data!=`string`){let t=this._getOrReturnCtx(e),n=this._def.values;return j(t,{expected:S.joinValues(n),received:t.parsedType,code:T.invalid_type}),N}if(this._cache||=new Set(this._def.values),!this._cache.has(e.data)){let t=this._getOrReturnCtx(e),n=this._def.values;return j(t,{received:t.data,code:T.invalid_enum_value,options:n}),N}return P(e.data)}get options(){return this._def.values}get enum(){let e={};for(let t of this._def.values)e[t]=t;return e}get Values(){let e={};for(let t of this._def.values)e[t]=t;return e}get Enum(){let e={};for(let t of this._def.values)e[t]=t;return e}extract(t,n=this._def){return e.create(t,{...this._def,...n})}exclude(t,n=this._def){return e.create(this.options.filter(e=>!t.includes(e)),{...this._def,...n})}};Ot.create=Dt;var kt=class extends V{_parse(e){let t=S.getValidEnumValues(this._def.values),n=this._getOrReturnCtx(e);if(n.parsedType!==C.string&&n.parsedType!==C.number){let e=S.objectValues(t);return j(n,{expected:S.joinValues(e),received:n.parsedType,code:T.invalid_type}),N}if(this._cache||=new Set(S.getValidEnumValues(this._def.values)),!this._cache.has(e.data)){let e=S.objectValues(t);return j(n,{received:n.data,code:T.invalid_enum_value,options:e}),N}return P(e.data)}get enum(){return this._def.values}};kt.create=(e,t)=>new kt({values:e,typeName:$.ZodNativeEnum,...B(t)});var Y=class extends V{unwrap(){return this._def.type}_parse(e){let{ctx:t}=this._processInputParams(e);return t.parsedType!==C.promise&&t.common.async===!1?(j(t,{code:T.invalid_type,expected:C.promise,received:t.parsedType}),N):P((t.parsedType===C.promise?t.data:Promise.resolve(t.data)).then(e=>this._def.type.parseAsync(e,{path:t.path,errorMap:t.common.contextualErrorMap})))}};Y.create=(e,t)=>new Y({type:e,typeName:$.ZodPromise,...B(t)});var X=class extends V{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===$.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse(e){let{status:t,ctx:n}=this._processInputParams(e),r=this._def.effect||null,i={addIssue:e=>{j(n,e),e.fatal?t.abort():t.dirty()},get path(){return n.path}};if(i.addIssue=i.addIssue.bind(i),r.type===`preprocess`){let e=r.transform(n.data,i);if(n.common.async)return Promise.resolve(e).then(async e=>{if(t.value===`aborted`)return N;let r=await this._def.schema._parseAsync({data:e,path:n.path,parent:n});return r.status===`aborted`?N:r.status===`dirty`||t.value===`dirty`?Ne(r.value):r});{if(t.value===`aborted`)return N;let r=this._def.schema._parseSync({data:e,path:n.path,parent:n});return r.status===`aborted`?N:r.status===`dirty`||t.value===`dirty`?Ne(r.value):r}}if(r.type===`refinement`){let e=e=>{let t=r.refinement(e,i);if(n.common.async)return Promise.resolve(t);if(t instanceof Promise)throw Error(`Async refinement encountered during synchronous parse operation. Use .parseAsync instead.`);return e};if(n.common.async===!1){let r=this._def.schema._parseSync({data:n.data,path:n.path,parent:n});return r.status===`aborted`?N:(r.status===`dirty`&&t.dirty(),e(r.value),{status:t.value,value:r.value})}else return this._def.schema._parseAsync({data:n.data,path:n.path,parent:n}).then(n=>n.status===`aborted`?N:(n.status===`dirty`&&t.dirty(),e(n.value).then(()=>({status:t.value,value:n.value}))))}if(r.type===`transform`)if(n.common.async===!1){let e=this._def.schema._parseSync({data:n.data,path:n.path,parent:n});if(!I(e))return N;let a=r.transform(e.value,i);if(a instanceof Promise)throw Error(`Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.`);return{status:t.value,value:a}}else return this._def.schema._parseAsync({data:n.data,path:n.path,parent:n}).then(e=>I(e)?Promise.resolve(r.transform(e.value,i)).then(e=>({status:t.value,value:e})):N);S.assertNever(r)}};X.create=(e,t,n)=>new X({schema:e,typeName:$.ZodEffects,effect:t,...B(n)}),X.createWithPreprocess=(e,t,n)=>new X({schema:t,effect:{type:`preprocess`,transform:e},typeName:$.ZodEffects,...B(n)});var Z=class extends V{_parse(e){return this._getType(e)===C.undefined?P(void 0):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}};Z.create=(e,t)=>new Z({innerType:e,typeName:$.ZodOptional,...B(t)});var Q=class extends V{_parse(e){return this._getType(e)===C.null?P(null):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}};Q.create=(e,t)=>new Q({innerType:e,typeName:$.ZodNullable,...B(t)});var At=class extends V{_parse(e){let{ctx:t}=this._processInputParams(e),n=t.data;return t.parsedType===C.undefined&&(n=this._def.defaultValue()),this._def.innerType._parse({data:n,path:t.path,parent:t})}removeDefault(){return this._def.innerType}};At.create=(e,t)=>new At({innerType:e,typeName:$.ZodDefault,defaultValue:typeof t.default==`function`?t.default:()=>t.default,...B(t)});var jt=class extends V{_parse(e){let{ctx:t}=this._processInputParams(e),n={...t,common:{...t.common,issues:[]}},r=this._def.innerType._parse({data:n.data,path:n.path,parent:{...n}});return L(r)?r.then(e=>({status:`valid`,value:e.status===`valid`?e.value:this._def.catchValue({get error(){return new E(n.common.issues)},input:n.data})})):{status:`valid`,value:r.status===`valid`?r.value:this._def.catchValue({get error(){return new E(n.common.issues)},input:n.data})}}removeCatch(){return this._def.innerType}};jt.create=(e,t)=>new jt({innerType:e,typeName:$.ZodCatch,catchValue:typeof t.catch==`function`?t.catch:()=>t.catch,...B(t)});var Mt=class extends V{_parse(e){if(this._getType(e)!==C.nan){let t=this._getOrReturnCtx(e);return j(t,{code:T.invalid_type,expected:C.nan,received:t.parsedType}),N}return{status:`valid`,value:e.data}}};Mt.create=e=>new Mt({typeName:$.ZodNaN,...B(e)});var Nt=class extends V{_parse(e){let{ctx:t}=this._processInputParams(e),n=t.data;return this._def.type._parse({data:n,path:t.path,parent:t})}unwrap(){return this._def.type}},Pt=class e extends V{_parse(e){let{status:t,ctx:n}=this._processInputParams(e);if(n.common.async)return(async()=>{let e=await this._def.in._parseAsync({data:n.data,path:n.path,parent:n});return e.status===`aborted`?N:e.status===`dirty`?(t.dirty(),Ne(e.value)):this._def.out._parseAsync({data:e.value,path:n.path,parent:n})})();{let e=this._def.in._parseSync({data:n.data,path:n.path,parent:n});return e.status===`aborted`?N:e.status===`dirty`?(t.dirty(),{status:`dirty`,value:e.value}):this._def.out._parseSync({data:e.value,path:n.path,parent:n})}}static create(t,n){return new e({in:t,out:n,typeName:$.ZodPipeline})}},Ft=class extends V{_parse(e){let t=this._def.innerType._parse(e),n=e=>(I(e)&&(e.value=Object.freeze(e.value)),e);return L(t)?t.then(e=>n(e)):n(t)}unwrap(){return this._def.innerType}};Ft.create=(e,t)=>new Ft({innerType:e,typeName:$.ZodReadonly,...B(t)}),K.lazycreate;var $;(function(e){e.ZodString=`ZodString`,e.ZodNumber=`ZodNumber`,e.ZodNaN=`ZodNaN`,e.ZodBigInt=`ZodBigInt`,e.ZodBoolean=`ZodBoolean`,e.ZodDate=`ZodDate`,e.ZodSymbol=`ZodSymbol`,e.ZodUndefined=`ZodUndefined`,e.ZodNull=`ZodNull`,e.ZodAny=`ZodAny`,e.ZodUnknown=`ZodUnknown`,e.ZodNever=`ZodNever`,e.ZodVoid=`ZodVoid`,e.ZodArray=`ZodArray`,e.ZodObject=`ZodObject`,e.ZodUnion=`ZodUnion`,e.ZodDiscriminatedUnion=`ZodDiscriminatedUnion`,e.ZodIntersection=`ZodIntersection`,e.ZodTuple=`ZodTuple`,e.ZodRecord=`ZodRecord`,e.ZodMap=`ZodMap`,e.ZodSet=`ZodSet`,e.ZodFunction=`ZodFunction`,e.ZodLazy=`ZodLazy`,e.ZodLiteral=`ZodLiteral`,e.ZodEnum=`ZodEnum`,e.ZodEffects=`ZodEffects`,e.ZodNativeEnum=`ZodNativeEnum`,e.ZodOptional=`ZodOptional`,e.ZodNullable=`ZodNullable`,e.ZodDefault=`ZodDefault`,e.ZodCatch=`ZodCatch`,e.ZodPromise=`ZodPromise`,e.ZodBranded=`ZodBranded`,e.ZodPipeline=`ZodPipeline`,e.ZodReadonly=`ZodReadonly`})($||={});var It=ot.create;ct.create,Mt.create,lt.create,ut.create,dt.create,ft.create,pt.create,mt.create,ht.create,H.create,U.create,gt.create,W.create;var Lt=K.create;K.strictCreate,_t.create,vt.create,bt.create,J.create,xt.create,St.create,Ct.create,wt.create,Tt.create,Et.create,Ot.create,kt.create,Y.create,X.create,Z.create,Q.create,X.createWithPreprocess,Pt.create;var Rt={class:`p-6`},zt={class:`flex items-center justify-between mb-4`},Bt={class:`bg-card rounded-lg border overflow-hidden`},Vt={class:`flex items-center gap-1`},Ht={class:`font-mono text-xs text-muted-foreground`},Ut={class:`flex flex-wrap gap-1`},Wt={key:0,class:`text-muted-foreground text-xs`},Gt={key:1,class:`text-muted-foreground`},Kt={class:`rounded-md border bg-muted/40 p-3 space-y-2`},qt={class:`flex gap-2`},Jt={key:0,class:`text-sm text-destructive mt-1`},Yt={key:0,class:`text-sm text-destructive mt-1`},Xt={key:0,class:`text-sm text-destructive mt-1`},Zt={class:`flex flex-wrap gap-1.5 mb-1.5`},Qt={class:`flex gap-2`},$t={class:`flex items-center gap-2 mb-1`},en={key:0,class:`mt-2 space-y-2`},tn={key:0,class:`text-sm text-destructive mt-1`},nn={key:0,class:`text-sm text-destructive mt-1`},rn={key:0,class:`text-sm text-destructive mt-1`},an={class:`flex items-center gap-2`},on=3,sn=12e4,cn=10,ln=100,un=1e3,dn=7,fn=7,pn=2e3,mn=te({__name:`Providers`,setup(te){let ie={name:``,api_type:`anthropic`,base_url:``,api_key:``,models:[],is_active:!0,max_concurrency:on,queue_timeout_ms:sn,max_queue_size:cn},S=t(``),Me=t([]),C=t([]),w=t(!1),T=t(null),E=t(null),D=t({...ie}),O=t({}),k=t(!1),A=t(null),j=Lt({name:It().min(1,`请输入名称`).regex(/^[a-zA-Z0-9_-]+$/,`仅允许英文、数字、横线和下划线`),base_url:It().min(1,`请输入 Base URL`).url(`请输入合法的 URL`)});function M(){let e={},t=j.safeParse({name:D.value.name.trim(),base_url:D.value.base_url.trim()});if(!t.success)for(let n of t.error.issues){let t=n.path[0];e[t]||(e[t]=n.message)}if(!T.value&&!D.value.api_key.trim()&&(e.api_key=`请输入 API Key`),k.value){let t=D.value.max_concurrency;(!t||t<1||t>ln)&&(e.max_concurrency=`范围 1-${ln}`),D.value.queue_timeout_ms<0&&(e.queue_timeout_ms=`不能为负数`);let n=D.value.max_queue_size;(!n||n<1||n>un)&&(e.max_queue_size=`范围 1-${un}`)}return O.value=e,Object.keys(e).length===0}function N(e){return e?e.slice(0,dn)+`*`.repeat(fn):``}async function Ne(e,t){await navigator.clipboard.writeText(e),A.value=t,setTimeout(()=>{A.value=null},pn)}let P=t(``),F=t(``),Pe=e(()=>P.value?C.value.find(e=>e.group===P.value)?.presets??[]:[]);function I(){let e=C.value.find(e=>e.group===P.value)?.presets;e?.length?(F.value=e[0].plan,L()):F.value=``}function L(){let e=Pe.value.find(e=>e.plan===F.value);e&&(D.value.name=e.presetName,D.value.api_type=e.apiType,D.value.base_url=e.baseUrl,D.value.models=[...e.models])}async function R(){try{Me.value=await m.getProviders()}catch(e){console.error(`Failed to load providers:`,e),Ee.error(e.apiMessage||`加载供应商失败`)}}function z(){let e=S.value.trim();if(!e)return;let t=e.split(/[,,]/).map(e=>e.trim()).filter(Boolean);for(let e of t)D.value.models.includes(e)||D.value.models.push(e);S.value=``}function Fe(e){D.value.models.splice(e,1)}function B(){T.value=null,D.value={...ie},k.value=!0,S.value=``,P.value=``,F.value=``,O.value={},w.value=!0}function V(e){T.value=e.id,D.value={name:e.name,api_type:e.api_type,base_url:e.base_url,api_key:``,models:[...e.models||[]],is_active:!!e.is_active,max_concurrency:e.max_concurrency??on,queue_timeout_ms:e.queue_timeout_ms??sn,max_queue_size:e.max_queue_size??cn},k.value=(e.max_concurrency??0)>0,S.value=``,P.value=``,F.value=``,O.value={},w.value=!0}function Ie(){let e={name:D.value.name,api_type:D.value.api_type,base_url:D.value.base_url,models:D.value.models,is_active:+!!D.value.is_active,max_concurrency:k.value?D.value.max_concurrency:0,queue_timeout_ms:k.value?D.value.queue_timeout_ms:0,max_queue_size:k.value?D.value.max_queue_size:cn};return D.value.api_key&&(e.api_key=D.value.api_key),e}async function Le(){if(M())try{let e=Ie();e.name=D.value.name.trim(),T.value?await m.updateProvider(T.value,e):(e.api_key=D.value.api_key,await m.createProvider(e)),w.value=!1,await R()}catch(e){console.error(`Failed to save provider:`,e),Ee.error(e.apiMessage||`保存供应商失败`)}}function Re(e){E.value=e}async function ze(){let e=E.value;if(e){E.value=null;try{await m.deleteProvider(e.id),await R()}catch(e){console.error(`Failed to delete provider:`,e),Ee.error(e.apiMessage||`删除供应商失败`)}}}return ne(async()=>{try{C.value=await m.recommended.getProviders()}catch{C.value=[]}await R()}),(e,t)=>(p(),f(`div`,Rt,[d(`div`,zt,[t[21]||=d(`h2`,{class:`text-lg font-semibold text-foreground`},`供应商`,-1),o(c(h),{onClick:B,class:`flex items-center gap-1`},{default:_(()=>[...t[20]||=[d(`svg`,{class:`w-4 h-4`,fill:`none`,stroke:`currentColor`,viewBox:`0 0 24 24`},[d(`path`,{"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`,d:`M12 4v16m8-8H4`})],-1),r(` 添加供应商 `,-1)]]),_:1})]),d(`div`,Bt,[o(c(Oe),null,{default:_(()=>[o(c(Ae),null,{default:_(()=>[o(c(ke),{class:`bg-muted`},{default:_(()=>[o(c(x),{class:`text-muted-foreground`},{default:_(()=>[...t[22]||=[r(`名称`,-1)]]),_:1}),o(c(x),{class:`text-muted-foreground`},{default:_(()=>[...t[23]||=[r(`类型`,-1)]]),_:1}),o(c(x),{class:`text-muted-foreground`},{default:_(()=>[...t[24]||=[r(`Base URL`,-1)]]),_:1}),o(c(x),{class:`text-muted-foreground`},{default:_(()=>[...t[25]||=[r(`API Key`,-1)]]),_:1}),o(c(x),{class:`text-muted-foreground`},{default:_(()=>[...t[26]||=[r(`模型`,-1)]]),_:1}),o(c(x),{class:`text-muted-foreground`},{default:_(()=>[...t[27]||=[r(`并发`,-1)]]),_:1}),o(c(x),{class:`text-muted-foreground`},{default:_(()=>[...t[28]||=[r(`状态`,-1)]]),_:1}),o(c(x),{class:`text-right text-muted-foreground`},{default:_(()=>[...t[29]||=[r(`操作`,-1)]]),_:1})]),_:1})]),_:1}),o(c(De),null,{default:_(()=>[(p(!0),f(ee,null,g(Me.value,e=>(p(),i(c(ke),{key:e.id,class:n({"opacity-60":!e.is_active})},{default:_(()=>[o(c(b),{class:`font-medium`},{default:_(()=>[r(l(e.name),1)]),_:2},1024),o(c(b),null,{default:_(()=>[o(c(Te),{variant:`secondary`},{default:_(()=>[r(l(e.api_type),1)]),_:2},1024)]),_:2},1024),o(c(b),{class:`text-muted-foreground`},{default:_(()=>[r(l(e.base_url),1)]),_:2},1024),o(c(b),null,{default:_(()=>[d(`div`,Vt,[d(`span`,Ht,l(N(e.api_key)),1),o(c(h),{variant:`ghost`,size:`sm`,class:`h-6 w-6 p-0`,onClick:t=>Ne(e.api_key,e.id)},{default:_(()=>[(p(),i(re(A.value===e.id?c(ae):c(je)),{class:n([`w-3.5 h-3.5`,{"text-green-500":A.value===e.id}])},null,8,[`class`]))]),_:2},1032,[`onClick`])])]),_:2},1024),o(c(b),null,{default:_(()=>[d(`div`,Ut,[(p(!0),f(ee,null,g(e.models||[],e=>(p(),i(c(Te),{key:e,variant:`secondary`,class:`text-xs`},{default:_(()=>[r(l(e),1)]),_:2},1024))),128)),e.models?.length?u(``,!0):(p(),f(`span`,Wt,`-`))])]),_:2},1024),o(c(b),null,{default:_(()=>[e.max_concurrency>0?(p(),i(c(Te),{key:0,variant:`secondary`},{default:_(()=>[r(l(e.max_concurrency),1)]),_:2},1024)):(p(),f(`span`,Gt,`-`))]),_:2},1024),o(c(b),null,{default:_(()=>[o(c(Te),{variant:e.is_active?`default`:`secondary`},{default:_(()=>[r(l(e.is_active?`启用`:`禁用`),1)]),_:2},1032,[`variant`])]),_:2},1024),o(c(b),{class:`text-right`},{default:_(()=>[o(c(h),{variant:`ghost`,size:`sm`,onClick:t=>V(e),class:`text-muted-foreground hover:text-primary mr-2`},{default:_(()=>[...t[30]||=[r(`编辑`,-1)]]),_:1},8,[`onClick`]),o(c(h),{variant:`ghost`,size:`sm`,onClick:t=>Re(e),class:`text-muted-foreground hover:text-destructive`},{default:_(()=>[...t[31]||=[r(`删除`,-1)]]),_:1},8,[`onClick`])]),_:2},1024)]),_:2},1032,[`class`]))),128)),Me.value.length===0?(p(),i(c(ke),{key:0},{default:_(()=>[o(c(b),{colspan:`8`,class:`text-center text-muted-foreground py-8`},{default:_(()=>[...t[32]||=[r(`暂无供应商`,-1)]]),_:1})]),_:1})):u(``,!0)]),_:1})]),_:1})]),o(c(me),{open:w.value,"onUpdate:open":t[18]||=e=>w.value=e},{default:_(()=>[o(c(fe),null,{default:_(()=>[o(c(pe),null,{default:_(()=>[o(c(ge),null,{default:_(()=>[r(l(T.value?`编辑供应商`:`添加供应商`),1)]),_:1})]),_:1}),d(`form`,{onSubmit:s(Le,[`prevent`]),class:`space-y-3`},[d(`div`,Kt,[t[33]||=d(`div`,{class:`text-xs font-medium text-muted-foreground`},`快速配置`,-1),d(`div`,qt,[o(c(oe),{modelValue:P.value,"onUpdate:modelValue":[t[0]||=e=>P.value=e,I]},{default:_(()=>[o(c(ce),{class:`flex-1`},{default:_(()=>[o(c(ue),{placeholder:`选择供应商`})]),_:1}),o(c(se),null,{default:_(()=>[(p(!0),f(ee,null,g(C.value,e=>(p(),i(c(le),{key:e.group,value:e.group},{default:_(()=>[r(l(e.group),1)]),_:2},1032,[`value`]))),128))]),_:1})]),_:1},8,[`modelValue`]),o(c(oe),{modelValue:F.value,"onUpdate:modelValue":[t[1]||=e=>F.value=e,L],disabled:!P.value},{default:_(()=>[o(c(ce),{class:`flex-1`},{default:_(()=>[o(c(ue),{placeholder:`选择套餐`})]),_:1}),o(c(se),null,{default:_(()=>[(p(!0),f(ee,null,g(Pe.value,e=>(p(),i(c(le),{key:e.plan,value:e.plan},{default:_(()=>[r(l(e.plan),1)]),_:2},1032,[`value`]))),128))]),_:1})]),_:1},8,[`modelValue`,`disabled`])])]),d(`div`,null,[o(c(v),{class:`block text-sm font-medium text-foreground mb-1`},{default:_(()=>[...t[34]||=[r(`名称`,-1)]]),_:1}),o(c(y),{modelValue:D.value.name,"onUpdate:modelValue":t[2]||=e=>D.value.name=e,type:`text`,required:``,onInput:t[3]||=e=>delete O.value.name},null,8,[`modelValue`]),O.value.name?(p(),f(`p`,Jt,l(O.value.name),1)):u(``,!0)]),d(`div`,null,[o(c(v),{class:`block text-sm font-medium text-foreground mb-1`},{default:_(()=>[...t[35]||=[r(`Base URL`,-1)]]),_:1}),o(c(y),{modelValue:D.value.base_url,"onUpdate:modelValue":t[4]||=e=>D.value.base_url=e,type:`url`,required:``,onInput:t[5]||=e=>delete O.value.base_url},null,8,[`modelValue`]),O.value.base_url?(p(),f(`p`,Yt,l(O.value.base_url),1)):u(``,!0)]),d(`div`,null,[o(c(v),{class:`block text-sm font-medium text-foreground mb-1`},{default:_(()=>[...t[36]||=[r(`API Key`,-1)]]),_:1}),o(c(y),{modelValue:D.value.api_key,"onUpdate:modelValue":t[6]||=e=>D.value.api_key=e,type:`text`,required:!T.value,placeholder:T.value?`留空则保持原密钥不变`:``,onInput:t[7]||=e=>delete O.value.api_key},null,8,[`modelValue`,`required`,`placeholder`]),O.value.api_key?(p(),f(`p`,Xt,l(O.value.api_key),1)):u(``,!0)]),d(`div`,null,[o(c(v),{class:`block text-sm font-medium text-foreground mb-1`},{default:_(()=>[...t[37]||=[r(`可用模型`,-1)]]),_:1}),d(`div`,Zt,[(p(!0),f(ee,null,g(D.value.models,(e,n)=>(p(),i(c(Te),{key:n,variant:`secondary`,class:`gap-1 pr-1`},{default:_(()=>[r(l(e)+` `,1),o(c(h),{type:`button`,variant:`ghost`,size:`icon`,class:`h-4 w-4 rounded-full hover:bg-muted p-0 text-xs leading-none`,onClick:e=>Fe(n)},{default:_(()=>[...t[38]||=[r(`×`,-1)]]),_:1},8,[`onClick`])]),_:2},1024))),128))]),d(`div`,Qt,[o(c(y),{modelValue:S.value,"onUpdate:modelValue":t[8]||=e=>S.value=e,placeholder:`输入模型名称,多个用逗号分隔`,onKeydown:a(s(z,[`prevent`]),[`enter`]),class:`flex-1`},null,8,[`modelValue`,`onKeydown`]),o(c(h),{type:`button`,variant:`outline`,size:`sm`,onClick:z,disabled:!S.value.trim()},{default:_(()=>[...t[39]||=[r(`添加`,-1)]]),_:1},8,[`disabled`])])]),d(`div`,null,[d(`div`,$t,[o(c(we),{modelValue:k.value,"onUpdate:modelValue":t[9]||=e=>k.value=e,id:`concurrency-switch`},null,8,[`modelValue`]),o(c(v),{for:`concurrency-switch`,class:`text-sm text-foreground`},{default:_(()=>[...t[40]||=[r(`并发控制`,-1)]]),_:1})]),k.value?(p(),f(`div`,en,[d(`div`,null,[o(c(v),{class:`block text-sm font-medium text-foreground mb-1`},{default:_(()=>[...t[41]||=[r(`最大并发数`,-1)]]),_:1}),o(c(y),{modelValue:D.value.max_concurrency,"onUpdate:modelValue":t[10]||=e=>D.value.max_concurrency=e,modelModifiers:{number:!0},type:`number`,min:`1`,max:ln,placeholder:`3`,onInput:t[11]||=e=>delete O.value.max_concurrency},null,8,[`modelValue`]),O.value.max_concurrency?(p(),f(`p`,tn,l(O.value.max_concurrency),1)):u(``,!0)]),d(`div`,null,[o(c(v),{class:`block text-sm font-medium text-foreground mb-1`},{default:_(()=>[...t[42]||=[r(`队列超时 (ms)`,-1)]]),_:1}),o(c(y),{modelValue:D.value.queue_timeout_ms,"onUpdate:modelValue":t[12]||=e=>D.value.queue_timeout_ms=e,modelModifiers:{number:!0},type:`number`,min:`0`,placeholder:`0 = 无限等待`,onInput:t[13]||=e=>delete O.value.queue_timeout_ms},null,8,[`modelValue`]),O.value.queue_timeout_ms?(p(),f(`p`,nn,l(O.value.queue_timeout_ms),1)):u(``,!0)]),d(`div`,null,[o(c(v),{class:`block text-sm font-medium text-foreground mb-1`},{default:_(()=>[...t[43]||=[r(`最大队列长度`,-1)]]),_:1}),o(c(y),{modelValue:D.value.max_queue_size,"onUpdate:modelValue":t[14]||=e=>D.value.max_queue_size=e,modelModifiers:{number:!0},type:`number`,min:`1`,max:un,placeholder:cn,onInput:t[15]||=e=>delete O.value.max_queue_size},null,8,[`modelValue`]),O.value.max_queue_size?(p(),f(`p`,rn,l(O.value.max_queue_size),1)):u(``,!0)])])):u(``,!0)]),d(`div`,an,[o(c(de),{modelValue:D.value.is_active,"onUpdate:modelValue":t[16]||=e=>D.value.is_active=e,id:`svc-active`},null,8,[`modelValue`]),o(c(v),{for:`svc-active`,class:`text-sm text-foreground`},{default:_(()=>[...t[44]||=[r(`启用`,-1)]]),_:1})]),o(c(he),null,{default:_(()=>[o(c(h),{type:`button`,variant:`outline`,onClick:t[17]||=e=>w.value=!1},{default:_(()=>[...t[45]||=[r(`取消`,-1)]]),_:1}),o(c(h),{type:`submit`},{default:_(()=>[...t[46]||=[r(`保存`,-1)]]),_:1})]),_:1})],32)]),_:1})]),_:1},8,[`open`]),o(c(ve),{open:!!E.value,"onUpdate:open":t[19]||=e=>{e||(E.value=null)}},{default:_(()=>[o(c(_e),null,{default:_(()=>[o(c(be),null,{default:_(()=>[o(c(Ce),null,{default:_(()=>[...t[47]||=[r(`确认删除`,-1)]]),_:1}),o(c(ye),null,{default:_(()=>[r(`确定要删除供应商「`+l(E.value?.name)+`」吗?此操作不可撤销。`,1)]),_:1})]),_:1}),o(c(Se),null,{default:_(()=>[o(c(xe),null,{default:_(()=>[...t[48]||=[r(`取消`,-1)]]),_:1}),o(c(h),{variant:`destructive`,onClick:ze},{default:_(()=>[...t[49]||=[r(`删除`,-1)]]),_:1})]),_:1})]),_:1})]),_:1},8,[`open`])]))}});export{mn as default};
@@ -0,0 +1,5 @@
1
+ import{B as e,Et as t,Ft as n,G as r,H as i,K as a,Lt as o,Nt as s,R as c,Rt as l,U as u,V as d,W as f,at as p,ct as m,et as h,i as g,k as _,n as v,nt as y,o as b,q as x,r as S,rt as C,st as w,vt as T,x as E}from"./button-BQ3s7yNh.js";import{o as D}from"./Teleport-DdjYHlNK.js";import{i as O,n as k,r as A,t as ee}from"./TooltipTrigger-H_QoPY1n.js";import{n as te,r as ne,t as re}from"./CollapsibleTrigger-CrOH9HlW.js";import{a as ie,c as ae,i as oe,n as se,o as ce,r as le,s as ue,t as j}from"./alert-dialog-Bi3dliLl.js";import{t as M}from"./Label-C_S0y7Um.js";import{t as N}from"./Switch-Wz-t_zkv.js";import{a as P,i as F,n as I,o as L,r as R,t as z}from"./TabsTrigger-CPCi2HIa.js";import{t as B}from"./badge-Kkta3e9W.js";import{n as V}from"./lib-CxwxnlwW.js";import{n as H,t as U}from"./CardContent-WrBnGhTg.js";import{n as W,t as G}from"./CardTitle-BcDYk7cq.js";import{a as de,i as K,n as q,o as fe,r as J,t as pe}from"./TableHeader-DGtcqGkw.js";import{t as me}from"./format-DOVIVsQC.js";var he=x({__name:`TabsContent`,props:{value:{type:[String,Number],required:!0},forceMount:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(n){let r=n,{forwardRef:c}=b(),l=L(),d=e(()=>P(l.baseId,r.value)),f=e(()=>F(l.baseId,r.value)),h=e(()=>r.value===l.modelValue.value),_=t(h.value);return C(()=>{l.registerContent(r.value),requestAnimationFrame(()=>{_.value=!1})}),y(()=>{l.unregisterContent(r.value)}),(e,t)=>(p(),i(s(D),{present:e.forceMount||h.value,"force-mount":``},{default:T(({present:t})=>[a(s(g),{id:f.value,ref:s(c),"as-child":e.asChild,as:e.as,role:`tabpanel`,"data-state":h.value?`active`:`inactive`,"data-orientation":s(l).orientation.value,"aria-labelledby":d.value,hidden:!t,tabindex:`0`,style:o({animationDuration:_.value?`0s`:void 0})},{default:T(()=>[!s(l).unmountOnHide.value||t?m(e.$slots,`default`,{key:0}):u(`v-if`,!0)]),_:2},1032,[`id`,`as-child`,`as`,`data-state`,`data-orientation`,`aria-labelledby`,`hidden`,`style`])]),_:3},8,[`present`]))}}),Y=x({__name:`CardDescription`,props:{class:{type:[Boolean,null,String,Object,Array]}},setup(e){let t=e;return(e,r)=>(p(),f(`div`,{"data-slot":`card-description`,class:n(s(S)(`text-muted-foreground text-sm`,t.class))},[m(e.$slots,`default`)],2))}}),X=x({__name:`TabsContent`,props:{value:{},forceMount:{type:Boolean},asChild:{type:Boolean},as:{},class:{type:[Boolean,null,String,Object,Array]}},setup(e){let t=e,n=E(t,`class`);return(e,r)=>(p(),i(s(he),h({"data-slot":`tabs-content`,class:s(S)(`text-sm flex-1 outline-none`,t.class)},s(n)),{default:T(()=>[m(e.$slots,`default`)]),_:3},16,[`class`]))}}),ge={key:0,class:`py-8 text-center text-muted-foreground`},_e={key:1,class:`py-8 text-center text-muted-foreground`},ve={class:`cursor-default font-mono text-xs`},ye={class:`font-mono text-xs`},be={key:0,class:`text-muted-foreground`},xe={key:1,class:`text-muted-foreground`},Se={class:`flex items-center gap-2`},Ce={class:`space-y-2`},we={class:`text-muted-foreground whitespace-nowrap`},Te={class:`text-muted-foreground`},Ee={class:`font-medium`},De=8,Oe=6e4,Z=60,Q=24,ke=x({__name:`SessionTable`,props:{sessions:{},loading:{type:Boolean},historyMap:{}},emits:[`clear`,`viewHistory`],setup(e,{emit:n}){let o=n,m=t(!1),h=t(null);function g(e){h.value=e,m.value=!0}function _(){h.value&&=(o(`clear`,h.value),null)}function y(e){return e.slice(0,De)+`...`}function b(e){let t=Date.now()-new Date(e).getTime(),n=Math.floor(t/Oe);if(n<1)return`刚刚`;if(n<Z)return`${n} 分钟前`;let r=Math.floor(n/Z);return r<Q?`${r} 小时前`:`${Math.floor(r/Q)} 天前`}return(t,n)=>(p(),f(c,null,[e.loading?(p(),f(`div`,ge,`加载中...`)):e.sessions.length===0?(p(),f(`div`,_e,`暂无活跃 Session`)):(p(),i(s(fe),{key:2},{default:T(()=>[a(s(pe),null,{default:T(()=>[a(s(J),null,{default:T(()=>[a(s(q),null,{default:T(()=>[...n[1]||=[r(`密钥名称`,-1)]]),_:1}),a(s(q),null,{default:T(()=>[...n[2]||=[r(`Session ID`,-1)]]),_:1}),a(s(q),null,{default:T(()=>[...n[3]||=[r(`当前模型`,-1)]]),_:1}),a(s(q),null,{default:T(()=>[...n[4]||=[r(`原始模型`,-1)]]),_:1}),a(s(q),null,{default:T(()=>[...n[5]||=[r(`最后活跃`,-1)]]),_:1}),a(s(q),null,{default:T(()=>[...n[6]||=[r(`操作`,-1)]]),_:1})]),_:1})]),_:1}),a(s(de),null,{default:T(()=>[(p(!0),f(c,null,w(e.sessions,o=>(p(),f(c,{key:o.id},[a(s(J),null,{default:T(()=>[a(s(K),{class:`font-medium`},{default:T(()=>[r(l(o.router_key_name),1)]),_:2},1024),a(s(K),null,{default:T(()=>[a(s(k),null,{default:T(()=>[a(s(O),null,{default:T(()=>[a(s(ee),{"as-child":``},{default:T(()=>[d(`span`,ve,l(y(o.session_id)),1)]),_:2},1024),a(s(A),null,{default:T(()=>[d(`p`,ye,l(o.session_id),1)]),_:2},1024)]),_:2},1024)]),_:2},1024)]),_:2},1024),a(s(K),null,{default:T(()=>[a(s(B),{variant:`secondary`},{default:T(()=>[r(l(o.current_model),1)]),_:2},1024)]),_:2},1024),a(s(K),null,{default:T(()=>[o.original_model?(p(),f(`span`,be,l(o.original_model),1)):(p(),f(`span`,xe,`-`))]),_:2},1024),a(s(K),{class:`text-muted-foreground text-sm`},{default:T(()=>[r(l(b(o.last_active_at)),1)]),_:2},1024),a(s(K),null,{default:T(()=>[d(`div`,Se,[a(s(v),{variant:`ghost`,size:`sm`,onClick:e=>t.$emit(`viewHistory`,o)},{default:T(()=>[r(l(e.historyMap[o.session_id]?`收起`:`历史`),1)]),_:2},1032,[`onClick`]),a(s(v),{variant:`ghost`,size:`sm`,class:`text-destructive hover:text-destructive`,onClick:e=>g(o)},{default:T(()=>[...n[7]||=[r(` 清除 `,-1)]]),_:1},8,[`onClick`])])]),_:2},1024)]),_:2},1024),e.historyMap[o.session_id]?(p(),i(s(J),{key:0},{default:T(()=>[a(s(K),{colspan:`6`,class:`bg-muted/50 px-6 py-3`},{default:T(()=>[d(`div`,Ce,[n[9]||=d(`p`,{class:`text-sm font-medium text-foreground`},`切换历史`,-1),(p(!0),f(c,null,w(e.historyMap[o.session_id],e=>(p(),f(`div`,{key:e.id,class:`flex items-center gap-3 text-sm`},[d(`span`,we,l(s(me)(e.created_at)),1),a(s(B),{variant:`outline`,class:`text-xs`},{default:T(()=>[r(l(e.trigger_type),1)]),_:2},1024),d(`span`,null,[d(`span`,Te,l(e.old_model||`默认`),1),n[8]||=d(`span`,{class:`mx-1`},`→`,-1),d(`span`,Ee,l(e.new_model),1)])]))),128))])]),_:2},1024)]),_:2},1024)):u(``,!0)],64))),128))]),_:1})]),_:1})),a(s(ae),{open:m.value,"onUpdate:open":n[0]||=e=>m.value=e},{default:T(()=>[a(s(ie),null,{default:T(()=>[a(s(se),null,{default:T(()=>[a(s(j),null,{default:T(()=>[...n[10]||=[r(`确认清除 Session`,-1)]]),_:1}),a(s(oe),null,{default:T(()=>[...n[11]||=[r(` 清除后,该 Session 将恢复使用默认模型映射。此操作不可撤销。 `,-1)]]),_:1})]),_:1}),a(s(le),null,{default:T(()=>[a(s(ce),null,{default:T(()=>[...n[12]||=[r(`取消`,-1)]]),_:1}),a(s(ue),{onClick:_},{default:T(()=>[...n[13]||=[r(`确认清除`,-1)]]),_:1})]),_:1})]),_:1})]),_:1},8,[`open`])],64))}}),Ae={class:`p-6`},$={class:`flex items-center justify-between mb-4`},je={key:0,class:`flex items-center gap-1`},Me={key:1},Ne={class:`flex items-center gap-3`},Pe={class:`flex items-center justify-between`},Fe=`---
2
+ description: 切换代理路由模型
3
+ ---
4
+
5
+ [router-command: select-model $ARGUMENTS]`,Ie=x({__name:`ProxyEnhancement`,setup(e){let i=t(!1),o=t(!1),c=t(!0),u=t([]),m=t(!1),h=t({});async function g(){try{i.value=(await _.getProxyEnhancement()).claude_code_enabled}catch(e){console.error(`Failed to load proxy enhancement config:`,e),V.error(e.apiMessage||`加载配置失败`)}}async function y(){o.value=!0;try{await _.updateProxyEnhancement({claude_code_enabled:i.value}),V.success(`保存成功`)}catch(e){console.error(`Failed to save proxy enhancement config:`,e),V.error(e.apiMessage||`保存失败`)}finally{o.value=!1}}async function b(){m.value=!0;try{u.value=await _.getSessionStates()}catch(e){console.error(`Failed to load sessions:`,e),V.error(e.apiMessage||`加载 Session 列表失败`)}finally{m.value=!1}}async function x(e){try{await _.deleteSessionState(e.router_key_id,e.session_id),V.success(`Session 已清除`),b()}catch(e){console.error(`Failed to clear session:`,e),V.error(e.apiMessage||`清除 Session 失败`)}}async function S(e){let t=e.session_id;if(h.value[t]){delete h.value[t];return}try{let n=await _.getSessionHistory(e.router_key_id,e.session_id);h.value[t]=n}catch(e){console.error(`Failed to load history:`,e),V.error(e.apiMessage||`加载历史记录失败`)}}return C(()=>{g(),b()}),(e,t)=>(p(),f(`div`,Ae,[d(`div`,$,[t[3]||=d(`h2`,{class:`text-lg font-semibold text-foreground`},`代理增强(实验性)`,-1),a(s(v),{disabled:o.value,onClick:y},{default:T(()=>[o.value?(p(),f(`span`,je,[...t[2]||=[d(`svg`,{class:`w-4 h-4 animate-spin`,fill:`none`,viewBox:`0 0 24 24`},[d(`circle`,{class:`opacity-25`,cx:`12`,cy:`12`,r:`10`,stroke:`currentColor`,"stroke-width":`4`}),d(`path`,{class:`opacity-75`,fill:`currentColor`,d:`M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z`})],-1),r(` 保存中... `,-1)]])):(p(),f(`span`,Me,`保存`))]),_:1},8,[`disabled`])]),a(s(R),{"default-value":`claude-code`},{default:T(()=>[a(s(I),null,{default:T(()=>[a(s(z),{value:`claude-code`},{default:T(()=>[...t[4]||=[r(`Claude Code`,-1)]]),_:1}),a(s(z),{value:`opencode`},{default:T(()=>[...t[5]||=[r(`OpenCode`,-1)]]),_:1})]),_:1}),a(s(X),{value:`claude-code`},{default:T(()=>[a(s(H),null,{default:T(()=>[a(s(W),null,{default:T(()=>[a(s(G),null,{default:T(()=>[...t[6]||=[r(`Claude Code 动态模型切换`,-1)]]),_:1}),a(s(Y),null,{default:T(()=>[...t[7]||=[r(` 在 Claude Code 对话中通过 /select-model 命令动态切换后端模型。模型选择在当前会话内有效(24h),不影响路由配置。 `,-1)]]),_:1})]),_:1}),a(s(U),null,{default:T(()=>[d(`div`,Ne,[a(s(N),{id:`claude-code-toggle`,modelValue:i.value,"onUpdate:modelValue":t[0]||=e=>i.value=e},null,8,[`modelValue`]),a(s(M),{for:`claude-code-toggle`},{default:T(()=>[r(l(i.value?`已启用`:`已禁用`),1)]),_:1})])]),_:1})]),_:1}),a(s(ne),{open:c.value,"onUpdate:open":t[1]||=e=>c.value=e,class:`mt-4`},{default:T(()=>[a(s(re),{"as-child":``},{default:T(()=>[a(s(v),{variant:`ghost`,class:`w-full justify-between`},{default:T(()=>[t[9]||=d(`span`,null,`使用说明`,-1),(p(),f(`svg`,{class:n([`w-4 h-4 transition-transform`,{"rotate-180":c.value}]),fill:`none`,stroke:`currentColor`,viewBox:`0 0 24 24`},[...t[8]||=[d(`path`,{"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`,d:`M19 9l-7 7-7-7`},null,-1)]],2))]),_:1})]),_:1}),a(s(te),{class:`mt-2`},{default:T(()=>[a(s(H),null,{default:T(()=>[a(s(U),{class:`space-y-4 text-sm`},{default:T(()=>[d(`div`,null,[t[10]||=d(`p`,{class:`font-medium text-foreground mb-1 leading-relaxed`},`配置方法`,-1),t[11]||=d(`p`,{class:`text-muted-foreground leading-relaxed`},` 在 Claude Code 项目级或全局级目录下创建 Command 文件: `,-1),t[12]||=d(`code`,{class:`block mt-1 px-3 py-2 bg-muted rounded text-xs font-mono whitespace-pre-wrap leading-relaxed`},[r(` # 项目级 .claude/commands/select-model.md`),d(`br`),r(` # 全局级 ~/.claude/commands/select-model.md `)],-1),t[13]||=d(`p`,{class:`text-muted-foreground leading-relaxed mt-2`},` 文件内容: `,-1),d(`code`,{class:`block mt-1 px-3 py-2 bg-muted rounded text-xs font-mono whitespace-pre-wrap leading-relaxed`,textContent:Fe})]),t[14]||=d(`div`,null,[d(`p`,{class:`font-medium text-foreground mb-1 leading-relaxed`},`使用方法`),d(`p`,{class:`text-muted-foreground leading-relaxed`},` 查看可用模型列表(格式为 provider_name/backend_model): `),d(`code`,{class:`block mt-1 px-3 py-2 bg-muted rounded text-xs font-mono whitespace-pre-wrap leading-relaxed`},` /select-model `),d(`p`,{class:`text-muted-foreground leading-relaxed mt-2`},` 选择模型并记住到当前会话: `),d(`code`,{class:`block mt-1 px-3 py-2 bg-muted rounded text-xs font-mono whitespace-pre-wrap leading-relaxed`},` /select-model provider_name/backend_model `),d(`p`,{class:`text-muted-foreground leading-relaxed mt-2`},` 切换后在下方活跃 Session 表中确认状态,请求日志中可验证路由是否生效。 `)],-1)]),_:1})]),_:1})]),_:1})]),_:1},8,[`open`]),a(s(H),{class:`mt-4`},{default:T(()=>[a(s(W),null,{default:T(()=>[d(`div`,Pe,[d(`div`,null,[a(s(G),null,{default:T(()=>[...t[15]||=[r(`活跃 Session`,-1)]]),_:1}),a(s(Y),null,{default:T(()=>[...t[16]||=[r(`查看和管理当前已配置模型的 session`,-1)]]),_:1})]),a(s(v),{variant:`outline`,size:`sm`,onClick:b,disabled:m.value},{default:T(()=>[...t[17]||=[r(`刷新`,-1)]]),_:1},8,[`disabled`])])]),_:1}),a(s(U),null,{default:T(()=>[a(ke,{sessions:u.value,loading:m.value,"history-map":h.value,onClear:x,onViewHistory:S},null,8,[`sessions`,`loading`,`history-map`])]),_:1})]),_:1})]),_:1}),a(s(X),{value:`opencode`},{default:T(()=>[...t[18]||=[d(`div`,{class:`flex flex-col items-center justify-center py-16 text-muted-foreground`},[d(`p`,{class:`text-lg`},`暂未支持 OpenCode 增强`)],-1)]]),_:1})]),_:1})]))}});export{Ie as default};
@@ -0,0 +1 @@
1
+ import{B as e,Et as t,Ft as n,G as r,H as i,K as a,L as o,Nt as s,R as c,Rt as l,U as u,V as d,W as f,at as p,k as m,n as h,q as ee,rt as te,st as g,vt as _}from"./button-BQ3s7yNh.js";import{r as v}from"./useNonce-DKbOCfgM.js";import{a as y,i as b,n as ne,r as x,t as re}from"./SelectValue-CLp5z6_I.js";import{t as S}from"./Checkbox-MZf0YsDG.js";import{n as ie,r as ae,t as oe}from"./CollapsibleTrigger-CrOH9HlW.js";import{a as se,n as ce,o as le,r as ue,t as de}from"./dialog-DoIATUYw.js";import{a as fe,c as pe,i as me,n as he,o as ge,r as C,t as w}from"./alert-dialog-Bi3dliLl.js";import{t as T}from"./Label-C_S0y7Um.js";import{t as E}from"./badge-Kkta3e9W.js";import{n as D}from"./lib-CxwxnlwW.js";import{n as _e,t as ve}from"./CardContent-WrBnGhTg.js";import{n as O,t as k}from"./CardTitle-BcDYk7cq.js";import{t as A}from"./Input-O0ebU-Va.js";import{a as j,i as M,n as N,o as P,r as F,t as I}from"./TableHeader-DGtcqGkw.js";var ye={class:`p-6`},be={class:`flex items-center justify-between mb-4`},xe={class:`bg-card rounded-lg border overflow-hidden`},Se={class:`flex items-center gap-2`},Ce={class:`text-xs text-muted-foreground`},we={key:0,class:`text-sm text-destructive mt-1`},Te={key:0,class:`text-sm text-destructive mt-1`},Ee={key:0,class:`text-sm text-destructive mt-1`},L={class:`grid grid-cols-2 gap-3`},De={key:0,class:`text-sm text-destructive mt-1`},Oe={key:0,class:`text-sm text-destructive mt-1`},ke={key:0},Ae={key:0,class:`text-sm text-destructive mt-1`},je={class:`flex items-center gap-2`},Me={class:`flex items-center justify-between`},Ne={class:`flex items-center justify-between mb-3`},Pe={class:`flex items-center gap-2`},R=100,z=599,B=100,V=100,H=ee({__name:`RetryRules`,setup(ee){let H={name:``,status_code:429,body_pattern:``,is_active:!0,retry_strategy:`exponential`,retry_delay_ms:5e3,max_retries:10,max_delay_ms:6e4},U=t([]),W=t(!1),G=t(null),K=t(null),q=t({...H}),J=t({});function Fe(){let e={};q.value.name.trim()||(e.name=`请输入名称`);let t=Number(q.value.status_code);if((!Number.isInteger(t)||t<R||t>z)&&(e.status_code=`范围 ${R}-${z}`),!q.value.body_pattern.trim())e.body_pattern=`请输入匹配规则`;else try{new RegExp(q.value.body_pattern)}catch{e.body_pattern=`不是合法的正则表达式`}let n=Number(q.value.retry_delay_ms);(!n||n<B)&&(e.retry_delay_ms=`不能小于 ${B}ms`);let r=Number(q.value.max_retries);if((!Number.isInteger(r)||r<0||r>V)&&(e.max_retries=`范围 0-${V}`),q.value.retry_strategy===`exponential`){let t=Number(q.value.max_delay_ms);(!t||t<B)&&(e.max_delay_ms=`不能小于 ${B}ms`)}return J.value=e,Object.keys(e).length===0}async function Y(){try{U.value=await m.getRetryRules()}catch(e){console.error(`Failed to load retry rules:`,e),D.error(e.apiMessage||`加载数据失败`)}}function Ie(){G.value=null,q.value={...H},J.value={},W.value=!0}function Le(e){G.value=e.id,q.value={name:e.name,status_code:e.status_code,body_pattern:e.body_pattern,is_active:!!e.is_active,retry_strategy:e.retry_strategy,retry_delay_ms:e.retry_delay_ms,max_retries:e.max_retries,max_delay_ms:e.max_delay_ms},J.value={},W.value=!0}async function Re(){if(Fe())try{let e={name:q.value.name,status_code:Number(q.value.status_code),body_pattern:q.value.body_pattern,is_active:+!!q.value.is_active,retry_strategy:q.value.retry_strategy,retry_delay_ms:Number(q.value.retry_delay_ms),max_retries:Number(q.value.max_retries),max_delay_ms:Number(q.value.max_delay_ms)};G.value?await m.updateRetryRule(G.value,e):await m.createRetryRule(e),W.value=!1,await Y()}catch(e){console.error(`Failed to save retry rule:`,e),D.error(e.apiMessage||`保存规则失败`)}}function ze(e){K.value=e}async function Be(){let e=K.value;if(e){K.value=null;try{await m.deleteRetryRule(e.id),await Y()}catch(e){console.error(`Failed to delete retry rule:`,e),D.error(e.apiMessage||`删除规则失败`)}}}let X=t(!1),Z=t([]),Q=t(new Set),Ve=e(()=>Z.value.length>0&&Q.value.size===Z.value.length);async function $(){try{Z.value=await m.recommended.getRetryRules()}catch{Z.value=[]}}function He(e){let t=new Set(Q.value);t.has(e)?t.delete(e):t.add(e),Q.value=t}function Ue(e){Q.value=e===!0?new Set(Z.value.map(e=>e.name)):new Set}async function We(){let e=Z.value.filter(e=>Q.value.has(e.name));for(let t of e)await m.createRetryRule({name:t.name,status_code:t.status_code,body_pattern:t.body_pattern,is_active:1,retry_strategy:t.retry_strategy,retry_delay_ms:t.retry_delay_ms,max_retries:t.max_retries,max_delay_ms:t.max_delay_ms});D.success(`已添加 ${e.length} 条规则`),Q.value=new Set,await Promise.allSettled([$(),Y()])}return te(()=>{Y(),$()}),(e,t)=>(p(),f(`div`,ye,[d(`div`,be,[t[19]||=d(`h2`,{class:`text-lg font-semibold text-foreground`},`重试规则`,-1),a(s(h),{onClick:Ie,class:`flex items-center gap-1`},{default:_(()=>[...t[18]||=[d(`svg`,{class:`w-4 h-4`,fill:`none`,stroke:`currentColor`,viewBox:`0 0 24 24`},[d(`path`,{"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`,d:`M12 4v16m8-8H4`})],-1),r(` 添加规则 `,-1)]]),_:1})]),d(`div`,xe,[a(s(P),null,{default:_(()=>[a(s(I),null,{default:_(()=>[a(s(F),{class:`bg-muted`},{default:_(()=>[a(s(N),{class:`text-muted-foreground`},{default:_(()=>[...t[20]||=[r(`名称`,-1)]]),_:1}),a(s(N),{class:`text-muted-foreground`},{default:_(()=>[...t[21]||=[r(`HTTP 状态码`,-1)]]),_:1}),a(s(N),{class:`text-muted-foreground`},{default:_(()=>[...t[22]||=[r(`响应体匹配`,-1)]]),_:1}),a(s(N),{class:`text-muted-foreground`},{default:_(()=>[...t[23]||=[r(`重试策略`,-1)]]),_:1}),a(s(N),{class:`text-muted-foreground`},{default:_(()=>[...t[24]||=[r(`状态`,-1)]]),_:1}),a(s(N),{class:`text-right text-muted-foreground`},{default:_(()=>[...t[25]||=[r(`操作`,-1)]]),_:1})]),_:1})]),_:1}),a(s(j),null,{default:_(()=>[(p(!0),f(c,null,g(U.value,e=>(p(),i(s(F),{key:e.id},{default:_(()=>[a(s(M),{class:`font-mono text-sm`},{default:_(()=>[r(l(e.name),1)]),_:2},1024),a(s(M),null,{default:_(()=>[r(l(e.status_code),1)]),_:2},1024),a(s(M),{class:`font-mono text-xs text-muted-foreground`},{default:_(()=>[r(l(e.body_pattern),1)]),_:2},1024),a(s(M),null,{default:_(()=>[d(`div`,Se,[a(s(E),{variant:`outline`},{default:_(()=>[r(l(e.retry_strategy===`fixed`?`固定间隔`:`指数退避`),1)]),_:2},1024),d(`span`,Ce,[r(l(e.retry_delay_ms/1e3)+`s · `+l(e.max_retries)+`次 `,1),e.retry_strategy===`exponential`?(p(),f(c,{key:0},[r(` · 上限`+l(e.max_delay_ms/1e3)+`s`,1)],64)):u(``,!0)])])]),_:2},1024),a(s(M),null,{default:_(()=>[a(s(E),{variant:e.is_active?`default`:`secondary`},{default:_(()=>[r(l(e.is_active?`启用`:`禁用`),1)]),_:2},1032,[`variant`])]),_:2},1024),a(s(M),{class:`text-right`},{default:_(()=>[a(s(h),{variant:`ghost`,size:`sm`,onClick:t=>Le(e),class:`mr-2`},{default:_(()=>[...t[26]||=[r(`编辑`,-1)]]),_:1},8,[`onClick`]),a(s(h),{variant:`ghost`,size:`sm`,class:`text-destructive hover:text-destructive`,onClick:t=>ze(e)},{default:_(()=>[...t[27]||=[r(`删除`,-1)]]),_:1},8,[`onClick`])]),_:2},1024)]),_:2},1024))),128)),U.value.length===0?(p(),i(s(F),{key:0},{default:_(()=>[a(s(M),{colspan:`6`,class:`text-center text-muted-foreground py-8`},{default:_(()=>[...t[28]||=[r(`暂无规则`,-1)]]),_:1})]),_:1})):u(``,!0)]),_:1})]),_:1})]),a(s(le),{open:W.value,"onUpdate:open":t[15]||=e=>W.value=e},{default:_(()=>[a(s(se),null,{default:_(()=>[a(s(ce),null,{default:_(()=>[a(s(de),null,{default:_(()=>[r(l(G.value?`编辑规则`:`添加规则`),1)]),_:1})]),_:1}),d(`form`,{onSubmit:o(Re,[`prevent`]),class:`space-y-3`},[d(`div`,null,[a(s(T),{class:`block text-sm font-medium text-foreground mb-1`},{default:_(()=>[...t[29]||=[r(`名称`,-1)]]),_:1}),a(s(A),{modelValue:q.value.name,"onUpdate:modelValue":t[0]||=e=>q.value.name=e,type:`text`,required:``,onInput:t[1]||=e=>delete J.value.name},null,8,[`modelValue`]),J.value.name?(p(),f(`p`,we,l(J.value.name),1)):u(``,!0)]),d(`div`,null,[a(s(T),{class:`block text-sm font-medium text-foreground mb-1`},{default:_(()=>[...t[30]||=[r(`HTTP 状态码`,-1)]]),_:1}),a(s(A),{modelValue:q.value.status_code,"onUpdate:modelValue":t[2]||=e=>q.value.status_code=e,modelModifiers:{number:!0},type:`number`,required:``,onInput:t[3]||=e=>delete J.value.status_code},null,8,[`modelValue`]),J.value.status_code?(p(),f(`p`,Te,l(J.value.status_code),1)):u(``,!0)]),d(`div`,null,[a(s(T),{class:`block text-sm font-medium text-foreground mb-1`},{default:_(()=>[...t[31]||=[r(`响应体匹配`,-1)]]),_:1}),a(s(A),{modelValue:q.value.body_pattern,"onUpdate:modelValue":t[4]||=e=>q.value.body_pattern=e,type:`text`,placeholder:`正则表达式,例如 .*rate_limit.*`,required:``,onInput:t[5]||=e=>delete J.value.body_pattern},null,8,[`modelValue`]),J.value.body_pattern?(p(),f(`p`,Ee,l(J.value.body_pattern),1)):u(``,!0)]),d(`div`,null,[a(s(T),{class:`block text-sm font-medium text-foreground mb-1`},{default:_(()=>[...t[32]||=[r(`重试策略`,-1)]]),_:1}),a(s(y),{modelValue:q.value.retry_strategy,"onUpdate:modelValue":t[6]||=e=>q.value.retry_strategy=e},{default:_(()=>[a(s(ne),{class:`w-full`},{default:_(()=>[a(s(re),{placeholder:`选择策略`})]),_:1}),a(s(b),null,{default:_(()=>[a(s(x),{value:`exponential`},{default:_(()=>[...t[33]||=[r(`指数退避`,-1)]]),_:1}),a(s(x),{value:`fixed`},{default:_(()=>[...t[34]||=[r(`固定间隔`,-1)]]),_:1})]),_:1})]),_:1},8,[`modelValue`])]),d(`div`,L,[d(`div`,null,[a(s(T),{class:`block text-sm font-medium text-foreground mb-1`},{default:_(()=>[r(l(q.value.retry_strategy===`fixed`?`间隔时间 (ms)`:`初始延迟 (ms)`),1)]),_:1}),a(s(A),{modelValue:q.value.retry_delay_ms,"onUpdate:modelValue":t[7]||=e=>q.value.retry_delay_ms=e,modelModifiers:{number:!0},type:`number`,min:100,required:``,onInput:t[8]||=e=>delete J.value.retry_delay_ms},null,8,[`modelValue`]),J.value.retry_delay_ms?(p(),f(`p`,De,l(J.value.retry_delay_ms),1)):u(``,!0)]),d(`div`,null,[a(s(T),{class:`block text-sm font-medium text-foreground mb-1`},{default:_(()=>[...t[35]||=[r(`最大重试次数`,-1)]]),_:1}),a(s(A),{modelValue:q.value.max_retries,"onUpdate:modelValue":t[9]||=e=>q.value.max_retries=e,modelModifiers:{number:!0},type:`number`,min:0,max:100,required:``,onInput:t[10]||=e=>delete J.value.max_retries},null,8,[`modelValue`]),J.value.max_retries?(p(),f(`p`,Oe,l(J.value.max_retries),1)):u(``,!0)])]),q.value.retry_strategy===`exponential`?(p(),f(`div`,ke,[a(s(T),{class:`block text-sm font-medium text-foreground mb-1`},{default:_(()=>[...t[36]||=[r(`延迟上限 (ms)`,-1)]]),_:1}),a(s(A),{modelValue:q.value.max_delay_ms,"onUpdate:modelValue":t[11]||=e=>q.value.max_delay_ms=e,modelModifiers:{number:!0},type:`number`,min:100,required:``,onInput:t[12]||=e=>delete J.value.max_delay_ms},null,8,[`modelValue`]),J.value.max_delay_ms?(p(),f(`p`,Ae,l(J.value.max_delay_ms),1)):u(``,!0)])):u(``,!0),d(`div`,je,[a(s(S),{modelValue:q.value.is_active,"onUpdate:modelValue":t[13]||=e=>q.value.is_active=e,id:`rule-active`},null,8,[`modelValue`]),a(s(T),{for:`rule-active`,class:`text-sm text-foreground`},{default:_(()=>[...t[37]||=[r(`启用`,-1)]]),_:1})]),a(s(ue),null,{default:_(()=>[a(s(h),{type:`button`,variant:`outline`,onClick:t[14]||=e=>W.value=!1},{default:_(()=>[...t[38]||=[r(`取消`,-1)]]),_:1}),a(s(h),{type:`submit`},{default:_(()=>[...t[39]||=[r(`保存`,-1)]]),_:1})]),_:1})],32)]),_:1})]),_:1},8,[`open`]),a(s(pe),{open:!!K.value,"onUpdate:open":t[16]||=e=>{e||(K.value=null)}},{default:_(()=>[a(s(fe),null,{default:_(()=>[a(s(he),null,{default:_(()=>[a(s(w),null,{default:_(()=>[...t[40]||=[r(`确认删除`,-1)]]),_:1}),a(s(me),null,{default:_(()=>[r(`确定要删除规则「`+l(K.value?.name)+`」吗?`,1)]),_:1})]),_:1}),a(s(C),null,{default:_(()=>[a(s(ge),null,{default:_(()=>[...t[41]||=[r(`取消`,-1)]]),_:1}),a(s(h),{variant:`destructive`,onClick:Be},{default:_(()=>[...t[42]||=[r(`删除`,-1)]]),_:1})]),_:1})]),_:1})]),_:1},8,[`open`]),Z.value.length>0?(p(),i(s(_e),{key:0,class:`mt-6`},{default:_(()=>[a(s(ae),{open:X.value,"onUpdate:open":t[17]||=e=>X.value=e},{default:_(()=>[a(s(oe),{"as-child":``},{default:_(()=>[a(s(O),{class:`cursor-pointer hover:bg-muted/50 transition-colors`},{default:_(()=>[d(`div`,Me,[a(s(k),{class:`text-sm font-medium`},{default:_(()=>[r(`推荐重试规则 (`+l(Z.value.length)+`)`,1)]),_:1}),a(s(v),{class:n([`h-4 w-4 text-muted-foreground transition-transform`,{"rotate-180":X.value}])},null,8,[`class`])])]),_:1})]),_:1}),a(s(ie),null,{default:_(()=>[a(s(ve),null,{default:_(()=>[d(`div`,Ne,[d(`div`,Pe,[a(s(S),{"model-value":Ve.value,"onUpdate:modelValue":Ue},null,8,[`model-value`]),t[43]||=d(`span`,{class:`text-sm text-muted-foreground`},`全选`,-1)]),a(s(h),{size:`sm`,disabled:Q.value.size===0,onClick:We},{default:_(()=>[r(` 添加选中 (`+l(Q.value.size)+`) `,1)]),_:1},8,[`disabled`])]),a(s(P),null,{default:_(()=>[a(s(I),null,{default:_(()=>[a(s(F),null,{default:_(()=>[a(s(N),{class:`w-10`}),a(s(N),null,{default:_(()=>[...t[44]||=[r(`名称`,-1)]]),_:1}),a(s(N),null,{default:_(()=>[...t[45]||=[r(`状态码`,-1)]]),_:1}),a(s(N),null,{default:_(()=>[...t[46]||=[r(`匹配模式`,-1)]]),_:1}),a(s(N),null,{default:_(()=>[...t[47]||=[r(`策略`,-1)]]),_:1})]),_:1})]),_:1}),a(s(j),null,{default:_(()=>[(p(!0),f(c,null,g(Z.value,e=>(p(),i(s(F),{key:e.name},{default:_(()=>[a(s(M),null,{default:_(()=>[a(s(S),{"model-value":Q.value.has(e.name),"onUpdate:modelValue":()=>He(e.name)},null,8,[`model-value`,`onUpdate:modelValue`])]),_:2},1024),a(s(M),null,{default:_(()=>[r(l(e.name),1)]),_:2},1024),a(s(M),null,{default:_(()=>[r(l(e.status_code),1)]),_:2},1024),a(s(M),{class:`font-mono text-xs max-w-[200px] truncate`},{default:_(()=>[r(l(e.body_pattern),1)]),_:2},1024),a(s(M),null,{default:_(()=>[r(l(e.retry_strategy===`fixed`?`固定间隔`:`指数退避`),1)]),_:2},1024)]),_:2},1024))),128))]),_:1})]),_:1})]),_:1})]),_:1})]),_:1},8,[`open`])]),_:1})):u(``,!0)]))}});export{H as default};
@@ -0,0 +1 @@
1
+ import{Et as e,Ft as t,G as n,H as r,K as i,L as ee,Nt as a,R as o,Rt as s,U as c,V as l,W as u,at as d,k as f,n as p,q as m,rt as te,st as h,vt as g}from"./button-BQ3s7yNh.js";import{t as _}from"./Checkbox-MZf0YsDG.js";import{a as ne,n as re,o as ie,r as ae,t as oe}from"./dialog-DoIATUYw.js";import{a as se,c as v,i as y,n as b,o as x,r as S,t as ce}from"./alert-dialog-Bi3dliLl.js";import{t as C}from"./Label-C_S0y7Um.js";import{t as w}from"./badge-Kkta3e9W.js";import{n as T}from"./lib-CxwxnlwW.js";import{t as E}from"./Input-O0ebU-Va.js";import{a as D,i as O,n as k,o as A,r as j,t as M}from"./TableHeader-DGtcqGkw.js";import{t as N}from"./useClipboard-Cnnz6AAN.js";var P={class:`p-6`},F={class:`flex items-center justify-between mb-4`},I={class:`bg-card rounded-lg border overflow-hidden`},L={class:`flex items-center gap-1`},R={class:`font-mono text-xs text-muted-foreground`},z={key:0,class:`w-3.5 h-3.5`,fill:`none`,stroke:`currentColor`,viewBox:`0 0 24 24`},B={key:1,class:`w-3.5 h-3.5 text-success`,fill:`none`,stroke:`currentColor`,viewBox:`0 0 24 24`},V={key:0,class:`flex flex-wrap gap-1`},H={key:0,class:`text-sm text-destructive mt-1`},U={class:`border rounded-md p-3 max-h-48 overflow-y-auto space-y-2 bg-muted`},le={class:`font-mono text-xs`},W={key:0,class:`text-muted-foreground text-sm text-center py-2`},ue={key:0,class:`flex flex-wrap gap-1 mt-2`},de={key:0,class:`flex items-center gap-2`},G=m({__name:`RouterKeys`,setup(m){let G={name:``,allowed_models:[],is_active:!0},K=e([]),q=e([]),J=e(!1),Y=e(null),X=e(null),Z=e({...G,allowed_models:[]}),Q=e({}),{copied:fe,copy:pe}=N();function me(e){return e?e.slice(0,7)+`*`.repeat(7):``}function he(e){return new Date(e).toLocaleString(`zh-CN`)}function ge(e){let t=Z.value.allowed_models.indexOf(e);t>=0&&Z.value.allowed_models.splice(t,1)}async function $(){try{let[e,t]=await Promise.allSettled([f.getRouterKeys(),f.getAvailableModels()]);e.status===`fulfilled`&&(K.value=e.value),t.status===`fulfilled`&&(q.value=t.value)}catch(e){console.error(`Failed to load data:`,e),T.error(e.apiMessage||`加载数据失败`)}}function _e(){Y.value=null,Z.value={...G,allowed_models:[]},Q.value={},J.value=!0}function ve(e){Y.value=e.id,Z.value={name:e.name,allowed_models:e.allowed_models?[...e.allowed_models]:[],is_active:!!e.is_active},Q.value={},J.value=!0}function ye(){return{name:Z.value.name,allowed_models:Z.value.allowed_models.length>0?Z.value.allowed_models:null,is_active:+!!Z.value.is_active}}function be(){return{name:Z.value.name,allowed_models:Z.value.allowed_models.length>0?Z.value.allowed_models:null}}async function xe(){let e={};if(Z.value.name.trim()||(e.name=`请输入名称`),Q.value=e,!(Object.keys(e).length>0))try{Y.value?await f.updateRouterKey(Y.value,ye()):await f.createRouterKey(be()),J.value=!1,await $()}catch(e){console.error(`Failed to save router key:`,e),T.error(e.apiMessage||`保存密钥失败`)}}function Se(e){X.value=e}async function Ce(){let e=X.value;if(e){X.value=null;try{await f.deleteRouterKey(e.id),await $()}catch(e){console.error(`Failed to delete router key:`,e),T.error(e.apiMessage||`删除密钥失败`)}}}return te($),(e,f)=>(d(),u(`div`,P,[l(`div`,F,[f[7]||=l(`h2`,{class:`text-lg font-semibold text-foreground`},`API 密钥`,-1),i(a(p),{onClick:_e,class:`flex items-center gap-1`},{default:g(()=>[...f[6]||=[l(`svg`,{class:`w-4 h-4`,fill:`none`,stroke:`currentColor`,viewBox:`0 0 24 24`},[l(`path`,{"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`,d:`M12 4v16m8-8H4`})],-1),n(` 创建密钥 `,-1)]]),_:1})]),l(`div`,I,[i(a(A),null,{default:g(()=>[i(a(M),null,{default:g(()=>[i(a(j),{class:`bg-muted`},{default:g(()=>[i(a(k),{class:`text-muted-foreground`},{default:g(()=>[...f[8]||=[n(`名称`,-1)]]),_:1}),i(a(k),{class:`text-muted-foreground`},{default:g(()=>[...f[9]||=[n(`密钥`,-1)]]),_:1}),i(a(k),{class:`text-muted-foreground`},{default:g(()=>[...f[10]||=[n(`白名单模型`,-1)]]),_:1}),i(a(k),{class:`text-muted-foreground`},{default:g(()=>[...f[11]||=[n(`状态`,-1)]]),_:1}),i(a(k),{class:`text-muted-foreground`},{default:g(()=>[...f[12]||=[n(`创建时间`,-1)]]),_:1}),i(a(k),{class:`text-right text-muted-foreground`},{default:g(()=>[...f[13]||=[n(`操作`,-1)]]),_:1})]),_:1})]),_:1}),i(a(D),null,{default:g(()=>[(d(!0),u(o,null,h(K.value,e=>(d(),r(a(j),{key:e.id,class:t({"opacity-60":!e.is_active})},{default:g(()=>[i(a(O),{class:`font-medium`},{default:g(()=>[n(s(e.name),1)]),_:2},1024),i(a(O),null,{default:g(()=>[l(`div`,L,[l(`span`,R,s(me(e.key)),1),i(a(p),{variant:`ghost`,size:`sm`,class:`h-6 w-6 p-0`,onClick:t=>e.key&&a(pe)(e.key)},{default:g(()=>[a(fe)?(d(),u(`svg`,B,[...f[15]||=[l(`path`,{"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`,d:`M5 13l4 4L19 7`},null,-1)]])):(d(),u(`svg`,z,[...f[14]||=[l(`path`,{"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`,d:`M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z`},null,-1)]]))]),_:1},8,[`onClick`])])]),_:2},1024),i(a(O),null,{default:g(()=>[e.allowed_models&&e.allowed_models.length>0?(d(),u(`div`,V,[(d(!0),u(o,null,h(e.allowed_models,e=>(d(),r(a(w),{key:e,variant:`outline`,class:`text-xs`},{default:g(()=>[n(s(e),1)]),_:2},1024))),128))])):(d(),r(a(w),{key:1,variant:`secondary`},{default:g(()=>[...f[16]||=[n(`全部模型`,-1)]]),_:1}))]),_:2},1024),i(a(O),null,{default:g(()=>[i(a(w),{variant:e.is_active?`default`:`secondary`},{default:g(()=>[n(s(e.is_active?`启用`:`禁用`),1)]),_:2},1032,[`variant`])]),_:2},1024),i(a(O),{class:`text-muted-foreground text-sm`},{default:g(()=>[n(s(he(e.created_at)),1)]),_:2},1024),i(a(O),{class:`text-right`},{default:g(()=>[i(a(p),{variant:`ghost`,size:`sm`,onClick:t=>ve(e),class:`text-muted-foreground hover:text-primary mr-2`},{default:g(()=>[...f[17]||=[n(`编辑`,-1)]]),_:1},8,[`onClick`]),i(a(p),{variant:`ghost`,size:`sm`,onClick:t=>Se(e),class:`text-muted-foreground hover:text-destructive`},{default:g(()=>[...f[18]||=[n(`删除`,-1)]]),_:1},8,[`onClick`])]),_:2},1024)]),_:2},1032,[`class`]))),128)),K.value.length===0?(d(),r(a(j),{key:0},{default:g(()=>[i(a(O),{colspan:`6`,class:`text-center text-muted-foreground py-8`},{default:g(()=>[...f[19]||=[n(`暂无密钥`,-1)]]),_:1})]),_:1})):c(``,!0)]),_:1})]),_:1})]),i(a(ie),{open:J.value,"onUpdate:open":f[4]||=e=>J.value=e},{default:g(()=>[i(a(ne),{class:`sm:max-w-lg`},{default:g(()=>[i(a(re),null,{default:g(()=>[i(a(oe),null,{default:g(()=>[n(s(Y.value?`编辑密钥`:`创建密钥`),1)]),_:1})]),_:1}),l(`form`,{onSubmit:ee(xe,[`prevent`]),class:`space-y-4`},[l(`div`,null,[i(a(C),{class:`block text-sm font-medium text-foreground mb-1`},{default:g(()=>[...f[20]||=[n(`名称`,-1)]]),_:1}),i(a(E),{modelValue:Z.value.name,"onUpdate:modelValue":f[0]||=e=>Z.value.name=e,type:`text`,required:``,placeholder:`例如:生产环境`,onInput:f[1]||=e=>delete Q.value.name},null,8,[`modelValue`]),Q.value.name?(d(),u(`p`,H,s(Q.value.name),1)):c(``,!0)]),l(`div`,null,[i(a(C),{class:`block text-sm font-medium text-foreground mb-1`},{default:g(()=>[...f[21]||=[n(`白名单模型`,-1)]]),_:1}),f[23]||=l(`div`,{class:`text-xs text-muted-foreground mb-2`},`不选择 = 允许所有模型`,-1),l(`div`,U,[(d(!0),u(o,null,h(q.value,e=>(d(),r(a(C),{key:e,class:`flex items-center gap-2 cursor-pointer text-sm font-normal`},{default:g(()=>[i(a(_),{"model-value":Z.value.allowed_models.includes(e),"onUpdate:modelValue":t=>{if(t&&t!==`indeterminate`&&!Z.value.allowed_models.includes(e))Z.value.allowed_models.push(e);else if(!t){let t=Z.value.allowed_models.indexOf(e);t>=0&&Z.value.allowed_models.splice(t,1)}}},null,8,[`model-value`,`onUpdate:modelValue`]),l(`span`,le,s(e),1)]),_:2},1024))),128)),q.value.length===0?(d(),u(`div`,W,` 暂无可用模型,请先配置模型映射 `)):c(``,!0)]),Z.value.allowed_models.length>0?(d(),u(`div`,ue,[(d(!0),u(o,null,h(Z.value.allowed_models,e=>(d(),r(a(w),{key:e,variant:`outline`,class:`text-xs`},{default:g(()=>[n(s(e)+` `,1),i(a(p),{type:`button`,variant:`ghost`,size:`sm`,class:`ml-1 h-4 w-4 p-0 text-muted-foreground hover:text-destructive`,onClick:t=>ge(e)},{default:g(()=>[...f[22]||=[n(`×`,-1)]]),_:1},8,[`onClick`])]),_:2},1024))),128))])):c(``,!0)]),Y.value?(d(),u(`div`,de,[i(a(_),{modelValue:Z.value.is_active,"onUpdate:modelValue":f[2]||=e=>Z.value.is_active=e,id:`key-active`},null,8,[`modelValue`]),i(a(C),{for:`key-active`,class:`text-sm text-foreground`},{default:g(()=>[...f[24]||=[n(`启用`,-1)]]),_:1})])):c(``,!0),i(a(ae),null,{default:g(()=>[i(a(p),{type:`button`,variant:`outline`,onClick:f[3]||=e=>J.value=!1},{default:g(()=>[...f[25]||=[n(`取消`,-1)]]),_:1}),i(a(p),{type:`submit`},{default:g(()=>[...f[26]||=[n(`保存`,-1)]]),_:1})]),_:1})],32)]),_:1})]),_:1},8,[`open`]),i(a(v),{open:!!X.value,"onUpdate:open":f[5]||=e=>{e||(X.value=null)}},{default:g(()=>[i(a(se),null,{default:g(()=>[i(a(b),null,{default:g(()=>[i(a(ce),null,{default:g(()=>[...f[27]||=[n(`确认删除`,-1)]]),_:1}),i(a(y),null,{default:g(()=>[n(`确定要删除密钥「`+s(X.value?.name)+`」吗?使用此密钥的所有请求将被拒绝,此操作不可撤销。`,1)]),_:1})]),_:1}),i(a(S),null,{default:g(()=>[i(a(x),null,{default:g(()=>[...f[28]||=[n(`取消`,-1)]]),_:1}),i(a(p),{variant:`destructive`,onClick:Ce},{default:g(()=>[...f[29]||=[n(`删除`,-1)]]),_:1})]),_:1})]),_:1})]),_:1},8,[`open`])]))}});export{G as default};
@@ -0,0 +1 @@
1
+ import{B as e,Et as t,H as n,K as r,Nt as i,at as a,ct as o,i as s,it as c,jt as l,m as u,q as d,rt as f,tt as p,vt as m}from"./button-BQ3s7yNh.js";import{c as h,v as g,y as _}from"./Teleport-DdjYHlNK.js";import{r as v,t as y}from"./Collection-DcTx_Y54.js";var b=`rovingFocusGroup.onEntryFocus`,x={bubbles:!1,cancelable:!0},S={ArrowLeft:`prev`,ArrowUp:`prev`,ArrowRight:`next`,ArrowDown:`next`,PageUp:`first`,Home:`first`,PageDown:`last`,End:`last`};function C(e,t){return t===`rtl`?e===`ArrowLeft`?`ArrowRight`:e===`ArrowRight`?`ArrowLeft`:e:e}function w(e,t,n){let r=C(e.key,n);if(!(t===`vertical`&&[`ArrowLeft`,`ArrowRight`].includes(r))&&!(t===`horizontal`&&[`ArrowUp`,`ArrowDown`].includes(r)))return S[r]}function T(e,t=!1){let n=g();for(let r of e)if(r===n||(r.focus({preventScroll:t}),g()!==n))return}function E(e,t){return e.map((n,r)=>e[(t+r)%e.length])}var[D,O]=_(`RovingFocusGroup`),k=d({__name:`RovingFocusGroup`,props:{orientation:{type:String,required:!1,default:void 0},dir:{type:String,required:!1},loop:{type:Boolean,required:!1,default:!1},currentTabStopId:{type:[String,null],required:!1},defaultCurrentTabStopId:{type:String,required:!1},preventScrollOnEntryFocus:{type:Boolean,required:!1,default:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`entryFocus`,`update:currentTabStopId`],setup(e,{expose:c,emit:d}){let f=e,p=d,{loop:h,orientation:g,dir:_}=l(f),S=v(_),C=u(f,`currentTabStopId`,p,{defaultValue:f.defaultCurrentTabStopId,passive:f.currentTabStopId===void 0}),w=t(!1),E=t(!1),D=t(0),{getItems:k,CollectionSlot:A}=y({isProvider:!0});function j(e){let t=!E.value;if(e.currentTarget&&e.target===e.currentTarget&&t&&!w.value){let t=new CustomEvent(b,x);if(e.currentTarget.dispatchEvent(t),p(`entryFocus`,t),!t.defaultPrevented){let e=k().map(e=>e.ref).filter(e=>e.dataset.disabled!==``);T([e.find(e=>e.getAttribute(`data-active`)===``),e.find(e=>e.getAttribute(`data-highlighted`)===``),e.find(e=>e.id===C.value),...e].filter(Boolean),f.preventScrollOnEntryFocus)}}E.value=!1}function M(){setTimeout(()=>{E.value=!1},1)}return c({getItems:k}),O({loop:h,dir:S,orientation:g,currentTabStopId:C,onItemFocus:e=>{C.value=e},onItemShiftTab:()=>{w.value=!0},onFocusableItemAdd:()=>{D.value++},onFocusableItemRemove:()=>{D.value--}}),(e,t)=>(a(),n(i(A),null,{default:m(()=>[r(i(s),{tabindex:w.value||D.value===0?-1:0,"data-orientation":i(g),as:e.as,"as-child":e.asChild,dir:i(S),style:{outline:`none`},onMousedown:t[0]||=e=>E.value=!0,onMouseup:M,onFocus:j,onBlur:t[1]||=e=>w.value=!1},{default:m(()=>[o(e.$slots,`default`)]),_:3},8,[`tabindex`,`data-orientation`,`as`,`as-child`,`dir`])]),_:3}))}}),A=d({__name:`RovingFocusItem`,props:{tabStopId:{type:String,required:!1},focusable:{type:Boolean,required:!1,default:!0},active:{type:Boolean,required:!1},allowShiftKey:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`span`}},setup(t){let l=t,u=D(),d=h(),g=e(()=>l.tabStopId||d),_=e(()=>u.currentTabStopId.value===g.value),{getItems:v,CollectionItem:b}=y();f(()=>{l.focusable&&u.onFocusableItemAdd()}),c(()=>{l.focusable&&u.onFocusableItemRemove()});function x(e){if(e.key===`Tab`&&e.shiftKey){u.onItemShiftTab();return}if(e.target!==e.currentTarget)return;let t=w(e,u.orientation.value,u.dir.value);if(t!==void 0){if(e.metaKey||e.ctrlKey||e.altKey||!l.allowShiftKey&&e.shiftKey)return;e.preventDefault();let n=[...v().map(e=>e.ref).filter(e=>e.dataset.disabled!==``)];if(t===`last`)n.reverse();else if(t===`prev`||t===`next`){t===`prev`&&n.reverse();let r=n.indexOf(e.currentTarget);n=u.loop.value?E(n,r+1):n.slice(r+1)}p(()=>T(n))}}return(e,t)=>(a(),n(i(b),null,{default:m(()=>[r(i(s),{tabindex:_.value?0:-1,"data-orientation":i(u).orientation.value,"data-active":e.active?``:void 0,"data-disabled":e.focusable?void 0:``,as:e.as,"as-child":e.asChild,onMousedown:t[0]||=t=>{e.focusable?i(u).onItemFocus(g.value):t.preventDefault()},onFocus:t[1]||=e=>i(u).onItemFocus(g.value),onKeydown:x},{default:m(()=>[o(e.$slots,`default`)]),_:3},8,[`tabindex`,`data-orientation`,`data-active`,`data-disabled`,`as`,`as-child`])]),_:3}))}});export{k as n,A as t};
@@ -0,0 +1 @@
1
+ import{B as e,Et as t,Ft as n,G as r,H as i,It as a,K as o,L as s,Lt as c,Nt as l,R as u,Rt as d,S as f,U as p,V as m,W as h,Y as g,at as _,ct as v,et as y,gt as b,ht as x,i as S,it as C,jt as w,m as T,nt as E,o as D,p as O,q as k,r as A,rt as j,st as ee,tt as M,u as te,ut as ne,vt as N,x as P,y as re,z as ie}from"./button-BQ3s7yNh.js";import{t as ae}from"./createLucideIcon-D1tkPDOQ.js";import{n as oe,t as se}from"./ohash.D__AXeF1-b0PiKZB_.js";import{n as F,r as I,t as ce}from"./useNonce-DKbOCfgM.js";import{_ as le,a as ue,c as L,d as R,g as z,i as de,l as fe,n as B,o as pe,p as me,t as he,u as V,v as H,y as U}from"./Teleport-DdjYHlNK.js";import{r as ge,t as W}from"./Collection-DcTx_Y54.js";import{n as _e,t as ve}from"./VisuallyHidden-Cyk-jWwh.js";import{i as ye,r as be,t as xe}from"./PopperContent-C6Q7hDmf.js";var Se=ae(`chevron-up`,[[`path`,{d:`m18 15-6-6-6 6`,key:`153udz`}]]),G=0;function Ce(){b(e=>{if(!re)return;let t=document.querySelectorAll(`[data-reka-focus-guard]`);document.body.insertAdjacentElement(`afterbegin`,t[0]??we()),document.body.insertAdjacentElement(`beforeend`,t[1]??we()),G++,e(()=>{G===1&&document.querySelectorAll(`[data-reka-focus-guard]`).forEach(e=>e.remove()),G--})})}function we(){let e=document.createElement(`span`);return e.setAttribute(`data-reka-focus-guard`,``),e.tabIndex=0,e.style.outline=`none`,e.style.opacity=`0`,e.style.position=`fixed`,e.style.pointerEvents=`none`,e}function K(e){let t=f(``,1e3);return{search:t,handleTypeaheadSearch:(n,r)=>{if(t.value+=n,e)e(n);else{let e=H(),n=r.map(e=>({...e,textValue:e.value?.textValue??e.ref.textContent?.trim()??``})),i=n.find(t=>t.ref===e),a=Ee(n.map(e=>e.textValue),t.value,i?.textValue),o=n.find(e=>e.textValue===a);return o&&o.ref.focus(),o?.ref}},resetTypeahead:()=>{t.value=``}}}function Te(e,t){return e.map((n,r)=>e[(t+r)%e.length])}function Ee(e,t,n){let r=t.length>1&&Array.from(t).every(e=>e===t[0])?t[0]:t,i=n?e.indexOf(n):-1,a=Te(e,Math.max(i,0));r.length===1&&(a=a.filter(e=>e!==n));let o=a.find(e=>e.toLowerCase().startsWith(r.toLowerCase()));return o===n?void 0:o}var De=[` `,`Enter`,`ArrowUp`,`ArrowDown`],Oe=[` `,`Enter`];function q(e,t,n){return e===void 0?!1:Array.isArray(e)?e.some(e=>J(e,t,n)):J(e,t,n)}function J(e,t,n){return e===void 0||t===void 0?!1:typeof e==`string`?e===t:typeof n==`function`?n(e,t):typeof n==`string`?e?.[n]===t?.[n]:se(e,t)}function ke(e){return e==null||e===``||Array.isArray(e)&&e.length===0}var Ae={key:0,value:``},[Y,X]=U(`SelectRoot`),je=k({inheritAttrs:!1,__name:`SelectRoot`,props:{open:{type:Boolean,required:!1,default:void 0},defaultOpen:{type:Boolean,required:!1},defaultValue:{type:null,required:!1},modelValue:{type:null,required:!1,default:void 0},by:{type:[String,Function],required:!1},dir:{type:String,required:!1},multiple:{type:Boolean,required:!1},autocomplete:{type:String,required:!1},disabled:{type:Boolean,required:!1},name:{type:String,required:!1},required:{type:Boolean,required:!1}},emits:[`update:modelValue`,`update:open`],setup(n,{emit:r}){let a=n,o=r,{required:s,disabled:c,multiple:d,dir:f}=w(a),m=T(a,`modelValue`,o,{defaultValue:a.defaultValue??(d.value?[]:void 0),passive:a.modelValue===void 0,deep:!0}),g=T(a,`open`,o,{defaultValue:a.defaultOpen,passive:a.open===void 0}),b=t(),x=t(),S=t({x:0,y:0}),C=e(()=>d.value&&Array.isArray(m.value)?m.value?.length===0:z(m.value));W({isProvider:!0});let E=ge(f),D=_e(b),O=t(new Set),k=e(()=>Array.from(O.value).map(e=>e.value).join(`;`));function A(e){if(d.value){let t=Array.isArray(m.value)?[...m.value]:[],n=t.findIndex(t=>J(t,e,a.by));n===-1?t.push(e):t.splice(n,1),m.value=[...t]}else m.value=e}function j(e){return Array.from(O.value).find(t=>q(e,t.value,a.by))}return X({triggerElement:b,onTriggerChange:e=>{b.value=e},valueElement:x,onValueElementChange:e=>{x.value=e},contentId:``,modelValue:m,onValueChange:A,by:a.by,open:g,multiple:d,required:s,onOpenChange:e=>{g.value=e},dir:E,triggerPointerDownPosRef:S,disabled:c,isEmptyModelValue:C,optionsSet:O,onOptionAdd:e=>{let t=j(e.value);t&&O.value.delete(t),O.value.add(e)},onOptionRemove:e=>{let t=j(e.value);t&&O.value.delete(t)}}),(e,t)=>(_(),i(l(ye),null,{default:N(()=>[v(e.$slots,`default`,{modelValue:l(m),open:l(g)}),l(D)&&e.name?(_(),i(Me,{key:k.value,"aria-hidden":`true`,tabindex:`-1`,multiple:l(d),required:l(s),name:e.name,autocomplete:e.autocomplete,disabled:l(c),value:l(m)},{default:N(()=>[l(z)(l(m))?(_(),h(`option`,Ae)):p(`v-if`,!0),(_(!0),h(u,null,ee(Array.from(O.value),e=>(_(),h(`option`,y({key:e.value??``},{ref_for:!0},e),null,16))),128))]),_:1},8,[`multiple`,`required`,`name`,`autocomplete`,`disabled`,`value`])):p(`v-if`,!0)]),_:3}))}}),Me=k({__name:`BubbleSelect`,props:{autocomplete:{type:String,required:!1},autofocus:{type:Boolean,required:!1},disabled:{type:Boolean,required:!1},form:{type:String,required:!1},multiple:{type:Boolean,required:!1},name:{type:String,required:!1},required:{type:Boolean,required:!1},size:{type:Number,required:!1},value:{type:null,required:!1}},setup(e){let n=e,r=t(),a=Y();x(()=>n.value,(e,t)=>{let n=window.HTMLSelectElement.prototype,i=Object.getOwnPropertyDescriptor(n,`value`).set;if(e!==t&&i&&r.value){let t=new Event(`change`,{bubbles:!0});i.call(r.value,e),r.value.dispatchEvent(t)}});function o(e){a.onValueChange(e.target.value)}return(e,t)=>(_(),i(l(ve),{"as-child":``},{default:N(()=>[m(`select`,y({ref_key:`selectElement`,ref:r},n,{onInput:o}),[v(e.$slots,`default`)],16)]),_:3}))}}),Ne=k({__name:`SelectPopperPosition`,props:{side:{type:null,required:!1},sideOffset:{type:Number,required:!1},sideFlip:{type:Boolean,required:!1},align:{type:null,required:!1,default:`start`},alignOffset:{type:Number,required:!1},alignFlip:{type:Boolean,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1,default:10},arrowPadding:{type:Number,required:!1},hideShiftedArrow:{type:Boolean,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1},disableUpdateOnLayoutShift:{type:Boolean,required:!1},prioritizePosition:{type:Boolean,required:!1},reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){let t=R(e);return(e,n)=>(_(),i(l(xe),y(l(t),{style:{boxSizing:`border-box`,"--reka-select-content-transform-origin":`var(--reka-popper-transform-origin)`,"--reka-select-content-available-width":`var(--reka-popper-available-width)`,"--reka-select-content-available-height":`var(--reka-popper-available-height)`,"--reka-select-trigger-width":`var(--reka-popper-anchor-width)`,"--reka-select-trigger-height":`var(--reka-popper-anchor-height)`}}),{default:N(()=>[v(e.$slots,`default`)]),_:3},16))}}),Pe={onViewportChange:()=>{},itemTextRefCallback:()=>{},itemRefCallback:()=>{}},[Z,Q]=U(`SelectContent`),Fe=k({__name:`SelectContentImpl`,props:{position:{type:String,required:!1,default:`item-aligned`},bodyLock:{type:Boolean,required:!1,default:!0},side:{type:null,required:!1},sideOffset:{type:Number,required:!1},sideFlip:{type:Boolean,required:!1},align:{type:null,required:!1,default:`start`},alignOffset:{type:Number,required:!1},alignFlip:{type:Boolean,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},hideShiftedArrow:{type:Boolean,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1},disableUpdateOnLayoutShift:{type:Boolean,required:!1},prioritizePosition:{type:Boolean,required:!1},reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1},disableOutsidePointerEvents:{type:Boolean,required:!1,default:!0}},emits:[`closeAutoFocus`,`escapeKeyDown`,`pointerDownOutside`],setup(n,{emit:r}){let a=n,c=r,u=Y();Ce(),me(a.bodyLock);let{CollectionSlot:d,getItems:f}=W(),p=t();fe(p);let{search:m,handleTypeaheadSearch:h}=K(),g=t(),S=t(),C=t(),w=t(!1),T=t(!1),E=t(!1);function D(){S.value&&p.value&&B([S.value,p.value])}x(w,()=>{D()});let{onOpenChange:O,triggerPointerDownPosRef:k}=u;b(e=>{if(!p.value)return;let t={x:0,y:0},n=e=>{t={x:Math.abs(Math.round(e.pageX)-(k.value?.x??0)),y:Math.abs(Math.round(e.pageY)-(k.value?.y??0))}},r=e=>{e.pointerType!==`touch`&&(t.x<=10&&t.y<=10?e.preventDefault():p.value?.contains(e.target)||O(!1),document.removeEventListener(`pointermove`,n),k.value=null)};k.value!==null&&(document.addEventListener(`pointermove`,n),document.addEventListener(`pointerup`,r,{capture:!0,once:!0})),e(()=>{document.removeEventListener(`pointermove`,n),document.removeEventListener(`pointerup`,r,{capture:!0})})});function A(e){let t=e.ctrlKey||e.altKey||e.metaKey;if(e.key===`Tab`&&e.preventDefault(),!t&&e.key.length===1&&h(e.key,f()),[`ArrowUp`,`ArrowDown`,`Home`,`End`].includes(e.key)){let t=[...f().map(e=>e.ref)];if([`ArrowUp`,`End`].includes(e.key)&&(t=t.slice().reverse()),[`ArrowUp`,`ArrowDown`].includes(e.key)){let n=e.target,r=t.indexOf(n);t=t.slice(r+1)}setTimeout(()=>B(t)),e.preventDefault()}}let j=R(e(()=>a.position===`popper`?a:{}).value);return Q({content:p,viewport:g,onViewportChange:e=>{g.value=e},itemRefCallback:(e,t,n)=>{let r=!T.value&&!n,i=q(u.modelValue.value,t,u.by);if(u.multiple.value){if(E.value)return;(i||r)&&(S.value=e,i&&(E.value=!0))}else (i||r)&&(S.value=e);r&&(T.value=!0)},selectedItem:S,selectedItemText:C,onItemLeave:()=>{p.value?.focus()},itemTextRefCallback:(e,t,n)=>{let r=!T.value&&!n;(q(u.modelValue.value,t,u.by)||r)&&(C.value=e)},focusSelectedItem:D,position:a.position,isPositioned:w,searchRef:m}),(e,t)=>(_(),i(l(d),null,{default:N(()=>[o(l(de),{"as-child":``,onMountAutoFocus:t[6]||=s(()=>{},[`prevent`]),onUnmountAutoFocus:t[7]||=e=>{c(`closeAutoFocus`,e),!e.defaultPrevented&&(l(u).triggerElement.value?.focus({preventScroll:!0}),e.preventDefault())}},{default:N(()=>[o(l(ue),{"as-child":``,"disable-outside-pointer-events":e.disableOutsidePointerEvents,onFocusOutside:t[2]||=s(()=>{},[`prevent`]),onDismiss:t[3]||=e=>l(u).onOpenChange(!1),onEscapeKeyDown:t[4]||=e=>c(`escapeKeyDown`,e),onPointerDownOutside:t[5]||=e=>c(`pointerDownOutside`,e)},{default:N(()=>[(_(),i(ne(e.position===`popper`?Ne:Le),y({...e.$attrs,...l(j)},{id:l(u).contentId,ref:e=>{if(!e)return;let t=l(te)(e);t?.hasAttribute(`data-reka-popper-content-wrapper`)?p.value=t.firstElementChild:p.value=t},role:`listbox`,"data-state":l(u).open.value?`open`:`closed`,dir:l(u).dir.value,style:{display:`flex`,flexDirection:`column`,outline:`none`},onContextmenu:t[0]||=s(()=>{},[`prevent`]),onPlaced:t[1]||=e=>w.value=!0,onKeydown:A}),{default:N(()=>[v(e.$slots,`default`)]),_:3},16,[`id`,`data-state`,`dir`,`onKeydown`]))]),_:3},8,[`disable-outside-pointer-events`])]),_:3})]),_:3}))}}),[$,Ie]=U(`SelectItemAlignedPosition`),Le=k({inheritAttrs:!1,__name:`SelectItemAlignedPosition`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`placed`],setup(e,{emit:n}){let r=e,i=n,{getItems:a}=W(),s=Y(),u=Z(),d=t(!1),f=t(!0),p=t(),{forwardRef:m,currentElement:g}=D(),{viewport:b,selectedItem:x,selectedItemText:C,focusSelectedItem:w}=u;function T(){if(s.triggerElement.value&&s.valueElement.value&&p.value&&g.value&&b?.value&&x?.value&&C?.value){let e=s.triggerElement.value.getBoundingClientRect(),t=g.value.getBoundingClientRect(),n=s.valueElement.value.getBoundingClientRect(),r=C.value.getBoundingClientRect();if(s.dir.value!==`rtl`){let i=r.left-t.left,a=n.left-i,o=e.left-a,s=e.width+o,c=Math.max(s,t.width),l=window.innerWidth-10,u=F(a,10,Math.max(10,l-c));p.value.style.minWidth=`${s}px`,p.value.style.left=`${u}px`}else{let i=t.right-r.right,a=window.innerWidth-n.right-i,o=window.innerWidth-e.right-a,s=e.width+o,c=Math.max(s,t.width),l=window.innerWidth-10,u=F(a,10,Math.max(10,l-c));p.value.style.minWidth=`${s}px`,p.value.style.right=`${u}px`}let o=a().map(e=>e.ref),c=window.innerHeight-20,l=b.value.scrollHeight,u=window.getComputedStyle(g.value),f=Number.parseInt(u.borderTopWidth,10),m=Number.parseInt(u.paddingTop,10),h=Number.parseInt(u.borderBottomWidth,10),_=Number.parseInt(u.paddingBottom,10),v=f+m+l+_+h,y=Math.min(x.value.offsetHeight*5,v),S=window.getComputedStyle(b.value),w=Number.parseInt(S.paddingTop,10),T=Number.parseInt(S.paddingBottom,10),E=e.top+e.height/2-10,D=c-E,O=x.value.offsetHeight/2,k=x.value.offsetTop+O,A=f+m+k,j=v-A;if(A<=E){let e=x.value===o.at(-1);p.value.style.bottom=`0px`;let t=g.value.clientHeight-b.value.offsetTop-b.value.offsetHeight,n=A+Math.max(D,O+(e?T:0)+t+h);p.value.style.height=`${n}px`}else{let e=x.value===o[0];p.value.style.top=`0px`;let t=Math.max(E,f+b.value.offsetTop+(e?w:0)+O)+j;p.value.style.height=`${t}px`,b.value.scrollTop=A-E+b.value.offsetTop}p.value.style.margin=`10px 0`,p.value.style.minHeight=`${y}px`,p.value.style.maxHeight=`${c}px`,i(`placed`),requestAnimationFrame(()=>d.value=!0)}}let E=t(``);j(async()=>{await M(),T(),g.value&&(E.value=window.getComputedStyle(g.value).zIndex)});function k(e){e&&f.value===!0&&(T(),w?.(),f.value=!1)}return O(s.triggerElement,()=>{T()}),Ie({contentWrapper:p,shouldExpandOnScrollRef:d,onScrollButtonChange:k}),(e,t)=>(_(),h(`div`,{ref_key:`contentWrapperElement`,ref:p,style:c({display:`flex`,flexDirection:`column`,position:`fixed`,zIndex:E.value})},[o(l(S),y({ref:l(m),style:{boxSizing:`border-box`,maxHeight:`100%`}},{...e.$attrs,...r}),{default:N(()=>[v(e.$slots,`default`)]),_:3},16)],4))}}),Re=k({inheritAttrs:!1,__name:`SelectProvider`,props:{context:{type:Object,required:!0}},setup(e){return X(e.context),Q(Pe),(e,t)=>v(e.$slots,`default`)}}),ze={key:1},Be=k({inheritAttrs:!1,__name:`SelectContent`,props:{forceMount:{type:Boolean,required:!1},position:{type:String,required:!1},bodyLock:{type:Boolean,required:!1},side:{type:null,required:!1},sideOffset:{type:Number,required:!1},sideFlip:{type:Boolean,required:!1},align:{type:null,required:!1},alignOffset:{type:Number,required:!1},alignFlip:{type:Boolean,required:!1},avoidCollisions:{type:Boolean,required:!1},collisionBoundary:{type:null,required:!1},collisionPadding:{type:[Number,Object],required:!1},arrowPadding:{type:Number,required:!1},hideShiftedArrow:{type:Boolean,required:!1},sticky:{type:String,required:!1},hideWhenDetached:{type:Boolean,required:!1},positionStrategy:{type:String,required:!1},updatePositionStrategy:{type:String,required:!1},disableUpdateOnLayoutShift:{type:Boolean,required:!1},prioritizePosition:{type:Boolean,required:!1},reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1},disableOutsidePointerEvents:{type:Boolean,required:!1}},emits:[`closeAutoFocus`,`escapeKeyDown`,`pointerDownOutside`],setup(n,{emit:r}){let s=n,c=V(s,r),u=Y(),d=t();j(()=>{d.value=new DocumentFragment});let f=t(),m=e(()=>s.forceMount||u.open.value),y=t(m.value);return x(m,()=>{setTimeout(()=>y.value=m.value)}),(e,t)=>m.value||y.value||f.value?.present?(_(),i(l(pe),{key:0,ref_key:`presenceRef`,ref:f,present:m.value},{default:N(()=>[o(Fe,a(g({...l(c),...e.$attrs})),{default:N(()=>[v(e.$slots,`default`)]),_:3},16)]),_:3},8,[`present`])):d.value?(_(),h(`div`,ze,[(_(),i(ie,{to:d.value},[o(Re,{context:l(u)},{default:N(()=>[v(e.$slots,`default`)]),_:3},8,[`context`])],8,[`to`]))])):p(`v-if`,!0)}}),Ve=k({__name:`SelectIcon`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`span`}},setup(e){return(e,t)=>(_(),i(l(S),{"aria-hidden":`true`,as:e.as,"as-child":e.asChild},{default:N(()=>[v(e.$slots,`default`,{},()=>[t[0]||=r(`▼`)])]),_:3},8,[`as`,`as-child`]))}}),[He,Ue]=U(`SelectItem`),We=k({__name:`SelectItem`,props:{value:{type:null,required:!0},disabled:{type:Boolean,required:!1},textValue:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`select`],setup(n,{emit:r}){let a=n,c=r,{disabled:u}=w(a),d=Y(),f=Z(),{forwardRef:p,currentElement:m}=D(),{CollectionItem:h}=W(),g=e(()=>q(d.modelValue?.value,a.value,d.by)),y=t(!1),b=t(a.textValue??``),x=L(void 0,`reka-select-item-text`);async function C(e){e.defaultPrevented||le(`select.select`,T,{originalEvent:e,value:a.value})}async function T(e){await M(),c(`select`,e),!e.defaultPrevented&&(u.value||(d.onValueChange(a.value),d.multiple.value||d.onOpenChange(!1)))}async function E(e){await M(),!e.defaultPrevented&&(u.value?f.onItemLeave?.():e.currentTarget?.focus({preventScroll:!0}))}async function O(e){await M(),!e.defaultPrevented&&e.currentTarget===H()&&f.onItemLeave?.()}async function k(e){await M(),!e.defaultPrevented&&(f.searchRef?.value!==``&&e.key===` `||(Oe.includes(e.key)&&C(e),e.key===` `&&e.preventDefault()))}if(a.value===``)throw Error(`A <SelectItem /> must have a value prop that is not an empty string. This is because the Select value can be set to an empty string to clear the selection and show the placeholder.`);return j(()=>{m.value&&f.itemRefCallback(m.value,a.value,a.disabled)}),Ue({value:a.value,disabled:u,textId:x,isSelected:g,onItemTextChange:e=>{b.value=((b.value||e?.textContent)??``).trim()}}),(e,t)=>(_(),i(l(h),{value:{textValue:b.value}},{default:N(()=>[o(l(S),{ref:l(p),role:`option`,"aria-labelledby":l(x),"data-highlighted":y.value?``:void 0,"aria-selected":g.value,"data-state":g.value?`checked`:`unchecked`,"aria-disabled":l(u)||void 0,"data-disabled":l(u)?``:void 0,tabindex:l(u)?void 0:-1,as:e.as,"as-child":e.asChild,onFocus:t[0]||=e=>y.value=!0,onBlur:t[1]||=e=>y.value=!1,onPointerup:C,onPointerdown:t[2]||=e=>{e.currentTarget.focus({preventScroll:!0})},onTouchend:t[3]||=s(()=>{},[`prevent`,`stop`]),onPointermove:E,onPointerleave:O,onKeydown:k},{default:N(()=>[v(e.$slots,`default`)]),_:3},8,[`aria-labelledby`,`data-highlighted`,`aria-selected`,`data-state`,`aria-disabled`,`data-disabled`,`tabindex`,`as`,`as-child`])]),_:3},8,[`value`]))}}),Ge=k({__name:`SelectItemIndicator`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`span`}},setup(e){let t=e,n=He();return(e,r)=>l(n).isSelected.value?(_(),i(l(S),y({key:0,"aria-hidden":`true`},t),{default:N(()=>[v(e.$slots,`default`)]),_:3},16)):p(`v-if`,!0)}}),Ke=k({inheritAttrs:!1,__name:`SelectItemText`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`span`}},setup(t){let n=t,r=Y(),a=Z(),o=He(),{forwardRef:s,currentElement:c}=D(),u=e(()=>({value:o.value,disabled:o.disabled.value,textContent:c.value?.textContent??o.value?.toString()??``}));return j(()=>{c.value&&(o.onItemTextChange(c.value),a.itemTextRefCallback(c.value,o.value,o.disabled.value),r.onOptionAdd(u.value))}),C(()=>{r.onOptionRemove(u.value)}),(e,t)=>(_(),i(l(S),y({id:l(o).textId,ref:l(s)},{...n,...e.$attrs}),{default:N(()=>[v(e.$slots,`default`)]),_:3},16,[`id`]))}}),qe=k({__name:`SelectPortal`,props:{to:{type:null,required:!1},disabled:{type:Boolean,required:!1},defer:{type:Boolean,required:!1},forceMount:{type:Boolean,required:!1}},setup(e){let t=e;return(e,n)=>(_(),i(l(he),a(g(t)),{default:N(()=>[v(e.$slots,`default`)]),_:3},16))}}),Je=k({__name:`SelectScrollButtonImpl`,emits:[`autoScroll`],setup(e,{emit:n}){let r=n,{getItems:a}=W(),o=Z(),s=t(null);function c(){s.value!==null&&(window.clearInterval(s.value),s.value=null)}b(()=>{a().map(e=>e.ref).find(e=>e===H())?.scrollIntoView({block:`nearest`})});function u(){s.value===null&&(s.value=window.setInterval(()=>{r(`autoScroll`)},50))}function d(){o.onItemLeave?.(),s.value===null&&(s.value=window.setInterval(()=>{r(`autoScroll`)},50))}return E(()=>c()),(e,t)=>(_(),i(l(S),y({"aria-hidden":`true`,style:{flexShrink:0}},e.$parent?.$props,{onPointerdown:u,onPointermove:d,onPointerleave:t[0]||=()=>{c()}}),{default:N(()=>[v(e.$slots,`default`)]),_:3},16))}}),Ye=k({__name:`SelectScrollDownButton`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){let n=Z(),r=n.position===`item-aligned`?$():void 0,{forwardRef:a,currentElement:o}=D(),s=t(!1);return b(e=>{if(n.viewport?.value&&n.isPositioned?.value){let t=n.viewport.value;function r(){let e=t.scrollHeight-t.clientHeight;s.value=Math.ceil(t.scrollTop)<e}r(),t.addEventListener(`scroll`,r),e(()=>t.removeEventListener(`scroll`,r))}}),x(o,()=>{o.value&&r?.onScrollButtonChange(o.value)}),(e,t)=>s.value?(_(),i(Je,{key:0,ref:l(a),onAutoScroll:t[0]||=()=>{let{viewport:e,selectedItem:t}=l(n);e?.value&&t?.value&&(e.value.scrollTop=e.value.scrollTop+t.value.offsetHeight)}},{default:N(()=>[v(e.$slots,`default`)]),_:3},512)):p(`v-if`,!0)}}),Xe=k({__name:`SelectScrollUpButton`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){let n=Z(),r=n.position===`item-aligned`?$():void 0,{forwardRef:a,currentElement:o}=D(),s=t(!1);return b(e=>{if(n.viewport?.value&&n.isPositioned?.value){let t=n.viewport.value;function r(){s.value=t.scrollTop>0}r(),t.addEventListener(`scroll`,r),e(()=>t.removeEventListener(`scroll`,r))}}),x(o,()=>{o.value&&r?.onScrollButtonChange(o.value)}),(e,t)=>s.value?(_(),i(Je,{key:0,ref:l(a),onAutoScroll:t[0]||=()=>{let{viewport:e,selectedItem:t}=l(n);e?.value&&t?.value&&(e.value.scrollTop=e.value.scrollTop-t.value.offsetHeight)}},{default:N(()=>[v(e.$slots,`default`)]),_:3},512)):p(`v-if`,!0)}}),Ze=k({__name:`SelectTrigger`,props:{disabled:{type:Boolean,required:!1},reference:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`button`}},setup(t){let n=t,r=Y(),{forwardRef:a,currentElement:c}=D(),u=e(()=>r.disabled?.value||n.disabled);r.contentId||=L(void 0,`reka-select-content`),j(()=>{r.onTriggerChange(c.value)});let{getItems:d}=W(),{search:f,handleTypeaheadSearch:p,resetTypeahead:m}=K();function h(){u.value||(r.onOpenChange(!0),m())}function g(e){h(),r.triggerPointerDownPosRef.value={x:Math.round(e.pageX),y:Math.round(e.pageY)}}return(e,t)=>(_(),i(l(be),{"as-child":``,reference:e.reference},{default:N(()=>[o(l(S),{ref:l(a),role:`combobox`,type:e.as===`button`?`button`:void 0,"aria-controls":l(r).contentId,"aria-expanded":l(r).open.value||!1,"aria-required":l(r).required?.value,"aria-autocomplete":`none`,disabled:u.value,dir:l(r)?.dir.value,"data-state":l(r)?.open.value?`open`:`closed`,"data-disabled":u.value?``:void 0,"data-placeholder":l(ke)(l(r).modelValue?.value)?``:void 0,"as-child":e.asChild,as:e.as,onClick:t[0]||=e=>{(e?.currentTarget)?.focus()},onPointerdown:t[1]||=e=>{if(e.pointerType===`touch`)return e.preventDefault();let t=e.target;t.hasPointerCapture(e.pointerId)&&t.releasePointerCapture(e.pointerId),e.button===0&&e.ctrlKey===!1&&(g(e),e.preventDefault())},onPointerup:t[2]||=s(e=>{e.pointerType===`touch`&&g(e)},[`prevent`]),onKeydown:t[3]||=e=>{let t=l(f)!==``;!(e.ctrlKey||e.altKey||e.metaKey)&&e.key.length===1&&t&&e.key===` `||(l(p)(e.key,l(d)()),l(De).includes(e.key)&&(h(),e.preventDefault()))}},{default:N(()=>[v(e.$slots,`default`)]),_:3},8,[`type`,`aria-controls`,`aria-expanded`,`aria-required`,`disabled`,`dir`,`data-state`,`data-disabled`,`data-placeholder`,`as-child`,`as`])]),_:3},8,[`reference`]))}}),Qe=k({__name:`SelectValue`,props:{placeholder:{type:String,required:!1,default:``},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`span`}},setup(t){let n=t,{forwardRef:a,currentElement:o}=D(),s=Y();j(()=>{s.valueElement=o});let c=e(()=>{let e=[],t=Array.from(s.optionsSet.value),n=e=>t.find(t=>q(e,t.value,s.by));return e=Array.isArray(s.modelValue.value)?s.modelValue.value.map(e=>n(e)?.textContent??``):[n(s.modelValue.value)?.textContent??``],e.filter(Boolean)}),u=e(()=>c.value.length?c.value.join(`, `):n.placeholder);return(e,t)=>(_(),i(l(S),{ref:l(a),as:e.as,"as-child":e.asChild,style:{pointerEvents:`none`},"data-placeholder":c.value.length?void 0:n.placeholder},{default:N(()=>[v(e.$slots,`default`,{selectedLabel:c.value,modelValue:l(s).modelValue.value},()=>[r(d(u.value),1)])]),_:3},8,[`as`,`as-child`,`data-placeholder`]))}}),$e=k({__name:`SelectViewport`,props:{nonce:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){let n=e,{nonce:i}=w(n),a=ce(i),s=Z(),c=s.position===`item-aligned`?$():void 0,{forwardRef:d,currentElement:f}=D();j(()=>{s?.onViewportChange(f.value)});let p=t(0);function m(e){let t=e.currentTarget,{shouldExpandOnScrollRef:n,contentWrapper:r}=c??{};if(n?.value&&r?.value){let e=Math.abs(p.value-t.scrollTop);if(e>0){let n=window.innerHeight-20,i=Number.parseFloat(r.value.style.minHeight),a=Number.parseFloat(r.value.style.height),o=Math.max(i,a);if(o<n){let i=o+e,a=Math.min(n,i),s=i-a;r.value.style.height=`${a}px`,r.value.style.bottom===`0px`&&(t.scrollTop=s>0?s:0,r.value.style.justifyContent=`flex-end`)}}}p.value=t.scrollTop}return(e,t)=>(_(),h(u,null,[o(l(S),y({ref:l(d),"data-reka-select-viewport":``,role:`presentation`},{...e.$attrs,...n},{style:{position:`relative`,flex:1,overflow:`hidden auto`},onScroll:m}),{default:N(()=>[v(e.$slots,`default`)]),_:3},16),o(l(S),{as:`style`,nonce:l(a)},{default:N(()=>t[0]||=[r(` /* Hide scrollbars cross-browser and enable momentum scroll for touch devices */ [data-reka-select-viewport] { scrollbar-width:none; -ms-overflow-style: none; -webkit-overflow-scrolling: touch; } [data-reka-select-viewport]::-webkit-scrollbar { display: none; } `)]),_:1,__:[0]},8,[`nonce`])],64))}}),et=k({__name:`Select`,props:{open:{type:Boolean},defaultOpen:{type:Boolean},defaultValue:{},modelValue:{},by:{type:[String,Function]},dir:{},multiple:{type:Boolean},autocomplete:{},disabled:{type:Boolean},name:{},required:{type:Boolean}},emits:[`update:modelValue`,`update:open`],setup(e,{emit:t}){let n=V(e,t);return(e,t)=>(_(),i(l(je),y({"data-slot":`select`},l(n)),{default:N(t=>[v(e.$slots,`default`,a(g(t)))]),_:3},16))}}),tt=k({inheritAttrs:!1,__name:`SelectContent`,props:{forceMount:{type:Boolean},position:{default:`item-aligned`},bodyLock:{type:Boolean},side:{},sideOffset:{},sideFlip:{type:Boolean},align:{default:`center`},alignOffset:{},alignFlip:{type:Boolean},avoidCollisions:{type:Boolean},collisionBoundary:{},collisionPadding:{},arrowPadding:{},hideShiftedArrow:{type:Boolean},sticky:{},hideWhenDetached:{type:Boolean},positionStrategy:{},updatePositionStrategy:{},disableUpdateOnLayoutShift:{type:Boolean},prioritizePosition:{type:Boolean},reference:{},asChild:{type:Boolean},as:{},disableOutsidePointerEvents:{type:Boolean},class:{type:[Boolean,null,String,Object,Array]}},emits:[`closeAutoFocus`,`escapeKeyDown`,`pointerDownOutside`],setup(e,{emit:t}){let r=e,a=t,s=V(P(r,`class`),a);return(t,a)=>(_(),i(l(qe),null,{default:N(()=>[o(l(Be),y({"data-slot":`select-content`,"data-align-trigger":e.position===`item-aligned`},{...t.$attrs,...l(s)},{class:l(A)(`bg-popover text-popover-foreground data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/10 min-w-36 rounded-lg shadow-md ring-1 duration-100 data-[side=inline-start]:slide-in-from-right-2 data-[side=inline-end]:slide-in-from-left-2 cn-menu-translucent relative z-dropdown max-h-(--reka-select-content-available-height) origin-(--reka-select-content-transform-origin) overflow-x-hidden overflow-y-auto data-[align-trigger=true]:animate-none`,e.position===`popper`&&`data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1`,r.class)}),{default:N(()=>[o(l(at)),o(l($e),{"data-position":e.position,class:n(l(A)(`data-[position=popper]:h-[var(--reka-select-trigger-height)] data-[position=popper]:w-full data-[position=popper]:min-w-[var(--reka-select-trigger-width)]`))},{default:N(()=>[v(t.$slots,`default`)]),_:3},8,[`data-position`,`class`]),o(l(it))]),_:3},16,[`data-align-trigger`,`class`])]),_:3}))}}),nt={class:`pointer-events-none absolute right-2 flex size-4 items-center justify-center`},rt=k({__name:`SelectItem`,props:{value:{},disabled:{type:Boolean},textValue:{},asChild:{type:Boolean},as:{},class:{type:[Boolean,null,String,Object,Array]}},setup(e){let t=e,n=R(P(t,`class`));return(e,r)=>(_(),i(l(We),y({"data-slot":`select-item`},l(n),{class:l(A)(`focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm [&_svg:not([class*=size-])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2 relative flex w-full cursor-default items-center outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0`,t.class)}),{default:N(()=>[m(`span`,nt,[o(l(Ge),null,{default:N(()=>[v(e.$slots,`indicator-icon`,{},()=>[o(l(oe),{class:`pointer-events-none`})])]),_:3})]),o(l(Ke),null,{default:N(()=>[v(e.$slots,`default`)]),_:3})]),_:3},16,[`class`]))}}),it=k({__name:`SelectScrollDownButton`,props:{asChild:{type:Boolean},as:{},class:{type:[Boolean,null,String,Object,Array]}},setup(e){let t=e,n=R(P(t,`class`));return(e,r)=>(_(),i(l(Ye),y({"data-slot":`select-scroll-down-button`},l(n),{class:l(A)(`bg-popover z-10 flex cursor-default items-center justify-center py-1 [&_svg:not([class*=size-])]:size-4`,t.class)}),{default:N(()=>[v(e.$slots,`default`,{},()=>[o(l(I))])]),_:3},16,[`class`]))}}),at=k({__name:`SelectScrollUpButton`,props:{asChild:{type:Boolean},as:{},class:{type:[Boolean,null,String,Object,Array]}},setup(e){let t=e,n=R(P(t,`class`));return(e,r)=>(_(),i(l(Xe),y({"data-slot":`select-scroll-up-button`},l(n),{class:l(A)(`bg-popover z-10 flex cursor-default items-center justify-center py-1 [&_svg:not([class*=size-])]:size-4`,t.class)}),{default:N(()=>[v(e.$slots,`default`,{},()=>[o(l(Se))])]),_:3},16,[`class`]))}}),ot=k({__name:`SelectTrigger`,props:{disabled:{type:Boolean},reference:{},asChild:{type:Boolean},as:{},class:{type:[Boolean,null,String,Object,Array]},size:{default:`default`}},setup(e){let t=e,n=R(P(t,`class`,`size`));return(r,a)=>(_(),i(l(Ze),y({"data-slot":`select-trigger`,"data-size":e.size},l(n),{class:l(A)(`border-input data-placeholder:text-muted-foreground dark:bg-input/30 dark:hover:bg-input/50 focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 gap-1.5 rounded-lg border bg-transparent py-2 pr-2 pl-2.5 text-sm transition-colors select-none focus-visible:ring-3 aria-invalid:ring-3 data-[size=default]:h-8 data-[size=sm]:h-7 data-[size=sm]:rounded-md *:data-[slot=select-value]:gap-1.5 [&_svg:not([class*=size-])]:size-4 flex w-fit items-center justify-between whitespace-nowrap outline-none disabled:cursor-not-allowed disabled:opacity-50 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center [&_svg]:pointer-events-none [&_svg]:shrink-0`,t.class)}),{default:N(()=>[v(r.$slots,`default`),o(l(Ve),{"as-child":``},{default:N(()=>[o(l(I),{class:`text-muted-foreground size-4 pointer-events-none`})]),_:1})]),_:3},16,[`data-size`,`class`]))}}),st=k({__name:`SelectValue`,props:{placeholder:{},asChild:{type:Boolean},as:{}},setup(e){let t=e;return(e,n)=>(_(),i(l(Qe),y({"data-slot":`select-value`},t),{default:N(()=>[v(e.$slots,`default`)]),_:3},16))}});export{et as a,tt as i,ot as n,Ce as o,rt as r,st as t};
@@ -0,0 +1,6 @@
1
+ import{B as e,Et as t,G as n,H as r,K as i,Lt as a,Nt as o,R as s,Rt as c,St as l,U as u,V as d,W as f,at as p,ct as m,et as h,ht as g,i as _,k as v,m as y,n as b,o as x,q as S,r as C,rt as ee,st as te,tt as w,vt as T,x as E}from"./button-BQ3s7yNh.js";import{t as D}from"./createLucideIcon-D1tkPDOQ.js";import{g as O,y as k}from"./Teleport-DdjYHlNK.js";import{a as ne,c as re,i as ie,n as A,o as ae,r as oe,s as se,t as ce}from"./alert-dialog-Bi3dliLl.js";import{t as j}from"./Label-C_S0y7Um.js";import{n as M}from"./lib-CxwxnlwW.js";import{t as N}from"./Input-O0ebU-Va.js";import{t as P}from"./useLogRetention-DYP5LOAc.js";var F=D(`download`,[[`path`,{d:`M12 15V3`,key:`m9g1x1`}],[`path`,{d:`M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4`,key:`ih7n3h`}],[`path`,{d:`m7 10 5 5 5-5`,key:`brsn70`}]]),I=D(`hard-drive`,[[`path`,{d:`M10 16h.01`,key:`1bzywj`}],[`path`,{d:`M2.212 11.577a2 2 0 0 0-.212.896V18a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-5.527a2 2 0 0 0-.212-.896L18.55 5.11A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z`,key:`18tbho`}],[`path`,{d:`M21.946 12.013H2.054`,key:`zqlbp7`}],[`path`,{d:`M6 16h.01`,key:`1pmjb7`}]]),L=D(`upload`,[[`path`,{d:`M12 3v12`,key:`1x0j5s`}],[`path`,{d:`m17 8-5-5-5 5`,key:`7q97r8`}],[`path`,{d:`M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4`,key:`ih7n3h`}]]),R=100,[z,B]=k(`ProgressRoot`),V=e=>typeof e==`number`;function H(e,t){return O(e)||V(e)&&!Number.isNaN(e)&&e<=t&&e>=0?e:(console.error(`Invalid prop \`value\` of value \`${e}\` supplied to \`ProgressRoot\`. The \`value\` prop must be:
2
+ - a positive number
3
+ - less than the value passed to \`max\` (or ${R} if no \`max\` prop is set)
4
+ - \`null\` or \`undefined\` if the progress is indeterminate.
5
+
6
+ Defaulting to \`null\`.`),null)}function U(e){return V(e)&&!Number.isNaN(e)&&e>0?e:(console.error(`Invalid prop \`max\` of value \`${e}\` supplied to \`ProgressRoot\`. Only numbers greater than 0 are valid max values. Defaulting to \`${R}\`.`),R)}var W=S({__name:`ProgressRoot`,props:{modelValue:{type:[Number,null],required:!1},max:{type:Number,required:!1,default:R},getValueLabel:{type:Function,required:!1,default:(e,t)=>V(e)?`${Math.round(e/t*R)}%`:void 0},getValueText:{type:Function,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`update:modelValue`,`update:max`],setup(t,{emit:n}){let i=t,a=n;x();let s=y(i,`modelValue`,a,{passive:i.modelValue===void 0}),c=y(i,`max`,a,{passive:i.max===void 0});g(()=>s.value,async e=>{let t=H(e,i.max);t!==e&&(await w(),s.value=t)},{immediate:!0}),g(()=>i.max,e=>{let t=U(i.max);t!==e&&(c.value=t)},{immediate:!0});let l=e(()=>O(s.value)?`indeterminate`:s.value===c.value?`complete`:`loading`);return B({modelValue:s,max:c,progressState:l}),(e,t)=>(p(),r(o(_),{"as-child":e.asChild,as:e.as,"aria-valuemax":o(c),"aria-valuemin":0,"aria-valuenow":V(o(s))?o(s):void 0,"aria-valuetext":e.getValueText?.(o(s),o(c)),"aria-label":e.getValueLabel(o(s),o(c)),role:`progressbar`,"data-state":l.value,"data-value":o(s)??void 0,"data-max":o(c)},{default:T(()=>[m(e.$slots,`default`,{modelValue:o(s)})]),_:3},8,[`as-child`,`as`,`aria-valuemax`,`aria-valuenow`,`aria-valuetext`,`aria-label`,`data-state`,`data-value`,`data-max`]))}}),G=S({__name:`ProgressIndicator`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){let t=e,n=z();return x(),(e,i)=>(p(),r(o(_),h(t,{"data-state":o(n).progressState.value,"data-value":o(n).modelValue?.value??void 0,"data-max":o(n).max.value}),{default:T(()=>[m(e.$slots,`default`)]),_:3},16,[`data-state`,`data-value`,`data-max`]))}}),K=S({__name:`Progress`,props:{modelValue:{default:0},max:{},getValueLabel:{},getValueText:{},asChild:{type:Boolean},as:{},class:{type:[Boolean,null,String,Object,Array]}},setup(e){let t=e,n=E(t,`class`);return(e,s)=>(p(),r(o(W),h({"data-slot":`progress`},o(n),{class:o(C)(`bg-muted h-1 rounded-full relative flex w-full items-center overflow-x-hidden`,t.class)}),{default:T(()=>[i(o(G),{"data-slot":`progress-indicator`,class:`bg-primary size-full flex-1 transition-all`,style:a(`transform: translateX(-${100-(t.modelValue??0)}%);`)},null,8,[`style`])]),_:1},16,[`class`]))}}),le={class:`p-6 space-y-6`},ue={class:`bg-card rounded-lg border p-4 space-y-3`},de={class:`flex items-end gap-4`},fe={class:`space-y-1`},pe={key:0,class:`text-sm text-destructive mt-1`},me={class:`bg-card rounded-lg border p-4 space-y-4`},he={class:`font-medium text-sm text-foreground flex items-center gap-2`},ge={class:`space-y-1`},q={class:`flex justify-between text-sm`},_e={class:`text-muted-foreground`},ve={class:`space-y-1`},ye={class:`flex justify-between text-sm`},be={class:`text-muted-foreground`},xe={key:0,class:`text-xs text-muted-foreground`},Se={class:`grid grid-cols-2 gap-4 pt-3 border-t`},Ce={class:`space-y-1`},we={key:0,class:`text-sm text-destructive mt-1`},Te={class:`space-y-1`},Ee={key:0,class:`text-sm text-destructive mt-1`},De={class:`bg-card rounded-lg border p-4 space-y-3`},Oe={class:`flex gap-3`},ke={key:0,class:`text-sm space-y-1 p-3 bg-muted rounded-md`},J=1048576,Y=1024,X=100,Ae=2,je=10,Z=0,Q=90,$=1,Me=1024,Ne=800,Pe=S({__name:`Settings`,setup(e){let{retentionDays:r,saveRetention:a}=P(),m=t(null),h=t(Me),g=t(Ne),_=t(!1),y=t(!1),x=t(null),S=t(!1),C=t(null),w=t(),E=t(``),D=t(``),O=t(``);function k(e){if(e===0)return`0 B`;let t=[`B`,`KB`,`MB`,`GB`],n=Math.min(Math.floor(Math.log(e)/Math.log(Y)),t.length-1);return`${(e/Y**+n).toFixed(1)} ${t[n]}`}async function R(){_.value=!0;try{let[e,t]=await Promise.allSettled([v.getDbSizeInfo(),v.getLogRetention()]);e.status===`fulfilled`&&(m.value=e.value,h.value=e.value.thresholds.dbMaxSizeMb,g.value=e.value.thresholds.logTableMaxSizeMb),t.status===`fulfilled`&&(r.value=t.value.days)}finally{_.value=!1}}function z(){E.value=``;let e=r.value;return Number.isInteger(e)?e<Z||e>Q?(E.value=`请输入 ${Z}-${Q} 之间的整数`,!1):!0:(E.value=`请输入整数`,!1)}async function B(){z()&&await a()}function V(){D.value=``,O.value=``;let e=!0;return(!Number.isFinite(h.value)||h.value<$)&&(D.value=`请输入不小于 ${$} 的数值`,e=!1),(!Number.isFinite(g.value)||g.value<$)&&(O.value=`请输入不小于 ${$} 的数值`,e=!1),e&&g.value>h.value&&(O.value=`日志表上限不应超过数据库上限`,e=!1),e}async function H(){if(V())try{let e=await v.setDbSizeThresholds({dbMaxSizeMb:h.value,logTableMaxSizeMb:g.value});h.value=e.dbMaxSizeMb,g.value=e.logTableMaxSizeMb,M.success(`存储阈值已更新`),await R()}catch(e){M.error(e.apiMessage||`更新失败`)}}async function U(){try{let e=await v.exportConfig(),t=new Blob([JSON.stringify(e,null,Ae)],{type:`application/json`}),n=URL.createObjectURL(t),r=document.createElement(`a`);r.href=n,r.download=`router-config-${new Date().toISOString().slice(0,je)}.json`,r.click(),URL.revokeObjectURL(n),M.success(`配置已导出`)}catch(e){M.error(e.apiMessage||`导出失败`)}}function W(e){let t=e.target,n=t.files?.[0];if(!n)return;let r=new FileReader;r.onload=()=>{try{let e=JSON.parse(r.result);if(!e.version||e.version!==1){M.error(`不支持的配置文件版本`);return}C.value=e,S.value=!0}catch{M.error(`无效的 JSON 文件`)}},r.readAsText(n),t.value=``}async function G(){if(C.value){y.value=!0;try{x.value=await v.importConfig(C.value),S.value=!1,M.success(`配置已导入`),await R()}catch(e){M.error(e.apiMessage||`导入失败`)}finally{y.value=!1,C.value=null}}}return ee(R),(e,t)=>(p(),f(`div`,le,[t[26]||=d(`h2`,{class:`text-lg font-semibold text-foreground`},`系统设置`,-1),d(`div`,ue,[t[10]||=d(`h3`,{class:`font-medium text-sm text-foreground`},`日志保留策略`,-1),t[11]||=d(`p`,{class:`text-sm text-muted-foreground`},`超过保留天数的日志将被自动清理`,-1),d(`div`,de,[d(`div`,fe,[i(o(j),{for:`retention-days`},{default:T(()=>[...t[8]||=[n(`保留天数`,-1)]]),_:1}),i(o(N),{id:`retention-days`,modelValue:o(r),"onUpdate:modelValue":t[0]||=e=>l(r)?r.value=e:null,modelModifiers:{number:!0},type:`number`,min:Z,max:Q,class:`w-32`,onInput:t[1]||=e=>E.value=``},null,8,[`modelValue`]),E.value?(p(),f(`p`,pe,c(E.value),1)):u(``,!0)]),i(o(b),{size:`sm`,disabled:_.value,onClick:B},{default:T(()=>[...t[9]||=[n(`保存`,-1)]]),_:1},8,[`disabled`])])]),d(`div`,me,[d(`h3`,he,[i(o(I),{class:`h-4 w-4`}),t[12]||=n(` 存储管理 `,-1)]),t[17]||=d(`p`,{class:`text-sm text-muted-foreground`},`监控数据库大小并配置自动清理阈值`,-1),m.value?(p(),f(s,{key:0},[d(`div`,ge,[d(`div`,q,[t[13]||=d(`span`,null,`数据库总大小`,-1),d(`span`,_e,c(k(m.value.totalBytes))+` / `+c(h.value)+` MB `,1)]),i(o(K),{"model-value":Math.min(X,m.value.totalBytes/(h.value*J)*X)},null,8,[`model-value`])]),d(`div`,ve,[d(`div`,ye,[d(`span`,null,`请求日志大小 (`+c(m.value.logCount)+` 条)`,1),d(`span`,be,c(k(m.value.logTableBytes))+` / `+c(g.value)+` MB `,1)]),i(o(K),{"model-value":Math.min(X,m.value.logTableBytes/(g.value*J)*X)},null,8,[`model-value`])]),m.value.lastChecked?(p(),f(`p`,xe,` 上次检查:`+c(m.value.lastChecked),1)):u(``,!0)],64)):u(``,!0),d(`div`,Se,[d(`div`,Ce,[i(o(j),{for:`db-max-size`},{default:T(()=>[...t[14]||=[n(`数据库大小上限 (MB)`,-1)]]),_:1}),i(o(N),{id:`db-max-size`,modelValue:h.value,"onUpdate:modelValue":t[2]||=e=>h.value=e,modelModifiers:{number:!0},type:`number`,min:$,onInput:t[3]||=e=>D.value=``},null,8,[`modelValue`]),D.value?(p(),f(`p`,we,c(D.value),1)):u(``,!0)]),d(`div`,Te,[i(o(j),{for:`log-max-size`},{default:T(()=>[...t[15]||=[n(`日志表大小上限 (MB)`,-1)]]),_:1}),i(o(N),{id:`log-max-size`,modelValue:g.value,"onUpdate:modelValue":t[4]||=e=>g.value=e,modelModifiers:{number:!0},type:`number`,min:$,onInput:t[5]||=e=>O.value=``},null,8,[`modelValue`]),O.value?(p(),f(`p`,Ee,c(O.value),1)):u(``,!0)])]),i(o(b),{size:`sm`,disabled:_.value,onClick:H},{default:T(()=>[...t[16]||=[n(`保存阈值`,-1)]]),_:1},8,[`disabled`])]),d(`div`,De,[t[21]||=d(`h3`,{class:`font-medium text-sm text-foreground`},`配置导入导出`,-1),t[22]||=d(`p`,{class:`text-sm text-muted-foreground`},`导出当前配置或从文件恢复`,-1),d(`div`,Oe,[i(o(b),{variant:`outline`,size:`sm`,disabled:_.value,onClick:U},{default:T(()=>[i(o(F),{class:`mr-2 h-4 w-4`}),t[18]||=n(` 导出配置 `,-1)]),_:1},8,[`disabled`]),i(o(b),{variant:`outline`,size:`sm`,disabled:_.value,onClick:t[6]||=e=>w.value?.click()},{default:T(()=>[i(o(L),{class:`mr-2 h-4 w-4`}),t[19]||=n(` 导入配置 `,-1)]),_:1},8,[`disabled`]),d(`input`,{ref_key:`fileInput`,ref:w,type:`file`,accept:`.json`,class:`hidden`,onChange:W},null,544)]),x.value?(p(),f(`div`,ke,[t[20]||=d(`p`,{class:`font-medium`},`导入完成:`,-1),(p(!0),f(s,null,te(x.value,(e,t)=>(p(),f(`p`,{key:t},c(t)+`: `+c(e)+` 条 `,1))),128))])):u(``,!0)]),i(o(re),{open:S.value,"onUpdate:open":t[7]||=e=>S.value=e},{default:T(()=>[i(o(ne),null,{default:T(()=>[i(o(A),null,{default:T(()=>[i(o(ce),null,{default:T(()=>[...t[23]||=[n(`确认导入配置`,-1)]]),_:1}),i(o(ie),null,{default:T(()=>[...t[24]||=[n(` 导入将覆盖当前的供应商、映射、密钥等配置。安全设置(密码、JWT)将保留不变。 此操作不可撤销。 `,-1)]]),_:1})]),_:1}),i(o(oe),null,{default:T(()=>[i(o(ae),{disabled:y.value},{default:T(()=>[...t[25]||=[n(`取消`,-1)]]),_:1},8,[`disabled`]),i(o(se),{disabled:y.value,onClick:G},{default:T(()=>[n(c(y.value?`导入中...`:`确认导入`),1)]),_:1},8,[`disabled`])]),_:1})]),_:1})]),_:1},8,[`open`])]))}});export{Pe as default};
@@ -0,0 +1 @@
1
+ import{Et as e,G as t,K as n,L as r,M as i,Nt as a,Rt as o,U as s,V as c,W as l,at as u,k as d,n as f,q as p,vt as m}from"./button-BQ3s7yNh.js";import{t as h}from"./Label-C_S0y7Um.js";import{n as g,t as _}from"./CardContent-WrBnGhTg.js";import{t as v}from"./Input-O0ebU-Va.js";var y={class:`min-h-screen flex items-center justify-center bg-background`},b={key:0,class:`text-destructive text-sm`},x=p({__name:`Setup`,setup(p){let x=i(),S=e(``),C=e(``),w=e(``),T=e(!1);async function E(){if(!S.value||!C.value){w.value=`请输入密码`;return}if(S.value!==C.value){w.value=`两次密码不一致`;return}if(S.value.length<6){w.value=`密码至少 6 位`;return}w.value=``,T.value=!0;try{await d.initializeSetup(S.value),x.push(`/admin/dashboard`)}catch(e){w.value=e.apiMessage||`设置失败`}finally{T.value=!1}}return(e,i)=>(u(),l(`div`,y,[n(a(g),{class:`w-full max-w-sm shadow-lg`},{default:m(()=>[n(a(_),{class:`pt-6`},{default:m(()=>[i[4]||=c(`div`,{class:`text-center mb-6`},[c(`div`,{class:`w-12 h-12 bg-primary rounded-lg mx-auto mb-3 flex items-center justify-center`},[c(`svg`,{class:`w-7 h-7 text-white`,fill:`none`,stroke:`currentColor`,viewBox:`0 0 24 24`},[c(`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`})])]),c(`h1`,{class:`text-xl font-semibold text-foreground`},`LLM Simple Router`),c(`p`,{class:`text-sm text-muted-foreground mt-1`},`初始设置 — 设置管理员密码`)],-1),c(`form`,{onSubmit:r(E,[`prevent`]),class:`space-y-4`},[c(`div`,null,[n(a(h),{class:`block text-sm font-medium text-foreground mb-1`},{default:m(()=>[...i[2]||=[t(`密码`,-1)]]),_:1}),n(a(v),{modelValue:S.value,"onUpdate:modelValue":i[0]||=e=>S.value=e,type:`password`,placeholder:`至少 6 位`,disabled:T.value},null,8,[`modelValue`,`disabled`])]),c(`div`,null,[n(a(h),{class:`block text-sm font-medium text-foreground mb-1`},{default:m(()=>[...i[3]||=[t(`确认密码`,-1)]]),_:1}),n(a(v),{modelValue:C.value,"onUpdate:modelValue":i[1]||=e=>C.value=e,type:`password`,placeholder:`再次输入密码`,disabled:T.value},null,8,[`modelValue`,`disabled`])]),w.value?(u(),l(`p`,b,o(w.value),1)):s(``,!0),n(a(f),{type:`submit`,class:`w-full`,disabled:T.value},{default:m(()=>[t(o(T.value?`设置中...`:`完成设置`),1)]),_:1},8,[`disabled`])],32)]),_:1})]),_:1})]))}});export{x as default};
@@ -0,0 +1 @@
1
+ import{B as e,H as t,I as n,It as r,K as i,L as a,Nt as o,U as s,Y as c,at as l,ct as u,et as d,i as f,jt as p,m,o as h,q as g,r as _,vt as v,x as y}from"./button-BQ3s7yNh.js";import{u as b,y as x}from"./Teleport-DdjYHlNK.js";import{n as S}from"./VisuallyHidden-Cyk-jWwh.js";import{t as C}from"./VisuallyHiddenInput-CYjNe_H8.js";var[w,T]=x(`SwitchRoot`),E=g({__name:`SwitchRoot`,props:{defaultValue:{type:null,required:!1},modelValue:{type:null,required:!1,default:void 0},disabled:{type:Boolean,required:!1},id:{type:String,required:!1},value:{type:String,required:!1,default:`on`},trueValue:{type:null,required:!1,default:()=>!0},falseValue:{type:null,required:!1,default:()=>!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`button`},name:{type:String,required:!1},required:{type:Boolean,required:!1}},emits:[`update:modelValue`],setup(r,{emit:i}){let c=r,g=i,{disabled:_}=p(c),y=m(c,`modelValue`,g,{defaultValue:c.defaultValue??c.falseValue,passive:c.modelValue===void 0}),b=e(()=>y.value===c.trueValue);function x(){_.value||(y.value=b.value?c.falseValue:c.trueValue)}let{forwardRef:w,currentElement:E}=h(),D=S(E),O=e(()=>c.id&&E.value?document.querySelector(`[for="${c.id}"]`)?.innerText:void 0);return T({checked:b,toggleCheck:x,disabled:_}),(e,r)=>(l(),t(o(f),d(e.$attrs,{id:e.id,ref:o(w),role:`switch`,type:e.as===`button`?`button`:void 0,value:e.value,"aria-label":e.$attrs[`aria-label`]||O.value,"aria-checked":b.value,"aria-required":e.required,"data-state":b.value?`checked`:`unchecked`,"data-disabled":o(_)?``:void 0,"as-child":e.asChild,as:e.as,disabled:o(_),onClick:x,onKeydown:n(a(x,[`prevent`]),[`enter`])}),{default:v(()=>[u(e.$slots,`default`,{modelValue:o(y),checked:b.value}),o(D)&&e.name?(l(),t(o(C),{key:0,type:`checkbox`,name:e.name,disabled:o(_),required:e.required,value:e.value,checked:b.value},null,8,[`name`,`disabled`,`required`,`value`,`checked`])):s(`v-if`,!0)]),_:3},16,[`id`,`type`,`value`,`aria-label`,`aria-checked`,`aria-required`,`data-state`,`data-disabled`,`as-child`,`as`,`disabled`,`onKeydown`]))}}),D=g({__name:`SwitchThumb`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`span`}},setup(e){let n=w();return h(),(e,r)=>(l(),t(o(f),{"data-state":o(n).checked.value?`checked`:`unchecked`,"data-disabled":o(n).disabled.value?``:void 0,"as-child":e.asChild,as:e.as},{default:v(()=>[u(e.$slots,`default`)]),_:3},8,[`data-state`,`data-disabled`,`as-child`,`as`]))}}),O=g({__name:`Switch`,props:{defaultValue:{},modelValue:{},disabled:{type:Boolean},id:{},value:{},trueValue:{},falseValue:{},asChild:{type:Boolean},as:{},name:{},required:{type:Boolean},class:{type:[Boolean,null,String,Object,Array]},size:{default:`default`}},emits:[`update:modelValue`],setup(e,{emit:n}){let a=e,s=n,f=b(y(a,`class`,`size`),s);return(n,s)=>(l(),t(o(E),d({"data-slot":`switch`,"data-size":e.size},o(f),{class:o(_)(`data-[state=checked]:bg-primary data-[state=unchecked]:bg-input focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 dark:data-[state=unchecked]:bg-input/80 shrink-0 rounded-full border border-transparent focus-visible:ring-3 aria-invalid:ring-3 data-[size=default]:h-[18.4px] data-[size=default]:w-[32px] data-[size=sm]:h-[14px] data-[size=sm]:w-[24px] peer group/switch relative inline-flex items-center transition-all outline-none after:absolute after:-inset-x-3 after:-inset-y-2 data-[disabled]:cursor-not-allowed data-[disabled]:opacity-50`,a.class)}),{default:v(e=>[i(o(D),{"data-slot":`switch-thumb`,class:`bg-background dark:data-[state=unchecked]:bg-foreground dark:data-[state=checked]:bg-primary-foreground rounded-full group-data-[size=default]/switch:size-4 group-data-[size=sm]/switch:size-3 group-data-[size=default]/switch:data-[state=checked]:translate-x-[calc(100%-2px)] group-data-[size=sm]/switch:data-[state=checked]:translate-x-[calc(100%-2px)] group-data-[size=default]/switch:data-[state=unchecked]:translate-x-0 group-data-[size=sm]/switch:data-[state=unchecked]:translate-x-0 pointer-events-none block ring-0 transition-transform`},{default:v(()=>[u(n.$slots,`thumb`,r(c(e)))]),_:2},1024)]),_:3},16,[`data-size`,`class`]))}});export{O as t};
@@ -0,0 +1 @@
1
+ import{Ft as e,Nt as t,V as n,W as r,at as i,ct as a,q as o,r as s}from"./button-BQ3s7yNh.js";var c={"data-slot":`table-container`,class:`relative w-full overflow-x-auto`},l=o({__name:`Table`,props:{class:{type:[Boolean,null,String,Object,Array]}},setup(o){let l=o;return(o,u)=>(i(),r(`div`,c,[n(`table`,{"data-slot":`table`,class:e(t(s)(`w-full caption-bottom text-sm`,l.class))},[a(o.$slots,`default`)],2)]))}}),u=o({__name:`TableBody`,props:{class:{type:[Boolean,null,String,Object,Array]}},setup(n){let o=n;return(n,c)=>(i(),r(`tbody`,{"data-slot":`table-body`,class:e(t(s)(`[&_tr:last-child]:border-0`,o.class))},[a(n.$slots,`default`)],2))}}),d=o({__name:`TableCell`,props:{class:{type:[Boolean,null,String,Object,Array]}},setup(n){let o=n;return(n,c)=>(i(),r(`td`,{"data-slot":`table-cell`,class:e(t(s)(`p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0`,o.class))},[a(n.$slots,`default`)],2))}}),f=o({__name:`TableRow`,props:{class:{type:[Boolean,null,String,Object,Array]}},setup(n){let o=n;return(n,c)=>(i(),r(`tr`,{"data-slot":`table-row`,class:e(t(s)(`hover:bg-muted/50 data-[state=selected]:bg-muted border-b transition-colors has-aria-expanded:bg-muted/50`,o.class))},[a(n.$slots,`default`)],2))}}),p=o({__name:`TableHead`,props:{class:{type:[Boolean,null,String,Object,Array]}},setup(n){let o=n;return(n,c)=>(i(),r(`th`,{"data-slot":`table-head`,class:e(t(s)(`text-foreground h-10 px-2 text-left align-middle font-medium whitespace-nowrap [&:has([role=checkbox])]:pr-0`,o.class))},[a(n.$slots,`default`)],2))}}),m=o({__name:`TableHeader`,props:{class:{type:[Boolean,null,String,Object,Array]}},setup(n){let o=n;return(n,c)=>(i(),r(`thead`,{"data-slot":`table-header`,class:e(t(s)(`[&_tr]:border-b`,o.class))},[a(n.$slots,`default`)],2))}});export{u as a,d as i,p as n,l as o,f as r,m as t};