@fudrouter/fsrouter 0.6.42 → 0.6.44

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 (419) hide show
  1. package/bin/cli.cjs +2 -2
  2. package/package.json +1 -1
  3. package/public/.vite/manifest.json +469 -0
  4. package/public/CHANGELOG.md +103 -0
  5. package/public/assets/EndpointPageClient.CGB3HjDe.js +6 -0
  6. package/public/assets/EndpointPageClient.Cee8kfmV.js +6 -0
  7. package/public/assets/EndpointPageClient.DdAfxJoK.js +6 -0
  8. package/public/assets/EndpointPageClient.GpJ_FKds.js +6 -0
  9. package/public/assets/Loading.BhEzHe-X.js +1 -0
  10. package/public/assets/Loading.DFkQ-Ly9.js +1 -0
  11. package/public/assets/Loading.DaQG3sHF.js +1 -0
  12. package/public/assets/Loading.QMOYJhLu.js +1 -0
  13. package/public/assets/NoAuthProxyCard.Buvt0BVH.js +89 -0
  14. package/public/assets/NoAuthProxyCard.C18iZ3Fk.js +89 -0
  15. package/public/assets/NoAuthProxyCard.C5ap-Sga.css +1 -0
  16. package/public/assets/NoAuthProxyCard.DyEjms20.js +89 -0
  17. package/public/assets/NoAuthProxyCard.VRP7gDcs.js +89 -0
  18. package/public/assets/cliTools.CsdwAybi.js +23 -0
  19. package/public/assets/index.1VBQU7rF.js +11 -0
  20. package/public/assets/index.B-zMpSp_.js +89 -0
  21. package/public/assets/index.BuPfZebu.css +1 -0
  22. package/public/assets/index.CoYbjSIL.js +89 -0
  23. package/public/assets/index.DQDDDpp7.js +89 -0
  24. package/public/assets/index.KMEObSAk.js +89 -0
  25. package/public/assets/machine.CagOtseJ.js +1 -0
  26. package/public/assets/material-symbols-outlined.B4RtTC4Y.woff2 +0 -0
  27. package/public/assets/page.1gncE-Vr.js +1 -0
  28. package/public/assets/page.3QwV1pLl.js +1 -0
  29. package/public/assets/page.5Aj6RvuD.js +1 -0
  30. package/public/assets/page.A7FRfarX.js +1 -0
  31. package/public/assets/page.Amtgxj_r.js +1 -0
  32. package/public/assets/page.B1a01Vfg.js +1 -0
  33. package/public/assets/page.B7h6EPVo.js +1 -0
  34. package/public/assets/page.B9r7QI90.js +1 -0
  35. package/public/assets/page.BAjUiqtJ.js +4 -0
  36. package/public/assets/page.BBMJAyy7.js +1 -0
  37. package/public/assets/page.BBSUQskO.js +64 -0
  38. package/public/assets/page.BCPmNscX.js +1 -0
  39. package/public/assets/page.BFENid_V.js +31 -0
  40. package/public/assets/page.BIG_uMBA.js +1 -0
  41. package/public/assets/page.BINfJPNt.js +1 -0
  42. package/public/assets/page.BJzBUr1v.js +2 -0
  43. package/public/assets/page.BKM5Up2Y.js +1 -0
  44. package/public/assets/page.BLUEyope.js +1 -0
  45. package/public/assets/page.BMeBT03D.js +5 -0
  46. package/public/assets/page.BMf0BFTW.js +1 -0
  47. package/public/assets/page.BONoTspJ.js +1 -0
  48. package/public/assets/page.BQwH91-m.js +1 -0
  49. package/public/assets/page.BRgXbpJe.js +1 -0
  50. package/public/assets/page.BV28PqHr.js +1 -0
  51. package/public/assets/page.BW6Rv-_k.js +1 -0
  52. package/public/assets/page.BXq7Sixg.js +1 -0
  53. package/public/assets/page.Bb3E5EzI.js +6 -0
  54. package/public/assets/page.Bbf1xxJj.js +1 -0
  55. package/public/assets/page.BcuklMLO.js +2 -0
  56. package/public/assets/page.BdPGDnx0.js +6 -0
  57. package/public/assets/page.Bi5OEfgq.js +1 -0
  58. package/public/assets/page.Bi9gIWN0.js +1 -0
  59. package/public/assets/page.BiLGOe6j.js +1 -0
  60. package/public/assets/page.BicDCwTa.js +1 -0
  61. package/public/assets/page.Bj0au_ka.js +5 -0
  62. package/public/assets/page.Bjd38gaf.js +1 -0
  63. package/public/assets/page.BmOXfa4k.js +1 -0
  64. package/public/assets/page.Bqk4tX-5.js +1 -0
  65. package/public/assets/page.BrrSjbBJ.js +1 -0
  66. package/public/assets/page.BsUeE2Y_.js +1 -0
  67. package/public/assets/page.BthVvW1e.js +64 -0
  68. package/public/assets/page.BxAWh20c.js +1 -0
  69. package/public/assets/page.C-2GmPmS.js +4 -0
  70. package/public/assets/page.C27wrrub.js +1 -0
  71. package/public/assets/page.C3FwsCq_.js +23 -0
  72. package/public/assets/page.C4RMU4Xv.js +23 -0
  73. package/public/assets/page.C7SC9vwX.js +1 -0
  74. package/public/assets/page.C8gTAwsH.js +5 -0
  75. package/public/assets/page.CB__T51y.js +2 -0
  76. package/public/assets/page.CDVZIbSe.js +2 -0
  77. package/public/assets/page.CECQKY1y.js +5 -0
  78. package/public/assets/page.CEN8xgCA.js +1 -0
  79. package/public/assets/page.CF5pD5lz.js +1 -0
  80. package/public/assets/page.CHG9mx5l.js +1 -0
  81. package/public/assets/page.CMUOu9fe.js +1 -0
  82. package/public/assets/page.CRex977Y.js +5 -0
  83. package/public/assets/page.CTdMdgI4.js +23 -0
  84. package/public/assets/page.CUsb0F5t.js +1 -0
  85. package/public/assets/page.CVu_9TAu.js +64 -0
  86. package/public/assets/page.CXE5AWV3.js +1 -0
  87. package/public/assets/page.CXIP8Wzi.js +4 -0
  88. package/public/assets/page.CXOuLQhq.js +1 -0
  89. package/public/assets/page.CXPMjDX9.js +1 -0
  90. package/public/assets/page.CXPPlybJ.js +6 -0
  91. package/public/assets/page.CYfjd9SF.js +1 -0
  92. package/public/assets/page.CZtbttgE.js +1 -0
  93. package/public/assets/page.CbOSwuwi.js +1 -0
  94. package/public/assets/page.CbWWyTC4.js +1 -0
  95. package/public/assets/page.CdbMx9XI.js +1 -0
  96. package/public/assets/page.CfDkX9XZ.js +31 -0
  97. package/public/assets/page.CfXJWUgA.js +1 -0
  98. package/public/assets/page.CfdTLncK.js +1 -0
  99. package/public/assets/page.ChqEg6y-.js +1 -0
  100. package/public/assets/page.ClXnUNhb.js +1 -0
  101. package/public/assets/page.CmbatQd6.js +4 -0
  102. package/public/assets/page.Cp7XaHGI.js +1 -0
  103. package/public/assets/page.CqR-Z0pY.js +1 -0
  104. package/public/assets/page.CrzjUbZg.js +1 -0
  105. package/public/assets/page.CsLBZFbk.js +1 -0
  106. package/public/assets/page.CyqTG9Kn.js +2 -0
  107. package/public/assets/page.CzKSjT-r.js +1 -0
  108. package/public/assets/page.D1S50DvR.js +1 -0
  109. package/public/assets/page.D3b1o69R.js +5 -0
  110. package/public/assets/page.D5B_p_2E.js +31 -0
  111. package/public/assets/page.D6TULIkh.js +1 -0
  112. package/public/assets/page.D8X-8LSd.js +2 -0
  113. package/public/assets/page.DA2dX7iN.js +1 -0
  114. package/public/assets/page.DAgwiopx.js +1 -0
  115. package/public/assets/page.DBNjxgJS.js +6 -0
  116. package/public/assets/page.DEBBy5qz.js +1 -0
  117. package/public/assets/page.DEOXc6iv.js +6 -0
  118. package/public/assets/page.DG46DZcu.js +1 -0
  119. package/public/assets/page.DGAKp9YS.js +1 -0
  120. package/public/assets/page.DGico7sP.js +1 -0
  121. package/public/assets/page.DHBHS2oS.js +1 -0
  122. package/public/assets/page.DIrcssm-.js +1 -0
  123. package/public/assets/page.DKdtfq8E.js +2 -0
  124. package/public/assets/page.DKj8qFYb.js +1 -0
  125. package/public/assets/page.DNofNt4p.js +1 -0
  126. package/public/assets/page.DVdv-E5d.js +1 -0
  127. package/public/assets/page.Da-kutqN.js +1 -0
  128. package/public/assets/page.DaW7T6nt.js +1 -0
  129. package/public/assets/page.DgnlzpNx.js +1 -0
  130. package/public/assets/page.DhPzWwGm.js +1 -0
  131. package/public/assets/page.DhcizW_i.js +1 -0
  132. package/public/assets/page.Dju6Kwa5.js +1 -0
  133. package/public/assets/page.Dlh3Q_rt.js +1 -0
  134. package/public/assets/page.DmNhmYKk.js +64 -0
  135. package/public/assets/page.Dmvhu2ua.js +1 -0
  136. package/public/assets/page.Dp30ZzXE.js +1 -0
  137. package/public/assets/page.DsY8qNEU.js +1 -0
  138. package/public/assets/page.DskvkVIF.js +1 -0
  139. package/public/assets/page.DtGEStU7.js +1 -0
  140. package/public/assets/page.DuXsnK8A.js +1 -0
  141. package/public/assets/page.DwU6Ubqf.js +1 -0
  142. package/public/assets/page.FmrKiZlG.js +2 -0
  143. package/public/assets/page.GSAm83Cv.js +6 -0
  144. package/public/assets/page.IgH-AWcu.js +1 -0
  145. package/public/assets/page.Ii8wGSnt.js +1 -0
  146. package/public/assets/page.KtURQA9Q.js +1 -0
  147. package/public/assets/page.NFGJtdfx.js +1 -0
  148. package/public/assets/page.QPaIzKAa.js +1 -0
  149. package/public/assets/page.QuBXfL80.js +1 -0
  150. package/public/assets/page.S02TdGZT.js +1 -0
  151. package/public/assets/page.V3CmUOJF.js +1 -0
  152. package/public/assets/page.VClP2n2B.js +1 -0
  153. package/public/assets/page.Vo9Oe8DJ.js +1 -0
  154. package/public/assets/page.WIMFvXoG.js +1 -0
  155. package/public/assets/page.XUya1XZj.js +23 -0
  156. package/public/assets/page.XqKIvnmq.js +31 -0
  157. package/public/assets/page.aAUPKg0H.js +1 -0
  158. package/public/assets/page.aRQdaBbf.js +1 -0
  159. package/public/assets/page.e-Zxfi03.js +1 -0
  160. package/public/assets/page.e-cA5aB5.js +6 -0
  161. package/public/assets/page.eNXd9f58.js +6 -0
  162. package/public/assets/page.gj2B5h2d.js +1 -0
  163. package/public/assets/page.gvZgqycR.js +1 -0
  164. package/public/assets/page.jvowBQYJ.js +1 -0
  165. package/public/assets/page.k_WzlZwU.js +5 -0
  166. package/public/assets/page.qK1RUb_S.js +1 -0
  167. package/public/assets/page.ryYPRTww.js +1 -0
  168. package/public/assets/page.u7XFxplU.js +1 -0
  169. package/public/assets/page.xm98_0dX.js +5 -0
  170. package/public/assets/page.yjCJ-4Uh.js +1 -0
  171. package/public/assets/react.l0sNRNKZ.js +1 -0
  172. package/public/assets/router.Cjj1--8t.js +28 -0
  173. package/public/assets/zustand.akaTi5uX.js +1 -0
  174. package/public/favicon.ico +0 -0
  175. package/public/favicon.png +0 -0
  176. package/public/icons/icon-192.svg +4 -0
  177. package/public/icons/icon-512.svg +4 -0
  178. package/public/image-video-docs.html +1363 -0
  179. package/public/index.html +21 -0
  180. package/public/logo_amrouter.png +0 -0
  181. package/public/logo_fsrouter.png +0 -0
  182. package/public/logo_fsrouter.svg +10 -0
  183. package/public/logo_fsrouter_backup.png +0 -0
  184. package/public/logo_v2.png +0 -0
  185. package/public/providers/agentrouter.png +0 -0
  186. package/public/providers/agentrouter.webp +0 -0
  187. package/public/providers/alicode-intl.png +0 -0
  188. package/public/providers/alicode-intl.webp +0 -0
  189. package/public/providers/alicode.png +0 -0
  190. package/public/providers/alicode.webp +0 -0
  191. package/public/providers/amp.png +0 -0
  192. package/public/providers/amp.webp +0 -0
  193. package/public/providers/anthropic-m.png +0 -0
  194. package/public/providers/anthropic-m.webp +0 -0
  195. package/public/providers/anthropic.png +0 -0
  196. package/public/providers/anthropic.webp +0 -0
  197. package/public/providers/antigravity.png +0 -0
  198. package/public/providers/antigravity.webp +0 -0
  199. package/public/providers/assemblyai.png +0 -0
  200. package/public/providers/assemblyai.webp +0 -0
  201. package/public/providers/aws-polly.png +0 -0
  202. package/public/providers/aws-polly.webp +0 -0
  203. package/public/providers/azure.png +0 -0
  204. package/public/providers/azure.webp +0 -0
  205. package/public/providers/black-forest-labs.png +0 -0
  206. package/public/providers/black-forest-labs.webp +0 -0
  207. package/public/providers/blackbox.png +0 -0
  208. package/public/providers/blackbox.webp +0 -0
  209. package/public/providers/brave-search.png +0 -0
  210. package/public/providers/brave-search.webp +0 -0
  211. package/public/providers/byteplus.png +0 -0
  212. package/public/providers/byteplus.webp +0 -0
  213. package/public/providers/cartesia.png +0 -0
  214. package/public/providers/cartesia.webp +0 -0
  215. package/public/providers/cerebras.png +0 -0
  216. package/public/providers/cerebras.webp +0 -0
  217. package/public/providers/chutes.png +0 -0
  218. package/public/providers/chutes.webp +0 -0
  219. package/public/providers/claude.png +0 -0
  220. package/public/providers/claude.webp +0 -0
  221. package/public/providers/cline.png +0 -0
  222. package/public/providers/cline.webp +0 -0
  223. package/public/providers/clinepass.png +0 -0
  224. package/public/providers/cloudflare-ai.png +0 -0
  225. package/public/providers/cloudflare-ai.webp +0 -0
  226. package/public/providers/codebuddy-cn.png +0 -0
  227. package/public/providers/codebuddy-cn.webp +0 -0
  228. package/public/providers/codebuddy.png +0 -0
  229. package/public/providers/codebuddy.svg +1 -0
  230. package/public/providers/codex.png +0 -0
  231. package/public/providers/codex.webp +0 -0
  232. package/public/providers/cohere.png +0 -0
  233. package/public/providers/cohere.webp +0 -0
  234. package/public/providers/comfyui.png +0 -0
  235. package/public/providers/comfyui.webp +0 -0
  236. package/public/providers/commandcode.png +0 -0
  237. package/public/providers/commandcode.webp +0 -0
  238. package/public/providers/continue.png +0 -0
  239. package/public/providers/continue.webp +0 -0
  240. package/public/providers/copilot.png +0 -0
  241. package/public/providers/copilot.webp +0 -0
  242. package/public/providers/coqui.png +0 -0
  243. package/public/providers/coqui.webp +0 -0
  244. package/public/providers/cursor.png +0 -0
  245. package/public/providers/cursor.webp +0 -0
  246. package/public/providers/deepgram.png +0 -0
  247. package/public/providers/deepgram.webp +0 -0
  248. package/public/providers/deepseek-tui.png +0 -0
  249. package/public/providers/deepseek-tui.webp +0 -0
  250. package/public/providers/deepseek.png +0 -0
  251. package/public/providers/deepseek.webp +0 -0
  252. package/public/providers/digitalocean.png +0 -0
  253. package/public/providers/droid.png +0 -0
  254. package/public/providers/droid.webp +0 -0
  255. package/public/providers/edge-tts.png +0 -0
  256. package/public/providers/edge-tts.webp +0 -0
  257. package/public/providers/elevenlabs.png +0 -0
  258. package/public/providers/elevenlabs.webp +0 -0
  259. package/public/providers/exa.png +0 -0
  260. package/public/providers/exa.webp +0 -0
  261. package/public/providers/fal-ai.png +0 -0
  262. package/public/providers/fal-ai.webp +0 -0
  263. package/public/providers/firecrawl.png +0 -0
  264. package/public/providers/firecrawl.webp +0 -0
  265. package/public/providers/fireworks.png +0 -0
  266. package/public/providers/fireworks.webp +0 -0
  267. package/public/providers/gemini-cli.png +0 -0
  268. package/public/providers/gemini-cli.webp +0 -0
  269. package/public/providers/gemini.png +0 -0
  270. package/public/providers/gemini.webp +0 -0
  271. package/public/providers/gigachat.png +0 -0
  272. package/public/providers/gigachat.webp +0 -0
  273. package/public/providers/github.png +0 -0
  274. package/public/providers/github.webp +0 -0
  275. package/public/providers/glm-cn.png +0 -0
  276. package/public/providers/glm-cn.webp +0 -0
  277. package/public/providers/glm.png +0 -0
  278. package/public/providers/glm.webp +0 -0
  279. package/public/providers/google-pse.png +0 -0
  280. package/public/providers/google-pse.webp +0 -0
  281. package/public/providers/google-tts.png +0 -0
  282. package/public/providers/google-tts.webp +0 -0
  283. package/public/providers/grok-web.png +0 -0
  284. package/public/providers/grok-web.webp +0 -0
  285. package/public/providers/groq.png +0 -0
  286. package/public/providers/groq.webp +0 -0
  287. package/public/providers/hermes.png +0 -0
  288. package/public/providers/hermes.webp +0 -0
  289. package/public/providers/heroku.png +0 -0
  290. package/public/providers/heroku.webp +0 -0
  291. package/public/providers/huggingface.png +0 -0
  292. package/public/providers/huggingface.webp +0 -0
  293. package/public/providers/hyperbolic.png +0 -0
  294. package/public/providers/hyperbolic.webp +0 -0
  295. package/public/providers/ibm-bob.png +0 -0
  296. package/public/providers/iflow.png +0 -0
  297. package/public/providers/iflow.webp +0 -0
  298. package/public/providers/inworld.png +0 -0
  299. package/public/providers/inworld.webp +0 -0
  300. package/public/providers/jcode.png +0 -0
  301. package/public/providers/jcode.webp +0 -0
  302. package/public/providers/jina-ai.png +0 -0
  303. package/public/providers/jina-ai.webp +0 -0
  304. package/public/providers/jina-reader.png +0 -0
  305. package/public/providers/jina-reader.webp +0 -0
  306. package/public/providers/kilocode.png +0 -0
  307. package/public/providers/kilocode.webp +0 -0
  308. package/public/providers/kimchi.png +0 -0
  309. package/public/providers/kimchi.webp +0 -0
  310. package/public/providers/kimi-coding.png +0 -0
  311. package/public/providers/kimi-coding.webp +0 -0
  312. package/public/providers/kimi.png +0 -0
  313. package/public/providers/kimi.webp +0 -0
  314. package/public/providers/kiro.png +0 -0
  315. package/public/providers/kiro.webp +0 -0
  316. package/public/providers/leonardo.png +0 -0
  317. package/public/providers/linkup.png +0 -0
  318. package/public/providers/linkup.webp +0 -0
  319. package/public/providers/llamagate.png +0 -0
  320. package/public/providers/llamagate.webp +0 -0
  321. package/public/providers/local-device.png +0 -0
  322. package/public/providers/local-device.webp +0 -0
  323. package/public/providers/mimo-free.png +0 -0
  324. package/public/providers/mimo-free.webp +0 -0
  325. package/public/providers/minimax-cn.png +0 -0
  326. package/public/providers/minimax-cn.webp +0 -0
  327. package/public/providers/minimax.png +0 -0
  328. package/public/providers/minimax.webp +0 -0
  329. package/public/providers/mistral.png +0 -0
  330. package/public/providers/mistral.webp +0 -0
  331. package/public/providers/nanobanana.png +0 -0
  332. package/public/providers/nanobanana.webp +0 -0
  333. package/public/providers/nanogpt.png +0 -0
  334. package/public/providers/nanogpt.webp +0 -0
  335. package/public/providers/nebius.png +0 -0
  336. package/public/providers/nebius.webp +0 -0
  337. package/public/providers/nscale.png +0 -0
  338. package/public/providers/nscale.webp +0 -0
  339. package/public/providers/nvidia.png +0 -0
  340. package/public/providers/nvidia.webp +0 -0
  341. package/public/providers/oai-cc.png +0 -0
  342. package/public/providers/oai-cc.webp +0 -0
  343. package/public/providers/oai-r.png +0 -0
  344. package/public/providers/oai-r.webp +0 -0
  345. package/public/providers/ollama-local.png +0 -0
  346. package/public/providers/ollama-local.webp +0 -0
  347. package/public/providers/ollama.png +0 -0
  348. package/public/providers/ollama.webp +0 -0
  349. package/public/providers/openai.png +0 -0
  350. package/public/providers/openai.webp +0 -0
  351. package/public/providers/openclaw.png +0 -0
  352. package/public/providers/openclaw.webp +0 -0
  353. package/public/providers/opencode-go.png +0 -0
  354. package/public/providers/opencode-go.webp +0 -0
  355. package/public/providers/opencode.png +0 -0
  356. package/public/providers/opencode.webp +0 -0
  357. package/public/providers/openrouter.png +0 -0
  358. package/public/providers/openrouter.webp +0 -0
  359. package/public/providers/ovhcloud.png +0 -0
  360. package/public/providers/ovhcloud.webp +0 -0
  361. package/public/providers/perplexity-web.png +0 -0
  362. package/public/providers/perplexity-web.webp +0 -0
  363. package/public/providers/perplexity.png +0 -0
  364. package/public/providers/perplexity.webp +0 -0
  365. package/public/providers/playht.png +0 -0
  366. package/public/providers/playht.webp +0 -0
  367. package/public/providers/predibase.png +0 -0
  368. package/public/providers/predibase.webp +0 -0
  369. package/public/providers/qoder.png +0 -0
  370. package/public/providers/qoder.webp +0 -0
  371. package/public/providers/qwen.png +0 -0
  372. package/public/providers/qwen.webp +0 -0
  373. package/public/providers/recraft.png +0 -0
  374. package/public/providers/recraft.webp +0 -0
  375. package/public/providers/roo.png +0 -0
  376. package/public/providers/roo.webp +0 -0
  377. package/public/providers/runwayml.png +0 -0
  378. package/public/providers/runwayml.webp +0 -0
  379. package/public/providers/sdwebui.png +0 -0
  380. package/public/providers/sdwebui.webp +0 -0
  381. package/public/providers/searchapi.png +0 -0
  382. package/public/providers/searchapi.webp +0 -0
  383. package/public/providers/searxng.png +0 -0
  384. package/public/providers/searxng.webp +0 -0
  385. package/public/providers/serper.png +0 -0
  386. package/public/providers/serper.webp +0 -0
  387. package/public/providers/siliconflow.png +0 -0
  388. package/public/providers/siliconflow.webp +0 -0
  389. package/public/providers/stability-ai.png +0 -0
  390. package/public/providers/stability-ai.webp +0 -0
  391. package/public/providers/tavily.png +0 -0
  392. package/public/providers/tavily.webp +0 -0
  393. package/public/providers/together.png +0 -0
  394. package/public/providers/together.webp +0 -0
  395. package/public/providers/topaz.png +0 -0
  396. package/public/providers/topaz.webp +0 -0
  397. package/public/providers/tortoise.png +0 -0
  398. package/public/providers/tortoise.webp +0 -0
  399. package/public/providers/vertex-partner.png +0 -0
  400. package/public/providers/vertex-partner.webp +0 -0
  401. package/public/providers/vertex.png +0 -0
  402. package/public/providers/vertex.webp +0 -0
  403. package/public/providers/volcengine-ark.png +0 -0
  404. package/public/providers/volcengine-ark.webp +0 -0
  405. package/public/providers/voyage-ai.png +0 -0
  406. package/public/providers/voyage-ai.webp +0 -0
  407. package/public/providers/weavy.jpeg +0 -0
  408. package/public/providers/weavy.png +0 -0
  409. package/public/providers/xai.png +0 -0
  410. package/public/providers/xai.webp +0 -0
  411. package/public/providers/xiaomi-mimo.png +0 -0
  412. package/public/providers/xiaomi-mimo.webp +0 -0
  413. package/public/providers/xiaomi-tokenplan.png +0 -0
  414. package/public/providers/xiaomi-tokenplan.webp +0 -0
  415. package/public/providers/youcom.png +0 -0
  416. package/public/providers/youcom.webp +0 -0
  417. package/public/providers/zcode.png +0 -0
  418. package/public/providers/zcode.webp +0 -0
  419. package/public/weavy.jpeg +0 -0
