9router 0.2.89 → 0.2.90
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/app/.next/BUILD_ID +1 -1
- package/app/.next/app-path-routes-manifest.json +37 -37
- package/app/.next/build-manifest.json +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/_global-error.html +2 -2
- package/app/.next/server/app/_global-error.rsc +1 -1
- package/app/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/app/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/app/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
- package/app/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/app/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/_not-found.html +1 -1
- package/app/.next/server/app/_not-found.rsc +2 -2
- package/app/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
- package/app/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
- package/app/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/app/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/app/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/api/auth/login/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cli-tools/antigravity-mitm/alias/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cli-tools/antigravity-mitm/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cli-tools/claude-settings/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cli-tools/codex-settings/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cli-tools/droid-settings/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cli-tools/openclaw-settings/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cloud/auth/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cloud/credentials/update/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cloud/model/resolve/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cloud/models/alias/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/combos/[id]/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/combos/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/init/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/keys/[id]/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/keys/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/models/alias/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/models/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/oauth/[provider]/[action]/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/oauth/cursor/auto-import/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/oauth/cursor/import/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/oauth/kiro/auto-import/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/oauth/kiro/import/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/oauth/kiro/social-authorize/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/oauth/kiro/social-exchange/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/pricing/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/provider-nodes/[id]/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/provider-nodes/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/provider-nodes/validate/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/providers/[id]/models/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/providers/[id]/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/providers/[id]/test/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/providers/client/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/providers/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/providers/test-batch/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/providers/validate/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/settings/require-login/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/settings/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/shutdown/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/tags/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/translator/load/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/translator/save/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/translator/send/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/translator/translate/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/tunnel/disable/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/tunnel/enable/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/tunnel/status/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/usage/[connectionId]/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/usage/chart/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/usage/history/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/usage/providers/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/usage/request-details/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/usage/request-logs/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/usage/stream/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/api/chat/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/chat/completions/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/embeddings/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/messages/count_tokens/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/messages/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/models/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/responses/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1beta/models/[...path]/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1beta/models/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/callback/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/callback.html +1 -1
- package/app/.next/server/app/callback.rsc +2 -2
- package/app/.next/server/app/callback.segments/_full.segment.rsc +2 -2
- package/app/.next/server/app/callback.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/callback.segments/_index.segment.rsc +2 -2
- package/app/.next/server/app/callback.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/callback.segments/callback/__PAGE__.segment.rsc +1 -1
- package/app/.next/server/app/callback.segments/callback.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/cli-tools.html +1 -1
- package/app/.next/server/app/dashboard/cli-tools.rsc +4 -4
- package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/cli-tools.segments/_full.segment.rsc +4 -4
- package/app/.next/server/app/dashboard/cli-tools.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/cli-tools.segments/_index.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/combos.html +1 -1
- package/app/.next/server/app/dashboard/combos.rsc +4 -4
- package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/combos.segments/_full.segment.rsc +4 -4
- package/app/.next/server/app/dashboard/combos.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/combos.segments/_index.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/combos.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/endpoint.html +1 -1
- package/app/.next/server/app/dashboard/endpoint.rsc +4 -4
- package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/endpoint.segments/_full.segment.rsc +4 -4
- package/app/.next/server/app/dashboard/endpoint.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/endpoint.segments/_index.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/endpoint.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/profile.html +1 -1
- package/app/.next/server/app/dashboard/profile.rsc +4 -4
- package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/profile.segments/_full.segment.rsc +4 -4
- package/app/.next/server/app/dashboard/profile.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/profile.segments/_index.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/profile.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/providers/new.html +1 -1
- package/app/.next/server/app/dashboard/providers/new.rsc +4 -4
- package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/providers/new.segments/_full.segment.rsc +4 -4
- package/app/.next/server/app/dashboard/providers/new.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/providers/new.segments/_index.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/providers/new.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/providers.html +1 -1
- package/app/.next/server/app/dashboard/providers.rsc +4 -4
- package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/providers.segments/_full.segment.rsc +4 -4
- package/app/.next/server/app/dashboard/providers.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/providers.segments/_index.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/providers.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/dashboard/settings/pricing.html +1 -1
- package/app/.next/server/app/dashboard/settings/pricing.rsc +2 -2
- package/app/.next/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/settings/pricing.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/settings/pricing.segments/_index.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard/settings.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/translator.html +1 -1
- package/app/.next/server/app/dashboard/translator.rsc +4 -4
- package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/translator.segments/_full.segment.rsc +4 -4
- package/app/.next/server/app/dashboard/translator.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/translator.segments/_index.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/translator.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/usage.html +1 -1
- package/app/.next/server/app/dashboard/usage.rsc +4 -4
- package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/usage.segments/_full.segment.rsc +4 -4
- package/app/.next/server/app/dashboard/usage.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard/usage.segments/_index.segment.rsc +2 -2
- package/app/.next/server/app/dashboard/usage.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/dashboard.html +1 -1
- package/app/.next/server/app/dashboard.rsc +4 -4
- package/app/.next/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard/__PAGE__.segment.rsc +2 -2
- package/app/.next/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
- package/app/.next/server/app/dashboard.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/app/.next/server/app/dashboard.segments/_full.segment.rsc +4 -4
- package/app/.next/server/app/dashboard.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/dashboard.segments/_index.segment.rsc +2 -2
- package/app/.next/server/app/dashboard.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/index.html +1 -1
- package/app/.next/server/app/index.rsc +2 -2
- package/app/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
- package/app/.next/server/app/index.segments/_full.segment.rsc +2 -2
- package/app/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/index.segments/_index.segment.rsc +2 -2
- package/app/.next/server/app/index.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/landing/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/landing.html +1 -1
- package/app/.next/server/app/landing.rsc +2 -2
- package/app/.next/server/app/landing.segments/_full.segment.rsc +2 -2
- package/app/.next/server/app/landing.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/landing.segments/_index.segment.rsc +2 -2
- package/app/.next/server/app/landing.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/landing.segments/landing/__PAGE__.segment.rsc +1 -1
- package/app/.next/server/app/landing.segments/landing.segment.rsc +1 -1
- package/app/.next/server/app/login/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/login.html +1 -1
- package/app/.next/server/app/login.rsc +3 -3
- package/app/.next/server/app/login.segments/_full.segment.rsc +3 -3
- package/app/.next/server/app/login.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/login.segments/_index.segment.rsc +2 -2
- package/app/.next/server/app/login.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
- package/app/.next/server/app/login.segments/login.segment.rsc +1 -1
- package/app/.next/server/app/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app-paths-manifest.json +37 -37
- package/app/.next/server/chunks/412.js +1 -1
- package/app/.next/server/chunks/6943.js +1 -1
- package/app/.next/server/chunks/8954.js +1 -1
- package/app/.next/server/chunks/9489.js +1 -1
- package/app/.next/server/pages/404.html +1 -1
- package/app/.next/server/pages/500.html +2 -2
- package/app/.next/server/server-reference-manifest.js +1 -1
- package/app/.next/server/server-reference-manifest.json +1 -1
- package/app/.next/static/chunks/5497-bcf7a079d4e9c4a5.js +7 -0
- package/app/.next/static/chunks/{8729-8e5ba4c38b294fe1.js → 8729-a2b22a201dd986cf.js} +1 -1
- package/app/.next/static/chunks/c6123951-7611e4563265b257.js +1 -0
- package/app/package.json +1 -1
- package/package.json +1 -1
- package/app/.next/static/chunks/5497-590ec825fbd92e55.js +0 -7
- package/app/.next/static/chunks/c6123951-59125299ca0d7b46.js +0 -1
- /package/app/.next/static/{0kBQAQeQcXjhcg1PkyrJY → 1U2f_RPUnC3Jq3sZbG62b}/_buildManifest.js +0 -0
- /package/app/.next/static/{0kBQAQeQcXjhcg1PkyrJY → 1U2f_RPUnC3Jq3sZbG62b}/_ssgManifest.js +0 -0
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[5497],{98:(e,t,s)=>{s.d(t,{default:()=>l});var r=s(95155),a=s(31474);function l({label:e,options:t=[],value:s,onChange:l,placeholder:n="Select an option",error:i,hint:o,disabled:d=!1,required:c=!1,className:m,selectClassName:x,...u}){return(0,r.jsxs)("div",{className:(0,a.cn)("flex flex-col gap-1.5",m),children:[e&&(0,r.jsxs)("label",{className:"text-sm font-medium text-text-main",children:[e,c&&(0,r.jsx)("span",{className:"text-red-500 ml-1",children:"*"})]}),(0,r.jsxs)("div",{className:"relative",children:[(0,r.jsxs)("select",{value:s,onChange:l,disabled:d,className:(0,a.cn)("w-full py-2 px-3 pr-10 text-sm text-text-main","bg-white dark:bg-white/5 border border-black/10 dark:border-white/10 rounded-md appearance-none","focus:ring-1 focus:ring-primary/30 focus:border-primary/50 focus:outline-none","transition-all disabled:opacity-50 disabled:cursor-not-allowed","text-[16px] sm:text-sm",i?"border-red-500 focus:border-red-500 focus:ring-red-500/20":"",x),...u,children:[(0,r.jsx)("option",{value:"",disabled:!0,children:n}),t.map(e=>(0,r.jsx)("option",{value:e.value,children:e.label},e.value))]}),(0,r.jsx)("div",{className:"absolute inset-y-0 right-0 flex items-center pr-3 pointer-events-none text-text-muted",children:(0,r.jsx)("span",{className:"material-symbols-outlined text-[20px]",children:"expand_more"})})]}),i&&(0,r.jsxs)("p",{className:"text-xs text-red-500 flex items-center gap-1",children:[(0,r.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"error"}),i]}),o&&!i&&(0,r.jsx)("p",{className:"text-xs text-text-muted",children:o})]})}},1620:(e,t,s)=>{s.d(t,{D:()=>o});var r=s(12115),a=s(90085);function l(e){let t=window.matchMedia("(prefers-color-scheme: dark)");return t.addEventListener("change",e),()=>t.removeEventListener("change",e)}function n(){return window.matchMedia("(prefers-color-scheme: dark)").matches}function i(){return!1}function o(){let{theme:e,setTheme:t,toggleTheme:s,initTheme:o}=(0,a.A)(),d=(0,r.useSyncExternalStore)(l,n,i);(0,r.useEffect)(()=>{o()},[o]),(0,r.useEffect)(()=>{if("system"!==e)return;let t=window.matchMedia("(prefers-color-scheme: dark)"),s=()=>o();return t.addEventListener("change",s),()=>t.removeEventListener("change",s)},[e,o]);let c="dark"===e||"system"===e&&d;return{theme:e,setTheme:t,toggleTheme:s,isDark:c}}},4809:(e,t,s)=>{s.d(t,{default:()=>B});var r=s(95155),a=s(12115),l=s(73321),n=s(25086),i=s(56061),o=s(84588),d=s(14051),c=s.n(d);let m=e=>new Intl.NumberFormat().format(e||0);function x({stats:e}){let t;return(0,r.jsxs)("div",{className:"grid grid-cols-2 md:grid-cols-4 gap-4",children:[(0,r.jsxs)(o.default,{className:"px-4 py-3 flex flex-col gap-1",children:[(0,r.jsx)("span",{className:"text-text-muted text-sm uppercase font-semibold",children:"Total Requests"}),(0,r.jsx)("span",{className:"text-2xl font-bold",children:m(e.totalRequests)})]}),(0,r.jsxs)(o.default,{className:"px-4 py-3 flex flex-col gap-1",children:[(0,r.jsx)("span",{className:"text-text-muted text-sm uppercase font-semibold",children:"Total Input Tokens"}),(0,r.jsx)("span",{className:"text-2xl font-bold text-primary",children:m(e.totalPromptTokens)})]}),(0,r.jsxs)(o.default,{className:"px-4 py-3 flex flex-col gap-1",children:[(0,r.jsx)("span",{className:"text-text-muted text-sm uppercase font-semibold",children:"Output Tokens"}),(0,r.jsx)("span",{className:"text-2xl font-bold text-success",children:m(e.totalCompletionTokens)})]}),(0,r.jsxs)(o.default,{className:"px-4 py-3 flex flex-col gap-1",children:[(0,r.jsx)("span",{className:"text-text-muted text-sm uppercase font-semibold",children:"Total Cost"}),(0,r.jsx)("span",{className:"text-2xl font-bold text-warning",children:(t=e.totalCost,`$${(t||0).toFixed(2)}`)})]})]})}x.propTypes={stats:c().object.isRequired};let u=e=>new Intl.NumberFormat().format(e||0),h=e=>`$${(e||0).toFixed(2)}`;function p(e){if(!e)return"Never";let t=Math.floor((Date.now()-new Date(e))/6e4);return t<1?"Just now":t<60?`${t}m ago`:t<1440?`${Math.floor(t/60)}h ago`:new Date(e).toLocaleDateString()}function b({field:e,currentSort:t,currentOrder:s}){return t!==e?(0,r.jsx)("span",{className:"ml-1 opacity-20",children:"↕"}):(0,r.jsx)("span",{className:"ml-1",children:"asc"===s?"↑":"↓"})}function f({item:e,viewMode:t,isSummary:s=!1}){return"tokens"===t?(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("td",{className:"px-6 py-3 text-right text-text-muted",children:s&&void 0===e.promptTokens?"—":u(e.promptTokens)}),(0,r.jsx)("td",{className:"px-6 py-3 text-right text-text-muted",children:s&&void 0===e.completionTokens?"—":u(e.completionTokens)}),(0,r.jsx)("td",{className:"px-6 py-3 text-right font-medium",children:u(e.totalTokens)})]}):(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("td",{className:"px-6 py-3 text-right text-text-muted",children:s&&void 0===e.inputCost?"—":h(e.inputCost)}),(0,r.jsx)("td",{className:"px-6 py-3 text-right text-text-muted",children:s&&void 0===e.outputCost?"—":h(e.outputCost)}),(0,r.jsx)("td",{className:"px-6 py-3 text-right font-medium text-warning",children:h(e.totalCost||e.cost)})]})}function g({title:e,columns:t,groupedData:s,tableType:l,sortBy:n,sortOrder:i,onToggleSort:d,viewMode:c,storageKey:m,renderDetailCells:x,renderSummaryCells:u,emptyMessage:h}){let[p,g]=(0,a.useState)(new Set);(0,a.useEffect)(()=>{try{let e=localStorage.getItem(m);e&&g(new Set(JSON.parse(e)))}catch(e){console.error(`Failed to load ${m}:`,e)}},[m]),(0,a.useEffect)(()=>{try{localStorage.setItem(m,JSON.stringify([...p]))}catch(e){console.error(`Failed to save ${m}:`,e)}},[p,m]);let j=(0,a.useCallback)(e=>{g(t=>{let s=new Set(t);return s.has(e)?s.delete(e):s.add(e),s})},[]),y=(0,a.useMemo)(()=>"tokens"===c?[{field:"promptTokens",label:"Input Tokens"},{field:"completionTokens",label:"Output Tokens"},{field:"totalTokens",label:"Total Tokens"}]:[{field:"promptTokens",label:"Input Cost"},{field:"completionTokens",label:"Output Cost"},{field:"cost",label:"Total Cost"}],[c]),v=t.length+y.length;return(0,r.jsxs)(o.default,{className:"overflow-hidden",children:[(0,r.jsx)("div",{className:"p-4 border-b border-border bg-bg-subtle/50",children:(0,r.jsx)("h3",{className:"font-semibold",children:e})}),(0,r.jsx)("div",{className:"overflow-x-auto",children:(0,r.jsxs)("table",{className:"w-full text-sm text-left",children:[(0,r.jsx)("thead",{className:"bg-bg-subtle/30 text-text-muted uppercase text-xs",children:(0,r.jsxs)("tr",{children:[t.map(e=>(0,r.jsxs)("th",{className:`px-6 py-3 cursor-pointer hover:bg-bg-subtle/50 ${"right"===e.align?"text-right":""}`,onClick:()=>d(l,e.field),children:[e.label," ",(0,r.jsx)(b,{field:e.field,currentSort:n,currentOrder:i})]},e.field)),y.map(e=>(0,r.jsxs)("th",{className:"px-6 py-3 text-right cursor-pointer hover:bg-bg-subtle/50",onClick:()=>d(l,e.field),children:[e.label," ",(0,r.jsx)(b,{field:e.field,currentSort:n,currentOrder:i})]},e.field))]})}),(0,r.jsxs)("tbody",{className:"divide-y divide-border",children:[s.map(e=>(0,r.jsxs)(a.Fragment,{children:[(0,r.jsxs)("tr",{className:"group-summary cursor-pointer hover:bg-bg-subtle/50 transition-colors",onClick:()=>j(e.groupKey),children:[(0,r.jsx)("td",{className:"px-6 py-3",children:(0,r.jsxs)("div",{className:"flex items-center gap-2",children:[(0,r.jsx)("span",{className:`material-symbols-outlined text-[18px] text-text-muted transition-transform ${p.has(e.groupKey)?"rotate-90":""}`,children:"chevron_right"}),(0,r.jsx)("span",{className:`font-medium transition-colors ${e.summary.pending>0?"text-primary":""}`,children:e.groupKey})]})}),u(e),(0,r.jsx)(f,{item:e.summary,viewMode:c,isSummary:!0})]}),p.has(e.groupKey)&&e.items.map(e=>(0,r.jsxs)("tr",{className:"group-detail hover:bg-bg-subtle/20 transition-colors",children:[x(e),(0,r.jsx)(f,{item:e,viewMode:c})]},`detail-${e.key}`))]},e.groupKey)),0===s.length&&(0,r.jsx)("tr",{children:(0,r.jsx)("td",{colSpan:v,className:"px-6 py-8 text-center text-text-muted",children:h})})]})]})})]})}b.propTypes={field:c().string.isRequired,currentSort:c().string.isRequired,currentOrder:c().string.isRequired},f.propTypes={item:c().object.isRequired,viewMode:c().string.isRequired,isSummary:c().bool},g.propTypes={title:c().string.isRequired,columns:c().arrayOf(c().shape({field:c().string.isRequired,label:c().string.isRequired,align:c().string})).isRequired,groupedData:c().array.isRequired,tableType:c().string.isRequired,sortBy:c().string.isRequired,sortOrder:c().string.isRequired,onToggleSort:c().func.isRequired,viewMode:c().string.isRequired,storageKey:c().string.isRequired,renderDetailCells:c().func.isRequired,renderSummaryCells:c().func.isRequired,emptyMessage:c().string.isRequired};var j=s(62882),y=s(84867);s(30315);var v=s(52679);function N({data:e}){let{label:t,color:s,imageUrl:l,textIcon:n,active:i}=e,[o,d]=(0,a.useState)(!1);return(0,r.jsxs)("div",{className:"flex items-center gap-2.5 px-4 py-2.5 rounded-lg border-2 transition-all duration-300 bg-bg",style:{borderColor:i?s:"var(--color-border)",boxShadow:i?`0 0 16px ${s}40`:"none",minWidth:"150px"},children:[(0,r.jsx)(j.h7,{type:"target",position:y.yX.Top,id:"top",className:"!bg-transparent !border-0 !w-0 !h-0"}),(0,r.jsx)(j.h7,{type:"target",position:y.yX.Bottom,id:"bottom",className:"!bg-transparent !border-0 !w-0 !h-0"}),(0,r.jsx)(j.h7,{type:"target",position:y.yX.Left,id:"left",className:"!bg-transparent !border-0 !w-0 !h-0"}),(0,r.jsx)(j.h7,{type:"target",position:y.yX.Right,id:"right",className:"!bg-transparent !border-0 !w-0 !h-0"}),(0,r.jsx)("div",{className:"w-8 h-8 rounded-md flex items-center justify-center shrink-0",style:{backgroundColor:`${s}15`},children:o?(0,r.jsx)("span",{className:"text-sm font-bold",style:{color:s},children:n}):(0,r.jsx)("img",{src:l,alt:t,className:"w-6 h-6 rounded-sm object-contain",onError:()=>d(!0)})}),(0,r.jsx)("span",{className:"text-base font-medium truncate",style:{color:i?s:"var(--color-text)"},children:t}),i&&(0,r.jsxs)("span",{className:"relative flex h-2 w-2 shrink-0",children:[(0,r.jsx)("span",{className:"animate-ping absolute inline-flex h-full w-full rounded-full opacity-75",style:{backgroundColor:s}}),(0,r.jsx)("span",{className:"relative inline-flex rounded-full h-2 w-2",style:{backgroundColor:s}})]})]})}function w({data:e}){return(0,r.jsxs)("div",{className:"flex items-center justify-center px-5 py-3 rounded-xl border-2 border-primary bg-primary/5 shadow-md min-w-[130px]",children:[(0,r.jsx)(j.h7,{type:"source",position:y.yX.Top,id:"top",className:"!bg-transparent !border-0 !w-0 !h-0"}),(0,r.jsx)(j.h7,{type:"source",position:y.yX.Bottom,id:"bottom",className:"!bg-transparent !border-0 !w-0 !h-0"}),(0,r.jsx)(j.h7,{type:"source",position:y.yX.Left,id:"left",className:"!bg-transparent !border-0 !w-0 !h-0"}),(0,r.jsx)(j.h7,{type:"source",position:y.yX.Right,id:"right",className:"!bg-transparent !border-0 !w-0 !h-0"}),(0,r.jsx)("img",{src:"/favicon.svg",alt:"9Router",className:"w-6 h-6 mr-2"}),(0,r.jsx)("span",{className:"text-sm font-bold text-primary",children:"9Router"}),e.activeCount>0&&(0,r.jsx)("span",{className:"ml-2 px-1.5 py-0.5 rounded-full bg-primary text-white text-xs font-bold",children:e.activeCount})]})}N.propTypes={data:c().object.isRequired},w.propTypes={data:c().object.isRequired};let k={provider:N,router:w};function C({providers:e=[],activeRequests:t=[],lastProvider:s="",errorProvider:l=""}){let n=(0,a.useMemo)(()=>new Set(t.map(e=>e.provider?.toLowerCase()).filter(Boolean)),[t]),i=(0,a.useMemo)(()=>new Set(s?[s.toLowerCase()]:[]),[s]),o=(0,a.useMemo)(()=>new Set(l?[l.toLowerCase()]:[]),[l]),{nodes:d,edges:c}=(0,a.useMemo)(()=>(function(e,t,s,r){let a=e.length,l=Math.max(320,204*a/(2*Math.PI)),n=Math.max(200,.55*l);if(0===a)return{nodes:[{id:"router",type:"router",position:{x:0,y:0},data:{activeCount:0},draggable:!1}],edges:[]};let i=[],o=[];return i.push({id:"router",type:"router",position:{x:-60,y:-22},data:{activeCount:t.size},draggable:!1}),e.forEach((e,d)=>{var c,m;let x,u,h=(c=e.provider,v.Q2[c]||{color:"#6b7280",name:c}),p=t.has(e.provider?.toLowerCase()),b=!p&&s.has(e.provider?.toLowerCase()),f=!p&&r.has(e.provider?.toLowerCase()),g=`provider-${e.provider}`,j={label:h.name||e.name||e.provider,color:h.color||"#6b7280",imageUrl:(m=e.provider,`/providers/${m}.png`),textIcon:h.textIcon||(e.provider||"?").slice(0,2).toUpperCase(),active:p},y=-Math.PI/2+2*Math.PI*d/a,N=l*Math.cos(y),w=n*Math.sin(y);Math.abs(y+Math.PI/2)<Math.PI/4||Math.abs(y-3*Math.PI/2)<Math.PI/4?(x="top",u="bottom"):Math.abs(y-Math.PI/2)<Math.PI/4?(x="bottom",u="top"):N>0?(x="right",u="left"):(x="left",u="right"),i.push({id:g,type:"provider",position:{x:N-90,y:w-15},data:j,draggable:!1}),o.push({id:`e-${g}`,source:"router",sourceHandle:x,target:g,targetHandle:u,animated:p,style:(h.color,f?{stroke:"#ef4444",strokeWidth:2.5,opacity:.9}:p?{stroke:"#22c55e",strokeWidth:2.5,opacity:.9}:b?{stroke:"#f59e0b",strokeWidth:2,opacity:.7}:{stroke:"var(--color-border)",strokeWidth:1,opacity:.3})})}),{nodes:i,edges:o}})(e,n,i,o),[e,n,i,o]);return(0,r.jsx)("div",{className:"w-full rounded-lg border border-border bg-bg-subtle/30",style:{height:480},children:0===e.length?(0,r.jsx)("div",{className:"h-full flex items-center justify-center text-text-muted text-sm",children:"No providers connected"}):(0,r.jsx)(j.Gc,{nodes:d,edges:c,nodeTypes:k,fitView:!0,fitViewOptions:{padding:.3},onInit:e=>setTimeout(()=>e.fitView({padding:.3}),50),proOptions:{hideAttribution:!0},panOnDrag:!1,zoomOnScroll:!1,zoomOnPinch:!1,zoomOnDoubleClick:!1,preventScrolling:!1,nodesDraggable:!1,nodesConnectable:!1,elementsSelectable:!1})})}C.propTypes={providers:c().arrayOf(c().shape({id:c().string,provider:c().string,name:c().string})),activeRequests:c().arrayOf(c().shape({provider:c().string,model:c().string,account:c().string})),lastProvider:c().string,errorProvider:c().string};var S=s(52297),T=s(81989),R=s(9684),M=s(6255),$=s(53020),I=s(40730),L=s(54058);let E=[{value:"24h",label:"24h"},{value:"7d",label:"7D"},{value:"30d",label:"30D"},{value:"60d",label:"60D"}],O=e=>e>=1e6?`${(e/1e6).toFixed(1)}M`:e>=1e3?`${(e/1e3).toFixed(1)}K`:String(e||0),z=e=>`$${(e||0).toFixed(4)}`;function q(){let[e,t]=(0,a.useState)("7d"),[s,l]=(0,a.useState)([]),[n,i]=(0,a.useState)(!0),[d,c]=(0,a.useState)("tokens"),m=(0,a.useCallback)(async()=>{i(!0);try{let t=await fetch(`/api/usage/chart?period=${e}`);if(t.ok){let e=await t.json();l(e)}}catch(e){console.error("Failed to fetch chart data:",e)}finally{i(!1)}},[e]);(0,a.useEffect)(()=>{m()},[m]);let x=s.some(e=>e.tokens>0||e.cost>0);return(0,r.jsxs)(o.default,{className:"p-4 flex flex-col gap-3",children:[(0,r.jsxs)("div",{className:"flex items-center justify-between flex-wrap gap-2",children:[(0,r.jsxs)("div",{className:"flex items-center gap-1 bg-bg-subtle rounded-lg p-1 border border-border",children:[(0,r.jsx)("button",{onClick:()=>c("tokens"),className:`px-3 py-1 rounded-md text-sm font-medium transition-colors ${"tokens"===d?"bg-primary text-white shadow-sm":"text-text-muted hover:text-text hover:bg-bg-hover"}`,children:"Tokens"}),(0,r.jsx)("button",{onClick:()=>c("cost"),className:`px-3 py-1 rounded-md text-sm font-medium transition-colors ${"cost"===d?"bg-primary text-white shadow-sm":"text-text-muted hover:text-text hover:bg-bg-hover"}`,children:"Cost"})]}),(0,r.jsx)("div",{className:"flex items-center gap-1 bg-bg-subtle rounded-lg p-1 border border-border",children:E.map(s=>(0,r.jsx)("button",{onClick:()=>t(s.value),className:`px-3 py-1 rounded-md text-sm font-medium transition-colors ${e===s.value?"bg-primary text-white shadow-sm":"text-text-muted hover:text-text hover:bg-bg-hover"}`,children:s.label},s.value))})]}),n?(0,r.jsx)("div",{className:"h-48 flex items-center justify-center text-text-muted text-sm",children:"Loading..."}):x?(0,r.jsx)(S.u,{width:"100%",height:200,children:(0,r.jsxs)(T.Q,{data:s,margin:{top:4,right:8,left:0,bottom:0},children:[(0,r.jsxs)("defs",{children:[(0,r.jsxs)("linearGradient",{id:"gradTokens",x1:"0",y1:"0",x2:"0",y2:"1",children:[(0,r.jsx)("stop",{offset:"5%",stopColor:"#6366f1",stopOpacity:.25}),(0,r.jsx)("stop",{offset:"95%",stopColor:"#6366f1",stopOpacity:0})]}),(0,r.jsxs)("linearGradient",{id:"gradCost",x1:"0",y1:"0",x2:"0",y2:"1",children:[(0,r.jsx)("stop",{offset:"5%",stopColor:"#f59e0b",stopOpacity:.25}),(0,r.jsx)("stop",{offset:"95%",stopColor:"#f59e0b",stopOpacity:0})]})]}),(0,r.jsx)(R.d,{strokeDasharray:"3 3",strokeOpacity:.1}),(0,r.jsx)(M.W,{dataKey:"label",tick:{fontSize:10,fill:"currentColor",fillOpacity:.5},tickLine:!1,axisLine:!1,interval:"preserveStartEnd"}),(0,r.jsx)($.h,{tick:{fontSize:10,fill:"currentColor",fillOpacity:.5},tickLine:!1,axisLine:!1,tickFormatter:"tokens"===d?O:z,width:50}),(0,r.jsx)(I.m,{contentStyle:{backgroundColor:"var(--color-bg)",border:"1px solid var(--color-border)",borderRadius:"8px",fontSize:"12px"},formatter:(e,t)=>"tokens"===t?[O(e),"Tokens"]:[z(e),"Cost"]}),"tokens"===d?(0,r.jsx)(L.Gk,{type:"monotone",dataKey:"tokens",stroke:"#6366f1",strokeWidth:2,fill:"url(#gradTokens)",dot:!1,activeDot:{r:4}}):(0,r.jsx)(L.Gk,{type:"monotone",dataKey:"cost",stroke:"#f59e0b",strokeWidth:2,fill:"url(#gradCost)",dot:!1,activeDot:{r:4}})]})}):(0,r.jsx)("div",{className:"h-48 flex items-center justify-center text-text-muted text-sm",children:"No data for this period"})]})}function U({requests:e=[]}){return(0,r.jsxs)(o.default,{className:"flex flex-col overflow-hidden",padding:"sm",style:{height:480},children:[(0,r.jsx)("div",{className:"px-1 py-2 border-b border-border shrink-0",children:(0,r.jsx)("span",{className:"text-xs font-semibold text-text-muted uppercase tracking-wide",children:"Recent Requests"})}),e.length?(0,r.jsx)("div",{className:"flex-1 overflow-y-auto",children:(0,r.jsxs)("table",{className:"w-full text-xs border-collapse",children:[(0,r.jsx)("thead",{className:"sticky top-0 bg-bg z-10",children:(0,r.jsxs)("tr",{className:"border-b border-border",children:[(0,r.jsx)("th",{className:"py-1.5 text-left font-semibold text-text-muted w-2"}),(0,r.jsx)("th",{className:"py-1.5 text-left font-semibold text-text-muted",children:"Model"}),(0,r.jsx)("th",{className:"py-1.5 text-right font-semibold text-text-muted whitespace-nowrap",children:"In / Out"}),(0,r.jsx)("th",{className:"py-1.5 text-right font-semibold text-text-muted",children:"When"})]})}),(0,r.jsx)("tbody",{className:"divide-y divide-border/50",children:e.map((e,t)=>{var s;let a,l=!e.status||"ok"===e.status||"success"===e.status;return(0,r.jsxs)("tr",{className:"hover:bg-bg-subtle transition-colors",children:[(0,r.jsx)("td",{className:"py-1.5",children:(0,r.jsx)("span",{className:`block w-1.5 h-1.5 rounded-full ${l?"bg-success":"bg-error"}`})}),(0,r.jsx)("td",{className:"py-1.5 font-mono truncate max-w-[120px]",title:e.model,children:e.model}),(0,r.jsxs)("td",{className:"py-1.5 text-right whitespace-nowrap",children:[(0,r.jsxs)("span",{className:"text-primary",children:[u(e.promptTokens),"↑"]})," ",(0,r.jsxs)("span",{className:"text-success",children:[u(e.completionTokens),"↓"]})]}),(0,r.jsx)("td",{className:"py-1.5 text-right text-text-muted whitespace-nowrap",children:(s=e.timestamp,(a=Math.floor((Date.now()-new Date(s))/1e3))<60?`${a}s ago`:a<3600?`${Math.floor(a/60)}m ago`:a<86400?`${Math.floor(a/3600)}h ago`:`${Math.floor(a/86400)}d ago`)})]},t)})})]})}):(0,r.jsx)("div",{className:"flex-1 flex items-center justify-center text-text-muted text-sm",children:"No requests yet."})]})}function _(e,t={},s,r){return Object.entries(e||{}).map(([e,s])=>{let r=(s.promptTokens||0)+(s.completionTokens||0),a=s.cost||0,l=r>0?(s.promptTokens||0)*(a/r):0,n=r>0?(s.completionTokens||0)*(a/r):0;return{...s,key:e,totalTokens:r,totalCost:a,inputCost:l,outputCost:n,pending:t[e]||0}}).sort((e,t)=>{let a=e[s],l=t[s];return("string"==typeof a&&(a=a.toLowerCase()),"string"==typeof l&&(l=l.toLowerCase()),a<l)?"asc"===r?-1:1:a>l?"asc"===r?1:-1:0})}function P(e,t){if(!Array.isArray(e))return[];let s={};return e.forEach(e=>{let r=function(e,t){switch(t){case"rawModel":return e.rawModel||"Unknown Model";case"accountName":return e.accountName||`Account ${e.connectionId?.slice(0,8)}...`||"Unknown Account";case"keyName":return e.keyName||"Unknown Key";case"endpoint":return e.endpoint||"Unknown Endpoint";default:return e[t]||"Unknown"}}(e,t);s[r]||(s[r]={groupKey:r,summary:{requests:0,promptTokens:0,completionTokens:0,totalTokens:0,cost:0,inputCost:0,outputCost:0,lastUsed:null,pending:0},items:[]});let a=s[r].summary;a.requests+=e.requests||0,a.promptTokens+=e.promptTokens||0,a.completionTokens+=e.completionTokens||0,a.totalTokens+=e.totalTokens||0,a.cost+=e.cost||0,a.inputCost+=e.inputCost||0,a.outputCost+=e.outputCost||0,a.pending+=e.pending||0,e.lastUsed&&(!a.lastUsed||new Date(e.lastUsed)>new Date(a.lastUsed))&&(a.lastUsed=e.lastUsed),s[r].items.push(e)}),Object.values(s)}q.propTypes={};let F=[{field:"rawModel",label:"Model"},{field:"provider",label:"Provider"},{field:"requests",label:"Requests",align:"right"},{field:"lastUsed",label:"Last Used",align:"right"}],A=[{field:"rawModel",label:"Model"},{field:"provider",label:"Provider"},{field:"accountName",label:"Account"},{field:"requests",label:"Requests",align:"right"},{field:"lastUsed",label:"Last Used",align:"right"}],D=[{field:"keyName",label:"API Key Name"},{field:"rawModel",label:"Model"},{field:"provider",label:"Provider"},{field:"requests",label:"Requests",align:"right"},{field:"lastUsed",label:"Last Used",align:"right"}],W=[{field:"endpoint",label:"Endpoint"},{field:"rawModel",label:"Model"},{field:"provider",label:"Provider"},{field:"requests",label:"Requests",align:"right"},{field:"lastUsed",label:"Last Used",align:"right"}],K=[{value:"model",label:"Usage by Model"},{value:"account",label:"Usage by Account"},{value:"apiKey",label:"Usage by API Key"},{value:"endpoint",label:"Usage by Endpoint"}];function B(){let e=(0,l.useRouter)(),t=(0,l.useSearchParams)(),s=t.get("sortBy")||"rawModel",o=t.get("sortOrder")||"asc",[d,c]=(0,a.useState)(null),[m,h]=(0,a.useState)(!0),[b,f]=(0,a.useState)("model"),[j,y]=(0,a.useState)([]);(0,a.useEffect)(()=>{fetch("/api/providers").then(e=>e.ok?e.json():null).then(e=>{if(!e?.connections)return;let t=new Set;y(e.connections.filter(e=>!t.has(e.provider)&&(t.add(e.provider),!0)))}).catch(()=>{})},[]),(0,a.useEffect)(()=>{console.log("[SSE CLIENT] connecting...");let e=new EventSource("/api/usage/stream");return e.onopen=()=>console.log("[SSE CLIENT] connected ✓"),e.onmessage=e=>{try{let t=JSON.parse(e.data);console.log("[SSE CLIENT] message received | activeRequests:",t.activeRequests?.length||0,"| providers:",t.activeRequests?.map(e=>e.provider)),c(t),h(!1)}catch(e){console.error("[SSE CLIENT] parse error:",e)}},e.onerror=t=>{console.error("[SSE CLIENT] error | readyState:",e.readyState,t),h(!1)},()=>{console.log("[SSE CLIENT] closing"),e.close()}},[]);let v=(0,a.useCallback)((s,r)=>{let a=new URLSearchParams(t.toString());a.get("sortBy")===r?a.set("sortOrder","asc"===a.get("sortOrder")?"desc":"asc"):(a.set("sortBy",r),a.set("sortOrder","asc")),e.replace(`?${a.toString()}`,{scroll:!1})},[t,e]),N=(0,a.useMemo)(()=>{if(!d)return null;switch(b){case"model":{let e=d.pending?.byModel||{};return{columns:F,groupedData:P(_(d.byModel,e,s,o),"rawModel"),storageKey:"usage-stats:expanded-models",emptyMessage:"No usage recorded yet.",renderSummaryCells:e=>(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("td",{className:"px-6 py-3 text-text-muted",children:"—"}),(0,r.jsx)("td",{className:"px-6 py-3 text-right",children:u(e.summary.requests)}),(0,r.jsx)("td",{className:"px-6 py-3 text-right text-text-muted whitespace-nowrap",children:p(e.summary.lastUsed)})]}),renderDetailCells:e=>(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("td",{className:`px-6 py-3 font-medium transition-colors ${e.pending>0?"text-primary":""}`,children:e.rawModel}),(0,r.jsx)("td",{className:"px-6 py-3",children:(0,r.jsx)(i.default,{variant:e.pending>0?"primary":"neutral",size:"sm",children:e.provider})}),(0,r.jsx)("td",{className:"px-6 py-3 text-right",children:u(e.requests)}),(0,r.jsx)("td",{className:"px-6 py-3 text-right text-text-muted whitespace-nowrap",children:p(e.lastUsed)})]})}}case"account":{let e={};return d?.pending?.byAccount&&Object.entries(d.byAccount||{}).forEach(([t,s])=>{let r=d.pending.byAccount[s.connectionId];if(r){let a=s.provider?`${s.rawModel} (${s.provider})`:s.rawModel;e[t]=r[a]||0}}),{columns:A,groupedData:P(_(d.byAccount,e,s,o),"accountName"),storageKey:"usage-stats:expanded-accounts",emptyMessage:"No account-specific usage recorded yet.",renderSummaryCells:e=>(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("td",{className:"px-6 py-3 text-text-muted",children:"—"}),(0,r.jsx)("td",{className:"px-6 py-3 text-text-muted",children:"—"}),(0,r.jsx)("td",{className:"px-6 py-3 text-right",children:u(e.summary.requests)}),(0,r.jsx)("td",{className:"px-6 py-3 text-right text-text-muted whitespace-nowrap",children:p(e.summary.lastUsed)})]}),renderDetailCells:e=>(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("td",{className:`px-6 py-3 font-medium transition-colors ${e.pending>0?"text-primary":""}`,children:e.accountName||`Account ${e.connectionId?.slice(0,8)}...`}),(0,r.jsx)("td",{className:`px-6 py-3 font-medium transition-colors ${e.pending>0?"text-primary":""}`,children:e.rawModel}),(0,r.jsx)("td",{className:"px-6 py-3",children:(0,r.jsx)(i.default,{variant:e.pending>0?"primary":"neutral",size:"sm",children:e.provider})}),(0,r.jsx)("td",{className:"px-6 py-3 text-right",children:u(e.requests)}),(0,r.jsx)("td",{className:"px-6 py-3 text-right text-text-muted whitespace-nowrap",children:p(e.lastUsed)})]})}}case"apiKey":return{columns:D,groupedData:P(_(d.byApiKey,{},s,o),"keyName"),storageKey:"usage-stats:expanded-apikeys",emptyMessage:"No API key usage recorded yet.",renderSummaryCells:e=>(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("td",{className:"px-6 py-3 text-text-muted",children:"—"}),(0,r.jsx)("td",{className:"px-6 py-3 text-text-muted",children:"—"}),(0,r.jsx)("td",{className:"px-6 py-3 text-right",children:u(e.summary.requests)}),(0,r.jsx)("td",{className:"px-6 py-3 text-right text-text-muted whitespace-nowrap",children:p(e.summary.lastUsed)})]}),renderDetailCells:e=>(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("td",{className:"px-6 py-3 font-medium",children:e.keyName}),(0,r.jsx)("td",{className:"px-6 py-3",children:e.rawModel}),(0,r.jsx)("td",{className:"px-6 py-3",children:(0,r.jsx)(i.default,{variant:"neutral",size:"sm",children:e.provider})}),(0,r.jsx)("td",{className:"px-6 py-3 text-right",children:u(e.requests)}),(0,r.jsx)("td",{className:"px-6 py-3 text-right text-text-muted whitespace-nowrap",children:p(e.lastUsed)})]})};default:return{columns:W,groupedData:P(_(d.byEndpoint,{},s,o),"endpoint"),storageKey:"usage-stats:expanded-endpoints",emptyMessage:"No endpoint usage recorded yet.",renderSummaryCells:e=>(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("td",{className:"px-6 py-3 text-text-muted",children:"—"}),(0,r.jsx)("td",{className:"px-6 py-3 text-text-muted",children:"—"}),(0,r.jsx)("td",{className:"px-6 py-3 text-right",children:u(e.summary.requests)}),(0,r.jsx)("td",{className:"px-6 py-3 text-right text-text-muted whitespace-nowrap",children:p(e.summary.lastUsed)})]}),renderDetailCells:e=>(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("td",{className:"px-6 py-3 font-medium font-mono text-sm",children:e.endpoint}),(0,r.jsx)("td",{className:"px-6 py-3",children:e.rawModel}),(0,r.jsx)("td",{className:"px-6 py-3",children:(0,r.jsx)(i.default,{variant:"neutral",size:"sm",children:e.provider})}),(0,r.jsx)("td",{className:"px-6 py-3 text-right",children:u(e.requests)}),(0,r.jsx)("td",{className:"px-6 py-3 text-right text-text-muted whitespace-nowrap",children:p(e.lastUsed)})]})}}},[d,b,s,o]);return m?(0,r.jsx)(n.CardSkeleton,{}):d?(0,r.jsxs)("div",{className:"flex flex-col gap-6",children:[(0,r.jsx)(x,{stats:d}),(0,r.jsxs)("div",{className:"grid grid-cols-1 lg:grid-cols-[2fr_1fr] gap-2 items-stretch",children:[(0,r.jsx)(C,{providers:j,activeRequests:d.activeRequests||[],lastProvider:d.recentRequests?.[0]?.provider||"",errorProvider:d.errorProvider||""}),(0,r.jsx)(U,{requests:d.recentRequests||[]})]}),(0,r.jsx)(q,{}),(0,r.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,r.jsx)("div",{className:"flex items-center justify-between",children:(0,r.jsx)("select",{value:b,onChange:e=>f(e.target.value),className:"px-3 py-1.5 rounded-lg border border-border bg-bg-subtle text-sm font-medium text-text focus:outline-none focus:ring-2 focus:ring-primary/50",children:K.map(e=>(0,r.jsx)("option",{value:e.value,children:e.label},e.value))})}),N&&(0,r.jsx)(g,{title:"",columns:N.columns,groupedData:N.groupedData,tableType:b,sortBy:s,sortOrder:o,onToggleSort:v,storageKey:N.storageKey,renderSummaryCells:N.renderSummaryCells,renderDetailCells:N.renderDetailCells,emptyMessage:N.emptyMessage})]})]}):(0,r.jsx)("div",{className:"text-text-muted",children:"Failed to load usage statistics."})}},7648:(e,t,s)=>{s.d(t,{default:()=>i});var r=s(95155),a=s(12115),l=s(92622),n=s(74891);function i({children:e}){let[t,s]=(0,a.useState)(!1);return(0,r.jsxs)("div",{className:"flex h-screen w-full overflow-hidden bg-bg",children:[t&&(0,r.jsx)("div",{className:"fixed inset-0 z-40 bg-black/20 lg:hidden",onClick:()=>s(!1)}),(0,r.jsx)("div",{className:"hidden lg:flex",children:(0,r.jsx)(l.default,{})}),(0,r.jsx)("div",{className:`fixed inset-y-0 left-0 z-50 transform lg:hidden transition-transform duration-300 ease-in-out ${t?"translate-x-0":"-translate-x-full"}`,children:(0,r.jsx)(l.default,{onClose:()=>s(!1)})}),(0,r.jsxs)("main",{className:"flex flex-col flex-1 h-full min-w-0 relative transition-colors duration-300",children:[(0,r.jsx)(n.default,{onMenuClick:()=>s(!0)}),(0,r.jsx)("div",{className:"flex-1 overflow-y-auto custom-scrollbar p-6 lg:p-10",children:(0,r.jsx)("div",{className:"max-w-7xl mx-auto",children:e})})]})]})}},11059:(e,t,s)=>{s.d(t,{C:()=>a});var r=s(12115);function a(e=2e3){let[t,s]=(0,r.useState)(null),l=(0,r.useRef)(null);return{copied:t,copy:(0,r.useCallback)((t,r="default")=>{navigator.clipboard.writeText(t),s(r),l.current&&clearTimeout(l.current),l.current=setTimeout(()=>{s(null)},e)},[e])}}},11910:(e,t,s)=>{s.d(t,{default:()=>l});var r=s(95155),a=s(31474);function l({label:e,type:t="text",placeholder:s,value:l,onChange:n,error:i,hint:o,icon:d,disabled:c=!1,required:m=!1,className:x,inputClassName:u,...h}){return(0,r.jsxs)("div",{className:(0,a.cn)("flex flex-col gap-1.5",x),children:[e&&(0,r.jsxs)("label",{className:"text-sm font-medium text-text-main",children:[e,m&&(0,r.jsx)("span",{className:"text-red-500 ml-1",children:"*"})]}),(0,r.jsxs)("div",{className:"relative",children:[d&&(0,r.jsx)("div",{className:"absolute inset-y-0 left-0 flex items-center pl-3 pointer-events-none text-text-muted",children:(0,r.jsx)("span",{className:"material-symbols-outlined text-[20px]",children:d})}),(0,r.jsx)("input",{type:t,placeholder:s,value:l,onChange:n,disabled:c,className:(0,a.cn)("w-full py-2 px-3 text-sm text-text-main","bg-white dark:bg-white/5 border border-black/10 dark:border-white/10 rounded-md","placeholder-text-muted/60","focus:ring-1 focus:ring-primary/30 focus:border-primary/50 focus:outline-none","transition-all shadow-inner disabled:opacity-50 disabled:cursor-not-allowed","text-[16px] sm:text-sm",d&&"pl-10",i?"border-red-500 focus:border-red-500 focus:ring-red-500/20":"",u),...h})]}),i&&(0,r.jsxs)("p",{className:"text-xs text-red-500 flex items-center gap-1",children:[(0,r.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"error"}),i]}),o&&!i&&(0,r.jsx)("p",{className:"text-xs text-text-muted",children:o})]})}},23615:(e,t,s)=>{s.d(t,{default:()=>n});var r=s(95155),a=s(12115),l=s(84588);function n(){let[e,t]=(0,a.useState)([]),[s,n]=(0,a.useState)(!0),[i,o]=(0,a.useState)(!0);(0,a.useEffect)(()=>{d()},[]),(0,a.useEffect)(()=>{let e;return i&&(e=setInterval(()=>{d(!1)},3e3)),()=>clearInterval(e)},[i]);let d=async(e=!0)=>{e&&n(!0);try{let e=await fetch("/api/usage/request-logs");if(e.ok){let s=await e.json();t(s)}}catch(e){console.error("Failed to fetch logs:",e)}finally{e&&n(!1)}};return(0,r.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,r.jsxs)("div",{className:"flex items-center justify-between",children:[(0,r.jsx)("h2",{className:"text-xl font-semibold",children:"Request Logs"}),(0,r.jsx)("div",{className:"flex items-center gap-2",children:(0,r.jsxs)("label",{className:"text-sm font-medium text-text-muted flex items-center gap-2 cursor-pointer",children:[(0,r.jsx)("span",{children:"Auto Refresh (3s)"}),(0,r.jsx)("div",{onClick:()=>o(!i),className:`relative inline-flex h-5 w-9 items-center rounded-full transition-colors focus:outline-none ${i?"bg-primary":"bg-bg-subtle border border-border"}`,children:(0,r.jsx)("span",{className:`inline-block h-3 w-3 transform rounded-full bg-white transition-transform ${i?"translate-x-5":"translate-x-1"}`})})]})})]}),(0,r.jsx)(l.default,{className:"overflow-hidden bg-black/5 dark:bg-black/20",children:(0,r.jsx)("div",{className:"p-0 overflow-x-auto max-h-[600px] overflow-y-auto font-mono text-xs",children:s&&0===e.length?(0,r.jsx)("div",{className:"p-8 text-center text-text-muted",children:"Loading logs..."}):0===e.length?(0,r.jsx)("div",{className:"p-8 text-center text-text-muted",children:"No logs recorded yet."}):(0,r.jsxs)("table",{className:"w-full text-left border-collapse whitespace-nowrap",children:[(0,r.jsx)("thead",{className:"sticky top-0 bg-bg-subtle border-b border-border z-10",children:(0,r.jsxs)("tr",{children:[(0,r.jsx)("th",{className:"px-3 py-2 border-r border-border",children:"DateTime"}),(0,r.jsx)("th",{className:"px-3 py-2 border-r border-border",children:"Model"}),(0,r.jsx)("th",{className:"px-3 py-2 border-r border-border",children:"Provider"}),(0,r.jsx)("th",{className:"px-3 py-2 border-r border-border",children:"Account"}),(0,r.jsx)("th",{className:"px-3 py-2 border-r border-border",children:"In"}),(0,r.jsx)("th",{className:"px-3 py-2 border-r border-border",children:"Out"}),(0,r.jsx)("th",{className:"px-3 py-2",children:"Status"})]})}),(0,r.jsx)("tbody",{className:"divide-y divide-border/50",children:e.map((e,t)=>{let s=e.split(" | ");if(s.length<7)return null;let a=s[6],l=a.includes("PENDING"),n=a.includes("FAILED"),i=a.includes("OK");return(0,r.jsxs)("tr",{className:`hover:bg-primary/5 transition-colors ${l?"bg-primary/5":""}`,children:[(0,r.jsx)("td",{className:"px-3 py-1.5 border-r border-border text-text-muted",children:s[0]}),(0,r.jsx)("td",{className:"px-3 py-1.5 border-r border-border font-medium",children:s[1]}),(0,r.jsx)("td",{className:"px-3 py-1.5 border-r border-border",children:(0,r.jsx)("span",{className:"px-1.5 py-0.5 rounded bg-bg-subtle border border-border text-[10px] uppercase font-bold",children:s[2]})}),(0,r.jsx)("td",{className:"px-3 py-1.5 border-r border-border truncate max-w-[150px]",title:s[3],children:s[3]}),(0,r.jsx)("td",{className:"px-3 py-1.5 border-r border-border text-right text-primary",children:s[4]}),(0,r.jsx)("td",{className:"px-3 py-1.5 border-r border-border text-right text-success",children:s[5]}),(0,r.jsx)("td",{className:`px-3 py-1.5 font-bold ${i?"text-success":n?"text-error":"text-primary animate-pulse"}`,children:a})]},t)})})]})})}),(0,r.jsx)("div",{className:"text-[10px] text-text-muted italic",children:"Logs are saved to log.txt in the application data directory."})]})}},25086:(e,t,s)=>{s.d(t,{CardSkeleton:()=>o,PageLoading:()=>n,Skeleton:()=>i,Spinner:()=>l,default:()=>d});var r=s(95155),a=s(31474);function l({size:e="md",className:t}){return(0,r.jsx)("span",{className:(0,a.cn)("material-symbols-outlined animate-spin text-primary",{sm:"size-4",md:"size-6",lg:"size-8",xl:"size-12"}[e],t),children:"progress_activity"})}function n({message:e="Loading..."}){return(0,r.jsxs)("div",{className:"fixed inset-0 z-50 flex flex-col items-center justify-center bg-bg",children:[(0,r.jsx)(l,{size:"xl"}),(0,r.jsx)("p",{className:"mt-4 text-text-muted",children:e})]})}function i({className:e,...t}){return(0,r.jsx)("div",{className:(0,a.cn)("animate-pulse rounded-lg bg-border",e),...t})}function o(){return(0,r.jsxs)("div",{className:"p-6 rounded-xl border border-border bg-surface",children:[(0,r.jsxs)("div",{className:"flex items-center justify-between mb-4",children:[(0,r.jsx)(i,{className:"h-4 w-24"}),(0,r.jsx)(i,{className:"size-10 rounded-lg"})]}),(0,r.jsx)(i,{className:"h-8 w-16 mb-2"}),(0,r.jsx)(i,{className:"h-3 w-20"})]})}function d({type:e="spinner",...t}){switch(e){case"page":return(0,r.jsx)(n,{...t});case"skeleton":return(0,r.jsx)(i,{...t});case"card":return(0,r.jsx)(o,{...t});default:return(0,r.jsx)(l,{...t})}}},28067:(e,t,s)=>{s.d(t,{default:()=>l});var r=s(95155),a=s(31474);function l({options:e=[],value:t,onChange:s,size:l="md",className:n}){let i={sm:"h-7 text-xs",md:"h-9 text-sm",lg:"h-11 text-base"};return(0,r.jsx)("div",{className:(0,a.cn)("inline-flex items-center p-1 rounded-lg","bg-black/5 dark:bg-white/5",n),children:e.map(e=>(0,r.jsxs)("button",{onClick:()=>s(e.value),className:(0,a.cn)("px-4 rounded-md font-medium transition-all",i[l],t===e.value?"bg-white dark:bg-white/10 text-text-main shadow-sm":"text-text-muted hover:text-text-main"),children:[e.icon&&(0,r.jsx)("span",{className:"material-symbols-outlined text-[16px] mr-1.5",children:e.icon}),e.label]},e.value))})}},28815:(e,t,s)=>{s.d(t,{default:()=>i});var r=s(95155),a=s(12115),l=s(81127),n=s(92542);function i({isOpen:e,onClose:t,title:s="Manual Configuration",configs:i=[]}){let[o,d]=(0,a.useState)(null),c=async(e,t)=>{try{await navigator.clipboard.writeText(e),d(t),setTimeout(()=>d(null),2e3)}catch(e){console.log("Failed to copy:",e)}};return(0,r.jsx)(l.default,{isOpen:e,onClose:t,title:s,size:"xl",children:(0,r.jsx)("div",{className:"flex flex-col gap-4",children:i.map((e,t)=>(0,r.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,r.jsxs)("div",{className:"flex items-center justify-between",children:[(0,r.jsx)("span",{className:"text-sm font-medium text-text-main",children:e.filename}),(0,r.jsxs)(n.default,{variant:"ghost",size:"sm",onClick:()=>c(e.content,t),children:[(0,r.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:o===t?"check":"content_copy"}),o===t?"Copied!":"Copy"]})]}),(0,r.jsx)("pre",{className:"px-3 py-2 bg-black/5 dark:bg-white/5 rounded font-mono text-xs overflow-x-auto whitespace-pre-wrap break-all max-h-60 overflow-y-auto border border-border",children:e.content})]},t))})})}},30815:(e,t,s)=>{s.d(t,{default:()=>o});var r=s(95155),a=s(12115),l=s(14051),n=s.n(l),i=s(35497);function o({isOpen:e,onSuccess:t,onClose:s}){let[l,n]=(0,a.useState)(""),[o,d]=(0,a.useState)(""),[c,m]=(0,a.useState)(null),[x,u]=(0,a.useState)(!1),[h,p]=(0,a.useState)(!1),[b,f]=(0,a.useState)(!1);(0,a.useEffect)(()=>{e&&(async()=>{p(!0),m(null),f(!1);try{let e=await fetch("/api/oauth/cursor/auto-import"),t=await e.json();t.found?(n(t.accessToken),d(t.machineId),f(!0)):m(t.error||"Could not auto-detect tokens")}catch(e){m("Failed to auto-detect tokens")}finally{p(!1)}})()},[e]);let g=async()=>{if(!l.trim())return void m("Please enter an access token");if(!o.trim())return void m("Please enter a machine ID");u(!0),m(null);try{let e=await fetch("/api/oauth/cursor/import",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({accessToken:l.trim(),machineId:o.trim()})}),r=await e.json();if(!e.ok)throw Error(r.error||"Import failed");t?.(),s()}catch(e){m(e.message)}finally{u(!1)}};return(0,r.jsx)(i.aF,{isOpen:e,title:"Connect Cursor IDE",onClose:s,children:(0,r.jsxs)("div",{className:"flex flex-col gap-4",children:[h&&(0,r.jsxs)("div",{className:"text-center py-6",children:[(0,r.jsx)("div",{className:"size-16 mx-auto mb-4 rounded-full bg-primary/10 flex items-center justify-center",children:(0,r.jsx)("span",{className:"material-symbols-outlined text-3xl text-primary animate-spin",children:"progress_activity"})}),(0,r.jsx)("h3",{className:"text-lg font-semibold mb-2",children:"Auto-detecting tokens..."}),(0,r.jsx)("p",{className:"text-sm text-text-muted",children:"Reading from Cursor IDE database"})]}),!h&&(0,r.jsxs)(r.Fragment,{children:[b&&(0,r.jsx)("div",{className:"bg-green-50 dark:bg-green-900/20 p-3 rounded-lg border border-green-200 dark:border-green-800",children:(0,r.jsxs)("div",{className:"flex gap-2",children:[(0,r.jsx)("span",{className:"material-symbols-outlined text-green-600 dark:text-green-400",children:"check_circle"}),(0,r.jsx)("p",{className:"text-sm text-green-800 dark:text-green-200",children:"Tokens auto-detected from Cursor IDE successfully!"})]})}),!b&&!c&&(0,r.jsx)("div",{className:"bg-blue-50 dark:bg-blue-900/20 p-3 rounded-lg border border-blue-200 dark:border-blue-800",children:(0,r.jsxs)("div",{className:"flex gap-2",children:[(0,r.jsx)("span",{className:"material-symbols-outlined text-blue-600 dark:text-blue-400",children:"info"}),(0,r.jsx)("p",{className:"text-sm text-blue-800 dark:text-blue-200",children:"Cursor IDE not detected. Please paste your tokens manually."})]})}),(0,r.jsxs)("div",{children:[(0,r.jsxs)("label",{className:"block text-sm font-medium mb-2",children:["Access Token ",(0,r.jsx)("span",{className:"text-red-500",children:"*"})]}),(0,r.jsx)("textarea",{value:l,onChange:e=>n(e.target.value),placeholder:"Access token will be auto-filled...",rows:3,className:"w-full px-3 py-2 text-sm font-mono border border-border rounded-lg bg-background focus:outline-none focus:border-primary resize-none"})]}),(0,r.jsxs)("div",{children:[(0,r.jsxs)("label",{className:"block text-sm font-medium mb-2",children:["Machine ID ",(0,r.jsx)("span",{className:"text-red-500",children:"*"})]}),(0,r.jsx)(i.pd,{value:o,onChange:e=>d(e.target.value),placeholder:"Machine ID will be auto-filled...",className:"font-mono text-sm"})]}),c&&(0,r.jsx)("div",{className:"bg-red-50 dark:bg-red-900/20 p-3 rounded-lg border border-red-200 dark:border-red-800",children:(0,r.jsx)("p",{className:"text-sm text-red-600 dark:text-red-400",children:c})}),(0,r.jsxs)("div",{className:"flex gap-2",children:[(0,r.jsx)(i.$n,{onClick:g,fullWidth:!0,disabled:x||!l.trim()||!o.trim(),children:x?"Importing...":"Import Token"}),(0,r.jsx)(i.$n,{onClick:s,variant:"ghost",fullWidth:!0,children:"Cancel"})]})]})]})})}o.propTypes={isOpen:n().bool.isRequired,onSuccess:n().func,onClose:n().func.isRequired}},31474:(e,t,s)=>{s.d(t,{cn:()=>r});function r(...e){return e.filter(Boolean).join(" ").replace(/\s+/g," ").trim()}},35497:(e,t,s)=>{s.d(t,{Ex:()=>d.default,$n:()=>r.default,Zp:()=>n.default,Qv:()=>o.CardSkeleton,G9:()=>g.default,pd:()=>a.default,Mh:()=>f.default,uR:()=>h.default,aF:()=>i.default,rq:()=>u.default,LF:()=>x.default,gM:()=>b.default,Iz:()=>j.default,l6:()=>l.default,UW:()=>m.default,lM:()=>c.default,jK:()=>p.default});var r=s(92542),a=s(11910),l=s(98),n=s(84588),i=s(81127),o=s(25086);s(56319);var d=s(56061),c=s(98542),m=s(38587);s(21110),s(92622),s(74891),s(92173);var x=s(90882),u=s(72908),h=s(28815),p=s(4809),b=s(23615);s(61500);var f=s(62899);s(94230);var g=s(30815),j=s(28067);s(7648),s(91450)},38587:(e,t,s)=>{s.d(t,{default:()=>n});var r=s(95155),a=s(1620),l=s(31474);function n({className:e,variant:t="default"}){let{theme:s,toggleTheme:n,isDark:i}=(0,a.D)(),o={default:(0,l.cn)("flex items-center justify-center size-10 rounded-full","text-text-muted","hover:bg-black/5","hover:text-text-main","transition-colors"),card:(0,l.cn)("flex items-center justify-center size-11 rounded-full","bg-surface/60","hover:bg-surface","border border-border","backdrop-blur-md shadow-sm hover:shadow-md","text-text-muted-light hover:text-primary","hover:text-primary","transition-all group")};return(0,r.jsx)("button",{onClick:n,className:(0,l.cn)(o[t],e),"aria-label":`Switch to ${i?"light":"dark"} mode`,title:`Switch to ${i?"light":"dark"} mode`,children:(0,r.jsx)("span",{className:(0,l.cn)("material-symbols-outlined text-[22px]","card"===t&&"transition-transform duration-300 group-hover:rotate-12"),children:i?"light_mode":"dark_mode"})})}},56061:(e,t,s)=>{s.d(t,{default:()=>i});var r=s(95155),a=s(31474);let l={default:"bg-black/5 dark:bg-white/10 text-text-muted",primary:"bg-primary/10 text-primary",success:"bg-green-500/10 text-green-600 dark:text-green-400",warning:"bg-yellow-500/10 text-yellow-600 dark:text-yellow-400",error:"bg-red-500/10 text-red-600 dark:text-red-400",info:"bg-blue-500/10 text-blue-600 dark:text-blue-400"},n={sm:"px-2 py-0.5 text-[10px]",md:"px-2.5 py-1 text-xs",lg:"px-3 py-1.5 text-sm"};function i({children:e,variant:t="default",size:s="md",dot:i=!1,icon:o,className:d}){return(0,r.jsxs)("span",{className:(0,a.cn)("inline-flex items-center gap-1.5 rounded-full font-semibold",l[t],n[s],d),children:[i&&(0,r.jsx)("span",{className:(0,a.cn)("size-1.5 rounded-full","success"===t&&"bg-green-500","warning"===t&&"bg-yellow-500","error"===t&&"bg-red-500","info"===t&&"bg-blue-500","primary"===t&&"bg-primary","default"===t&&"bg-gray-500")}),o&&(0,r.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:o}),e]})}},56319:(e,t,s)=>{s.d(t,{default:()=>l});var r=s(95155),a=s(31474);function l({src:e,alt:t="Avatar",name:s,size:l="md",className:n}){let i={xs:"size-6 text-xs",sm:"size-8 text-sm",md:"size-10 text-base",lg:"size-12 text-lg",xl:"size-16 text-xl"};return e?(0,r.jsx)("div",{className:(0,a.cn)("rounded-full bg-cover bg-center bg-no-repeat","ring-2 ring-white dark:ring-surface-dark shadow-sm",i[l],n),style:{backgroundImage:`url(${e})`},role:"img","aria-label":t}):(0,r.jsx)("div",{className:(0,a.cn)("rounded-full flex items-center justify-center font-semibold text-white","ring-2 ring-white dark:ring-surface-dark shadow-sm",i[l],(e=>{if(!e)return"bg-primary";let t=["bg-red-500","bg-orange-500","bg-amber-500","bg-yellow-500","bg-lime-500","bg-green-500","bg-emerald-500","bg-teal-500","bg-cyan-500","bg-sky-500","bg-blue-500","bg-indigo-500","bg-violet-500","bg-purple-500","bg-fuchsia-500","bg-pink-500","bg-rose-500"],s=e.charCodeAt(0)%t.length;return t[s]})(s),n),role:"img","aria-label":t,children:(e=>{if(!e)return"?";let t=e.split(" ");return t.length>=2?`${t[0][0]}${t[1][0]}`.toUpperCase():e.substring(0,2).toUpperCase()})(s)})}},61500:(e,t,s)=>{s.d(t,{default:()=>o});var r=s(95155),a=s(12115),l=s(14051),n=s.n(l),i=s(35497);function o({isOpen:e,onMethodSelect:t,onClose:s}){let[l,n]=(0,a.useState)(null),[o,d]=(0,a.useState)(""),[c,m]=(0,a.useState)("us-east-1"),[x,u]=(0,a.useState)(""),[h,p]=(0,a.useState)(null),[b,f]=(0,a.useState)(!1),[g,j]=(0,a.useState)(!1),[y,v]=(0,a.useState)(!1);(0,a.useEffect)(()=>{"import"===l&&e&&(async()=>{j(!0),p(null),v(!1);try{let e=await fetch("/api/oauth/kiro/auto-import"),t=await e.json();t.found?(u(t.refreshToken),v(!0)):p(t.error||"Could not auto-detect token")}catch(e){p("Failed to auto-detect token")}finally{j(!1)}})()},[l,e]);let N=e=>{n(e),p(null)},w=()=>{n(null),p(null)},k=async()=>{if(!x.trim())return void p("Please enter a refresh token");f(!0),p(null);try{let e=await fetch("/api/oauth/kiro/import",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({refreshToken:x.trim()})}),t=await e.json();if(!e.ok)throw Error(t.error||"Import failed");s()}catch(e){p(e.message)}finally{f(!1)}},C=e=>{t("social",{provider:e})};return(0,r.jsx)(i.aF,{isOpen:e,title:"Connect Kiro",onClose:s,size:"lg",children:(0,r.jsxs)("div",{className:"flex flex-col gap-4",children:[!l&&(0,r.jsxs)("div",{className:"space-y-3",children:[(0,r.jsx)("p",{className:"text-sm text-text-muted mb-4",children:"Choose your authentication method:"}),(0,r.jsx)("button",{onClick:()=>t("builder-id"),className:"w-full p-4 text-left border border-border rounded-lg hover:bg-sidebar transition-colors",children:(0,r.jsxs)("div",{className:"flex items-start gap-3",children:[(0,r.jsx)("span",{className:"material-symbols-outlined text-primary mt-0.5",children:"shield"}),(0,r.jsxs)("div",{className:"flex-1",children:[(0,r.jsx)("h3",{className:"font-semibold mb-1",children:"AWS Builder ID"}),(0,r.jsx)("p",{className:"text-sm text-text-muted",children:"Recommended for most users. Free AWS account required."})]})]})}),(0,r.jsx)("button",{onClick:()=>N("idc"),className:"hidden w-full p-4 text-left border border-border rounded-lg hover:bg-sidebar transition-colors",children:(0,r.jsxs)("div",{className:"flex items-start gap-3",children:[(0,r.jsx)("span",{className:"material-symbols-outlined text-primary mt-0.5",children:"business"}),(0,r.jsxs)("div",{className:"flex-1",children:[(0,r.jsx)("h3",{className:"font-semibold mb-1",children:"AWS IAM Identity Center"}),(0,r.jsx)("p",{className:"text-sm text-text-muted",children:"For enterprise users with custom AWS IAM Identity Center."})]})]})}),(0,r.jsx)("button",{onClick:()=>N("social-google"),className:"hidden w-full p-4 text-left border border-border rounded-lg hover:bg-sidebar transition-colors",children:(0,r.jsxs)("div",{className:"flex items-start gap-3",children:[(0,r.jsx)("span",{className:"material-symbols-outlined text-primary mt-0.5",children:"account_circle"}),(0,r.jsxs)("div",{className:"flex-1",children:[(0,r.jsx)("h3",{className:"font-semibold mb-1",children:"Google Account"}),(0,r.jsx)("p",{className:"text-sm text-text-muted",children:"Login with your Google account (manual callback)."})]})]})}),(0,r.jsx)("button",{onClick:()=>N("social-github"),className:"hidden w-full p-4 text-left border border-border rounded-lg hover:bg-sidebar transition-colors",children:(0,r.jsxs)("div",{className:"flex items-start gap-3",children:[(0,r.jsx)("span",{className:"material-symbols-outlined text-primary mt-0.5",children:"code"}),(0,r.jsxs)("div",{className:"flex-1",children:[(0,r.jsx)("h3",{className:"font-semibold mb-1",children:"GitHub Account"}),(0,r.jsx)("p",{className:"text-sm text-text-muted",children:"Login with your GitHub account (manual callback)."})]})]})}),(0,r.jsx)("button",{onClick:()=>N("import"),className:"w-full p-4 text-left border border-border rounded-lg hover:bg-sidebar transition-colors",children:(0,r.jsxs)("div",{className:"flex items-start gap-3",children:[(0,r.jsx)("span",{className:"material-symbols-outlined text-primary mt-0.5",children:"file_upload"}),(0,r.jsxs)("div",{className:"flex-1",children:[(0,r.jsx)("h3",{className:"font-semibold mb-1",children:"Import Token"}),(0,r.jsx)("p",{className:"text-sm text-text-muted",children:"Paste refresh token from Kiro IDE."})]})]})})]}),"idc"===l&&(0,r.jsxs)("div",{className:"space-y-4",children:[(0,r.jsxs)("div",{children:[(0,r.jsxs)("label",{className:"block text-sm font-medium mb-2",children:["IDC Start URL ",(0,r.jsx)("span",{className:"text-red-500",children:"*"})]}),(0,r.jsx)(i.pd,{value:o,onChange:e=>d(e.target.value),placeholder:"https://your-org.awsapps.com/start",className:"font-mono text-sm"}),(0,r.jsx)("p",{className:"text-xs text-text-muted mt-1",children:"Your organization's AWS IAM Identity Center URL"})]}),(0,r.jsxs)("div",{children:[(0,r.jsx)("label",{className:"block text-sm font-medium mb-2",children:"AWS Region"}),(0,r.jsx)(i.pd,{value:c,onChange:e=>m(e.target.value),placeholder:"us-east-1",className:"font-mono text-sm"}),(0,r.jsx)("p",{className:"text-xs text-text-muted mt-1",children:"AWS region for your Identity Center (default: us-east-1)"})]}),h&&(0,r.jsx)("p",{className:"text-sm text-red-600",children:h}),(0,r.jsxs)("div",{className:"flex gap-2",children:[(0,r.jsx)(i.$n,{onClick:()=>{o.trim()?t("idc",{startUrl:o.trim(),region:c}):p("Please enter your IDC start URL")},fullWidth:!0,children:"Continue"}),(0,r.jsx)(i.$n,{onClick:w,variant:"ghost",fullWidth:!0,children:"Back"})]})]}),"social-google"===l&&(0,r.jsxs)("div",{className:"space-y-4",children:[(0,r.jsx)("div",{className:"bg-amber-50 dark:bg-amber-900/20 p-4 rounded-lg border border-amber-200 dark:border-amber-800",children:(0,r.jsxs)("div",{className:"flex gap-2",children:[(0,r.jsx)("span",{className:"material-symbols-outlined text-amber-600 dark:text-amber-400",children:"info"}),(0,r.jsxs)("div",{className:"flex-1 text-sm",children:[(0,r.jsx)("p",{className:"font-medium text-amber-900 dark:text-amber-100 mb-1",children:"Manual Callback Required"}),(0,r.jsx)("p",{className:"text-amber-800 dark:text-amber-200",children:"After login, you'll need to copy the callback URL from your browser and paste it back here."})]})]})}),(0,r.jsxs)("div",{className:"flex gap-2",children:[(0,r.jsx)(i.$n,{onClick:()=>C("google"),fullWidth:!0,children:"Continue with Google"}),(0,r.jsx)(i.$n,{onClick:w,variant:"ghost",fullWidth:!0,children:"Back"})]})]}),"social-github"===l&&(0,r.jsxs)("div",{className:"space-y-4",children:[(0,r.jsx)("div",{className:"bg-amber-50 dark:bg-amber-900/20 p-4 rounded-lg border border-amber-200 dark:border-amber-800",children:(0,r.jsxs)("div",{className:"flex gap-2",children:[(0,r.jsx)("span",{className:"material-symbols-outlined text-amber-600 dark:text-amber-400",children:"info"}),(0,r.jsxs)("div",{className:"flex-1 text-sm",children:[(0,r.jsx)("p",{className:"font-medium text-amber-900 dark:text-amber-100 mb-1",children:"Manual Callback Required"}),(0,r.jsx)("p",{className:"text-amber-800 dark:text-amber-200",children:"After login, you'll need to copy the callback URL from your browser and paste it back here."})]})]})}),(0,r.jsxs)("div",{className:"flex gap-2",children:[(0,r.jsx)(i.$n,{onClick:()=>C("github"),fullWidth:!0,children:"Continue with GitHub"}),(0,r.jsx)(i.$n,{onClick:w,variant:"ghost",fullWidth:!0,children:"Back"})]})]}),"import"===l&&(0,r.jsxs)("div",{className:"space-y-4",children:[g&&(0,r.jsxs)("div",{className:"text-center py-6",children:[(0,r.jsx)("div",{className:"size-16 mx-auto mb-4 rounded-full bg-primary/10 flex items-center justify-center",children:(0,r.jsx)("span",{className:"material-symbols-outlined text-3xl text-primary animate-spin",children:"progress_activity"})}),(0,r.jsx)("h3",{className:"text-lg font-semibold mb-2",children:"Auto-detecting token..."}),(0,r.jsx)("p",{className:"text-sm text-text-muted",children:"Reading from AWS SSO cache"})]}),!g&&(0,r.jsxs)(r.Fragment,{children:[y&&(0,r.jsx)("div",{className:"bg-green-50 dark:bg-green-900/20 p-3 rounded-lg border border-green-200 dark:border-green-800",children:(0,r.jsxs)("div",{className:"flex gap-2",children:[(0,r.jsx)("span",{className:"material-symbols-outlined text-green-600 dark:text-green-400",children:"check_circle"}),(0,r.jsx)("p",{className:"text-sm text-green-800 dark:text-green-200",children:"Token auto-detected from Kiro IDE successfully!"})]})}),!y&&!h&&(0,r.jsx)("div",{className:"bg-blue-50 dark:bg-blue-900/20 p-3 rounded-lg border border-blue-200 dark:border-blue-800",children:(0,r.jsxs)("div",{className:"flex gap-2",children:[(0,r.jsx)("span",{className:"material-symbols-outlined text-blue-600 dark:text-blue-400",children:"info"}),(0,r.jsx)("p",{className:"text-sm text-blue-800 dark:text-blue-200",children:"Kiro IDE not detected. Please paste your refresh token manually."})]})}),(0,r.jsxs)("div",{children:[(0,r.jsxs)("label",{className:"block text-sm font-medium mb-2",children:["Refresh Token ",(0,r.jsx)("span",{className:"text-red-500",children:"*"})]}),(0,r.jsx)(i.pd,{value:x,onChange:e=>u(e.target.value),placeholder:"Token will be auto-filled...",className:"font-mono text-sm"})]}),h&&(0,r.jsx)("div",{className:"bg-red-50 dark:bg-red-900/20 p-3 rounded-lg border border-red-200 dark:border-red-800",children:(0,r.jsx)("p",{className:"text-sm text-red-600 dark:text-red-400",children:h})}),(0,r.jsxs)("div",{className:"flex gap-2",children:[(0,r.jsx)(i.$n,{onClick:k,fullWidth:!0,disabled:b||!x.trim(),children:b?"Importing...":"Import Token"}),(0,r.jsx)(i.$n,{onClick:w,variant:"ghost",fullWidth:!0,children:"Back"})]})]})]})]})})}o.propTypes={isOpen:n().bool.isRequired,onMethodSelect:n().func.isRequired,onClose:n().func.isRequired}},62899:(e,t,s)=>{s.d(t,{default:()=>c});var r=s(95155),a=s(12115),l=s(14051),n=s.n(l),i=s(90882),o=s(61500),d=s(94230);function c({isOpen:e,providerInfo:t,onSuccess:s,onClose:l}){let[n,c]=(0,a.useState)(null),[m,x]=(0,a.useState)(null),[u,h]=(0,a.useState)(null),p=(0,a.useCallback)((e,t)=>{"builder-id"===e?c("builder-id"):"idc"===e?(c("idc"),h(t)):"social"===e?(c("social"),x(t.provider)):"import"===e&&s?.()},[s]),b=()=>{c(null),x(null),h(null)};return n?"builder-id"===n||"idc"===n?(0,r.jsx)(i.default,{isOpen:e,provider:"kiro",providerInfo:t,onSuccess:()=>{c(null),h(null),s?.()},onClose:b,idcConfig:u}):"social"===n&&m?(0,r.jsx)(d.default,{isOpen:e,provider:m,onSuccess:()=>{c(null),x(null),s?.()},onClose:b}):null:(0,r.jsx)(o.default,{isOpen:e,onMethodSelect:p,onClose:l})}c.propTypes={isOpen:n().bool.isRequired,providerInfo:n().shape({name:n().string}),onSuccess:n().func,onClose:n().func.isRequired}},72908:(e,t,s)=>{s.d(t,{default:()=>m});var r=s(95155),a=s(12115),l=s(14051),n=s.n(l),i=s(81127),o=s(28777),d=s(52679);let c=[...Object.keys(d.zN),...Object.keys(d.fg)];function m({isOpen:e,onClose:t,onSelect:s,selectedModel:l,activeProviders:n=[],title:m="Select Model",modelAliases:x={}}){let[u,h]=(0,a.useState)(""),[p,b]=(0,a.useState)([]),[f,g]=(0,a.useState)([]),j=async()=>{try{let e=await fetch("/api/combos");if(!e.ok)throw Error(`Failed to fetch combos: ${e.status}`);let t=await e.json();b(t.combos||[])}catch(e){console.error("Error fetching combos:",e),b([])}};(0,a.useEffect)(()=>{e&&j()},[e]);let y=async()=>{try{let e=await fetch("/api/provider-nodes");if(!e.ok)throw Error(`Failed to fetch provider nodes: ${e.status}`);let t=await e.json();g(t.nodes||[])}catch(e){console.error("Error fetching provider nodes:",e),g([])}};(0,a.useEffect)(()=>{e&&y()},[e]);let v=(0,a.useMemo)(()=>({...d.zN,...d.fg}),[]),N=(0,a.useMemo)(()=>{let e={};return[...new Set([...n.map(e=>e.provider)])].sort((e,t)=>{let s=c.indexOf(e),r=c.indexOf(t);return(-1===s?999:s)-(-1===r?999:r)}).forEach(t=>{let s=o.Xg[t]||t,r=v[t]||{name:t,color:"#666"},a=(0,d.mq)(t)||(0,d.gb)(t);if(r.passthroughModels){let a=Object.entries(x).filter(([,e])=>e.startsWith(`${s}/`)).map(([e,t])=>({id:t.replace(`${s}/`,""),name:e,value:t}));if(a.length>0){let l=f.find(e=>e.id===t),n=l?.name||r.name;e[t]={name:n,alias:s,color:r.color,models:a}}}else if(a){let s=f.find(e=>e.id===t),a=s?.name||r.name,l=Object.entries(x).filter(([,e])=>e.startsWith(`${t}/`)).map(([e,s])=>({id:s.replace(`${t}/`,""),name:e,value:s}));l.length>0&&(e[t]={name:a,alias:s?.prefix||t,color:r.color,models:l,isCustom:!0,hasModels:!0})}else{let a=(0,o.KC)(t);a.length>0&&(e[t]={name:r.name,alias:s,color:r.color,models:a.map(e=>({id:e.id,name:e.name,value:`${s}/${e.id}`}))})}}),e},[n,x,v,f]),w=(0,a.useMemo)(()=>{if(!u.trim())return p;let e=u.toLowerCase();return p.filter(t=>t.name.toLowerCase().includes(e))},[p,u]),k=(0,a.useMemo)(()=>{if(!u.trim())return N;let e=u.toLowerCase(),t={};return Object.entries(N).forEach(([s,r])=>{let a=r.models.filter(t=>t.name.toLowerCase().includes(e)||t.id.toLowerCase().includes(e)),l=r.name.toLowerCase().includes(e);(a.length>0||l)&&(t[s]={...r,models:a})}),t},[N,u]),C=e=>{s(e),t(),h("")};return(0,r.jsxs)(i.default,{isOpen:e,onClose:()=>{t(),h("")},title:m,size:"md",className:"p-4!",children:[(0,r.jsx)("div",{className:"mb-3",children:(0,r.jsxs)("div",{className:"relative",children:[(0,r.jsx)("span",{className:"material-symbols-outlined absolute left-2.5 top-1/2 -translate-y-1/2 text-text-muted text-[16px]",children:"search"}),(0,r.jsx)("input",{type:"text",placeholder:"Search...",value:u,onChange:e=>h(e.target.value),className:"w-full pl-8 pr-3 py-1.5 bg-surface border border-border rounded text-xs focus:outline-none focus:ring-1 focus:ring-primary/50"})]})}),(0,r.jsxs)("div",{className:"max-h-[300px] overflow-y-auto space-y-3",children:[w.length>0&&(0,r.jsxs)("div",{children:[(0,r.jsxs)("div",{className:"flex items-center gap-1.5 mb-1.5 sticky top-0 bg-surface py-0.5",children:[(0,r.jsx)("span",{className:"material-symbols-outlined text-primary text-[14px]",children:"layers"}),(0,r.jsx)("span",{className:"text-xs font-medium text-primary",children:"Combos"}),(0,r.jsxs)("span",{className:"text-[10px] text-text-muted",children:["(",w.length,")"]})]}),(0,r.jsx)("div",{className:"flex flex-wrap gap-1.5",children:w.map(e=>{let t=l===e.name;return(0,r.jsx)("button",{onClick:()=>C({id:e.name,name:e.name,value:e.name}),className:`
|
|
2
|
-
px-2 py-1 rounded-xl text-xs font-medium transition-all border hover:cursor-pointer
|
|
3
|
-
${t?"bg-primary text-white border-primary":"bg-surface border-border text-text-main hover:border-primary/50 hover:bg-primary/5"}
|
|
4
|
-
`,children:e.name},e.id)})})]}),Object.entries(k).map(([e,t])=>(0,r.jsxs)("div",{children:[(0,r.jsxs)("div",{className:"flex items-center gap-1.5 mb-1.5 sticky top-0 bg-surface py-0.5",children:[(0,r.jsx)("div",{className:"w-2 h-2 rounded-full",style:{backgroundColor:t.color}}),(0,r.jsx)("span",{className:"text-xs font-medium text-primary",children:t.name}),(0,r.jsxs)("span",{className:"text-[10px] text-text-muted",children:["(",t.models.length,")"]})]}),(0,r.jsx)("div",{className:"flex flex-wrap gap-1.5",children:t.models.map(e=>{let t=l===e.value;return(0,r.jsx)("button",{onClick:()=>C(e),className:`
|
|
5
|
-
px-2 py-1 rounded-xl text-xs font-medium transition-all border hover:cursor-pointer
|
|
6
|
-
${t?"bg-primary text-white border-primary":"bg-surface border-border text-text-main hover:border-primary/50 hover:bg-primary/5"}
|
|
7
|
-
`,children:e.name},e.id)})})]},e)),0===Object.keys(k).length&&0===w.length&&(0,r.jsxs)("div",{className:"text-center py-4 text-text-muted",children:[(0,r.jsx)("span",{className:"material-symbols-outlined text-2xl mb-1 block",children:"search_off"}),(0,r.jsx)("p",{className:"text-xs",children:"No models found"})]})]})]})}m.propTypes={isOpen:n().bool.isRequired,onClose:n().func.isRequired,onSelect:n().func.isRequired,selectedModel:n().string,activeProviders:n().arrayOf(n().shape({provider:n().string.isRequired})),title:n().string,modelAliases:n().object}},74891:(e,t,s)=>{s.d(t,{default:()=>x});var r=s(95155),a=s(73321),l=s(98500),n=s.n(l),i=s(5772),o=s(14051),d=s.n(o),c=s(35497),m=s(90620);function x({onMenuClick:e,showMenuButton:t=!0}){let s=(0,a.usePathname)(),l=(0,a.useRouter)(),{title:o,description:d,breadcrumbs:x}=(e=>{if(!e)return{title:"",description:"",breadcrumbs:[]};let t=e.match(/\/providers\/([^/]+)$/);if(t){let e=t[1],s=m.zN[e]||m.fg[e];if(s)return{title:s.name,description:"",breadcrumbs:[{label:"Providers",href:"/dashboard/providers"},{label:s.name,image:`/providers/${s.id}.png`}]}}return e.includes("/providers")?{title:"Providers",description:"Manage your AI provider connections",breadcrumbs:[]}:e.includes("/combos")?{title:"Combos",description:"Model combos with fallback",breadcrumbs:[]}:e.includes("/usage")?{title:"Usage & Analytics",description:"Monitor your API usage, token consumption, and request logs",breadcrumbs:[]}:e.includes("/cli-tools")?{title:"CLI Tools",description:"Configure CLI tools",breadcrumbs:[]}:e.includes("/endpoint")?{title:"Endpoint",description:"API endpoint configuration",breadcrumbs:[]}:e.includes("/profile")?{title:"Settings",description:"Manage your preferences",breadcrumbs:[]}:"/dashboard"===e?{title:"Endpoint",description:"API endpoint configuration",breadcrumbs:[]}:{title:"",description:"",breadcrumbs:[]}})(s),u=async()=>{try{(await fetch("/api/auth/logout",{method:"POST"})).ok&&(l.push("/login"),l.refresh())}catch(e){console.error("Failed to logout:",e)}};return(0,r.jsxs)("header",{className:"flex items-center justify-between px-8 py-5 border-b border-black/5 dark:border-white/5 bg-bg/80 backdrop-blur-xl z-10 sticky top-0",children:[(0,r.jsx)("div",{className:"flex items-center gap-3 lg:hidden",children:t&&(0,r.jsx)("button",{onClick:e,className:"text-text-main hover:text-primary transition-colors",children:(0,r.jsx)("span",{className:"material-symbols-outlined",children:"menu"})})}),(0,r.jsx)("div",{className:"hidden lg:flex flex-col",children:x.length>0?(0,r.jsx)("div",{className:"flex items-center gap-2",children:x.map((e,t)=>(0,r.jsxs)("div",{className:"flex items-center gap-2",children:[t>0&&(0,r.jsx)("span",{className:"material-symbols-outlined text-text-muted text-base",children:"chevron_right"}),e.href?(0,r.jsx)(n(),{href:e.href,className:"text-text-muted hover:text-primary transition-colors",children:e.label}):(0,r.jsxs)("div",{className:"flex items-center gap-2",children:[e.image&&(0,r.jsx)(i.default,{src:e.image,alt:e.label,width:28,height:28,className:"object-contain rounded max-w-[28px] max-h-[28px]",sizes:"28px",onError:e=>{e.currentTarget.style.display="none"}}),(0,r.jsx)("h1",{className:"text-2xl font-semibold text-text-main tracking-tight",children:e.label})]})]},`${e.label}-${e.href||"current"}`))}):o?(0,r.jsxs)("div",{children:[(0,r.jsx)("h1",{className:"text-2xl font-semibold text-text-main tracking-tight",children:o}),d&&(0,r.jsx)("p",{className:"text-sm text-text-muted",children:d})]}):null}),(0,r.jsxs)("div",{className:"flex items-center gap-3 ml-auto",children:[(0,r.jsx)(c.UW,{}),(0,r.jsx)("button",{onClick:u,className:"flex items-center justify-center p-2 rounded-lg text-text-muted hover:text-red-500 hover:bg-red-500/10 transition-all",title:"Logout",children:(0,r.jsx)("span",{className:"material-symbols-outlined",children:"logout"})})]})]})}x.propTypes={onMenuClick:d().func,showMenuButton:d().bool}},81127:(e,t,s)=>{s.d(t,{ConfirmModal:()=>o,default:()=>i});var r=s(95155),a=s(12115),l=s(31474),n=s(92542);function i({isOpen:e,onClose:t,title:s,children:n,footer:i,size:o="md",closeOnOverlay:d=!0,showCloseButton:c=!0,className:m}){return((0,a.useEffect)(()=>(e?document.body.style.overflow="hidden":document.body.style.overflow="",()=>{document.body.style.overflow=""}),[e]),(0,a.useEffect)(()=>{let s=s=>{"Escape"===s.key&&e&&t()};return document.addEventListener("keydown",s),()=>document.removeEventListener("keydown",s)},[e,t]),e)?(0,r.jsxs)("div",{className:"fixed inset-0 z-50 flex items-center justify-center p-4",children:[(0,r.jsx)("div",{className:"absolute inset-0 bg-black/30 backdrop-blur-sm",onClick:d?t:void 0}),(0,r.jsxs)("div",{className:(0,l.cn)("relative w-full bg-surface","border border-black/10 dark:border-white/10","rounded-xl shadow-2xl","animate-in fade-in zoom-in-95 duration-200",{sm:"max-w-sm",md:"max-w-md",lg:"max-w-lg",xl:"max-w-xl",full:"max-w-4xl"}[o],m),children:[(s||c)&&(0,r.jsxs)("div",{className:"flex items-center justify-between p-6 border-b border-black/5 dark:border-white/5",children:[(0,r.jsxs)("div",{className:"flex items-center",children:[(0,r.jsxs)("div",{className:"flex items-center gap-2 mr-4",children:[(0,r.jsx)("div",{className:"w-3 h-3 rounded-full bg-[#FF5F56]"}),(0,r.jsx)("div",{className:"w-3 h-3 rounded-full bg-[#FFBD2E]"}),(0,r.jsx)("div",{className:"w-3 h-3 rounded-full bg-[#27C93F]"})]}),s&&(0,r.jsx)("h2",{className:"text-lg font-semibold text-text-main",children:s})]}),c&&(0,r.jsx)("button",{onClick:t,className:"p-1.5 rounded-lg text-text-muted hover:bg-black/5 dark:hover:bg-white/5 transition-colors",children:(0,r.jsx)("span",{className:"material-symbols-outlined text-[20px]",children:"close"})})]}),(0,r.jsx)("div",{className:"p-6 max-h-[calc(80vh-140px)] overflow-y-auto",children:n}),i&&(0,r.jsx)("div",{className:"flex items-center justify-end gap-3 p-6 border-t border-black/5 dark:border-white/5",children:i})]})]}):null}function o({isOpen:e,onClose:t,onConfirm:s,title:a="Confirm",message:l,confirmText:o="Confirm",cancelText:d="Cancel",variant:c="danger",loading:m=!1}){return(0,r.jsx)(i,{isOpen:e,onClose:t,title:a,size:"sm",footer:(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.default,{variant:"ghost",onClick:t,disabled:m,children:d}),(0,r.jsx)(n.default,{variant:c,onClick:s,loading:m,children:o})]}),children:(0,r.jsx)("p",{className:"text-text-muted",children:l})})}},84588:(e,t,s)=>{s.d(t,{default:()=>l});var r=s(95155),a=s(31474);function l({children:e,title:t,subtitle:s,icon:l,action:n,padding:i="md",hover:o=!1,className:d,...c}){return(0,r.jsxs)("div",{className:(0,a.cn)("bg-surface","border border-black/5 dark:border-white/5","rounded-lg shadow-sm",o&&"hover:shadow-md hover:border-primary/30 transition-all cursor-pointer",{none:"",xs:"p-3",sm:"p-4",md:"p-6",lg:"p-8"}[i],d),...c,children:[(t||n)&&(0,r.jsxs)("div",{className:"flex items-center justify-between mb-4",children:[(0,r.jsxs)("div",{className:"flex items-center gap-3",children:[l&&(0,r.jsx)("div",{className:"p-2 rounded-lg bg-bg text-text-muted",children:(0,r.jsx)("span",{className:"material-symbols-outlined text-[20px]",children:l})}),(0,r.jsxs)("div",{children:[t&&(0,r.jsx)("h3",{className:"text-text-main font-semibold",children:t}),s&&(0,r.jsx)("p",{className:"text-sm text-text-muted",children:s})]})]}),n]}),e]})}l.Section=function({children:e,className:t,...s}){return(0,r.jsx)("div",{className:(0,a.cn)("p-4 rounded-lg","bg-black/[0.02] dark:bg-white/[0.02]","border border-black/5 dark:border-white/5",t),...s,children:e})},l.Row=function({children:e,className:t,...s}){return(0,r.jsx)("div",{className:(0,a.cn)("p-3 -mx-3 px-3 transition-colors","border-b border-black/5 dark:border-white/5 last:border-b-0","hover:bg-black/[0.02] dark:hover:bg-white/[0.02]",t),...s,children:e})},l.ListItem=function({children:e,actions:t,className:s,...l}){return(0,r.jsxs)("div",{className:(0,a.cn)("group flex items-center justify-between p-3 -mx-3 px-3","border-b border-black/[0.03] dark:border-white/[0.03] last:border-b-0","hover:bg-black/[0.02] dark:hover:bg-white/[0.02]","transition-colors",s),...l,children:[(0,r.jsx)("div",{className:"flex-1 min-w-0",children:e}),t&&(0,r.jsx)("div",{className:"flex items-center gap-1 opacity-0 group-hover:opacity-100 transition-opacity",children:t})]})}},90882:(e,t,s)=>{s.d(t,{default:()=>m});var r=s(95155),a=s(12115),l=s(14051),n=s.n(l),i=s(35497),o=s(11059);let d="oauth_pending_auth";function c(){try{localStorage.removeItem(d)}catch{}}function m({isOpen:e,provider:t,providerInfo:s,onSuccess:l,onClose:n}){let[m,x]=(0,a.useState)("waiting"),[u,h]=(0,a.useState)(null),[p,b]=(0,a.useState)(""),[f,g]=(0,a.useState)(null),[j,y]=(0,a.useState)(!1),[v,N]=(0,a.useState)(null),[w,k]=(0,a.useState)(!1),C=(0,a.useRef)(null),{copied:S,copy:T}=(0,o.C)(),[R,M]=(0,a.useState)(!1),[$,I]=(0,a.useState)("/callback?code=..."),L=(0,a.useRef)(!1);(0,a.useEffect)(()=>{M("localhost"===window.location.hostname||"127.0.0.1"===window.location.hostname),I(`${window.location.origin}/callback?code=...`)},[]);let E=(0,a.useCallback)(async(e,s)=>{if(u)try{let r=await fetch(`/api/oauth/${t}/exchange`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({code:e,redirectUri:u.redirectUri,codeVerifier:u.codeVerifier,state:s})}),a=await r.json();if(!r.ok)throw Error(a.error);c(),x("success"),l?.()}catch(e){c(),g(e.message),x("error")}},[u,t,l]),O=(0,a.useCallback)(async(e,s,r,a)=>{k(!0);for(let n=0;n<60;n++){await new Promise(e=>setTimeout(e,1e3*r));try{let n=await fetch(`/api/oauth/${t}/poll`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({deviceCode:e,codeVerifier:s,extraData:a})}),i=await n.json();if(i.success){x("success"),k(!1),l?.();return}if("expired_token"===i.error||"access_denied"===i.error)throw Error(i.errorDescription||i.error);"slow_down"===i.error&&(r=Math.min(r+5,30))}catch(e){g(e.message),x("error"),k(!1);return}}g("Authorization timeout"),x("error"),k(!1)},[t,l]),z=(0,a.useCallback)(async()=>{if(t)try{let s;if(g(null),["github","qwen","kiro","kimi-coding","kilocode"].includes(t)){y(!0),x("waiting");let e=await fetch(`/api/oauth/${t}/device-code`),s=await e.json();if(!e.ok)throw Error(s.error);N(s);let r=s.verification_uri_complete||s.verification_uri;r&&window.open(r,"_blank");let a="kiro"===t?{_clientId:s._clientId,_clientSecret:s._clientSecret}:null;O(s.device_code,s.codeVerifier,s.interval||5,a);return}if("codex"===t)s="http://localhost:1455/auth/callback";else{let e=window.location.port||("https:"===window.location.protocol?"443":"80");s=`http://localhost:${e}/callback`}let r=await fetch(`/api/oauth/${t}/authorize?redirect_uri=${encodeURIComponent(s)}`),a=await r.json();if(!r.ok)throw Error(a.error);h({...a,redirectUri:s});var e={codeVerifier:a.codeVerifier,redirectUri:s,state:a.state};try{localStorage.setItem(d,JSON.stringify({provider:t,...e,timestamp:Date.now()}))}catch{}"codex"!==t&&R?(x("waiting"),C.current=window.open(a.authUrl,"oauth_popup","width=600,height=700"),C.current||x("input")):(x("input"),window.open(a.authUrl,"_blank"))}catch(e){g(e.message),x("error")}},[t,R,O]);(0,a.useEffect)(()=>{if(e&&t){let e=function(e){try{let t=localStorage.getItem(d);if(!t)return null;let s=JSON.parse(t);if(s.provider!==e||Date.now()-s.timestamp>3e5)return localStorage.removeItem(d),null;return s}catch{return null}}(t);if(e){h({codeVerifier:e.codeVerifier,redirectUri:e.redirectUri,state:e.state}),x("waiting"),b(""),g(null),y(!1),N(null),k(!1);return}h(null),b(""),g(null),y(!1),N(null),k(!1),z()}},[e,t,z]),(0,a.useEffect)(()=>{let e;if(!u)return;L.current=!1;let t=async e=>{if(L.current)return;let{code:t,state:s,error:r,errorDescription:a}=e;if(r){L.current=!0,g(a||r),x("error");return}if(t){if(!localStorage.getItem(d)){L.current=!0,x("success"),l?.();return}L.current=!0,await E(t,s)}},s=e=>{let s=e.origin.includes("localhost")||e.origin.includes("127.0.0.1"),r=e.origin===window.location.origin;(s||r)&&e.data?.type==="oauth_callback"&&t(e.data.data)};window.addEventListener("message",s);try{(e=new BroadcastChannel("oauth_callback")).onmessage=e=>t(e.data)}catch(e){console.log("BroadcastChannel not supported")}let r=e=>{if("oauth_callback"===e.key&&e.newValue)try{let s=JSON.parse(e.newValue);t(s),localStorage.removeItem("oauth_callback")}catch(e){console.log("Failed to parse localStorage data")}};window.addEventListener("storage",r);try{let e=localStorage.getItem("oauth_callback");if(e){let s=JSON.parse(e);s.timestamp&&Date.now()-s.timestamp<3e4&&(t(s),localStorage.removeItem("oauth_callback"))}}catch{}return()=>{window.removeEventListener("message",s),window.removeEventListener("storage",r),e&&e.close()}},[u,E]);let q=async()=>{try{g(null);let e=new URL(p),t=e.searchParams.get("code"),s=e.searchParams.get("state"),r=e.searchParams.get("error");if(r)throw Error(e.searchParams.get("error_description")||r);if(!t)throw Error("No authorization code found in URL");await E(t,s)}catch(e){g(e.message),x("error")}},U=(0,a.useCallback)(()=>{c(),n()},[n]);return t&&s?(0,r.jsx)(i.aF,{isOpen:e,title:`Connect ${s.name}`,onClose:U,size:"lg",children:(0,r.jsxs)("div",{className:"flex flex-col gap-4",children:["waiting"===m&&!j&&(0,r.jsxs)("div",{className:"text-center py-6",children:[(0,r.jsx)("div",{className:"size-16 mx-auto mb-4 rounded-full bg-primary/10 flex items-center justify-center",children:(0,r.jsx)("span",{className:"material-symbols-outlined text-3xl text-primary animate-spin",children:"progress_activity"})}),(0,r.jsx)("h3",{className:"text-lg font-semibold mb-2",children:"Waiting for Authorization"}),(0,r.jsx)("p",{className:"text-sm text-text-muted mb-4",children:"Complete the authorization in the popup window."}),(0,r.jsx)(i.$n,{variant:"ghost",onClick:()=>x("input"),children:"Popup blocked? Enter URL manually"})]}),"waiting"===m&&j&&v&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)("div",{className:"text-center py-4",children:[(0,r.jsx)("p",{className:"text-sm text-text-muted mb-4",children:"Visit the URL below and enter the code:"}),(0,r.jsxs)("div",{className:"bg-sidebar p-4 rounded-lg mb-4",children:[(0,r.jsx)("p",{className:"text-xs text-text-muted mb-1",children:"Verification URL"}),(0,r.jsxs)("div",{className:"flex items-center gap-2",children:[(0,r.jsx)("code",{className:"flex-1 text-sm break-all",children:v.verification_uri}),(0,r.jsx)(i.$n,{size:"sm",variant:"ghost",icon:"verify_url"===S?"check":"content_copy",onClick:()=>T(v.verification_uri,"verify_url")})]})]}),(0,r.jsxs)("div",{className:"bg-primary/10 p-4 rounded-lg",children:[(0,r.jsx)("p",{className:"text-xs text-text-muted mb-1",children:"Your Code"}),(0,r.jsxs)("div",{className:"flex items-center justify-center gap-2",children:[(0,r.jsx)("p",{className:"text-2xl font-mono font-bold text-primary",children:v.user_code}),(0,r.jsx)(i.$n,{size:"sm",variant:"ghost",icon:"user_code"===S?"check":"content_copy",onClick:()=>T(v.user_code,"user_code")})]})]})]}),w&&(0,r.jsxs)("div",{className:"flex items-center justify-center gap-2 text-sm text-text-muted",children:[(0,r.jsx)("span",{className:"material-symbols-outlined animate-spin",children:"progress_activity"}),"Waiting for authorization..."]})]}),"input"===m&&!j&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)("div",{className:"space-y-4",children:[(0,r.jsxs)("div",{children:[(0,r.jsx)("p",{className:"text-sm font-medium mb-2",children:"Step 1: Open this URL in your browser"}),(0,r.jsxs)("div",{className:"flex gap-2",children:[(0,r.jsx)(i.pd,{value:u?.authUrl||"",readOnly:!0,className:"flex-1 font-mono text-xs"}),(0,r.jsx)(i.$n,{variant:"secondary",icon:"auth_url"===S?"check":"content_copy",onClick:()=>T(u?.authUrl,"auth_url"),children:"Copy"})]})]}),(0,r.jsxs)("div",{children:[(0,r.jsx)("p",{className:"text-sm font-medium mb-2",children:"Step 2: Paste the callback URL here"}),(0,r.jsx)("p",{className:"text-xs text-text-muted mb-2",children:"After authorization, copy the full URL from your browser."}),(0,r.jsx)(i.pd,{value:p,onChange:e=>b(e.target.value),placeholder:$,className:"font-mono text-xs"})]})]}),(0,r.jsxs)("div",{className:"flex gap-2",children:[(0,r.jsx)(i.$n,{onClick:q,fullWidth:!0,disabled:!p,children:"Connect"}),(0,r.jsx)(i.$n,{onClick:U,variant:"ghost",fullWidth:!0,children:"Cancel"})]})]}),"success"===m&&(0,r.jsxs)("div",{className:"text-center py-6",children:[(0,r.jsx)("div",{className:"size-16 mx-auto mb-4 rounded-full bg-green-100 dark:bg-green-900/30 flex items-center justify-center",children:(0,r.jsx)("span",{className:"material-symbols-outlined text-3xl text-green-600",children:"check_circle"})}),(0,r.jsx)("h3",{className:"text-lg font-semibold mb-2",children:"Connected Successfully!"}),(0,r.jsxs)("p",{className:"text-sm text-text-muted mb-4",children:["Your ",s.name," account has been connected."]}),(0,r.jsx)(i.$n,{onClick:U,fullWidth:!0,children:"Done"})]}),"error"===m&&(0,r.jsxs)("div",{className:"text-center py-6",children:[(0,r.jsx)("div",{className:"size-16 mx-auto mb-4 rounded-full bg-red-100 dark:bg-red-900/30 flex items-center justify-center",children:(0,r.jsx)("span",{className:"material-symbols-outlined text-3xl text-red-600",children:"error"})}),(0,r.jsx)("h3",{className:"text-lg font-semibold mb-2",children:"Connection Failed"}),(0,r.jsx)("p",{className:"text-sm text-red-600 mb-4",children:f}),(0,r.jsxs)("div",{className:"flex gap-2",children:[(0,r.jsx)(i.$n,{onClick:z,variant:"secondary",fullWidth:!0,children:"Try Again"}),(0,r.jsx)(i.$n,{onClick:U,variant:"ghost",fullWidth:!0,children:"Cancel"})]})]})]})}):null}m.propTypes={isOpen:n().bool.isRequired,provider:n().string,providerInfo:n().shape({name:n().string}),onSuccess:n().func,onClose:n().func.isRequired}},91450:(e,t,s)=>{s.d(t,{default:()=>i});var r=s(95155),a=s(14051),l=s.n(a),n=s(38587);function i({children:e}){return(0,r.jsxs)("div",{className:"min-h-screen flex flex-col relative bg-bg transition-colors duration-500 overflow-x-hidden selection:bg-primary/20 selection:text-primary",children:[(0,r.jsx)("div",{className:"fixed top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 w-[800px] h-[800px] bg-primary/5 dark:bg-primary/5 rounded-full blur-[100px] pointer-events-none z-0"}),(0,r.jsx)("div",{className:"fixed bottom-0 right-0 w-[600px] h-[600px] bg-orange-200/20 dark:bg-orange-900/10 rounded-full blur-[120px] pointer-events-none z-0 translate-y-1/3 translate-x-1/3"}),(0,r.jsx)("div",{className:"absolute top-6 right-6 z-20",children:(0,r.jsx)(n.default,{variant:"card"})}),(0,r.jsx)("main",{className:"flex-1 flex flex-col items-center justify-center p-4 sm:p-6 z-10 w-full h-full",children:e})]})}i.propTypes={children:l().node.isRequired}},92173:(e,t,s)=>{s.d(t,{default:()=>c});var r=s(95155),a=s(98500),l=s.n(a),n=s(90620);let i=[{label:"Features",href:"#features"},{label:"Pricing",href:"#pricing"},{label:"Changelog",href:"#"}],o=[{label:"Documentation",href:"#"},{label:"API Reference",href:"#"},{label:"Help Center",href:"#"}],d=[{label:"About",href:"#"},{label:"Blog",href:"#"},{label:"Contact",href:"#"}];function c(){return(0,r.jsx)("footer",{className:"bg-bg border-t border-border pt-16 pb-12",children:(0,r.jsxs)("div",{className:"container mx-auto px-4 sm:px-6 lg:px-8",children:[(0,r.jsxs)("div",{className:"grid grid-cols-2 md:grid-cols-4 lg:grid-cols-5 gap-10 mb-12",children:[(0,r.jsxs)("div",{className:"col-span-2 lg:col-span-2",children:[(0,r.jsxs)("div",{className:"flex items-center gap-2 mb-6",children:[(0,r.jsx)("div",{className:"size-6 text-primary",children:(0,r.jsx)("svg",{className:"w-full h-full",fill:"currentColor",viewBox:"0 0 48 48",children:(0,r.jsx)("path",{clipRule:"evenodd",d:"M12.0799 24L4 19.2479L9.95537 8.75216L18.04 13.4961L18.0446 4H29.9554L29.96 13.4961L38.0446 8.75216L44 19.2479L35.92 24L44 28.7521L38.0446 39.2479L29.96 34.5039L29.9554 44H18.0446L18.04 34.5039L9.95537 39.2479L4 28.7521L12.0799 24Z",fillRule:"evenodd"})})}),(0,r.jsx)("span",{className:"text-xl font-bold text-text-main",children:n.vQ.name})]}),(0,r.jsx)("p",{className:"text-text-muted mb-6 max-w-sm font-light",children:"The unified interface for modern AI infrastructure. Secure, observable, and scalable."}),(0,r.jsxs)("div",{className:"flex gap-4",children:[(0,r.jsx)("a",{href:"#",className:"text-gray-400 hover:text-primary transition-colors","aria-label":"Twitter",children:(0,r.jsx)("svg",{className:"w-5 h-5",fill:"currentColor",viewBox:"0 0 24 24",children:(0,r.jsx)("path",{d:"M22.46 6c-.77.35-1.6.58-2.46.69.88-.53 1.56-1.37 1.88-2.38-.83.5-1.75.85-2.72 1.05C18.37 4.5 17.26 4 16 4c-2.35 0-4.27 1.92-4.27 4.29 0 .34.04.67.11.98C8.28 9.09 5.11 7.38 3 4.79c-.37.63-.58 1.37-.58 2.15 0 1.49.75 2.81 1.91 3.56-.71 0-1.37-.2-1.95-.5v.03c0 2.08 1.48 3.82 3.44 4.21a4.22 4.22 0 0 1-1.93.07 4.28 4.28 0 0 0 4 2.98 8.521 8.521 0 0 1-5.33 1.84c-.34 0-.68-.02-1.02-.06C3.44 20.29 5.7 21 8.12 21 16 21 20.33 14.46 20.33 8.79c0-.19 0-.37-.01-.56.84-.6 1.56-1.36 2.14-2.23z"})})}),(0,r.jsx)("a",{href:"#",className:"text-gray-400 hover:text-primary transition-colors","aria-label":"GitHub",children:(0,r.jsx)("svg",{className:"w-5 h-5",fill:"currentColor",viewBox:"0 0 24 24",children:(0,r.jsx)("path",{d:"M12 2C6.477 2 2 6.484 2 12.017c0 4.425 2.865 8.18 6.839 9.504.5.092.682-.217.682-.483 0-.237-.008-.868-.013-1.703-2.782.605-3.369-1.343-3.369-1.343-.454-1.158-1.11-1.466-1.11-1.466-.908-.62.069-.608.069-.608 1.003.07 1.531 1.032 1.531 1.032.892 1.53 2.341 1.088 2.91.832.092-.647.35-1.088.636-1.338-2.22-.253-4.555-1.113-4.555-4.951 0-1.093.39-1.988 1.029-2.688-.103-.253-.446-1.272.098-2.65 0 0 .84-.27 2.75 1.026A9.564 9.564 0 0 1 12 6.844c.85.004 1.705.115 2.504.337 1.909-1.296 2.747-1.027 2.747-1.027.546 1.379.202 2.398.1 2.651.64.7 1.028 1.595 1.028 2.688 0 3.848-2.339 4.695-4.566 4.943.359.309.678.92.678 1.855 0 1.338-.012 2.419-.012 2.747 0 .268.18.58.688.482A10.019 10.019 0 0 0 22 12.017C22 6.484 17.522 2 12 2z"})})})]})]}),(0,r.jsxs)("div",{children:[(0,r.jsx)("h4",{className:"font-semibold text-text-main mb-4",children:"Product"}),(0,r.jsx)("ul",{className:"flex flex-col gap-3 text-sm text-text-muted font-light",children:i.map(e=>(0,r.jsx)("li",{children:(0,r.jsx)(l(),{href:e.href,className:"hover:text-primary transition-colors",children:e.label})},e.label))})]}),(0,r.jsxs)("div",{children:[(0,r.jsx)("h4",{className:"font-semibold text-text-main mb-4",children:"Resources"}),(0,r.jsx)("ul",{className:"flex flex-col gap-3 text-sm text-text-muted font-light",children:o.map(e=>(0,r.jsx)("li",{children:(0,r.jsx)(l(),{href:e.href,className:"hover:text-primary transition-colors",children:e.label})},e.label))})]}),(0,r.jsxs)("div",{children:[(0,r.jsx)("h4",{className:"font-semibold text-text-main mb-4",children:"Company"}),(0,r.jsx)("ul",{className:"flex flex-col gap-3 text-sm text-text-muted font-light",children:d.map(e=>(0,r.jsx)("li",{children:(0,r.jsx)(l(),{href:e.href,className:"hover:text-primary transition-colors",children:e.label})},e.label))})]})]}),(0,r.jsxs)("div",{className:"border-t border-border pt-8 flex flex-col md:flex-row justify-between items-center gap-4",children:[(0,r.jsxs)("p",{className:"text-sm text-text-muted",children:["\xa9 ",new Date().getFullYear()," ",n.vQ.name," Inc. All rights reserved."]}),(0,r.jsxs)("div",{className:"flex gap-6 text-sm text-text-muted",children:[(0,r.jsx)(l(),{href:"#",className:"hover:text-primary transition-colors",children:"Privacy Policy"}),(0,r.jsx)(l(),{href:"#",className:"hover:text-primary transition-colors",children:"Terms of Service"})]})]})]})})}},92542:(e,t,s)=>{s.d(t,{default:()=>i});var r=s(95155),a=s(31474);let l={primary:"bg-gradient-to-b from-primary to-primary-hover text-white shadow-sm",secondary:"bg-white dark:bg-white/10 border border-black/10 dark:border-white/10 text-text-main hover:bg-black/5 dark:hover:bg-white/5",outline:"border border-black/15 dark:border-white/15 text-text-main hover:bg-black/5",ghost:"text-text-muted hover:bg-black/5 dark:hover:bg-white/5 hover:text-text-main",danger:"bg-red-500 text-white hover:bg-red-600 shadow-sm"},n={sm:"h-7 px-3 text-xs rounded-md",md:"h-9 px-4 text-sm rounded-lg",lg:"h-11 px-6 text-sm rounded-lg"};function i({children:e,variant:t="primary",size:s="md",icon:i,iconRight:o,disabled:d=!1,loading:c=!1,fullWidth:m=!1,className:x,...u}){return(0,r.jsxs)("button",{className:(0,a.cn)("inline-flex items-center justify-center gap-2 font-medium transition-all duration-200 cursor-pointer","active:scale-[0.99] disabled:opacity-50 disabled:cursor-not-allowed disabled:active:scale-100",l[t],n[s],m&&"w-full",x),disabled:d||c,...u,children:[c?(0,r.jsx)("span",{className:"material-symbols-outlined animate-spin text-[18px]",children:"progress_activity"}):i?(0,r.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:i}):null,e,o&&!c&&(0,r.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:o})]})}},92622:(e,t,s)=>{s.d(t,{default:()=>f});var r=s(95155),a=s(12115),l=s(14051),n=s.n(l),i=s(98500),o=s.n(i),d=s(73321),c=s(31474),m=s(90620),x=s(92542),u=s(81127);let h=[{href:"/dashboard/endpoint",label:"Endpoint",icon:"api"},{href:"/dashboard/providers",label:"Providers",icon:"dns"},{href:"/dashboard/combos",label:"Combos",icon:"layers"},{href:"/dashboard/usage",label:"Usage",icon:"bar_chart"},{href:"/dashboard/cli-tools",label:"CLI Tools",icon:"terminal"}],p=[{href:"/dashboard/translator",label:"Translator",icon:"translate"}],b=[{href:"/dashboard/profile",label:"Settings",icon:"settings"}];function f({onClose:e}){let t=(0,d.usePathname)(),[s,l]=(0,a.useState)(!1),[n,i]=(0,a.useState)(!1),[f,g]=(0,a.useState)(!1),[j,y]=(0,a.useState)(!1);(0,a.useEffect)(()=>{fetch("/api/settings").then(e=>e.json()).then(e=>y(e?.enableRequestLogs===!0)).catch(()=>{})},[]);let v=e=>"/dashboard/endpoint"===e?"/dashboard"===t||t.startsWith("/dashboard/endpoint"):t.startsWith(e),N=async()=>{i(!0);try{await fetch("/api/shutdown",{method:"POST"})}catch(e){}i(!1),l(!1),g(!0)};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)("aside",{className:"flex w-72 flex-col border-r border-black/5 dark:border-white/5 bg-vibrancy backdrop-blur-xl transition-colors duration-300",children:[(0,r.jsxs)("div",{className:"flex items-center gap-2 px-6 pt-5 pb-2",children:[(0,r.jsx)("div",{className:"w-3 h-3 rounded-full bg-[#FF5F56]"}),(0,r.jsx)("div",{className:"w-3 h-3 rounded-full bg-[#FFBD2E]"}),(0,r.jsx)("div",{className:"w-3 h-3 rounded-full bg-[#27C93F]"})]}),(0,r.jsx)("div",{className:"px-6 py-4",children:(0,r.jsxs)(o(),{href:"/dashboard",className:"flex items-center gap-3",children:[(0,r.jsx)("div",{className:"flex items-center justify-center size-9 rounded bg-linear-to-br from-[#f97815] to-[#c2590a]",children:(0,r.jsx)("span",{className:"material-symbols-outlined text-white text-[20px]",children:"hub"})}),(0,r.jsxs)("div",{className:"flex flex-col",children:[(0,r.jsx)("h1",{className:"text-lg font-semibold tracking-tight text-text-main",children:m.vQ.name}),(0,r.jsxs)("span",{className:"text-xs text-text-muted",children:["v",m.vQ.version]})]})]})}),(0,r.jsxs)("nav",{className:"flex-1 px-4 py-2 space-y-1 overflow-y-auto custom-scrollbar",children:[h.map(t=>(0,r.jsxs)(o(),{href:t.href,onClick:e,className:(0,c.cn)("flex items-center gap-3 px-4 py-2 rounded-lg transition-all group",v(t.href)?"bg-primary/10 text-primary":"text-text-muted hover:bg-surface/50 hover:text-text-main"),children:[(0,r.jsx)("span",{className:(0,c.cn)("material-symbols-outlined text-[18px]",v(t.href)?"fill-1":"group-hover:text-primary transition-colors"),children:t.icon}),(0,r.jsx)("span",{className:"text-sm font-medium",children:t.label})]},t.href)),j&&(0,r.jsxs)("div",{className:"pt-4 mt-2",children:[(0,r.jsx)("p",{className:"px-4 text-xs font-semibold text-text-muted/60 uppercase tracking-wider mb-2",children:"Debug"}),p.map(t=>(0,r.jsxs)(o(),{href:t.href,onClick:e,className:(0,c.cn)("flex items-center gap-3 px-4 py-2 rounded-lg transition-all group",v(t.href)?"bg-primary/10 text-primary":"text-text-muted hover:bg-surface/50 hover:text-text-main"),children:[(0,r.jsx)("span",{className:(0,c.cn)("material-symbols-outlined text-[18px]",v(t.href)?"fill-1":"group-hover:text-primary transition-colors"),children:t.icon}),(0,r.jsx)("span",{className:"text-sm font-medium",children:t.label})]},t.href))]}),(0,r.jsxs)("div",{className:"pt-4 mt-2",children:[(0,r.jsx)("p",{className:"px-4 text-xs font-semibold text-text-muted/60 uppercase tracking-wider mb-2",children:"System"}),b.map(t=>(0,r.jsxs)(o(),{href:t.href,onClick:e,className:(0,c.cn)("flex items-center gap-3 px-4 py-2 rounded-lg transition-all group",v(t.href)?"bg-primary/10 text-primary":"text-text-muted hover:bg-surface/50 hover:text-text-main"),children:[(0,r.jsx)("span",{className:(0,c.cn)("material-symbols-outlined text-[18px]",v(t.href)?"fill-1":"group-hover:text-primary transition-colors"),children:t.icon}),(0,r.jsx)("span",{className:"text-sm font-medium",children:t.label})]},t.href))]})]}),(0,r.jsxs)("div",{className:"p-3 border-t border-black/5 dark:border-white/5",children:[(0,r.jsxs)("div",{className:"flex items-start gap-2 p-2 rounded-lg bg-surface/50 mb-2",children:[(0,r.jsx)("div",{className:"flex items-center justify-center size-6 rounded-md bg-blue-500/10 text-blue-500 shrink-0 mt-0.5",children:(0,r.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"info"})}),(0,r.jsx)("div",{className:"flex flex-col",children:(0,r.jsx)("span",{className:"text-xs font-medium text-text-main leading-relaxed",children:"Service is running in terminal. You can close this web page. Shutdown will stop the service."})})]}),(0,r.jsx)(x.default,{variant:"outline",fullWidth:!0,icon:"power_settings_new",onClick:()=>l(!0),className:"text-red-500 border-red-200 hover:bg-red-50 hover:border-red-300",children:"Shutdown"})]})]}),(0,r.jsx)(u.ConfirmModal,{isOpen:s,onClose:()=>l(!1),onConfirm:N,title:"Close Proxy",message:"Are you sure you want to close the proxy server?",confirmText:"Close",cancelText:"Cancel",variant:"danger",loading:n}),f&&(0,r.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/80 backdrop-blur-sm",children:(0,r.jsxs)("div",{className:"text-center p-8",children:[(0,r.jsx)("div",{className:"flex items-center justify-center size-16 rounded-full bg-red-500/20 text-red-500 mx-auto mb-4",children:(0,r.jsx)("span",{className:"material-symbols-outlined text-[32px]",children:"power_off"})}),(0,r.jsx)("h2",{className:"text-xl font-semibold text-white mb-2",children:"Server Disconnected"}),(0,r.jsx)("p",{className:"text-text-muted mb-6",children:"The proxy server has been stopped."}),(0,r.jsx)(x.default,{variant:"secondary",onClick:()=>globalThis.location.reload(),children:"Reload Page"})]})})]})}f.propTypes={onClose:n().func}},94230:(e,t,s)=>{s.d(t,{default:()=>d});var r=s(95155),a=s(12115),l=s(14051),n=s.n(l),i=s(35497),o=s(11059);function d({isOpen:e,provider:t,onSuccess:s,onClose:l}){let[n,d]=(0,a.useState)("loading"),[c,m]=(0,a.useState)(""),[x,u]=(0,a.useState)(null),[h,p]=(0,a.useState)(""),[b,f]=(0,a.useState)(null),{copied:g,copy:j}=(0,o.C)();(0,a.useEffect)(()=>{e&&t&&(async()=>{try{f(null),d("loading");let e=await fetch(`/api/oauth/kiro/social-authorize?provider=${t}`),s=await e.json();if(!e.ok)throw Error(s.error);u(s),m(s.authUrl),d("input"),window.open(s.authUrl,"_blank")}catch(e){f(e.message),d("error")}})()},[e,t]);let y=async()=>{try{let e;f(null);try{e=new URL(h)}catch(e){throw Error("Invalid callback URL format")}let r=e.searchParams.get("code");e.searchParams.get("state");let a=e.searchParams.get("error");if(a)throw Error(e.searchParams.get("error_description")||a);if(!r)throw Error("No authorization code found in URL");let l=await fetch("/api/oauth/kiro/social-exchange",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({code:r,codeVerifier:x.codeVerifier,provider:t})}),n=await l.json();if(!l.ok)throw Error(n.error);d("success"),s?.()}catch(e){f(e.message),d("error")}},v="google"===t?"Google":"GitHub";return(0,r.jsx)(i.aF,{isOpen:e,title:`Connect Kiro via ${v}`,onClose:l,size:"lg",children:(0,r.jsxs)("div",{className:"flex flex-col gap-4",children:["loading"===n&&(0,r.jsxs)("div",{className:"text-center py-6",children:[(0,r.jsx)("div",{className:"size-16 mx-auto mb-4 rounded-full bg-primary/10 flex items-center justify-center",children:(0,r.jsx)("span",{className:"material-symbols-outlined text-3xl text-primary animate-spin",children:"progress_activity"})}),(0,r.jsx)("h3",{className:"text-lg font-semibold mb-2",children:"Initializing..."}),(0,r.jsxs)("p",{className:"text-sm text-text-muted",children:["Setting up ",v," authentication"]})]}),"input"===n&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)("div",{className:"space-y-4",children:[(0,r.jsxs)("div",{children:[(0,r.jsx)("p",{className:"text-sm font-medium mb-2",children:"Step 1: Open this URL in your browser"}),(0,r.jsxs)("div",{className:"flex gap-2",children:[(0,r.jsx)(i.pd,{value:c,readOnly:!0,className:"flex-1 font-mono text-xs"}),(0,r.jsx)(i.$n,{variant:"secondary",icon:"auth_url"===g?"check":"content_copy",onClick:()=>j(c,"auth_url"),children:"Copy"})]})]}),(0,r.jsxs)("div",{children:[(0,r.jsx)("p",{className:"text-sm font-medium mb-2",children:"Step 2: Paste the callback URL here"}),(0,r.jsx)("p",{className:"text-xs text-text-muted mb-2",children:"After authorization, copy the full URL from your browser address bar."}),(0,r.jsx)(i.pd,{value:h,onChange:e=>p(e.target.value),placeholder:"kiro://kiro.kiroAgent/authenticate-success?code=...",className:"font-mono text-xs"})]})]}),(0,r.jsxs)("div",{className:"flex gap-2",children:[(0,r.jsx)(i.$n,{onClick:y,fullWidth:!0,disabled:!h,children:"Connect"}),(0,r.jsx)(i.$n,{onClick:l,variant:"ghost",fullWidth:!0,children:"Cancel"})]})]}),"success"===n&&(0,r.jsxs)("div",{className:"text-center py-6",children:[(0,r.jsx)("div",{className:"size-16 mx-auto mb-4 rounded-full bg-green-100 dark:bg-green-900/30 flex items-center justify-center",children:(0,r.jsx)("span",{className:"material-symbols-outlined text-3xl text-green-600",children:"check_circle"})}),(0,r.jsx)("h3",{className:"text-lg font-semibold mb-2",children:"Connected Successfully!"}),(0,r.jsxs)("p",{className:"text-sm text-text-muted mb-4",children:["Your Kiro account via ",v," has been connected."]}),(0,r.jsx)(i.$n,{onClick:l,fullWidth:!0,children:"Done"})]}),"error"===n&&(0,r.jsxs)("div",{className:"text-center py-6",children:[(0,r.jsx)("div",{className:"size-16 mx-auto mb-4 rounded-full bg-red-100 dark:bg-red-900/30 flex items-center justify-center",children:(0,r.jsx)("span",{className:"material-symbols-outlined text-3xl text-red-600",children:"error"})}),(0,r.jsx)("h3",{className:"text-lg font-semibold mb-2",children:"Connection Failed"}),(0,r.jsx)("p",{className:"text-sm text-red-600 mb-4",children:b}),(0,r.jsxs)("div",{className:"flex gap-2",children:[(0,r.jsx)(i.$n,{onClick:()=>d("input"),variant:"secondary",fullWidth:!0,children:"Try Again"}),(0,r.jsx)(i.$n,{onClick:l,variant:"ghost",fullWidth:!0,children:"Cancel"})]})]})]})})}d.propTypes={isOpen:n().bool.isRequired,provider:n().oneOf(["google","github"]).isRequired,onSuccess:n().func,onClose:n().func.isRequired}},98542:(e,t,s)=>{s.d(t,{default:()=>l});var r=s(95155),a=s(31474);function l({checked:e=!1,onChange:t,label:s,description:l,disabled:n=!1,size:i="md",className:o}){let d={sm:{track:"w-8 h-4",thumb:"size-3",translate:"translate-x-4"},md:{track:"w-11 h-6",thumb:"size-5",translate:"translate-x-5"},lg:{track:"w-14 h-7",thumb:"size-6",translate:"translate-x-7"}};return(0,r.jsxs)("div",{className:(0,a.cn)("flex items-center gap-3",n&&"opacity-50 cursor-not-allowed",o),children:[(0,r.jsx)("button",{type:"button",role:"switch","aria-checked":e,disabled:n,onClick:()=>{!n&&t&&t(!e)},className:(0,a.cn)("relative inline-flex shrink-0 cursor-pointer rounded-full","transition-colors duration-200 ease-in-out","focus:outline-none focus:ring-1 focus:ring-primary/30",e?"bg-primary":"bg-black/10 dark:bg-white/20",d[i].track,n&&"cursor-not-allowed"),children:(0,r.jsx)("span",{className:(0,a.cn)("pointer-events-none inline-block rounded-full bg-white shadow-sm","transform transition duration-200 ease-in-out",e?d[i].translate:"translate-x-0.5",d[i].thumb,"mt-0.5")})}),(s||l)&&(0,r.jsxs)("div",{className:"flex flex-col",children:[s&&(0,r.jsx)("span",{className:"text-sm font-medium text-text-main",children:s}),l&&(0,r.jsx)("span",{className:"text-xs text-text-muted",children:l})]})]})}}}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[4335],{62882:(e,t,n)=>{n.d(t,{Gc:()=>tm,h7:()=>eb});var o,r,i=n(95155),a=n(12115),l=n(60336),s=n(84867),d=n(939),c=n(22822);n(47650);let u=(0,a.createContext)(null),g=u.Provider,f=s.xc.error001();function p(e,t){let n=(0,a.useContext)(u);if(null===n)throw Error(f);return(0,d.n)(n,e,t)}function h(){let e=(0,a.useContext)(u);if(null===e)throw Error(f);return(0,a.useMemo)(()=>({getState:e.getState,setState:e.setState,subscribe:e.subscribe}),[e])}let m={display:"none"},y={position:"absolute",width:1,height:1,margin:-1,border:0,padding:0,overflow:"hidden",clip:"rect(0px, 0px, 0px, 0px)",clipPath:"inset(100%)"},b="react-flow__node-desc",S="react-flow__edge-desc",v=e=>e.ariaLiveMessage,x=e=>e.ariaLabelConfig;function w({rfId:e}){let t=p(v);return(0,i.jsx)("div",{id:`react-flow__aria-live-${e}`,"aria-live":"assertive","aria-atomic":"true",style:y,children:t})}function C({rfId:e,disableKeyboardA11y:t}){let n=p(x);return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)("div",{id:`${b}-${e}`,style:m,children:t?n["node.a11yDescription.default"]:n["node.a11yDescription.keyboardDisabled"]}),(0,i.jsx)("div",{id:`${S}-${e}`,style:m,children:n["edge.a11yDescription.default"]}),!t&&(0,i.jsx)(w,{rfId:e})]})}let E=(0,a.forwardRef)(({position:e="top-left",children:t,className:n,style:o,...r},a)=>{let s=`${e}`.split("-");return(0,i.jsx)("div",{className:(0,l.A)(["react-flow__panel",n,...s]),style:o,ref:a,...r,children:t})});function N({proOptions:e,position:t="bottom-right"}){return e?.hideAttribution?null:(0,i.jsx)(E,{position:t,className:"react-flow__attribution","data-message":"Please only hide this attribution when you are subscribed to React Flow Pro: https://pro.reactflow.dev",children:(0,i.jsx)("a",{href:"https://reactflow.dev",target:"_blank",rel:"noopener noreferrer","aria-label":"React Flow attribution",children:"React Flow"})})}E.displayName="Panel";let k=e=>{let t=[],n=[];for(let[,n]of e.nodeLookup)n.selected&&t.push(n.internals.userNode);for(let[,t]of e.edgeLookup)t.selected&&n.push(t);return{selectedNodes:t,selectedEdges:n}},M=e=>e.id;function P(e,t){return(0,c.x)(e.selectedNodes.map(M),t.selectedNodes.map(M))&&(0,c.x)(e.selectedEdges.map(M),t.selectedEdges.map(M))}function D({onSelectionChange:e}){let t=h(),{selectedNodes:n,selectedEdges:o}=p(k,P);return(0,a.useEffect)(()=>{let r={nodes:n,edges:o};e?.(r),t.getState().onSelectionChangeHandlers.forEach(e=>e(r))},[n,o,e]),null}let I=e=>!!e.onSelectionChangeHandlers;function O({onSelectionChange:e}){let t=p(I);return e||t?(0,i.jsx)(D,{onSelectionChange:e}):null}let R=[0,0],A={x:0,y:0,zoom:1},j=["nodes","edges","defaultNodes","defaultEdges","onConnect","onConnectStart","onConnectEnd","onClickConnectStart","onClickConnectEnd","nodesDraggable","autoPanOnNodeFocus","nodesConnectable","nodesFocusable","edgesFocusable","edgesReconnectable","elevateNodesOnSelect","elevateEdgesOnSelect","minZoom","maxZoom","nodeExtent","onNodesChange","onEdgesChange","elementsSelectable","connectionMode","snapGrid","snapToGrid","translateExtent","connectOnClick","defaultEdgeOptions","fitView","fitViewOptions","onNodesDelete","onEdgesDelete","onDelete","onNodeDrag","onNodeDragStart","onNodeDragStop","onSelectionDrag","onSelectionDragStart","onSelectionDragStop","onMoveStart","onMove","onMoveEnd","noPanClassName","nodeOrigin","autoPanOnConnect","autoPanOnNodeDrag","onError","connectionRadius","isValidConnection","selectNodesOnDrag","nodeDragThreshold","connectionDragThreshold","onBeforeDelete","debug","autoPanSpeed","ariaLabelConfig","zIndexMode","rfId"],_=e=>({setNodes:e.setNodes,setEdges:e.setEdges,setMinZoom:e.setMinZoom,setMaxZoom:e.setMaxZoom,setTranslateExtent:e.setTranslateExtent,setNodeExtent:e.setNodeExtent,reset:e.reset,setDefaultNodesAndEdges:e.setDefaultNodesAndEdges}),L={translateExtent:s.ZO,nodeOrigin:R,minZoom:.5,maxZoom:2,elementsSelectable:!0,noPanClassName:"nopan",rfId:"1"};function B(e){let{setNodes:t,setEdges:n,setMinZoom:o,setMaxZoom:r,setTranslateExtent:i,setNodeExtent:l,reset:d,setDefaultNodesAndEdges:u}=p(_,c.x),g=h();(0,a.useEffect)(()=>(u(e.defaultNodes,e.defaultEdges),()=>{f.current=L,d()}),[]);let f=(0,a.useRef)(L);return(0,a.useEffect)(()=>{for(let a of j){let d=e[a];d!==f.current[a]&&void 0!==e[a]&&("nodes"===a?t(d):"edges"===a?n(d):"minZoom"===a?o(d):"maxZoom"===a?r(d):"translateExtent"===a?i(d):"nodeExtent"===a?l(d):"ariaLabelConfig"===a?g.setState({ariaLabelConfig:(0,s.Q6)(d)}):"fitView"===a?g.setState({fitViewQueued:d}):"fitViewOptions"===a?g.setState({fitViewOptions:d}):g.setState({[a]:d}))}f.current=e},j.map(t=>e[t])),null}function z(){return"u"<typeof window||!window.matchMedia?null:window.matchMedia("(prefers-color-scheme: dark)")}let $="u">typeof document?document:null;function V(e=null,t={target:$,actInsideInputWithModifier:!0}){let[n,o]=(0,a.useState)(!1),r=(0,a.useRef)(!1),i=(0,a.useRef)(new Set([])),[l,d]=(0,a.useMemo)(()=>{if(null!==e){let t=(Array.isArray(e)?e:[e]).filter(e=>"string"==typeof e).map(e=>e.replace("+","\n").replace("\n\n","\n+").split("\n")),n=t.reduce((e,t)=>e.concat(...t),[]);return[t,n]}return[[],[]]},[e]);return(0,a.useEffect)(()=>{let n=t?.target??$,a=t?.actInsideInputWithModifier??!0;if(null!==e){let e=e=>{if(r.current=e.ctrlKey||e.metaKey||e.shiftKey||e.altKey,(!r.current||r.current&&!a)&&(0,s.v5)(e))return!1;let n=F(e.code,d);if(i.current.add(e[n]),T(l,i.current,!1)){let n=e.composedPath?.()?.[0]||e.target,i=n?.nodeName==="BUTTON"||n?.nodeName==="A";!1!==t.preventDefault&&(r.current||!i)&&e.preventDefault(),o(!0)}},c=e=>{let t=F(e.code,d);T(l,i.current,!0)?(o(!1),i.current.clear()):i.current.delete(e[t]),"Meta"===e.key&&i.current.clear(),r.current=!1},u=()=>{i.current.clear(),o(!1)};return n?.addEventListener("keydown",e),n?.addEventListener("keyup",c),window.addEventListener("blur",u),window.addEventListener("contextmenu",u),()=>{n?.removeEventListener("keydown",e),n?.removeEventListener("keyup",c),window.removeEventListener("blur",u),window.removeEventListener("contextmenu",u)}}},[e,o]),n}function T(e,t,n){return e.filter(e=>n||e.length===t.size).some(e=>e.every(e=>t.has(e)))}function F(e,t){return t.includes(e)?"code":"key"}function H(e,t){let n=[],o=new Map,r=[];for(let t of e)if("add"===t.type){r.push(t);continue}else if("remove"===t.type||"replace"===t.type)o.set(t.id,[t]);else{let e=o.get(t.id);e?e.push(t):o.set(t.id,[t])}for(let e of t){let t=o.get(e.id);if(!t){n.push(e);continue}if("remove"===t[0].type)continue;if("replace"===t[0].type){n.push({...t[0].item});continue}let r={...e};for(let e of t){var i=e,a=r;switch(i.type){case"select":a.selected=i.selected;break;case"position":void 0!==i.position&&(a.position=i.position),void 0!==i.dragging&&(a.dragging=i.dragging);break;case"dimensions":void 0!==i.dimensions&&(a.measured={...i.dimensions},i.setAttributes&&((!0===i.setAttributes||"width"===i.setAttributes)&&(a.width=i.dimensions.width),(!0===i.setAttributes||"height"===i.setAttributes)&&(a.height=i.dimensions.height))),"boolean"==typeof i.resizing&&(a.resizing=i.resizing)}}n.push(r)}return r.length&&r.forEach(e=>{void 0!==e.index?n.splice(e.index,0,{...e.item}):n.push({...e.item})}),n}function Z(e,t){return{id:e,type:"select",selected:t}}function X(e,t=new Set,n=!1){let o=[];for(let[r,i]of e){let e=t.has(r);(void 0!==i.selected||e)&&i.selected!==e&&(n&&(i.selected=e),o.push(Z(i.id,e)))}return o}function K({items:e=[],lookup:t}){let n=[],o=new Map(e.map(e=>[e.id,e]));for(let[o,r]of e.entries()){let e=t.get(r.id),i=e?.internals?.userNode??e;void 0!==i&&i!==r&&n.push({id:r.id,item:r,type:"replace"}),void 0===i&&n.push({item:r,type:"add",index:o})}for(let[e]of t)void 0===o.get(e)&&n.push({id:e,type:"remove"});return n}function W(e){return{id:e.id,type:"remove"}}let Y=e=>(0,s.oB)(e);function Q(e){return(0,a.forwardRef)(e)}let U="u">typeof window?a.useLayoutEffect:a.useEffect;function G(e){let[t,n]=(0,a.useState)(BigInt(0)),[o]=(0,a.useState)(()=>{var e;let t;return e=()=>n(e=>e+BigInt(1)),t=[],{get:()=>t,reset:()=>{t=[]},push:n=>{t.push(n),e()}}});return U(()=>{let t=o.get();t.length&&(e(t),o.reset())},[t]),o}let q=(0,a.createContext)(null);function J({children:e}){let t=h(),n=G((0,a.useCallback)(e=>{let{nodes:n=[],setNodes:o,hasDefaultNodes:r,onNodesChange:i,nodeLookup:a,fitViewQueued:l,onNodesChangeMiddlewareMap:s}=t.getState(),d=n;for(let t of e)d="function"==typeof t?t(d):t;let c=K({items:d,lookup:a});for(let e of s.values())c=e(c);r&&o(d),c.length>0?i?.(c):l&&window.requestAnimationFrame(()=>{let{fitViewQueued:e,nodes:n,setNodes:o}=t.getState();e&&o(n)})},[])),o=G((0,a.useCallback)(e=>{let{edges:n=[],setEdges:o,hasDefaultEdges:r,onEdgesChange:i,edgeLookup:a}=t.getState(),l=n;for(let t of e)l="function"==typeof t?t(l):t;r?o(l):i&&i(K({items:l,lookup:a}))},[])),r=(0,a.useMemo)(()=>({nodeQueue:n,edgeQueue:o}),[]);return(0,i.jsx)(q.Provider,{value:r,children:e})}let ee=e=>!!e.panZoom;function et(){let e,t=(e=h(),(0,a.useMemo)(()=>({zoomIn:t=>{let{panZoom:n}=e.getState();return n?n.scaleBy(1.2,{duration:t?.duration}):Promise.resolve(!1)},zoomOut:t=>{let{panZoom:n}=e.getState();return n?n.scaleBy(1/1.2,{duration:t?.duration}):Promise.resolve(!1)},zoomTo:(t,n)=>{let{panZoom:o}=e.getState();return o?o.scaleTo(t,{duration:n?.duration}):Promise.resolve(!1)},getZoom:()=>e.getState().transform[2],setViewport:async(t,n)=>{let{transform:[o,r,i],panZoom:a}=e.getState();return a?(await a.setViewport({x:t.x??o,y:t.y??r,zoom:t.zoom??i},n),Promise.resolve(!0)):Promise.resolve(!1)},getViewport:()=>{let[t,n,o]=e.getState().transform;return{x:t,y:n,zoom:o}},setCenter:async(t,n,o)=>e.getState().setCenter(t,n,o),fitBounds:async(t,n)=>{let{width:o,height:r,minZoom:i,maxZoom:a,panZoom:l}=e.getState(),d=(0,s.R4)(t,o,r,i,a,n?.padding??.1);return l?(await l.setViewport(d,{duration:n?.duration,ease:n?.ease,interpolate:n?.interpolate}),Promise.resolve(!0)):Promise.resolve(!1)},screenToFlowPosition:(t,n={})=>{let{transform:o,snapGrid:r,snapToGrid:i,domNode:a}=e.getState();if(!a)return t;let{x:l,y:d}=a.getBoundingClientRect(),c={x:t.x-l,y:t.y-d},u=n.snapGrid??r,g=n.snapToGrid??i;return(0,s.Ff)(c,o,g,u)},flowToScreenPosition:t=>{let{transform:n,domNode:o}=e.getState();if(!o)return t;let{x:r,y:i}=o.getBoundingClientRect(),a=(0,s.zj)(t,n);return{x:a.x+r,y:a.y+i}}}),[])),n=h(),o=function(){let e=(0,a.useContext)(q);if(!e)throw Error("useBatchContext must be used within a BatchProvider");return e}(),r=p(ee),i=(0,a.useMemo)(()=>{let e=e=>n.getState().nodeLookup.get(e),t=e=>{o.nodeQueue.push(e)},r=e=>{o.edgeQueue.push(e)},i=e=>{let{nodeLookup:t,nodeOrigin:o}=n.getState(),r=Y(e)?e:t.get(e.id),i=r.parentId?(0,s.us)(r.position,r.measured,r.parentId,t,o):r.position,a={...r,position:i,width:r.measured?.width??r.width,height:r.measured?.height??r.height};return(0,s.kM)(a)},a=(e,n,o={replace:!1})=>{t(t=>t.map(t=>{if(t.id===e){let e="function"==typeof n?n(t):n;return o.replace&&Y(e)?e:{...t,...e}}return t}))},l=(e,t,n={replace:!1})=>{r(o=>o.map(o=>{if(o.id===e){let e="function"==typeof t?t(o):t;return n.replace&&(0,s.b$)(e)?e:{...o,...e}}return o}))};return{getNodes:()=>n.getState().nodes.map(e=>({...e})),getNode:t=>e(t)?.internals.userNode,getInternalNode:e,getEdges:()=>{let{edges:e=[]}=n.getState();return e.map(e=>({...e}))},getEdge:e=>n.getState().edgeLookup.get(e),setNodes:t,setEdges:r,addNodes:e=>{let t=Array.isArray(e)?e:[e];o.nodeQueue.push(e=>[...e,...t])},addEdges:e=>{let t=Array.isArray(e)?e:[e];o.edgeQueue.push(e=>[...e,...t])},toObject:()=>{let{nodes:e=[],edges:t=[],transform:o}=n.getState(),[r,i,a]=o;return{nodes:e.map(e=>({...e})),edges:t.map(e=>({...e})),viewport:{x:r,y:i,zoom:a}}},deleteElements:async({nodes:e=[],edges:t=[]})=>{let{nodes:o,edges:r,onNodesDelete:i,onEdgesDelete:a,triggerNodeChanges:l,triggerEdgeChanges:d,onDelete:c,onBeforeDelete:u}=n.getState(),{nodes:g,edges:f}=await (0,s.Tq)({nodesToRemove:e,edgesToRemove:t,nodes:o,edges:r,onBeforeDelete:u}),p=f.length>0,h=g.length>0;if(p){let e=f.map(W);a?.(f),d(e)}if(h){let e=g.map(W);i?.(g),l(e)}return(h||p)&&c?.({nodes:g,edges:f}),{deletedNodes:g,deletedEdges:f}},getIntersectingNodes:(e,t=!0,o)=>{let r=(0,s.mW)(e),a=r?e:i(e),l=void 0!==o;return a?(o||n.getState().nodes).filter(o=>{let i=n.getState().nodeLookup.get(o.id);if(i&&!r&&(o.id===e.id||!i.internals.positionAbsolute))return!1;let d=(0,s.kM)(l?o:i),c=(0,s.X6)(d,a);return t&&c>0||c>=d.width*d.height||c>=a.width*a.height}):[]},isNodeIntersecting:(e,t,n=!0)=>{let o=(0,s.mW)(e)?e:i(e);if(!o)return!1;let r=(0,s.X6)(o,t);return n&&r>0||r>=t.width*t.height||r>=o.width*o.height},updateNode:a,updateNodeData:(e,t,n={replace:!1})=>{a(e,e=>{let o="function"==typeof t?t(e):t;return n.replace?{...e,data:o}:{...e,data:{...e.data,...o}}},n)},updateEdge:l,updateEdgeData:(e,t,n={replace:!1})=>{l(e,e=>{let o="function"==typeof t?t(e):t;return n.replace?{...e,data:o}:{...e,data:{...e.data,...o}}},n)},getNodesBounds:e=>{let{nodeLookup:t,nodeOrigin:o}=n.getState();return(0,s.Jo)(e,{nodeLookup:t,nodeOrigin:o})},getHandleConnections:({type:e,id:t,nodeId:o})=>Array.from(n.getState().connectionLookup.get(`${o}-${e}${t?`-${t}`:""}`)?.values()??[]),getNodeConnections:({type:e,handleId:t,nodeId:o})=>Array.from(n.getState().connectionLookup.get(`${o}${e?t?`-${e}-${t}`:`-${e}`:""}`)?.values()??[]),fitView:async e=>{let t=n.getState().fitViewResolver??(0,s.YN)();return n.setState({fitViewQueued:!0,fitViewOptions:e,fitViewResolver:t}),o.nodeQueue.push(e=>[...e]),t.promise}}},[]);return(0,a.useMemo)(()=>({...i,...t,viewportInitialized:r}),[r])}let en=e=>e.selected,eo="u">typeof window?window:void 0,er={position:"absolute",width:"100%",height:"100%",top:0,left:0},ei=e=>({userSelectionActive:e.userSelectionActive,lib:e.lib,connectionInProgress:e.connection.inProgress});function ea({onPaneContextMenu:e,zoomOnScroll:t=!0,zoomOnPinch:n=!0,panOnScroll:o=!1,panOnScrollSpeed:r=.5,panOnScrollMode:l=s.ny.Free,zoomOnDoubleClick:d=!0,panOnDrag:u=!0,defaultViewport:g,translateExtent:f,minZoom:m,maxZoom:y,zoomActivationKeyCode:b,preventScrolling:S=!0,children:v,noWheelClassName:x,noPanClassName:w,onViewportChange:C,isControlledViewport:E,paneClickDistance:N,selectionOnDrag:k}){let M,P=h(),D=(0,a.useRef)(null),{userSelectionActive:I,lib:O,connectionInProgress:R}=p(ei,c.x),A=V(b),j=(0,a.useRef)();M=h(),(0,a.useEffect)(()=>{let e=()=>{if(!D.current||!(D.current.checkVisibility?.()??!0))return!1;let e=(0,s.Eo)(D.current);(0===e.height||0===e.width)&&M.getState().onError?.("004",s.xc.error004()),M.setState({width:e.width||500,height:e.height||500})};if(D.current){e(),window.addEventListener("resize",e);let t=new ResizeObserver(()=>e());return t.observe(D.current),()=>{window.removeEventListener("resize",e),t&&D.current&&t.unobserve(D.current)}}},[]);let _=(0,a.useCallback)(e=>{C?.({x:e[0],y:e[1],zoom:e[2]}),E||P.setState({transform:e})},[C,E]);return(0,a.useEffect)(()=>{if(D.current){j.current=(0,s.kO)({domNode:D.current,minZoom:m,maxZoom:y,translateExtent:f,viewport:g,onDraggingChange:e=>P.setState(t=>t.paneDragging===e?t:{paneDragging:e}),onPanZoomStart:(e,t)=>{let{onViewportChangeStart:n,onMoveStart:o}=P.getState();o?.(e,t),n?.(t)},onPanZoom:(e,t)=>{let{onViewportChange:n,onMove:o}=P.getState();o?.(e,t),n?.(t)},onPanZoomEnd:(e,t)=>{let{onViewportChangeEnd:n,onMoveEnd:o}=P.getState();o?.(e,t),n?.(t)}});let{x:e,y:t,zoom:n}=j.current.getViewport();return P.setState({panZoom:j.current,transform:[e,t,n],domNode:D.current.closest(".react-flow")}),()=>{j.current?.destroy()}}},[]),(0,a.useEffect)(()=>{j.current?.update({onPaneContextMenu:e,zoomOnScroll:t,zoomOnPinch:n,panOnScroll:o,panOnScrollSpeed:r,panOnScrollMode:l,zoomOnDoubleClick:d,panOnDrag:u,zoomActivationKeyPressed:A,preventScrolling:S,noPanClassName:w,userSelectionActive:I,noWheelClassName:x,lib:O,onTransformChange:_,connectionInProgress:R,selectionOnDrag:k,paneClickDistance:N})},[e,t,n,o,r,l,d,u,A,S,w,I,x,O,_,R,k,N]),(0,i.jsx)("div",{className:"react-flow__renderer",ref:D,style:er,children:v})}let el=e=>({userSelectionActive:e.userSelectionActive,userSelectionRect:e.userSelectionRect});function es(){let{userSelectionActive:e,userSelectionRect:t}=p(el,c.x);return e&&t?(0,i.jsx)("div",{className:"react-flow__selection react-flow__container",style:{width:t.width,height:t.height,transform:`translate(${t.x}px, ${t.y}px)`}}):null}let ed=(e,t)=>n=>{n.target===t.current&&e?.(n)},ec=e=>({userSelectionActive:e.userSelectionActive,elementsSelectable:e.elementsSelectable,connectionInProgress:e.connection.inProgress,dragging:e.paneDragging});function eu({isSelecting:e,selectionKeyPressed:t,selectionMode:n=s.Qc.Full,panOnDrag:o,paneClickDistance:r,selectionOnDrag:d,onSelectionStart:u,onSelectionEnd:g,onPaneClick:f,onPaneContextMenu:m,onPaneScroll:y,onPaneMouseEnter:b,onPaneMouseMove:S,onPaneMouseLeave:v,children:x}){let w=h(),{userSelectionActive:C,elementsSelectable:E,dragging:N,connectionInProgress:k}=p(ec,c.x),M=E&&(e||C),P=(0,a.useRef)(null),D=(0,a.useRef)(),I=(0,a.useRef)(new Set),O=(0,a.useRef)(new Set),R=(0,a.useRef)(!1),A=e=>{if(R.current||k){R.current=!1;return}f?.(e),w.getState().resetSelectedElements(),w.setState({nodesSelectionActive:!1})},j=!0===o||Array.isArray(o)&&o.includes(0);return(0,i.jsxs)("div",{className:(0,l.A)(["react-flow__pane",{draggable:j,dragging:N,selection:e}]),onClick:M?void 0:ed(A,P),onContextMenu:ed(e=>{Array.isArray(o)&&o?.includes(2)?e.preventDefault():m?.(e)},P),onWheel:ed(y?e=>y(e):void 0,P),onPointerEnter:M?void 0:b,onPointerMove:M?e=>{let{userSelectionRect:o,transform:i,nodeLookup:a,edgeLookup:l,connectionLookup:d,triggerNodeChanges:c,triggerEdgeChanges:g,defaultEdgeOptions:f,resetSelectedElements:p}=w.getState();if(!D.current||!o)return;let{x:h,y:m}=(0,s.q1)(e.nativeEvent,D.current),{startX:y,startY:b}=o;if(!R.current){if(Math.hypot(h-y,m-b)<=(t?0:r))return;p(),u?.(e)}R.current=!0;let S={startX:y,startY:b,x:h<y?h:y,y:m<b?m:b,width:Math.abs(h-y),height:Math.abs(m-b)},v=I.current,x=O.current;I.current=new Set((0,s.U$)(a,S,i,n===s.Qc.Partial,!0).map(e=>e.id)),O.current=new Set;let C=f?.selectable??!0;for(let e of I.current){let t=d.get(e);if(t)for(let{edgeId:e}of t.values()){let t=l.get(e);t&&(t.selectable??C)&&O.current.add(e)}}(0,s._s)(v,I.current)||c(X(a,I.current,!0)),(0,s._s)(x,O.current)||g(X(l,O.current)),w.setState({userSelectionRect:S,userSelectionActive:!0,nodesSelectionActive:!1})}:S,onPointerUp:M?e=>{0===e.button&&(e.target?.releasePointerCapture?.(e.pointerId),!C&&e.target===P.current&&w.getState().userSelectionRect&&A?.(e),w.setState({userSelectionActive:!1,userSelectionRect:null}),R.current&&(g?.(e),w.setState({nodesSelectionActive:I.current.size>0})))}:void 0,onPointerDownCapture:M?n=>{let{domNode:o}=w.getState();if(D.current=o?.getBoundingClientRect(),!D.current)return;let r=n.target===P.current;if(!r&&n.target.closest(".nokey")||!e||!(d&&r||t)||0!==n.button||!n.isPrimary)return;n.target?.setPointerCapture?.(n.pointerId),R.current=!1;let{x:i,y:a}=(0,s.q1)(n.nativeEvent,D.current);w.setState({userSelectionRect:{width:0,height:0,startX:i,startY:a,x:i,y:a}}),r||(n.stopPropagation(),n.preventDefault())}:void 0,onClickCapture:M?e=>{R.current&&(e.stopPropagation(),R.current=!1)}:void 0,onPointerLeave:v,ref:P,style:er,children:[x,(0,i.jsx)(es,{})]})}function eg({id:e,store:t,unselect:n=!1,nodeRef:o}){let{addSelectedNodes:r,unselectNodesAndEdges:i,multiSelectionActive:a,nodeLookup:l,onError:d}=t.getState(),c=l.get(e);c?(t.setState({nodesSelectionActive:!1}),c.selected?(n||c.selected&&a)&&(i({nodes:[c],edges:[]}),requestAnimationFrame(()=>o?.current?.blur())):r([e])):d?.("012",s.xc.error012(e))}function ef({nodeRef:e,disabled:t=!1,noDragClassName:n,handleSelector:o,nodeId:r,isSelectable:i,nodeClickDistance:l}){let d=h(),[c,u]=(0,a.useState)(!1),g=(0,a.useRef)();return(0,a.useEffect)(()=>{g.current=(0,s.I$)({getStoreItems:()=>d.getState(),onNodeMouseDown:t=>{eg({id:t,store:d,nodeRef:e})},onDragStart:()=>{u(!0)},onDragStop:()=>{u(!1)}})},[]),(0,a.useEffect)(()=>{if(!t&&e.current&&g.current)return g.current.update({noDragClassName:n,handleSelector:o,domNode:e.current,isSelectable:i,nodeId:r,nodeClickDistance:l}),()=>{g.current?.destroy()}},[n,o,t,i,e,r,l]),c}function ep(){let e=h();return(0,a.useCallback)(t=>{let{nodeExtent:n,snapToGrid:o,snapGrid:r,nodesDraggable:i,onError:a,updateNodePositions:l,nodeLookup:d,nodeOrigin:c}=e.getState(),u=new Map,g=e=>e.selected&&(e.draggable||i&&void 0===e.draggable),f=o?r[0]:5,p=o?r[1]:5,h=t.direction.x*f*t.factor,m=t.direction.y*p*t.factor;for(let[,e]of d){if(!g(e))continue;let t={x:e.internals.positionAbsolute.x+h,y:e.internals.positionAbsolute.y+m};o&&(t=(0,s.s_)(t,r));let{position:i,positionAbsolute:l}=(0,s.aE)({nodeId:e.id,nextPosition:t,nodeLookup:d,nodeExtent:n,nodeOrigin:c,onError:a});e.position=i,e.internals.positionAbsolute=l,u.set(e.id,e)}l(u)},[])}let eh=(0,a.createContext)(null),em=eh.Provider;eh.Consumer;let ey=e=>({connectOnClick:e.connectOnClick,noPanClassName:e.noPanClassName,rfId:e.rfId}),eb=(0,a.memo)(Q(function({type:e="source",position:t=s.yX.Top,isValidConnection:n,isConnectable:o=!0,isConnectableStart:r=!0,isConnectableEnd:d=!0,id:u,onConnect:g,children:f,className:m,onMouseDown:y,onTouchStart:b,...S},v){let x=u||null,w="target"===e,C=h(),E=(0,a.useContext)(eh),{connectOnClick:N,noPanClassName:k,rfId:M}=p(ey,c.x),{connectingFrom:P,connectingTo:D,clickConnecting:I,isPossibleEndHandle:O,connectionInProcess:R,clickConnectionInProcess:A,valid:j}=p(t=>{let{connectionClickStartHandle:n,connectionMode:o,connection:r}=t,{fromHandle:i,toHandle:a,isValid:l}=r,d=a?.nodeId===E&&a?.id===x&&a?.type===e;return{connectingFrom:i?.nodeId===E&&i?.id===x&&i?.type===e,connectingTo:d,clickConnecting:n?.nodeId===E&&n?.id===x&&n?.type===e,isPossibleEndHandle:o===s.WZ.Strict?i?.type!==e:E!==i?.nodeId||x!==i?.id,connectionInProcess:!!i,clickConnectionInProcess:!!n,valid:d&&l}},c.x);E||C.getState().onError?.("010",s.xc.error010());let _=e=>{let{defaultEdgeOptions:t,onConnect:n,hasDefaultEdges:o}=C.getState(),r={...t,...e};if(o){let{edges:e,setEdges:t}=C.getState();t((0,s.rN)(r,e))}n?.(r),g?.(r)},L=e=>{if(!E)return;let t=(0,s.Er)(e.nativeEvent);if(r&&(t&&0===e.button||!t)){let t=C.getState();s.aQ.onPointerDown(e.nativeEvent,{handleDomNode:e.currentTarget,autoPanOnConnect:t.autoPanOnConnect,connectionMode:t.connectionMode,connectionRadius:t.connectionRadius,domNode:t.domNode,nodeLookup:t.nodeLookup,lib:t.lib,isTarget:w,handleId:x,nodeId:E,flowId:t.rfId,panBy:t.panBy,cancelConnection:t.cancelConnection,onConnectStart:t.onConnectStart,onConnectEnd:(...e)=>C.getState().onConnectEnd?.(...e),updateConnection:t.updateConnection,onConnect:_,isValidConnection:n||((...e)=>C.getState().isValidConnection?.(...e)??!0),getTransform:()=>C.getState().transform,getFromHandle:()=>C.getState().connection.fromHandle,autoPanSpeed:t.autoPanSpeed,dragThreshold:t.connectionDragThreshold})}t?y?.(e):b?.(e)};return(0,i.jsx)("div",{"data-handleid":x,"data-nodeid":E,"data-handlepos":t,"data-id":`${M}-${E}-${x}-${e}`,className:(0,l.A)(["react-flow__handle",`react-flow__handle-${t}`,"nodrag",k,m,{source:!w,target:w,connectable:o,connectablestart:r,connectableend:d,clickconnecting:I,connectingfrom:P,connectingto:D,valid:j,connectionindicator:o&&(!R||O)&&(R||A?d:r)}]),onMouseDown:L,onTouchStart:L,onClick:N?t=>{let{onClickConnectStart:o,onClickConnectEnd:i,connectionClickStartHandle:a,connectionMode:l,isValidConnection:d,lib:c,rfId:u,nodeLookup:g,connection:f}=C.getState();if(!E||!a&&!r)return;if(!a){o?.(t.nativeEvent,{nodeId:E,handleId:x,handleType:e}),C.setState({connectionClickStartHandle:{nodeId:E,type:e,id:x}});return}let p=(0,s.oj)(t.target),h=n||d,{connection:m,isValid:y}=s.aQ.isValid(t.nativeEvent,{handle:{nodeId:E,id:x,type:e},connectionMode:l,fromNodeId:a.nodeId,fromHandleId:a.id||null,fromType:a.type,isValidConnection:h,flowId:u,doc:p,lib:c,nodeLookup:g});y&&m&&_(m);let b=structuredClone(f);delete b.inProgress,b.toPosition=b.toHandle?b.toHandle.position:null,i?.(t,b),C.setState({connectionClickStartHandle:null})}:void 0,ref:v,...S,children:f})})),eS={ArrowUp:{x:0,y:-1},ArrowDown:{x:0,y:1},ArrowLeft:{x:-1,y:0},ArrowRight:{x:1,y:0}},ev={input:function({data:e,isConnectable:t,sourcePosition:n=s.yX.Bottom}){return(0,i.jsxs)(i.Fragment,{children:[e?.label,(0,i.jsx)(eb,{type:"source",position:n,isConnectable:t})]})},default:function({data:e,isConnectable:t,targetPosition:n=s.yX.Top,sourcePosition:o=s.yX.Bottom}){return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(eb,{type:"target",position:n,isConnectable:t}),e?.label,(0,i.jsx)(eb,{type:"source",position:o,isConnectable:t})]})},output:function({data:e,isConnectable:t,targetPosition:n=s.yX.Top}){return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(eb,{type:"target",position:n,isConnectable:t}),e?.label]})},group:function(){return null}},ex=e=>{let{width:t,height:n,x:o,y:r}=(0,s.aZ)(e.nodeLookup,{filter:e=>!!e.selected});return{width:(0,s.kf)(t)?t:null,height:(0,s.kf)(n)?n:null,userSelectionActive:e.userSelectionActive,transformString:`translate(${e.transform[0]}px,${e.transform[1]}px) scale(${e.transform[2]}) translate(${o}px,${r}px)`}};function ew({onSelectionContextMenu:e,noPanClassName:t,disableKeyboardA11y:n}){let o=h(),{width:r,height:s,transformString:d,userSelectionActive:u}=p(ex,c.x),g=ep(),f=(0,a.useRef)(null);(0,a.useEffect)(()=>{n||f.current?.focus({preventScroll:!0})},[n]);let m=!u&&null!==r&&null!==s;if(ef({nodeRef:f,disabled:!m}),!m)return null;let y=e?t=>{e(t,o.getState().nodes.filter(e=>e.selected))}:void 0;return(0,i.jsx)("div",{className:(0,l.A)(["react-flow__nodesselection","react-flow__container",t]),style:{transform:d},children:(0,i.jsx)("div",{ref:f,className:"react-flow__nodesselection-rect",onContextMenu:y,tabIndex:n?void 0:-1,onKeyDown:n?void 0:e=>{Object.prototype.hasOwnProperty.call(eS,e.key)&&(e.preventDefault(),g({direction:eS[e.key],factor:e.shiftKey?4:1}))},style:{width:r,height:s}})})}let eC="u">typeof window?window:void 0,eE=e=>({nodesSelectionActive:e.nodesSelectionActive,userSelectionActive:e.userSelectionActive});function eN({children:e,onPaneClick:t,onPaneMouseEnter:n,onPaneMouseMove:o,onPaneMouseLeave:r,onPaneContextMenu:l,onPaneScroll:s,paneClickDistance:d,deleteKeyCode:u,selectionKeyCode:g,selectionOnDrag:f,selectionMode:m,onSelectionStart:y,onSelectionEnd:b,multiSelectionKeyCode:S,panActivationKeyCode:v,zoomActivationKeyCode:x,elementsSelectable:w,zoomOnScroll:C,zoomOnPinch:E,panOnScroll:N,panOnScrollSpeed:k,panOnScrollMode:M,zoomOnDoubleClick:P,panOnDrag:D,defaultViewport:I,translateExtent:O,minZoom:R,maxZoom:A,preventScrolling:j,onSelectionContextMenu:_,noWheelClassName:L,noPanClassName:B,disableKeyboardA11y:z,onViewportChange:$,isControlledViewport:T}){let{nodesSelectionActive:F,userSelectionActive:H}=p(eE,c.x),Z=V(g,{target:eC}),X=V(v,{target:eC}),K=X||D,W=X||N,Y=f&&!0!==K,Q=Z||H||Y;return!function({deleteKeyCode:e,multiSelectionKeyCode:t}){let n=h(),{deleteElements:o}=et(),r=V(e,{actInsideInputWithModifier:!1}),i=V(t,{target:eo});(0,a.useEffect)(()=>{if(r){let{edges:e,nodes:t}=n.getState();o({nodes:t.filter(en),edges:e.filter(en)}),n.setState({nodesSelectionActive:!1})}},[r]),(0,a.useEffect)(()=>{n.setState({multiSelectionActive:i})},[i])}({deleteKeyCode:u,multiSelectionKeyCode:S}),(0,i.jsx)(ea,{onPaneContextMenu:l,elementsSelectable:w,zoomOnScroll:C,zoomOnPinch:E,panOnScroll:W,panOnScrollSpeed:k,panOnScrollMode:M,zoomOnDoubleClick:P,panOnDrag:!Z&&K,defaultViewport:I,translateExtent:O,minZoom:R,maxZoom:A,zoomActivationKeyCode:x,preventScrolling:j,noWheelClassName:L,noPanClassName:B,onViewportChange:$,isControlledViewport:T,paneClickDistance:d,selectionOnDrag:Y,children:(0,i.jsxs)(eu,{onSelectionStart:y,onSelectionEnd:b,onPaneClick:t,onPaneMouseEnter:n,onPaneMouseMove:o,onPaneMouseLeave:r,onPaneContextMenu:l,onPaneScroll:s,panOnDrag:K,isSelecting:!!Q,selectionMode:m,selectionKeyPressed:Z,paneClickDistance:d,selectionOnDrag:Y,children:[e,F&&(0,i.jsx)(ew,{onSelectionContextMenu:_,noPanClassName:B,disableKeyboardA11y:z})]})})}eN.displayName="FlowRenderer";let ek=(0,a.memo)(eN),eM=e=>e.updateNodeInternals;var eP=(0,a.memo)(function({id:e,onClick:t,onMouseEnter:n,onMouseMove:o,onMouseLeave:r,onContextMenu:d,onDoubleClick:u,nodesDraggable:g,elementsSelectable:f,nodesConnectable:m,nodesFocusable:y,resizeObserver:S,noDragClassName:v,noPanClassName:x,disableKeyboardA11y:w,rfId:C,nodeTypes:E,nodeClickDistance:N,onError:k}){let{node:M,internals:P,isParent:D}=p(t=>{let n=t.nodeLookup.get(e),o=t.parentLookup.has(e);return{node:n,internals:n.internals,isParent:o}},c.x),I=M.type||"default",O=E?.[I]||ev[I];void 0===O&&(k?.("003",s.xc.error003(I)),I="default",O=E?.default||ev.default);let R=!!(M.draggable||g&&void 0===M.draggable),A=!!(M.selectable||f&&void 0===M.selectable),j=!!(M.connectable||m&&void 0===M.connectable),_=!!(M.focusable||y&&void 0===M.focusable),L=h(),B=(0,s.QE)(M),z=function({node:e,nodeType:t,hasDimensions:n,resizeObserver:o}){let r=h(),i=(0,a.useRef)(null),l=(0,a.useRef)(null),s=(0,a.useRef)(e.sourcePosition),d=(0,a.useRef)(e.targetPosition),c=(0,a.useRef)(t),u=n&&!!e.internals.handleBounds;return(0,a.useEffect)(()=>{!i.current||e.hidden||u&&l.current===i.current||(l.current&&o?.unobserve(l.current),o?.observe(i.current),l.current=i.current)},[u,e.hidden]),(0,a.useEffect)(()=>()=>{l.current&&(o?.unobserve(l.current),l.current=null)},[]),(0,a.useEffect)(()=>{if(i.current){let n=c.current!==t,o=s.current!==e.sourcePosition,a=d.current!==e.targetPosition;(n||o||a)&&(c.current=t,s.current=e.sourcePosition,d.current=e.targetPosition,r.getState().updateNodeInternals(new Map([[e.id,{id:e.id,nodeElement:i.current,force:!0}]])))}},[e.id,t,e.sourcePosition,e.targetPosition]),i}({node:M,nodeType:I,hasDimensions:B,resizeObserver:S}),$=ef({nodeRef:z,disabled:M.hidden||!R,noDragClassName:v,handleSelector:M.dragHandle,nodeId:e,isSelectable:A,nodeClickDistance:N}),V=ep();if(M.hidden)return null;let T=(0,s.uD)(M),F=void 0===M.internals.handleBounds?{width:M.width??M.initialWidth??M.style?.width,height:M.height??M.initialHeight??M.style?.height}:{width:M.width??M.style?.width,height:M.height??M.style?.height},H=A||R||t||n||o||r,Z=n?e=>n(e,{...P.userNode}):void 0,X=o?e=>o(e,{...P.userNode}):void 0,K=r?e=>r(e,{...P.userNode}):void 0,W=d?e=>d(e,{...P.userNode}):void 0,Y=u?e=>u(e,{...P.userNode}):void 0;return(0,i.jsx)("div",{className:(0,l.A)(["react-flow__node",`react-flow__node-${I}`,{[x]:R},M.className,{selected:M.selected,selectable:A,parent:D,draggable:R,dragging:$}]),ref:z,style:{zIndex:P.z,transform:`translate(${P.positionAbsolute.x}px,${P.positionAbsolute.y}px)`,pointerEvents:H?"all":"none",visibility:B?"visible":"hidden",...M.style,...F},"data-id":e,"data-testid":`rf__node-${e}`,onMouseEnter:Z,onMouseMove:X,onMouseLeave:K,onContextMenu:W,onClick:n=>{let{selectNodesOnDrag:o,nodeDragThreshold:r}=L.getState();A&&(!o||!R||r>0)&&eg({id:e,store:L,nodeRef:z}),t&&t(n,{...P.userNode})},onDoubleClick:Y,onKeyDown:_?t=>{if(!(0,s.v5)(t.nativeEvent)&&!w){if(s.tn.includes(t.key)&&A)eg({id:e,store:L,unselect:"Escape"===t.key,nodeRef:z});else if(R&&M.selected&&Object.prototype.hasOwnProperty.call(eS,t.key)){t.preventDefault();let{ariaLabelConfig:e}=L.getState();L.setState({ariaLiveMessage:e["node.a11yDescription.ariaLiveMessage"]({direction:t.key.replace("Arrow","").toLowerCase(),x:~~P.positionAbsolute.x,y:~~P.positionAbsolute.y})}),V({direction:eS[t.key],factor:t.shiftKey?4:1})}}}:void 0,tabIndex:_?0:void 0,onFocus:_?()=>{if(w||!z.current?.matches(":focus-visible"))return;let{transform:t,width:n,height:o,autoPanOnNodeFocus:r,setCenter:i}=L.getState();!r||(0,s.U$)(new Map([[e,M]]),{x:0,y:0,width:n,height:o},t,!0).length>0||i(M.position.x+T.width/2,M.position.y+T.height/2,{zoom:t[2]})}:void 0,role:M.ariaRole??(_?"group":void 0),"aria-roledescription":"node","aria-describedby":w?void 0:`${b}-${C}`,"aria-label":M.ariaLabel,...M.domAttributes,children:(0,i.jsx)(em,{value:e,children:(0,i.jsx)(O,{id:e,data:M.data,type:I,positionAbsoluteX:P.positionAbsolute.x,positionAbsoluteY:P.positionAbsolute.y,selected:M.selected??!1,selectable:A,draggable:R,deletable:M.deletable??!0,isConnectable:j,sourcePosition:M.sourcePosition,targetPosition:M.targetPosition,dragging:$,dragHandle:M.dragHandle,zIndex:P.z,parentId:M.parentId,...T})})})});let eD=e=>({nodesDraggable:e.nodesDraggable,nodesConnectable:e.nodesConnectable,nodesFocusable:e.nodesFocusable,elementsSelectable:e.elementsSelectable,onError:e.onError});function eI(e){var t;let{nodesDraggable:n,nodesConnectable:o,nodesFocusable:r,elementsSelectable:l,onError:d}=p(eD,c.x),u=(t=e.onlyRenderVisibleElements,p((0,a.useCallback)(e=>t?(0,s.U$)(e.nodeLookup,{x:0,y:0,width:e.width,height:e.height},e.transform,!0).map(e=>e.id):Array.from(e.nodeLookup.keys()),[t]),c.x)),g=function(){let e=p(eM),[t]=(0,a.useState)(()=>"u"<typeof ResizeObserver?null:new ResizeObserver(t=>{let n=new Map;t.forEach(e=>{let t=e.target.getAttribute("data-id");n.set(t,{id:t,nodeElement:e.target,force:!0})}),e(n)}));return(0,a.useEffect)(()=>()=>{t?.disconnect()},[t]),t}();return(0,i.jsx)("div",{className:"react-flow__nodes",style:er,children:u.map(t=>(0,i.jsx)(eP,{id:t,nodeTypes:e.nodeTypes,nodeExtent:e.nodeExtent,onClick:e.onNodeClick,onMouseEnter:e.onNodeMouseEnter,onMouseMove:e.onNodeMouseMove,onMouseLeave:e.onNodeMouseLeave,onContextMenu:e.onNodeContextMenu,onDoubleClick:e.onNodeDoubleClick,noDragClassName:e.noDragClassName,noPanClassName:e.noPanClassName,rfId:e.rfId,disableKeyboardA11y:e.disableKeyboardA11y,resizeObserver:g,nodesDraggable:n,nodesConnectable:o,nodesFocusable:r,elementsSelectable:l,nodeClickDistance:e.nodeClickDistance,onError:d},t))})}eI.displayName="NodeRenderer";let eO=(0,a.memo)(eI),eR={[s.TG.Arrow]:({color:e="none",strokeWidth:t=1})=>{let n={strokeWidth:t,...e&&{stroke:e}};return(0,i.jsx)("polyline",{className:"arrow",style:n,strokeLinecap:"round",fill:"none",strokeLinejoin:"round",points:"-5,-4 0,0 -5,4"})},[s.TG.ArrowClosed]:({color:e="none",strokeWidth:t=1})=>{let n={strokeWidth:t,...e&&{stroke:e,fill:e}};return(0,i.jsx)("polyline",{className:"arrowclosed",style:n,strokeLinecap:"round",strokeLinejoin:"round",points:"-5,-4 0,0 -5,4 -5,-4"})}},eA=({id:e,type:t,color:n,width:o=12.5,height:r=12.5,markerUnits:l="strokeWidth",strokeWidth:d,orient:c="auto-start-reverse"})=>{let u,g=(u=h(),(0,a.useMemo)(()=>Object.prototype.hasOwnProperty.call(eR,t)?eR[t]:(u.getState().onError?.("009",s.xc.error009(t)),null),[t]));return g?(0,i.jsx)("marker",{className:"react-flow__arrowhead",id:e,markerWidth:`${o}`,markerHeight:`${r}`,viewBox:"-10 -10 20 20",markerUnits:l,orient:c,refX:"0",refY:"0",children:(0,i.jsx)(g,{color:n,strokeWidth:d})}):null},ej=({defaultColor:e,rfId:t})=>{let n=p(e=>e.edges),o=p(e=>e.defaultEdgeOptions),r=(0,a.useMemo)(()=>(0,s.Hm)(n,{id:t,defaultColor:e,defaultMarkerStart:o?.markerStart,defaultMarkerEnd:o?.markerEnd}),[n,o,t,e]);return r.length?(0,i.jsx)("svg",{className:"react-flow__marker","aria-hidden":"true",children:(0,i.jsx)("defs",{children:r.map(e=>(0,i.jsx)(eA,{id:e.id,type:e.type,color:e.color,width:e.width,height:e.height,markerUnits:e.markerUnits,strokeWidth:e.strokeWidth,orient:e.orient},e.id))})}):null};ej.displayName="MarkerDefinitions";var e_=(0,a.memo)(ej);function eL({x:e,y:t,label:n,labelStyle:o,labelShowBg:r=!0,labelBgStyle:s,labelBgPadding:d=[2,4],labelBgBorderRadius:c=2,children:u,className:g,...f}){let[p,h]=(0,a.useState)({x:1,y:0,width:0,height:0}),m=(0,l.A)(["react-flow__edge-textwrapper",g]),y=(0,a.useRef)(null);return((0,a.useEffect)(()=>{if(y.current){let e=y.current.getBBox();h({x:e.x,y:e.y,width:e.width,height:e.height})}},[n]),n)?(0,i.jsxs)("g",{transform:`translate(${e-p.width/2} ${t-p.height/2})`,className:m,visibility:p.width?"visible":"hidden",...f,children:[r&&(0,i.jsx)("rect",{width:p.width+2*d[0],x:-d[0],y:-d[1],height:p.height+2*d[1],className:"react-flow__edge-textbg",style:s,rx:c,ry:c}),(0,i.jsx)("text",{className:"react-flow__edge-text",y:p.height/2,dy:"0.3em",ref:y,style:o,children:n}),u]}):null}eL.displayName="EdgeText";let eB=(0,a.memo)(eL);function ez({path:e,labelX:t,labelY:n,label:o,labelStyle:r,labelShowBg:a,labelBgStyle:d,labelBgPadding:c,labelBgBorderRadius:u,interactionWidth:g=20,...f}){return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)("path",{...f,d:e,fill:"none",className:(0,l.A)(["react-flow__edge-path",f.className])}),g?(0,i.jsx)("path",{d:e,fill:"none",strokeOpacity:0,strokeWidth:g,className:"react-flow__edge-interaction"}):null,o&&(0,s.kf)(t)&&(0,s.kf)(n)?(0,i.jsx)(eB,{x:t,y:n,label:o,labelStyle:r,labelShowBg:a,labelBgStyle:d,labelBgPadding:c,labelBgBorderRadius:u}):null]})}function e$({pos:e,x1:t,y1:n,x2:o,y2:r}){return e===s.yX.Left||e===s.yX.Right?[.5*(t+o),n]:[t,.5*(n+r)]}function eV({sourceX:e,sourceY:t,sourcePosition:n=s.yX.Bottom,targetX:o,targetY:r,targetPosition:i=s.yX.Top}){let[a,l]=e$({pos:n,x1:e,y1:t,x2:o,y2:r}),[d,c]=e$({pos:i,x1:o,y1:r,x2:e,y2:t}),[u,g,f,p]=(0,s.e_)({sourceX:e,sourceY:t,targetX:o,targetY:r,sourceControlX:a,sourceControlY:l,targetControlX:d,targetControlY:c});return[`M${e},${t} C${a},${l} ${d},${c} ${o},${r}`,u,g,f,p]}function eT(e){return(0,a.memo)(({id:t,sourceX:n,sourceY:o,targetX:r,targetY:a,sourcePosition:l,targetPosition:s,label:d,labelStyle:c,labelShowBg:u,labelBgStyle:g,labelBgPadding:f,labelBgBorderRadius:p,style:h,markerEnd:m,markerStart:y,interactionWidth:b})=>{let[S,v,x]=eV({sourceX:n,sourceY:o,sourcePosition:l,targetX:r,targetY:a,targetPosition:s}),w=e.isInternal?void 0:t;return(0,i.jsx)(ez,{id:w,path:S,labelX:v,labelY:x,label:d,labelStyle:c,labelShowBg:u,labelBgStyle:g,labelBgPadding:f,labelBgBorderRadius:p,style:h,markerEnd:m,markerStart:y,interactionWidth:b})})}let eF=eT({isInternal:!1}),eH=eT({isInternal:!0});function eZ(e){return(0,a.memo)(({id:t,sourceX:n,sourceY:o,targetX:r,targetY:a,label:l,labelStyle:d,labelShowBg:c,labelBgStyle:u,labelBgPadding:g,labelBgBorderRadius:f,style:p,sourcePosition:h=s.yX.Bottom,targetPosition:m=s.yX.Top,markerEnd:y,markerStart:b,pathOptions:S,interactionWidth:v})=>{let[x,w,C]=(0,s.oN)({sourceX:n,sourceY:o,sourcePosition:h,targetX:r,targetY:a,targetPosition:m,borderRadius:S?.borderRadius,offset:S?.offset,stepPosition:S?.stepPosition}),E=e.isInternal?void 0:t;return(0,i.jsx)(ez,{id:E,path:x,labelX:w,labelY:C,label:l,labelStyle:d,labelShowBg:c,labelBgStyle:u,labelBgPadding:g,labelBgBorderRadius:f,style:p,markerEnd:y,markerStart:b,interactionWidth:v})})}eF.displayName="SimpleBezierEdge",eH.displayName="SimpleBezierEdgeInternal";let eX=eZ({isInternal:!1}),eK=eZ({isInternal:!0});function eW(e){return(0,a.memo)(({id:t,...n})=>{let o=e.isInternal?void 0:t;return(0,i.jsx)(eX,{...n,id:o,pathOptions:(0,a.useMemo)(()=>({borderRadius:0,offset:n.pathOptions?.offset}),[n.pathOptions?.offset])})})}eX.displayName="SmoothStepEdge",eK.displayName="SmoothStepEdgeInternal";let eY=eW({isInternal:!1}),eQ=eW({isInternal:!0});function eU(e){return(0,a.memo)(({id:t,sourceX:n,sourceY:o,targetX:r,targetY:a,label:l,labelStyle:d,labelShowBg:c,labelBgStyle:u,labelBgPadding:g,labelBgBorderRadius:f,style:p,markerEnd:h,markerStart:m,interactionWidth:y})=>{let[b,S,v]=(0,s.ah)({sourceX:n,sourceY:o,targetX:r,targetY:a}),x=e.isInternal?void 0:t;return(0,i.jsx)(ez,{id:x,path:b,labelX:S,labelY:v,label:l,labelStyle:d,labelShowBg:c,labelBgStyle:u,labelBgPadding:g,labelBgBorderRadius:f,style:p,markerEnd:h,markerStart:m,interactionWidth:y})})}eY.displayName="StepEdge",eQ.displayName="StepEdgeInternal";let eG=eU({isInternal:!1}),eq=eU({isInternal:!0});function eJ(e){return(0,a.memo)(({id:t,sourceX:n,sourceY:o,targetX:r,targetY:a,sourcePosition:l=s.yX.Bottom,targetPosition:d=s.yX.Top,label:c,labelStyle:u,labelShowBg:g,labelBgStyle:f,labelBgPadding:p,labelBgBorderRadius:h,style:m,markerEnd:y,markerStart:b,pathOptions:S,interactionWidth:v})=>{let[x,w,C]=(0,s.Fp)({sourceX:n,sourceY:o,sourcePosition:l,targetX:r,targetY:a,targetPosition:d,curvature:S?.curvature}),E=e.isInternal?void 0:t;return(0,i.jsx)(ez,{id:E,path:x,labelX:w,labelY:C,label:c,labelStyle:u,labelShowBg:g,labelBgStyle:f,labelBgPadding:p,labelBgBorderRadius:h,style:m,markerEnd:y,markerStart:b,interactionWidth:v})})}eG.displayName="StraightEdge",eq.displayName="StraightEdgeInternal";let e0=eJ({isInternal:!1}),e1=eJ({isInternal:!0});e0.displayName="BezierEdge",e1.displayName="BezierEdgeInternal";let e2={default:e1,straight:eq,step:eQ,smoothstep:eK,simplebezier:eH},e5={sourceX:null,sourceY:null,targetX:null,targetY:null,sourcePosition:null,targetPosition:null},e4="react-flow__edgeupdater";function e3({position:e,centerX:t,centerY:n,radius:o=10,onMouseDown:r,onMouseEnter:a,onMouseOut:d,type:c}){return(0,i.jsx)("circle",{onMouseDown:r,onMouseEnter:a,onMouseOut:d,className:(0,l.A)([e4,`${e4}-${c}`]),cx:e===s.yX.Left?t-o:e===s.yX.Right?t+o:t,cy:e===s.yX.Top?n-o:e===s.yX.Bottom?n+o:n,r:o,stroke:"transparent",fill:"transparent"})}function e6({isReconnectable:e,reconnectRadius:t,edge:n,sourceX:o,sourceY:r,targetX:a,targetY:l,sourcePosition:d,targetPosition:c,onReconnect:u,onReconnectStart:g,onReconnectEnd:f,setReconnecting:p,setUpdateHover:m}){let y=h(),b=(e,t)=>{if(0!==e.button)return;let{autoPanOnConnect:o,domNode:r,connectionMode:i,connectionRadius:a,lib:l,onConnectStart:d,cancelConnection:c,nodeLookup:h,rfId:m,panBy:b,updateConnection:S}=y.getState(),v="target"===t.type;s.aQ.onPointerDown(e.nativeEvent,{autoPanOnConnect:o,connectionMode:i,connectionRadius:a,domNode:r,handleId:t.id,nodeId:t.nodeId,nodeLookup:h,isTarget:v,edgeUpdaterType:t.type,lib:l,flowId:m,cancelConnection:c,panBy:b,isValidConnection:(...e)=>y.getState().isValidConnection?.(...e)??!0,onConnect:e=>u?.(n,e),onConnectStart:(o,r)=>{p(!0),g?.(e,n,t.type),d?.(o,r)},onConnectEnd:(...e)=>y.getState().onConnectEnd?.(...e),onReconnectEnd:(e,o)=>{p(!1),f?.(e,n,t.type,o)},updateConnection:S,getTransform:()=>y.getState().transform,getFromHandle:()=>y.getState().connection.fromHandle,dragThreshold:y.getState().connectionDragThreshold,handleDomNode:e.currentTarget})},S=()=>m(!0),v=()=>m(!1);return(0,i.jsxs)(i.Fragment,{children:[(!0===e||"source"===e)&&(0,i.jsx)(e3,{position:d,centerX:o,centerY:r,radius:t,onMouseDown:e=>b(e,{nodeId:n.target,id:n.targetHandle??null,type:"target"}),onMouseEnter:S,onMouseOut:v,type:"source"}),(!0===e||"target"===e)&&(0,i.jsx)(e3,{position:c,centerX:a,centerY:l,radius:t,onMouseDown:e=>b(e,{nodeId:n.source,id:n.sourceHandle??null,type:"source"}),onMouseEnter:S,onMouseOut:v,type:"target"})]})}var e8=(0,a.memo)(function({id:e,edgesFocusable:t,edgesReconnectable:n,elementsSelectable:o,onClick:r,onDoubleClick:d,onContextMenu:u,onMouseEnter:g,onMouseMove:f,onMouseLeave:m,reconnectRadius:y,onReconnect:b,onReconnectStart:v,onReconnectEnd:x,rfId:w,edgeTypes:C,noPanClassName:E,onError:N,disableKeyboardA11y:k}){let M=p(t=>t.edgeLookup.get(e)),P=p(e=>e.defaultEdgeOptions),D=(M=P?{...P,...M}:M).type||"default",I=C?.[D]||e2[D];void 0===I&&(N?.("011",s.xc.error011(D)),D="default",I=C?.default||e2.default);let O=!!(M.focusable||t&&void 0===M.focusable),R=void 0!==b&&(M.reconnectable||n&&void 0===M.reconnectable),A=!!(M.selectable||o&&void 0===M.selectable),j=(0,a.useRef)(null),[_,L]=(0,a.useState)(!1),[B,z]=(0,a.useState)(!1),$=h(),{zIndex:V,sourceX:T,sourceY:F,targetX:H,targetY:Z,sourcePosition:X,targetPosition:K}=p((0,a.useCallback)(t=>{let n=t.nodeLookup.get(M.source),o=t.nodeLookup.get(M.target);if(!n||!o)return{zIndex:M.zIndex,...e5};let r=(0,s.b5)({id:e,sourceNode:n,targetNode:o,sourceHandle:M.sourceHandle||null,targetHandle:M.targetHandle||null,connectionMode:t.connectionMode,onError:N});return{zIndex:(0,s.qX)({selected:M.selected,zIndex:M.zIndex,sourceNode:n,targetNode:o,elevateOnSelect:t.elevateEdgesOnSelect,zIndexMode:t.zIndexMode}),...r||e5}},[M.source,M.target,M.sourceHandle,M.targetHandle,M.selected,M.zIndex]),c.x),W=(0,a.useMemo)(()=>M.markerStart?`url('#${(0,s.aW)(M.markerStart,w)}')`:void 0,[M.markerStart,w]),Y=(0,a.useMemo)(()=>M.markerEnd?`url('#${(0,s.aW)(M.markerEnd,w)}')`:void 0,[M.markerEnd,w]);if(M.hidden||null===T||null===F||null===H||null===Z)return null;let Q=d?e=>{d(e,{...M})}:void 0,U=u?e=>{u(e,{...M})}:void 0,G=g?e=>{g(e,{...M})}:void 0,q=f?e=>{f(e,{...M})}:void 0,J=m?e=>{m(e,{...M})}:void 0;return(0,i.jsx)("svg",{style:{zIndex:V},children:(0,i.jsxs)("g",{className:(0,l.A)(["react-flow__edge",`react-flow__edge-${D}`,M.className,E,{selected:M.selected,animated:M.animated,inactive:!A&&!r,updating:_,selectable:A}]),onClick:t=>{let{addSelectedEdges:n,unselectNodesAndEdges:o,multiSelectionActive:i}=$.getState();A&&($.setState({nodesSelectionActive:!1}),M.selected&&i?(o({nodes:[],edges:[M]}),j.current?.blur()):n([e])),r&&r(t,M)},onDoubleClick:Q,onContextMenu:U,onMouseEnter:G,onMouseMove:q,onMouseLeave:J,onKeyDown:O?t=>{if(!k&&s.tn.includes(t.key)&&A){let{unselectNodesAndEdges:n,addSelectedEdges:o}=$.getState();"Escape"===t.key?(j.current?.blur(),n({edges:[M]})):o([e])}}:void 0,tabIndex:O?0:void 0,role:M.ariaRole??(O?"group":"img"),"aria-roledescription":"edge","data-id":e,"data-testid":`rf__edge-${e}`,"aria-label":null===M.ariaLabel?void 0:M.ariaLabel||`Edge from ${M.source} to ${M.target}`,"aria-describedby":O?`${S}-${w}`:void 0,ref:j,...M.domAttributes,children:[!B&&(0,i.jsx)(I,{id:e,source:M.source,target:M.target,type:M.type,selected:M.selected,animated:M.animated,selectable:A,deletable:M.deletable??!0,label:M.label,labelStyle:M.labelStyle,labelShowBg:M.labelShowBg,labelBgStyle:M.labelBgStyle,labelBgPadding:M.labelBgPadding,labelBgBorderRadius:M.labelBgBorderRadius,sourceX:T,sourceY:F,targetX:H,targetY:Z,sourcePosition:X,targetPosition:K,data:M.data,style:M.style,sourceHandleId:M.sourceHandle,targetHandleId:M.targetHandle,markerStart:W,markerEnd:Y,pathOptions:"pathOptions"in M?M.pathOptions:void 0,interactionWidth:M.interactionWidth}),R&&(0,i.jsx)(e6,{edge:M,isReconnectable:R,reconnectRadius:y,onReconnect:b,onReconnectStart:v,onReconnectEnd:x,sourceX:T,sourceY:F,targetX:H,targetY:Z,sourcePosition:X,targetPosition:K,setUpdateHover:L,setReconnecting:z})]})})});let e9=e=>({edgesFocusable:e.edgesFocusable,edgesReconnectable:e.edgesReconnectable,elementsSelectable:e.elementsSelectable,connectionMode:e.connectionMode,onError:e.onError});function e7({defaultMarkerColor:e,onlyRenderVisibleElements:t,rfId:n,edgeTypes:o,noPanClassName:r,onReconnect:l,onEdgeContextMenu:d,onEdgeMouseEnter:u,onEdgeMouseMove:g,onEdgeMouseLeave:f,onEdgeClick:h,reconnectRadius:m,onEdgeDoubleClick:y,onReconnectStart:b,onReconnectEnd:S,disableKeyboardA11y:v}){let{edgesFocusable:x,edgesReconnectable:w,elementsSelectable:C,onError:E}=p(e9,c.x),N=p((0,a.useCallback)(e=>{if(!t)return e.edges.map(e=>e.id);let n=[];if(e.width&&e.height)for(let t of e.edges){let o=e.nodeLookup.get(t.source),r=e.nodeLookup.get(t.target);o&&r&&(0,s.uj)({sourceNode:o,targetNode:r,width:e.width,height:e.height,transform:e.transform})&&n.push(t.id)}return n},[t]),c.x);return(0,i.jsxs)("div",{className:"react-flow__edges",children:[(0,i.jsx)(e_,{defaultColor:e,rfId:n}),N.map(e=>(0,i.jsx)(e8,{id:e,edgesFocusable:x,edgesReconnectable:w,elementsSelectable:C,noPanClassName:r,onReconnect:l,onContextMenu:d,onMouseEnter:u,onMouseMove:g,onMouseLeave:f,onClick:h,reconnectRadius:m,onDoubleClick:y,onReconnectStart:b,onReconnectEnd:S,rfId:n,onError:E,edgeTypes:o,disableKeyboardA11y:v},e))]})}e7.displayName="EdgeRenderer";let te=(0,a.memo)(e7),tt=e=>`translate(${e.transform[0]}px,${e.transform[1]}px) scale(${e.transform[2]})`;function tn({children:e}){let t=p(tt);return(0,i.jsx)("div",{className:"react-flow__viewport xyflow__viewport react-flow__container",style:{transform:t},children:e})}let to=e=>e.panZoom?.syncViewport;function tr(e){return e.connection.inProgress?{...e.connection,to:(0,s.Ff)(e.connection.to,e.transform)}:{...e.connection}}let ti=e=>({nodesConnectable:e.nodesConnectable,isValid:e.connection.isValid,inProgress:e.connection.inProgress,width:e.width,height:e.height});function ta({containerStyle:e,style:t,type:n,component:o}){let{nodesConnectable:r,width:a,height:d,isValid:u,inProgress:g}=p(ti,c.x);return a&&r&&g?(0,i.jsx)("svg",{style:e,width:a,height:d,className:"react-flow__connectionline react-flow__container",children:(0,i.jsx)("g",{className:(0,l.A)(["react-flow__connection",(0,s.HF)(u)]),children:(0,i.jsx)(tl,{style:t,type:n,CustomComponent:o,isValid:u})})}):null}let tl=({style:e,type:t=s.Do.Bezier,CustomComponent:n,isValid:o})=>{let{inProgress:r,from:a,fromNode:l,fromHandle:d,fromPosition:u,to:g,toNode:f,toHandle:h,toPosition:m,pointer:y}=p(tr,c.x);if(!r)return;if(n)return(0,i.jsx)(n,{connectionLineType:t,connectionLineStyle:e,fromNode:l,fromHandle:d,fromX:a.x,fromY:a.y,toX:g.x,toY:g.y,fromPosition:u,toPosition:m,connectionStatus:(0,s.HF)(o),toNode:f,toHandle:h,pointer:y});let b="",S={sourceX:a.x,sourceY:a.y,sourcePosition:u,targetX:g.x,targetY:g.y,targetPosition:m};switch(t){case s.Do.Bezier:[b]=(0,s.Fp)(S);break;case s.Do.SimpleBezier:[b]=eV(S);break;case s.Do.Step:[b]=(0,s.oN)({...S,borderRadius:0});break;case s.Do.SmoothStep:[b]=(0,s.oN)(S);break;default:[b]=(0,s.ah)(S)}return(0,i.jsx)("path",{d:b,fill:"none",className:"react-flow__connection-path",style:e})};tl.displayName="ConnectionLine";let ts={};function td(e=ts){(0,a.useRef)(e),h(),(0,a.useEffect)(()=>{},[e])}function tc({nodeTypes:e,edgeTypes:t,onInit:n,onNodeClick:o,onEdgeClick:r,onNodeDoubleClick:l,onEdgeDoubleClick:s,onNodeMouseEnter:d,onNodeMouseMove:c,onNodeMouseLeave:u,onNodeContextMenu:g,onSelectionContextMenu:f,onSelectionStart:m,onSelectionEnd:y,connectionLineType:b,connectionLineStyle:S,connectionLineComponent:v,connectionLineContainerStyle:x,selectionKeyCode:w,selectionOnDrag:C,selectionMode:E,multiSelectionKeyCode:N,panActivationKeyCode:k,zoomActivationKeyCode:M,deleteKeyCode:P,onlyRenderVisibleElements:D,elementsSelectable:I,defaultViewport:O,translateExtent:R,minZoom:A,maxZoom:j,preventScrolling:_,defaultMarkerColor:L,zoomOnScroll:B,zoomOnPinch:z,panOnScroll:$,panOnScrollSpeed:V,panOnScrollMode:T,zoomOnDoubleClick:F,panOnDrag:H,onPaneClick:Z,onPaneMouseEnter:X,onPaneMouseMove:K,onPaneMouseLeave:W,onPaneScroll:Y,onPaneContextMenu:Q,paneClickDistance:U,nodeClickDistance:G,onEdgeContextMenu:q,onEdgeMouseEnter:J,onEdgeMouseMove:ee,onEdgeMouseLeave:en,reconnectRadius:eo,onReconnect:er,onReconnectStart:ei,onReconnectEnd:ea,noDragClassName:el,noWheelClassName:es,noPanClassName:ed,disableKeyboardA11y:ec,nodeExtent:eu,rfId:eg,viewport:ef,onViewportChange:ep}){let eh,em,ey,eb;return td(e),td(t),h(),(0,a.useRef)(!1),(0,a.useEffect)(()=>{},[]),eh=et(),em=(0,a.useRef)(!1),(0,a.useEffect)(()=>{!em.current&&eh.viewportInitialized&&n&&(setTimeout(()=>n(eh),1),em.current=!0)},[n,eh.viewportInitialized]),ey=p(to),eb=h(),(0,a.useEffect)(()=>{ef&&(ey?.(ef),eb.setState({transform:[ef.x,ef.y,ef.zoom]}))},[ef,ey]),(0,i.jsx)(ek,{onPaneClick:Z,onPaneMouseEnter:X,onPaneMouseMove:K,onPaneMouseLeave:W,onPaneContextMenu:Q,onPaneScroll:Y,paneClickDistance:U,deleteKeyCode:P,selectionKeyCode:w,selectionOnDrag:C,selectionMode:E,onSelectionStart:m,onSelectionEnd:y,multiSelectionKeyCode:N,panActivationKeyCode:k,zoomActivationKeyCode:M,elementsSelectable:I,zoomOnScroll:B,zoomOnPinch:z,zoomOnDoubleClick:F,panOnScroll:$,panOnScrollSpeed:V,panOnScrollMode:T,panOnDrag:H,defaultViewport:O,translateExtent:R,minZoom:A,maxZoom:j,onSelectionContextMenu:f,preventScrolling:_,noDragClassName:el,noWheelClassName:es,noPanClassName:ed,disableKeyboardA11y:ec,onViewportChange:ep,isControlledViewport:!!ef,children:(0,i.jsxs)(tn,{children:[(0,i.jsx)(te,{edgeTypes:t,onEdgeClick:r,onEdgeDoubleClick:s,onReconnect:er,onReconnectStart:ei,onReconnectEnd:ea,onlyRenderVisibleElements:D,onEdgeContextMenu:q,onEdgeMouseEnter:J,onEdgeMouseMove:ee,onEdgeMouseLeave:en,reconnectRadius:eo,defaultMarkerColor:L,noPanClassName:ed,disableKeyboardA11y:ec,rfId:eg}),(0,i.jsx)(ta,{style:S,type:b,component:v,containerStyle:x}),(0,i.jsx)("div",{className:"react-flow__edgelabel-renderer"}),(0,i.jsx)(eO,{nodeTypes:e,onNodeClick:o,onNodeDoubleClick:l,onNodeMouseEnter:d,onNodeMouseMove:c,onNodeMouseLeave:u,onNodeContextMenu:g,nodeClickDistance:G,onlyRenderVisibleElements:D,noPanClassName:ed,noDragClassName:el,disableKeyboardA11y:ec,nodeExtent:eu,rfId:eg}),(0,i.jsx)("div",{className:"react-flow__viewport-portal"})]})})}tc.displayName="GraphView";let tu=(0,a.memo)(tc),tg=({nodes:e,edges:t,defaultNodes:n,defaultEdges:o,width:r,height:i,fitView:a,fitViewOptions:l,minZoom:d=.5,maxZoom:c=2,nodeOrigin:u,nodeExtent:g,zIndexMode:f="basic"}={})=>{let p=new Map,h=new Map,m=new Map,y=new Map,b=o??t??[],S=n??e??[],v=u??[0,0],x=g??s.ZO;(0,s.qn)(m,y,b);let w=(0,s.bi)(S,p,h,{nodeOrigin:v,nodeExtent:x,zIndexMode:f}),C=[0,0,1];if(a&&r&&i){let e=(0,s.aZ)(p,{filter:e=>!!((e.width||e.initialWidth)&&(e.height||e.initialHeight))}),{x:t,y:n,zoom:o}=(0,s.R4)(e,r,i,d,c,l?.padding??.1);C=[t,n,o]}return{rfId:"1",width:r??0,height:i??0,transform:C,nodes:S,nodesInitialized:w,nodeLookup:p,parentLookup:h,edges:b,edgeLookup:y,connectionLookup:m,onNodesChange:null,onEdgesChange:null,hasDefaultNodes:void 0!==n,hasDefaultEdges:void 0!==o,panZoom:null,minZoom:d,maxZoom:c,translateExtent:s.ZO,nodeExtent:x,nodesSelectionActive:!1,userSelectionActive:!1,userSelectionRect:null,connectionMode:s.WZ.Strict,domNode:null,paneDragging:!1,noPanClassName:"nopan",nodeOrigin:v,nodeDragThreshold:1,connectionDragThreshold:1,snapGrid:[15,15],snapToGrid:!1,nodesDraggable:!0,nodesConnectable:!0,nodesFocusable:!0,edgesFocusable:!0,edgesReconnectable:!0,elementsSelectable:!0,elevateNodesOnSelect:!0,elevateEdgesOnSelect:!0,selectNodesOnDrag:!0,multiSelectionActive:!1,fitViewQueued:a??!1,fitViewOptions:l,fitViewResolver:null,connection:{...s.bK},connectionClickStartHandle:null,connectOnClick:!0,ariaLiveMessage:"",autoPanOnConnect:!0,autoPanOnNodeDrag:!0,autoPanOnNodeFocus:!0,autoPanSpeed:15,connectionRadius:20,onError:s.KE,isValidConnection:void 0,onSelectionChangeHandlers:[],lib:"react",debug:!1,ariaLabelConfig:s.tM,zIndexMode:f,onNodesChangeMiddlewareMap:new Map,onEdgesChangeMiddlewareMap:new Map}};function tf({initialNodes:e,initialEdges:t,defaultNodes:n,defaultEdges:o,initialWidth:r,initialHeight:l,initialMinZoom:c,initialMaxZoom:u,initialFitViewOptions:f,fitView:p,nodeOrigin:h,nodeExtent:m,zIndexMode:y,children:b}){let[S]=(0,a.useState)(()=>(({nodes:e,edges:t,defaultNodes:n,defaultEdges:o,width:r,height:i,fitView:a,fitViewOptions:l,minZoom:c,maxZoom:u,nodeOrigin:g,nodeExtent:f,zIndexMode:p})=>(0,d.h)((d,h)=>{async function m(){let{nodeLookup:e,panZoom:t,fitViewOptions:n,fitViewResolver:o,width:r,height:i,minZoom:a,maxZoom:l}=h();t&&(await (0,s.IO)({nodes:e,width:r,height:i,panZoom:t,minZoom:a,maxZoom:l},n),o?.resolve(!0),d({fitViewResolver:null}))}return{...tg({nodes:e,edges:t,width:r,height:i,fitView:a,fitViewOptions:l,minZoom:c,maxZoom:u,nodeOrigin:g,nodeExtent:f,defaultNodes:n,defaultEdges:o,zIndexMode:p}),setNodes:e=>{let{nodeLookup:t,parentLookup:n,nodeOrigin:o,elevateNodesOnSelect:r,fitViewQueued:i,zIndexMode:a}=h(),l=(0,s.bi)(e,t,n,{nodeOrigin:o,nodeExtent:f,elevateNodesOnSelect:r,checkEquality:!0,zIndexMode:a});i&&l?(m(),d({nodes:e,nodesInitialized:l,fitViewQueued:!1,fitViewOptions:void 0})):d({nodes:e,nodesInitialized:l})},setEdges:e=>{let{connectionLookup:t,edgeLookup:n}=h();(0,s.qn)(t,n,e),d({edges:e})},setDefaultNodesAndEdges:(e,t)=>{if(e){let{setNodes:t}=h();t(e),d({hasDefaultNodes:!0})}if(t){let{setEdges:e}=h();e(t),d({hasDefaultEdges:!0})}},updateNodeInternals:e=>{let{triggerNodeChanges:t,nodeLookup:n,parentLookup:o,domNode:r,nodeOrigin:i,nodeExtent:a,debug:l,fitViewQueued:c,zIndexMode:u}=h(),{changes:g,updatedInternals:f}=(0,s.uL)(e,n,o,r,i,a,u);f&&((0,s.vS)(n,o,{nodeOrigin:i,nodeExtent:a,zIndexMode:u}),c?(m(),d({fitViewQueued:!1,fitViewOptions:void 0})):d({}),g?.length>0&&(l&&console.log("React Flow: trigger node changes",g),t?.(g)))},updateNodePositions:(e,t=!1)=>{let n=[],o=[],{nodeLookup:r,triggerNodeChanges:i,connection:a,updateConnection:l,onNodesChangeMiddlewareMap:d}=h();for(let[i,d]of e){let e=r.get(i),c=!!(e?.expandParent&&e?.parentId&&d?.position),u={id:i,type:"position",position:c?{x:Math.max(0,d.position.x),y:Math.max(0,d.position.y)}:d.position,dragging:t};if(e&&a.inProgress&&a.fromNode.id===e.id){let t=(0,s.M_)(e,a.fromHandle,s.yX.Left,!0);l({...a,from:t})}c&&e.parentId&&n.push({id:i,parentId:e.parentId,rect:{...d.internals.positionAbsolute,width:d.measured.width??0,height:d.measured.height??0}}),o.push(u)}if(n.length>0){let{parentLookup:e,nodeOrigin:t}=h(),i=(0,s.r8)(n,r,e,t);o.push(...i)}for(let e of d.values())o=e(o);i(o)},triggerNodeChanges:e=>{let{onNodesChange:t,setNodes:n,nodes:o,hasDefaultNodes:r,debug:i}=h();e?.length&&(r&&n(H(e,o)),i&&console.log("React Flow: trigger node changes",e),t?.(e))},triggerEdgeChanges:e=>{let{onEdgesChange:t,setEdges:n,edges:o,hasDefaultEdges:r,debug:i}=h();e?.length&&(r&&n(H(e,o)),i&&console.log("React Flow: trigger edge changes",e),t?.(e))},addSelectedNodes:e=>{let{multiSelectionActive:t,edgeLookup:n,nodeLookup:o,triggerNodeChanges:r,triggerEdgeChanges:i}=h();t?r(e.map(e=>Z(e,!0))):(r(X(o,new Set([...e]),!0)),i(X(n)))},addSelectedEdges:e=>{let{multiSelectionActive:t,edgeLookup:n,nodeLookup:o,triggerNodeChanges:r,triggerEdgeChanges:i}=h();t?i(e.map(e=>Z(e,!0))):(i(X(n,new Set([...e]))),r(X(o,new Set,!0)))},unselectNodesAndEdges:({nodes:e,edges:t}={})=>{let{edges:n,nodes:o,nodeLookup:r,triggerNodeChanges:i,triggerEdgeChanges:a}=h(),l=[];for(let t of e||o){if(!t.selected)continue;let e=r.get(t.id);e&&(e.selected=!1),l.push(Z(t.id,!1))}let s=[];for(let e of t||n)e.selected&&s.push(Z(e.id,!1));i(l),a(s)},setMinZoom:e=>{let{panZoom:t,maxZoom:n}=h();t?.setScaleExtent([e,n]),d({minZoom:e})},setMaxZoom:e=>{let{panZoom:t,minZoom:n}=h();t?.setScaleExtent([n,e]),d({maxZoom:e})},setTranslateExtent:e=>{h().panZoom?.setTranslateExtent(e),d({translateExtent:e})},resetSelectedElements:()=>{let{edges:e,nodes:t,triggerNodeChanges:n,triggerEdgeChanges:o,elementsSelectable:r}=h();if(!r)return;let i=t.reduce((e,t)=>t.selected?[...e,Z(t.id,!1)]:e,[]),a=e.reduce((e,t)=>t.selected?[...e,Z(t.id,!1)]:e,[]);n(i),o(a)},setNodeExtent:e=>{let{nodes:t,nodeLookup:n,parentLookup:o,nodeOrigin:r,elevateNodesOnSelect:i,nodeExtent:a,zIndexMode:l}=h();(e[0][0]!==a[0][0]||e[0][1]!==a[0][1]||e[1][0]!==a[1][0]||e[1][1]!==a[1][1])&&((0,s.bi)(t,n,o,{nodeOrigin:r,nodeExtent:e,elevateNodesOnSelect:i,checkEquality:!1,zIndexMode:l}),d({nodeExtent:e}))},panBy:e=>{let{transform:t,width:n,height:o,panZoom:r,translateExtent:i}=h();return(0,s.No)({delta:e,panZoom:r,transform:t,translateExtent:i,width:n,height:o})},setCenter:async(e,t,n)=>{let{width:o,height:r,maxZoom:i,panZoom:a}=h();if(!a)return Promise.resolve(!1);let l=void 0!==n?.zoom?n.zoom:i;return await a.setViewport({x:o/2-e*l,y:r/2-t*l,zoom:l},{duration:n?.duration,ease:n?.ease,interpolate:n?.interpolate}),Promise.resolve(!0)},cancelConnection:()=>{d({connection:{...s.bK}})},updateConnection:e=>{d({connection:e})},reset:()=>d({...tg()})}},Object.is))({nodes:e,edges:t,defaultNodes:n,defaultEdges:o,width:r,height:l,fitView:p,minZoom:c,maxZoom:u,fitViewOptions:f,nodeOrigin:h,nodeExtent:m,zIndexMode:y}));return(0,i.jsx)(g,{value:S,children:(0,i.jsx)(J,{children:b})})}function tp({children:e,nodes:t,edges:n,defaultNodes:o,defaultEdges:r,width:l,height:s,fitView:d,fitViewOptions:c,minZoom:g,maxZoom:f,nodeOrigin:p,nodeExtent:h,zIndexMode:m}){return(0,a.useContext)(u)?(0,i.jsx)(i.Fragment,{children:e}):(0,i.jsx)(tf,{initialNodes:t,initialEdges:n,defaultNodes:o,defaultEdges:r,initialWidth:l,initialHeight:s,fitView:d,initialFitViewOptions:c,initialMinZoom:g,initialMaxZoom:f,nodeOrigin:p,nodeExtent:h,zIndexMode:m,children:e})}let th={width:"100%",height:"100%",overflow:"hidden",position:"relative",zIndex:0};var tm=Q(function({nodes:e,edges:t,defaultNodes:n,defaultEdges:o,className:r,nodeTypes:d,edgeTypes:c,onNodeClick:u,onEdgeClick:g,onInit:f,onMove:p,onMoveStart:h,onMoveEnd:m,onConnect:y,onConnectStart:b,onConnectEnd:S,onClickConnectStart:v,onClickConnectEnd:x,onNodeMouseEnter:w,onNodeMouseMove:E,onNodeMouseLeave:k,onNodeContextMenu:M,onNodeDoubleClick:P,onNodeDragStart:D,onNodeDrag:I,onNodeDragStop:j,onNodesDelete:_,onEdgesDelete:L,onDelete:$,onSelectionChange:V,onSelectionDragStart:T,onSelectionDrag:F,onSelectionDragStop:H,onSelectionContextMenu:Z,onSelectionStart:X,onSelectionEnd:K,onBeforeDelete:W,connectionMode:Y,connectionLineType:Q=s.Do.Bezier,connectionLineStyle:U,connectionLineComponent:G,connectionLineContainerStyle:q,deleteKeyCode:J="Backspace",selectionKeyCode:ee="Shift",selectionOnDrag:et=!1,selectionMode:en=s.Qc.Full,panActivationKeyCode:eo="Space",multiSelectionKeyCode:er=(0,s.Ue)()?"Meta":"Control",zoomActivationKeyCode:ei=(0,s.Ue)()?"Meta":"Control",snapToGrid:ea,snapGrid:el,onlyRenderVisibleElements:es=!1,selectNodesOnDrag:ed,nodesDraggable:ec,autoPanOnNodeFocus:eu,nodesConnectable:eg,nodesFocusable:ef,nodeOrigin:ep=R,edgesFocusable:eh,edgesReconnectable:em,elementsSelectable:ey=!0,defaultViewport:eb=A,minZoom:eS=.5,maxZoom:ev=2,translateExtent:ex=s.ZO,preventScrolling:ew=!0,nodeExtent:eC,defaultMarkerColor:eE="#b1b1b7",zoomOnScroll:eN=!0,zoomOnPinch:ek=!0,panOnScroll:eM=!1,panOnScrollSpeed:eP=.5,panOnScrollMode:eD=s.ny.Free,zoomOnDoubleClick:eI=!0,panOnDrag:eO=!0,onPaneClick:eR,onPaneMouseEnter:eA,onPaneMouseMove:ej,onPaneMouseLeave:e_,onPaneScroll:eL,onPaneContextMenu:eB,paneClickDistance:ez=1,nodeClickDistance:e$=0,children:eV,onReconnect:eT,onReconnectStart:eF,onReconnectEnd:eH,onEdgeContextMenu:eZ,onEdgeDoubleClick:eX,onEdgeMouseEnter:eK,onEdgeMouseMove:eW,onEdgeMouseLeave:eY,reconnectRadius:eQ=10,onNodesChange:eU,onEdgesChange:eG,noDragClassName:eq="nodrag",noWheelClassName:eJ="nowheel",noPanClassName:e0="nopan",fitView:e1,fitViewOptions:e2,connectOnClick:e5,attributionPosition:e4,proOptions:e3,defaultEdgeOptions:e6,elevateNodesOnSelect:e8=!0,elevateEdgesOnSelect:e9=!1,disableKeyboardA11y:e7=!1,autoPanOnConnect:te,autoPanOnNodeDrag:tt,autoPanSpeed:tn,connectionRadius:to,isValidConnection:tr,onError:ti,style:ta,id:tl,nodeDragThreshold:ts,connectionDragThreshold:td,viewport:tc,onViewportChange:tg,width:tf,height:tm,colorMode:ty="light",debug:tb,onScroll:tS,ariaLabelConfig:tv,zIndexMode:tx="basic",...tw},tC){let tE=tl||"1",tN=function(e){let[t,n]=(0,a.useState)("system"===e?null:e);return(0,a.useEffect)(()=>{if("system"!==e)return void n(e);let t=z(),o=()=>n(t?.matches?"dark":"light");return o(),t?.addEventListener("change",o),()=>{t?.removeEventListener("change",o)}},[e]),null!==t?t:z()?.matches?"dark":"light"}(ty),tk=(0,a.useCallback)(e=>{e.currentTarget.scrollTo({top:0,left:0,behavior:"instant"}),tS?.(e)},[tS]);return(0,i.jsx)("div",{"data-testid":"rf__wrapper",...tw,onScroll:tk,style:{...ta,...th},ref:tC,className:(0,l.A)(["react-flow",r,tN]),id:tl,role:"application",children:(0,i.jsxs)(tp,{nodes:e,edges:t,width:tf,height:tm,fitView:e1,fitViewOptions:e2,minZoom:eS,maxZoom:ev,nodeOrigin:ep,nodeExtent:eC,zIndexMode:tx,children:[(0,i.jsx)(tu,{onInit:f,onNodeClick:u,onEdgeClick:g,onNodeMouseEnter:w,onNodeMouseMove:E,onNodeMouseLeave:k,onNodeContextMenu:M,onNodeDoubleClick:P,nodeTypes:d,edgeTypes:c,connectionLineType:Q,connectionLineStyle:U,connectionLineComponent:G,connectionLineContainerStyle:q,selectionKeyCode:ee,selectionOnDrag:et,selectionMode:en,deleteKeyCode:J,multiSelectionKeyCode:er,panActivationKeyCode:eo,zoomActivationKeyCode:ei,onlyRenderVisibleElements:es,defaultViewport:eb,translateExtent:ex,minZoom:eS,maxZoom:ev,preventScrolling:ew,zoomOnScroll:eN,zoomOnPinch:ek,zoomOnDoubleClick:eI,panOnScroll:eM,panOnScrollSpeed:eP,panOnScrollMode:eD,panOnDrag:eO,onPaneClick:eR,onPaneMouseEnter:eA,onPaneMouseMove:ej,onPaneMouseLeave:e_,onPaneScroll:eL,onPaneContextMenu:eB,paneClickDistance:ez,nodeClickDistance:e$,onSelectionContextMenu:Z,onSelectionStart:X,onSelectionEnd:K,onReconnect:eT,onReconnectStart:eF,onReconnectEnd:eH,onEdgeContextMenu:eZ,onEdgeDoubleClick:eX,onEdgeMouseEnter:eK,onEdgeMouseMove:eW,onEdgeMouseLeave:eY,reconnectRadius:eQ,defaultMarkerColor:eE,noDragClassName:eq,noWheelClassName:eJ,noPanClassName:e0,rfId:tE,disableKeyboardA11y:e7,nodeExtent:eC,viewport:tc,onViewportChange:tg}),(0,i.jsx)(B,{nodes:e,edges:t,defaultNodes:n,defaultEdges:o,onConnect:y,onConnectStart:b,onConnectEnd:S,onClickConnectStart:v,onClickConnectEnd:x,nodesDraggable:ec,autoPanOnNodeFocus:eu,nodesConnectable:eg,nodesFocusable:ef,edgesFocusable:eh,edgesReconnectable:em,elementsSelectable:ey,elevateNodesOnSelect:e8,elevateEdgesOnSelect:e9,minZoom:eS,maxZoom:ev,nodeExtent:eC,onNodesChange:eU,onEdgesChange:eG,snapToGrid:ea,snapGrid:el,connectionMode:Y,translateExtent:ex,connectOnClick:e5,defaultEdgeOptions:e6,fitView:e1,fitViewOptions:e2,onNodesDelete:_,onEdgesDelete:L,onDelete:$,onNodeDragStart:D,onNodeDrag:I,onNodeDragStop:j,onSelectionDrag:F,onSelectionDragStart:T,onSelectionDragStop:H,onMove:p,onMoveStart:h,onMoveEnd:m,noPanClassName:e0,nodeOrigin:ep,rfId:tE,autoPanOnConnect:te,autoPanOnNodeDrag:tt,autoPanSpeed:tn,onError:ti,connectionRadius:to,isValidConnection:tr,selectNodesOnDrag:ed,nodeDragThreshold:ts,connectionDragThreshold:td,onBeforeDelete:W,debug:tb,ariaLabelConfig:tv,zIndexMode:tx}),(0,i.jsx)(O,{onSelectionChange:V}),eV,(0,i.jsx)(N,{proOptions:e3,position:e4}),(0,i.jsx)(C,{rfId:tE,disableKeyboardA11y:e7})]})})});s.xc.error014(),(o=r||(r={})).Lines="lines",o.Dots="dots",o.Cross="cross",r.Dots,r.Lines,r.Cross;let ty=(0,a.memo)(function({id:e,x:t,y:n,width:o,height:r,style:a,color:s,strokeColor:d,strokeWidth:c,className:u,borderRadius:g,shapeRendering:f,selected:p,onClick:h}){let{background:m,backgroundColor:y}=a||{};return(0,i.jsx)("rect",{className:(0,l.A)(["react-flow__minimap-node",{selected:p},u]),x:t,y:n,rx:g,ry:g,width:o,height:r,style:{fill:s||m||y,stroke:d,strokeWidth:c},shapeRendering:f,onClick:h?t=>h(t,e):void 0})}),tb=e=>e.nodes.map(e=>e.id),tS=e=>e instanceof Function?e:()=>e,tv=(0,a.memo)(function({id:e,nodeColorFunc:t,nodeStrokeColorFunc:n,nodeClassNameFunc:o,nodeBorderRadius:r,nodeStrokeWidth:a,shapeRendering:l,NodeComponent:d,onClick:u}){let{node:g,x:f,y:h,width:m,height:y}=p(t=>{let n=t.nodeLookup.get(e);if(!n)return{node:void 0,x:0,y:0,width:0,height:0};let o=n.internals.userNode,{x:r,y:i}=n.internals.positionAbsolute,{width:a,height:l}=(0,s.uD)(o);return{node:o,x:r,y:i,width:a,height:l}},c.x);return g&&!g.hidden&&(0,s.QE)(g)?(0,i.jsx)(d,{x:f,y:h,width:m,height:y,style:g.style,selected:!!g.selected,className:o(g),color:t(g),borderRadius:r,strokeColor:n(g),strokeWidth:a,shapeRendering:l,onClick:u,id:g.id}):null});s.xN.Line,s.xN.Handle}}]);
|
|
File without changes
|
|
File without changes
|