@@ -0,0 +1,5 @@
1
+ import{j as e,I as pe,v as fe,B as A,P as be,g as ge}from"./index.KMEObSAk.js";import{h as je,d as we,b as c,L as ve}from"./router.Cjj1--8t.js";import{C as S,I as ye,T as Ne,M as ke}from"./NoAuthProxyCard.DyEjms20.js";import"./zustand.akaTi5uX.js";function Se(o){if(typeof o!="string")return{providerId:"",model:""};const g=o.indexOf("/");return g<0?{providerId:o,model:""}:{providerId:o.slice(0,g),model:o.slice(g+1)}}const Re=/^[a-zA-Z0-9_.\-]+$/,Ee={webSearch:"Web Search",webFetch:"Web Fetch",image:"Text to Image",tts:"Text To Speech"},V={webSearch:"/v1/search",webFetch:"/v1/web/fetch",image:"/v1/images/generations",tts:"/v1/audio/speech"},L={webSearch:o=>({model:o,query:"What is the latest news about AI?",search_type:"web",max_results:5}),webFetch:o=>({model:o,url:"https://example.com",format:"markdown"}),image:o=>({model:o,prompt:"A cute cat playing piano",n:1,size:"1024x1024"}),tts:o=>({model:o,input:"Hello, this is a test.",voice:"alloy"})};function X(o){return o==="webSearch"||o==="webFetch"?"/dashboard/media-providers/web":`/dashboard/media-providers/${o}`}function Le(){var K;const{id:o}=je(),g=we(),[r,P]=c.useState(null),[q,O]=c.useState(!0),[N,_]=c.useState(""),[G,R]=c.useState(""),[m,j]=c.useState([]),[Y,$]=c.useState(!1),[Z,I]=c.useState(!1),[M,Q]=c.useState([]),[D,B]=c.useState(!1),[l,w]=c.useState(null),[z,E]=c.useState(""),[U,ee]=c.useState(""),[te,se]=c.useState([]),[ae,ne]=c.useState({}),H=async()=>{var t,s,a;try{const[n,i,k,y,x,p]=await Promise.all([fetch(`/api/combos/${o}`,{cache:"no-store"}),fetch("/api/settings",{cache:"no-store"}),fetch("/api/usage/logs",{cache:"no-store"}),fetch("/api/keys",{cache:"no-store"}),fetch("/api/providers",{cache:"no-store"}),fetch("/api/models/alias",{cache:"no-store"})]);if(p.ok&&ne((await p.json()).aliases||{}),y.ok){const b=await y.json();ee(((t=(b.keys||[]).find(d=>d.isActive!==!1))==null?void 0:t.key)||"")}if(x.ok&&se((await x.json()).connections||[]),!n.ok){P(null),O(!1);return}const h=await n.json();P(h),_(h.name),j(h.models||[]);const f=i.ok?await i.json():{};$(((a=(s=f.comboStrategies)==null?void 0:s[h.name])==null?void 0:a.fallbackStrategy)==="round-robin");const u=k.ok?await k.json():[];Q(u.filter(b=>typeof b=="string"&&b.includes(h.name)).slice(0,50))}catch{}O(!1)};c.useEffect(()=>{H()},[o]);const F=t=>t.trim()?Re.test(t)?(R(""),!0):(R("Only letters, numbers, -, _ and ."),!1):(R("Name is required"),!1),v=async t=>{const s=await fetch(`/api/combos/${o}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)});if(!s.ok){const a=await s.json();return alert(a.error||"Failed to save"),!1}return!0},oe=async()=>{if(!F(N)||N===r.name)return;await v({name:N})&&await H()},re=async t=>{const s=(t==null?void 0:t.value)||t;if(!s||m.includes(s))return;const a=[...m,s];j(a),await v({models:a})},le=async t=>{const s=(t==null?void 0:t.value)||t;if(!s||!m.includes(s))return;const a=m.filter(n=>n!==s);j(a),await v({models:a})},ie=async t=>{const s=m.filter((a,n)=>n!==t);j(s),await v({models:s})},J=async(t,s)=>{const a=[...m],n=t+s;n<0||n>=a.length||([a[t],a[n]]=[a[n],a[t]],j(a),await v({models:a}))},ce=async t=>{$(t);const s=await fetch("/api/settings",{cache:"no-store"}),n={...(s.ok?await s.json():{}).comboStrategies||{}};t?n[r.name]={fallbackStrategy:"round-robin"}:delete n[r.name],await fetch("/api/settings",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({comboStrategies:n})})},de=async()=>{if(!confirm(`Delete combo "${r.name}"?`))return;(await fetch(`/api/combos/${o}`,{method:"DELETE"})).ok&&g(X(r.kind))},me=async()=>{var s,a,n;if(B(!0),w(null),E(""),l!=null&&l.audioUrl)try{URL.revokeObjectURL(l.audioUrl)}catch{}if((s=l==null?void 0:l.imageUrl)!=null&&s.startsWith("blob:"))try{URL.revokeObjectURL(l.imageUrl)}catch{}const t=Date.now();try{const i=V[r.kind],k=L[r.kind](r.name),y={"Content-Type":"application/json"};U&&(y.Authorization=`Bearer ${U}`);const x=await fetch(`/api${i}`,{method:"POST",headers:y,body:JSON.stringify(k)}),p=Date.now()-t;if(!x.ok){const d=await x.json().catch(()=>({}));E(((a=d==null?void 0:d.error)==null?void 0:a.message)||(d==null?void 0:d.error)||`HTTP ${x.status}`),w({json:JSON.stringify(d,null,2),latencyMs:p});return}const h=x.headers.get("content-type")||"";if(h.startsWith("image/")){const d=await x.blob();w({imageUrl:URL.createObjectURL(d),latencyMs:p});return}if(h.startsWith("audio/")||h==="application/octet-stream"){const d=await x.blob();w({audioUrl:URL.createObjectURL(d),latencyMs:p});return}const f=await x.json(),u=(n=f==null?void 0:f.data)==null?void 0:n[0],b=u!=null&&u.b64_json?`data:image/png;base64,${u.b64_json}`:(u==null?void 0:u.url)||"";w({json:JSON.stringify(C(f),null,2),imageUrl:b,latencyMs:p})}catch(i){E(i.message||"Network error")}B(!1)};function C(t){if(!t||typeof t!="object")return t;if(Array.isArray(t))return t.map(C);const s={};for(const[a,n]of Object.entries(t))s[a]=a==="b64_json"&&typeof n=="string"&&n.length>100?`<${n.length} chars base64>`:C(n);return s}if(q)return e.jsx("div",{className:"text-text-muted text-sm",children:"Loading..."});if(!r)return null;const W=Ee[r.kind]||((K=pe.find(t=>t.id===r.kind))==null?void 0:K.label)||"Combo",T=V[r.kind],xe=r.kind&&L[r.kind]?L[r.kind](r.name):null,he=T?`curl -X POST ${fe()}${T} \\
2
+ -H "Content-Type: application/json" \\
3
+ -H "Authorization: Bearer ${U||"YOUR_KEY"}" \\
4
+ -d '${JSON.stringify(xe)}'`:"",ue=X(r.kind);return e.jsxs("div",{className:"flex flex-col gap-6",children:[e.jsxs("div",{className:"flex flex-col gap-4 sm:flex-row sm:items-center sm:justify-between",children:[e.jsxs("div",{className:"flex items-center gap-3 min-w-0",children:[e.jsx(ve,{to:ue,className:"text-text-muted hover:text-primary",children:e.jsx("span",{className:"material-symbols-outlined",children:"arrow_back"})}),e.jsx("div",{className:"size-10 rounded-lg bg-primary/10 flex items-center justify-center",children:e.jsx("span",{className:"material-symbols-outlined text-primary",children:"layers"})}),e.jsxs("div",{className:"min-w-0",children:[e.jsxs("p",{className:"text-xs text-text-muted",children:[W," Combo"]}),e.jsx("code",{className:"text-lg font-semibold font-mono",children:r.name})]})]}),e.jsx(A,{variant:"outline",icon:"delete",onClick:de,className:"text-red-500 border-red-200 hover:bg-red-50",children:"Delete"})]}),e.jsxs(S,{children:[e.jsx("h2",{className:"text-lg font-semibold mb-3",children:"Settings"}),e.jsxs("div",{className:"flex flex-col gap-4",children:[e.jsxs("div",{children:[e.jsx(ye,{label:"Combo Name",value:N,onChange:t=>{_(t.target.value),F(t.target.value)},onBlur:oe,error:G}),e.jsx("p",{className:"text-[10px] text-text-muted mt-0.5",children:"Only letters, numbers, -, _ and ."})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx("p",{className:"text-sm font-medium",children:"Round Robin"}),e.jsx("p",{className:"text-xs text-text-muted",children:"Rotate providers across requests instead of strict fallback order."})]}),e.jsx(Ne,{checked:Y,onChange:ce})]})]})]}),e.jsxs(S,{children:[e.jsxs("div",{className:"flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between mb-3",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-lg font-semibold",children:"Providers"}),e.jsx("p",{className:"text-xs text-text-muted",children:"Tried in order (top-down) or rotated when round-robin is on."})]}),e.jsx(A,{size:"sm",icon:"add",onClick:()=>I(!0),children:"Add Provider"})]}),m.length===0?e.jsx("div",{className:"text-center py-6 border border-dashed border-border rounded-lg text-text-muted text-sm",children:"No providers yet."}):e.jsx("div",{className:"flex flex-col gap-2",children:m.map((t,s)=>{const{providerId:a,model:n}=Se(t),i=ge[a];return e.jsxs("div",{className:"flex items-center gap-3 p-2 rounded-lg bg-black/[0.02] dark:bg-white/[0.02]",children:[e.jsx("span",{className:"text-xs text-text-muted w-5 text-center",children:s+1}),e.jsx(be,{src:`/providers/${a}.png`,alt:(i==null?void 0:i.name)||a,size:24,className:"object-contain rounded shrink-0",fallbackText:(i==null?void 0:i.textIcon)||a.slice(0,2).toUpperCase(),fallbackColor:i==null?void 0:i.color}),e.jsxs("div",{className:"min-w-0 flex-1",children:[e.jsx("div",{className:"text-sm font-medium truncate",children:(i==null?void 0:i.name)||a}),n&&e.jsx("code",{className:"text-[10px] text-text-muted font-mono truncate block",children:n})]}),e.jsxs("div",{className:"flex items-center gap-0.5",children:[e.jsx("button",{onClick:()=>J(s,-1),disabled:s===0,className:`p-1 rounded ${s===0?"text-text-muted/20":"text-text-muted hover:text-primary hover:bg-black/5"}`,title:"Move up",children:e.jsx("span",{className:"material-symbols-outlined text-[16px]",children:"arrow_upward"})}),e.jsx("button",{onClick:()=>J(s,1),disabled:s===m.length-1,className:`p-1 rounded ${s===m.length-1?"text-text-muted/20":"text-text-muted hover:text-primary hover:bg-black/5"}`,title:"Move down",children:e.jsx("span",{className:"material-symbols-outlined text-[16px]",children:"arrow_downward"})}),e.jsx("button",{onClick:()=>ie(s),className:"p-1 rounded text-text-muted hover:text-red-500 hover:bg-red-500/10",title:"Remove",children:e.jsx("span",{className:"material-symbols-outlined text-[16px]",children:"close"})})]})]},`${t}-${s}`)})})]}),r.kind&&T&&e.jsxs(S,{children:[e.jsxs("div",{className:"flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between mb-3",children:[e.jsx("h2",{className:"text-lg font-semibold",children:"Test Example"}),e.jsx(A,{size:"sm",icon:"play_arrow",onClick:me,disabled:D||m.length===0,children:D?"Running...":"Run"})]}),e.jsx("pre",{className:"text-xs font-mono bg-black/[0.03] dark:bg-white/[0.03] p-3 rounded-lg overflow-x-auto whitespace-pre-wrap break-all",children:he}),z&&e.jsx("p",{className:"mt-3 text-xs text-red-500 break-words",children:z}),l&&e.jsxs("div",{className:"mt-3 flex flex-col gap-3",children:[l.latencyMs!=null&&e.jsxs("span",{className:"text-[11px] text-text-muted",children:["⚡ ",l.latencyMs,"ms"]}),l.imageUrl&&e.jsxs("div",{children:[e.jsx("div",{className:"flex items-center justify-end mb-1.5",children:e.jsxs("a",{href:l.imageUrl,download:"image.png",className:"inline-flex items-center gap-1 text-xs text-text-muted hover:text-primary transition-colors",children:[e.jsx("span",{className:"material-symbols-outlined text-[14px]",children:"download"}),"Download"]})}),e.jsx("img",{src:l.imageUrl,alt:"Generated",className:"max-w-full rounded-lg border border-border"})]}),l.audioUrl&&e.jsxs("div",{children:[e.jsx("div",{className:"flex items-center justify-end mb-1.5",children:e.jsxs("a",{href:l.audioUrl,download:"speech.mp3",className:"inline-flex items-center gap-1 text-xs text-text-muted hover:text-primary transition-colors",children:[e.jsx("span",{className:"material-symbols-outlined text-[14px]",children:"download"}),"Download"]})}),e.jsx("audio",{controls:!0,src:l.audioUrl,className:"w-full"})]}),l.json&&e.jsx("pre",{className:"text-xs font-mono bg-black/[0.03] dark:bg-white/[0.03] p-3 rounded-lg overflow-auto max-h-[300px] whitespace-pre-wrap break-all",children:l.json})]})]}),e.jsxs(S,{children:[e.jsx("h2",{className:"text-lg font-semibold mb-3",children:"Usage Logs"}),M.length===0?e.jsx("p",{className:"text-xs text-text-muted italic",children:"No usage yet."}):e.jsx("pre",{className:"text-[11px] font-mono bg-black/[0.03] dark:bg-white/[0.03] p-3 rounded-lg overflow-auto max-h-[400px] whitespace-pre-wrap",children:M.join(`
5
+ `)})]}),e.jsx(ke,{isOpen:Z,onClose:()=>I(!1),onSelect:re,onDeselect:le,activeProviders:te,modelAliases:ae,title:`Add ${W} Model`,kindFilter:r.kind,addedModelValues:m,closeOnSelect:!1})]})}export{Le as default};
@@ -0,0 +1 @@
1
+ import{g as v,j as e,B as c,m as j}from"./index.B-zMpSp_.js";import{d as N,b as u,L as h}from"./router.Cjj1--8t.js";import{C as p,S as k,I as x,T as A}from"./NoAuthProxyCard.VRP7gDcs.js";import"./zustand.akaTi5uX.js";const P=Object.values(v).map(a=>({value:a.id,label:a.name})),S=Object.values(j).map(a=>({value:a.id,label:a.name}));function E(){const a=N(),[b,m]=u.useState(!1),[t,y]=u.useState({provider:"",authMethod:"api_key",apiKey:"",displayName:"",isActive:!0}),[s,n]=u.useState({}),i=(r,o)=>{y(l=>({...l,[r]:o})),s[r]&&n(l=>({...l,[r]:null}))},f=()=>{const r={};return t.provider||(r.provider="Please select a provider"),t.authMethod==="api_key"&&!t.apiKey&&(r.apiKey="API Key is required"),n(r),Object.keys(r).length===0},g=async r=>{if(r.preventDefault(),!!f()){m(!0);try{const o=await fetch("/api/providers",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)});if(o.ok)a("/dashboard/providers");else{const l=await o.json();n({submit:l.error||"Failed to create provider"})}}catch{n({submit:"An error occurred. Please try again."})}finally{m(!1)}}},d=v[t.provider];return e.jsxs("div",{className:"max-w-2xl mx-auto",children:[e.jsxs("div",{className:"mb-8",children:[e.jsxs(h,{to:"/dashboard/providers",className:"inline-flex items-center gap-1 text-sm text-text-muted hover:text-primary transition-colors mb-4",children:[e.jsx("span",{className:"material-symbols-outlined text-lg",children:"arrow_back"}),"Back to Providers"]}),e.jsx("h1",{className:"text-3xl font-semibold tracking-tight",children:"Add New Provider"}),e.jsx("p",{className:"text-text-muted mt-2",children:"Configure a new AI provider to use with your applications."})]}),e.jsx(p,{children:e.jsxs("form",{onSubmit:g,className:"flex flex-col gap-6",children:[e.jsx(k,{label:"Provider",options:P,value:t.provider,onChange:r=>i("provider",r.target.value),placeholder:"Select a provider",error:s.provider,required:!0}),d&&e.jsxs(p.Section,{className:"flex items-center gap-3",children:[e.jsx("div",{className:"size-10 rounded-lg flex items-center justify-center bg-bg border border-border",children:e.jsx("span",{className:"material-symbols-outlined text-xl",style:{color:d.color},children:d.icon})}),e.jsxs("div",{children:[e.jsx("p",{className:"font-medium",children:d.name}),e.jsx("p",{className:"text-sm text-text-muted",children:"Selected provider"})]})]}),e.jsxs("div",{className:"flex flex-col gap-3",children:[e.jsxs("label",{className:"text-sm font-medium",children:["Authentication Method ",e.jsx("span",{className:"text-red-500",children:"*"})]}),e.jsx("div",{className:"flex gap-3",children:S.map(r=>e.jsxs("button",{type:"button",onClick:()=>i("authMethod",r.value),className:`flex-1 flex items-center justify-center gap-2 p-4 rounded-lg border transition-all ${t.authMethod===r.value?"border-primary bg-primary/5 text-primary":"border-border hover:border-primary/50"}`,children:[e.jsx("span",{className:"material-symbols-outlined",children:r.value==="api_key"?"key":"lock"}),e.jsx("span",{className:"font-medium",children:r.label})]},r.value))})]}),t.authMethod==="api_key"&&e.jsx(x,{label:"API Key",type:"password",placeholder:"Enter your API key",value:t.apiKey,onChange:r=>i("apiKey",r.target.value),error:s.apiKey,hint:"Your API key will be encrypted and stored securely.",required:!0}),t.authMethod==="oauth2"&&e.jsxs(p.Section,{children:[e.jsx("p",{className:"text-sm text-text-muted mb-4",children:"Connect your account using OAuth2 authentication."}),e.jsx(c,{type:"button",variant:"secondary",icon:"link",children:"Connect with OAuth2"})]}),e.jsx(x,{label:"Display Name",placeholder:"e.g., Production API, Dev Environment",value:t.displayName,onChange:r=>i("displayName",r.target.value),hint:"Optional. A friendly name to identify this configuration."}),e.jsx(A,{checked:t.isActive,onChange:r=>i("isActive",r),label:"Active",description:"Enable this provider for use in your applications"}),s.submit&&e.jsx("div",{className:"p-4 rounded-lg bg-red-50 dark:bg-red-900/20 border border-red-200 dark:border-red-800 text-red-600 dark:text-red-400 text-sm",children:s.submit}),e.jsxs("div",{className:"flex gap-3 pt-4 border-t border-border",children:[e.jsx(h,{to:"/dashboard/providers",className:"flex-1",children:e.jsx(c,{type:"button",variant:"ghost",fullWidth:!0,children:"Cancel"})}),e.jsx(c,{type:"submit",loading:b,fullWidth:!0,className:"flex-1",children:"Create Provider"})]})]})})]})}export{E as default};
@@ -0,0 +1 @@
1
+
@@ -0,0 +1,28 @@
1
+ function mt(e,t){for(var n=0;n<t.length;n++){const r=t[n];if(typeof r!="string"&&!Array.isArray(r)){for(const a in r)if(a!=="default"&&!(a in e)){const i=Object.getOwnPropertyDescriptor(r,a);i&&Object.defineProperty(e,a,i.get?i:{enumerable:!0,get:()=>r[a]})}}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}function yt(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var me={exports:{}},w={};/**
2
+ * @license React
3
+ * react.production.js
4
+ *
5
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
6
+ *
7
+ * This source code is licensed under the MIT license found in the
8
+ * LICENSE file in the root directory of this source tree.
9
+ */var Ae;function gt(){if(Ae)return w;Ae=1;var e=Symbol.for("react.transitional.element"),t=Symbol.for("react.portal"),n=Symbol.for("react.fragment"),r=Symbol.for("react.strict_mode"),a=Symbol.for("react.profiler"),i=Symbol.for("react.consumer"),s=Symbol.for("react.context"),f=Symbol.for("react.forward_ref"),l=Symbol.for("react.suspense"),o=Symbol.for("react.memo"),d=Symbol.for("react.lazy"),h=Symbol.for("react.activity"),m=Symbol.iterator;function R(u){return u===null||typeof u!="object"?null:(u=m&&u[m]||u["@@iterator"],typeof u=="function"?u:null)}var E={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},v=Object.assign,g={};function y(u,p,C){this.props=u,this.context=p,this.refs=g,this.updater=C||E}y.prototype.isReactComponent={},y.prototype.setState=function(u,p){if(typeof u!="object"&&typeof u!="function"&&u!=null)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,u,p,"setState")},y.prototype.forceUpdate=function(u){this.updater.enqueueForceUpdate(this,u,"forceUpdate")};function _(){}_.prototype=y.prototype;function P(u,p,C){this.props=u,this.context=p,this.refs=g,this.updater=C||E}var $=P.prototype=new _;$.constructor=P,v($,y.prototype),$.isPureReactComponent=!0;var k=Array.isArray;function D(){}var x={H:null,A:null,T:null,S:null},W=Object.prototype.hasOwnProperty;function Y(u,p,C){var S=C.ref;return{$$typeof:e,type:u,key:p,ref:S!==void 0?S:null,props:C}}function X(u,p){return Y(u.type,p,u.props)}function Q(u){return typeof u=="object"&&u!==null&&u.$$typeof===e}function pe(u){var p={"=":"=0",":":"=2"};return"$"+u.replace(/[=:]/g,function(C){return p[C]})}var Z=/\/+/g;function z(u,p){return typeof u=="object"&&u!==null&&u.key!=null?pe(""+u.key):p.toString(36)}function B(u){switch(u.status){case"fulfilled":return u.value;case"rejected":throw u.reason;default:switch(typeof u.status=="string"?u.then(D,D):(u.status="pending",u.then(function(p){u.status==="pending"&&(u.status="fulfilled",u.value=p)},function(p){u.status==="pending"&&(u.status="rejected",u.reason=p)})),u.status){case"fulfilled":return u.value;case"rejected":throw u.reason}}throw u}function K(u,p,C,S,b){var T=typeof u;(T==="undefined"||T==="boolean")&&(u=null);var L=!1;if(u===null)L=!0;else switch(T){case"bigint":case"string":case"number":L=!0;break;case"object":switch(u.$$typeof){case e:case t:L=!0;break;case d:return L=u._init,K(L(u._payload),p,C,S,b)}}if(L)return b=b(u),L=S===""?"."+z(u,0):S,k(b)?(C="",L!=null&&(C=L.replace(Z,"$&/")+"/"),K(b,p,C,"",function(pt){return pt})):b!=null&&(Q(b)&&(b=X(b,C+(b.key==null||u&&u.key===b.key?"":(""+b.key).replace(Z,"$&/")+"/")+L)),p.push(b)),1;L=0;var j=S===""?".":S+":";if(k(u))for(var N=0;N<u.length;N++)S=u[N],T=j+z(S,N),L+=K(S,p,C,T,b);else if(N=R(u),typeof N=="function")for(u=N.call(u),N=0;!(S=u.next()).done;)S=S.value,T=j+z(S,N++),L+=K(S,p,C,T,b);else if(T==="object"){if(typeof u.then=="function")return K(B(u),p,C,S,b);throw p=String(u),Error("Objects are not valid as a React child (found: "+(p==="[object Object]"?"object with keys {"+Object.keys(u).join(", ")+"}":p)+"). If you meant to render a collection of children, use an array instead.")}return L}function ae(u,p,C){if(u==null)return u;var S=[],b=0;return K(u,S,"","",function(T){return p.call(C,T,b++)}),S}function dt(u){if(u._status===-1){var p=u._result;p=p(),p.then(function(C){(u._status===0||u._status===-1)&&(u._status=1,u._result=C)},function(C){(u._status===0||u._status===-1)&&(u._status=2,u._result=C)}),u._status===-1&&(u._status=0,u._result=p)}if(u._status===1)return u._result.default;throw u._result}var $e=typeof reportError=="function"?reportError:function(u){if(typeof window=="object"&&typeof window.ErrorEvent=="function"){var p=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:typeof u=="object"&&u!==null&&typeof u.message=="string"?String(u.message):String(u),error:u});if(!window.dispatchEvent(p))return}else if(typeof process=="object"&&typeof process.emit=="function"){process.emit("uncaughtException",u);return}console.error(u)},ht={map:ae,forEach:function(u,p,C){ae(u,function(){p.apply(this,arguments)},C)},count:function(u){var p=0;return ae(u,function(){p++}),p},toArray:function(u){return ae(u,function(p){return p})||[]},only:function(u){if(!Q(u))throw Error("React.Children.only expected to receive a single React element child.");return u}};return w.Activity=h,w.Children=ht,w.Component=y,w.Fragment=n,w.Profiler=a,w.PureComponent=P,w.StrictMode=r,w.Suspense=l,w.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=x,w.__COMPILER_RUNTIME={__proto__:null,c:function(u){return x.H.useMemoCache(u)}},w.cache=function(u){return function(){return u.apply(null,arguments)}},w.cacheSignal=function(){return null},w.cloneElement=function(u,p,C){if(u==null)throw Error("The argument must be a React element, but you passed "+u+".");var S=v({},u.props),b=u.key;if(p!=null)for(T in p.key!==void 0&&(b=""+p.key),p)!W.call(p,T)||T==="key"||T==="__self"||T==="__source"||T==="ref"&&p.ref===void 0||(S[T]=p[T]);var T=arguments.length-2;if(T===1)S.children=C;else if(1<T){for(var L=Array(T),j=0;j<T;j++)L[j]=arguments[j+2];S.children=L}return Y(u.type,b,S)},w.createContext=function(u){return u={$$typeof:s,_currentValue:u,_currentValue2:u,_threadCount:0,Provider:null,Consumer:null},u.Provider=u,u.Consumer={$$typeof:i,_context:u},u},w.createElement=function(u,p,C){var S,b={},T=null;if(p!=null)for(S in p.key!==void 0&&(T=""+p.key),p)W.call(p,S)&&S!=="key"&&S!=="__self"&&S!=="__source"&&(b[S]=p[S]);var L=arguments.length-2;if(L===1)b.children=C;else if(1<L){for(var j=Array(L),N=0;N<L;N++)j[N]=arguments[N+2];b.children=j}if(u&&u.defaultProps)for(S in L=u.defaultProps,L)b[S]===void 0&&(b[S]=L[S]);return Y(u,T,b)},w.createRef=function(){return{current:null}},w.forwardRef=function(u){return{$$typeof:f,render:u}},w.isValidElement=Q,w.lazy=function(u){return{$$typeof:d,_payload:{_status:-1,_result:u},_init:dt}},w.memo=function(u,p){return{$$typeof:o,type:u,compare:p===void 0?null:p}},w.startTransition=function(u){var p=x.T,C={};x.T=C;try{var S=u(),b=x.S;b!==null&&b(C,S),typeof S=="object"&&S!==null&&typeof S.then=="function"&&S.then(D,$e)}catch(T){$e(T)}finally{p!==null&&C.types!==null&&(p.types=C.types),x.T=p}},w.unstable_useCacheRefresh=function(){return x.H.useCacheRefresh()},w.use=function(u){return x.H.use(u)},w.useActionState=function(u,p,C){return x.H.useActionState(u,p,C)},w.useCallback=function(u,p){return x.H.useCallback(u,p)},w.useContext=function(u){return x.H.useContext(u)},w.useDebugValue=function(){},w.useDeferredValue=function(u,p){return x.H.useDeferredValue(u,p)},w.useEffect=function(u,p){return x.H.useEffect(u,p)},w.useEffectEvent=function(u){return x.H.useEffectEvent(u)},w.useId=function(){return x.H.useId()},w.useImperativeHandle=function(u,p,C){return x.H.useImperativeHandle(u,p,C)},w.useInsertionEffect=function(u,p){return x.H.useInsertionEffect(u,p)},w.useLayoutEffect=function(u,p){return x.H.useLayoutEffect(u,p)},w.useMemo=function(u,p){return x.H.useMemo(u,p)},w.useOptimistic=function(u,p){return x.H.useOptimistic(u,p)},w.useReducer=function(u,p,C){return x.H.useReducer(u,p,C)},w.useRef=function(u){return x.H.useRef(u)},w.useState=function(u){return x.H.useState(u)},w.useSyncExternalStore=function(u,p,C){return x.H.useSyncExternalStore(u,p,C)},w.useTransition=function(){return x.H.useTransition()},w.version="19.2.7",w}var De;function Ye(){return De||(De=1,me.exports=gt()),me.exports}var c=Ye();const vt=yt(c),tn=mt({__proto__:null,default:vt},[c]);var ye={exports:{}},A={};/**
10
+ * @license React
11
+ * react-dom.production.js
12
+ *
13
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
14
+ *
15
+ * This source code is licensed under the MIT license found in the
16
+ * LICENSE file in the root directory of this source tree.
17
+ */var Ne;function Rt(){if(Ne)return A;Ne=1;var e=Ye();function t(l){var o="https://react.dev/errors/"+l;if(1<arguments.length){o+="?args[]="+encodeURIComponent(arguments[1]);for(var d=2;d<arguments.length;d++)o+="&args[]="+encodeURIComponent(arguments[d])}return"Minified React error #"+l+"; visit "+o+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}function n(){}var r={d:{f:n,r:function(){throw Error(t(522))},D:n,C:n,L:n,m:n,X:n,S:n,M:n},p:0,findDOMNode:null},a=Symbol.for("react.portal");function i(l,o,d){var h=3<arguments.length&&arguments[3]!==void 0?arguments[3]:null;return{$$typeof:a,key:h==null?null:""+h,children:l,containerInfo:o,implementation:d}}var s=e.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;function f(l,o){if(l==="font")return"";if(typeof o=="string")return o==="use-credentials"?o:""}return A.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=r,A.createPortal=function(l,o){var d=2<arguments.length&&arguments[2]!==void 0?arguments[2]:null;if(!o||o.nodeType!==1&&o.nodeType!==9&&o.nodeType!==11)throw Error(t(299));return i(l,o,null,d)},A.flushSync=function(l){var o=s.T,d=r.p;try{if(s.T=null,r.p=2,l)return l()}finally{s.T=o,r.p=d,r.d.f()}},A.preconnect=function(l,o){typeof l=="string"&&(o?(o=o.crossOrigin,o=typeof o=="string"?o==="use-credentials"?o:"":void 0):o=null,r.d.C(l,o))},A.prefetchDNS=function(l){typeof l=="string"&&r.d.D(l)},A.preinit=function(l,o){if(typeof l=="string"&&o&&typeof o.as=="string"){var d=o.as,h=f(d,o.crossOrigin),m=typeof o.integrity=="string"?o.integrity:void 0,R=typeof o.fetchPriority=="string"?o.fetchPriority:void 0;d==="style"?r.d.S(l,typeof o.precedence=="string"?o.precedence:void 0,{crossOrigin:h,integrity:m,fetchPriority:R}):d==="script"&&r.d.X(l,{crossOrigin:h,integrity:m,fetchPriority:R,nonce:typeof o.nonce=="string"?o.nonce:void 0})}},A.preinitModule=function(l,o){if(typeof l=="string")if(typeof o=="object"&&o!==null){if(o.as==null||o.as==="script"){var d=f(o.as,o.crossOrigin);r.d.M(l,{crossOrigin:d,integrity:typeof o.integrity=="string"?o.integrity:void 0,nonce:typeof o.nonce=="string"?o.nonce:void 0})}}else o==null&&r.d.M(l)},A.preload=function(l,o){if(typeof l=="string"&&typeof o=="object"&&o!==null&&typeof o.as=="string"){var d=o.as,h=f(d,o.crossOrigin);r.d.L(l,d,{crossOrigin:h,integrity:typeof o.integrity=="string"?o.integrity:void 0,nonce:typeof o.nonce=="string"?o.nonce:void 0,type:typeof o.type=="string"?o.type:void 0,fetchPriority:typeof o.fetchPriority=="string"?o.fetchPriority:void 0,referrerPolicy:typeof o.referrerPolicy=="string"?o.referrerPolicy:void 0,imageSrcSet:typeof o.imageSrcSet=="string"?o.imageSrcSet:void 0,imageSizes:typeof o.imageSizes=="string"?o.imageSizes:void 0,media:typeof o.media=="string"?o.media:void 0})}},A.preloadModule=function(l,o){if(typeof l=="string")if(o){var d=f(o.as,o.crossOrigin);r.d.m(l,{as:typeof o.as=="string"&&o.as!=="script"?o.as:void 0,crossOrigin:d,integrity:typeof o.integrity=="string"?o.integrity:void 0})}else r.d.m(l)},A.requestFormReset=function(l){r.d.r(l)},A.unstable_batchedUpdates=function(l,o){return l(o)},A.useFormState=function(l,o,d){return s.H.useFormState(l,o,d)},A.useFormStatus=function(){return s.H.useHostTransitionStatus()},A.version="19.2.7",A}var Ie;function Et(){if(Ie)return ye.exports;Ie=1;function e(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(t){console.error(t)}}return e(),ye.exports=Rt(),ye.exports}/**
18
+ * react-router v7.18.1
19
+ *
20
+ * Copyright (c) Remix Software Inc.
21
+ *
22
+ * This source code is licensed under the MIT license found in the
23
+ * LICENSE.md file in the root directory of this source tree.
24
+ *
25
+ * @license MIT
26
+ */var Ce=/^(?:[a-z][a-z0-9+.-]*:|[\\/]{2})/i,qe=/^[\\/]{2}/;function wt(e,t){return t+e.replace(/\\/g,"/")}var Me="popstate";function He(e){return typeof e=="object"&&e!=null&&"pathname"in e&&"search"in e&&"hash"in e&&"state"in e&&"key"in e}function St(e={}){function t(r,a){var o;let i=(o=a.state)==null?void 0:o.masked,{pathname:s,search:f,hash:l}=i||r.location;return Ee("",{pathname:s,search:f,hash:l},a.state&&a.state.usr||null,a.state&&a.state.key||"default",i?{pathname:r.location.pathname,search:r.location.search,hash:r.location.hash}:void 0)}function n(r,a){return typeof a=="string"?a:te(a)}return _t(t,n,null,e)}function O(e,t){if(e===!1||e===null||typeof e>"u")throw new Error(t)}function M(e,t){if(!e){typeof console<"u"&&console.warn(t);try{throw new Error(t)}catch{}}}function Ct(){return Math.random().toString(36).substring(2,10)}function Ue(e,t){return{usr:e.state,key:e.key,idx:t,masked:e.mask?{pathname:e.pathname,search:e.search,hash:e.hash}:void 0}}function Ee(e,t,n=null,r,a){return{pathname:typeof e=="string"?e:e.pathname,search:"",hash:"",...typeof t=="string"?G(t):t,state:n,key:t&&t.key||r||Ct(),mask:a}}function te({pathname:e="/",search:t="",hash:n=""}){return t&&t!=="?"&&(e+=t.charAt(0)==="?"?t:"?"+t),n&&n!=="#"&&(e+=n.charAt(0)==="#"?n:"#"+n),e}function G(e){let t={};if(e){let n=e.indexOf("#");n>=0&&(t.hash=e.substring(n),e=e.substring(0,n));let r=e.indexOf("?");r>=0&&(t.search=e.substring(r),e=e.substring(0,r)),e&&(t.pathname=e)}return t}function _t(e,t,n,r={}){let{window:a=document.defaultView,v5Compat:i=!1}=r,s=a.history,f="POP",l=null,o=d();o==null&&(o=0,s.replaceState({...s.state,idx:o},""));function d(){return(s.state||{idx:null}).idx}function h(){f="POP";let g=d(),y=g==null?null:g-o;o=g,l&&l({action:f,location:v.location,delta:y})}function m(g,y){f="PUSH";let _=He(g)?g:Ee(v.location,g,y);o=d()+1;let P=Ue(_,o),$=v.createHref(_.mask||_);try{s.pushState(P,"",$)}catch(k){if(k instanceof DOMException&&k.name==="DataCloneError")throw k;a.location.assign($)}i&&l&&l({action:f,location:v.location,delta:1})}function R(g,y){f="REPLACE";let _=He(g)?g:Ee(v.location,g,y);o=d();let P=Ue(_,o),$=v.createHref(_.mask||_);s.replaceState(P,"",$),i&&l&&l({action:f,location:v.location,delta:0})}function E(g){return Pt(a,g)}let v={get action(){return f},get location(){return e(a,s)},listen(g){if(l)throw new Error("A history only accepts one active listener");return a.addEventListener(Me,h),l=g,()=>{a.removeEventListener(Me,h),l=null}},createHref(g){return t(a,g)},createURL:E,encodeLocation(g){let y=E(g);return{pathname:y.pathname,search:y.search,hash:y.hash}},push:m,replace:R,go(g){return s.go(g)}};return v}function Pt(e,t,n=!1){let r="http://localhost";e&&(r=e.location.origin!=="null"?e.location.origin:e.location.href),O(r,"No window.location.(origin|href) available to create URL");let a=typeof t=="string"?t:te(t);return a=a.replace(/ $/,"%20"),!n&&qe.test(a)&&(a=r+a),new URL(a,r)}function ze(e,t,n="/"){return xt(e,t,n,!1)}function xt(e,t,n,r,a){let i=typeof t=="string"?G(t):t,s=q(i.pathname||"/",n);if(s==null)return null;let f=bt(e),l=null,o=Ht(s);for(let d=0;l==null&&d<f.length;++d)l=Mt(f[d],o,r);return l}function bt(e){let t=Ke(e);return Tt(t),t}function Ke(e,t=[],n=[],r="",a=!1){let i=(s,f,l=a,o)=>{let d={relativePath:o===void 0?s.path||"":o,caseSensitive:s.caseSensitive===!0,childrenIndex:f,route:s};if(d.relativePath.startsWith("/")){if(!d.relativePath.startsWith(r)&&l)return;O(d.relativePath.startsWith(r),`Absolute route path "${d.relativePath}" nested under path "${r}" is not valid. An absolute child route path must start with the combined path of all its parent routes.`),d.relativePath=d.relativePath.slice(r.length)}let h=U([r,d.relativePath]),m=n.concat(d);s.children&&s.children.length>0&&(O(s.index!==!0,`Index routes must not have child routes. Please remove all child routes from route path "${h}".`),Ke(s.children,t,m,h,l)),!(s.path==null&&!s.index)&&t.push({path:h,score:Nt(h,s.index),routesMeta:m.map((R,E)=>{let[v,g]=Je(R.relativePath,R.caseSensitive,E===m.length-1);return{...R,matcher:v,compiledParams:g}})})};return e.forEach((s,f)=>{var l;if(s.path===""||!((l=s.path)!=null&&l.includes("?")))i(s,f);else for(let o of Ge(s.path))i(s,f,!0,o)}),t}function Ge(e){let t=e.split("/");if(t.length===0)return[];let[n,...r]=t,a=n.endsWith("?"),i=n.replace(/\?$/,"");if(r.length===0)return a?[i,""]:[i];let s=Ge(r.join("/")),f=[];return f.push(...s.map(l=>l===""?i:[i,l].join("/"))),a&&f.push(...s),f.map(l=>e.startsWith("/")&&l===""?"/":l)}function Tt(e){e.sort((t,n)=>t.score!==n.score?n.score-t.score:It(t.routesMeta.map(r=>r.childrenIndex),n.routesMeta.map(r=>r.childrenIndex)))}var Lt=/^:[\w-]+$/,Ot=3,kt=2,$t=1,At=10,Dt=-2,Fe=e=>e==="*";function Nt(e,t){let n=e.split("/"),r=n.length;return n.some(Fe)&&(r+=Dt),t&&(r+=kt),n.filter(a=>!Fe(a)).reduce((a,i)=>a+(Lt.test(i)?Ot:i===""?$t:At),r)}function It(e,t){return e.length===t.length&&e.slice(0,-1).every((r,a)=>r===t[a])?e[e.length-1]-t[t.length-1]:0}function Mt(e,t,n=!1){let{routesMeta:r}=e,a={},i="/",s=[];for(let f=0;f<r.length;++f){let l=r[f],o=f===r.length-1,d=i==="/"?t:t.slice(i.length)||"/",h={path:l.relativePath,caseSensitive:l.caseSensitive,end:o},m=l.matcher&&l.compiledParams?Ve(h,d,l.matcher,l.compiledParams):le(h,d),R=l.route;if(!m&&o&&n&&!r[r.length-1].route.index&&(m=le({path:l.relativePath,caseSensitive:l.caseSensitive,end:!1},d)),!m)return null;Object.assign(a,m.params),s.push({params:a,pathname:U([i,m.pathname]),pathnameBase:Bt(U([i,m.pathnameBase])),route:R}),m.pathnameBase!=="/"&&(i=U([i,m.pathnameBase]))}return s}function le(e,t){typeof e=="string"&&(e={path:e,caseSensitive:!1,end:!0});let[n,r]=Je(e.path,e.caseSensitive,e.end);return Ve(e,t,n,r)}function Ve(e,t,n,r){let a=t.match(n);if(!a)return null;let i=a[0],s=i.replace(/(.)\/+$/,"$1"),f=a.slice(1);return{params:r.reduce((o,{paramName:d,isOptional:h},m)=>{if(d==="*"){let E=f[m]||"";s=i.slice(0,i.length-E.length).replace(/(.)\/+$/,"$1")}const R=f[m];return h&&!R?o[d]=void 0:o[d]=(R||"").replace(/%2F/g,"/"),o},{}),pathname:i,pathnameBase:s,pattern:e}}function Je(e,t=!1,n=!0){M(e==="*"||!e.endsWith("*")||e.endsWith("/*"),`Route path "${e}" will be treated as if it were "${e.replace(/\*$/,"/*")}" because the \`*\` character must always follow a \`/\` in the pattern. To get rid of this warning, please change the route path to "${e.replace(/\*$/,"/*")}".`);let r=[],a="^"+e.replace(/\/*\*?$/,"").replace(/^\/*/,"/").replace(/[\\.*+^${}|()[\]]/g,"\\$&").replace(/\/:([\w-]+)(\?)?/g,(s,f,l,o,d)=>{if(r.push({paramName:f,isOptional:l!=null}),l){let h=d.charAt(o+s.length);return h&&h!=="/"?"/([^\\/]*)":"(?:/([^\\/]*))?"}return"/([^\\/]+)"}).replace(/\/([\w-]+)\?(\/|$)/g,"(/$1)?$2");return e.endsWith("*")?(r.push({paramName:"*"}),a+=e==="*"||e==="/*"?"(.*)$":"(?:\\/(.+)|\\/*)$"):n?a+="\\/*$":e!==""&&e!=="/"&&(a+="(?:(?=\\/|$))"),[new RegExp(a,t?void 0:"i"),r]}function Ht(e){try{return e.split("/").map(t=>decodeURIComponent(t).replace(/\//g,"%2F")).join("/")}catch(t){return M(!1,`The URL path "${e}" could not be decoded because it is a malformed URL segment. This is probably due to a bad percent encoding (${t}).`),e}}function q(e,t){if(t==="/")return e;if(!e.toLowerCase().startsWith(t.toLowerCase()))return null;let n=t.endsWith("/")?t.length-1:t.length,r=e.charAt(n);return r&&r!=="/"?null:e.slice(n)||"/"}function Ut(e,t="/"){let{pathname:n,search:r="",hash:a=""}=typeof e=="string"?G(e):e,i;return n?(n=Xe(n),n.startsWith("/")?i=Be(n.substring(1),"/"):i=Be(n,t)):i=t,{pathname:i,search:jt(r),hash:Wt(a)}}function Be(e,t){let n=se(t).split("/");return e.split("/").forEach(a=>{a===".."?n.length>1&&n.pop():a!=="."&&n.push(a)}),n.length>1?n.join("/"):"/"}function ge(e,t,n,r){return`Cannot include a '${e}' character in a manually specified \`to.${t}\` field [${JSON.stringify(r)}]. Please separate it out to the \`to.${n}\` field. Alternatively you may provide the full path as a string in <Link to="..."> and the router will parse it for you.`}function Ft(e){return e.filter((t,n)=>n===0||t.route.path&&t.route.path.length>0)}function _e(e){let t=Ft(e);return t.map((n,r)=>r===t.length-1?n.pathname:n.pathnameBase)}function ce(e,t,n,r=!1){let a;typeof e=="string"?a=G(e):(a={...e},O(!a.pathname||!a.pathname.includes("?"),ge("?","pathname","search",a)),O(!a.pathname||!a.pathname.includes("#"),ge("#","pathname","hash",a)),O(!a.search||!a.search.includes("#"),ge("#","search","hash",a)));let i=e===""||a.pathname==="",s=i?"/":a.pathname,f;if(s==null)f=n;else{let h=t.length-1;if(!r&&s.startsWith("..")){let m=s.split("/");for(;m[0]==="..";)m.shift(),h-=1;a.pathname=m.join("/")}f=h>=0?t[h]:"/"}let l=Ut(a,f),o=s&&s!=="/"&&s.endsWith("/"),d=(i||s===".")&&n.endsWith("/");return!l.pathname.endsWith("/")&&(o||d)&&(l.pathname+="/"),l}var Xe=e=>e.replace(/[\\/]{2,}/g,"/"),U=e=>Xe(e.join("/")),se=e=>e.replace(/\/+$/,""),Bt=e=>se(e).replace(/^\/*/,"/"),jt=e=>!e||e==="?"?"":e.startsWith("?")?e:"?"+e,Wt=e=>!e||e==="#"?"":e.startsWith("#")?e:"#"+e,Yt=class{constructor(e,t,n,r=!1){this.status=e,this.statusText=t||"",this.internal=r,n instanceof Error?(this.data=n.toString(),this.error=n):this.data=n}};function qt(e){return e!=null&&typeof e.status=="number"&&typeof e.statusText=="string"&&typeof e.internal=="boolean"&&"data"in e}function zt(e){let t=e.map(n=>n.route.path).filter(Boolean);return U(t)||"/"}var Qe=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u";function Ze(e,t){let n=e;if(typeof n!="string"||!Ce.test(n))return{absoluteURL:void 0,isExternal:!1,to:n};let r=n,a=!1;if(Qe)try{let i=new URL(window.location.href),s=qe.test(n)?new URL(wt(n,i.protocol)):new URL(n),f=q(s.pathname,t);s.origin===i.origin&&f!=null?n=f+s.search+s.hash:a=!0}catch{M(!1,`<Link to="${n}"> contains an invalid URL which will probably break when clicked - please update to a valid URL path.`)}return{absoluteURL:r,isExternal:a,to:n}}Object.getOwnPropertyNames(Object.prototype).sort().join("\0");var et=["POST","PUT","PATCH","DELETE"];new Set(et);var Kt=["GET",...et];new Set(Kt);var Gt=["about:","blob:","chrome:","chrome-untrusted:","content:","data:","devtools:","file:","filesystem:","javascript:"];function Vt(e){try{return Gt.includes(new URL(e).protocol)}catch{return!1}}var V=c.createContext(null);V.displayName="DataRouter";var fe=c.createContext(null);fe.displayName="DataRouterState";var tt=c.createContext(!1);function Jt(){return c.useContext(tt)}var rt=c.createContext({isTransitioning:!1});rt.displayName="ViewTransition";var Xt=c.createContext(new Map);Xt.displayName="Fetchers";var Qt=c.createContext(null);Qt.displayName="Await";var I=c.createContext(null);I.displayName="Navigation";var re=c.createContext(null);re.displayName="Location";var H=c.createContext({outlet:null,matches:[],isDataRoute:!1});H.displayName="Route";var Pe=c.createContext(null);Pe.displayName="RouteError";var nt="REACT_ROUTER_ERROR",Zt="REDIRECT",er="ROUTE_ERROR_RESPONSE";function tr(e){if(e.startsWith(`${nt}:${Zt}:{`))try{let t=JSON.parse(e.slice(28));if(typeof t=="object"&&t&&typeof t.status=="number"&&typeof t.statusText=="string"&&typeof t.location=="string"&&typeof t.reloadDocument=="boolean"&&typeof t.replace=="boolean")return t}catch{}}function rr(e){if(e.startsWith(`${nt}:${er}:{`))try{let t=JSON.parse(e.slice(40));if(typeof t=="object"&&t&&typeof t.status=="number"&&typeof t.statusText=="string")return new Yt(t.status,t.statusText,t.data)}catch{}}function nr(e,{relative:t}={}){O(J(),"useHref() may be used only in the context of a <Router> component.");let{basename:n,navigator:r}=c.useContext(I),{hash:a,pathname:i,search:s}=ne(e,{relative:t}),f=i;return n!=="/"&&(f=i==="/"?n:U([n,i])),r.createHref({pathname:f,search:s,hash:a})}function J(){return c.useContext(re)!=null}function F(){return O(J(),"useLocation() may be used only in the context of a <Router> component."),c.useContext(re).location}var at="You should call navigate() in a React.useEffect(), not when your component is first rendered.";function ot(e){c.useContext(I).static||c.useLayoutEffect(e)}function xe(){let{isDataRoute:e}=c.useContext(H);return e?vr():ar()}function ar(){O(J(),"useNavigate() may be used only in the context of a <Router> component.");let e=c.useContext(V),{basename:t,navigator:n}=c.useContext(I),{matches:r}=c.useContext(H),{pathname:a}=F(),i=JSON.stringify(_e(r)),s=c.useRef(!1);return ot(()=>{s.current=!0}),c.useCallback((l,o={})=>{if(M(s.current,at),!s.current)return;if(typeof l=="number"){n.go(l);return}let d=ce(l,JSON.parse(i),a,o.relative==="path");e==null&&t!=="/"&&(d.pathname=d.pathname==="/"?t:U([t,d.pathname])),(o.replace?n.replace:n.push)(d,o.state,o)},[t,n,i,a,e])}var or=c.createContext(null);function ir(e){let t=c.useContext(H).outlet;return c.useMemo(()=>t&&c.createElement(or.Provider,{value:e},t),[t,e])}function rn(){let{matches:e}=c.useContext(H),t=e[e.length-1];return(t==null?void 0:t.params)??{}}function ne(e,{relative:t}={}){let{matches:n}=c.useContext(H),{pathname:r}=F(),a=JSON.stringify(_e(n));return c.useMemo(()=>ce(e,JSON.parse(a),r,t==="path"),[e,a,r,t])}function ur(e,t){return it(e,t)}function it(e,t,n){var g;O(J(),"useRoutes() may be used only in the context of a <Router> component.");let{navigator:r}=c.useContext(I),{matches:a}=c.useContext(H),i=a[a.length-1],s=i?i.params:{},f=i?i.pathname:"/",l=i?i.pathnameBase:"/",o=i&&i.route;{let y=o&&o.path||"";lt(f,!o||y.endsWith("*")||y.endsWith("*?"),`You rendered descendant <Routes> (or called \`useRoutes()\`) at "${f}" (under <Route path="${y}">) but the parent route path has no trailing "*". This means if you navigate deeper, the parent won't match anymore and therefore the child routes will never render.
27
+
28
+ Please change the parent <Route path="${y}"> to <Route path="${y==="/"?"*":`${y}/*`}">.`)}let d=F(),h;if(t){let y=typeof t=="string"?G(t):t;O(l==="/"||((g=y.pathname)==null?void 0:g.startsWith(l)),`When overriding the location using \`<Routes location>\` or \`useRoutes(routes, location)\`, the location pathname must begin with the portion of the URL pathname that was matched by all parent routes. The current pathname base is "${l}" but pathname "${y.pathname}" was given in the \`location\` prop.`),h=y}else h=d;let m=h.pathname||"/",R=m;if(l!=="/"){let y=l.replace(/^\//,"").split("/");R="/"+m.replace(/^\//,"").split("/").slice(y.length).join("/")}let E=n&&n.state.matches.length?n.state.matches.map(y=>Object.assign(y,{route:n.manifest[y.route.id]||y.route})):ze(e,{pathname:R});M(o||E!=null,`No routes matched location "${h.pathname}${h.search}${h.hash}" `),M(E==null||E[E.length-1].route.element!==void 0||E[E.length-1].route.Component!==void 0||E[E.length-1].route.lazy!==void 0,`Matched leaf route at location "${h.pathname}${h.search}${h.hash}" does not have an element or Component. This means it will render an <Outlet /> with a null value by default resulting in an "empty" page.`);let v=dr(E&&E.map(y=>Object.assign({},y,{params:Object.assign({},s,y.params),pathname:U([l,r.encodeLocation?r.encodeLocation(y.pathname.replace(/%/g,"%25").replace(/\?/g,"%3F").replace(/#/g,"%23")).pathname:y.pathname]),pathnameBase:y.pathnameBase==="/"?l:U([l,r.encodeLocation?r.encodeLocation(y.pathnameBase.replace(/%/g,"%25").replace(/\?/g,"%3F").replace(/#/g,"%23")).pathname:y.pathnameBase])})),a,n);return t&&v?c.createElement(re.Provider,{value:{location:{pathname:"/",search:"",hash:"",state:null,key:"default",mask:void 0,...h},navigationType:"POP"}},v):v}function lr(){let e=gr(),t=qt(e)?`${e.status} ${e.statusText}`:e instanceof Error?e.message:JSON.stringify(e),n=e instanceof Error?e.stack:null,r="rgba(200,200,200, 0.5)",a={padding:"0.5rem",backgroundColor:r},i={padding:"2px 4px",backgroundColor:r},s=null;return console.error("Error handled by React Router default ErrorBoundary:",e),s=c.createElement(c.Fragment,null,c.createElement("p",null,"💿 Hey developer 👋"),c.createElement("p",null,"You can provide a way better UX than this when your app throws errors by providing your own ",c.createElement("code",{style:i},"ErrorBoundary")," or"," ",c.createElement("code",{style:i},"errorElement")," prop on your route.")),c.createElement(c.Fragment,null,c.createElement("h2",null,"Unexpected Application Error!"),c.createElement("h3",{style:{fontStyle:"italic"}},t),n?c.createElement("pre",{style:a},n):null,s)}var sr=c.createElement(lr,null),ut=class extends c.Component{constructor(e){super(e),this.state={location:e.location,revalidation:e.revalidation,error:e.error}}static getDerivedStateFromError(e){return{error:e}}static getDerivedStateFromProps(e,t){return t.location!==e.location||t.revalidation!=="idle"&&e.revalidation==="idle"?{error:e.error,location:e.location,revalidation:e.revalidation}:{error:e.error!==void 0?e.error:t.error,location:t.location,revalidation:e.revalidation||t.revalidation}}componentDidCatch(e,t){this.props.onError?this.props.onError(e,t):console.error("React Router caught the following error during render",e)}render(){let e=this.state.error;if(this.context&&typeof e=="object"&&e&&"digest"in e&&typeof e.digest=="string"){const n=rr(e.digest);n&&(e=n)}let t=e!==void 0?c.createElement(H.Provider,{value:this.props.routeContext},c.createElement(Pe.Provider,{value:e,children:this.props.component})):this.props.children;return this.context?c.createElement(cr,{error:e},t):t}};ut.contextType=tt;var ve=new WeakMap;function cr({children:e,error:t}){let{basename:n}=c.useContext(I);if(typeof t=="object"&&t&&"digest"in t&&typeof t.digest=="string"){let r=tr(t.digest);if(r){let a=ve.get(t);if(a)throw a;let i=Ze(r.location,n),s=i.absoluteURL||i.to;if(Vt(s))throw new Error("Invalid redirect location");if(Qe&&!ve.get(t))if(i.isExternal||r.reloadDocument)window.location.href=s;else{const f=Promise.resolve().then(()=>window.__reactRouterDataRouter.navigate(i.to,{replace:r.replace}));throw ve.set(t,f),f}return c.createElement("meta",{httpEquiv:"refresh",content:`0;url=${s}`})}}return e}function fr({routeContext:e,match:t,children:n}){let r=c.useContext(V);return r&&r.static&&r.staticContext&&(t.route.errorElement||t.route.ErrorBoundary)&&(r.staticContext._deepestRenderedBoundaryId=t.route.id),c.createElement(H.Provider,{value:e},n)}function dr(e,t=[],n){let r=n==null?void 0:n.state;if(e==null){if(!r)return null;if(r.errors)e=r.matches;else if(t.length===0&&!r.initialized&&r.matches.length>0)e=r.matches;else return null}let a=e,i=r==null?void 0:r.errors;if(i!=null){let d=a.findIndex(h=>h.route.id&&(i==null?void 0:i[h.route.id])!==void 0);O(d>=0,`Could not find a matching route for errors on route IDs: ${Object.keys(i).join(",")}`),a=a.slice(0,Math.min(a.length,d+1))}let s=!1,f=-1;if(n&&r){s=r.renderFallback;for(let d=0;d<a.length;d++){let h=a[d];if((h.route.HydrateFallback||h.route.hydrateFallbackElement)&&(f=d),h.route.id){let{loaderData:m,errors:R}=r,E=h.route.loader&&!m.hasOwnProperty(h.route.id)&&(!R||R[h.route.id]===void 0);if(h.route.lazy||E){n.isStatic&&(s=!0),f>=0?a=a.slice(0,f+1):a=[a[0]];break}}}}let l=n==null?void 0:n.onError,o=r&&l?(d,h)=>{var m,R;l(d,{location:r.location,params:((R=(m=r.matches)==null?void 0:m[0])==null?void 0:R.params)??{},pattern:zt(r.matches),errorInfo:h})}:void 0;return a.reduceRight((d,h,m)=>{let R,E=!1,v=null,g=null;r&&(R=i&&h.route.id?i[h.route.id]:void 0,v=h.route.errorElement||sr,s&&(f<0&&m===0?(lt("route-fallback",!1,"No `HydrateFallback` element provided to render during initial hydration"),E=!0,g=null):f===m&&(E=!0,g=h.route.hydrateFallbackElement||null)));let y=t.concat(a.slice(0,m+1)),_=()=>{let P;return R?P=v:E?P=g:h.route.Component?P=c.createElement(h.route.Component,null):h.route.element?P=h.route.element:P=d,c.createElement(fr,{match:h,routeContext:{outlet:d,matches:y,isDataRoute:r!=null},children:P})};return r&&(h.route.ErrorBoundary||h.route.errorElement||m===0)?c.createElement(ut,{location:r.location,revalidation:r.revalidation,component:v,error:R,children:_(),routeContext:{outlet:null,matches:y,isDataRoute:!0},onError:o}):_()},null)}function be(e){return`${e} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function hr(e){let t=c.useContext(V);return O(t,be(e)),t}function pr(e){let t=c.useContext(fe);return O(t,be(e)),t}function mr(e){let t=c.useContext(H);return O(t,be(e)),t}function Te(e){let t=mr(e),n=t.matches[t.matches.length-1];return O(n.route.id,`${e} can only be used on routes that contain a unique "id"`),n.route.id}function yr(){return Te("useRouteId")}function gr(){var r;let e=c.useContext(Pe),t=pr("useRouteError"),n=Te("useRouteError");return e!==void 0?e:(r=t.errors)==null?void 0:r[n]}function vr(){let{router:e}=hr("useNavigate"),t=Te("useNavigate"),n=c.useRef(!1);return ot(()=>{n.current=!0}),c.useCallback(async(a,i={})=>{M(n.current,at),n.current&&(typeof a=="number"?await e.navigate(a):await e.navigate(a,{fromRouteId:t,...i}))},[e,t])}var je={};function lt(e,t,n){!t&&!je[e]&&(je[e]=!0,M(!1,n))}c.memo(Rr);function Rr({routes:e,manifest:t,future:n,state:r,isStatic:a,onError:i}){return it(e,void 0,{manifest:t,state:r,isStatic:a,onError:i})}function nn({to:e,replace:t,state:n,relative:r}){O(J(),"<Navigate> may be used only in the context of a <Router> component.");let{static:a}=c.useContext(I);M(!a,"<Navigate> must not be used on the initial render in a <StaticRouter>. This is a no-op, but you should modify your code so the <Navigate> is only ever rendered in response to some user interaction or state change.");let{matches:i}=c.useContext(H),{pathname:s}=F(),f=xe(),l=ce(e,_e(i),s,r==="path"),o=JSON.stringify(l);return c.useEffect(()=>{f(JSON.parse(o),{replace:t,state:n,relative:r})},[f,o,r,t,n]),null}function an(e){return ir(e.context)}function Er(e){O(!1,"A <Route> is only ever to be used as the child of <Routes> element, never rendered directly. Please wrap your <Route> in a <Routes>.")}function wr({basename:e="/",children:t=null,location:n,navigationType:r="POP",navigator:a,static:i=!1,useTransitions:s}){O(!J(),"You cannot render a <Router> inside another <Router>. You should never have more than one in your app.");let f=e.replace(/^\/*/,"/"),l=c.useMemo(()=>({basename:f,navigator:a,static:i,useTransitions:s,future:{}}),[f,a,i,s]);typeof n=="string"&&(n=G(n));let{pathname:o="/",search:d="",hash:h="",state:m=null,key:R="default",mask:E}=n,v=c.useMemo(()=>{let g=q(o,f);return g==null?null:{location:{pathname:g,search:d,hash:h,state:m,key:R,mask:E},navigationType:r}},[f,o,d,h,m,R,r,E]);return M(v!=null,`<Router basename="${f}"> is not able to match the URL "${o}${d}${h}" because it does not start with the basename, so the <Router> won't render anything.`),v==null?null:c.createElement(I.Provider,{value:l},c.createElement(re.Provider,{children:t,value:v}))}function on({children:e,location:t}){return ur(we(e),t)}function we(e,t=[]){let n=[];return c.Children.forEach(e,(r,a)=>{if(!c.isValidElement(r))return;let i=[...t,a];if(r.type===c.Fragment){n.push.apply(n,we(r.props.children,i));return}O(r.type===Er,`[${typeof r.type=="string"?r.type:r.type.name}] is not a <Route> component. All component children of <Routes> must be a <Route> or <React.Fragment>`),O(!r.props.index||!r.props.children,"An index route cannot have child routes.");let s={id:r.props.id||i.join("-"),caseSensitive:r.props.caseSensitive,element:r.props.element,Component:r.props.Component,index:r.props.index,path:r.props.path,middleware:r.props.middleware,loader:r.props.loader,action:r.props.action,hydrateFallbackElement:r.props.hydrateFallbackElement,HydrateFallback:r.props.HydrateFallback,errorElement:r.props.errorElement,ErrorBoundary:r.props.ErrorBoundary,hasErrorBoundary:r.props.hasErrorBoundary===!0||r.props.ErrorBoundary!=null||r.props.errorElement!=null,shouldRevalidate:r.props.shouldRevalidate,handle:r.props.handle,lazy:r.props.lazy};r.props.children&&(s.children=we(r.props.children,i)),n.push(s)}),n}var ie="get",ue="application/x-www-form-urlencoded";function de(e){return typeof HTMLElement<"u"&&e instanceof HTMLElement}function Sr(e){return de(e)&&e.tagName.toLowerCase()==="button"}function Cr(e){return de(e)&&e.tagName.toLowerCase()==="form"}function _r(e){return de(e)&&e.tagName.toLowerCase()==="input"}function Pr(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}function xr(e,t){return e.button===0&&(!t||t==="_self")&&!Pr(e)}function Se(e=""){return new URLSearchParams(typeof e=="string"||Array.isArray(e)||e instanceof URLSearchParams?e:Object.keys(e).reduce((t,n)=>{let r=e[n];return t.concat(Array.isArray(r)?r.map(a=>[n,a]):[[n,r]])},[]))}function br(e,t){let n=Se(e);return t&&t.forEach((r,a)=>{n.has(a)||t.getAll(a).forEach(i=>{n.append(a,i)})}),n}var oe=null;function Tr(){if(oe===null)try{new FormData(document.createElement("form"),0),oe=!1}catch{oe=!0}return oe}var Lr=new Set(["application/x-www-form-urlencoded","multipart/form-data","text/plain"]);function Re(e){return e!=null&&!Lr.has(e)?(M(!1,`"${e}" is not a valid \`encType\` for \`<Form>\`/\`<fetcher.Form>\` and will default to "${ue}"`),null):e}function Or(e,t){let n,r,a,i,s;if(Cr(e)){let f=e.getAttribute("action");r=f?q(f,t):null,n=e.getAttribute("method")||ie,a=Re(e.getAttribute("enctype"))||ue,i=new FormData(e)}else if(Sr(e)||_r(e)&&(e.type==="submit"||e.type==="image")){let f=e.form;if(f==null)throw new Error('Cannot submit a <button> or <input type="submit"> without a <form>');let l=e.getAttribute("formaction")||f.getAttribute("action");if(r=l?q(l,t):null,n=e.getAttribute("formmethod")||f.getAttribute("method")||ie,a=Re(e.getAttribute("formenctype"))||Re(f.getAttribute("enctype"))||ue,i=new FormData(f,e),!Tr()){let{name:o,type:d,value:h}=e;if(d==="image"){let m=o?`${o}.`:"";i.append(`${m}x`,"0"),i.append(`${m}y`,"0")}else o&&i.append(o,h)}}else{if(de(e))throw new Error('Cannot submit element that is not <form>, <button>, or <input type="submit|image">');n=ie,r=null,a=ue,s=e}return i&&a==="text/plain"&&(s=i,i=void 0),{action:r,method:n.toLowerCase(),encType:a,formData:i,body:s}}Object.getOwnPropertyNames(Object.prototype).sort().join("\0");function Le(e,t){if(e===!1||e===null||typeof e>"u")throw new Error(t)}function st(e,t,n,r){let a=typeof e=="string"?new URL(e,typeof window>"u"?"server://singlefetch/":window.location.origin):e;return n?a.pathname.endsWith("/")?a.pathname=`${a.pathname}_.${r}`:a.pathname=`${a.pathname}.${r}`:a.pathname==="/"?a.pathname=`_root.${r}`:t&&q(a.pathname,t)==="/"?a.pathname=`${se(t)}/_root.${r}`:a.pathname=`${se(a.pathname)}.${r}`,a}async function kr(e,t){if(e.id in t)return t[e.id];try{let n=await import(e.module);return t[e.id]=n,n}catch(n){return console.error(`Error loading route module \`${e.module}\`, reloading page...`),console.error(n),window.__reactRouterContext&&window.__reactRouterContext.isSpaMode,window.location.reload(),new Promise(()=>{})}}function $r(e){return e==null?!1:e.href==null?e.rel==="preload"&&typeof e.imageSrcSet=="string"&&typeof e.imageSizes=="string":typeof e.rel=="string"&&typeof e.href=="string"}async function Ar(e,t,n){let r=await Promise.all(e.map(async a=>{let i=t.routes[a.route.id];if(i){let s=await kr(i,n);return s.links?s.links():[]}return[]}));return Mr(r.flat(1).filter($r).filter(a=>a.rel==="stylesheet"||a.rel==="preload").map(a=>a.rel==="stylesheet"?{...a,rel:"prefetch",as:"style"}:{...a,rel:"prefetch"}))}function We(e,t,n,r,a,i){let s=(l,o)=>n[o]?l.route.id!==n[o].route.id:!0,f=(l,o)=>{var d;return n[o].pathname!==l.pathname||((d=n[o].route.path)==null?void 0:d.endsWith("*"))&&n[o].params["*"]!==l.params["*"]};return i==="assets"?t.filter((l,o)=>s(l,o)||f(l,o)):i==="data"?t.filter((l,o)=>{var h;let d=r.routes[l.route.id];if(!d||!d.hasLoader)return!1;if(s(l,o)||f(l,o))return!0;if(l.route.shouldRevalidate){let m=l.route.shouldRevalidate({currentUrl:new URL(a.pathname+a.search+a.hash,window.origin),currentParams:((h=n[0])==null?void 0:h.params)||{},nextUrl:new URL(e,window.origin),nextParams:l.params,defaultShouldRevalidate:!0});if(typeof m=="boolean")return m}return!0}):[]}function Dr(e,t,{includeHydrateFallback:n}={}){return Nr(e.map(r=>{let a=t.routes[r.route.id];if(!a)return[];let i=[a.module];return a.clientActionModule&&(i=i.concat(a.clientActionModule)),a.clientLoaderModule&&(i=i.concat(a.clientLoaderModule)),n&&a.hydrateFallbackModule&&(i=i.concat(a.hydrateFallbackModule)),a.imports&&(i=i.concat(a.imports)),i}).flat(1))}function Nr(e){return[...new Set(e)]}function Ir(e){let t={},n=Object.keys(e).sort();for(let r of n)t[r]=e[r];return t}function Mr(e,t){let n=new Set;return new Set(t),e.reduce((r,a)=>{let i=JSON.stringify(Ir(a));return n.has(i)||(n.add(i),r.push({key:i,link:a})),r},[])}function Oe(){let e=c.useContext(V);return Le(e,"You must render this element inside a <DataRouterContext.Provider> element"),e}function Hr(){let e=c.useContext(fe);return Le(e,"You must render this element inside a <DataRouterStateContext.Provider> element"),e}var ke=c.createContext(void 0);ke.displayName="FrameworkContext";function he(){let e=c.useContext(ke);return Le(e,"You must render this element inside a <HydratedRouter> element"),e}function Ur(e,t){let n=c.useContext(ke),[r,a]=c.useState(!1),[i,s]=c.useState(!1),{onFocus:f,onBlur:l,onMouseEnter:o,onMouseLeave:d,onTouchStart:h}=t,m=c.useRef(null);c.useEffect(()=>{if(e==="render"&&s(!0),e==="viewport"){let v=y=>{y.forEach(_=>{s(_.isIntersecting)})},g=new IntersectionObserver(v,{threshold:.5});return m.current&&g.observe(m.current),()=>{g.disconnect()}}},[e]),c.useEffect(()=>{if(r){let v=setTimeout(()=>{s(!0)},100);return()=>{clearTimeout(v)}}},[r]);let R=()=>{a(!0)},E=()=>{a(!1),s(!1)};return n?e!=="intent"?[i,m,{}]:[i,m,{onFocus:ee(f,R),onBlur:ee(l,E),onMouseEnter:ee(o,R),onMouseLeave:ee(d,E),onTouchStart:ee(h,R)}]:[!1,m,{}]}function ee(e,t){return n=>{e&&e(n),n.defaultPrevented||t(n)}}function Fr({page:e,...t}){let n=Jt(),{nonce:r}=he(),{router:a}=Oe(),i=c.useMemo(()=>ze(a.routes,e,a.basename),[a.routes,e,a.basename]);return i?(t.nonce==null&&r&&(t={...t,nonce:r}),n?c.createElement(jr,{page:e,matches:i,...t}):c.createElement(Wr,{page:e,matches:i,...t})):null}function Br(e){let{manifest:t,routeModules:n}=he(),[r,a]=c.useState([]);return c.useEffect(()=>{let i=!1;return Ar(e,t,n).then(s=>{i||a(s)}),()=>{i=!0}},[e,t,n]),r}function jr({page:e,matches:t,...n}){let r=F(),{future:a}=he(),{basename:i}=Oe(),s=c.useMemo(()=>{if(e===r.pathname+r.search+r.hash)return[];let f=st(e,i,a.v8_trailingSlashAwareDataRequests,"rsc"),l=!1,o=[];for(let d of t)typeof d.route.shouldRevalidate=="function"?l=!0:o.push(d.route.id);return l&&o.length>0&&f.searchParams.set("_routes",o.join(",")),[f.pathname+f.search]},[i,a.v8_trailingSlashAwareDataRequests,e,r,t]);return c.createElement(c.Fragment,null,s.map(f=>c.createElement("link",{key:f,rel:"prefetch",as:"fetch",href:f,...n})))}function Wr({page:e,matches:t,...n}){let r=F(),{future:a,manifest:i,routeModules:s}=he(),{basename:f}=Oe(),{loaderData:l,matches:o}=Hr(),d=c.useMemo(()=>We(e,t,o,i,r,"data"),[e,t,o,i,r]),h=c.useMemo(()=>We(e,t,o,i,r,"assets"),[e,t,o,i,r]),m=c.useMemo(()=>{if(e===r.pathname+r.search+r.hash)return[];let v=new Set,g=!1;if(t.forEach(_=>{var $;let P=i.routes[_.route.id];!P||!P.hasLoader||(!d.some(k=>k.route.id===_.route.id)&&_.route.id in l&&(($=s[_.route.id])!=null&&$.shouldRevalidate)||P.hasClientLoader?g=!0:v.add(_.route.id))}),v.size===0)return[];let y=st(e,f,a.v8_trailingSlashAwareDataRequests,"data");return g&&v.size>0&&y.searchParams.set("_routes",t.filter(_=>v.has(_.route.id)).map(_=>_.route.id).join(",")),[y.pathname+y.search]},[f,a.v8_trailingSlashAwareDataRequests,l,r,i,d,t,e,s]),R=c.useMemo(()=>Dr(h,i),[h,i]),E=Br(h);return c.createElement(c.Fragment,null,m.map(v=>c.createElement("link",{key:v,rel:"prefetch",as:"fetch",href:v,...n})),R.map(v=>c.createElement("link",{key:v,rel:"modulepreload",href:v,...n})),E.map(({key:v,link:g})=>c.createElement("link",{key:v,nonce:n.nonce,...g,crossOrigin:g.crossOrigin??n.crossOrigin})))}function Yr(...e){return t=>{e.forEach(n=>{typeof n=="function"?n(t):n!=null&&(n.current=t)})}}var qr=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u";try{qr&&(window.__reactRouterVersion="7.18.1")}catch{}function un({basename:e,children:t,useTransitions:n,window:r}){let a=c.useRef();a.current==null&&(a.current=St({window:r,v5Compat:!0}));let i=a.current,[s,f]=c.useState({action:i.action,location:i.location}),l=c.useCallback(o=>{n===!1?f(o):c.startTransition(()=>f(o))},[n]);return c.useLayoutEffect(()=>i.listen(l),[i,l]),c.createElement(wr,{basename:e,children:t,location:s.location,navigationType:s.action,navigator:i,useTransitions:n})}var ct=c.forwardRef(function({onClick:t,discover:n="render",prefetch:r="none",relative:a,reloadDocument:i,replace:s,mask:f,state:l,target:o,to:d,preventScrollReset:h,viewTransition:m,defaultShouldRevalidate:R,...E},v){let{basename:g,navigator:y,useTransitions:_}=c.useContext(I),P=typeof d=="string"&&Ce.test(d),$=Ze(d,g);d=$.to;let k=nr(d,{relative:a}),D=F(),x=null;if(f){let B=ce(f,[],D.mask?D.mask.pathname:"/",!0);g!=="/"&&(B.pathname=B.pathname==="/"?g:U([g,B.pathname])),x=y.createHref(B)}let[W,Y,X]=Ur(r,E),Q=Vr(d,{replace:s,mask:f,state:l,target:o,preventScrollReset:h,relative:a,viewTransition:m,defaultShouldRevalidate:R,useTransitions:_});function pe(B){t&&t(B),B.defaultPrevented||Q(B)}let Z=!($.isExternal||i),z=c.createElement("a",{...E,...X,href:(Z?x:void 0)||$.absoluteURL||k,onClick:Z?pe:t,ref:Yr(v,Y),target:o,"data-discover":!P&&n==="render"?"true":void 0});return W&&!P?c.createElement(c.Fragment,null,z,c.createElement(Fr,{page:k})):z});ct.displayName="Link";var zr=c.forwardRef(function({"aria-current":t="page",caseSensitive:n=!1,className:r="",end:a=!1,style:i,to:s,viewTransition:f,children:l,...o},d){let h=ne(s,{relative:o.relative}),m=F(),R=c.useContext(fe),{navigator:E,basename:v}=c.useContext(I),g=R!=null&&en(h)&&f===!0,y=E.encodeLocation?E.encodeLocation(h).pathname:h.pathname,_=m.pathname,P=R&&R.navigation&&R.navigation.location?R.navigation.location.pathname:null;n||(_=_.toLowerCase(),P=P?P.toLowerCase():null,y=y.toLowerCase()),P&&v&&(P=q(P,v)||P);const $=y!=="/"&&y.endsWith("/")?y.length-1:y.length;let k=_===y||!a&&_.startsWith(y)&&_.charAt($)==="/",D=P!=null&&(P===y||!a&&P.startsWith(y)&&P.charAt(y.length)==="/"),x={isActive:k,isPending:D,isTransitioning:g},W=k?t:void 0,Y;typeof r=="function"?Y=r(x):Y=[r,k?"active":null,D?"pending":null,g?"transitioning":null].filter(Boolean).join(" ");let X=typeof i=="function"?i(x):i;return c.createElement(ct,{...o,"aria-current":W,className:Y,ref:d,style:X,to:s,viewTransition:f},typeof l=="function"?l(x):l)});zr.displayName="NavLink";var Kr=c.forwardRef(({discover:e="render",fetcherKey:t,navigate:n,reloadDocument:r,replace:a,state:i,method:s=ie,action:f,onSubmit:l,relative:o,preventScrollReset:d,viewTransition:h,defaultShouldRevalidate:m,...R},E)=>{let{useTransitions:v}=c.useContext(I),g=Qr(),y=Zr(f,{relative:o}),_=s.toLowerCase()==="get"?"get":"post",P=typeof f=="string"&&Ce.test(f),$=k=>{if(l&&l(k),k.defaultPrevented)return;k.preventDefault();let D=k.nativeEvent.submitter,x=(D==null?void 0:D.getAttribute("formmethod"))||s,W=()=>g(D||k.currentTarget,{fetcherKey:t,method:x,navigate:n,replace:a,state:i,relative:o,preventScrollReset:d,viewTransition:h,defaultShouldRevalidate:m});v&&n!==!1?c.startTransition(()=>W()):W()};return c.createElement("form",{ref:E,method:_,action:y,onSubmit:r?l:$,...R,"data-discover":!P&&e==="render"?"true":void 0})});Kr.displayName="Form";function Gr(e){return`${e} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function ft(e){let t=c.useContext(V);return O(t,Gr(e)),t}function Vr(e,{target:t,replace:n,mask:r,state:a,preventScrollReset:i,relative:s,viewTransition:f,defaultShouldRevalidate:l,useTransitions:o}={}){let d=xe(),h=F(),m=ne(e,{relative:s});return c.useCallback(R=>{if(xr(R,t)){R.preventDefault();let E=n!==void 0?n:te(h)===te(m),v=()=>d(e,{replace:E,mask:r,state:a,preventScrollReset:i,relative:s,viewTransition:f,defaultShouldRevalidate:l});o?c.startTransition(()=>v()):v()}},[h,d,m,n,r,a,t,e,i,s,f,l,o])}function ln(e){M(typeof URLSearchParams<"u","You cannot use the `useSearchParams` hook in a browser that does not support the URLSearchParams API. If you need to support Internet Explorer 11, we recommend you load a polyfill such as https://github.com/ungap/url-search-params.");let t=c.useRef(Se(e)),n=c.useRef(!1),r=F(),a=c.useMemo(()=>br(r.search,n.current?null:t.current),[r.search]),i=xe(),s=c.useCallback((f,l)=>{const o=Se(typeof f=="function"?f(new URLSearchParams(a)):f);n.current=!0,i("?"+o,l)},[i,a]);return[a,s]}var Jr=0,Xr=()=>`__${String(++Jr)}__`;function Qr(){let{router:e}=ft("useSubmit"),{basename:t}=c.useContext(I),n=yr(),r=e.fetch,a=e.navigate;return c.useCallback(async(i,s={})=>{let{action:f,method:l,encType:o,formData:d,body:h}=Or(i,t);if(s.navigate===!1){let m=s.fetcherKey||Xr();await r(m,n,s.action||f,{defaultShouldRevalidate:s.defaultShouldRevalidate,preventScrollReset:s.preventScrollReset,formData:d,body:h,formMethod:s.method||l,formEncType:s.encType||o,flushSync:s.flushSync})}else await a(s.action||f,{defaultShouldRevalidate:s.defaultShouldRevalidate,preventScrollReset:s.preventScrollReset,formData:d,body:h,formMethod:s.method||l,formEncType:s.encType||o,replace:s.replace,state:s.state,fromRouteId:n,flushSync:s.flushSync,viewTransition:s.viewTransition})},[r,a,t,n])}function Zr(e,{relative:t}={}){let{basename:n}=c.useContext(I),r=c.useContext(H);O(r,"useFormAction must be used inside a RouteContext");let[a]=r.matches.slice(-1),i={...ne(e||".",{relative:t})},s=F();if(e==null){i.search=s.search;let f=new URLSearchParams(i.search),l=f.getAll("index");if(l.some(d=>d==="")){f.delete("index"),l.filter(h=>h).forEach(h=>f.append("index",h));let d=f.toString();i.search=d?`?${d}`:""}}return(!e||e===".")&&a.route.index&&(i.search=i.search?i.search.replace(/^\?/,"?index&"):"?index"),n!=="/"&&(i.pathname=i.pathname==="/"?n:U([n,i.pathname])),te(i)}function en(e,{relative:t}={}){let n=c.useContext(rt);O(n!=null,"`useViewTransitionState` must be used within `react-router-dom`'s `RouterProvider`. Did you accidentally import `RouterProvider` from `react-router`?");let{basename:r}=ft("useViewTransitionState"),a=ne(e,{relative:t});if(!n.isTransitioning)return!1;let i=q(n.currentLocation.pathname,r)||n.currentLocation.pathname,s=q(n.nextLocation.pathname,r)||n.nextLocation.pathname;return le(a.pathname,s)!=null||le(a.pathname,i)!=null}var sn=Et();export{un as B,ct as L,nn as N,an as O,on as R,vt as W,Et as a,c as b,sn as c,xe as d,Er as e,ln as f,yt as g,rn as h,tn as i,Ye as r,F as u};
@@ -0,0 +1 @@
1
+ import{W as u}from"./router.Cjj1--8t.js";const S=t=>{let e;const n=new Set,o=(s,r)=>{const c=typeof s=="function"?s(e):s;if(!Object.is(c,e)){const g=e;e=r??(typeof c!="object"||c===null)?c:Object.assign({},e,c),n.forEach(f=>f(e,g))}},a=()=>e,i={setState:o,getState:a,getInitialState:()=>l,subscribe:s=>(n.add(s),()=>n.delete(s))},l=e=t(o,a,i);return i},d=(t=>t?S(t):S),I=t=>t;function j(t,e=I){const n=u.useSyncExternalStore(t.subscribe,u.useCallback(()=>e(t.getState()),[t,e]),u.useCallback(()=>e(t.getInitialState()),[t,e]));return u.useDebugValue(n),n}const b=t=>{const e=d(t),n=o=>j(e,o);return Object.assign(n,e),n},O=(t=>t?b(t):b);export{O as c};
Binary file
Binary file
@@ -0,0 +1,4 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="192" height="192" viewBox="0 0 192 192">
2
+ <rect width="192" height="192" rx="24" fill="#0a0a0a"/>
3
+ <text x="96" y="120" font-family="Arial, sans-serif" font-size="80" font-weight="bold" fill="#ffffff" text-anchor="middle">9R</text>
4
+ </svg>
@@ -0,0 +1,4 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="512" height="512" viewBox="0 0 512 512">
2
+ <rect width="512" height="512" rx="64" fill="#0a0a0a"/>
3
+ <text x="256" y="320" font-family="Arial, sans-serif" font-size="200" font-weight="bold" fill="#ffffff" text-anchor="middle">9R</text>
4
+ </svg>