From f60be366e721c17db71f438ca2d3dcb430ab8b39 Mon Sep 17 00:00:00 2001 From: Snow Lee Date: Mon, 13 Jul 2026 10:51:01 -0700 Subject: [PATCH] =?UTF-8?q?feat(webapp):=20[phase=204]=20admin=20surfaces?= =?UTF-8?q?=20=E2=80=94=20org=20admin=20panel=20+=20hub=20settings?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - org admin: rename, member roles/removal (self marked), project rename/delete, invite links (create/copy/revoke, uses + expiry), org-wide public-share audit with revoke; members get a read-only view - hub settings: verification/approval policy toggles (verification disabled without SMTP), read-only domains/self-signup/admins, pending signup queue with approve/deny (count feeds the admin bar) - panels replace the content pane without becoming routes (classic-app parity): Browser takes a panel prop, HubApp owns the state and any navigation closes it - e2e: 8 admin specs, all mutations self-reverting (42 total green) Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01P5cxPQdSGJnjXCYY9GeWXt --- docs/react-migration-prd.md | 19 +- internal/webapp/frontend/e2e/admin.spec.ts | 123 +++++++ internal/webapp/frontend/src/api/types.ts | 30 ++ internal/webapp/frontend/src/apps/Browser.tsx | 22 +- internal/webapp/frontend/src/apps/HubApp.tsx | 60 +++- .../frontend/src/components/HubSettings.tsx | 159 +++++++++ .../frontend/src/components/OrgAdmin.tsx | 302 ++++++++++++++++++ .../webapp/static/assets/index-B1CZxrv9.js | 11 + .../webapp/static/assets/index-D-n_MmWw.js | 11 - internal/webapp/static/index.html | 2 +- 10 files changed, 711 insertions(+), 28 deletions(-) create mode 100644 internal/webapp/frontend/e2e/admin.spec.ts create mode 100644 internal/webapp/frontend/src/components/HubSettings.tsx create mode 100644 internal/webapp/frontend/src/components/OrgAdmin.tsx create mode 100644 internal/webapp/static/assets/index-B1CZxrv9.js delete mode 100644 internal/webapp/static/assets/index-D-n_MmWw.js diff --git a/docs/react-migration-prd.md b/docs/react-migration-prd.md index 3549ac0..40d3c3a 100644 --- a/docs/react-migration-prd.md +++ b/docs/react-migration-prd.md @@ -186,11 +186,18 @@ refresh; invalidate after uploads/renames/admin actions — mirror today's `e2e/home.spec.ts`; suite is 34 specs, ~13s, stable across runs. ### Phase 4 — admin surfaces -- [ ] Org admin: rename, members (role change/remove), invite create/list/ - revoke with expiry, org shares list + revoke. -- [ ] Hub settings + pending-approval queue (approve/deny), policy toggles. -- [ ] All actions confirm via modal where the current UI does; toasts on - success/error. +- [x] Org admin: rename, members (role change/remove, self marked), + projects (rename/delete), invite create/list/revoke with expiry + + uses, org-wide share audit with revoke; member view is read-only. +- [x] Hub settings + pending-approval queue (approve/deny), policy + toggles (verification disabled without SMTP), read-only + domains/self-signup/admins rows. +- [x] Destructive actions confirm via modal; toasts on success/error. + Design note: panels are NOT routes (parity with the classic app) — + Browser takes a `panel` prop that replaces the content pane and + hides file actions; HubApp owns the state and clears it on any + pathname change. Known accepted deviation: deleting the currently + open project closes the panel (the URL fallback redirect fires). ### Phase 5 — parity gate & swap - [ ] Port the 17 checks from the pre-existing smoke suite (see @@ -253,7 +260,7 @@ file path; reload on `/insights`. - [x] Phase 1 - [x] Phase 2 - [x] Phase 3 -- [ ] Phase 4 +- [x] Phase 4 - [ ] Phase 5 Blockers / deviations: (record here; stop rather than deviate silently) diff --git a/internal/webapp/frontend/e2e/admin.spec.ts b/internal/webapp/frontend/e2e/admin.spec.ts new file mode 100644 index 0000000..f6a5c76 --- /dev/null +++ b/internal/webapp/frontend/e2e/admin.spec.ts @@ -0,0 +1,123 @@ +import { test, expect } from "@playwright/test"; +import { login, wikiId, ADMIN, MEMBER } from "./helpers"; + +// Phase 4: org admin (rename, members, projects, invites, share audit) and +// hub settings (policy toggles, pending queue). Panels are not routes — +// navigation closes them. Mutating specs revert their changes: the suite +// shares one hub per run. + +test("org admin: members with roles, self marked, rename round-trip", async ({ page }) => { + await login(page); + await page.click("#invite-btn"); // owner's Manage button + await expect(page.locator("#org-title")).toHaveText("default"); + await expect(page.locator("#crumb")).toHaveText("default"); + await expect(page.locator(".admin-item", { hasText: ADMIN })).toContainText("(you)"); + const memberRow = page.locator(".admin-item", { hasText: MEMBER }); + await expect(memberRow.locator("select")).toHaveValue("member"); + + // Rename and revert + await page.fill("#org-rename", "renamed-org"); + await page.click("#org-rename-btn"); + await expect(page.locator("#toast")).toContainText("Renamed"); + await expect(page.locator("#orgbar #org-name")).toHaveText("renamed-org"); + await page.fill("#org-rename", "default"); + await page.click("#org-rename-btn"); + await expect(page.locator("#orgbar #org-name")).toHaveText("default"); +}); + +test("org admin: member role change round-trip", async ({ page }) => { + await login(page); + await page.click("#invite-btn"); + const sel = page.locator(".admin-item", { hasText: MEMBER }).locator("select"); + await sel.selectOption("owner"); + await expect(page.locator("#toast")).toContainText("Role updated"); + await expect(sel).toHaveValue("owner"); + await sel.selectOption("member"); + await expect(sel).toHaveValue("member"); +}); + +test("org admin: invite create shows in list, revoke removes it", async ({ page }) => { + await login(page); + await page.click("#invite-btn"); + await page.click(".admin-h .pbtn"); // New invite + await expect(page.locator("#toast")).toContainText("Invite"); + const row = page.locator(".admin-item", { hasText: "/join/" }).first(); + await expect(row).toBeVisible(); + await expect(row.locator(".ai-tag")).toContainText("unused"); + await row.locator(".ai-del").click(); + await page.click(".modal .danger-btn"); // confirm revoke + await expect(page.locator("#toast")).toContainText("Revoked"); + await expect(page.locator(".admin-item", { hasText: "/join/" })).toHaveCount(0); +}); + +test("org admin: public share audit lists and revokes", async ({ page }) => { + await login(page); + const pid = await wikiId(page); + await page.request.post(`/api/p/${pid}/shares`, { data: { path: "index.md" } }); + await page.click("#invite-btn"); + const row = page.locator(".admin-item", { hasText: "index.md" }); + await expect(row).toBeVisible(); + await expect(row.locator(".ai-tag")).toContainText("wiki"); + await row.locator(".ai-del").click(); + await page.click(".modal .danger-btn"); + await expect(page.locator("#toast")).toContainText("Share revoked"); + await expect(page.locator(".admin-item", { hasText: "index.md" })).toHaveCount(0); +}); + +test("org admin: project rename and delete", async ({ page }) => { + await login(page); + await page.request.post("/api/projects", { data: { name: "doomed" } }); + await page.reload(); // pick up the new project + await page.click("#invite-btn"); + const row = page.locator(".admin-item", { hasText: "doomed" }); + await row.locator(".ai-btn", { hasText: "Rename" }).click(); + await page.fill(".modal-input", "doomed-2"); + await page.click(".modal .pbtn"); + await expect(page.locator("#toast")).toContainText("Renamed"); + const row2 = page.locator(".admin-item", { hasText: "doomed-2" }); + await expect(row2).toBeVisible(); + await row2.locator(".ai-del").click(); + await page.click(".modal .danger-btn"); + await expect(page.locator("#toast")).toContainText("Deleted"); + await expect(page.locator(".admin-item", { hasText: "doomed-2" })).toHaveCount(0); + await expect(page.locator("#projects .row .label", { hasText: "doomed-2" })).toHaveCount(0); +}); + +test("member sees the org panel read-only", async ({ page }) => { + await login(page, MEMBER); + await page.click("#orgbar #org-name"); + await expect(page.locator("#org-title")).toContainText("member"); + await expect(page.locator("#org-rename")).toHaveCount(0); + await expect(page.locator(".admin-item select")).toHaveCount(0); + await expect(page.locator(".admin-item .ai-tag").first()).toBeVisible(); // role tags +}); + +test("hub settings: policy view, save round-trip, pending queue empty", async ({ page }) => { + await login(page); + await page.click("#adminbar"); + await expect(page.locator("#crumb")).toHaveText("Signup & access"); + await expect(page.locator(".admin h1")).toHaveText("Signup & access"); + // Server has no SMTP: verification toggle disabled + const ver = page.locator(".admin-item.toggle").first().locator("input"); + await expect(ver).toBeDisabled(); + await expect(page.locator(".admin-item", { hasText: "Self-signup" })).toContainText("invite-only"); + await expect(page.locator(".admin-item", { hasText: "Hub admins" })).toContainText(ADMIN); + // Toggle approval on, save, revert + const app = page.locator(".admin-item.toggle").nth(1).locator("input"); + await app.check(); + await page.click(".admin > .pbtn"); + await expect(page.locator("#toast")).toContainText("policy saved"); + await app.uncheck(); + await page.click(".admin > .pbtn"); + await expect(page.locator("#toast")).toContainText("policy saved"); + await expect(page.locator(".admin-empty", { hasText: "No one is waiting" })).toBeVisible(); +}); + +test("navigating away closes an open admin panel", async ({ page }) => { + await login(page); + await page.click("#adminbar"); + await expect(page.locator(".admin h1")).toBeVisible(); + await page.click('#tree .row[data-path="index.md"]'); + await expect(page.locator("#content h1")).toHaveText("Wiki"); + await expect(page.locator(".admin")).toHaveCount(0); +}); diff --git a/internal/webapp/frontend/src/api/types.ts b/internal/webapp/frontend/src/api/types.ts index b91bd2b..290b36a 100644 --- a/internal/webapp/frontend/src/api/types.ts +++ b/internal/webapp/frontend/src/api/types.ts @@ -124,6 +124,36 @@ export interface ShareCreated { url: string; } +// GET /api/orgs/{org}/invites (handleInviteList, orgs.go) +export interface OrgInviteInfo { + token: string; + url: string; + creator?: string; + created?: string; + expires: string; + uses: number; +} + +// GET /api/orgs/{org}/shares (handleOrgShares, admin.go) +export interface OrgShareInfo { + token: string; + url: string; + path: string; + project_name?: string; + creator?: string; + created?: string; +} + +// GET/POST /api/admin/policy (handleAdminPolicy, admin.go) +export interface AdminPolicy { + require_verification: boolean; + require_approval: boolean; + allow_signup: boolean; + allowed_domains?: string[]; // read-only (server config) + admins?: string[]; // read-only (server config) + mailer: boolean; +} + // POST .../upload/init (handleUploadInit, upload.go) export interface UploadPlan { mode: "direct" | "server"; diff --git a/internal/webapp/frontend/src/apps/Browser.tsx b/internal/webapp/frontend/src/apps/Browser.tsx index cf415c4..b4d41cb 100644 --- a/internal/webapp/frontend/src/apps/Browser.tsx +++ b/internal/webapp/frontend/src/apps/Browser.tsx @@ -37,6 +37,10 @@ export default function Browser(props: { projects?: Project[]; canInsights?: boolean; sidebar: { vault: ReactNode; projectsNav?: ReactNode; orgBar?: ReactNode }; + // Admin panels (org admin, hub settings) replace the content pane without + // touching the URL — matching the classic app, where they were never + // routes. Any navigation closes them (the caller owns that state). + panel?: { crumb: string; body: ReactNode } | null; }) { const { config, apiBase, route, hub, project } = props; const routeKey = useLocationPath(); // scroll memo key, one slot per URL @@ -138,11 +142,12 @@ export default function Browser(props: { const uploadInput = useRef(null); const downloadRef = useRef(null); - const canShare = hub && !!project && isFile; - const canHistory = hub && !!project; + const panel = props.panel ?? null; + const canShare = !panel && hub && !!project && isFile; + const canHistory = !panel && hub && !!project; const canUpload = !!config.upload?.enabled && (!hub || !!project); - const canDownload = isFile; - const canMore = isFile || (hub && !!project && isDir); + const canDownload = !panel && isFile; + const canMore = !panel && (isFile || (hub && !!project && isDir)); const downloadURL = apiBase + "download?path=" + encodeURIComponent(path); const shareNow = useCallback(async () => { @@ -243,7 +248,10 @@ export default function Browser(props: { const isFolderFn = useCallback((p: string) => dirIndex.has(p), [dirIndex]); let contentClass = "markdown"; let view: ReactNode; - if (route.view === "insights") { + if (panel) { + contentClass = "view"; + view = panel.body; + } else if (route.view === "insights") { contentClass = "view"; view = props.canInsights ? ( Select a file to read it.; } - const crumb = path ? ( + const crumb = panel ? ( + panel.crumb + ) : path ? ( ) : route.view === "insights" ? ( "Insights — " + (project?.name ?? "") diff --git a/internal/webapp/frontend/src/apps/HubApp.tsx b/internal/webapp/frontend/src/apps/HubApp.tsx index 5acf781..c97e724 100644 --- a/internal/webapp/frontend/src/apps/HubApp.tsx +++ b/internal/webapp/frontend/src/apps/HubApp.tsx @@ -4,7 +4,9 @@ import type { InviteAccepted, Project, ProjectCreated, ServerConfig } from "../a import { useOrgs, usePending, useProjects, useHubRefresh } from "../hooks/useHub"; import { parseRoute } from "../router"; import { navigate, Redirect, useLocationPath } from "../nav"; -import { AppShell, Topbar, VaultHeader } from "../components/shell"; +import { AppShell, Topbar, VaultHeader, closeSidebarOnMobile } from "../components/shell"; +import { OrgAdmin } from "../components/OrgAdmin"; +import { HubSettings } from "../components/HubSettings"; import { ProjectNav } from "../components/ProjectNav"; import { OrgBar } from "../components/OrgBar"; import { EmptyState } from "../components/EmptyState"; @@ -17,6 +19,10 @@ export default function HubApp({ config }: { config: ServerConfig }) { // Org just joined via an invite this page-load: prefer its projects over // whatever happens to be first in the list. const [joinedOrgId, setJoinedOrgId] = useState(null); + // Admin panels replace the content pane without touching the URL (they + // were never routes in the classic app); any navigation closes them. + const [panel, setPanel] = useState(null); + useEffect(() => setPanel(null), [pathname]); const joinToken = useMemo(() => { const m = pathname.match(/^\/join\/([0-9a-f]+)\/?$/); @@ -75,8 +81,27 @@ export default function HubApp({ config }: { config: ServerConfig }) { name={projects ? (current ? current.name : brand) : "…"} onHome={current ? () => navigate("/" + current.id) : undefined} showSignout={config.auth.enabled} - admin={isAdmin ? { pending: pending?.length || 0, onClick: () => {} } : undefined} - gear={gearTarget ? { onClick: () => {} } : undefined} + admin={ + isAdmin + ? { + pending: pending?.length || 0, + onClick: () => { + setPanel({ kind: "hub" }); + closeSidebarOnMobile(); + }, + } + : undefined + } + gear={ + gearTarget + ? { + onClick: () => { + setPanel({ kind: "org", orgId: gearTarget.id }); + closeSidebarOnMobile(); + }, + } + : undefined + } /> ); @@ -117,6 +142,24 @@ export default function HubApp({ config }: { config: ServerConfig }) { ); } + const panelOrg = panel?.kind === "org" ? orgs.find((o) => o.id === panel.orgId) : null; + const activePanel = + panel?.kind === "hub" + ? { crumb: "Signup & access", body: } + : panelOrg + ? { + crumb: panelOrg.name, + body: ( + + ), + } + : null; + // Landing ("/") and unknown project ids both resolve to a real project // URL; replace so back/forward never bounces through the redirect. if (route.project !== current.id) { @@ -136,8 +179,17 @@ export default function HubApp({ config }: { config: ServerConfig }) { sidebar={{ vault, projectsNav: , - orgBar: {}} />, + orgBar: ( + { + setPanel({ kind: "org", orgId: o.id }); + closeSidebarOnMobile(); + }} + /> + ), }} + panel={activePanel} /> ); } diff --git a/internal/webapp/frontend/src/components/HubSettings.tsx b/internal/webapp/frontend/src/components/HubSettings.tsx new file mode 100644 index 0000000..6c0ebb3 --- /dev/null +++ b/internal/webapp/frontend/src/components/HubSettings.tsx @@ -0,0 +1,159 @@ +import { useEffect, useState } from "react"; +import { useQuery, useQueryClient } from "@tanstack/react-query"; +import { getJSON, postJSON } from "../api/http"; +import type { AdminPolicy } from "../api/types"; +import { usePending } from "../hooks/useHub"; +import { toast } from "../toast"; + +/* Hub-admin settings: signup/access policy. Verification & approval are + live toggles; the domain allowlist and admin list are shown read-only + (they're server-config owned, deliberately not browser-editable). + Pending approvals live here too, so this is the single admin home. */ +export function HubSettings() { + const qc = useQueryClient(); + const { data: pol, error } = useQuery({ + queryKey: ["admin", "policy"], + queryFn: () => getJSON("/api/admin/policy"), + }); + const { data: pending } = usePending(true); + const [ver, setVer] = useState(false); + const [app, setApp] = useState(false); + useEffect(() => { + if (pol) { + setVer(pol.require_verification && pol.mailer); + setApp(pol.require_approval); + } + }, [pol]); + useEffect(() => { + if (error) toast((error as Error).message, true); + }, [error]); + if (!pol) return null; + + const act = async (id: string, verb: "approve" | "deny", email: string) => { + try { + await postJSON(`/api/admin/pending/${id}/${verb}`); + toast((verb === "approve" ? "Approved " : "Denied ") + email); + qc.invalidateQueries({ queryKey: ["admin", "pending"] }); + } catch (e) { + toast((e as Error).message, true); + } + }; + + return ( +
+

Signup & access

+

+ Who can create an account on this hub, and how new accounts are vetted. +

+ +

New-account vetting

+
+ + +
+ + +

Who can sign up

+
+
+ Allowed email domains + + {pol.allowed_domains && pol.allowed_domains.length + ? pol.allowed_domains.map((d) => "@" + d).join(", ") + : "any"} + +
+
+ Self-signup + {pol.allow_signup ? "open" : "invite-only"} +
+
+ Hub admins + + {pol.admins && pol.admins.length ? pol.admins.join(", ") : "none"} + +
+
+

+ Domains and admins are set in the server config file (they can't be widened from the + browser). +

+ +

Pending signups

+
+ {(!pending || pending.length === 0) && ( +
No one is waiting for approval.
+ )} + {(pending || []).map((u) => ( +
+ {(u.name ? u.name + " · " : "") + u.email} + + +
+ ))} +
+
+ ); +} + +function PolicyToggle({ + label, + desc, + checked, + disabled, + onChange, +}: { + label: string; + desc: string; + checked: boolean; + disabled?: boolean; + onChange: (v: boolean) => void; +}) { + return ( + + ); +} diff --git a/internal/webapp/frontend/src/components/OrgAdmin.tsx b/internal/webapp/frontend/src/components/OrgAdmin.tsx new file mode 100644 index 0000000..f12eb03 --- /dev/null +++ b/internal/webapp/frontend/src/components/OrgAdmin.tsx @@ -0,0 +1,302 @@ +import { useState } from "react"; +import { useQuery, useQueryClient } from "@tanstack/react-query"; +import { api, getJSON, postJSON } from "../api/http"; +import type { Org, OrgInviteInfo, OrgShareInfo, Project } from "../api/types"; +import { modalConfirm, modalPrompt } from "../modal"; +import { toast } from "../toast"; +import { copyText } from "../util"; + +/* The org admin panel: members (owners can change roles / remove), rename, + projects (rename / delete), invite links (create / revoke), and an + org-wide audit of public shares. */ +export function OrgAdmin({ + org, + projects, + myEmail, + onProjectsChanged, +}: { + org: Org; + projects: Project[]; + myEmail: string; + onProjectsChanged: () => Promise; +}) { + const qc = useQueryClient(); + const owner = org.role === "owner"; + const [renameVal, setRenameVal] = useState(org.name); + + const refreshOrgs = () => qc.invalidateQueries({ queryKey: ["orgs"] }); + const refreshInvites = () => qc.invalidateQueries({ queryKey: ["invites", org.id] }); + const refreshShares = () => qc.invalidateQueries({ queryKey: ["orgShares", org.id] }); + + const { data: invites } = useQuery({ + queryKey: ["invites", org.id], + queryFn: () => getJSON<{ invites: OrgInviteInfo[] }>(`/api/orgs/${org.id}/invites`), + enabled: owner, + select: (d) => d.invites || [], + }); + const { data: shares } = useQuery({ + queryKey: ["orgShares", org.id], + queryFn: () => getJSON<{ shares: OrgShareInfo[] }>(`/api/orgs/${org.id}/shares`), + enabled: owner, + select: (d) => d.shares || [], + }); + + const orgProjects = projects.filter((p) => p.org === org.id); + + return ( +
+

{org.name + (owner ? "" : " · member")}

+ + {owner && ( +
+ setRenameVal(e.target.value)} + /> + +
+ )} + +

Members

+
+ {org.members.map((m) => { + const isSelf = !!myEmail && m.email.toLowerCase() === myEmail.toLowerCase(); + return ( +
+ {m.email + (isSelf ? " (you)" : "")} + {owner && !isSelf ? ( + <> + + + + ) : ( + {m.role} + )} +
+ ); + })} +
+ + {owner && ( + <> +

Projects

+
+ {orgProjects.length === 0 &&
No projects yet.
} + {orgProjects.map((p) => ( +
+ {p.name} + + +
+ ))} +
+ +
+

Invite links

+ +
+
+ {invites && invites.length === 0 && ( +
No active invite links.
+ )} + {(invites || []).map((inv) => ( +
+ + copyText(inv.url).then((ok) => toast(ok ? "Copied." : "Select and copy the link.")) + } + > + {inv.url} + + + {(inv.creator ? "by " + inv.creator + " · " : "") + + (inv.uses ? inv.uses + " joined · " : "unused · ") + + "expires " + + new Date(inv.expires).toLocaleDateString()} + + +
+ ))} +
+ +

Public share links

+
+ {shares && shares.length === 0 &&
No public shares.
} + {(shares || []).map((sh) => ( +
+ window.open(sh.url, "_blank")} + > + {sh.path} + + + {(sh.project_name || "") + + (sh.creator ? " · by " + sh.creator : "") + + (sh.created ? " · " + new Date(sh.created).toLocaleDateString() : "")} + + +
+ ))} +
+ + )} +
+ ); +} diff --git a/internal/webapp/static/assets/index-B1CZxrv9.js b/internal/webapp/static/assets/index-B1CZxrv9.js new file mode 100644 index 0000000..a848712 --- /dev/null +++ b/internal/webapp/static/assets/index-B1CZxrv9.js @@ -0,0 +1,11 @@ +(function(){const c=document.createElement("link").relList;if(c&&c.supports&&c.supports("modulepreload"))return;for(const d of document.querySelectorAll('link[rel="modulepreload"]'))r(d);new MutationObserver(d=>{for(const y of d)if(y.type==="childList")for(const S of y.addedNodes)S.tagName==="LINK"&&S.rel==="modulepreload"&&r(S)}).observe(document,{childList:!0,subtree:!0});function f(d){const y={};return d.integrity&&(y.integrity=d.integrity),d.referrerPolicy&&(y.referrerPolicy=d.referrerPolicy),d.crossOrigin==="use-credentials"?y.credentials="include":d.crossOrigin==="anonymous"?y.credentials="omit":y.credentials="same-origin",y}function r(d){if(d.ep)return;d.ep=!0;const y=f(d);fetch(d.href,y)}})();var Ks={exports:{}},Zn={};var mh;function Rv(){if(mh)return Zn;mh=1;var i=Symbol.for("react.transitional.element"),c=Symbol.for("react.fragment");function f(r,d,y){var S=null;if(y!==void 0&&(S=""+y),d.key!==void 0&&(S=""+d.key),"key"in d){y={};for(var A in d)A!=="key"&&(y[A]=d[A])}else y=d;return d=y.ref,{$$typeof:i,type:r,key:S,ref:d!==void 0?d:null,props:y}}return Zn.Fragment=c,Zn.jsx=f,Zn.jsxs=f,Zn}var yh;function Uv(){return yh||(yh=1,Ks.exports=Rv()),Ks.exports}var o=Uv(),Zs={exports:{}},I={};var vh;function Hv(){if(vh)return I;vh=1;var i=Symbol.for("react.transitional.element"),c=Symbol.for("react.portal"),f=Symbol.for("react.fragment"),r=Symbol.for("react.strict_mode"),d=Symbol.for("react.profiler"),y=Symbol.for("react.consumer"),S=Symbol.for("react.context"),A=Symbol.for("react.forward_ref"),v=Symbol.for("react.suspense"),m=Symbol.for("react.memo"),N=Symbol.for("react.lazy"),j=Symbol.for("react.activity"),E=Symbol.iterator;function q(b){return b===null||typeof b!="object"?null:(b=E&&b[E]||b["@@iterator"],typeof b=="function"?b:null)}var C={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},w=Object.assign,B={};function L(b,H,G){this.props=b,this.context=H,this.refs=B,this.updater=G||C}L.prototype.isReactComponent={},L.prototype.setState=function(b,H){if(typeof b!="object"&&typeof b!="function"&&b!=null)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,b,H,"setState")},L.prototype.forceUpdate=function(b){this.updater.enqueueForceUpdate(this,b,"forceUpdate")};function dt(){}dt.prototype=L.prototype;function nt(b,H,G){this.props=b,this.context=H,this.refs=B,this.updater=G||C}var Ot=nt.prototype=new dt;Ot.constructor=nt,w(Ot,L.prototype),Ot.isPureReactComponent=!0;var Nt=Array.isArray;function tt(){}var F={H:null,A:null,T:null,S:null},ht=Object.prototype.hasOwnProperty;function Lt(b,H,G){var X=G.ref;return{$$typeof:i,type:b,key:H,ref:X!==void 0?X:null,props:G}}function ne(b,H){return Lt(b.type,H,b.props)}function Vt(b){return typeof b=="object"&&b!==null&&b.$$typeof===i}function Ht(b){var H={"=":"=0",":":"=2"};return"$"+b.replace(/[=:]/g,function(G){return H[G]})}var zt=/\/+/g;function ee(b,H){return typeof b=="object"&&b!==null&&b.key!=null?Ht(""+b.key):H.toString(36)}function me(b){switch(b.status){case"fulfilled":return b.value;case"rejected":throw b.reason;default:switch(typeof b.status=="string"?b.then(tt,tt):(b.status="pending",b.then(function(H){b.status==="pending"&&(b.status="fulfilled",b.value=H)},function(H){b.status==="pending"&&(b.status="rejected",b.reason=H)})),b.status){case"fulfilled":return b.value;case"rejected":throw b.reason}}throw b}function _(b,H,G,X,W){var et=typeof b;(et==="undefined"||et==="boolean")&&(b=null);var at=!1;if(b===null)at=!0;else switch(et){case"bigint":case"string":case"number":at=!0;break;case"object":switch(b.$$typeof){case i:case c:at=!0;break;case N:return at=b._init,_(at(b._payload),H,G,X,W)}}if(at)return W=W(b),at=X===""?"."+ee(b,0):X,Nt(W)?(G="",at!=null&&(G=at.replace(zt,"$&/")+"/"),_(W,H,G,"",function(Le){return Le})):W!=null&&(Vt(W)&&(W=ne(W,G+(W.key==null||b&&b.key===W.key?"":(""+W.key).replace(zt,"$&/")+"/")+at)),H.push(W)),1;at=0;var Jt=X===""?".":X+":";if(Nt(b))for(var Dt=0;Dt>>1,gt=_[mt];if(0>>1;mtd(G,J))Xd(W,G)?(_[mt]=W,_[X]=J,mt=X):(_[mt]=G,_[H]=J,mt=H);else if(Xd(W,J))_[mt]=W,_[X]=J,mt=X;else break t}}return Y}function d(_,Y){var J=_.sortIndex-Y.sortIndex;return J!==0?J:_.id-Y.id}if(i.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var y=performance;i.unstable_now=function(){return y.now()}}else{var S=Date,A=S.now();i.unstable_now=function(){return S.now()-A}}var v=[],m=[],N=1,j=null,E=3,q=!1,C=!1,w=!1,B=!1,L=typeof setTimeout=="function"?setTimeout:null,dt=typeof clearTimeout=="function"?clearTimeout:null,nt=typeof setImmediate<"u"?setImmediate:null;function Ot(_){for(var Y=f(m);Y!==null;){if(Y.callback===null)r(m);else if(Y.startTime<=_)r(m),Y.sortIndex=Y.expirationTime,c(v,Y);else break;Y=f(m)}}function Nt(_){if(w=!1,Ot(_),!C)if(f(v)!==null)C=!0,tt||(tt=!0,Ht());else{var Y=f(m);Y!==null&&me(Nt,Y.startTime-_)}}var tt=!1,F=-1,ht=5,Lt=-1;function ne(){return B?!0:!(i.unstable_now()-Lt_&&ne());){var mt=j.callback;if(typeof mt=="function"){j.callback=null,E=j.priorityLevel;var gt=mt(j.expirationTime<=_);if(_=i.unstable_now(),typeof gt=="function"){j.callback=gt,Ot(_),Y=!0;break e}j===f(v)&&r(v),Ot(_)}else r(v);j=f(v)}if(j!==null)Y=!0;else{var b=f(m);b!==null&&me(Nt,b.startTime-_),Y=!1}}break t}finally{j=null,E=J,q=!1}Y=void 0}}finally{Y?Ht():tt=!1}}}var Ht;if(typeof nt=="function")Ht=function(){nt(Vt)};else if(typeof MessageChannel<"u"){var zt=new MessageChannel,ee=zt.port2;zt.port1.onmessage=Vt,Ht=function(){ee.postMessage(null)}}else Ht=function(){L(Vt,0)};function me(_,Y){F=L(function(){_(i.unstable_now())},Y)}i.unstable_IdlePriority=5,i.unstable_ImmediatePriority=1,i.unstable_LowPriority=4,i.unstable_NormalPriority=3,i.unstable_Profiling=null,i.unstable_UserBlockingPriority=2,i.unstable_cancelCallback=function(_){_.callback=null},i.unstable_forceFrameRate=function(_){0>_||125<_?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):ht=0<_?Math.floor(1e3/_):5},i.unstable_getCurrentPriorityLevel=function(){return E},i.unstable_next=function(_){switch(E){case 1:case 2:case 3:var Y=3;break;default:Y=E}var J=E;E=Y;try{return _()}finally{E=J}},i.unstable_requestPaint=function(){B=!0},i.unstable_runWithPriority=function(_,Y){switch(_){case 1:case 2:case 3:case 4:case 5:break;default:_=3}var J=E;E=_;try{return Y()}finally{E=J}},i.unstable_scheduleCallback=function(_,Y,J){var mt=i.unstable_now();switch(typeof J=="object"&&J!==null?(J=J.delay,J=typeof J=="number"&&0mt?(_.sortIndex=J,c(m,_),f(v)===null&&_===f(m)&&(w?(dt(F),F=-1):w=!0,me(Nt,J-mt))):(_.sortIndex=gt,c(v,_),C||q||(C=!0,tt||(tt=!0,Ht()))),_},i.unstable_shouldYield=ne,i.unstable_wrapCallback=function(_){var Y=E;return function(){var J=E;E=Y;try{return _.apply(this,arguments)}finally{E=J}}}})(ks)),ks}var bh;function wv(){return bh||(bh=1,Js.exports=qv()),Js.exports}var Fs={exports:{}},le={};var Sh;function Qv(){if(Sh)return le;Sh=1;var i=cf();function c(v){var m="https://react.dev/errors/"+v;if(1"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(i)}catch(c){console.error(c)}}return i(),Fs.exports=Qv(),Fs.exports}var jh;function Yv(){if(jh)return Vn;jh=1;var i=wv(),c=cf(),f=Bv();function r(t){var e="https://react.dev/errors/"+t;if(1gt||(t.current=mt[gt],mt[gt]=null,gt--)}function G(t,e){gt++,mt[gt]=t.current,t.current=e}var X=b(null),W=b(null),et=b(null),at=b(null);function Jt(t,e){switch(G(et,e),G(W,t),G(X,null),e.nodeType){case 9:case 11:t=(t=e.documentElement)&&(t=t.namespaceURI)?wd(t):0;break;default:if(t=e.tagName,e=e.namespaceURI)e=wd(e),t=Qd(e,t);else switch(t){case"svg":t=1;break;case"math":t=2;break;default:t=0}}H(X),G(X,t)}function Dt(){H(X),H(W),H(et)}function Le(t){t.memoizedState!==null&&G(at,t);var e=X.current,l=Qd(e,t.type);e!==l&&(G(W,t),G(X,l))}function Kl(t){W.current===t&&(H(X),H(W)),at.current===t&&(H(at),Gn._currentValue=J)}var Wa,ai;function we(t){if(Wa===void 0)try{throw Error()}catch(l){var e=l.stack.trim().match(/\n( *(at )?)/);Wa=e&&e[1]||"",ai=-1)":-1n||p[a]!==O[n]){var D=` +`+p[a].replace(" at new "," at ");return t.displayName&&D.includes("")&&(D=D.replace("",t.displayName)),D}while(1<=a&&0<=n);break}}}finally{hl=!1,Error.prepareStackTrace=l}return(l=t?t.displayName||t.name:"")?we(l):""}function zu(t,e){switch(t.tag){case 26:case 27:case 5:return we(t.type);case 16:return we("Lazy");case 13:return t.child!==e&&e!==null?we("Suspense Fallback"):we("Suspense");case 19:return we("SuspenseList");case 0:case 15:return ml(t.type,!1);case 11:return ml(t.type.render,!1);case 1:return ml(t.type,!0);case 31:return we("Activity");default:return""}}function ni(t){try{var e="",l=null;do e+=zu(t,l),l=t,t=t.return;while(t);return e}catch(a){return` +Error generating stack: `+a.message+` +`+a.stack}}var yl=Object.prototype.hasOwnProperty,Xe=i.unstable_scheduleCallback,ye=i.unstable_cancelCallback,Mu=i.unstable_shouldYield,Cu=i.unstable_requestPaint,k=i.unstable_now,it=i.unstable_getCurrentPriorityLevel,bt=i.unstable_ImmediatePriority,Qe=i.unstable_UserBlockingPriority,vl=i.unstable_NormalPriority,Du=i.unstable_LowPriority,vf=i.unstable_IdlePriority,ym=i.log,vm=i.unstable_setDisableYieldValue,Ia=null,ve=null;function pl(t){if(typeof ym=="function"&&vm(t),ve&&typeof ve.setStrictMode=="function")try{ve.setStrictMode(Ia,t)}catch{}}var pe=Math.clz32?Math.clz32:bm,pm=Math.log,gm=Math.LN2;function bm(t){return t>>>=0,t===0?32:31-(pm(t)/gm|0)|0}var ii=256,ui=262144,ci=4194304;function Zl(t){var e=t&42;if(e!==0)return e;switch(t&-t){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return t&261888;case 262144:case 524288:case 1048576:case 2097152:return t&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return t&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return t}}function si(t,e,l){var a=t.pendingLanes;if(a===0)return 0;var n=0,u=t.suspendedLanes,s=t.pingedLanes;t=t.warmLanes;var h=a&134217727;return h!==0?(a=h&~u,a!==0?n=Zl(a):(s&=h,s!==0?n=Zl(s):l||(l=h&~t,l!==0&&(n=Zl(l))))):(h=a&~u,h!==0?n=Zl(h):s!==0?n=Zl(s):l||(l=a&~t,l!==0&&(n=Zl(l)))),n===0?0:e!==0&&e!==n&&(e&u)===0&&(u=n&-n,l=e&-e,u>=l||u===32&&(l&4194048)!==0)?e:n}function Pa(t,e){return(t.pendingLanes&~(t.suspendedLanes&~t.pingedLanes)&e)===0}function Sm(t,e){switch(t){case 1:case 2:case 4:case 8:case 64:return e+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return e+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function pf(){var t=ci;return ci<<=1,(ci&62914560)===0&&(ci=4194304),t}function _u(t){for(var e=[],l=0;31>l;l++)e.push(t);return e}function tn(t,e){t.pendingLanes|=e,e!==268435456&&(t.suspendedLanes=0,t.pingedLanes=0,t.warmLanes=0)}function xm(t,e,l,a,n,u){var s=t.pendingLanes;t.pendingLanes=l,t.suspendedLanes=0,t.pingedLanes=0,t.warmLanes=0,t.expiredLanes&=l,t.entangledLanes&=l,t.errorRecoveryDisabledLanes&=l,t.shellSuspendCounter=0;var h=t.entanglements,p=t.expirationTimes,O=t.hiddenUpdates;for(l=s&~l;0"u")return null;try{return t.activeElement||t.body}catch{return t.body}}var Nm=/[\n"\\]/g;function ze(t){return t.replace(Nm,function(e){return"\\"+e.charCodeAt(0).toString(16)+" "})}function Qu(t,e,l,a,n,u,s,h){t.name="",s!=null&&typeof s!="function"&&typeof s!="symbol"&&typeof s!="boolean"?t.type=s:t.removeAttribute("type"),e!=null?s==="number"?(e===0&&t.value===""||t.value!=e)&&(t.value=""+Ne(e)):t.value!==""+Ne(e)&&(t.value=""+Ne(e)):s!=="submit"&&s!=="reset"||t.removeAttribute("value"),e!=null?Bu(t,s,Ne(e)):l!=null?Bu(t,s,Ne(l)):a!=null&&t.removeAttribute("value"),n==null&&u!=null&&(t.defaultChecked=!!u),n!=null&&(t.checked=n&&typeof n!="function"&&typeof n!="symbol"),h!=null&&typeof h!="function"&&typeof h!="symbol"&&typeof h!="boolean"?t.name=""+Ne(h):t.removeAttribute("name")}function Cf(t,e,l,a,n,u,s,h){if(u!=null&&typeof u!="function"&&typeof u!="symbol"&&typeof u!="boolean"&&(t.type=u),e!=null||l!=null){if(!(u!=="submit"&&u!=="reset"||e!=null)){wu(t);return}l=l!=null?""+Ne(l):"",e=e!=null?""+Ne(e):l,h||e===t.value||(t.value=e),t.defaultValue=e}a=a??n,a=typeof a!="function"&&typeof a!="symbol"&&!!a,t.checked=h?t.checked:!!a,t.defaultChecked=!!a,s!=null&&typeof s!="function"&&typeof s!="symbol"&&typeof s!="boolean"&&(t.name=s),wu(t)}function Bu(t,e,l){e==="number"&&oi(t.ownerDocument)===t||t.defaultValue===""+l||(t.defaultValue=""+l)}function va(t,e,l,a){if(t=t.options,e){e={};for(var n=0;n"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),Ku=!1;if(We)try{var nn={};Object.defineProperty(nn,"passive",{get:function(){Ku=!0}}),window.addEventListener("test",nn,nn),window.removeEventListener("test",nn,nn)}catch{Ku=!1}var bl=null,Zu=null,hi=null;function wf(){if(hi)return hi;var t,e=Zu,l=e.length,a,n="value"in bl?bl.value:bl.textContent,u=n.length;for(t=0;t=sn),Xf=" ",Kf=!1;function Zf(t,e){switch(t){case"keyup":return ey.indexOf(e.keyCode)!==-1;case"keydown":return e.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Vf(t){return t=t.detail,typeof t=="object"&&"data"in t?t.data:null}var Sa=!1;function ay(t,e){switch(t){case"compositionend":return Vf(e);case"keypress":return e.which!==32?null:(Kf=!0,Xf);case"textInput":return t=e.data,t===Xf&&Kf?null:t;default:return null}}function ny(t,e){if(Sa)return t==="compositionend"||!$u&&Zf(t,e)?(t=wf(),hi=Zu=bl=null,Sa=!1,t):null;switch(t){case"paste":return null;case"keypress":if(!(e.ctrlKey||e.altKey||e.metaKey)||e.ctrlKey&&e.altKey){if(e.char&&1=e)return{node:l,offset:e-t};t=a}t:{for(;l;){if(l.nextSibling){l=l.nextSibling;break t}l=l.parentNode}l=void 0}l=tr(l)}}function lr(t,e){return t&&e?t===e?!0:t&&t.nodeType===3?!1:e&&e.nodeType===3?lr(t,e.parentNode):"contains"in t?t.contains(e):t.compareDocumentPosition?!!(t.compareDocumentPosition(e)&16):!1:!1}function ar(t){t=t!=null&&t.ownerDocument!=null&&t.ownerDocument.defaultView!=null?t.ownerDocument.defaultView:window;for(var e=oi(t.document);e instanceof t.HTMLIFrameElement;){try{var l=typeof e.contentWindow.location.href=="string"}catch{l=!1}if(l)t=e.contentWindow;else break;e=oi(t.document)}return e}function Pu(t){var e=t&&t.nodeName&&t.nodeName.toLowerCase();return e&&(e==="input"&&(t.type==="text"||t.type==="search"||t.type==="tel"||t.type==="url"||t.type==="password")||e==="textarea"||t.contentEditable==="true")}var dy=We&&"documentMode"in document&&11>=document.documentMode,xa=null,tc=null,dn=null,ec=!1;function nr(t,e,l){var a=l.window===l?l.document:l.nodeType===9?l:l.ownerDocument;ec||xa==null||xa!==oi(a)||(a=xa,"selectionStart"in a&&Pu(a)?a={start:a.selectionStart,end:a.selectionEnd}:(a=(a.ownerDocument&&a.ownerDocument.defaultView||window).getSelection(),a={anchorNode:a.anchorNode,anchorOffset:a.anchorOffset,focusNode:a.focusNode,focusOffset:a.focusOffset}),dn&&on(dn,a)||(dn=a,a=uu(tc,"onSelect"),0>=s,n-=s,Ke=1<<32-pe(e)+n|l<lt?(ft=Z,Z=null):ft=Z.sibling;var vt=z(x,Z,T[lt],R);if(vt===null){Z===null&&(Z=ft);break}t&&Z&&vt.alternate===null&&e(x,Z),g=u(vt,g,lt),yt===null?V=vt:yt.sibling=vt,yt=vt,Z=ft}if(lt===T.length)return l(x,Z),rt&&Pe(x,lt),V;if(Z===null){for(;ltlt?(ft=Z,Z=null):ft=Z.sibling;var Gl=z(x,Z,vt.value,R);if(Gl===null){Z===null&&(Z=ft);break}t&&Z&&Gl.alternate===null&&e(x,Z),g=u(Gl,g,lt),yt===null?V=Gl:yt.sibling=Gl,yt=Gl,Z=ft}if(vt.done)return l(x,Z),rt&&Pe(x,lt),V;if(Z===null){for(;!vt.done;lt++,vt=T.next())vt=U(x,vt.value,R),vt!==null&&(g=u(vt,g,lt),yt===null?V=vt:yt.sibling=vt,yt=vt);return rt&&Pe(x,lt),V}for(Z=a(Z);!vt.done;lt++,vt=T.next())vt=M(Z,x,lt,vt.value,R),vt!==null&&(t&&vt.alternate!==null&&Z.delete(vt.key===null?lt:vt.key),g=u(vt,g,lt),yt===null?V=vt:yt.sibling=vt,yt=vt);return t&&Z.forEach(function(_v){return e(x,_v)}),rt&&Pe(x,lt),V}function Tt(x,g,T,R){if(typeof T=="object"&&T!==null&&T.type===w&&T.key===null&&(T=T.props.children),typeof T=="object"&&T!==null){switch(T.$$typeof){case q:t:{for(var V=T.key;g!==null;){if(g.key===V){if(V=T.type,V===w){if(g.tag===7){l(x,g.sibling),R=n(g,T.props.children),R.return=x,x=R;break t}}else if(g.elementType===V||typeof V=="object"&&V!==null&&V.$$typeof===ht&&la(V)===g.type){l(x,g.sibling),R=n(g,T.props),gn(R,T),R.return=x,x=R;break t}l(x,g);break}else e(x,g);g=g.sibling}T.type===w?(R=Wl(T.props.children,x.mode,R,T.key),R.return=x,x=R):(R=Ei(T.type,T.key,T.props,null,x.mode,R),gn(R,T),R.return=x,x=R)}return s(x);case C:t:{for(V=T.key;g!==null;){if(g.key===V)if(g.tag===4&&g.stateNode.containerInfo===T.containerInfo&&g.stateNode.implementation===T.implementation){l(x,g.sibling),R=n(g,T.children||[]),R.return=x,x=R;break t}else{l(x,g);break}else e(x,g);g=g.sibling}R=sc(T,x.mode,R),R.return=x,x=R}return s(x);case ht:return T=la(T),Tt(x,g,T,R)}if(me(T))return K(x,g,T,R);if(Ht(T)){if(V=Ht(T),typeof V!="function")throw Error(r(150));return T=V.call(T),$(x,g,T,R)}if(typeof T.then=="function")return Tt(x,g,Ci(T),R);if(T.$$typeof===nt)return Tt(x,g,Ai(x,T),R);Di(x,T)}return typeof T=="string"&&T!==""||typeof T=="number"||typeof T=="bigint"?(T=""+T,g!==null&&g.tag===6?(l(x,g.sibling),R=n(g,T),R.return=x,x=R):(l(x,g),R=cc(T,x.mode,R),R.return=x,x=R),s(x)):l(x,g)}return function(x,g,T,R){try{pn=0;var V=Tt(x,g,T,R);return _a=null,V}catch(Z){if(Z===Da||Z===zi)throw Z;var yt=be(29,Z,null,x.mode);return yt.lanes=R,yt.return=x,yt}}}var na=Nr(!0),zr=Nr(!1),Tl=!1;function Sc(t){t.updateQueue={baseState:t.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function xc(t,e){t=t.updateQueue,e.updateQueue===t&&(e.updateQueue={baseState:t.baseState,firstBaseUpdate:t.firstBaseUpdate,lastBaseUpdate:t.lastBaseUpdate,shared:t.shared,callbacks:null})}function Ol(t){return{lane:t,tag:0,payload:null,callback:null,next:null}}function Al(t,e,l){var a=t.updateQueue;if(a===null)return null;if(a=a.shared,(pt&2)!==0){var n=a.pending;return n===null?e.next=e:(e.next=n.next,n.next=e),a.pending=e,e=ji(t),or(t,null,l),e}return xi(t,a,e,l),ji(t)}function bn(t,e,l){if(e=e.updateQueue,e!==null&&(e=e.shared,(l&4194048)!==0)){var a=e.lanes;a&=t.pendingLanes,l|=a,e.lanes=l,bf(t,l)}}function jc(t,e){var l=t.updateQueue,a=t.alternate;if(a!==null&&(a=a.updateQueue,l===a)){var n=null,u=null;if(l=l.firstBaseUpdate,l!==null){do{var s={lane:l.lane,tag:l.tag,payload:l.payload,callback:null,next:null};u===null?n=u=s:u=u.next=s,l=l.next}while(l!==null);u===null?n=u=e:u=u.next=e}else n=u=e;l={baseState:a.baseState,firstBaseUpdate:n,lastBaseUpdate:u,shared:a.shared,callbacks:a.callbacks},t.updateQueue=l;return}t=l.lastBaseUpdate,t===null?l.firstBaseUpdate=e:t.next=e,l.lastBaseUpdate=e}var Ec=!1;function Sn(){if(Ec){var t=Ca;if(t!==null)throw t}}function xn(t,e,l,a){Ec=!1;var n=t.updateQueue;Tl=!1;var u=n.firstBaseUpdate,s=n.lastBaseUpdate,h=n.shared.pending;if(h!==null){n.shared.pending=null;var p=h,O=p.next;p.next=null,s===null?u=O:s.next=O,s=p;var D=t.alternate;D!==null&&(D=D.updateQueue,h=D.lastBaseUpdate,h!==s&&(h===null?D.firstBaseUpdate=O:h.next=O,D.lastBaseUpdate=p))}if(u!==null){var U=n.baseState;s=0,D=O=p=null,h=u;do{var z=h.lane&-536870913,M=z!==h.lane;if(M?(st&z)===z:(a&z)===z){z!==0&&z===Ma&&(Ec=!0),D!==null&&(D=D.next={lane:0,tag:h.tag,payload:h.payload,callback:null,next:null});t:{var K=t,$=h;z=e;var Tt=l;switch($.tag){case 1:if(K=$.payload,typeof K=="function"){U=K.call(Tt,U,z);break t}U=K;break t;case 3:K.flags=K.flags&-65537|128;case 0:if(K=$.payload,z=typeof K=="function"?K.call(Tt,U,z):K,z==null)break t;U=j({},U,z);break t;case 2:Tl=!0}}z=h.callback,z!==null&&(t.flags|=64,M&&(t.flags|=8192),M=n.callbacks,M===null?n.callbacks=[z]:M.push(z))}else M={lane:z,tag:h.tag,payload:h.payload,callback:h.callback,next:null},D===null?(O=D=M,p=U):D=D.next=M,s|=z;if(h=h.next,h===null){if(h=n.shared.pending,h===null)break;M=h,h=M.next,M.next=null,n.lastBaseUpdate=M,n.shared.pending=null}}while(!0);D===null&&(p=U),n.baseState=p,n.firstBaseUpdate=O,n.lastBaseUpdate=D,u===null&&(n.shared.lanes=0),Dl|=s,t.lanes=s,t.memoizedState=U}}function Mr(t,e){if(typeof t!="function")throw Error(r(191,t));t.call(e)}function Cr(t,e){var l=t.callbacks;if(l!==null)for(t.callbacks=null,t=0;tu?u:8;var s=_.T,h={};_.T=h,Lc(t,!1,e,l);try{var p=n(),O=_.S;if(O!==null&&O(h,p),p!==null&&typeof p=="object"&&typeof p.then=="function"){var D=xy(p,a);Tn(t,e,D,Te(t))}else Tn(t,e,a,Te(t))}catch(U){Tn(t,e,{then:function(){},status:"rejected",reason:U},Te())}finally{Y.p=u,s!==null&&h.types!==null&&(s.types=h.types),_.T=s}}function Ny(){}function Yc(t,e,l,a){if(t.tag!==5)throw Error(r(476));var n=so(t).queue;co(t,n,e,J,l===null?Ny:function(){return fo(t),l(a)})}function so(t){var e=t.memoizedState;if(e!==null)return e;e={memoizedState:J,baseState:J,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:al,lastRenderedState:J},next:null};var l={};return e.next={memoizedState:l,baseState:l,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:al,lastRenderedState:l},next:null},t.memoizedState=e,t=t.alternate,t!==null&&(t.memoizedState=e),e}function fo(t){var e=so(t);e.next===null&&(e=t.alternate.memoizedState),Tn(t,e.next.queue,{},Te())}function Gc(){return $t(Gn)}function ro(){return wt().memoizedState}function oo(){return wt().memoizedState}function zy(t){for(var e=t.return;e!==null;){switch(e.tag){case 24:case 3:var l=Te();t=Ol(l);var a=Al(e,t,l);a!==null&&(oe(a,e,l),bn(a,e,l)),e={cache:vc()},t.payload=e;return}e=e.return}}function My(t,e,l){var a=Te();l={lane:a,revertLane:0,gesture:null,action:l,hasEagerState:!1,eagerState:null,next:null},Gi(t)?mo(e,l):(l=ic(t,e,l,a),l!==null&&(oe(l,t,a),yo(l,e,a)))}function ho(t,e,l){var a=Te();Tn(t,e,l,a)}function Tn(t,e,l,a){var n={lane:a,revertLane:0,gesture:null,action:l,hasEagerState:!1,eagerState:null,next:null};if(Gi(t))mo(e,n);else{var u=t.alternate;if(t.lanes===0&&(u===null||u.lanes===0)&&(u=e.lastRenderedReducer,u!==null))try{var s=e.lastRenderedState,h=u(s,l);if(n.hasEagerState=!0,n.eagerState=h,ge(h,s))return xi(t,e,n,0),At===null&&Si(),!1}catch{}if(l=ic(t,e,n,a),l!==null)return oe(l,t,a),yo(l,e,a),!0}return!1}function Lc(t,e,l,a){if(a={lane:2,revertLane:Ss(),gesture:null,action:a,hasEagerState:!1,eagerState:null,next:null},Gi(t)){if(e)throw Error(r(479))}else e=ic(t,l,a,2),e!==null&&oe(e,t,2)}function Gi(t){var e=t.alternate;return t===P||e!==null&&e===P}function mo(t,e){Ua=Ui=!0;var l=t.pending;l===null?e.next=e:(e.next=l.next,l.next=e),t.pending=e}function yo(t,e,l){if((l&4194048)!==0){var a=e.lanes;a&=t.pendingLanes,l|=a,e.lanes=l,bf(t,l)}}var On={readContext:$t,use:wi,useCallback:Rt,useContext:Rt,useEffect:Rt,useImperativeHandle:Rt,useLayoutEffect:Rt,useInsertionEffect:Rt,useMemo:Rt,useReducer:Rt,useRef:Rt,useState:Rt,useDebugValue:Rt,useDeferredValue:Rt,useTransition:Rt,useSyncExternalStore:Rt,useId:Rt,useHostTransitionStatus:Rt,useFormState:Rt,useActionState:Rt,useOptimistic:Rt,useMemoCache:Rt,useCacheRefresh:Rt};On.useEffectEvent=Rt;var vo={readContext:$t,use:wi,useCallback:function(t,e){return ae().memoizedState=[t,e===void 0?null:e],t},useContext:$t,useEffect:Ir,useImperativeHandle:function(t,e,l){l=l!=null?l.concat([t]):null,Bi(4194308,4,lo.bind(null,e,t),l)},useLayoutEffect:function(t,e){return Bi(4194308,4,t,e)},useInsertionEffect:function(t,e){Bi(4,2,t,e)},useMemo:function(t,e){var l=ae();e=e===void 0?null:e;var a=t();if(ia){pl(!0);try{t()}finally{pl(!1)}}return l.memoizedState=[a,e],a},useReducer:function(t,e,l){var a=ae();if(l!==void 0){var n=l(e);if(ia){pl(!0);try{l(e)}finally{pl(!1)}}}else n=e;return a.memoizedState=a.baseState=n,t={pending:null,lanes:0,dispatch:null,lastRenderedReducer:t,lastRenderedState:n},a.queue=t,t=t.dispatch=My.bind(null,P,t),[a.memoizedState,t]},useRef:function(t){var e=ae();return t={current:t},e.memoizedState=t},useState:function(t){t=Hc(t);var e=t.queue,l=ho.bind(null,P,e);return e.dispatch=l,[t.memoizedState,l]},useDebugValue:Qc,useDeferredValue:function(t,e){var l=ae();return Bc(l,t,e)},useTransition:function(){var t=Hc(!1);return t=co.bind(null,P,t.queue,!0,!1),ae().memoizedState=t,[!1,t]},useSyncExternalStore:function(t,e,l){var a=P,n=ae();if(rt){if(l===void 0)throw Error(r(407));l=l()}else{if(l=e(),At===null)throw Error(r(349));(st&127)!==0||qr(a,e,l)}n.memoizedState=l;var u={value:l,getSnapshot:e};return n.queue=u,Ir(Qr.bind(null,a,u,t),[t]),a.flags|=2048,qa(9,{destroy:void 0},wr.bind(null,a,u,l,e),null),l},useId:function(){var t=ae(),e=At.identifierPrefix;if(rt){var l=Ze,a=Ke;l=(a&~(1<<32-pe(a)-1)).toString(32)+l,e="_"+e+"R_"+l,l=Hi++,0<\/script>",u=u.removeChild(u.firstChild);break;case"select":u=typeof a.is=="string"?s.createElement("select",{is:a.is}):s.createElement("select"),a.multiple?u.multiple=!0:a.size&&(u.size=a.size);break;default:u=typeof a.is=="string"?s.createElement(n,{is:a.is}):s.createElement(n)}}u[kt]=e,u[ie]=a;t:for(s=e.child;s!==null;){if(s.tag===5||s.tag===6)u.appendChild(s.stateNode);else if(s.tag!==4&&s.tag!==27&&s.child!==null){s.child.return=s,s=s.child;continue}if(s===e)break t;for(;s.sibling===null;){if(s.return===null||s.return===e)break t;s=s.return}s.sibling.return=s.return,s=s.sibling}e.stateNode=u;t:switch(It(u,n,a),n){case"button":case"input":case"select":case"textarea":a=!!a.autoFocus;break t;case"img":a=!0;break t;default:a=!1}a&&il(e)}}return Ct(e),ls(e,e.type,t===null?null:t.memoizedProps,e.pendingProps,l),null;case 6:if(t&&e.stateNode!=null)t.memoizedProps!==a&&il(e);else{if(typeof a!="string"&&e.stateNode===null)throw Error(r(166));if(t=et.current,Na(e)){if(t=e.stateNode,l=e.memoizedProps,a=null,n=Ft,n!==null)switch(n.tag){case 27:case 5:a=n.memoizedProps}t[kt]=e,t=!!(t.nodeValue===l||a!==null&&a.suppressHydrationWarning===!0||Hd(t.nodeValue,l)),t||jl(e,!0)}else t=cu(t).createTextNode(a),t[kt]=e,e.stateNode=t}return Ct(e),null;case 31:if(l=e.memoizedState,t===null||t.memoizedState!==null){if(a=Na(e),l!==null){if(t===null){if(!a)throw Error(r(318));if(t=e.memoizedState,t=t!==null?t.dehydrated:null,!t)throw Error(r(557));t[kt]=e}else Il(),(e.flags&128)===0&&(e.memoizedState=null),e.flags|=4;Ct(e),t=!1}else l=dc(),t!==null&&t.memoizedState!==null&&(t.memoizedState.hydrationErrors=l),t=!0;if(!t)return e.flags&256?(xe(e),e):(xe(e),null);if((e.flags&128)!==0)throw Error(r(558))}return Ct(e),null;case 13:if(a=e.memoizedState,t===null||t.memoizedState!==null&&t.memoizedState.dehydrated!==null){if(n=Na(e),a!==null&&a.dehydrated!==null){if(t===null){if(!n)throw Error(r(318));if(n=e.memoizedState,n=n!==null?n.dehydrated:null,!n)throw Error(r(317));n[kt]=e}else Il(),(e.flags&128)===0&&(e.memoizedState=null),e.flags|=4;Ct(e),n=!1}else n=dc(),t!==null&&t.memoizedState!==null&&(t.memoizedState.hydrationErrors=n),n=!0;if(!n)return e.flags&256?(xe(e),e):(xe(e),null)}return xe(e),(e.flags&128)!==0?(e.lanes=l,e):(l=a!==null,t=t!==null&&t.memoizedState!==null,l&&(a=e.child,n=null,a.alternate!==null&&a.alternate.memoizedState!==null&&a.alternate.memoizedState.cachePool!==null&&(n=a.alternate.memoizedState.cachePool.pool),u=null,a.memoizedState!==null&&a.memoizedState.cachePool!==null&&(u=a.memoizedState.cachePool.pool),u!==n&&(a.flags|=2048)),l!==t&&l&&(e.child.flags|=8192),Vi(e,e.updateQueue),Ct(e),null);case 4:return Dt(),t===null&&Ts(e.stateNode.containerInfo),Ct(e),null;case 10:return el(e.type),Ct(e),null;case 19:if(H(qt),a=e.memoizedState,a===null)return Ct(e),null;if(n=(e.flags&128)!==0,u=a.rendering,u===null)if(n)Nn(a,!1);else{if(Ut!==0||t!==null&&(t.flags&128)!==0)for(t=e.child;t!==null;){if(u=Ri(t),u!==null){for(e.flags|=128,Nn(a,!1),t=u.updateQueue,e.updateQueue=t,Vi(e,t),e.subtreeFlags=0,t=l,l=e.child;l!==null;)dr(l,t),l=l.sibling;return G(qt,qt.current&1|2),rt&&Pe(e,a.treeForkCount),e.child}t=t.sibling}a.tail!==null&&k()>Wi&&(e.flags|=128,n=!0,Nn(a,!1),e.lanes=4194304)}else{if(!n)if(t=Ri(u),t!==null){if(e.flags|=128,n=!0,t=t.updateQueue,e.updateQueue=t,Vi(e,t),Nn(a,!0),a.tail===null&&a.tailMode==="hidden"&&!u.alternate&&!rt)return Ct(e),null}else 2*k()-a.renderingStartTime>Wi&&l!==536870912&&(e.flags|=128,n=!0,Nn(a,!1),e.lanes=4194304);a.isBackwards?(u.sibling=e.child,e.child=u):(t=a.last,t!==null?t.sibling=u:e.child=u,a.last=u)}return a.tail!==null?(t=a.tail,a.rendering=t,a.tail=t.sibling,a.renderingStartTime=k(),t.sibling=null,l=qt.current,G(qt,n?l&1|2:l&1),rt&&Pe(e,a.treeForkCount),t):(Ct(e),null);case 22:case 23:return xe(e),Oc(),a=e.memoizedState!==null,t!==null?t.memoizedState!==null!==a&&(e.flags|=8192):a&&(e.flags|=8192),a?(l&536870912)!==0&&(e.flags&128)===0&&(Ct(e),e.subtreeFlags&6&&(e.flags|=8192)):Ct(e),l=e.updateQueue,l!==null&&Vi(e,l.retryQueue),l=null,t!==null&&t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(l=t.memoizedState.cachePool.pool),a=null,e.memoizedState!==null&&e.memoizedState.cachePool!==null&&(a=e.memoizedState.cachePool.pool),a!==l&&(e.flags|=2048),t!==null&&H(ea),null;case 24:return l=null,t!==null&&(l=t.memoizedState.cache),e.memoizedState.cache!==l&&(e.flags|=2048),el(Qt),Ct(e),null;case 25:return null;case 30:return null}throw Error(r(156,e.tag))}function Uy(t,e){switch(rc(e),e.tag){case 1:return t=e.flags,t&65536?(e.flags=t&-65537|128,e):null;case 3:return el(Qt),Dt(),t=e.flags,(t&65536)!==0&&(t&128)===0?(e.flags=t&-65537|128,e):null;case 26:case 27:case 5:return Kl(e),null;case 31:if(e.memoizedState!==null){if(xe(e),e.alternate===null)throw Error(r(340));Il()}return t=e.flags,t&65536?(e.flags=t&-65537|128,e):null;case 13:if(xe(e),t=e.memoizedState,t!==null&&t.dehydrated!==null){if(e.alternate===null)throw Error(r(340));Il()}return t=e.flags,t&65536?(e.flags=t&-65537|128,e):null;case 19:return H(qt),null;case 4:return Dt(),null;case 10:return el(e.type),null;case 22:case 23:return xe(e),Oc(),t!==null&&H(ea),t=e.flags,t&65536?(e.flags=t&-65537|128,e):null;case 24:return el(Qt),null;case 25:return null;default:return null}}function Yo(t,e){switch(rc(e),e.tag){case 3:el(Qt),Dt();break;case 26:case 27:case 5:Kl(e);break;case 4:Dt();break;case 31:e.memoizedState!==null&&xe(e);break;case 13:xe(e);break;case 19:H(qt);break;case 10:el(e.type);break;case 22:case 23:xe(e),Oc(),t!==null&&H(ea);break;case 24:el(Qt)}}function zn(t,e){try{var l=e.updateQueue,a=l!==null?l.lastEffect:null;if(a!==null){var n=a.next;l=n;do{if((l.tag&t)===t){a=void 0;var u=l.create,s=l.inst;a=u(),s.destroy=a}l=l.next}while(l!==n)}}catch(h){xt(e,e.return,h)}}function Ml(t,e,l){try{var a=e.updateQueue,n=a!==null?a.lastEffect:null;if(n!==null){var u=n.next;a=u;do{if((a.tag&t)===t){var s=a.inst,h=s.destroy;if(h!==void 0){s.destroy=void 0,n=e;var p=l,O=h;try{O()}catch(D){xt(n,p,D)}}}a=a.next}while(a!==u)}}catch(D){xt(e,e.return,D)}}function Go(t){var e=t.updateQueue;if(e!==null){var l=t.stateNode;try{Cr(e,l)}catch(a){xt(t,t.return,a)}}}function Lo(t,e,l){l.props=ua(t.type,t.memoizedProps),l.state=t.memoizedState;try{l.componentWillUnmount()}catch(a){xt(t,e,a)}}function Mn(t,e){try{var l=t.ref;if(l!==null){switch(t.tag){case 26:case 27:case 5:var a=t.stateNode;break;case 30:a=t.stateNode;break;default:a=t.stateNode}typeof l=="function"?t.refCleanup=l(a):l.current=a}}catch(n){xt(t,e,n)}}function Ve(t,e){var l=t.ref,a=t.refCleanup;if(l!==null)if(typeof a=="function")try{a()}catch(n){xt(t,e,n)}finally{t.refCleanup=null,t=t.alternate,t!=null&&(t.refCleanup=null)}else if(typeof l=="function")try{l(null)}catch(n){xt(t,e,n)}else l.current=null}function Xo(t){var e=t.type,l=t.memoizedProps,a=t.stateNode;try{t:switch(e){case"button":case"input":case"select":case"textarea":l.autoFocus&&a.focus();break t;case"img":l.src?a.src=l.src:l.srcSet&&(a.srcset=l.srcSet)}}catch(n){xt(t,t.return,n)}}function as(t,e,l){try{var a=t.stateNode;lv(a,t.type,l,e),a[ie]=e}catch(n){xt(t,t.return,n)}}function Ko(t){return t.tag===5||t.tag===3||t.tag===26||t.tag===27&&ql(t.type)||t.tag===4}function ns(t){t:for(;;){for(;t.sibling===null;){if(t.return===null||Ko(t.return))return null;t=t.return}for(t.sibling.return=t.return,t=t.sibling;t.tag!==5&&t.tag!==6&&t.tag!==18;){if(t.tag===27&&ql(t.type)||t.flags&2||t.child===null||t.tag===4)continue t;t.child.return=t,t=t.child}if(!(t.flags&2))return t.stateNode}}function is(t,e,l){var a=t.tag;if(a===5||a===6)t=t.stateNode,e?(l.nodeType===9?l.body:l.nodeName==="HTML"?l.ownerDocument.body:l).insertBefore(t,e):(e=l.nodeType===9?l.body:l.nodeName==="HTML"?l.ownerDocument.body:l,e.appendChild(t),l=l._reactRootContainer,l!=null||e.onclick!==null||(e.onclick=$e));else if(a!==4&&(a===27&&ql(t.type)&&(l=t.stateNode,e=null),t=t.child,t!==null))for(is(t,e,l),t=t.sibling;t!==null;)is(t,e,l),t=t.sibling}function Ji(t,e,l){var a=t.tag;if(a===5||a===6)t=t.stateNode,e?l.insertBefore(t,e):l.appendChild(t);else if(a!==4&&(a===27&&ql(t.type)&&(l=t.stateNode),t=t.child,t!==null))for(Ji(t,e,l),t=t.sibling;t!==null;)Ji(t,e,l),t=t.sibling}function Zo(t){var e=t.stateNode,l=t.memoizedProps;try{for(var a=t.type,n=e.attributes;n.length;)e.removeAttributeNode(n[0]);It(e,a,l),e[kt]=t,e[ie]=l}catch(u){xt(t,t.return,u)}}var ul=!1,Gt=!1,us=!1,Vo=typeof WeakSet=="function"?WeakSet:Set,Zt=null;function Hy(t,e){if(t=t.containerInfo,Ns=mu,t=ar(t),Pu(t)){if("selectionStart"in t)var l={start:t.selectionStart,end:t.selectionEnd};else t:{l=(l=t.ownerDocument)&&l.defaultView||window;var a=l.getSelection&&l.getSelection();if(a&&a.rangeCount!==0){l=a.anchorNode;var n=a.anchorOffset,u=a.focusNode;a=a.focusOffset;try{l.nodeType,u.nodeType}catch{l=null;break t}var s=0,h=-1,p=-1,O=0,D=0,U=t,z=null;e:for(;;){for(var M;U!==l||n!==0&&U.nodeType!==3||(h=s+n),U!==u||a!==0&&U.nodeType!==3||(p=s+a),U.nodeType===3&&(s+=U.nodeValue.length),(M=U.firstChild)!==null;)z=U,U=M;for(;;){if(U===t)break e;if(z===l&&++O===n&&(h=s),z===u&&++D===a&&(p=s),(M=U.nextSibling)!==null)break;U=z,z=U.parentNode}U=M}l=h===-1||p===-1?null:{start:h,end:p}}else l=null}l=l||{start:0,end:0}}else l=null;for(zs={focusedElem:t,selectionRange:l},mu=!1,Zt=e;Zt!==null;)if(e=Zt,t=e.child,(e.subtreeFlags&1028)!==0&&t!==null)t.return=e,Zt=t;else for(;Zt!==null;){switch(e=Zt,u=e.alternate,t=e.flags,e.tag){case 0:if((t&4)!==0&&(t=e.updateQueue,t=t!==null?t.events:null,t!==null))for(l=0;l title"))),It(u,a,l),u[kt]=t,Kt(u),a=u;break t;case"link":var s=Id("link","href",n).get(a+(l.href||""));if(s){for(var h=0;hTt&&(s=Tt,Tt=$,$=s);var x=er(h,$),g=er(h,Tt);if(x&&g&&(M.rangeCount!==1||M.anchorNode!==x.node||M.anchorOffset!==x.offset||M.focusNode!==g.node||M.focusOffset!==g.offset)){var T=U.createRange();T.setStart(x.node,x.offset),M.removeAllRanges(),$>Tt?(M.addRange(T),M.extend(g.node,g.offset)):(T.setEnd(g.node,g.offset),M.addRange(T))}}}}for(U=[],M=h;M=M.parentNode;)M.nodeType===1&&U.push({element:M,left:M.scrollLeft,top:M.scrollTop});for(typeof h.focus=="function"&&h.focus(),h=0;hl?32:l,_.T=null,l=hs,hs=null;var u=Rl,s=ol;if(Xt=0,Ga=Rl=null,ol=0,(pt&6)!==0)throw Error(r(331));var h=pt;if(pt|=4,ad(u.current),td(u,u.current,s,l),pt=h,Hn(0,!1),ve&&typeof ve.onPostCommitFiberRoot=="function")try{ve.onPostCommitFiberRoot(Ia,u)}catch{}return!0}finally{Y.p=n,_.T=a,xd(t,e)}}function Ed(t,e,l){e=Ce(l,e),e=Vc(t.stateNode,e,2),t=Al(t,e,2),t!==null&&(tn(t,2),Je(t))}function xt(t,e,l){if(t.tag===3)Ed(t,t,l);else for(;e!==null;){if(e.tag===3){Ed(e,t,l);break}else if(e.tag===1){var a=e.stateNode;if(typeof e.type.getDerivedStateFromError=="function"||typeof a.componentDidCatch=="function"&&(_l===null||!_l.has(a))){t=Ce(l,t),l=To(2),a=Al(e,l,2),a!==null&&(Oo(l,a,e,t),tn(a,2),Je(a));break}}e=e.return}}function ps(t,e,l){var a=t.pingCache;if(a===null){a=t.pingCache=new Qy;var n=new Set;a.set(e,n)}else n=a.get(e),n===void 0&&(n=new Set,a.set(e,n));n.has(l)||(fs=!0,n.add(l),t=Xy.bind(null,t,e,l),e.then(t,t))}function Xy(t,e,l){var a=t.pingCache;a!==null&&a.delete(e),t.pingedLanes|=t.suspendedLanes&l,t.warmLanes&=~l,At===t&&(st&l)===l&&(Ut===4||Ut===3&&(st&62914560)===st&&300>k()-$i?(pt&2)===0&&La(t,0):rs|=l,Ya===st&&(Ya=0)),Je(t)}function Td(t,e){e===0&&(e=pf()),t=$l(t,e),t!==null&&(tn(t,e),Je(t))}function Ky(t){var e=t.memoizedState,l=0;e!==null&&(l=e.retryLane),Td(t,l)}function Zy(t,e){var l=0;switch(t.tag){case 31:case 13:var a=t.stateNode,n=t.memoizedState;n!==null&&(l=n.retryLane);break;case 19:a=t.stateNode;break;case 22:a=t.stateNode._retryCache;break;default:throw Error(r(314))}a!==null&&a.delete(e),Td(t,l)}function Vy(t,e){return Xe(t,e)}var au=null,Ka=null,gs=!1,nu=!1,bs=!1,Hl=0;function Je(t){t!==Ka&&t.next===null&&(Ka===null?au=Ka=t:Ka=Ka.next=t),nu=!0,gs||(gs=!0,ky())}function Hn(t,e){if(!bs&&nu){bs=!0;do for(var l=!1,a=au;a!==null;){if(t!==0){var n=a.pendingLanes;if(n===0)var u=0;else{var s=a.suspendedLanes,h=a.pingedLanes;u=(1<<31-pe(42|t)+1)-1,u&=n&~(s&~h),u=u&201326741?u&201326741|1:u?u|2:0}u!==0&&(l=!0,zd(a,u))}else u=st,u=si(a,a===At?u:0,a.cancelPendingCommit!==null||a.timeoutHandle!==-1),(u&3)===0||Pa(a,u)||(l=!0,zd(a,u));a=a.next}while(l);bs=!1}}function Jy(){Od()}function Od(){nu=gs=!1;var t=0;Hl!==0&&nv()&&(t=Hl);for(var e=k(),l=null,a=au;a!==null;){var n=a.next,u=Ad(a,e);u===0?(a.next=null,l===null?au=n:l.next=n,n===null&&(Ka=l)):(l=a,(t!==0||(u&3)!==0)&&(nu=!0)),a=n}Xt!==0&&Xt!==5||Hn(t),Hl!==0&&(Hl=0)}function Ad(t,e){for(var l=t.suspendedLanes,a=t.pingedLanes,n=t.expirationTimes,u=t.pendingLanes&-62914561;0h)break;var D=p.transferSize,U=p.initiatorType;D&&qd(U)&&(p=p.responseEnd,s+=D*(p"u"?null:document;function kd(t,e,l){var a=Za;if(a&&typeof e=="string"&&e){var n=ze(e);n='link[rel="'+t+'"][href="'+n+'"]',typeof l=="string"&&(n+='[crossorigin="'+l+'"]'),Jd.has(n)||(Jd.add(n),t={rel:t,crossOrigin:l,href:e},a.querySelector(n)===null&&(e=a.createElement("link"),It(e,"link",t),Kt(e),a.head.appendChild(e)))}}function hv(t){dl.D(t),kd("dns-prefetch",t,null)}function mv(t,e){dl.C(t,e),kd("preconnect",t,e)}function yv(t,e,l){dl.L(t,e,l);var a=Za;if(a&&t&&e){var n='link[rel="preload"][as="'+ze(e)+'"]';e==="image"&&l&&l.imageSrcSet?(n+='[imagesrcset="'+ze(l.imageSrcSet)+'"]',typeof l.imageSizes=="string"&&(n+='[imagesizes="'+ze(l.imageSizes)+'"]')):n+='[href="'+ze(t)+'"]';var u=n;switch(e){case"style":u=Va(t);break;case"script":u=Ja(t)}qe.has(u)||(t=j({rel:"preload",href:e==="image"&&l&&l.imageSrcSet?void 0:t,as:e},l),qe.set(u,t),a.querySelector(n)!==null||e==="style"&&a.querySelector(Bn(u))||e==="script"&&a.querySelector(Yn(u))||(e=a.createElement("link"),It(e,"link",t),Kt(e),a.head.appendChild(e)))}}function vv(t,e){dl.m(t,e);var l=Za;if(l&&t){var a=e&&typeof e.as=="string"?e.as:"script",n='link[rel="modulepreload"][as="'+ze(a)+'"][href="'+ze(t)+'"]',u=n;switch(a){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":u=Ja(t)}if(!qe.has(u)&&(t=j({rel:"modulepreload",href:t},e),qe.set(u,t),l.querySelector(n)===null)){switch(a){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(l.querySelector(Yn(u)))return}a=l.createElement("link"),It(a,"link",t),Kt(a),l.head.appendChild(a)}}}function pv(t,e,l){dl.S(t,e,l);var a=Za;if(a&&t){var n=ma(a).hoistableStyles,u=Va(t);e=e||"default";var s=n.get(u);if(!s){var h={loading:0,preload:null};if(s=a.querySelector(Bn(u)))h.loading=5;else{t=j({rel:"stylesheet",href:t,"data-precedence":e},l),(l=qe.get(u))&&Hs(t,l);var p=s=a.createElement("link");Kt(p),It(p,"link",t),p._p=new Promise(function(O,D){p.onload=O,p.onerror=D}),p.addEventListener("load",function(){h.loading|=1}),p.addEventListener("error",function(){h.loading|=2}),h.loading|=4,fu(s,e,a)}s={type:"stylesheet",instance:s,count:1,state:h},n.set(u,s)}}}function gv(t,e){dl.X(t,e);var l=Za;if(l&&t){var a=ma(l).hoistableScripts,n=Ja(t),u=a.get(n);u||(u=l.querySelector(Yn(n)),u||(t=j({src:t,async:!0},e),(e=qe.get(n))&&qs(t,e),u=l.createElement("script"),Kt(u),It(u,"link",t),l.head.appendChild(u)),u={type:"script",instance:u,count:1,state:null},a.set(n,u))}}function bv(t,e){dl.M(t,e);var l=Za;if(l&&t){var a=ma(l).hoistableScripts,n=Ja(t),u=a.get(n);u||(u=l.querySelector(Yn(n)),u||(t=j({src:t,async:!0,type:"module"},e),(e=qe.get(n))&&qs(t,e),u=l.createElement("script"),Kt(u),It(u,"link",t),l.head.appendChild(u)),u={type:"script",instance:u,count:1,state:null},a.set(n,u))}}function Fd(t,e,l,a){var n=(n=et.current)?su(n):null;if(!n)throw Error(r(446));switch(t){case"meta":case"title":return null;case"style":return typeof l.precedence=="string"&&typeof l.href=="string"?(e=Va(l.href),l=ma(n).hoistableStyles,a=l.get(e),a||(a={type:"style",instance:null,count:0,state:null},l.set(e,a)),a):{type:"void",instance:null,count:0,state:null};case"link":if(l.rel==="stylesheet"&&typeof l.href=="string"&&typeof l.precedence=="string"){t=Va(l.href);var u=ma(n).hoistableStyles,s=u.get(t);if(s||(n=n.ownerDocument||n,s={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},u.set(t,s),(u=n.querySelector(Bn(t)))&&!u._p&&(s.instance=u,s.state.loading=5),qe.has(t)||(l={rel:"preload",as:"style",href:l.href,crossOrigin:l.crossOrigin,integrity:l.integrity,media:l.media,hrefLang:l.hrefLang,referrerPolicy:l.referrerPolicy},qe.set(t,l),u||Sv(n,t,l,s.state))),e&&a===null)throw Error(r(528,""));return s}if(e&&a!==null)throw Error(r(529,""));return null;case"script":return e=l.async,l=l.src,typeof l=="string"&&e&&typeof e!="function"&&typeof e!="symbol"?(e=Ja(l),l=ma(n).hoistableScripts,a=l.get(e),a||(a={type:"script",instance:null,count:0,state:null},l.set(e,a)),a):{type:"void",instance:null,count:0,state:null};default:throw Error(r(444,t))}}function Va(t){return'href="'+ze(t)+'"'}function Bn(t){return'link[rel="stylesheet"]['+t+"]"}function $d(t){return j({},t,{"data-precedence":t.precedence,precedence:null})}function Sv(t,e,l,a){t.querySelector('link[rel="preload"][as="style"]['+e+"]")?a.loading=1:(e=t.createElement("link"),a.preload=e,e.addEventListener("load",function(){return a.loading|=1}),e.addEventListener("error",function(){return a.loading|=2}),It(e,"link",l),Kt(e),t.head.appendChild(e))}function Ja(t){return'[src="'+ze(t)+'"]'}function Yn(t){return"script[async]"+t}function Wd(t,e,l){if(e.count++,e.instance===null)switch(e.type){case"style":var a=t.querySelector('style[data-href~="'+ze(l.href)+'"]');if(a)return e.instance=a,Kt(a),a;var n=j({},l,{"data-href":l.href,"data-precedence":l.precedence,href:null,precedence:null});return a=(t.ownerDocument||t).createElement("style"),Kt(a),It(a,"style",n),fu(a,l.precedence,t),e.instance=a;case"stylesheet":n=Va(l.href);var u=t.querySelector(Bn(n));if(u)return e.state.loading|=4,e.instance=u,Kt(u),u;a=$d(l),(n=qe.get(n))&&Hs(a,n),u=(t.ownerDocument||t).createElement("link"),Kt(u);var s=u;return s._p=new Promise(function(h,p){s.onload=h,s.onerror=p}),It(u,"link",a),e.state.loading|=4,fu(u,l.precedence,t),e.instance=u;case"script":return u=Ja(l.src),(n=t.querySelector(Yn(u)))?(e.instance=n,Kt(n),n):(a=l,(n=qe.get(u))&&(a=j({},l),qs(a,n)),t=t.ownerDocument||t,n=t.createElement("script"),Kt(n),It(n,"link",a),t.head.appendChild(n),e.instance=n);case"void":return null;default:throw Error(r(443,e.type))}else e.type==="stylesheet"&&(e.state.loading&4)===0&&(a=e.instance,e.state.loading|=4,fu(a,l.precedence,t));return e.instance}function fu(t,e,l){for(var a=l.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),n=a.length?a[a.length-1]:null,u=n,s=0;s title"):null)}function xv(t,e,l){if(l===1||e.itemProp!=null)return!1;switch(t){case"meta":case"title":return!0;case"style":if(typeof e.precedence!="string"||typeof e.href!="string"||e.href==="")break;return!0;case"link":if(typeof e.rel!="string"||typeof e.href!="string"||e.href===""||e.onLoad||e.onError)break;return e.rel==="stylesheet"?(t=e.disabled,typeof e.precedence=="string"&&t==null):!0;case"script":if(e.async&&typeof e.async!="function"&&typeof e.async!="symbol"&&!e.onLoad&&!e.onError&&e.src&&typeof e.src=="string")return!0}return!1}function th(t){return!(t.type==="stylesheet"&&(t.state.loading&3)===0)}function jv(t,e,l,a){if(l.type==="stylesheet"&&(typeof a.media!="string"||matchMedia(a.media).matches!==!1)&&(l.state.loading&4)===0){if(l.instance===null){var n=Va(a.href),u=e.querySelector(Bn(n));if(u){e=u._p,e!==null&&typeof e=="object"&&typeof e.then=="function"&&(t.count++,t=ou.bind(t),e.then(t,t)),l.state.loading|=4,l.instance=u,Kt(u);return}u=e.ownerDocument||e,a=$d(a),(n=qe.get(n))&&Hs(a,n),u=u.createElement("link"),Kt(u);var s=u;s._p=new Promise(function(h,p){s.onload=h,s.onerror=p}),It(u,"link",a),l.instance=u}t.stylesheets===null&&(t.stylesheets=new Map),t.stylesheets.set(l,e),(e=l.state.preload)&&(l.state.loading&3)===0&&(t.count++,l=ou.bind(t),e.addEventListener("load",l),e.addEventListener("error",l))}}var ws=0;function Ev(t,e){return t.stylesheets&&t.count===0&&hu(t,t.stylesheets),0ws?50:800)+e);return t.unsuspend=l,function(){t.unsuspend=null,clearTimeout(a),clearTimeout(n)}}:null}function ou(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)hu(this,this.stylesheets);else if(this.unsuspend){var t=this.unsuspend;this.unsuspend=null,t()}}}var du=null;function hu(t,e){t.stylesheets=null,t.unsuspend!==null&&(t.count++,du=new Map,e.forEach(Tv,t),du=null,ou.call(t))}function Tv(t,e){if(!(e.state.loading&4)){var l=du.get(t);if(l)var a=l.get(null);else{l=new Map,du.set(t,l);for(var n=t.querySelectorAll("link[data-precedence],style[data-precedence]"),u=0;u"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(i)}catch(c){console.error(c)}}return i(),Vs.exports=Yv(),Vs.exports}var Lv=Gv(),ei=class{constructor(){this.listeners=new Set,this.subscribe=this.subscribe.bind(this)}subscribe(i){return this.listeners.add(i),this.onSubscribe(),()=>{this.listeners.delete(i),this.onUnsubscribe()}}hasListeners(){return this.listeners.size>0}onSubscribe(){}onUnsubscribe(){}},Xv=class extends ei{#t;#e;#l;constructor(){super(),this.#l=i=>{if(typeof window<"u"&&window.addEventListener){const c=()=>i();return window.addEventListener("visibilitychange",c,!1),()=>{window.removeEventListener("visibilitychange",c)}}}}onSubscribe(){this.#e||this.setEventListener(this.#l)}onUnsubscribe(){this.hasListeners()||(this.#e?.(),this.#e=void 0)}setEventListener(i){this.#l=i,this.#e?.(),this.#e=i(c=>{typeof c=="boolean"?this.setFocused(c):this.onFocus()})}setFocused(i){this.#t!==i&&(this.#t=i,this.onFocus())}onFocus(){const i=this.isFocused();this.listeners.forEach(c=>{c(i)})}isFocused(){return typeof this.#t=="boolean"?this.#t:globalThis.document?.visibilityState!=="hidden"}},sf=new Xv,Kv={setTimeout:(i,c)=>setTimeout(i,c),clearTimeout:i=>clearTimeout(i),setInterval:(i,c)=>setInterval(i,c),clearInterval:i=>clearInterval(i)},Zv=class{#t=Kv;#e=!1;setTimeoutProvider(i){this.#t=i}setTimeout(i,c){return this.#t.setTimeout(i,c)}clearTimeout(i){this.#t.clearTimeout(i)}setInterval(i,c){return this.#t.setInterval(i,c)}clearInterval(i){this.#t.clearInterval(i)}},fa=new Zv;function Vv(i){setTimeout(i,0)}var Jv=typeof window>"u"||"Deno"in globalThis;function de(){}function kv(i,c){return typeof i=="function"?i(c):i}function Is(i){return typeof i=="number"&&i>=0&&i!==1/0}function Zh(i,c){return Math.max(i+(c||0)-Date.now(),0)}function Xl(i,c){return typeof i=="function"?i(c):i}function Oe(i,c){return typeof i=="function"?i(c):i}function Th(i,c){const{type:f="all",exact:r,fetchStatus:d,predicate:y,queryKey:S,stale:A}=i;if(S){if(r){if(c.queryHash!==ff(S,c.options))return!1}else if(!Fn(c.queryKey,S))return!1}if(f!=="all"){const v=c.isActive();if(f==="active"&&!v||f==="inactive"&&v)return!1}return!(typeof A=="boolean"&&c.isStale()!==A||d&&d!==c.state.fetchStatus||y&&!y(c))}function Oh(i,c){const{exact:f,status:r,predicate:d,mutationKey:y}=i;if(y){if(!c.options.mutationKey)return!1;if(f){if(kn(c.options.mutationKey)!==kn(y))return!1}else if(!Fn(c.options.mutationKey,y))return!1}return!(r&&c.state.status!==r||d&&!d(c))}function ff(i,c){return(c?.queryKeyHashFn||kn)(i)}function kn(i){return JSON.stringify(i,(c,f)=>tf(f)?Object.keys(f).sort().reduce((r,d)=>(r[d]=f[d],r),{}):f)}function Fn(i,c){return i===c?!0:typeof i!=typeof c?!1:i&&c&&typeof i=="object"&&typeof c=="object"?Object.keys(c).every(f=>Fn(i[f],c[f])):!1}var Fv=Object.prototype.hasOwnProperty;function Vh(i,c,f=0){if(i===c)return i;if(f>500)return c;const r=Ah(i)&&Ah(c);if(!r&&!(tf(i)&&tf(c)))return c;const y=(r?i:Object.keys(i)).length,S=r?c:Object.keys(c),A=S.length,v=r?new Array(A):{};let m=0;for(let N=0;N{fa.setTimeout(c,i)})}function ef(i,c,f){return typeof f.structuralSharing=="function"?f.structuralSharing(i,c):f.structuralSharing!==!1?Vh(i,c):c}function Wv(i,c,f=0){const r=[...i,c];return f&&r.length>f?r.slice(1):r}function Iv(i,c,f=0){const r=[c,...i];return f&&r.length>f?r.slice(0,-1):r}var rf=Symbol();function Jh(i,c){return!i.queryFn&&c?.initialPromise?()=>c.initialPromise:!i.queryFn||i.queryFn===rf?()=>Promise.reject(new Error(`Missing queryFn: '${i.queryHash}'`)):i.queryFn}function kh(i,c){return typeof i=="function"?i(...c):!!i}function Pv(i,c,f){let r=!1,d;return Object.defineProperty(i,"signal",{enumerable:!0,get:()=>(d??=c(),r||(r=!0,d.aborted?f():d.addEventListener("abort",f,{once:!0})),d)}),i}var $n=(()=>{let i=()=>Jv;return{isServer(){return i()},setIsServer(c){i=c}}})();function lf(){let i,c;const f=new Promise((d,y)=>{i=d,c=y});f.status="pending",f.catch(()=>{});function r(d){Object.assign(f,d),delete f.resolve,delete f.reject}return f.resolve=d=>{r({status:"fulfilled",value:d}),i(d)},f.reject=d=>{r({status:"rejected",reason:d}),c(d)},f}var t0=Vv;function e0(){let i=[],c=0,f=A=>{A()},r=A=>{A()},d=t0;const y=A=>{c?i.push(A):d(()=>{f(A)})},S=()=>{const A=i;i=[],A.length&&d(()=>{r(()=>{A.forEach(v=>{f(v)})})})};return{batch:A=>{let v;c++;try{v=A()}finally{c--,c||S()}return v},batchCalls:A=>(...v)=>{y(()=>{A(...v)})},schedule:y,setNotifyFunction:A=>{f=A},setBatchNotifyFunction:A=>{r=A},setScheduler:A=>{d=A}}}var Pt=e0(),l0=class extends ei{#t=!0;#e;#l;constructor(){super(),this.#l=i=>{if(typeof window<"u"&&window.addEventListener){const c=()=>i(!0),f=()=>i(!1);return window.addEventListener("online",c,!1),window.addEventListener("offline",f,!1),()=>{window.removeEventListener("online",c),window.removeEventListener("offline",f)}}}}onSubscribe(){this.#e||this.setEventListener(this.#l)}onUnsubscribe(){this.hasListeners()||(this.#e?.(),this.#e=void 0)}setEventListener(i){this.#l=i,this.#e?.(),this.#e=i(this.setOnline.bind(this))}setOnline(i){this.#t!==i&&(this.#t=i,this.listeners.forEach(f=>{f(i)}))}isOnline(){return this.#t}},Au=new l0;function a0(i){return Math.min(1e3*2**i,3e4)}function Fh(i){return(i??"online")==="online"?Au.isOnline():!0}var af=class extends Error{constructor(i){super("CancelledError"),this.revert=i?.revert,this.silent=i?.silent}};function $h(i){let c=!1,f=0,r;const d=lf(),y=()=>d.status!=="pending",S=w=>{if(!y()){const B=new af(w);E(B),i.onCancel?.(B)}},A=()=>{c=!0},v=()=>{c=!1},m=()=>sf.isFocused()&&(i.networkMode==="always"||Au.isOnline())&&i.canRun(),N=()=>Fh(i.networkMode)&&i.canRun(),j=w=>{y()||(r?.(),d.resolve(w))},E=w=>{y()||(r?.(),d.reject(w))},q=()=>new Promise(w=>{r=B=>{(y()||m())&&w(B)},i.onPause?.()}).then(()=>{r=void 0,y()||i.onContinue?.()}),C=()=>{if(y())return;let w;const B=f===0?i.initialPromise:void 0;try{w=B??i.fn()}catch(L){w=Promise.reject(L)}Promise.resolve(w).then(j).catch(L=>{if(y())return;const dt=i.retry??($n.isServer()?0:3),nt=i.retryDelay??a0,Ot=typeof nt=="function"?nt(f,L):nt,Nt=dt===!0||typeof dt=="number"&&fm()?void 0:q()).then(()=>{c?E(L):C()})})};return{promise:d,status:()=>d.status,cancel:S,continue:()=>(r?.(),d),cancelRetry:A,continueRetry:v,canStart:N,start:()=>(N()?C():q().then(C),d)}}var Wh=class{#t;destroy(){this.clearGcTimeout()}scheduleGc(){this.clearGcTimeout(),Is(this.gcTime)&&(this.#t=fa.setTimeout(()=>{this.optionalRemove()},this.gcTime))}updateGcTime(i){this.gcTime=Math.max(this.gcTime||0,i??($n.isServer()?1/0:300*1e3))}clearGcTimeout(){this.#t!==void 0&&(fa.clearTimeout(this.#t),this.#t=void 0)}};function n0(i){return{onFetch:(c,f)=>{const r=c.options,d=c.fetchOptions?.meta?.fetchMore?.direction,y=c.state.data?.pages||[],S=c.state.data?.pageParams||[];let A={pages:[],pageParams:[]},v=0;const m=async()=>{let N=!1;const j=C=>{Pv(C,()=>c.signal,()=>N=!0)},E=Jh(c.options,c.fetchOptions),q=async(C,w,B)=>{if(N)return Promise.reject(c.signal.reason);if(w==null&&C.pages.length)return Promise.resolve(C);const dt=(()=>{const tt={client:c.client,queryKey:c.queryKey,pageParam:w,direction:B?"backward":"forward",meta:c.options.meta};return j(tt),tt})(),nt=await E(dt),{maxPages:Ot}=c.options,Nt=B?Iv:Wv;return{pages:Nt(C.pages,nt,Ot),pageParams:Nt(C.pageParams,w,Ot)}};if(d&&y.length){const C=d==="backward",w=C?i0:zh,B={pages:y,pageParams:S},L=w(r,B);A=await q(B,L,C)}else{const C=i??y.length;do{const w=v===0?S[0]??r.initialPageParam:zh(r,A);if(v>0&&w==null)break;A=await q(A,w),v++}while(vc.options.persister?.(m,{client:c.client,queryKey:c.queryKey,meta:c.options.meta,signal:c.signal},f):c.fetchFn=m}}}function zh(i,{pages:c,pageParams:f}){const r=c.length-1;return c.length>0?i.getNextPageParam(c[r],c,f[r],f):void 0}function i0(i,{pages:c,pageParams:f}){return c.length>0?i.getPreviousPageParam?.(c[0],c,f[0],f):void 0}var u0=class extends Wh{#t;#e;#l;#a;#i;#n;#c;#u;constructor(i){super(),this.#u=!1,this.#c=i.defaultOptions,this.setOptions(i.options),this.observers=[],this.#i=i.client,this.#a=this.#i.getQueryCache(),this.queryKey=i.queryKey,this.queryHash=i.queryHash,this.#e=Ch(this.options),this.state=i.state??this.#e,this.scheduleGc()}get meta(){return this.options.meta}get queryType(){return this.#t}get promise(){return this.#n?.promise}setOptions(i){if(this.options={...this.#c,...i},i?._type&&(this.#t=i._type),this.updateGcTime(this.options.gcTime),this.state&&this.state.data===void 0){const c=Ch(this.options);c.data!==void 0&&(this.setState(Mh(c.data,c.dataUpdatedAt)),this.#e=c)}}optionalRemove(){!this.observers.length&&this.state.fetchStatus==="idle"&&this.#a.remove(this)}setData(i,c){const f=ef(this.state.data,i,this.options);return this.#s({data:f,type:"success",dataUpdatedAt:c?.updatedAt,manual:c?.manual}),f}setState(i){this.#s({type:"setState",state:i})}cancel(i){const c=this.#n?.promise;return this.#n?.cancel(i),c?c.then(de).catch(de):Promise.resolve()}destroy(){super.destroy(),this.cancel({silent:!0})}get resetState(){return this.#e}reset(){this.destroy(),this.setState(this.resetState)}isActive(){return this.observers.some(i=>Oe(i.options.enabled,this)!==!1)}isDisabled(){return this.getObserversCount()>0?!this.isActive():this.options.queryFn===rf||!this.isFetched()}isFetched(){return this.state.dataUpdateCount+this.state.errorUpdateCount>0}isStatic(){return this.getObserversCount()>0?this.observers.some(i=>Xl(i.options.staleTime,this)==="static"):!1}isStale(){return this.getObserversCount()>0?this.observers.some(i=>i.getCurrentResult().isStale):this.state.data===void 0||this.state.isInvalidated}isStaleByTime(i=0){return this.state.data===void 0?!0:i==="static"?!1:this.state.isInvalidated?!0:!Zh(this.state.dataUpdatedAt,i)}onFocus(){this.observers.find(c=>c.shouldFetchOnWindowFocus())?.refetch({cancelRefetch:!1}),this.#n?.continue()}onOnline(){this.observers.find(c=>c.shouldFetchOnReconnect())?.refetch({cancelRefetch:!1}),this.#n?.continue()}addObserver(i){this.observers.includes(i)||(this.observers.push(i),this.clearGcTimeout(),this.#a.notify({type:"observerAdded",query:this,observer:i}))}removeObserver(i){this.observers.includes(i)&&(this.observers=this.observers.filter(c=>c!==i),this.observers.length||(this.#n&&(this.#u||this.#r()?this.#n.cancel({revert:!0}):this.#n.cancelRetry()),this.scheduleGc()),this.#a.notify({type:"observerRemoved",query:this,observer:i}))}getObserversCount(){return this.observers.length}#r(){return this.state.fetchStatus==="paused"&&this.state.status==="pending"}invalidate(){this.state.isInvalidated||this.#s({type:"invalidate"})}async fetch(i,c){if(this.state.fetchStatus!=="idle"&&this.#n?.status()!=="rejected"){if(this.state.data!==void 0&&c?.cancelRefetch)this.cancel({silent:!0});else if(this.#n)return this.#n.continueRetry(),this.#n.promise}if(i&&this.setOptions(i),!this.options.queryFn){const v=this.observers.find(m=>m.options.queryFn);v&&this.setOptions(v.options)}const f=new AbortController,r=v=>{Object.defineProperty(v,"signal",{enumerable:!0,get:()=>(this.#u=!0,f.signal)})},d=()=>{const v=Jh(this.options,c),N=(()=>{const j={client:this.#i,queryKey:this.queryKey,meta:this.meta};return r(j),j})();return this.#u=!1,this.options.persister?this.options.persister(v,N,this):v(N)},S=(()=>{const v={fetchOptions:c,options:this.options,queryKey:this.queryKey,client:this.#i,state:this.state,fetchFn:d};return r(v),v})();(this.#t==="infinite"?n0(this.options.pages):this.options.behavior)?.onFetch(S,this),this.#l=this.state,(this.state.fetchStatus==="idle"||this.state.fetchMeta!==S.fetchOptions?.meta)&&this.#s({type:"fetch",meta:S.fetchOptions?.meta}),this.#n=$h({initialPromise:c?.initialPromise,fn:S.fetchFn,onCancel:v=>{v instanceof af&&v.revert&&this.setState({...this.#l,fetchStatus:"idle"}),f.abort()},onFail:(v,m)=>{this.#s({type:"failed",failureCount:v,error:m})},onPause:()=>{this.#s({type:"pause"})},onContinue:()=>{this.#s({type:"continue"})},retry:S.options.retry,retryDelay:S.options.retryDelay,networkMode:S.options.networkMode,canRun:()=>!0});try{const v=await this.#n.start();if(v===void 0)throw new Error(`${this.queryHash} data is undefined`);return this.setData(v),this.#a.config.onSuccess?.(v,this),this.#a.config.onSettled?.(v,this.state.error,this),v}catch(v){if(v instanceof af){if(v.silent)return this.#n.promise;if(v.revert){if(this.state.data===void 0)throw v;return this.state.data}}throw this.#s({type:"error",error:v}),this.#a.config.onError?.(v,this),this.#a.config.onSettled?.(this.state.data,v,this),v}finally{this.scheduleGc()}}#s(i){const c=f=>{switch(i.type){case"failed":return{...f,fetchFailureCount:i.failureCount,fetchFailureReason:i.error};case"pause":return{...f,fetchStatus:"paused"};case"continue":return{...f,fetchStatus:"fetching"};case"fetch":return{...f,...Ih(f.data,this.options),fetchMeta:i.meta??null};case"success":const r={...f,...Mh(i.data,i.dataUpdatedAt),dataUpdateCount:f.dataUpdateCount+1,...!i.manual&&{fetchStatus:"idle",fetchFailureCount:0,fetchFailureReason:null}};return this.#l=i.manual?r:void 0,r;case"error":const d=i.error;return{...f,error:d,errorUpdateCount:f.errorUpdateCount+1,errorUpdatedAt:Date.now(),fetchFailureCount:f.fetchFailureCount+1,fetchFailureReason:d,fetchStatus:"idle",status:"error",isInvalidated:!0};case"invalidate":return{...f,isInvalidated:!0};case"setState":return{...f,...i.state}}};this.state=c(this.state),Pt.batch(()=>{this.observers.forEach(f=>{f.onQueryUpdate()}),this.#a.notify({query:this,type:"updated",action:i})})}};function Ih(i,c){return{fetchFailureCount:0,fetchFailureReason:null,fetchStatus:Fh(c.networkMode)?"fetching":"paused",...i===void 0&&{error:null,status:"pending"}}}function Mh(i,c){return{data:i,dataUpdatedAt:c??Date.now(),error:null,isInvalidated:!1,status:"success"}}function Ch(i){const c=typeof i.initialData=="function"?i.initialData():i.initialData,f=c!==void 0,r=f?typeof i.initialDataUpdatedAt=="function"?i.initialDataUpdatedAt():i.initialDataUpdatedAt:0;return{data:c,dataUpdateCount:0,dataUpdatedAt:f?r??Date.now():0,error:null,errorUpdateCount:0,errorUpdatedAt:0,fetchFailureCount:0,fetchFailureReason:null,fetchMeta:null,isInvalidated:!1,status:f?"success":"pending",fetchStatus:"idle"}}var c0=class extends ei{constructor(i,c){super(),this.options=c,this.#t=i,this.#u=null,this.#c=lf(),this.bindMethods(),this.setOptions(c)}#t;#e=void 0;#l=void 0;#a=void 0;#i;#n;#c;#u;#r;#s;#m;#o;#d;#f;#y=new Set;bindMethods(){this.refetch=this.refetch.bind(this)}onSubscribe(){this.listeners.size===1&&(this.#e.addObserver(this),Dh(this.#e,this.options)?this.#h():this.updateResult(),this.#b())}onUnsubscribe(){this.hasListeners()||this.destroy()}shouldFetchOnReconnect(){return nf(this.#e,this.options,this.options.refetchOnReconnect)}shouldFetchOnWindowFocus(){return nf(this.#e,this.options,this.options.refetchOnWindowFocus)}destroy(){this.listeners=new Set,this.#S(),this.#x(),this.#e.removeObserver(this)}setOptions(i){const c=this.options,f=this.#e;if(this.options=this.#t.defaultQueryOptions(i),this.options.enabled!==void 0&&typeof this.options.enabled!="boolean"&&typeof this.options.enabled!="function"&&typeof Oe(this.options.enabled,this.#e)!="boolean")throw new Error("Expected enabled to be a boolean or a callback that returns a boolean");this.#j(),this.#e.setOptions(this.options),c._defaulted&&!Ps(this.options,c)&&this.#t.getQueryCache().notify({type:"observerOptionsUpdated",query:this.#e,observer:this});const r=this.hasListeners();r&&_h(this.#e,f,this.options,c)&&this.#h(),this.updateResult(),r&&(this.#e!==f||Oe(this.options.enabled,this.#e)!==Oe(c.enabled,this.#e)||Xl(this.options.staleTime,this.#e)!==Xl(c.staleTime,this.#e))&&this.#v();const d=this.#p();r&&(this.#e!==f||Oe(this.options.enabled,this.#e)!==Oe(c.enabled,this.#e)||d!==this.#f)&&this.#g(d)}getOptimisticResult(i){const c=this.#t.getQueryCache().build(this.#t,i),f=this.createResult(c,i);return f0(this,f)&&(this.#a=f,this.#n=this.options,this.#i=this.#e.state),f}getCurrentResult(){return this.#a}trackResult(i,c){return new Proxy(i,{get:(f,r)=>(this.trackProp(r),c?.(r),r==="promise"&&(this.trackProp("data"),!this.options.experimental_prefetchInRender&&this.#c.status==="pending"&&this.#c.reject(new Error("experimental_prefetchInRender feature flag is not enabled"))),Reflect.get(f,r))})}trackProp(i){this.#y.add(i)}getCurrentQuery(){return this.#e}refetch({...i}={}){return this.fetch({...i})}fetchOptimistic(i){const c=this.#t.defaultQueryOptions(i),f=this.#t.getQueryCache().build(this.#t,c);return f.fetch().then(()=>this.createResult(f,c))}fetch(i){return this.#h({...i,cancelRefetch:i.cancelRefetch??!0}).then(()=>(this.updateResult(),this.#a))}#h(i){this.#j();let c=this.#e.fetch(this.options,i);return i?.throwOnError||(c=c.catch(de)),c}#v(){this.#S();const i=Xl(this.options.staleTime,this.#e);if($n.isServer()||this.#a.isStale||!Is(i))return;const f=Zh(this.#a.dataUpdatedAt,i)+1;this.#o=fa.setTimeout(()=>{this.#a.isStale||this.updateResult()},f)}#p(){return(typeof this.options.refetchInterval=="function"?this.options.refetchInterval(this.#e):this.options.refetchInterval)??!1}#g(i){this.#x(),this.#f=i,!($n.isServer()||Oe(this.options.enabled,this.#e)===!1||!Is(this.#f)||this.#f===0)&&(this.#d=fa.setInterval(()=>{(this.options.refetchIntervalInBackground||sf.isFocused())&&this.#h()},this.#f))}#b(){this.#v(),this.#g(this.#p())}#S(){this.#o!==void 0&&(fa.clearTimeout(this.#o),this.#o=void 0)}#x(){this.#d!==void 0&&(fa.clearInterval(this.#d),this.#d=void 0)}createResult(i,c){const f=this.#e,r=this.options,d=this.#a,y=this.#i,S=this.#n,v=i!==f?i.state:this.#l,{state:m}=i;let N={...m},j=!1,E;if(c._optimisticResults){const ht=this.hasListeners(),Lt=!ht&&Dh(i,c),ne=ht&&_h(i,f,c,r);(Lt||ne)&&(N={...N,...Ih(m.data,i.options)}),c._optimisticResults==="isRestoring"&&(N.fetchStatus="idle")}let{error:q,errorUpdatedAt:C,status:w}=N;E=N.data;let B=!1;if(c.placeholderData!==void 0&&E===void 0&&w==="pending"){let ht;d?.isPlaceholderData&&c.placeholderData===S?.placeholderData?(ht=d.data,B=!0):ht=typeof c.placeholderData=="function"?c.placeholderData(this.#m?.state.data,this.#m):c.placeholderData,ht!==void 0&&(w="success",E=ef(d?.data,ht,c),j=!0)}if(c.select&&E!==void 0&&!B)if(d&&E===y?.data&&c.select===this.#r)E=this.#s;else try{this.#r=c.select,E=c.select(E),E=ef(d?.data,E,c),this.#s=E,this.#u=null}catch(ht){this.#u=ht}this.#u&&(q=this.#u,E=this.#s,C=Date.now(),w="error");const L=N.fetchStatus==="fetching",dt=w==="pending",nt=w==="error",Ot=dt&&L,Nt=E!==void 0,F={status:w,fetchStatus:N.fetchStatus,isPending:dt,isSuccess:w==="success",isError:nt,isInitialLoading:Ot,isLoading:Ot,data:E,dataUpdatedAt:N.dataUpdatedAt,error:q,errorUpdatedAt:C,failureCount:N.fetchFailureCount,failureReason:N.fetchFailureReason,errorUpdateCount:N.errorUpdateCount,isFetched:i.isFetched(),isFetchedAfterMount:N.dataUpdateCount>v.dataUpdateCount||N.errorUpdateCount>v.errorUpdateCount,isFetching:L,isRefetching:L&&!dt,isLoadingError:nt&&!Nt,isPaused:N.fetchStatus==="paused",isPlaceholderData:j,isRefetchError:nt&&Nt,isStale:of(i,c),refetch:this.refetch,promise:this.#c,isEnabled:Oe(c.enabled,i)!==!1};if(this.options.experimental_prefetchInRender){const ht=F.data!==void 0,Lt=F.status==="error"&&!ht,ne=zt=>{Lt?zt.reject(F.error):ht&&zt.resolve(F.data)},Vt=()=>{const zt=this.#c=F.promise=lf();ne(zt)},Ht=this.#c;switch(Ht.status){case"pending":i.queryHash===f.queryHash&&ne(Ht);break;case"fulfilled":(Lt||F.data!==Ht.value)&&Vt();break;case"rejected":(!Lt||F.error!==Ht.reason)&&Vt();break}}return F}updateResult(){const i=this.#a,c=this.createResult(this.#e,this.options);if(this.#i=this.#e.state,this.#n=this.options,this.#i.data!==void 0&&(this.#m=this.#e),Ps(c,i))return;this.#a=c;const f=()=>{if(!i)return!0;const{notifyOnChangeProps:r}=this.options,d=typeof r=="function"?r():r;if(d==="all"||!d&&!this.#y.size)return!0;const y=new Set(d??this.#y);return this.options.throwOnError&&y.add("error"),Object.keys(this.#a).some(S=>{const A=S;return this.#a[A]!==i[A]&&y.has(A)})};this.#E({listeners:f()})}#j(){const i=this.#t.getQueryCache().build(this.#t,this.options);if(i===this.#e)return;const c=this.#e;this.#e=i,this.#l=i.state,this.hasListeners()&&(c?.removeObserver(this),i.addObserver(this))}onQueryUpdate(){this.updateResult(),this.hasListeners()&&this.#b()}#E(i){Pt.batch(()=>{i.listeners&&this.listeners.forEach(c=>{c(this.#a)}),this.#t.getQueryCache().notify({query:this.#e,type:"observerResultsUpdated"})})}};function s0(i,c){return Oe(c.enabled,i)!==!1&&i.state.data===void 0&&!(i.state.status==="error"&&Oe(c.retryOnMount,i)===!1)}function Dh(i,c){return s0(i,c)||i.state.data!==void 0&&nf(i,c,c.refetchOnMount)}function nf(i,c,f){if(Oe(c.enabled,i)!==!1&&Xl(c.staleTime,i)!=="static"){const r=typeof f=="function"?f(i):f;return r==="always"||r!==!1&&of(i,c)}return!1}function _h(i,c,f,r){return(i!==c||Oe(r.enabled,i)===!1)&&(!f.suspense||i.state.status!=="error")&&of(i,f)}function of(i,c){return Oe(c.enabled,i)!==!1&&i.isStaleByTime(Xl(c.staleTime,i))}function f0(i,c){return!Ps(i.getCurrentResult(),c)}var r0=class extends Wh{#t;#e;#l;#a;constructor(i){super(),this.#t=i.client,this.mutationId=i.mutationId,this.#l=i.mutationCache,this.#e=[],this.state=i.state||o0(),this.setOptions(i.options),this.scheduleGc()}setOptions(i){this.options=i,this.updateGcTime(this.options.gcTime)}get meta(){return this.options.meta}addObserver(i){this.#e.includes(i)||(this.#e.push(i),this.clearGcTimeout(),this.#l.notify({type:"observerAdded",mutation:this,observer:i}))}removeObserver(i){this.#e=this.#e.filter(c=>c!==i),this.scheduleGc(),this.#l.notify({type:"observerRemoved",mutation:this,observer:i})}optionalRemove(){this.#e.length||(this.state.status==="pending"?this.scheduleGc():this.#l.remove(this))}continue(){return this.#a?.continue()??this.execute(this.state.variables)}async execute(i){const c=()=>{this.#i({type:"continue"})},f={client:this.#t,meta:this.options.meta,mutationKey:this.options.mutationKey};this.#a=$h({fn:()=>this.options.mutationFn?this.options.mutationFn(i,f):Promise.reject(new Error("No mutationFn found")),onFail:(y,S)=>{this.#i({type:"failed",failureCount:y,error:S})},onPause:()=>{this.#i({type:"pause"})},onContinue:c,retry:this.options.retry??0,retryDelay:this.options.retryDelay,networkMode:this.options.networkMode,canRun:()=>this.#l.canRun(this)});const r=this.state.status==="pending",d=!this.#a.canStart();try{if(r)c();else{this.#i({type:"pending",variables:i,isPaused:d}),this.#l.config.onMutate&&await this.#l.config.onMutate(i,this,f);const S=await this.options.onMutate?.(i,f);S!==this.state.context&&this.#i({type:"pending",context:S,variables:i,isPaused:d})}const y=await this.#a.start();return await this.#l.config.onSuccess?.(y,i,this.state.context,this,f),await this.options.onSuccess?.(y,i,this.state.context,f),await this.#l.config.onSettled?.(y,null,this.state.variables,this.state.context,this,f),await this.options.onSettled?.(y,null,i,this.state.context,f),this.#i({type:"success",data:y}),y}catch(y){try{await this.#l.config.onError?.(y,i,this.state.context,this,f)}catch(S){Promise.reject(S)}try{await this.options.onError?.(y,i,this.state.context,f)}catch(S){Promise.reject(S)}try{await this.#l.config.onSettled?.(void 0,y,this.state.variables,this.state.context,this,f)}catch(S){Promise.reject(S)}try{await this.options.onSettled?.(void 0,y,i,this.state.context,f)}catch(S){Promise.reject(S)}throw this.#i({type:"error",error:y}),y}finally{this.#l.runNext(this)}}#i(i){const c=f=>{switch(i.type){case"failed":return{...f,failureCount:i.failureCount,failureReason:i.error};case"pause":return{...f,isPaused:!0};case"continue":return{...f,isPaused:!1};case"pending":return{...f,context:i.context,data:void 0,failureCount:0,failureReason:null,error:null,isPaused:i.isPaused,status:"pending",variables:i.variables,submittedAt:Date.now()};case"success":return{...f,data:i.data,failureCount:0,failureReason:null,error:null,status:"success",isPaused:!1};case"error":return{...f,data:void 0,error:i.error,failureCount:f.failureCount+1,failureReason:i.error,isPaused:!1,status:"error"}}};this.state=c(this.state),Pt.batch(()=>{this.#e.forEach(f=>{f.onMutationUpdate(i)}),this.#l.notify({mutation:this,type:"updated",action:i})})}};function o0(){return{context:void 0,data:void 0,error:null,failureCount:0,failureReason:null,isPaused:!1,status:"idle",variables:void 0,submittedAt:0}}var d0=class extends ei{constructor(i={}){super(),this.config=i,this.#t=new Set,this.#e=new Map,this.#l=0}#t;#e;#l;build(i,c,f){const r=new r0({client:i,mutationCache:this,mutationId:++this.#l,options:i.defaultMutationOptions(c),state:f});return this.add(r),r}add(i){this.#t.add(i);const c=xu(i);if(typeof c=="string"){const f=this.#e.get(c);f?f.push(i):this.#e.set(c,[i])}this.notify({type:"added",mutation:i})}remove(i){if(this.#t.delete(i)){const c=xu(i);if(typeof c=="string"){const f=this.#e.get(c);if(f)if(f.length>1){const r=f.indexOf(i);r!==-1&&f.splice(r,1)}else f[0]===i&&this.#e.delete(c)}}this.notify({type:"removed",mutation:i})}canRun(i){const c=xu(i);if(typeof c=="string"){const r=this.#e.get(c)?.find(d=>d.state.status==="pending");return!r||r===i}else return!0}runNext(i){const c=xu(i);return typeof c=="string"?this.#e.get(c)?.find(r=>r!==i&&r.state.isPaused)?.continue()??Promise.resolve():Promise.resolve()}clear(){Pt.batch(()=>{this.#t.forEach(i=>{this.notify({type:"removed",mutation:i})}),this.#t.clear(),this.#e.clear()})}getAll(){return Array.from(this.#t)}find(i){const c={exact:!0,...i};return this.getAll().find(f=>Oh(c,f))}findAll(i={}){return this.getAll().filter(c=>Oh(i,c))}notify(i){Pt.batch(()=>{this.listeners.forEach(c=>{c(i)})})}resumePausedMutations(){const i=this.getAll().filter(c=>c.state.isPaused);return Pt.batch(()=>Promise.all(i.map(c=>c.continue().catch(de))))}};function xu(i){return i.options.scope?.id}var h0=class extends ei{constructor(i={}){super(),this.config=i,this.#t=new Map}#t;build(i,c,f){const r=c.queryKey,d=c.queryHash??ff(r,c);let y=this.get(d);return y||(y=new u0({client:i,queryKey:r,queryHash:d,options:i.defaultQueryOptions(c),state:f,defaultOptions:i.getQueryDefaults(r)}),this.add(y)),y}add(i){this.#t.has(i.queryHash)||(this.#t.set(i.queryHash,i),this.notify({type:"added",query:i}))}remove(i){const c=this.#t.get(i.queryHash);c&&(i.destroy(),c===i&&this.#t.delete(i.queryHash),this.notify({type:"removed",query:i}))}clear(){Pt.batch(()=>{this.getAll().forEach(i=>{this.remove(i)})})}get(i){return this.#t.get(i)}getAll(){return[...this.#t.values()]}find(i){const c={exact:!0,...i};return this.getAll().find(f=>Th(c,f))}findAll(i={}){const c=this.getAll();return Object.keys(i).length>0?c.filter(f=>Th(i,f)):c}notify(i){Pt.batch(()=>{this.listeners.forEach(c=>{c(i)})})}onFocus(){Pt.batch(()=>{this.getAll().forEach(i=>{i.onFocus()})})}onOnline(){Pt.batch(()=>{this.getAll().forEach(i=>{i.onOnline()})})}},m0=class{#t;#e;#l;#a;#i;#n;#c;#u;constructor(i={}){this.#t=i.queryCache||new h0,this.#e=i.mutationCache||new d0,this.#l=i.defaultOptions||{},this.#a=new Map,this.#i=new Map,this.#n=0}mount(){this.#n++,this.#n===1&&(this.#c=sf.subscribe(async i=>{i&&(await this.resumePausedMutations(),this.#t.onFocus())}),this.#u=Au.subscribe(async i=>{i&&(await this.resumePausedMutations(),this.#t.onOnline())}))}unmount(){this.#n--,this.#n===0&&(this.#c?.(),this.#c=void 0,this.#u?.(),this.#u=void 0)}isFetching(i){return this.#t.findAll({...i,fetchStatus:"fetching"}).length}isMutating(i){return this.#e.findAll({...i,status:"pending"}).length}getQueryData(i){const c=this.defaultQueryOptions({queryKey:i});return this.#t.get(c.queryHash)?.state.data}ensureQueryData(i){const c=this.defaultQueryOptions(i),f=this.#t.build(this,c),r=f.state.data;return r===void 0?this.fetchQuery(i):(i.revalidateIfStale&&f.isStaleByTime(Xl(c.staleTime,f))&&this.prefetchQuery(c),Promise.resolve(r))}getQueriesData(i){return this.#t.findAll(i).map(({queryKey:c,state:f})=>{const r=f.data;return[c,r]})}setQueryData(i,c,f){const r=this.defaultQueryOptions({queryKey:i}),y=this.#t.get(r.queryHash)?.state.data,S=kv(c,y);if(S!==void 0)return this.#t.build(this,r).setData(S,{...f,manual:!0})}setQueriesData(i,c,f){return Pt.batch(()=>this.#t.findAll(i).map(({queryKey:r})=>[r,this.setQueryData(r,c,f)]))}getQueryState(i){const c=this.defaultQueryOptions({queryKey:i});return this.#t.get(c.queryHash)?.state}removeQueries(i){const c=this.#t;Pt.batch(()=>{c.findAll(i).forEach(f=>{c.remove(f)})})}resetQueries(i,c){const f=this.#t;return Pt.batch(()=>(f.findAll(i).forEach(r=>{r.reset()}),this.refetchQueries({type:"active",...i},c)))}cancelQueries(i,c={}){const f={revert:!0,...c},r=Pt.batch(()=>this.#t.findAll(i).map(d=>d.cancel(f)));return Promise.all(r).then(de).catch(de)}invalidateQueries(i,c={}){return Pt.batch(()=>(this.#t.findAll(i).forEach(f=>{f.invalidate()}),i?.refetchType==="none"?Promise.resolve():this.refetchQueries({...i,type:i?.refetchType??i?.type??"active"},c)))}refetchQueries(i,c={}){const f={...c,cancelRefetch:c.cancelRefetch??!0},r=Pt.batch(()=>this.#t.findAll(i).filter(d=>!d.isDisabled()&&!d.isStatic()).map(d=>{let y=d.fetch(void 0,f);return f.throwOnError||(y=y.catch(de)),d.state.fetchStatus==="paused"?Promise.resolve():y}));return Promise.all(r).then(de)}fetchQuery(i){const c=this.defaultQueryOptions(i);c.retry===void 0&&(c.retry=!1);const f=this.#t.build(this,c);return f.isStaleByTime(Xl(c.staleTime,f))?f.fetch(c):Promise.resolve(f.state.data)}prefetchQuery(i){return this.fetchQuery(i).then(de).catch(de)}fetchInfiniteQuery(i){return i._type="infinite",this.fetchQuery(i)}prefetchInfiniteQuery(i){return this.fetchInfiniteQuery(i).then(de).catch(de)}ensureInfiniteQueryData(i){return i._type="infinite",this.ensureQueryData(i)}resumePausedMutations(){return Au.isOnline()?this.#e.resumePausedMutations():Promise.resolve()}getQueryCache(){return this.#t}getMutationCache(){return this.#e}getDefaultOptions(){return this.#l}setDefaultOptions(i){this.#l=i}setQueryDefaults(i,c){this.#a.set(kn(i),{queryKey:i,defaultOptions:c})}getQueryDefaults(i){const c=[...this.#a.values()],f={};return c.forEach(r=>{Fn(i,r.queryKey)&&Object.assign(f,r.defaultOptions)}),f}setMutationDefaults(i,c){this.#i.set(kn(i),{mutationKey:i,defaultOptions:c})}getMutationDefaults(i){const c=[...this.#i.values()],f={};return c.forEach(r=>{Fn(i,r.mutationKey)&&Object.assign(f,r.defaultOptions)}),f}defaultQueryOptions(i){if(i._defaulted)return i;const c={...this.#l.queries,...this.getQueryDefaults(i.queryKey),...i,_defaulted:!0};return c.queryHash||(c.queryHash=ff(c.queryKey,c)),c.refetchOnReconnect===void 0&&(c.refetchOnReconnect=c.networkMode!=="always"),c.throwOnError===void 0&&(c.throwOnError=!!c.suspense),!c.networkMode&&c.persister&&(c.networkMode="offlineFirst"),c.queryFn===rf&&(c.enabled=!1),c}defaultMutationOptions(i){return i?._defaulted?i:{...this.#l.mutations,...i?.mutationKey&&this.getMutationDefaults(i.mutationKey),...i,_defaulted:!0}}clear(){this.#t.clear(),this.#e.clear()}},Ph=Q.createContext(void 0),li=i=>{const c=Q.useContext(Ph);if(!c)throw new Error("No QueryClient set, use QueryClientProvider to set one");return c},y0=({client:i,children:c})=>(Q.useEffect(()=>(i.mount(),()=>{i.unmount()}),[i]),o.jsx(Ph.Provider,{value:i,children:c})),tm=Q.createContext(!1),v0=()=>Q.useContext(tm);tm.Provider;function p0(){let i=!1;return{clearReset:()=>{i=!1},reset:()=>{i=!0},isReset:()=>i}}var g0=Q.createContext(p0()),b0=()=>Q.useContext(g0),S0=(i,c,f)=>{const r=f?.state.error&&typeof i.throwOnError=="function"?kh(i.throwOnError,[f.state.error,f]):i.throwOnError;(i.suspense||i.experimental_prefetchInRender||r)&&(c.isReset()||(i.retryOnMount=!1))},x0=i=>{Q.useEffect(()=>{i.clearReset()},[i])},j0=({result:i,errorResetBoundary:c,throwOnError:f,query:r,suspense:d})=>i.isError&&!c.isReset()&&!i.isFetching&&r&&(d&&i.data===void 0||kh(f,[i.error,r])),E0=i=>{if(i.suspense){const f=d=>d==="static"?d:Math.max(d??1e3,1e3),r=i.staleTime;i.staleTime=typeof r=="function"?(...d)=>f(r(...d)):f(r),typeof i.gcTime=="number"&&(i.gcTime=Math.max(i.gcTime,1e3))}},T0=(i,c)=>i.isLoading&&i.isFetching&&!c,O0=(i,c)=>i?.suspense&&c.isPending,Rh=(i,c,f)=>c.fetchOptimistic(i).catch(()=>{f.clearReset()});function A0(i,c,f){const r=v0(),d=b0(),y=li(),S=y.defaultQueryOptions(i);y.getDefaultOptions().queries?._experimental_beforeQuery?.(S);const A=y.getQueryCache().get(S.queryHash),v=i.subscribed!==!1;S._optimisticResults=r?"isRestoring":v?"optimistic":void 0,E0(S),S0(S,d,A),x0(d);const m=!y.getQueryCache().get(S.queryHash),[N]=Q.useState(()=>new c(y,S)),j=N.getOptimisticResult(S),E=!r&&v;if(Q.useSyncExternalStore(Q.useCallback(q=>{const C=E?N.subscribe(Pt.batchCalls(q)):de;return N.updateResult(),C},[N,E]),()=>N.getCurrentResult(),()=>N.getCurrentResult()),Q.useEffect(()=>{N.setOptions(S)},[S,N]),O0(S,j))throw Rh(S,N,d);if(j0({result:j,errorResetBoundary:d,throwOnError:S.throwOnError,query:A,suspense:S.suspense}))throw j.error;return y.getDefaultOptions().queries?._experimental_afterQuery?.(S,j),S.experimental_prefetchInRender&&!$n.isServer()&&T0(j,r)&&(m?Rh(S,N,d):A?.promise)?.catch(de).finally(()=>{N.updateResult()}),S.notifyOnChangeProps?j:N.trackResult(j)}function he(i,c){return A0(i,c0)}function em(){throw location.href="/auth/login?next="+encodeURIComponent(location.pathname+location.search),new Error("signing in…")}async function Ae(i){const c=await fetch(i);if(c.status===401&&em(),!c.ok)throw new Error(await c.text());return c.json()}async function Ll(i,c,f){const r={method:i};f!==void 0&&(r.headers={"Content-Type":"application/json"},r.body=JSON.stringify(f));const d=await fetch(c,r);if(!d.ok)throw new Error(await d.text());return d.status===204?{}:d.json()}async function $a(i,c){const f=await fetch(i,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(c||{})});if(f.status===401&&em(),!f.ok)throw new Error(await f.text());return f.json()}function N0(){return he({queryKey:["config"],queryFn:async()=>{const i=await Ae("/api/config");return i.auth.enabled&&!i.me&&(location.href="/auth/login?next="+encodeURIComponent(location.pathname+location.search),await new Promise(()=>{})),i},staleTime:1/0})}function z0(){document.body.classList.toggle("sb-open")}function ra(){document.body.classList.remove("sb-open")}function te({name:i}){return o.jsx("svg",{className:"ico","aria-hidden":"true",children:o.jsx("use",{href:`#i-${i}`})})}function Wn(i){return o.jsxs(o.Fragment,{children:[o.jsx("div",{id:"sb-backdrop",onClick:ra}),o.jsxs("aside",{id:"sidebar",children:[i.vault,i.projectsNav,i.tree??o.jsx("nav",{id:"tree","aria-label":"Files"}),i.orgBar]}),o.jsxs("main",{id:"main",children:[i.topbar,o.jsx("article",{id:"content",className:i.contentClass??"markdown",ref:i.contentRef,onScroll:i.onContentScroll,children:i.children})]})]})}function Nu(i){const{name:c,onHome:f,showSignout:r,admin:d,gear:y}=i;return o.jsxs("header",{id:"vault",children:[o.jsx("span",{id:"vault-badge","aria-hidden":"true",children:"🐻"}),o.jsx("span",{id:"vault-name",className:f?"vault-link":void 0,onClick:f,role:f?"button":void 0,tabIndex:f?0:void 0,onKeyDown:S=>{f&&(S.key==="Enter"||S.key===" ")&&(S.preventDefault(),f())},children:c}),o.jsxs("div",{className:"vault-actions",children:[d&&o.jsxs("button",{id:"adminbar",className:"adminbar",title:"Hub administration — signup policy"+(d.pending?" and pending approvals":""),onClick:d.onClick,children:[o.jsx(te,{name:"shield"}),o.jsxs("span",{children:["Admin",d.pending?" · "+d.pending:""]})]}),y&&o.jsx("button",{id:"settings-btn",className:"icon-btn2",title:"Manage organization","aria-label":"Manage organization",onClick:y.onClick,children:o.jsx(te,{name:"users"})}),r&&o.jsx("a",{id:"signout",href:"/auth/logout",title:"Sign out","aria-label":"Sign out",children:o.jsx(te,{name:"power"})})]})]})}function In(i){return o.jsxs("header",{id:"topbar",children:[o.jsx("button",{id:"menu-btn",className:"icon-btn",title:"Menu","aria-label":"Menu",onClick:z0,children:o.jsx(te,{name:"menu"})}),o.jsx("span",{id:"crumb",children:i.crumb}),o.jsx("span",{id:"meta",children:i.meta}),i.actions]})}let df={msg:"",err:!1,shown:!1},Eu=[],Uh;function Hh(i){df=i,Eu.forEach(c=>c())}function ot(i,c=!1){Hh({msg:i,err:c,shown:!0}),clearTimeout(Uh),Uh=setTimeout(()=>Hh({...df,shown:!1}),3200)}function M0(){const i=Q.useSyncExternalStore(c=>(Eu.push(c),()=>{Eu=Eu.filter(f=>f!==c)}),()=>df);return o.jsx("div",{id:"toast",className:i.shown?"show"+(i.err?" err":""):"",children:i.msg})}let lm=null,Tu=[];function hf(i){lm=i,Tu.forEach(c=>c())}function am(i,c,f="",r="OK"){return new Promise(d=>hf({kind:"prompt",title:i,label:c,value:f,okLabel:r,resolve:d}))}function ju(i,c,f="Confirm",r=!1){return new Promise(d=>hf({kind:"confirm",title:i,message:c,confirmLabel:f,danger:r,resolve:d}))}function C0(){const i=Q.useSyncExternalStore(c=>(Tu.push(c),()=>{Tu=Tu.filter(f=>f!==c)}),()=>lm);return i?i.kind==="prompt"?o.jsx(D0,{m:i}):o.jsx(_0,{m:i}):null}function nm(){hf(null)}function D0({m:i}){const c=Q.useRef(null),f=d=>{nm(),i.resolve(d)},r=()=>f(c.current.value.trim()||null);return Q.useEffect(()=>{c.current.focus(),c.current.select();const d=y=>{y.key==="Escape"&&f(null),y.key==="Enter"&&r()};return document.addEventListener("keydown",d),()=>document.removeEventListener("keydown",d)},[]),o.jsx("div",{className:"modal-back",onClick:d=>d.target===d.currentTarget&&f(null),children:o.jsxs("div",{className:"modal",children:[o.jsx("h3",{children:i.title}),o.jsx("label",{className:"modal-label",children:i.label}),o.jsx("input",{className:"modal-input",type:"text",autoComplete:"off",defaultValue:i.value,ref:c}),o.jsxs("div",{className:"modal-actions",children:[o.jsx("button",{className:"ai-btn",onClick:()=>f(null),children:"Cancel"}),o.jsx("button",{className:"pbtn",onClick:r,children:i.okLabel})]})]})})}function _0({m:i}){const c=Q.useRef(null),f=r=>{nm(),i.resolve(r)};return Q.useEffect(()=>{c.current.focus();const r=d=>{d.key==="Escape"&&f(!1),d.key==="Enter"&&f(!0)};return document.addEventListener("keydown",r),()=>document.removeEventListener("keydown",r)},[]),o.jsx("div",{className:"modal-back",onClick:r=>r.target===r.currentTarget&&f(!1),children:o.jsxs("div",{className:"modal",children:[o.jsx("h3",{children:i.title}),o.jsx("p",{className:"modal-msg",children:i.message}),o.jsxs("div",{className:"modal-actions",children:[o.jsx("button",{className:"ai-btn",onClick:()=>f(!1),children:"Cancel"}),o.jsx("button",{className:i.danger?"danger-btn":"pbtn",onClick:()=>f(!0),ref:c,children:i.confirmLabel})]})]})})}function R0(i){return he({queryKey:["projects"],queryFn:()=>Ae("/api/projects"),enabled:i,refetchInterval:3e4,select:c=>c.projects||[]})}function U0(i){return he({queryKey:["orgs"],queryFn:()=>Ae("/api/orgs"),enabled:i,select:c=>c.orgs||[]})}function im(i){return he({queryKey:["admin","pending"],queryFn:()=>Ae("/api/admin/pending"),enabled:i,select:c=>c.pending||[]})}function um(){const i=li();return()=>Promise.all([i.invalidateQueries({queryKey:["projects"]}),i.invalidateQueries({queryKey:["orgs"]})]).then(()=>{})}function cm(i){return i.split("/").map(encodeURIComponent).join("/")}function qh(i){return i.split("/").map(decodeURIComponent).join("/")}const H0=new Set(["insights","history"]);function sm(i,c){const f=i.replace(/^\/+/,"");if(c!=="hub")return{path:f?qh(f):""};const r=f.indexOf("/");if(r===-1)return{project:f,path:""};const d={project:f.slice(0,r),path:qh(f.slice(r+1))},y=d.path.indexOf("/"),S=y===-1?d.path:d.path.slice(0,y);return H0.has(S)&&(d.view=S,d.viewTarget=y===-1?"":d.path.slice(y+1).replace(/\/+$/,""),d.path=""),d}function q0(i,c){const f=cm(i);return c?"/"+c+(f?"/"+f:""):"/"+f}function wh(i,c,f){let r=(c?"/"+c:"")+"/"+i;return i==="history"&&f&&(r+="/"+cm(f.replace(/\/+$/,""))),r}let mf="POP";const uf=new Set;function fm(){for(const i of uf)i()}window.addEventListener("popstate",()=>{mf="POP",fm()});function ke(i,c){const f=location.pathname+location.search;!c?.replace&&f===i||(history[c?.replace?"replaceState":"pushState"](null,"",i),mf=c?.replace?"REPLACE":"PUSH",fm())}function yf(){return Q.useSyncExternalStore(i=>(uf.add(i),()=>{uf.delete(i)}),()=>location.pathname)}function w0(){return mf}function Q0({to:i}){return Q.useEffect(()=>{ke(i,{replace:!0})},[i]),null}const B0=/\.(md|markdown)$/i,Y0=/\.(png|jpe?g|gif|svg|webp|ico|bmp|avif)$/i,G0=/\.(txt|log|json|ya?ml|toml|csv|go|py|js|ts|jsx|tsx|sh|bash|zsh|rb|rs|c|h|cpp|java|kt|swift|sql|html|css|xml|ini|conf|env|mod|sum|jsonl)$/i;function rm(i){if(i<1024)return i+" B";const c=["KB","MB","GB","TB"];let f=-1;do i/=1024,f++;while(i>=1024&&fd.invalidateQueries({queryKey:["orgs"]}),m=()=>d.invalidateQueries({queryKey:["invites",i.id]}),N=()=>d.invalidateQueries({queryKey:["orgShares",i.id]}),{data:j}=he({queryKey:["invites",i.id],queryFn:()=>Ae(`/api/orgs/${i.id}/invites`),enabled:y,select:C=>C.invites||[]}),{data:E}=he({queryKey:["orgShares",i.id],queryFn:()=>Ae(`/api/orgs/${i.id}/shares`),enabled:y,select:C=>C.shares||[]}),q=c.filter(C=>C.org===i.id);return o.jsxs("div",{className:"admin",children:[o.jsx("h1",{id:"org-title",children:i.name+(y?"":" · member")}),y&&o.jsxs("div",{className:"admin-row",children:[o.jsx("input",{id:"org-rename",type:"text",value:S,onChange:C=>A(C.target.value)}),o.jsx("button",{className:"pbtn",id:"org-rename-btn",onClick:async()=>{try{await Ll("PATCH","/api/orgs/"+i.id,{name:S.trim()}),ot("Renamed."),v()}catch(C){ot(C.message,!0)}},children:"Rename org"})]}),o.jsx("h3",{children:"Members"}),o.jsx("div",{className:"admin-list",children:i.members.map(C=>{const w=!!f&&C.email.toLowerCase()===f.toLowerCase();return o.jsxs("div",{className:"admin-item",children:[o.jsx("span",{className:"ai-main",children:C.email+(w?" (you)":"")}),y&&!w?o.jsxs(o.Fragment,{children:[o.jsxs("select",{value:C.role,onChange:async B=>{try{await Ll("PATCH",`/api/orgs/${i.id}/members/${encodeURIComponent(C.email)}`,{role:B.target.value}),ot("Role updated.")}catch(L){ot(L.message,!0)}v()},children:[o.jsx("option",{value:"owner",children:"owner"}),o.jsx("option",{value:"member",children:"member"})]}),o.jsx("button",{className:"ai-del",onClick:async()=>{if(await ju("Remove member",`Remove ${C.email} from ${i.name}?`,"Remove",!0))try{await Ll("DELETE",`/api/orgs/${i.id}/members/${encodeURIComponent(C.email)}`),ot("Removed."),v()}catch(B){ot(B.message,!0)}},children:"Remove"})]}):o.jsx("span",{className:"ai-tag",children:C.role})]},C.email)})}),y&&o.jsxs(o.Fragment,{children:[o.jsx("h3",{children:"Projects"}),o.jsxs("div",{className:"admin-list",children:[q.length===0&&o.jsx("div",{className:"admin-empty",children:"No projects yet."}),q.map(C=>o.jsxs("div",{className:"admin-item",children:[o.jsx("span",{className:"ai-main",children:C.name}),o.jsx("button",{className:"ai-btn",onClick:async()=>{const w=await am("Rename project","New name",C.name,"Rename");if(!(!w||w===C.name))try{await Ll("PATCH","/api/projects/"+C.id,{name:w}),ot("Renamed."),await r()}catch(B){ot(B.message,!0)}},children:"Rename"}),o.jsx("button",{className:"ai-del",onClick:async()=>{if(await ju("Delete project",`Delete “${C.name}”? Its files stay in storage, but it's removed from the hub.`,"Delete",!0))try{await Ll("DELETE","/api/projects/"+C.id),ot(`Deleted “${C.name}”.`),await r()}catch(w){ot(w.message,!0)}},children:"Delete"})]},C.id))]}),o.jsxs("div",{className:"admin-h",children:[o.jsx("h3",{children:"Invite links"}),o.jsx("button",{className:"pbtn",onClick:async()=>{try{const C=await $a(`/api/orgs/${i.id}/invites`),w=await Pn(C.url);ot(w?"Invite link copied to clipboard.":"Invite created — copy it from the list below."),m()}catch(C){ot(C.message,!0)}},children:"New invite"})]}),o.jsxs("div",{className:"admin-list",children:[j&&j.length===0&&o.jsx("div",{className:"admin-empty",children:"No active invite links."}),(j||[]).map(C=>o.jsxs("div",{className:"admin-item",children:[o.jsx("span",{className:"ai-main mono",style:{cursor:"pointer"},title:"Copy",onClick:()=>Pn(C.url).then(w=>ot(w?"Copied.":"Select and copy the link.")),children:C.url}),o.jsx("span",{className:"ai-tag",children:(C.creator?"by "+C.creator+" · ":"")+(C.uses?C.uses+" joined · ":"unused · ")+"expires "+new Date(C.expires).toLocaleDateString()}),o.jsx("button",{className:"ai-del",onClick:async()=>{if(await ju("Revoke invite","Revoke this invite link? Anyone still holding it won't be able to join.","Revoke",!0))try{await Ll("DELETE",`/api/orgs/${i.id}/invites/${C.token}`),ot("Revoked."),m()}catch(w){ot(w.message,!0)}},children:"Revoke"})]},C.token))]}),o.jsx("h3",{children:"Public share links"}),o.jsxs("div",{className:"admin-list",children:[E&&E.length===0&&o.jsx("div",{className:"admin-empty",children:"No public shares."}),(E||[]).map(C=>o.jsxs("div",{className:"admin-item",children:[o.jsx("span",{className:"ai-main mono",style:{cursor:"pointer"},title:C.url,onClick:()=>window.open(C.url,"_blank"),children:C.path}),o.jsx("span",{className:"ai-tag",children:(C.project_name||"")+(C.creator?" · by "+C.creator:"")+(C.created?" · "+new Date(C.created).toLocaleDateString():"")}),o.jsx("button",{className:"ai-del",onClick:async()=>{if(await ju("Revoke share link",`Revoke the public link to “${C.path}”? Anyone with the URL will lose access.`,"Revoke",!0))try{await Ll("DELETE","/api/shares/"+C.token),ot("Share revoked."),N()}catch(w){ot(w.message,!0)}},children:"Revoke"})]},C.token))]})]})]})}function X0(){const i=li(),{data:c,error:f}=he({queryKey:["admin","policy"],queryFn:()=>Ae("/api/admin/policy")}),{data:r}=im(!0),[d,y]=Q.useState(!1),[S,A]=Q.useState(!1);if(Q.useEffect(()=>{c&&(y(c.require_verification&&c.mailer),A(c.require_approval))},[c]),Q.useEffect(()=>{f&&ot(f.message,!0)},[f]),!c)return null;const v=async(m,N,j)=>{try{await $a(`/api/admin/pending/${m}/${N}`),ot((N==="approve"?"Approved ":"Denied ")+j),i.invalidateQueries({queryKey:["admin","pending"]})}catch(E){ot(E.message,!0)}};return o.jsxs("div",{className:"admin",children:[o.jsx("h1",{children:"Signup & access"}),o.jsx("p",{className:"admin-sub",children:"Who can create an account on this hub, and how new accounts are vetted."}),o.jsx("h3",{children:"New-account vetting"}),o.jsxs("div",{className:"admin-list",children:[o.jsx(Qh,{label:"Require email verification",desc:c.mailer?"New accounts must click an emailed link before they can sign in — proves they control the address.":"Configure SMTP on the server (auth.smtp) to enable email verification.",checked:d,disabled:!c.mailer,onChange:y}),o.jsx(Qh,{label:"Require admin approval",desc:"New accounts wait for a hub admin to approve them before they gain access.",checked:S,onChange:A})]}),o.jsx("button",{className:"pbtn",style:{marginTop:14},onClick:async()=>{try{await $a("/api/admin/policy",{require_verification:d,require_approval:S}),ot("Signup policy saved."),i.invalidateQueries({queryKey:["admin","policy"]})}catch(m){ot(m.message,!0)}},children:"Save policy"}),o.jsx("h3",{children:"Who can sign up"}),o.jsxs("div",{className:"admin-list",children:[o.jsxs("div",{className:"admin-item",children:[o.jsx("span",{className:"ai-main",children:"Allowed email domains"}),o.jsx("span",{className:"ai-tag",children:c.allowed_domains&&c.allowed_domains.length?c.allowed_domains.map(m=>"@"+m).join(", "):"any"})]}),o.jsxs("div",{className:"admin-item",children:[o.jsx("span",{className:"ai-main",children:"Self-signup"}),o.jsx("span",{className:"ai-tag",children:c.allow_signup?"open":"invite-only"})]}),o.jsxs("div",{className:"admin-item",children:[o.jsx("span",{className:"ai-main",children:"Hub admins"}),o.jsx("span",{className:"ai-tag",children:c.admins&&c.admins.length?c.admins.join(", "):"none"})]})]}),o.jsx("p",{className:"admin-sub",children:"Domains and admins are set in the server config file (they can't be widened from the browser)."}),o.jsx("h3",{children:"Pending signups"}),o.jsxs("div",{className:"admin-list",children:[(!r||r.length===0)&&o.jsx("div",{className:"admin-empty",children:"No one is waiting for approval."}),(r||[]).map(m=>o.jsxs("div",{className:"admin-item",children:[o.jsx("span",{className:"ai-main",children:(m.name?m.name+" · ":"")+m.email}),o.jsx("button",{className:"pbtn",onClick:()=>v(m.id,"approve",m.email),children:"Approve"}),o.jsx("button",{className:"ai-del",onClick:()=>v(m.id,"deny",m.email),children:"Deny"})]},m.id))]})]})}function Qh({label:i,desc:c,checked:f,disabled:r,onChange:d}){return o.jsxs("label",{className:"admin-item toggle",style:r?{opacity:.55}:void 0,children:[o.jsxs("span",{className:"ai-main",children:[o.jsx("div",{className:"tg-label",children:i}),o.jsx("div",{className:"tg-desc",children:c})]}),o.jsx("input",{type:"checkbox",checked:f,disabled:r,onChange:y=>d(y.target.checked)})]})}const Bh=["#5b8def","#f5a623","#4cc38a","#e0679b","#8b7bf0","#3ec8c8","#e6934a"];function K0(i){let c=0;for(const f of i)c=c*31+f.charCodeAt(0)>>>0;return Bh[c%Bh.length]}function Yh({projects:i,currentId:c}){const f=um(),r=async()=>{const d=await am("New project","Project name","","Create");if(d)try{const y=await $a("/api/projects",{name:d});await f(),ke("/"+y.project.id),ot(`Created “${y.project.name}”.`)}catch(y){ot("Could not create the project: "+y.message,!0)}};return o.jsxs("nav",{id:"projects","aria-label":"Projects",children:[o.jsxs("div",{className:"nav-head",children:[o.jsx("span",{children:"Projects"}),o.jsx("button",{className:"nav-add",title:"New project",onClick:r,children:"+"})]}),o.jsx("ul",{children:i.map(d=>o.jsx("li",{children:o.jsxs("div",{className:"row"+(c===d.id?" active":""),title:d.name,tabIndex:0,role:"button",onClick:()=>{ke("/"+d.id),ra()},onKeyDown:y=>{(y.key==="Enter"||y.key===" ")&&(y.preventDefault(),y.currentTarget.click())},children:[o.jsx("span",{className:"proj-mark",style:{background:K0(d.name)},children:d.name.trim()[0]||"?"}),o.jsx("span",{className:"label",children:d.name})]})},d.id))})]})}function Z0({org:i,onManage:c}){return i?o.jsxs("footer",{id:"orgbar",children:[o.jsx("span",{id:"org-name",title:"Manage organization",role:"button",tabIndex:0,onClick:()=>c(i),onKeyDown:f=>{(f.key==="Enter"||f.key===" ")&&(f.preventDefault(),c(i))},children:i.name}),i.role==="owner"&&o.jsx("button",{id:"invite-btn",title:"Manage this organization",onClick:()=>c(i),children:"Manage"})]}):null}function V0({authEnabled:i,onCreate:c}){const f=Q.useRef(null),r=Q.useRef(null),d=()=>{const y=f.current.value.trim(),S=y.match(/join\/([0-9a-f]+)/)||y.match(/^([0-9a-f]{8,})$/);if(!S){ot("That doesn't look like an invite link.",!0);return}location.href="/join/"+S[1]};return o.jsxs("div",{className:"onboard",children:[o.jsx("h1",{children:"Welcome to BearDrive"}),o.jsx("p",{children:"You're signed in, but you're not part of any project yet."}),i&&o.jsxs("div",{className:"ob-card",children:[o.jsx("h3",{children:"Have an invite link?"}),o.jsx("p",{children:"A teammate can send you a join link. Paste it here:"}),o.jsxs("div",{className:"ob-row",children:[o.jsx("input",{id:"ob-invite",type:"text",placeholder:"https://…/join/…",autoComplete:"off",ref:f}),o.jsx("button",{id:"ob-join",className:"pbtn",onClick:d,children:"Join"})]})]}),o.jsxs("div",{className:"ob-card",children:[o.jsx("h3",{children:"Or start a new project"}),o.jsx("p",{children:"Create a shared space for your team's files."}),o.jsxs("div",{className:"ob-row",children:[o.jsx("input",{id:"ob-name",type:"text",placeholder:"Project name, e.g. wiki",autoComplete:"off",ref:r}),o.jsx("button",{id:"ob-create",className:"pbtn",onClick:()=>c(r.current.value.trim()),children:"Create"})]})]})]})}function J0(i,c=!0){const f=he({queryKey:["tree",i],queryFn:()=>Ae(i+"tree"),enabled:c,refetchInterval:15e3}),r=Q.useMemo(()=>{const d=[],y=new Map,S=A=>{for(const v of A.children||[])v.dir?(y.set(v.path,v),S(v)):d.push(v)};return f.data&&S(f.data),{flatFiles:d,dirIndex:y}},[f.data]);return{tree:f.data,...r,loaded:!!f.data}}function k0(i,c){return he({queryKey:["heat",i],queryFn:()=>Ae(i+"heat?days=30"),enabled:c,staleTime:6e4,refetchInterval:6e4}).data?.entries??null}function F0(i,c,f){return he({queryKey:["history",i,"prefix",c,20],queryFn:()=>Ae(i+"history?prefix="+encodeURIComponent(c)+"&n=20"),enabled:f,staleTime:15e3}).data?.entries??null}function Gh(i,c,f){if(!i)return null;if(!f)return i[c]||null;const r={human:0,agent:0,share:0};for(const[d,y]of Object.entries(i))d.startsWith(c+"/")&&(r.human+=y.human||0,r.agent+=y.agent||0,r.share+=y.share||0);return r.human||r.agent||r.share?r:null}function ti(i){return(i.human||0)+(i.agent||0)+(i.share||0)}function Ou(i){const c=ti(i);if(!c)return"";let f=c+(c===1?" read":" reads");return i.agent&&(f+=" ("+i.agent+" agent)"),f}function $0(i){const c=ti(i);return c?c<3?1:c<10?2:c<30?3:4:0}async function W0(i,c,f){const r=await f.arrayBuffer(),d=await I0(r),y=async(v,m)=>{const N=await fetch(v,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(m)});if(!N.ok)throw new Error(await N.text());return N.json()},S={path:c,sha256:d,size:f.size},A=await y(i+"upload/init",S);if(A.mode==="direct"){if(!A.exists){const v=await fetch(A.url,{method:A.method||"PUT",headers:A.headers||{},body:r});if(!v.ok)throw new Error("storage upload failed: "+v.status)}await y(i+"upload/commit",S)}else{const v=await fetch(i+"upload/content?path="+encodeURIComponent(c),{method:"PUT",body:r});if(!v.ok)throw new Error(await v.text())}}async function I0(i){if(crypto.subtle){const c=await crypto.subtle.digest("SHA-256",i);return[...new Uint8Array(c)].map(f=>f.toString(16).padStart(2,"0")).join("")}return P0(new Uint8Array(i))}function P0(i){const c=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),f=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),r=(v,m)=>v>>>m|v<<32-m,d=i.length,y=new Uint8Array((d+8>>6)+1<<6);y.set(i),y[d]=128;const S=new DataView(y.buffer);S.setUint32(y.length-8,Math.floor(d*8/4294967296)),S.setUint32(y.length-4,d*8>>>0);const A=new Uint32Array(64);for(let v=0;v>>3,nt=r(A[L-2],17)^r(A[L-2],19)^A[L-2]>>>10;A[L]=A[L-16]+dt+A[L-7]+nt>>>0}let[m,N,j,E,q,C,w,B]=f;for(let L=0;L<64;L++){const dt=r(q,6)^r(q,11)^r(q,25),nt=B+dt+(q&C^~q&w)+c[L]+A[L]>>>0,Nt=(r(m,2)^r(m,13)^r(m,22))+(m&N^m&j^N&j)>>>0;B=w,w=C,C=q,q=E+nt>>>0,E=j,j=N,N=m,m=nt+Nt>>>0}f[0]+=m,f[1]+=N,f[2]+=j,f[3]+=E,f[4]+=q,f[5]+=C,f[6]+=w,f[7]+=B}return[...f].map(v=>(v>>>0).toString(16).padStart(8,"0")).join("")}function tp(i){return o.jsx("nav",{id:"tree","aria-label":"Files",children:i.root&&o.jsx(dm,{nodes:i.root.children||[],...i})})}function dm({nodes:i,...c}){return o.jsx("ul",{children:i.map(f=>o.jsx(ep,{node:f,...c},f.path))})}function ep({node:i,...c}){const{expanded:f,onToggle:r,currentPath:d,listingShowing:y,onOpen:S}=c,A=i.dir?f.has(i.path):!1,v=()=>{if(i.dir&&d===i.path&&y){r(i.path);return}S(i.path),i.dir||ra()};return o.jsxs("li",{className:(i.dir?"dir":"file")+(i.dir&&!A?" collapsed":""),children:[o.jsxs("div",{className:"row"+(d===i.path?" active":""),"data-path":i.path,tabIndex:0,role:"button",title:i.name,"aria-expanded":i.dir?A:void 0,onClick:v,onKeyDown:m=>{(m.key==="Enter"||m.key===" ")&&(m.preventDefault(),v())},children:[o.jsx("span",{className:"chev",onClick:m=>{i.dir&&(m.stopPropagation(),r(i.path))},children:o.jsx(te,{name:"chevd"})}),o.jsx("span",{className:"ticon",children:o.jsx(te,{name:i.dir?"folder":"doc"})}),o.jsx("span",{className:"label",children:i.name})]}),i.dir&&o.jsx(dm,{nodes:i.children||[],...c})]})}function lp(i){const c=i.split("/"),f=[];let r="";for(let d=0;d{r=r?r+"/"+d:d;const S=r,A=y===f.length-1;return o.jsxs("span",{children:[y>0&&o.jsx("span",{className:"crumb-sep",children:"/"}),A?o.jsx("span",{children:d}):o.jsx("span",{className:"crumb-seg",title:S,onClick:()=>c(S),children:d})]},S)})})}const np={add:"plus",edit:"edit",delete:"x"},ip={add:"added",edit:"edited",delete:"deleted"};function hm({entry:i,onOpen:c}){const[f,r]=Q.useState(!1),d=i.kind==="put"?"edit":i.kind,y=i.user_name?`${i.user_name} <${i.user}>`:i.user||i.author||"unknown",S=[i.device.name||i.device.id,i.device.os,i.device.ip].filter(Boolean).join(" · "),A=d!=="delete",v=m=>{m.target.tagName!=="A"&&A&&c(i.path)};return o.jsxs("div",{className:"hentry "+d+(A?" clickable":""),tabIndex:A?0:void 0,role:A?"button":void 0,onClick:v,onKeyDown:m=>{A&&(m.key==="Enter"||m.key===" ")&&(m.preventDefault(),c(i.path))},children:[o.jsxs("div",{className:"hline",children:[o.jsx("span",{className:"hkind",children:o.jsx(te,{name:np[d]||"dot"})}),o.jsx("span",{className:"hpath",children:i.path}),o.jsx("span",{className:"htag",children:ip[d]||d}),o.jsx("span",{className:"htime",children:new Date(i.time).toLocaleString()})]}),o.jsxs("div",{className:"hmeta",children:[o.jsx("span",{className:"hwho",children:y}),o.jsx("span",{className:"hdev",children:S}),o.jsx("span",{className:"hsize",children:i.size?rm(i.size):""})]}),i.note&&o.jsx("div",{className:"hnote"+(f?" open":""),tabIndex:0,role:"button",title:f?"Collapse note":"Show full note","aria-expanded":f,onClick:m=>{m.stopPropagation(),m.target.tagName!=="A"&&r(!f)},onKeyDown:m=>{(m.key==="Enter"||m.key===" ")&&(m.preventDefault(),m.stopPropagation(),r(!f))},children:i.note.split(/(https?:\/\/\S+)/).map((m,N)=>/^https?:\/\//.test(m)?o.jsx("a",{href:m,target:"_blank",rel:"noopener",children:m},N):m)})]})}function up(i){const{node:c,heatMap:f,onOpen:r}=i,d=(c.children||[]).slice().sort((m,N)=>Number(N.dir||!1)-Number(m.dir||!1)||m.name.localeCompare(N.name)),y=d.filter(m=>m.dir).length,S=d.length-y,A=[];y&&A.push(y+(y===1?" folder":" folders")),S&&A.push(S+(S===1?" file":" files"));const v=Gh(f,c.path,!0);return v&&A.push(Ou(v)+" in 30 days"),o.jsxs("div",{className:"dirlist",children:[o.jsxs("h1",{className:"dl-title",children:[o.jsx("span",{className:"dl-title-icon",children:o.jsx(te,{name:"folder"})}),o.jsx("span",{children:c.name})]}),o.jsx("p",{className:"dl-sub",children:A.join(" · ")||"Empty folder"}),d.length===0?o.jsx("div",{className:"dl-empty",children:"Nothing in this folder yet."}):o.jsx("div",{className:"dl-items",children:d.map(m=>{let N="";if(m.dir){const E=(m.children||[]).length;N=E+(E===1?" item":" items")}else N=[m.size?rm(m.size):"",m.time?new Date(m.time).toLocaleDateString():""].filter(Boolean).join(" · ");const j=Gh(f,m.path,!!m.dir);return j&&(N=Ou(j)+(N?" · "+N:"")),o.jsxs("div",{className:"dl-row",tabIndex:0,role:"button",title:m.path,onClick:()=>r(m.path),onKeyDown:E=>{(E.key==="Enter"||E.key===" ")&&(E.preventDefault(),r(m.path))},children:[o.jsx("span",{className:"ticon",children:o.jsx(te,{name:m.dir?"folder":"doc"})}),o.jsx("span",{className:"dl-name",children:m.name}),j&&o.jsx("span",{className:"heatdot lvl"+$0(j),title:Ou(j)+" in 30 days"}),o.jsx("span",{className:"dl-meta",children:N})]},m.path)})}),i.hub&&o.jsx(cp,{apiBase:i.apiBase,prefix:c.path+"/",onOpen:r,onFullHistory:()=>i.onFullHistory(c.path+"/"),onRendered:i.onRendered})]})}function cp(i){const c=F0(i.apiBase,i.prefix,!0),{onRendered:f}=i;return Q.useEffect(()=>{c&&c.length&&f&&f()},[c,f]),!c||c.length===0?null:o.jsxs("div",{className:"dl-history",children:[o.jsx("h3",{className:"dl-h3",children:"Recent changes"}),o.jsx("div",{className:"history dl-hlist",children:c.map((r,d)=>o.jsx(hm,{entry:r,onOpen:i.onOpen},d))}),o.jsx("button",{className:"ai-btn dl-more",onClick:i.onFullHistory,children:"Full history"})]})}function sp(i){const{apiBase:c,path:f,onMeta:r}=i,d=c+"file?path="+encodeURIComponent(f);return Q.useEffect(()=>()=>r(""),[f,r]),B0.test(f)?o.jsx(fp,{...i}):Y0.test(f)?o.jsx(dp,{src:d,alt:f,onRendered:i.onRendered}):G0.test(f)?o.jsx(hp,{...i,fileURL:d}):o.jsxs("div",{className:"filecard",children:[o.jsx("div",{className:"name",children:f.split("/").pop()}),o.jsx("p",{children:"No preview for this file type."}),o.jsx("a",{className:"btn",download:!0,href:c+"download?path="+encodeURIComponent(f),children:"Download"})]})}function fp(i){const{apiBase:c,path:f,heatMap:r,flatFiles:d,onOpenFile:y,onMeta:S,onRendered:A}=i,{data:v,error:m}=he({queryKey:["render",c,f],queryFn:()=>Ae(c+"render?path="+encodeURIComponent(f))}),N=Q.useMemo(()=>v?op(v.html,f,c):"",[v,f,c]);return Q.useEffect(()=>{if(!v)return;const j=[];v.author&&j.push(v.author+(v.device?" on "+v.device:"")),v.time&&j.push(new Date(v.time).toLocaleString());const E=r&&r[v.path];E&&ti(E)&&j.push(Ou(E)+" / 30d"),S(j.join(" · ")),A?.()},[v,r,S,A]),m?o.jsxs("div",{className:"empty",children:["Could not load file: ",m.message]}):v?o.jsx("div",{dangerouslySetInnerHTML:{__html:N},onClick:j=>rp(j,f,d,y)}):null}function rp(i,c,f,r){const d=i.target.closest("a");if(!d||!i.currentTarget.contains(d))return;const y=d.getAttribute("href")||"",S=c.includes("/")?c.slice(0,c.lastIndexOf("/")):"";y.startsWith("wiki:")?(i.preventDefault(),mp(decodeURIComponent(y.slice(5)),f,r)):/^([a-z]+:|\/|#)/i.test(y)||(i.preventDefault(),r(om(S,decodeURIComponent(y))))}function op(i,c,f){const r=c.includes("/")?c.slice(0,c.lastIndexOf("/")):"",d=S=>f+"file?path="+encodeURIComponent(S),y=new DOMParser().parseFromString(i,"text/html");for(const S of y.querySelectorAll("img")){const A=S.getAttribute("src")||"";/^([a-z]+:|\/)/i.test(A)||S.setAttribute("src",d(om(r,A)))}for(const S of y.querySelectorAll("a")){const A=S.getAttribute("href")||"";/^https?:/i.test(A)&&(S.setAttribute("target","_blank"),S.setAttribute("rel","noopener"))}return y.body.innerHTML}function dp({src:i,alt:c,onRendered:f}){return o.jsx("img",{src:i,alt:c,onLoad:f})}function hp(i){const{path:c,fileURL:f,onRendered:r}=i,{data:d,error:y}=he({queryKey:["text",f],queryFn:async()=>{const S=await fetch(f);if(!S.ok)throw new Error(await S.text());return S.text()}});return Q.useEffect(()=>{d!=null&&r?.()},[d,r]),y?o.jsxs("div",{className:"empty",children:["Could not load file: ",y.message]}):d==null?null:o.jsx("pre",{className:"plain",children:d},c)}function mp(i,c,f){const r=i.toLowerCase(),d=c.find(y=>y.path.toLowerCase()===r||y.path.toLowerCase()===r+".md")||c.find(y=>{const S=y.name.toLowerCase();return S===r||S===r+".md"});d&&f(d.path)}function yp({url:i,copied:c,onClose:f}){const r=i.split("/s/")[1];return o.jsx("div",{className:"modal-back",onClick:d=>d.target===d.currentTarget&&f(),children:o.jsxs("div",{className:"modal",children:[o.jsx("h3",{children:"Public link created"}),o.jsxs("p",{children:[o.jsx("b",{children:"Anyone with this link can view this file"})," — no account needed. It always shows the latest version until you revoke it."]}),o.jsx("div",{className:"modal-url",children:i}),o.jsxs("div",{className:"modal-actions",children:[o.jsx("button",{className:"pbtn",onClick:()=>Pn(i).then(d=>ot(d?"Copied.":"Select and copy the link above.")),children:c?"Copied ✓":"Copy link"}),o.jsx("button",{className:"ai-btn",onClick:()=>window.open(i,"_blank"),children:"Open"}),o.jsx("button",{className:"ai-del",onClick:async()=>{try{await Ll("DELETE","/api/shares/"+r),ot("Link revoked — it no longer works."),f()}catch(d){ot(d.message,!0)}},children:"Revoke"}),o.jsx("button",{className:"ai-btn",onClick:f,children:"Done"})]})]})})}function Lh(i,c){if(!i)return{score:0,hits:[]};const f=i.toLowerCase(),r=c.toLowerCase();let d=0,y=0,S=0;const A=[];for(let v=0;v3&&r.endsWith("ies")?d=r.slice(0,-3)+"y":r.length>3&&r.endsWith("es")?d=r.slice(0,-2):r.length>2&&r.endsWith("s")&&(d=r.slice(0,-1)),d?Lh(d,c):null}function pp({text:i,hits:c}){const f=[];let r=0;return c.forEach((d,y)=>{d>r&&f.push(i.slice(r,d)),f.push(o.jsx("b",{children:i[d]},y)),r=d+1}),f.push(i.slice(r)),o.jsx("span",{className:"plabel",children:f})}function gp({open:i,onClose:c,candidates:f}){const[r,d]=Q.useState(""),[y,S]=Q.useState(0),A=Q.useRef(null),v=Q.useRef(null),m=Q.useMemo(()=>{if(!i)return[];const j=[];for(const E of f()){const q=vp(r,E.label);q&&j.push({...E,score:q.score,hits:q.hits})}return j.sort((E,q)=>q.score-E.score),j.slice(0,40)},[i,r,f]);Q.useEffect(()=>{i&&(d(""),S(0),A.current?.focus())},[i]),Q.useEffect(()=>S(0),[r]),Q.useEffect(()=>{v.current?.children[y]?.scrollIntoView({block:"nearest"})},[y,m]);const N=j=>{c(),j.run()};return Q.useEffect(()=>{if(!i)return;const j=E=>{if(E.key==="Escape")E.preventDefault(),c();else if(E.key==="ArrowDown"||E.key==="ArrowUp"){E.preventDefault();const q=m.length;q&&S(C=>(C+(E.key==="ArrowDown"?1:q-1))%q)}else E.key==="Enter"&&(E.preventDefault(),m[y]&&N(m[y]))};return window.addEventListener("keydown",j),()=>window.removeEventListener("keydown",j)},[i,m,y]),i?o.jsx("div",{id:"palette-overlay",onClick:j=>j.target===j.currentTarget&&c(),children:o.jsxs("div",{id:"palette",role:"dialog","aria-label":"Search and quick actions",children:[o.jsxs("div",{id:"palette-inputwrap",children:[o.jsx(te,{name:"search"}),o.jsx("input",{id:"palette-input",type:"text",placeholder:"Search file names, projects, actions…",autoComplete:"off",spellCheck:!1,ref:A,value:r,onChange:j=>d(j.target.value)})]}),o.jsx("ul",{id:"palette-results",ref:v,children:m.length===0?o.jsx("li",{className:"pempty",children:"No matches — search covers file names, projects, and actions"}):m.map((j,E)=>o.jsxs("li",{className:E===y?"selected":void 0,onClick:()=>N(j),onMouseMove:()=>y!==E&&S(E),children:[o.jsx("span",{className:"picon",children:o.jsx(te,{name:j.icon})}),o.jsx(pp,{text:j.label,hits:j.hits}),o.jsx("span",{className:"pkind",children:j.kind})]},j.kind+":"+j.label))}),o.jsx("footer",{id:"palette-hint",children:"↑↓ navigate · ⏎ select · esc close"})]})}):null}const $s=[{key:"claude",label:"Claude Code & Cowork"},{key:"hermes",label:"Hermes",hook:"hermes",note:"Registers BearDrive's hooks in Hermes's config: pull before every turn, push after edits with a session note, and report file reads to Insights."},{key:"codex",label:"Codex",hook:"codex",note:"Registers hooks in .codex/hooks.json.",extra:"Run /hooks inside Codex once to trust the project's .codex layer — after that every turn pulls, edits push automatically, and reads are reported to Insights."}];function bp(i,c){const f=window.location.origin,r=c.id;if(i.key==="claude")return[{title:"Add the BearDrive plugin",desc:"One time, in any Claude Code session. The plugin ships the beardrive skill, the /beardrive commands, and turn-boundary sync hooks — and Claude Cowork shares the same plugins, so installing it once covers both.",code:`/plugin marketplace add runbear-io/beardrive +/plugin install beardrive@beardrive`},{title:"Set up this project conversationally",desc:"In a Claude Code or Cowork session in the folder where you want the files, run:",code:"/beardrive:install connect to "+f+", project "+r,extra:"Claude installs the CLI, signs this machine in, mounts the project, and registers the sync hooks — pull the latest before every turn, push after edits (stamped with the session that made them), and report file reads to Insights. It asks before anything it changes."}];const d=(c.name||"project").toLowerCase().replace(/[^a-z0-9._-]+/g,"-")||"project";return[{title:"Install the BearDrive CLI",desc:"One static binary. Homebrew on macOS and Linux; releases and `go install` also work.",code:"brew install runbear-io/tap/beardrive"},{title:"Sign in to this hub",desc:"Opens the browser once and stores a device token on this machine — the synced folder itself never holds credentials.",code:"bdrive login "+f},{title:"Mount the project into a local folder",desc:"Run it where you want the files. An existing folder works too — contents merge, and re-running init later (or after moving the folder) just resumes.",code:"mkdir -p ~/"+d+" && cd ~/"+d+` +bdrive init --project `+r},{title:"Connect "+i.label,desc:i.note,code:"bdrive hooks install --agent "+i.hook,extra:i.extra}]}function Sp(){try{return localStorage.getItem("bdrive-guide-agent")||"claude"}catch{return"claude"}}function xp({project:i}){const[c,f]=Q.useState(Sp),r=$s.find(d=>d.key===c)||$s[0];return o.jsxs("div",{className:"guide",children:[o.jsx("h1",{className:"in-title",children:i.name}),o.jsx("p",{className:"dl-sub",children:"Mount this project as a folder on any machine and connect your coding agent: files sync both ways in the background, every change is journaled with who made it, and agent reads feed Insights."}),o.jsx("div",{className:"gd-tabs",children:$s.map(d=>o.jsx("button",{className:"gd-tab"+(d.key===r.key?" active":""),"data-key":d.key,onClick:()=>{f(d.key);try{localStorage.setItem("bdrive-guide-agent",d.key)}catch{}},children:d.label},d.key))}),o.jsxs("div",{className:"gd-body",children:[bp(r,i).map((d,y)=>o.jsxs("div",{className:"gd-step",children:[o.jsxs("div",{className:"gd-step-head",children:[o.jsx("span",{className:"gd-num",children:y+1}),o.jsx("span",{className:"gd-step-title",children:d.title})]}),d.desc&&o.jsx("p",{className:"gd-desc",children:d.desc}),d.code&&o.jsx(jp,{code:d.code}),d.extra&&o.jsx("p",{className:"gd-desc gd-extra",children:d.extra})]},y)),o.jsx("p",{className:"gd-done",children:"That's it — the folder now syncs on its own. Every agent turn starts from the latest state, edits appear here (and on every teammate's mount) within seconds, and what your agents read shows up in Insights."})]})]})}function jp({code:i}){const[c,f]=Q.useState("Copy");return o.jsxs("pre",{className:"gd-code",children:[o.jsx("code",{children:i}),o.jsx("button",{className:"gd-copy",onClick:async()=>{f(await Pn(i)?"Copied":"Copy failed"),setTimeout(()=>f("Copy"),1400)},children:c})]})}const Jn=3,Fa=30;function Ep(i,c){return he({queryKey:["heatDevices",i],queryFn:()=>Ae(i+"heat?by=device&days=30"),enabled:c,retry:!1,staleTime:6e4}).data?.devices??null}function Xh(i){const[c,f]=Q.useState("all"),{flatFiles:r,heatMap:d,devices:y}=i,S=Date.now(),A=r.map(v=>{const m=d&&d[v.path]||{},N=v.time?Math.max(0,(S-new Date(v.time).getTime())/864e5):0,j=c==="all"?ti(m):m[c]||0;return{path:v.path,reads:j,agent:m.agent||0,total:ti(m),days:N,danger:j>=Jn&&N>=Fa}});return o.jsxs("div",{className:"insights",children:[o.jsx("h1",{className:"in-title",children:"Knowledge insights"}),o.jsx("p",{className:"dl-sub",children:"Reads over the last 30 days × how long since each file changed. Hot but stale knowledge — read a lot, maintained by nobody — is the danger zone."}),o.jsx("div",{className:"in-lens",children:["all","human","agent"].map(v=>o.jsx("button",{className:"in-lens-btn"+(v===c?" active":""),onClick:()=>f(v),children:v==="all"?"All reads":v==="human"?"Human reads":"Agent reads"},v))}),o.jsx("h3",{className:"dl-h3",children:"Map — cell size = reads, color = freshness"}),o.jsx(Op,{pts:A,onOpenFile:i.onOpenFile,onOpenFolder:i.onOpenFolder,isFolder:i.isFolder}),o.jsx("h3",{className:"dl-h3",children:"Reads × freshness"}),o.jsx(Ap,{pts:A,onOpenFile:i.onOpenFile}),o.jsx("h3",{className:"dl-h3",children:"Hot path — top files by reads"}),o.jsx(Np,{pts:A,lens:c,onOpenFile:i.onOpenFile}),y&&y.length>0&&o.jsxs(o.Fragment,{children:[o.jsx("h3",{className:"dl-h3",children:"Agent coverage — which agents read which areas"}),o.jsx(zp,{devices:y})]})]})}function Tp(i){const c=[[76,195,138],[232,196,84],[224,93,93]],f=Math.min(1,Math.max(0,i/300))*(c.length-1),r=Math.min(c.length-2,Math.floor(f)),d=f-r,y=c[r].map((S,A)=>Math.round(S+(c[r+1][A]-S)*d));return`rgb(${y[0]},${y[1]},${y[2]})`}function Kh(i,c,f,r,d){const y=i.reduce((m,N)=>m+N.value,0);if(!y||r<=0||d<=0)return[];const S=i.slice().sort((m,N)=>N.value-m.value).map(m=>({it:m,a:m.value/y*r*d})),A=(m,N)=>{const E=m.reduce((C,w)=>C+w.a,0)/N;let q=0;for(const C of m){const w=C.a/E;q=Math.max(q,w/E,E/w)}return q},v=[];for(;S.length;){const m=r>=d,N=m?d:r,j=[S.shift()];for(;S.length&&A(j.concat(S[0]),N)<=A(j,N);)j.push(S.shift());const E=j.reduce((C,w)=>C+w.a,0)/N;let q=0;for(const C of j){const w=C.a/E;m?v.push({item:C.it,x:c,y:f+q,w:E,h:w}):v.push({item:C.it,x:c+q,y:f,w,h:E}),q+=w}m?(c+=E,r-=E):(f+=E,d-=E)}return v}const Ws=15;function Op({pts:i,onOpenFile:c,onOpenFolder:f,isFolder:r}){const S=new Map;for(const v of i){const m=v.path.includes("/")?v.path.split("/")[0]:"/";let N=S.get(m);N||S.set(m,N={name:m,files:[],value:0}),N.files.push(v),N.value+=v.reads+1}const A=[];for(const v of Kh([...S.values()],0,0,720,480)){const m=v.item,N=m.name==="/"?"":m.name;if(A.push(o.jsx("rect",{x:v.x+1,y:v.y+1,width:Math.max(0,v.w-2),height:Math.max(0,v.h-2),rx:3,className:"in-tm-group","data-dir":N},"g"+m.name)),v.w>46&&v.h>Ws+10){let E=m.name==="/"?"(root)":m.name;const q=Math.floor((v.w-8)/6);E.length>q&&(E=E.slice(0,Math.max(1,q-1))+"…"),A.push(o.jsx("text",{x:v.x+5,y:v.y+12,className:"in-tm-glabel","data-dir":N,children:E},"gl"+m.name))}const j=Kh(m.files.map(E=>({...E,name:E.path.split("/").pop(),value:E.reads+1})),v.x+2,v.y+Ws,Math.max(0,v.w-4),Math.max(0,v.h-Ws-2));for(const E of j)if(A.push(o.jsx("rect",{x:E.x+.6,y:E.y+.6,width:Math.max(.4,E.w-1.2),height:Math.max(.4,E.h-1.2),rx:1.5,fill:Tp(E.item.days),className:"in-tm-cell","data-path":E.item.path,children:o.jsx("title",{children:`${E.item.path} — ${E.item.reads} read${E.item.reads===1?"":"s"}/30d · changed ${Math.round(E.item.days)}d ago`})},E.item.path)),E.w>54&&E.h>16){const q=Math.floor((E.w-8)/6);let C=(E.item.danger?"⚠ ":"")+E.item.name;C.length>q&&(C=C.slice(0,Math.max(1,q-1))+"…"),q>=5&&A.push(o.jsx("text",{x:E.x+4.5,y:E.y+12.5,className:"in-tm-label","data-path":E.item.path,children:C},"l"+E.item.path))}}return o.jsx("svg",{viewBox:"0 0 720 480",className:"in-chart in-treemap",onClick:v=>{const m=v.target.closest("[data-path], [data-dir]");if(!m)return;const N=m.getAttribute("data-path");if(N)return c(N);const j=m.getAttribute("data-dir");j&&r(j)&&f(j)},children:A})}function Ap({pts:i,onOpenFile:c}){const d={l:44,r:16,t:20,b:34},y=Math.max(Fa*2,...i.map(j=>j.days)),S=Math.max(Jn*2,...i.map(j=>j.reads)),A=j=>Math.log10(j+1)/Math.log10(y+1),v=j=>Math.log10(j+1)/Math.log10(S+1),m=j=>d.l+A(j)*(720-d.l-d.r),N=j=>360-d.b-v(j)*(360-d.t-d.b);return o.jsxs("svg",{viewBox:"0 0 720 360",className:"in-chart",children:[o.jsx("rect",{x:m(Fa),y:d.t,width:720-d.r-m(Fa),height:N(Jn)-d.t,className:"in-danger-zone"}),o.jsx("line",{x1:m(Fa),y1:d.t,x2:m(Fa),y2:360-d.b,className:"in-threshold"}),o.jsx("line",{x1:d.l,y1:N(Jn),x2:720-d.r,y2:N(Jn),className:"in-threshold"}),o.jsx("line",{x1:d.l,y1:360-d.b,x2:720-d.r,y2:360-d.b,className:"in-axis"}),o.jsx("line",{x1:d.l,y1:d.t,x2:d.l,y2:360-d.b,className:"in-axis"}),o.jsx("text",{x:(d.l+720-d.r)/2,y:352,className:"in-label",children:"days since last change →"}),o.jsx("text",{x:12,y:(d.t+360-d.b)/2,className:"in-label",transform:`rotate(-90 12 ${(d.t+360-d.b)/2})`,children:"reads / 30d →"}),o.jsx("text",{x:720-d.r-6,y:d.t+14,className:"in-quad in-quad-danger",textAnchor:"end",children:"hot + stale"}),o.jsx("text",{x:d.l+6,y:d.t+14,className:"in-quad",children:"hot + fresh"}),o.jsx("text",{x:720-d.r-6,y:360-d.b-8,className:"in-quad",textAnchor:"end",children:"cold + stale"}),o.jsx("text",{x:720-d.r-6,y:d.t+28,className:"in-label",textAnchor:"end",children:"dot size = agent share of reads"}),i.map(j=>{const E=j.total?(j.agent||0)/j.total:0;return o.jsx("circle",{cx:Number(m(j.days).toFixed(1)),cy:Number(N(j.reads).toFixed(1)),r:Number((3+4*E).toFixed(1)),className:"in-pt"+(j.danger?" danger":j.reads?"":" cold"),onClick:()=>c(j.path),children:o.jsx("title",{children:`${j.path} — ${j.reads} read${j.reads===1?"":"s"} / 30d · changed ${Math.round(j.days)}d ago`})},j.path)})]})}function Np({pts:i,lens:c,onOpenFile:f}){const r=i.filter(y=>y.reads>0).sort((y,S)=>S.reads-y.reads||S.days-y.days).slice(0,20);if(!r.length)return o.jsx("div",{className:"dl-empty",children:"No reads in the window yet."});const d=r[0].reads;return o.jsxs(o.Fragment,{children:[o.jsx("div",{className:"in-hotpath",children:r.map(y=>{const S=c==="agent"?1:c==="human"?0:y.total?y.agent/y.total:0,A=y.reads/d*100;return o.jsxs("div",{className:"in-hp-row",tabIndex:0,role:"button",title:y.danger?`${y.reads} read${y.reads===1?"":"s"}/30d · unchanged ${Math.round(y.days)}d — review this file`:y.path,onClick:()=>f(y.path),onKeyDown:v=>{(v.key==="Enter"||v.key===" ")&&(v.preventDefault(),f(y.path))},children:[o.jsx("span",{className:"in-hp-name"+(y.danger?" danger":""),children:y.path+(y.danger?" ⚠":"")}),o.jsxs("span",{className:"in-hp-bar",children:[o.jsx("span",{className:"in-hp-agent",style:{width:(A*S).toFixed(1)+"%"}}),o.jsx("span",{className:"in-hp-human",style:{width:(A*(1-S)).toFixed(1)+"%"}})]}),o.jsx("span",{className:"in-hp-count",children:y.reads})]},y.path)})}),o.jsxs("p",{className:"in-legend",children:[o.jsx("span",{className:"in-sw agent"})," agent reads ",o.jsx("span",{className:"in-sw human"})," human reads"]})]})}function zp({devices:i}){const c=new Map;for(const E of i)for(const[q,C]of Object.entries(E.folders||{}))c.set(q,(c.get(q)||0)+C);const f=[...c.entries()].sort((E,q)=>q[1]-E[1]).slice(0,12).map(E=>E[0]),r=i.slice(0,12),d=140,y=6,S=Math.min(76,Math.max(34,(720-d-8)/f.length)),A=26,v=720,m=y+r.length*A+58,N=Math.max(1,...r.flatMap(E=>f.map(q=>(E.folders||{})[q]||0))),j=E=>{const q=[23,25,31],C=[245,166,35],w=q.map((B,L)=>Math.round(B+(C[L]-B)*E));return`rgb(${w[0]},${w[1]},${w[2]})`};return o.jsxs("svg",{viewBox:`0 0 ${v} ${m}`,className:"in-chart in-matrix",children:[r.map((E,q)=>{let C=E.name||E.id||"";return C.length>20&&(C=C.slice(0,19)+"…"),o.jsxs("g",{children:[o.jsx("text",{x:d-8,y:y+q*A+17,textAnchor:"end",className:"in-label",children:C}),f.map((w,B)=>{const L=(E.folders||{})[w]||0;return o.jsx("rect",{x:d+B*S,y:y+q*A,width:S-4,height:A-4,rx:3,fill:j(Math.sqrt(L/N)),children:o.jsx("title",{children:`${E.name||E.id} × ${w||"(root)"}: ${L} read${L===1?"":"s"}/30d`})},w)})]},E.id||q)}),f.map((E,q)=>{const C=d+q*S+(S-4)/2,w=y+r.length*A+14;return o.jsx("text",{x:C,y:w,className:"in-label",textAnchor:"end",transform:`rotate(-28 ${C} ${w})`,children:E||"(root)"},E)})]})}function Mp(i){const{apiBase:c,target:f,isFolder:r,onMeta:d,onRendered:y}=i,S=f?r(f)?{prefix:f+"/"}:{path:f}:{prefix:""},A="path"in S&&S.path!==void 0?"path="+encodeURIComponent(S.path):"prefix="+encodeURIComponent(S.prefix??""),{data:v,error:m}=he({queryKey:["history",c,A,200],queryFn:()=>Ae(c+"history?"+A+"&n=200"),staleTime:15e3});if(Q.useEffect(()=>{m&&d("History unavailable: "+m.message)},[m,d]),Q.useEffect(()=>{v&&y?.()},[v,y]),!v)return null;const N=v.entries||[];return o.jsxs("div",{className:"history",children:[N.length===0&&o.jsx("div",{className:"empty",children:"No history yet."}),N.map((j,E)=>o.jsx(hm,{entry:j,onOpen:i.onOpen},E))]})}function Cp(i,c){return i?c(i)?i+"/ (folder)":i:"all changes"}function mm(i){const{config:c,apiBase:f,route:r,hub:d,project:y}=i,S=yf(),A=li(),{tree:v,flatFiles:m,dirIndex:N,loaded:j}=J0(f,!d||!!y),E=k0(f,d&&!!y&&!!c.reads?.enabled),q=d&&!!y&&!r.path&&!r.view,C=!!i.canInsights&&(r.view==="insights"||q),w=Ep(f,C);Q.useEffect(()=>{C&&A.invalidateQueries({queryKey:["heat",f]})},[C,f,A]);const B=r.path,L=!!B&&N.has(B),dt=!!B&&j&&!N.has(B),nt=L&&!r.view,[Ot,Nt]=Q.useState(()=>new Set),tt=Q.useRef(!0);Q.useEffect(()=>{if(!v||!tt.current)return;tt.current=!1;const k=(v.children||[]).filter(it=>it.dir);k.length===1&&Nt(it=>new Set(it).add(k[0].path))},[v]),Q.useEffect(()=>{if(!B||!j)return;Nt(it=>{const bt=new Set(it);for(const Qe of lp(B))bt.add(Qe);return N.has(B)&&bt.add(B),bt});const k=document.querySelector(`#tree .row[data-path="${CSS.escape(B)}"]`);k&&k.scrollIntoView({block:"nearest"})},[B,j,N]);const F=Q.useCallback(k=>{Nt(it=>{const bt=new Set(it);return bt.has(k)?bt.delete(k):bt.add(k),bt})},[]),ht=Q.useRef(null),Lt=Q.useRef(new Map),ne=Q.useRef({key:"",want:0,attempts:0});Q.useEffect(()=>{ne.current={key:S,want:w0()==="POP"?Lt.current.get(S)??0:0,attempts:0}},[S]);const Vt=Q.useCallback(()=>{const k=ht.current,it=ne.current;!k||it.key!==S||it.attempts>=3||(it.attempts++,k.scrollTo({top:it.want,behavior:"instant"}))},[S]),Ht=Q.useCallback(()=>{ht.current&&Lt.current.set(S,ht.current.scrollTop)},[S]),zt=Q.useCallback(k=>{ke(q0(k,y?.id)),ra()},[y?.id]),ee=Q.useCallback(k=>ke(wh("history",y?.id,k)),[y?.id]),[me,_]=Q.useState(""),[Y,J]=Q.useState(""),[mt,gt]=Q.useState(null),[b,H]=Q.useState(!1),[G,X]=Q.useState(!1),W=Q.useRef(null),et=Q.useRef(null),at=i.panel??null,Jt=!at&&d&&!!y&&dt,Dt=!at&&d&&!!y,Le=!!c.upload?.enabled&&(!d||!!y),Kl=!at&&dt,Wa=!at&&(dt||d&&!!y&&L),ai=f+"download?path="+encodeURIComponent(B),we=Q.useCallback(async()=>{try{const k=await fetch(f+"shares",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:B})});if(!k.ok)throw new Error(await k.text());const it=await k.json(),bt=await Pn(it.url);gt({url:it.url,copied:bt})}catch(k){ot("Share failed: "+k.message,!0)}},[f,B]),hl=Q.useCallback(()=>{if(!B)return ee("");ee(L?B+"/":B)},[B,L,ee]),ml=Q.useCallback(()=>W.current?.click(),[]),zu=async()=>{const k=W.current,it=k.files?.[0];if(k.value="",!it)return;const bt=B?L?B:B.includes("/")?B.slice(0,B.lastIndexOf("/")):"":"",Qe=bt?bt+"/"+it.name:it.name;try{J(`Uploading ${Qe}…`),await W0(f,Qe,it),J(`Uploaded ${Qe}`),await A.invalidateQueries({queryKey:["tree",f]}),zt(Qe)}catch(vl){J("Upload failed: "+vl.message)}};Q.useEffect(()=>{J("")},[S]),Q.useEffect(()=>{const k=it=>{(it.metaKey||it.ctrlKey)&&it.key.toLowerCase()==="k"&&(it.preventDefault(),X(bt=>!bt))};return window.addEventListener("keydown",k),()=>window.removeEventListener("keydown",k)},[]);const ni=Q.useCallback(()=>{const k=[],it=(bt,Qe,vl,Du)=>k.push({icon:bt,label:Qe,kind:vl,run:Du});if(d&&y&&B&&(dt&&it("share","Share: "+B,"action",we),it("hist","History: "+B,"action",hl),dt&&it("download","Download: "+B,"action",()=>et.current?.click())),d&&y&&it("hist","History: whole project","action",()=>ee("")),Le&&it("upload","Upload a file…","action",ml),d)for(const bt of i.projects||[])(!y||bt.id!==y.id)&&it("folder","Switch to project: "+bt.name,"project",()=>ke("/"+bt.id));c.auth?.enabled&&it("power","Sign out","action",()=>window.location.href="/auth/logout");for(const bt of N.keys())it("folder",bt,"folder",()=>zt(bt));for(const bt of m)it("doc",bt.path,"file",()=>zt(bt.path));return k},[d,y,B,dt,Le,c.auth?.enabled,N,m,i.projects,we,hl,ml,ee,zt]);Q.useEffect(()=>{if(!b)return;const k=()=>H(!1);return document.addEventListener("click",k),()=>document.removeEventListener("click",k)},[b]);const yl=Q.useCallback(k=>N.has(k),[N]);let Xe="markdown",ye;at?(Xe="view",ye=at.body):r.view==="insights"?(Xe="view",ye=i.canInsights?o.jsx(Xh,{flatFiles:m,heatMap:E,devices:w,onOpenFile:zt,onOpenFolder:zt,isFolder:yl}):o.jsx("div",{className:"empty",children:"Insights is for hub admins and org owners."})):r.view==="history"?(Xe="view",ye=o.jsx(Mp,{apiBase:f,target:r.viewTarget||"",isFolder:yl,onOpen:zt,onMeta:_,onRendered:Vt})):B?j?L?(Xe="view",ye=o.jsx(up,{node:N.get(B),heatMap:E,hub:d&&!!y,apiBase:f,onOpen:zt,onFullHistory:ee,onRendered:Vt})):ye=o.jsx(sp,{apiBase:f,path:B,heatMap:E,flatFiles:m,onOpenFile:zt,onMeta:_,onRendered:Vt}):ye=o.jsx("div",{className:"empty",children:"Loading…"}):q?(Xe="view",ye=o.jsxs(o.Fragment,{children:[o.jsx(xp,{project:y}),i.canInsights&&o.jsx("div",{className:"home-insights",children:o.jsx(Xh,{flatFiles:m,heatMap:E,devices:w,onOpenFile:zt,onOpenFolder:zt,isFolder:yl})})]})):ye=o.jsx("div",{className:"empty",children:"Select a file to read it."});const Mu=at?at.crumb:B?o.jsx(ap,{path:B,onOpenFolder:zt}):r.view==="insights"?"Insights — "+(y?.name??""):r.view==="history"?"History — "+Cp(r.viewTarget||"",yl):q?y.name:null,Cu=o.jsx(In,{crumb:Mu,meta:Y||me,actions:o.jsxs(o.Fragment,{children:[o.jsxs("button",{className:"btn ghost",title:"Search (⌘K)",onClick:()=>X(!0),children:[o.jsx(te,{name:"search"})," ",o.jsx("span",{className:"lbl",children:"Search"})," ",o.jsx("kbd",{children:"⌘K"})]}),Jt&&o.jsxs("button",{id:"share-btn",className:"btn",onClick:we,children:[o.jsx(te,{name:"share"})," ",o.jsx("span",{className:"lbl",children:"Share"})]}),Dt&&o.jsxs("button",{id:"history-btn",className:"btn",onClick:hl,children:[o.jsx(te,{name:"hist"})," ",o.jsx("span",{className:"lbl",children:"History"})]}),Le&&o.jsxs("button",{id:"upload-btn",className:"btn",onClick:ml,children:[o.jsx(te,{name:"upload"})," ",o.jsx("span",{className:"lbl",children:"Upload"})]}),o.jsx("input",{type:"file",hidden:!0,ref:W,onChange:zu}),Kl&&o.jsxs("a",{id:"download",className:"btn",download:!0,href:ai,ref:et,children:[o.jsx(te,{name:"download"})," ",o.jsx("span",{className:"lbl",children:"Download"})]}),Wa&&o.jsx("button",{id:"more-btn",className:"btn icon-only",title:"More actions","aria-label":"More actions",onClick:k=>{k.stopPropagation(),H(!b)},children:o.jsx(te,{name:"dots"})}),b&&o.jsxs("div",{id:"more-menu",role:"menu",children:[Dt&&o.jsx("button",{className:"more-item",onClick:hl,children:"History"}),Le&&o.jsx("button",{className:"more-item",onClick:ml,children:"Upload"}),Kl&&o.jsx("button",{className:"more-item",onClick:()=>et.current?.click(),children:"Download"}),i.canInsights&&o.jsx("button",{className:"more-item",onClick:()=>ke(wh("insights",y?.id)),children:"Insights"})]})]})});return o.jsxs(o.Fragment,{children:[o.jsx(Wn,{vault:i.sidebar.vault,projectsNav:i.sidebar.projectsNav,orgBar:i.sidebar.orgBar,tree:o.jsx(tp,{root:v,expanded:Ot,onToggle:F,currentPath:B,listingShowing:nt,onOpen:zt}),topbar:Cu,contentClass:Xe,contentRef:ht,onContentScroll:Ht,children:ye}),mt&&o.jsx(yp,{url:mt.url,copied:mt.copied,onClose:()=>gt(null)}),o.jsx(gp,{open:G,onClose:()=>X(!1),candidates:ni})]})}function Dp({config:i}){const c=yf(),f=um(),[r,d]=Q.useState(null),[y,S]=Q.useState(null);Q.useEffect(()=>S(null),[c]);const A=Q.useMemo(()=>{const tt=c.match(/^\/join\/([0-9a-f]+)\/?$/);return tt?tt[1]:null},[c]),{data:v}=R0(!A),{data:m}=U0(!A),N=!!i.auth.admin,{data:j}=im(N),E=Q.useMemo(()=>sm(c,"hub"),[c]),q=Q.useMemo(()=>v&&(v.find(tt=>tt.id===E.project)||r&&v.find(tt=>tt.org===r)||v[0])||null,[v,E.project,r]);if(Q.useEffect(()=>{document.title=q?q.name+" — BearDrive":i.brand||i.volume||"BearDrive"},[q,i]),A)return o.jsx(_p,{token:A,onDone:async tt=>{d(tt),await f(),ke("/",{replace:!0})}});const C=i.brand||i.volume||"BearDrive",w=q&&m?.find(tt=>tt.id===q.org)||null,B=m?.find(tt=>tt.role==="owner")||null,L=w&&w.role==="owner"?w:B,dt=N||(w?w.role==="owner":!1),nt=o.jsx(Nu,{name:v?q?q.name:C:"…",onHome:q?()=>ke("/"+q.id):void 0,showSignout:i.auth.enabled,admin:N?{pending:j?.length||0,onClick:()=>{S({kind:"hub"}),ra()}}:void 0,gear:L?{onClick:()=>{S({kind:"org",orgId:L.id}),ra()}}:void 0});if(!v||!m)return o.jsx(Wn,{vault:nt,topbar:o.jsx(In,{}),children:o.jsx("div",{className:"empty",children:"Loading…"})});if(!q)return o.jsx(Wn,{vault:nt,projectsNav:o.jsx(Yh,{projects:v}),topbar:o.jsx(In,{}),contentClass:"view",children:o.jsx(V0,{authEnabled:i.auth.enabled,onCreate:async tt=>{if(!tt){ot("Give the project a name.",!0);return}try{const F=await $a("/api/projects",{name:tt});await f(),ke("/"+F.project.id),ot(`Created “${F.project.name}”.`)}catch(F){ot("Could not create the project: "+F.message,!0)}}})});const Ot=y?.kind==="org"?m.find(tt=>tt.id===y.orgId):null,Nt=y?.kind==="hub"?{crumb:"Signup & access",body:o.jsx(X0,{})}:Ot?{crumb:Ot.name,body:o.jsx(L0,{org:Ot,projects:v,myEmail:i.me?.email||"",onProjectsChanged:f})}:null;return E.project!==q.id?o.jsx(Q0,{to:"/"+q.id}):o.jsx(mm,{config:i,apiBase:"/api/p/"+q.id+"/",route:E,hub:!0,project:q,projects:v,canInsights:dt,sidebar:{vault:nt,projectsNav:o.jsx(Yh,{projects:v,currentId:q.id}),orgBar:o.jsx(Z0,{org:w,onManage:tt=>{S({kind:"org",orgId:tt.id}),ra()}})},panel:Nt},q.id)}function _p({token:i,onDone:c}){return Q.useEffect(()=>{let f=!1;return $a("/api/invites/"+i).then(r=>{f||(ot(`Welcome — you joined the “${r.org.name}” team. Opening its projects…`),c(r.org.id))}).catch(r=>{f||String(r.message).includes("signing in")||(ot("Could not accept the invite: "+r.message,!0),c(null))}),()=>{f=!0}},[i]),o.jsx(Wn,{vault:o.jsx(Nu,{name:"…",showSignout:!0}),topbar:o.jsx(In,{}),children:o.jsx("div",{className:"empty",children:"Joining…"})})}function Rp({config:i}){const c=yf(),f=i.volume||"BearDrive";Q.useEffect(()=>{document.title=i.brand||f},[i,f]);const r=Q.useMemo(()=>sm(c,"volume"),[c]);return o.jsx(mm,{config:i,apiBase:"/api/",route:r,hub:!1,sidebar:{vault:o.jsx(Nu,{name:f,showSignout:i.auth.enabled})}})}function Up(){const{data:i}=N0();return o.jsxs(o.Fragment,{children:[i?i.mode==="hub"?o.jsx(Dp,{config:i}):o.jsx(Rp,{config:i}):o.jsx(Wn,{vault:o.jsx(Nu,{name:"…",showSignout:!1}),topbar:o.jsx(In,{}),children:o.jsx("div",{className:"empty",children:"Loading…"})}),o.jsx(M0,{}),o.jsx(C0,{})]})}const Hp=new m0({defaultOptions:{queries:{retry:1,refetchOnWindowFocus:!1}}});Lv.createRoot(document.getElementById("root")).render(o.jsx(Q.StrictMode,{children:o.jsx(y0,{client:Hp,children:o.jsx(Up,{})})})); diff --git a/internal/webapp/static/assets/index-D-n_MmWw.js b/internal/webapp/static/assets/index-D-n_MmWw.js deleted file mode 100644 index d04760d..0000000 --- a/internal/webapp/static/assets/index-D-n_MmWw.js +++ /dev/null @@ -1,11 +0,0 @@ -(function(){const c=document.createElement("link").relList;if(c&&c.supports&&c.supports("modulepreload"))return;for(const o of document.querySelectorAll('link[rel="modulepreload"]'))r(o);new MutationObserver(o=>{for(const m of o)if(m.type==="childList")for(const S of m.addedNodes)S.tagName==="LINK"&&S.rel==="modulepreload"&&r(S)}).observe(document,{childList:!0,subtree:!0});function f(o){const m={};return o.integrity&&(m.integrity=o.integrity),o.referrerPolicy&&(m.referrerPolicy=o.referrerPolicy),o.crossOrigin==="use-credentials"?m.credentials="include":o.crossOrigin==="anonymous"?m.credentials="omit":m.credentials="same-origin",m}function r(o){if(o.ep)return;o.ep=!0;const m=f(o);fetch(o.href,m)}})();var Qs={exports:{}},Zn={};var rd;function Mv(){if(rd)return Zn;rd=1;var u=Symbol.for("react.transitional.element"),c=Symbol.for("react.fragment");function f(r,o,m){var S=null;if(m!==void 0&&(S=""+m),o.key!==void 0&&(S=""+o.key),"key"in o){m={};for(var M in o)M!=="key"&&(m[M]=o[M])}else m=o;return o=m.ref,{$$typeof:u,type:r,key:S,ref:o!==void 0?o:null,props:m}}return Zn.Fragment=c,Zn.jsx=f,Zn.jsxs=f,Zn}var od;function Cv(){return od||(od=1,Qs.exports=Mv()),Qs.exports}var d=Cv(),Bs={exports:{}},P={};var hd;function Nv(){if(hd)return P;hd=1;var u=Symbol.for("react.transitional.element"),c=Symbol.for("react.portal"),f=Symbol.for("react.fragment"),r=Symbol.for("react.strict_mode"),o=Symbol.for("react.profiler"),m=Symbol.for("react.consumer"),S=Symbol.for("react.context"),M=Symbol.for("react.forward_ref"),g=Symbol.for("react.suspense"),y=Symbol.for("react.memo"),z=Symbol.for("react.lazy"),x=Symbol.for("react.activity"),j=Symbol.iterator;function H(b){return b===null||typeof b!="object"?null:(b=j&&b[j]||b["@@iterator"],typeof b=="function"?b:null)}var w={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},Q=Object.assign,G={};function L(b,U,Y){this.props=b,this.context=U,this.refs=G,this.updater=Y||w}L.prototype.isReactComponent={},L.prototype.setState=function(b,U){if(typeof b!="object"&&typeof b!="function"&&b!=null)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,b,U,"setState")},L.prototype.forceUpdate=function(b){this.updater.enqueueForceUpdate(this,b,"forceUpdate")};function $(){}$.prototype=L.prototype;function nt(b,U,Y){this.props=b,this.context=U,this.refs=G,this.updater=Y||w}var Nt=nt.prototype=new $;Nt.constructor=nt,Q(Nt,L.prototype),Nt.isPureReactComponent=!0;var Mt=Array.isArray;function Rt(){}var W={H:null,A:null,T:null,S:null},rt=Object.prototype.hasOwnProperty;function Gt(b,U,Y){var X=Y.ref;return{$$typeof:u,type:b,key:U,ref:X!==void 0?X:null,props:Y}}function ae(b,U){return Gt(b.type,U,b.props)}function Vt(b){return typeof b=="object"&&b!==null&&b.$$typeof===u}function Ut(b){var U={"=":"=0",":":"=2"};return"$"+b.replace(/[=:]/g,function(Y){return U[Y]})}var Tt=/\/+/g;function te(b,U){return typeof b=="object"&&b!==null&&b.key!=null?Ut(""+b.key):U.toString(36)}function he(b){switch(b.status){case"fulfilled":return b.value;case"rejected":throw b.reason;default:switch(typeof b.status=="string"?b.then(Rt,Rt):(b.status="pending",b.then(function(U){b.status==="pending"&&(b.status="fulfilled",b.value=U)},function(U){b.status==="pending"&&(b.status="rejected",b.reason=U)})),b.status){case"fulfilled":return b.value;case"rejected":throw b.reason}}throw b}function D(b,U,Y,X,I){var et=typeof b;(et==="undefined"||et==="boolean")&&(b=null);var ht=!1;if(b===null)ht=!0;else switch(et){case"bigint":case"string":case"number":ht=!0;break;case"object":switch(b.$$typeof){case u:case c:ht=!0;break;case z:return ht=b._init,D(ht(b._payload),U,Y,X,I)}}if(ht)return I=I(b),ht=X===""?"."+te(b,0):X,Mt(I)?(Y="",ht!=null&&(Y=ht.replace(Tt,"$&/")+"/"),D(I,U,Y,"",function(hl){return hl})):I!=null&&(Vt(I)&&(I=ae(I,Y+(I.key==null||b&&b.key===I.key?"":(""+I.key).replace(Tt,"$&/")+"/")+ht)),U.push(I)),1;ht=0;var Xt=X===""?".":X+":";if(Mt(b))for(var Ot=0;Ot>>1,vt=D[ot];if(0>>1;oto(Y,J))Xo(I,Y)?(D[ot]=I,D[X]=J,ot=X):(D[ot]=Y,D[U]=J,ot=U);else if(Xo(I,J))D[ot]=I,D[X]=J,ot=X;else break t}}return B}function o(D,B){var J=D.sortIndex-B.sortIndex;return J!==0?J:D.id-B.id}if(u.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var m=performance;u.unstable_now=function(){return m.now()}}else{var S=Date,M=S.now();u.unstable_now=function(){return S.now()-M}}var g=[],y=[],z=1,x=null,j=3,H=!1,w=!1,Q=!1,G=!1,L=typeof setTimeout=="function"?setTimeout:null,$=typeof clearTimeout=="function"?clearTimeout:null,nt=typeof setImmediate<"u"?setImmediate:null;function Nt(D){for(var B=f(y);B!==null;){if(B.callback===null)r(y);else if(B.startTime<=D)r(y),B.sortIndex=B.expirationTime,c(g,B);else break;B=f(y)}}function Mt(D){if(Q=!1,Nt(D),!w)if(f(g)!==null)w=!0,Rt||(Rt=!0,Ut());else{var B=f(y);B!==null&&he(Mt,B.startTime-D)}}var Rt=!1,W=-1,rt=5,Gt=-1;function ae(){return G?!0:!(u.unstable_now()-GtD&&ae());){var ot=x.callback;if(typeof ot=="function"){x.callback=null,j=x.priorityLevel;var vt=ot(x.expirationTime<=D);if(D=u.unstable_now(),typeof vt=="function"){x.callback=vt,Nt(D),B=!0;break e}x===f(g)&&r(g),Nt(D)}else r(g);x=f(g)}if(x!==null)B=!0;else{var b=f(y);b!==null&&he(Mt,b.startTime-D),B=!1}}break t}finally{x=null,j=J,H=!1}B=void 0}}finally{B?Ut():Rt=!1}}}var Ut;if(typeof nt=="function")Ut=function(){nt(Vt)};else if(typeof MessageChannel<"u"){var Tt=new MessageChannel,te=Tt.port2;Tt.port1.onmessage=Vt,Ut=function(){te.postMessage(null)}}else Ut=function(){L(Vt,0)};function he(D,B){W=L(function(){D(u.unstable_now())},B)}u.unstable_IdlePriority=5,u.unstable_ImmediatePriority=1,u.unstable_LowPriority=4,u.unstable_NormalPriority=3,u.unstable_Profiling=null,u.unstable_UserBlockingPriority=2,u.unstable_cancelCallback=function(D){D.callback=null},u.unstable_forceFrameRate=function(D){0>D||125ot?(D.sortIndex=J,c(y,D),f(g)===null&&D===f(y)&&(Q?($(W),W=-1):Q=!0,he(Mt,J-ot))):(D.sortIndex=vt,c(g,D),w||H||(w=!0,Rt||(Rt=!0,Ut()))),D},u.unstable_shouldYield=ae,u.unstable_wrapCallback=function(D){var B=j;return function(){var J=j;j=B;try{return D.apply(this,arguments)}finally{j=J}}}})(Ls)),Ls}var yd;function _v(){return yd||(yd=1,Gs.exports=Dv()),Gs.exports}var Xs={exports:{}},ee={};var vd;function Rv(){if(vd)return ee;vd=1;var u=tf();function c(g){var y="https://react.dev/errors/"+g;if(1"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(u)}catch(c){console.error(c)}}return u(),Xs.exports=Rv(),Xs.exports}var pd;function Hv(){if(pd)return Vn;pd=1;var u=_v(),c=tf(),f=Uv();function r(t){var e="https://react.dev/errors/"+t;if(1vt||(t.current=ot[vt],ot[vt]=null,vt--)}function Y(t,e){vt++,ot[vt]=t.current,t.current=e}var X=b(null),I=b(null),et=b(null),ht=b(null);function Xt(t,e){switch(Y(et,e),Y(I,t),Y(X,null),e.nodeType){case 9:case 11:t=(t=e.documentElement)&&(t=t.namespaceURI)?Rh(t):0;break;default:if(t=e.tagName,e=e.namespaceURI)e=Rh(e),t=Uh(e,t);else switch(t){case"svg":t=1;break;case"math":t=2;break;default:t=0}}U(X),Y(X,t)}function Ot(){U(X),U(I),U(et)}function hl(t){t.memoizedState!==null&&Y(ht,t);var e=X.current,l=Uh(e,t.type);e!==l&&(Y(I,t),Y(X,l))}function ia(t){I.current===t&&(U(X),U(I)),ht.current===t&&(U(ht),Gn._currentValue=J)}var Fa,ca;function je(t){if(Fa===void 0)try{throw Error()}catch(l){var e=l.stack.trim().match(/\n( *(at )?)/);Fa=e&&e[1]||"",ca=-1)":-1n||v[a]!==O[n]){var N=` -`+v[a].replace(" at new "," at ");return t.displayName&&N.includes("")&&(N=N.replace("",t.displayName)),N}while(1<=a&&0<=n);break}}}finally{dl=!1,Error.prepareStackTrace=l}return(l=t?t.displayName||t.name:"")?je(l):""}function Ti(t,e){switch(t.tag){case 26:case 27:case 5:return je(t.type);case 16:return je("Lazy");case 13:return t.child!==e&&e!==null?je("Suspense Fallback"):je("Suspense");case 19:return je("SuspenseList");case 0:case 15:return $a(t.type,!1);case 11:return $a(t.type.render,!1);case 1:return $a(t.type,!0);case 31:return je("Activity");default:return""}}function Yl(t){try{var e="",l=null;do e+=Ti(t,l),l=t,t=t.return;while(t);return e}catch(a){return` -Error generating stack: `+a.message+` -`+a.stack}}var Je=Object.prototype.hasOwnProperty,Te=u.unstable_scheduleCallback,Wa=u.unstable_cancelCallback,Oi=u.unstable_shouldYield,at=u.unstable_requestPaint,F=u.unstable_now,gt=u.unstable_getCurrentPriorityLevel,qe=u.unstable_ImmediatePriority,sa=u.unstable_UserBlockingPriority,fa=u.unstable_NormalPriority,fm=u.unstable_LowPriority,hf=u.unstable_IdlePriority,rm=u.log,om=u.unstable_setDisableYieldValue,Ia=null,de=null;function ml(t){if(typeof rm=="function"&&om(t),de&&typeof de.setStrictMode=="function")try{de.setStrictMode(Ia,t)}catch{}}var me=Math.clz32?Math.clz32:mm,hm=Math.log,dm=Math.LN2;function mm(t){return t>>>=0,t===0?32:31-(hm(t)/dm|0)|0}var eu=256,lu=262144,au=4194304;function Gl(t){var e=t&42;if(e!==0)return e;switch(t&-t){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return t&261888;case 262144:case 524288:case 1048576:case 2097152:return t&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return t&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return t}}function nu(t,e,l){var a=t.pendingLanes;if(a===0)return 0;var n=0,i=t.suspendedLanes,s=t.pingedLanes;t=t.warmLanes;var h=a&134217727;return h!==0?(a=h&~i,a!==0?n=Gl(a):(s&=h,s!==0?n=Gl(s):l||(l=h&~t,l!==0&&(n=Gl(l))))):(h=a&~i,h!==0?n=Gl(h):s!==0?n=Gl(s):l||(l=a&~t,l!==0&&(n=Gl(l)))),n===0?0:e!==0&&e!==n&&(e&i)===0&&(i=n&-n,l=e&-e,i>=l||i===32&&(l&4194048)!==0)?e:n}function Pa(t,e){return(t.pendingLanes&~(t.suspendedLanes&~t.pingedLanes)&e)===0}function ym(t,e){switch(t){case 1:case 2:case 4:case 8:case 64:return e+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return e+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function df(){var t=au;return au<<=1,(au&62914560)===0&&(au=4194304),t}function Ai(t){for(var e=[],l=0;31>l;l++)e.push(t);return e}function tn(t,e){t.pendingLanes|=e,e!==268435456&&(t.suspendedLanes=0,t.pingedLanes=0,t.warmLanes=0)}function vm(t,e,l,a,n,i){var s=t.pendingLanes;t.pendingLanes=l,t.suspendedLanes=0,t.pingedLanes=0,t.warmLanes=0,t.expiredLanes&=l,t.entangledLanes&=l,t.errorRecoveryDisabledLanes&=l,t.shellSuspendCounter=0;var h=t.entanglements,v=t.expirationTimes,O=t.hiddenUpdates;for(l=s&~l;0"u")return null;try{return t.activeElement||t.body}catch{return t.body}}var Em=/[\n"\\]/g;function Ae(t){return t.replace(Em,function(e){return"\\"+e.charCodeAt(0).toString(16)+" "})}function _i(t,e,l,a,n,i,s,h){t.name="",s!=null&&typeof s!="function"&&typeof s!="symbol"&&typeof s!="boolean"?t.type=s:t.removeAttribute("type"),e!=null?s==="number"?(e===0&&t.value===""||t.value!=e)&&(t.value=""+Oe(e)):t.value!==""+Oe(e)&&(t.value=""+Oe(e)):s!=="submit"&&s!=="reset"||t.removeAttribute("value"),e!=null?Ri(t,s,Oe(e)):l!=null?Ri(t,s,Oe(l)):a!=null&&t.removeAttribute("value"),n==null&&i!=null&&(t.defaultChecked=!!i),n!=null&&(t.checked=n&&typeof n!="function"&&typeof n!="symbol"),h!=null&&typeof h!="function"&&typeof h!="symbol"&&typeof h!="boolean"?t.name=""+Oe(h):t.removeAttribute("name")}function Af(t,e,l,a,n,i,s,h){if(i!=null&&typeof i!="function"&&typeof i!="symbol"&&typeof i!="boolean"&&(t.type=i),e!=null||l!=null){if(!(i!=="submit"&&i!=="reset"||e!=null)){Di(t);return}l=l!=null?""+Oe(l):"",e=e!=null?""+Oe(e):l,h||e===t.value||(t.value=e),t.defaultValue=e}a=a??n,a=typeof a!="function"&&typeof a!="symbol"&&!!a,t.checked=h?t.checked:!!a,t.defaultChecked=!!a,s!=null&&typeof s!="function"&&typeof s!="symbol"&&typeof s!="boolean"&&(t.name=s),Di(t)}function Ri(t,e,l){e==="number"&&cu(t.ownerDocument)===t||t.defaultValue===""+l||(t.defaultValue=""+l)}function ya(t,e,l,a){if(t=t.options,e){e={};for(var n=0;n"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),Qi=!1;if($e)try{var nn={};Object.defineProperty(nn,"passive",{get:function(){Qi=!0}}),window.addEventListener("test",nn,nn),window.removeEventListener("test",nn,nn)}catch{Qi=!1}var vl=null,Bi=null,fu=null;function Rf(){if(fu)return fu;var t,e=Bi,l=e.length,a,n="value"in vl?vl.value:vl.textContent,i=n.length;for(t=0;t=sn),Bf=" ",Yf=!1;function Gf(t,e){switch(t){case"keyup":return $m.indexOf(e.keyCode)!==-1;case"keydown":return e.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Lf(t){return t=t.detail,typeof t=="object"&&"data"in t?t.data:null}var ba=!1;function Im(t,e){switch(t){case"compositionend":return Lf(e);case"keypress":return e.which!==32?null:(Yf=!0,Bf);case"textInput":return t=e.data,t===Bf&&Yf?null:t;default:return null}}function Pm(t,e){if(ba)return t==="compositionend"||!Ki&&Gf(t,e)?(t=Rf(),fu=Bi=vl=null,ba=!1,t):null;switch(t){case"paste":return null;case"keypress":if(!(e.ctrlKey||e.altKey||e.metaKey)||e.ctrlKey&&e.altKey){if(e.char&&1=e)return{node:l,offset:e-t};t=a}t:{for(;l;){if(l.nextSibling){l=l.nextSibling;break t}l=l.parentNode}l=void 0}l=$f(l)}}function If(t,e){return t&&e?t===e?!0:t&&t.nodeType===3?!1:e&&e.nodeType===3?If(t,e.parentNode):"contains"in t?t.contains(e):t.compareDocumentPosition?!!(t.compareDocumentPosition(e)&16):!1:!1}function Pf(t){t=t!=null&&t.ownerDocument!=null&&t.ownerDocument.defaultView!=null?t.ownerDocument.defaultView:window;for(var e=cu(t.document);e instanceof t.HTMLIFrameElement;){try{var l=typeof e.contentWindow.location.href=="string"}catch{l=!1}if(l)t=e.contentWindow;else break;e=cu(t.document)}return e}function Ji(t){var e=t&&t.nodeName&&t.nodeName.toLowerCase();return e&&(e==="input"&&(t.type==="text"||t.type==="search"||t.type==="tel"||t.type==="url"||t.type==="password")||e==="textarea"||t.contentEditable==="true")}var cy=$e&&"documentMode"in document&&11>=document.documentMode,Sa=null,ki=null,hn=null,Fi=!1;function tr(t,e,l){var a=l.window===l?l.document:l.nodeType===9?l:l.ownerDocument;Fi||Sa==null||Sa!==cu(a)||(a=Sa,"selectionStart"in a&&Ji(a)?a={start:a.selectionStart,end:a.selectionEnd}:(a=(a.ownerDocument&&a.ownerDocument.defaultView||window).getSelection(),a={anchorNode:a.anchorNode,anchorOffset:a.anchorOffset,focusNode:a.focusNode,focusOffset:a.focusOffset}),hn&&on(hn,a)||(hn=a,a=li(ki,"onSelect"),0>=s,n-=s,Ge=1<<32-me(e)+n|l<lt?(st=Z,Z=null):st=Z.sibling;var mt=A(E,Z,T[lt],_);if(mt===null){Z===null&&(Z=st);break}t&&Z&&mt.alternate===null&&e(E,Z),p=i(mt,p,lt),dt===null?V=mt:dt.sibling=mt,dt=mt,Z=st}if(lt===T.length)return l(E,Z),ft&&Ie(E,lt),V;if(Z===null){for(;ltlt?(st=Z,Z=null):st=Z.sibling;var Ql=A(E,Z,mt.value,_);if(Ql===null){Z===null&&(Z=st);break}t&&Z&&Ql.alternate===null&&e(E,Z),p=i(Ql,p,lt),dt===null?V=Ql:dt.sibling=Ql,dt=Ql,Z=st}if(mt.done)return l(E,Z),ft&&Ie(E,lt),V;if(Z===null){for(;!mt.done;lt++,mt=T.next())mt=R(E,mt.value,_),mt!==null&&(p=i(mt,p,lt),dt===null?V=mt:dt.sibling=mt,dt=mt);return ft&&Ie(E,lt),V}for(Z=a(Z);!mt.done;lt++,mt=T.next())mt=C(Z,E,lt,mt.value,_),mt!==null&&(t&&mt.alternate!==null&&Z.delete(mt.key===null?lt:mt.key),p=i(mt,p,lt),dt===null?V=mt:dt.sibling=mt,dt=mt);return t&&Z.forEach(function(zv){return e(E,zv)}),ft&&Ie(E,lt),V}function Et(E,p,T,_){if(typeof T=="object"&&T!==null&&T.type===Q&&T.key===null&&(T=T.props.children),typeof T=="object"&&T!==null){switch(T.$$typeof){case H:t:{for(var V=T.key;p!==null;){if(p.key===V){if(V=T.type,V===Q){if(p.tag===7){l(E,p.sibling),_=n(p,T.props.children),_.return=E,E=_;break t}}else if(p.elementType===V||typeof V=="object"&&V!==null&&V.$$typeof===rt&&Il(V)===p.type){l(E,p.sibling),_=n(p,T.props),pn(_,T),_.return=E,E=_;break t}l(E,p);break}else e(E,p);p=p.sibling}T.type===Q?(_=Jl(T.props.children,E.mode,_,T.key),_.return=E,E=_):(_=bu(T.type,T.key,T.props,null,E.mode,_),pn(_,T),_.return=E,E=_)}return s(E);case w:t:{for(V=T.key;p!==null;){if(p.key===V)if(p.tag===4&&p.stateNode.containerInfo===T.containerInfo&&p.stateNode.implementation===T.implementation){l(E,p.sibling),_=n(p,T.children||[]),_.return=E,E=_;break t}else{l(E,p);break}else e(E,p);p=p.sibling}_=lc(T,E.mode,_),_.return=E,E=_}return s(E);case rt:return T=Il(T),Et(E,p,T,_)}if(he(T))return K(E,p,T,_);if(Ut(T)){if(V=Ut(T),typeof V!="function")throw Error(r(150));return T=V.call(T),k(E,p,T,_)}if(typeof T.then=="function")return Et(E,p,Au(T),_);if(T.$$typeof===nt)return Et(E,p,Eu(E,T),_);zu(E,T)}return typeof T=="string"&&T!==""||typeof T=="number"||typeof T=="bigint"?(T=""+T,p!==null&&p.tag===6?(l(E,p.sibling),_=n(p,T),_.return=E,E=_):(l(E,p),_=ec(T,E.mode,_),_.return=E,E=_),s(E)):l(E,p)}return function(E,p,T,_){try{gn=0;var V=Et(E,p,T,_);return Da=null,V}catch(Z){if(Z===Na||Z===Tu)throw Z;var dt=ve(29,Z,null,E.mode);return dt.lanes=_,dt.return=E,dt}}}var ta=jr(!0),Tr=jr(!1),xl=!1;function mc(t){t.updateQueue={baseState:t.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function yc(t,e){t=t.updateQueue,e.updateQueue===t&&(e.updateQueue={baseState:t.baseState,firstBaseUpdate:t.firstBaseUpdate,lastBaseUpdate:t.lastBaseUpdate,shared:t.shared,callbacks:null})}function El(t){return{lane:t,tag:0,payload:null,callback:null,next:null}}function jl(t,e,l){var a=t.updateQueue;if(a===null)return null;if(a=a.shared,(yt&2)!==0){var n=a.pending;return n===null?e.next=e:(e.next=n.next,n.next=e),a.pending=e,e=pu(t),cr(t,null,l),e}return gu(t,a,e,l),pu(t)}function bn(t,e,l){if(e=e.updateQueue,e!==null&&(e=e.shared,(l&4194048)!==0)){var a=e.lanes;a&=t.pendingLanes,l|=a,e.lanes=l,yf(t,l)}}function vc(t,e){var l=t.updateQueue,a=t.alternate;if(a!==null&&(a=a.updateQueue,l===a)){var n=null,i=null;if(l=l.firstBaseUpdate,l!==null){do{var s={lane:l.lane,tag:l.tag,payload:l.payload,callback:null,next:null};i===null?n=i=s:i=i.next=s,l=l.next}while(l!==null);i===null?n=i=e:i=i.next=e}else n=i=e;l={baseState:a.baseState,firstBaseUpdate:n,lastBaseUpdate:i,shared:a.shared,callbacks:a.callbacks},t.updateQueue=l;return}t=l.lastBaseUpdate,t===null?l.firstBaseUpdate=e:t.next=e,l.lastBaseUpdate=e}var gc=!1;function Sn(){if(gc){var t=Ca;if(t!==null)throw t}}function xn(t,e,l,a){gc=!1;var n=t.updateQueue;xl=!1;var i=n.firstBaseUpdate,s=n.lastBaseUpdate,h=n.shared.pending;if(h!==null){n.shared.pending=null;var v=h,O=v.next;v.next=null,s===null?i=O:s.next=O,s=v;var N=t.alternate;N!==null&&(N=N.updateQueue,h=N.lastBaseUpdate,h!==s&&(h===null?N.firstBaseUpdate=O:h.next=O,N.lastBaseUpdate=v))}if(i!==null){var R=n.baseState;s=0,N=O=v=null,h=i;do{var A=h.lane&-536870913,C=A!==h.lane;if(C?(ct&A)===A:(a&A)===A){A!==0&&A===Ma&&(gc=!0),N!==null&&(N=N.next={lane:0,tag:h.tag,payload:h.payload,callback:null,next:null});t:{var K=t,k=h;A=e;var Et=l;switch(k.tag){case 1:if(K=k.payload,typeof K=="function"){R=K.call(Et,R,A);break t}R=K;break t;case 3:K.flags=K.flags&-65537|128;case 0:if(K=k.payload,A=typeof K=="function"?K.call(Et,R,A):K,A==null)break t;R=x({},R,A);break t;case 2:xl=!0}}A=h.callback,A!==null&&(t.flags|=64,C&&(t.flags|=8192),C=n.callbacks,C===null?n.callbacks=[A]:C.push(A))}else C={lane:A,tag:h.tag,payload:h.payload,callback:h.callback,next:null},N===null?(O=N=C,v=R):N=N.next=C,s|=A;if(h=h.next,h===null){if(h=n.shared.pending,h===null)break;C=h,h=C.next,C.next=null,n.lastBaseUpdate=C,n.shared.pending=null}}while(!0);N===null&&(v=R),n.baseState=v,n.firstBaseUpdate=O,n.lastBaseUpdate=N,i===null&&(n.shared.lanes=0),Ml|=s,t.lanes=s,t.memoizedState=R}}function Or(t,e){if(typeof t!="function")throw Error(r(191,t));t.call(e)}function Ar(t,e){var l=t.callbacks;if(l!==null)for(t.callbacks=null,t=0;ti?i:8;var s=D.T,h={};D.T=h,qc(t,!1,e,l);try{var v=n(),O=D.S;if(O!==null&&O(h,v),v!==null&&typeof v=="object"&&typeof v.then=="function"){var N=vy(v,a);Tn(t,e,N,xe(t))}else Tn(t,e,a,xe(t))}catch(R){Tn(t,e,{then:function(){},status:"rejected",reason:R},xe())}finally{B.p=i,s!==null&&h.types!==null&&(s.types=h.types),D.T=s}}function Ey(){}function Uc(t,e,l,a){if(t.tag!==5)throw Error(r(476));var n=no(t).queue;ao(t,n,e,J,l===null?Ey:function(){return uo(t),l(a)})}function no(t){var e=t.memoizedState;if(e!==null)return e;e={memoizedState:J,baseState:J,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:ll,lastRenderedState:J},next:null};var l={};return e.next={memoizedState:l,baseState:l,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:ll,lastRenderedState:l},next:null},t.memoizedState=e,t=t.alternate,t!==null&&(t.memoizedState=e),e}function uo(t){var e=no(t);e.next===null&&(e=t.alternate.memoizedState),Tn(t,e.next.queue,{},xe())}function Hc(){return Ft(Gn)}function io(){return qt().memoizedState}function co(){return qt().memoizedState}function jy(t){for(var e=t.return;e!==null;){switch(e.tag){case 24:case 3:var l=xe();t=El(l);var a=jl(e,t,l);a!==null&&(re(a,e,l),bn(a,e,l)),e={cache:rc()},t.payload=e;return}e=e.return}}function Ty(t,e,l){var a=xe();l={lane:a,revertLane:0,gesture:null,action:l,hasEagerState:!1,eagerState:null,next:null},wu(t)?fo(e,l):(l=Pi(t,e,l,a),l!==null&&(re(l,t,a),ro(l,e,a)))}function so(t,e,l){var a=xe();Tn(t,e,l,a)}function Tn(t,e,l,a){var n={lane:a,revertLane:0,gesture:null,action:l,hasEagerState:!1,eagerState:null,next:null};if(wu(t))fo(e,n);else{var i=t.alternate;if(t.lanes===0&&(i===null||i.lanes===0)&&(i=e.lastRenderedReducer,i!==null))try{var s=e.lastRenderedState,h=i(s,l);if(n.hasEagerState=!0,n.eagerState=h,ye(h,s))return gu(t,e,n,0),jt===null&&vu(),!1}catch{}if(l=Pi(t,e,n,a),l!==null)return re(l,t,a),ro(l,e,a),!0}return!1}function qc(t,e,l,a){if(a={lane:2,revertLane:ms(),gesture:null,action:a,hasEagerState:!1,eagerState:null,next:null},wu(t)){if(e)throw Error(r(479))}else e=Pi(t,l,a,2),e!==null&&re(e,t,2)}function wu(t){var e=t.alternate;return t===tt||e!==null&&e===tt}function fo(t,e){Ra=Nu=!0;var l=t.pending;l===null?e.next=e:(e.next=l.next,l.next=e),t.pending=e}function ro(t,e,l){if((l&4194048)!==0){var a=e.lanes;a&=t.pendingLanes,l|=a,e.lanes=l,yf(t,l)}}var On={readContext:Ft,use:Ru,useCallback:Dt,useContext:Dt,useEffect:Dt,useImperativeHandle:Dt,useLayoutEffect:Dt,useInsertionEffect:Dt,useMemo:Dt,useReducer:Dt,useRef:Dt,useState:Dt,useDebugValue:Dt,useDeferredValue:Dt,useTransition:Dt,useSyncExternalStore:Dt,useId:Dt,useHostTransitionStatus:Dt,useFormState:Dt,useActionState:Dt,useOptimistic:Dt,useMemoCache:Dt,useCacheRefresh:Dt};On.useEffectEvent=Dt;var oo={readContext:Ft,use:Ru,useCallback:function(t,e){return le().memoizedState=[t,e===void 0?null:e],t},useContext:Ft,useEffect:kr,useImperativeHandle:function(t,e,l){l=l!=null?l.concat([t]):null,Hu(4194308,4,Ir.bind(null,e,t),l)},useLayoutEffect:function(t,e){return Hu(4194308,4,t,e)},useInsertionEffect:function(t,e){Hu(4,2,t,e)},useMemo:function(t,e){var l=le();e=e===void 0?null:e;var a=t();if(ea){ml(!0);try{t()}finally{ml(!1)}}return l.memoizedState=[a,e],a},useReducer:function(t,e,l){var a=le();if(l!==void 0){var n=l(e);if(ea){ml(!0);try{l(e)}finally{ml(!1)}}}else n=e;return a.memoizedState=a.baseState=n,t={pending:null,lanes:0,dispatch:null,lastRenderedReducer:t,lastRenderedState:n},a.queue=t,t=t.dispatch=Ty.bind(null,tt,t),[a.memoizedState,t]},useRef:function(t){var e=le();return t={current:t},e.memoizedState=t},useState:function(t){t=Cc(t);var e=t.queue,l=so.bind(null,tt,e);return e.dispatch=l,[t.memoizedState,l]},useDebugValue:_c,useDeferredValue:function(t,e){var l=le();return Rc(l,t,e)},useTransition:function(){var t=Cc(!1);return t=ao.bind(null,tt,t.queue,!0,!1),le().memoizedState=t,[!1,t]},useSyncExternalStore:function(t,e,l){var a=tt,n=le();if(ft){if(l===void 0)throw Error(r(407));l=l()}else{if(l=e(),jt===null)throw Error(r(349));(ct&127)!==0||_r(a,e,l)}n.memoizedState=l;var i={value:l,getSnapshot:e};return n.queue=i,kr(Ur.bind(null,a,i,t),[t]),a.flags|=2048,Ha(9,{destroy:void 0},Rr.bind(null,a,i,l,e),null),l},useId:function(){var t=le(),e=jt.identifierPrefix;if(ft){var l=Le,a=Ge;l=(a&~(1<<32-me(a)-1)).toString(32)+l,e="_"+e+"R_"+l,l=Du++,0<\/script>",i=i.removeChild(i.firstChild);break;case"select":i=typeof a.is=="string"?s.createElement("select",{is:a.is}):s.createElement("select"),a.multiple?i.multiple=!0:a.size&&(i.size=a.size);break;default:i=typeof a.is=="string"?s.createElement(n,{is:a.is}):s.createElement(n)}}i[Jt]=e,i[ne]=a;t:for(s=e.child;s!==null;){if(s.tag===5||s.tag===6)i.appendChild(s.stateNode);else if(s.tag!==4&&s.tag!==27&&s.child!==null){s.child.return=s,s=s.child;continue}if(s===e)break t;for(;s.sibling===null;){if(s.return===null||s.return===e)break t;s=s.return}s.sibling.return=s.return,s=s.sibling}e.stateNode=i;t:switch(Wt(i,n,a),n){case"button":case"input":case"select":case"textarea":a=!!a.autoFocus;break t;case"img":a=!0;break t;default:a=!1}a&&nl(e)}}return zt(e),$c(e,e.type,t===null?null:t.memoizedProps,e.pendingProps,l),null;case 6:if(t&&e.stateNode!=null)t.memoizedProps!==a&&nl(e);else{if(typeof a!="string"&&e.stateNode===null)throw Error(r(166));if(t=et.current,Aa(e)){if(t=e.stateNode,l=e.memoizedProps,a=null,n=kt,n!==null)switch(n.tag){case 27:case 5:a=n.memoizedProps}t[Jt]=e,t=!!(t.nodeValue===l||a!==null&&a.suppressHydrationWarning===!0||Dh(t.nodeValue,l)),t||bl(e,!0)}else t=ai(t).createTextNode(a),t[Jt]=e,e.stateNode=t}return zt(e),null;case 31:if(l=e.memoizedState,t===null||t.memoizedState!==null){if(a=Aa(e),l!==null){if(t===null){if(!a)throw Error(r(318));if(t=e.memoizedState,t=t!==null?t.dehydrated:null,!t)throw Error(r(557));t[Jt]=e}else kl(),(e.flags&128)===0&&(e.memoizedState=null),e.flags|=4;zt(e),t=!1}else l=ic(),t!==null&&t.memoizedState!==null&&(t.memoizedState.hydrationErrors=l),t=!0;if(!t)return e.flags&256?(pe(e),e):(pe(e),null);if((e.flags&128)!==0)throw Error(r(558))}return zt(e),null;case 13:if(a=e.memoizedState,t===null||t.memoizedState!==null&&t.memoizedState.dehydrated!==null){if(n=Aa(e),a!==null&&a.dehydrated!==null){if(t===null){if(!n)throw Error(r(318));if(n=e.memoizedState,n=n!==null?n.dehydrated:null,!n)throw Error(r(317));n[Jt]=e}else kl(),(e.flags&128)===0&&(e.memoizedState=null),e.flags|=4;zt(e),n=!1}else n=ic(),t!==null&&t.memoizedState!==null&&(t.memoizedState.hydrationErrors=n),n=!0;if(!n)return e.flags&256?(pe(e),e):(pe(e),null)}return pe(e),(e.flags&128)!==0?(e.lanes=l,e):(l=a!==null,t=t!==null&&t.memoizedState!==null,l&&(a=e.child,n=null,a.alternate!==null&&a.alternate.memoizedState!==null&&a.alternate.memoizedState.cachePool!==null&&(n=a.alternate.memoizedState.cachePool.pool),i=null,a.memoizedState!==null&&a.memoizedState.cachePool!==null&&(i=a.memoizedState.cachePool.pool),i!==n&&(a.flags|=2048)),l!==t&&l&&(e.child.flags|=8192),Lu(e,e.updateQueue),zt(e),null);case 4:return Ot(),t===null&&ps(e.stateNode.containerInfo),zt(e),null;case 10:return tl(e.type),zt(e),null;case 19:if(U(Ht),a=e.memoizedState,a===null)return zt(e),null;if(n=(e.flags&128)!==0,i=a.rendering,i===null)if(n)zn(a,!1);else{if(_t!==0||t!==null&&(t.flags&128)!==0)for(t=e.child;t!==null;){if(i=Cu(t),i!==null){for(e.flags|=128,zn(a,!1),t=i.updateQueue,e.updateQueue=t,Lu(e,t),e.subtreeFlags=0,t=l,l=e.child;l!==null;)sr(l,t),l=l.sibling;return Y(Ht,Ht.current&1|2),ft&&Ie(e,a.treeForkCount),e.child}t=t.sibling}a.tail!==null&&F()>Ju&&(e.flags|=128,n=!0,zn(a,!1),e.lanes=4194304)}else{if(!n)if(t=Cu(i),t!==null){if(e.flags|=128,n=!0,t=t.updateQueue,e.updateQueue=t,Lu(e,t),zn(a,!0),a.tail===null&&a.tailMode==="hidden"&&!i.alternate&&!ft)return zt(e),null}else 2*F()-a.renderingStartTime>Ju&&l!==536870912&&(e.flags|=128,n=!0,zn(a,!1),e.lanes=4194304);a.isBackwards?(i.sibling=e.child,e.child=i):(t=a.last,t!==null?t.sibling=i:e.child=i,a.last=i)}return a.tail!==null?(t=a.tail,a.rendering=t,a.tail=t.sibling,a.renderingStartTime=F(),t.sibling=null,l=Ht.current,Y(Ht,n?l&1|2:l&1),ft&&Ie(e,a.treeForkCount),t):(zt(e),null);case 22:case 23:return pe(e),bc(),a=e.memoizedState!==null,t!==null?t.memoizedState!==null!==a&&(e.flags|=8192):a&&(e.flags|=8192),a?(l&536870912)!==0&&(e.flags&128)===0&&(zt(e),e.subtreeFlags&6&&(e.flags|=8192)):zt(e),l=e.updateQueue,l!==null&&Lu(e,l.retryQueue),l=null,t!==null&&t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(l=t.memoizedState.cachePool.pool),a=null,e.memoizedState!==null&&e.memoizedState.cachePool!==null&&(a=e.memoizedState.cachePool.pool),a!==l&&(e.flags|=2048),t!==null&&U(Wl),null;case 24:return l=null,t!==null&&(l=t.memoizedState.cache),e.memoizedState.cache!==l&&(e.flags|=2048),tl(wt),zt(e),null;case 25:return null;case 30:return null}throw Error(r(156,e.tag))}function Cy(t,e){switch(nc(e),e.tag){case 1:return t=e.flags,t&65536?(e.flags=t&-65537|128,e):null;case 3:return tl(wt),Ot(),t=e.flags,(t&65536)!==0&&(t&128)===0?(e.flags=t&-65537|128,e):null;case 26:case 27:case 5:return ia(e),null;case 31:if(e.memoizedState!==null){if(pe(e),e.alternate===null)throw Error(r(340));kl()}return t=e.flags,t&65536?(e.flags=t&-65537|128,e):null;case 13:if(pe(e),t=e.memoizedState,t!==null&&t.dehydrated!==null){if(e.alternate===null)throw Error(r(340));kl()}return t=e.flags,t&65536?(e.flags=t&-65537|128,e):null;case 19:return U(Ht),null;case 4:return Ot(),null;case 10:return tl(e.type),null;case 22:case 23:return pe(e),bc(),t!==null&&U(Wl),t=e.flags,t&65536?(e.flags=t&-65537|128,e):null;case 24:return tl(wt),null;case 25:return null;default:return null}}function qo(t,e){switch(nc(e),e.tag){case 3:tl(wt),Ot();break;case 26:case 27:case 5:ia(e);break;case 4:Ot();break;case 31:e.memoizedState!==null&&pe(e);break;case 13:pe(e);break;case 19:U(Ht);break;case 10:tl(e.type);break;case 22:case 23:pe(e),bc(),t!==null&&U(Wl);break;case 24:tl(wt)}}function Mn(t,e){try{var l=e.updateQueue,a=l!==null?l.lastEffect:null;if(a!==null){var n=a.next;l=n;do{if((l.tag&t)===t){a=void 0;var i=l.create,s=l.inst;a=i(),s.destroy=a}l=l.next}while(l!==n)}}catch(h){bt(e,e.return,h)}}function Al(t,e,l){try{var a=e.updateQueue,n=a!==null?a.lastEffect:null;if(n!==null){var i=n.next;a=i;do{if((a.tag&t)===t){var s=a.inst,h=s.destroy;if(h!==void 0){s.destroy=void 0,n=e;var v=l,O=h;try{O()}catch(N){bt(n,v,N)}}}a=a.next}while(a!==i)}}catch(N){bt(e,e.return,N)}}function wo(t){var e=t.updateQueue;if(e!==null){var l=t.stateNode;try{Ar(e,l)}catch(a){bt(t,t.return,a)}}}function Qo(t,e,l){l.props=la(t.type,t.memoizedProps),l.state=t.memoizedState;try{l.componentWillUnmount()}catch(a){bt(t,e,a)}}function Cn(t,e){try{var l=t.ref;if(l!==null){switch(t.tag){case 26:case 27:case 5:var a=t.stateNode;break;case 30:a=t.stateNode;break;default:a=t.stateNode}typeof l=="function"?t.refCleanup=l(a):l.current=a}}catch(n){bt(t,e,n)}}function Xe(t,e){var l=t.ref,a=t.refCleanup;if(l!==null)if(typeof a=="function")try{a()}catch(n){bt(t,e,n)}finally{t.refCleanup=null,t=t.alternate,t!=null&&(t.refCleanup=null)}else if(typeof l=="function")try{l(null)}catch(n){bt(t,e,n)}else l.current=null}function Bo(t){var e=t.type,l=t.memoizedProps,a=t.stateNode;try{t:switch(e){case"button":case"input":case"select":case"textarea":l.autoFocus&&a.focus();break t;case"img":l.src?a.src=l.src:l.srcSet&&(a.srcset=l.srcSet)}}catch(n){bt(t,t.return,n)}}function Wc(t,e,l){try{var a=t.stateNode;Wy(a,t.type,l,e),a[ne]=e}catch(n){bt(t,t.return,n)}}function Yo(t){return t.tag===5||t.tag===3||t.tag===26||t.tag===27&&Rl(t.type)||t.tag===4}function Ic(t){t:for(;;){for(;t.sibling===null;){if(t.return===null||Yo(t.return))return null;t=t.return}for(t.sibling.return=t.return,t=t.sibling;t.tag!==5&&t.tag!==6&&t.tag!==18;){if(t.tag===27&&Rl(t.type)||t.flags&2||t.child===null||t.tag===4)continue t;t.child.return=t,t=t.child}if(!(t.flags&2))return t.stateNode}}function Pc(t,e,l){var a=t.tag;if(a===5||a===6)t=t.stateNode,e?(l.nodeType===9?l.body:l.nodeName==="HTML"?l.ownerDocument.body:l).insertBefore(t,e):(e=l.nodeType===9?l.body:l.nodeName==="HTML"?l.ownerDocument.body:l,e.appendChild(t),l=l._reactRootContainer,l!=null||e.onclick!==null||(e.onclick=Fe));else if(a!==4&&(a===27&&Rl(t.type)&&(l=t.stateNode,e=null),t=t.child,t!==null))for(Pc(t,e,l),t=t.sibling;t!==null;)Pc(t,e,l),t=t.sibling}function Xu(t,e,l){var a=t.tag;if(a===5||a===6)t=t.stateNode,e?l.insertBefore(t,e):l.appendChild(t);else if(a!==4&&(a===27&&Rl(t.type)&&(l=t.stateNode),t=t.child,t!==null))for(Xu(t,e,l),t=t.sibling;t!==null;)Xu(t,e,l),t=t.sibling}function Go(t){var e=t.stateNode,l=t.memoizedProps;try{for(var a=t.type,n=e.attributes;n.length;)e.removeAttributeNode(n[0]);Wt(e,a,l),e[Jt]=t,e[ne]=l}catch(i){bt(t,t.return,i)}}var ul=!1,Yt=!1,ts=!1,Lo=typeof WeakSet=="function"?WeakSet:Set,Zt=null;function Ny(t,e){if(t=t.containerInfo,xs=ri,t=Pf(t),Ji(t)){if("selectionStart"in t)var l={start:t.selectionStart,end:t.selectionEnd};else t:{l=(l=t.ownerDocument)&&l.defaultView||window;var a=l.getSelection&&l.getSelection();if(a&&a.rangeCount!==0){l=a.anchorNode;var n=a.anchorOffset,i=a.focusNode;a=a.focusOffset;try{l.nodeType,i.nodeType}catch{l=null;break t}var s=0,h=-1,v=-1,O=0,N=0,R=t,A=null;e:for(;;){for(var C;R!==l||n!==0&&R.nodeType!==3||(h=s+n),R!==i||a!==0&&R.nodeType!==3||(v=s+a),R.nodeType===3&&(s+=R.nodeValue.length),(C=R.firstChild)!==null;)A=R,R=C;for(;;){if(R===t)break e;if(A===l&&++O===n&&(h=s),A===i&&++N===a&&(v=s),(C=R.nextSibling)!==null)break;R=A,A=R.parentNode}R=C}l=h===-1||v===-1?null:{start:h,end:v}}else l=null}l=l||{start:0,end:0}}else l=null;for(Es={focusedElem:t,selectionRange:l},ri=!1,Zt=e;Zt!==null;)if(e=Zt,t=e.child,(e.subtreeFlags&1028)!==0&&t!==null)t.return=e,Zt=t;else for(;Zt!==null;){switch(e=Zt,i=e.alternate,t=e.flags,e.tag){case 0:if((t&4)!==0&&(t=e.updateQueue,t=t!==null?t.events:null,t!==null))for(l=0;l title"))),Wt(i,a,l),i[Jt]=t,Kt(i),a=i;break t;case"link":var s=kh("link","href",n).get(a+(l.href||""));if(s){for(var h=0;hEt&&(s=Et,Et=k,k=s);var E=Wf(h,k),p=Wf(h,Et);if(E&&p&&(C.rangeCount!==1||C.anchorNode!==E.node||C.anchorOffset!==E.offset||C.focusNode!==p.node||C.focusOffset!==p.offset)){var T=R.createRange();T.setStart(E.node,E.offset),C.removeAllRanges(),k>Et?(C.addRange(T),C.extend(p.node,p.offset)):(T.setEnd(p.node,p.offset),C.addRange(T))}}}}for(R=[],C=h;C=C.parentNode;)C.nodeType===1&&R.push({element:C,left:C.scrollLeft,top:C.scrollTop});for(typeof h.focus=="function"&&h.focus(),h=0;hl?32:l,D.T=null,l=cs,cs=null;var i=Nl,s=rl;if(Lt=0,Ya=Nl=null,rl=0,(yt&6)!==0)throw Error(r(331));var h=yt;if(yt|=4,Po(i.current),$o(i,i.current,s,l),yt=h,Hn(0,!1),de&&typeof de.onPostCommitFiberRoot=="function")try{de.onPostCommitFiberRoot(Ia,i)}catch{}return!0}finally{B.p=n,D.T=a,gh(t,e)}}function bh(t,e,l){e=Me(l,e),e=Yc(t.stateNode,e,2),t=jl(t,e,2),t!==null&&(tn(t,2),Ke(t))}function bt(t,e,l){if(t.tag===3)bh(t,t,l);else for(;e!==null;){if(e.tag===3){bh(e,t,l);break}else if(e.tag===1){var a=e.stateNode;if(typeof e.type.getDerivedStateFromError=="function"||typeof a.componentDidCatch=="function"&&(Cl===null||!Cl.has(a))){t=Me(l,t),l=So(2),a=jl(e,l,2),a!==null&&(xo(l,a,e,t),tn(a,2),Ke(a));break}}e=e.return}}function os(t,e,l){var a=t.pingCache;if(a===null){a=t.pingCache=new Ry;var n=new Set;a.set(e,n)}else n=a.get(e),n===void 0&&(n=new Set,a.set(e,n));n.has(l)||(as=!0,n.add(l),t=Qy.bind(null,t,e,l),e.then(t,t))}function Qy(t,e,l){var a=t.pingCache;a!==null&&a.delete(e),t.pingedLanes|=t.suspendedLanes&l,t.warmLanes&=~l,jt===t&&(ct&l)===l&&(_t===4||_t===3&&(ct&62914560)===ct&&300>F()-Vu?(yt&2)===0&&Ga(t,0):ns|=l,Ba===ct&&(Ba=0)),Ke(t)}function Sh(t,e){e===0&&(e=df()),t=Vl(t,e),t!==null&&(tn(t,e),Ke(t))}function By(t){var e=t.memoizedState,l=0;e!==null&&(l=e.retryLane),Sh(t,l)}function Yy(t,e){var l=0;switch(t.tag){case 31:case 13:var a=t.stateNode,n=t.memoizedState;n!==null&&(l=n.retryLane);break;case 19:a=t.stateNode;break;case 22:a=t.stateNode._retryCache;break;default:throw Error(r(314))}a!==null&&a.delete(e),Sh(t,l)}function Gy(t,e){return Te(t,e)}var Pu=null,Xa=null,hs=!1,ti=!1,ds=!1,_l=0;function Ke(t){t!==Xa&&t.next===null&&(Xa===null?Pu=Xa=t:Xa=Xa.next=t),ti=!0,hs||(hs=!0,Xy())}function Hn(t,e){if(!ds&&ti){ds=!0;do for(var l=!1,a=Pu;a!==null;){if(t!==0){var n=a.pendingLanes;if(n===0)var i=0;else{var s=a.suspendedLanes,h=a.pingedLanes;i=(1<<31-me(42|t)+1)-1,i&=n&~(s&~h),i=i&201326741?i&201326741|1:i?i|2:0}i!==0&&(l=!0,Th(a,i))}else i=ct,i=nu(a,a===jt?i:0,a.cancelPendingCommit!==null||a.timeoutHandle!==-1),(i&3)===0||Pa(a,i)||(l=!0,Th(a,i));a=a.next}while(l);ds=!1}}function Ly(){xh()}function xh(){ti=hs=!1;var t=0;_l!==0&&Py()&&(t=_l);for(var e=F(),l=null,a=Pu;a!==null;){var n=a.next,i=Eh(a,e);i===0?(a.next=null,l===null?Pu=n:l.next=n,n===null&&(Xa=l)):(l=a,(t!==0||(i&3)!==0)&&(ti=!0)),a=n}Lt!==0&&Lt!==5||Hn(t),_l!==0&&(_l=0)}function Eh(t,e){for(var l=t.suspendedLanes,a=t.pingedLanes,n=t.expirationTimes,i=t.pendingLanes&-62914561;0h)break;var N=v.transferSize,R=v.initiatorType;N&&_h(R)&&(v=v.responseEnd,s+=N*(v"u"?null:document;function Kh(t,e,l){var a=Ka;if(a&&typeof e=="string"&&e){var n=Ae(e);n='link[rel="'+t+'"][href="'+n+'"]',typeof l=="string"&&(n+='[crossorigin="'+l+'"]'),Xh.has(n)||(Xh.add(n),t={rel:t,crossOrigin:l,href:e},a.querySelector(n)===null&&(e=a.createElement("link"),Wt(e,"link",t),Kt(e),a.head.appendChild(e)))}}function sv(t){ol.D(t),Kh("dns-prefetch",t,null)}function fv(t,e){ol.C(t,e),Kh("preconnect",t,e)}function rv(t,e,l){ol.L(t,e,l);var a=Ka;if(a&&t&&e){var n='link[rel="preload"][as="'+Ae(e)+'"]';e==="image"&&l&&l.imageSrcSet?(n+='[imagesrcset="'+Ae(l.imageSrcSet)+'"]',typeof l.imageSizes=="string"&&(n+='[imagesizes="'+Ae(l.imageSizes)+'"]')):n+='[href="'+Ae(t)+'"]';var i=n;switch(e){case"style":i=Za(t);break;case"script":i=Va(t)}Ue.has(i)||(t=x({rel:"preload",href:e==="image"&&l&&l.imageSrcSet?void 0:t,as:e},l),Ue.set(i,t),a.querySelector(n)!==null||e==="style"&&a.querySelector(Bn(i))||e==="script"&&a.querySelector(Yn(i))||(e=a.createElement("link"),Wt(e,"link",t),Kt(e),a.head.appendChild(e)))}}function ov(t,e){ol.m(t,e);var l=Ka;if(l&&t){var a=e&&typeof e.as=="string"?e.as:"script",n='link[rel="modulepreload"][as="'+Ae(a)+'"][href="'+Ae(t)+'"]',i=n;switch(a){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":i=Va(t)}if(!Ue.has(i)&&(t=x({rel:"modulepreload",href:t},e),Ue.set(i,t),l.querySelector(n)===null)){switch(a){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(l.querySelector(Yn(i)))return}a=l.createElement("link"),Wt(a,"link",t),Kt(a),l.head.appendChild(a)}}}function hv(t,e,l){ol.S(t,e,l);var a=Ka;if(a&&t){var n=da(a).hoistableStyles,i=Za(t);e=e||"default";var s=n.get(i);if(!s){var h={loading:0,preload:null};if(s=a.querySelector(Bn(i)))h.loading=5;else{t=x({rel:"stylesheet",href:t,"data-precedence":e},l),(l=Ue.get(i))&&Cs(t,l);var v=s=a.createElement("link");Kt(v),Wt(v,"link",t),v._p=new Promise(function(O,N){v.onload=O,v.onerror=N}),v.addEventListener("load",function(){h.loading|=1}),v.addEventListener("error",function(){h.loading|=2}),h.loading|=4,ui(s,e,a)}s={type:"stylesheet",instance:s,count:1,state:h},n.set(i,s)}}}function dv(t,e){ol.X(t,e);var l=Ka;if(l&&t){var a=da(l).hoistableScripts,n=Va(t),i=a.get(n);i||(i=l.querySelector(Yn(n)),i||(t=x({src:t,async:!0},e),(e=Ue.get(n))&&Ns(t,e),i=l.createElement("script"),Kt(i),Wt(i,"link",t),l.head.appendChild(i)),i={type:"script",instance:i,count:1,state:null},a.set(n,i))}}function mv(t,e){ol.M(t,e);var l=Ka;if(l&&t){var a=da(l).hoistableScripts,n=Va(t),i=a.get(n);i||(i=l.querySelector(Yn(n)),i||(t=x({src:t,async:!0,type:"module"},e),(e=Ue.get(n))&&Ns(t,e),i=l.createElement("script"),Kt(i),Wt(i,"link",t),l.head.appendChild(i)),i={type:"script",instance:i,count:1,state:null},a.set(n,i))}}function Zh(t,e,l,a){var n=(n=et.current)?ni(n):null;if(!n)throw Error(r(446));switch(t){case"meta":case"title":return null;case"style":return typeof l.precedence=="string"&&typeof l.href=="string"?(e=Za(l.href),l=da(n).hoistableStyles,a=l.get(e),a||(a={type:"style",instance:null,count:0,state:null},l.set(e,a)),a):{type:"void",instance:null,count:0,state:null};case"link":if(l.rel==="stylesheet"&&typeof l.href=="string"&&typeof l.precedence=="string"){t=Za(l.href);var i=da(n).hoistableStyles,s=i.get(t);if(s||(n=n.ownerDocument||n,s={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},i.set(t,s),(i=n.querySelector(Bn(t)))&&!i._p&&(s.instance=i,s.state.loading=5),Ue.has(t)||(l={rel:"preload",as:"style",href:l.href,crossOrigin:l.crossOrigin,integrity:l.integrity,media:l.media,hrefLang:l.hrefLang,referrerPolicy:l.referrerPolicy},Ue.set(t,l),i||yv(n,t,l,s.state))),e&&a===null)throw Error(r(528,""));return s}if(e&&a!==null)throw Error(r(529,""));return null;case"script":return e=l.async,l=l.src,typeof l=="string"&&e&&typeof e!="function"&&typeof e!="symbol"?(e=Va(l),l=da(n).hoistableScripts,a=l.get(e),a||(a={type:"script",instance:null,count:0,state:null},l.set(e,a)),a):{type:"void",instance:null,count:0,state:null};default:throw Error(r(444,t))}}function Za(t){return'href="'+Ae(t)+'"'}function Bn(t){return'link[rel="stylesheet"]['+t+"]"}function Vh(t){return x({},t,{"data-precedence":t.precedence,precedence:null})}function yv(t,e,l,a){t.querySelector('link[rel="preload"][as="style"]['+e+"]")?a.loading=1:(e=t.createElement("link"),a.preload=e,e.addEventListener("load",function(){return a.loading|=1}),e.addEventListener("error",function(){return a.loading|=2}),Wt(e,"link",l),Kt(e),t.head.appendChild(e))}function Va(t){return'[src="'+Ae(t)+'"]'}function Yn(t){return"script[async]"+t}function Jh(t,e,l){if(e.count++,e.instance===null)switch(e.type){case"style":var a=t.querySelector('style[data-href~="'+Ae(l.href)+'"]');if(a)return e.instance=a,Kt(a),a;var n=x({},l,{"data-href":l.href,"data-precedence":l.precedence,href:null,precedence:null});return a=(t.ownerDocument||t).createElement("style"),Kt(a),Wt(a,"style",n),ui(a,l.precedence,t),e.instance=a;case"stylesheet":n=Za(l.href);var i=t.querySelector(Bn(n));if(i)return e.state.loading|=4,e.instance=i,Kt(i),i;a=Vh(l),(n=Ue.get(n))&&Cs(a,n),i=(t.ownerDocument||t).createElement("link"),Kt(i);var s=i;return s._p=new Promise(function(h,v){s.onload=h,s.onerror=v}),Wt(i,"link",a),e.state.loading|=4,ui(i,l.precedence,t),e.instance=i;case"script":return i=Va(l.src),(n=t.querySelector(Yn(i)))?(e.instance=n,Kt(n),n):(a=l,(n=Ue.get(i))&&(a=x({},l),Ns(a,n)),t=t.ownerDocument||t,n=t.createElement("script"),Kt(n),Wt(n,"link",a),t.head.appendChild(n),e.instance=n);case"void":return null;default:throw Error(r(443,e.type))}else e.type==="stylesheet"&&(e.state.loading&4)===0&&(a=e.instance,e.state.loading|=4,ui(a,l.precedence,t));return e.instance}function ui(t,e,l){for(var a=l.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),n=a.length?a[a.length-1]:null,i=n,s=0;s title"):null)}function vv(t,e,l){if(l===1||e.itemProp!=null)return!1;switch(t){case"meta":case"title":return!0;case"style":if(typeof e.precedence!="string"||typeof e.href!="string"||e.href==="")break;return!0;case"link":if(typeof e.rel!="string"||typeof e.href!="string"||e.href===""||e.onLoad||e.onError)break;return e.rel==="stylesheet"?(t=e.disabled,typeof e.precedence=="string"&&t==null):!0;case"script":if(e.async&&typeof e.async!="function"&&typeof e.async!="symbol"&&!e.onLoad&&!e.onError&&e.src&&typeof e.src=="string")return!0}return!1}function $h(t){return!(t.type==="stylesheet"&&(t.state.loading&3)===0)}function gv(t,e,l,a){if(l.type==="stylesheet"&&(typeof a.media!="string"||matchMedia(a.media).matches!==!1)&&(l.state.loading&4)===0){if(l.instance===null){var n=Za(a.href),i=e.querySelector(Bn(n));if(i){e=i._p,e!==null&&typeof e=="object"&&typeof e.then=="function"&&(t.count++,t=ci.bind(t),e.then(t,t)),l.state.loading|=4,l.instance=i,Kt(i);return}i=e.ownerDocument||e,a=Vh(a),(n=Ue.get(n))&&Cs(a,n),i=i.createElement("link"),Kt(i);var s=i;s._p=new Promise(function(h,v){s.onload=h,s.onerror=v}),Wt(i,"link",a),l.instance=i}t.stylesheets===null&&(t.stylesheets=new Map),t.stylesheets.set(l,e),(e=l.state.preload)&&(l.state.loading&3)===0&&(t.count++,l=ci.bind(t),e.addEventListener("load",l),e.addEventListener("error",l))}}var Ds=0;function pv(t,e){return t.stylesheets&&t.count===0&&fi(t,t.stylesheets),0Ds?50:800)+e);return t.unsuspend=l,function(){t.unsuspend=null,clearTimeout(a),clearTimeout(n)}}:null}function ci(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)fi(this,this.stylesheets);else if(this.unsuspend){var t=this.unsuspend;this.unsuspend=null,t()}}}var si=null;function fi(t,e){t.stylesheets=null,t.unsuspend!==null&&(t.count++,si=new Map,e.forEach(bv,t),si=null,ci.call(t))}function bv(t,e){if(!(e.state.loading&4)){var l=si.get(t);if(l)var a=l.get(null);else{l=new Map,si.set(t,l);for(var n=t.querySelectorAll("link[data-precedence],style[data-precedence]"),i=0;i"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(u)}catch(c){console.error(c)}}return u(),Ys.exports=Hv(),Ys.exports}var wv=qv(),tu=class{constructor(){this.listeners=new Set,this.subscribe=this.subscribe.bind(this)}subscribe(u){return this.listeners.add(u),this.onSubscribe(),()=>{this.listeners.delete(u),this.onUnsubscribe()}}hasListeners(){return this.listeners.size>0}onSubscribe(){}onUnsubscribe(){}},Qv=class extends tu{#t;#e;#l;constructor(){super(),this.#l=u=>{if(typeof window<"u"&&window.addEventListener){const c=()=>u();return window.addEventListener("visibilitychange",c,!1),()=>{window.removeEventListener("visibilitychange",c)}}}}onSubscribe(){this.#e||this.setEventListener(this.#l)}onUnsubscribe(){this.hasListeners()||(this.#e?.(),this.#e=void 0)}setEventListener(u){this.#l=u,this.#e?.(),this.#e=u(c=>{typeof c=="boolean"?this.setFocused(c):this.onFocus()})}setFocused(u){this.#t!==u&&(this.#t=u,this.onFocus())}onFocus(){const u=this.isFocused();this.listeners.forEach(c=>{c(u)})}isFocused(){return typeof this.#t=="boolean"?this.#t:globalThis.document?.visibilityState!=="hidden"}},ef=new Qv,Bv={setTimeout:(u,c)=>setTimeout(u,c),clearTimeout:u=>clearTimeout(u),setInterval:(u,c)=>setInterval(u,c),clearInterval:u=>clearInterval(u)},Yv=class{#t=Bv;#e=!1;setTimeoutProvider(u){this.#t=u}setTimeout(u,c){return this.#t.setTimeout(u,c)}clearTimeout(u){this.#t.clearTimeout(u)}setInterval(u,c){return this.#t.setInterval(u,c)}clearInterval(u){this.#t.clearInterval(u)}},ua=new Yv;function Gv(u){setTimeout(u,0)}var Lv=typeof window>"u"||"Deno"in globalThis;function oe(){}function Xv(u,c){return typeof u=="function"?u(c):u}function Vs(u){return typeof u=="number"&&u>=0&&u!==1/0}function Yd(u,c){return Math.max(u+(c||0)-Date.now(),0)}function Bl(u,c){return typeof u=="function"?u(c):u}function Ee(u,c){return typeof u=="function"?u(c):u}function Sd(u,c){const{type:f="all",exact:r,fetchStatus:o,predicate:m,queryKey:S,stale:M}=u;if(S){if(r){if(c.queryHash!==lf(S,c.options))return!1}else if(!Fn(c.queryKey,S))return!1}if(f!=="all"){const g=c.isActive();if(f==="active"&&!g||f==="inactive"&&g)return!1}return!(typeof M=="boolean"&&c.isStale()!==M||o&&o!==c.state.fetchStatus||m&&!m(c))}function xd(u,c){const{exact:f,status:r,predicate:o,mutationKey:m}=u;if(m){if(!c.options.mutationKey)return!1;if(f){if(kn(c.options.mutationKey)!==kn(m))return!1}else if(!Fn(c.options.mutationKey,m))return!1}return!(r&&c.state.status!==r||o&&!o(c))}function lf(u,c){return(c?.queryKeyHashFn||kn)(u)}function kn(u){return JSON.stringify(u,(c,f)=>ks(f)?Object.keys(f).sort().reduce((r,o)=>(r[o]=f[o],r),{}):f)}function Fn(u,c){return u===c?!0:typeof u!=typeof c?!1:u&&c&&typeof u=="object"&&typeof c=="object"?Object.keys(c).every(f=>Fn(u[f],c[f])):!1}var Kv=Object.prototype.hasOwnProperty;function Gd(u,c,f=0){if(u===c)return u;if(f>500)return c;const r=Ed(u)&&Ed(c);if(!r&&!(ks(u)&&ks(c)))return c;const m=(r?u:Object.keys(u)).length,S=r?c:Object.keys(c),M=S.length,g=r?new Array(M):{};let y=0;for(let z=0;z{ua.setTimeout(c,u)})}function Fs(u,c,f){return typeof f.structuralSharing=="function"?f.structuralSharing(u,c):f.structuralSharing!==!1?Gd(u,c):c}function Vv(u,c,f=0){const r=[...u,c];return f&&r.length>f?r.slice(1):r}function Jv(u,c,f=0){const r=[c,...u];return f&&r.length>f?r.slice(0,-1):r}var af=Symbol();function Ld(u,c){return!u.queryFn&&c?.initialPromise?()=>c.initialPromise:!u.queryFn||u.queryFn===af?()=>Promise.reject(new Error(`Missing queryFn: '${u.queryHash}'`)):u.queryFn}function Xd(u,c){return typeof u=="function"?u(...c):!!u}function kv(u,c,f){let r=!1,o;return Object.defineProperty(u,"signal",{enumerable:!0,get:()=>(o??=c(),r||(r=!0,o.aborted?f():o.addEventListener("abort",f,{once:!0})),o)}),u}var $n=(()=>{let u=()=>Lv;return{isServer(){return u()},setIsServer(c){u=c}}})();function $s(){let u,c;const f=new Promise((o,m)=>{u=o,c=m});f.status="pending",f.catch(()=>{});function r(o){Object.assign(f,o),delete f.resolve,delete f.reject}return f.resolve=o=>{r({status:"fulfilled",value:o}),u(o)},f.reject=o=>{r({status:"rejected",reason:o}),c(o)},f}var Fv=Gv;function $v(){let u=[],c=0,f=M=>{M()},r=M=>{M()},o=Fv;const m=M=>{c?u.push(M):o(()=>{f(M)})},S=()=>{const M=u;u=[],M.length&&o(()=>{r(()=>{M.forEach(g=>{f(g)})})})};return{batch:M=>{let g;c++;try{g=M()}finally{c--,c||S()}return g},batchCalls:M=>(...g)=>{m(()=>{M(...g)})},schedule:m,setNotifyFunction:M=>{f=M},setBatchNotifyFunction:M=>{r=M},setScheduler:M=>{o=M}}}var It=$v(),Wv=class extends tu{#t=!0;#e;#l;constructor(){super(),this.#l=u=>{if(typeof window<"u"&&window.addEventListener){const c=()=>u(!0),f=()=>u(!1);return window.addEventListener("online",c,!1),window.addEventListener("offline",f,!1),()=>{window.removeEventListener("online",c),window.removeEventListener("offline",f)}}}}onSubscribe(){this.#e||this.setEventListener(this.#l)}onUnsubscribe(){this.hasListeners()||(this.#e?.(),this.#e=void 0)}setEventListener(u){this.#l=u,this.#e?.(),this.#e=u(this.setOnline.bind(this))}setOnline(u){this.#t!==u&&(this.#t=u,this.listeners.forEach(f=>{f(u)}))}isOnline(){return this.#t}},xi=new Wv;function Iv(u){return Math.min(1e3*2**u,3e4)}function Kd(u){return(u??"online")==="online"?xi.isOnline():!0}var Ws=class extends Error{constructor(u){super("CancelledError"),this.revert=u?.revert,this.silent=u?.silent}};function Zd(u){let c=!1,f=0,r;const o=$s(),m=()=>o.status!=="pending",S=Q=>{if(!m()){const G=new Ws(Q);j(G),u.onCancel?.(G)}},M=()=>{c=!0},g=()=>{c=!1},y=()=>ef.isFocused()&&(u.networkMode==="always"||xi.isOnline())&&u.canRun(),z=()=>Kd(u.networkMode)&&u.canRun(),x=Q=>{m()||(r?.(),o.resolve(Q))},j=Q=>{m()||(r?.(),o.reject(Q))},H=()=>new Promise(Q=>{r=G=>{(m()||y())&&Q(G)},u.onPause?.()}).then(()=>{r=void 0,m()||u.onContinue?.()}),w=()=>{if(m())return;let Q;const G=f===0?u.initialPromise:void 0;try{Q=G??u.fn()}catch(L){Q=Promise.reject(L)}Promise.resolve(Q).then(x).catch(L=>{if(m())return;const $=u.retry??($n.isServer()?0:3),nt=u.retryDelay??Iv,Nt=typeof nt=="function"?nt(f,L):nt,Mt=$===!0||typeof $=="number"&&f<$||typeof $=="function"&&$(f,L);if(c||!Mt){j(L);return}f++,u.onFail?.(f,L),Zv(Nt).then(()=>y()?void 0:H()).then(()=>{c?j(L):w()})})};return{promise:o,status:()=>o.status,cancel:S,continue:()=>(r?.(),o),cancelRetry:M,continueRetry:g,canStart:z,start:()=>(z()?w():H().then(w),o)}}var Vd=class{#t;destroy(){this.clearGcTimeout()}scheduleGc(){this.clearGcTimeout(),Vs(this.gcTime)&&(this.#t=ua.setTimeout(()=>{this.optionalRemove()},this.gcTime))}updateGcTime(u){this.gcTime=Math.max(this.gcTime||0,u??($n.isServer()?1/0:300*1e3))}clearGcTimeout(){this.#t!==void 0&&(ua.clearTimeout(this.#t),this.#t=void 0)}};function Pv(u){return{onFetch:(c,f)=>{const r=c.options,o=c.fetchOptions?.meta?.fetchMore?.direction,m=c.state.data?.pages||[],S=c.state.data?.pageParams||[];let M={pages:[],pageParams:[]},g=0;const y=async()=>{let z=!1;const x=w=>{kv(w,()=>c.signal,()=>z=!0)},j=Ld(c.options,c.fetchOptions),H=async(w,Q,G)=>{if(z)return Promise.reject(c.signal.reason);if(Q==null&&w.pages.length)return Promise.resolve(w);const $=(()=>{const Rt={client:c.client,queryKey:c.queryKey,pageParam:Q,direction:G?"backward":"forward",meta:c.options.meta};return x(Rt),Rt})(),nt=await j($),{maxPages:Nt}=c.options,Mt=G?Jv:Vv;return{pages:Mt(w.pages,nt,Nt),pageParams:Mt(w.pageParams,Q,Nt)}};if(o&&m.length){const w=o==="backward",Q=w?t0:Td,G={pages:m,pageParams:S},L=Q(r,G);M=await H(G,L,w)}else{const w=u??m.length;do{const Q=g===0?S[0]??r.initialPageParam:Td(r,M);if(g>0&&Q==null)break;M=await H(M,Q),g++}while(gc.options.persister?.(y,{client:c.client,queryKey:c.queryKey,meta:c.options.meta,signal:c.signal},f):c.fetchFn=y}}}function Td(u,{pages:c,pageParams:f}){const r=c.length-1;return c.length>0?u.getNextPageParam(c[r],c,f[r],f):void 0}function t0(u,{pages:c,pageParams:f}){return c.length>0?u.getPreviousPageParam?.(c[0],c,f[0],f):void 0}var e0=class extends Vd{#t;#e;#l;#a;#u;#n;#c;#i;constructor(u){super(),this.#i=!1,this.#c=u.defaultOptions,this.setOptions(u.options),this.observers=[],this.#u=u.client,this.#a=this.#u.getQueryCache(),this.queryKey=u.queryKey,this.queryHash=u.queryHash,this.#e=Ad(this.options),this.state=u.state??this.#e,this.scheduleGc()}get meta(){return this.options.meta}get queryType(){return this.#t}get promise(){return this.#n?.promise}setOptions(u){if(this.options={...this.#c,...u},u?._type&&(this.#t=u._type),this.updateGcTime(this.options.gcTime),this.state&&this.state.data===void 0){const c=Ad(this.options);c.data!==void 0&&(this.setState(Od(c.data,c.dataUpdatedAt)),this.#e=c)}}optionalRemove(){!this.observers.length&&this.state.fetchStatus==="idle"&&this.#a.remove(this)}setData(u,c){const f=Fs(this.state.data,u,this.options);return this.#s({data:f,type:"success",dataUpdatedAt:c?.updatedAt,manual:c?.manual}),f}setState(u){this.#s({type:"setState",state:u})}cancel(u){const c=this.#n?.promise;return this.#n?.cancel(u),c?c.then(oe).catch(oe):Promise.resolve()}destroy(){super.destroy(),this.cancel({silent:!0})}get resetState(){return this.#e}reset(){this.destroy(),this.setState(this.resetState)}isActive(){return this.observers.some(u=>Ee(u.options.enabled,this)!==!1)}isDisabled(){return this.getObserversCount()>0?!this.isActive():this.options.queryFn===af||!this.isFetched()}isFetched(){return this.state.dataUpdateCount+this.state.errorUpdateCount>0}isStatic(){return this.getObserversCount()>0?this.observers.some(u=>Bl(u.options.staleTime,this)==="static"):!1}isStale(){return this.getObserversCount()>0?this.observers.some(u=>u.getCurrentResult().isStale):this.state.data===void 0||this.state.isInvalidated}isStaleByTime(u=0){return this.state.data===void 0?!0:u==="static"?!1:this.state.isInvalidated?!0:!Yd(this.state.dataUpdatedAt,u)}onFocus(){this.observers.find(c=>c.shouldFetchOnWindowFocus())?.refetch({cancelRefetch:!1}),this.#n?.continue()}onOnline(){this.observers.find(c=>c.shouldFetchOnReconnect())?.refetch({cancelRefetch:!1}),this.#n?.continue()}addObserver(u){this.observers.includes(u)||(this.observers.push(u),this.clearGcTimeout(),this.#a.notify({type:"observerAdded",query:this,observer:u}))}removeObserver(u){this.observers.includes(u)&&(this.observers=this.observers.filter(c=>c!==u),this.observers.length||(this.#n&&(this.#i||this.#r()?this.#n.cancel({revert:!0}):this.#n.cancelRetry()),this.scheduleGc()),this.#a.notify({type:"observerRemoved",query:this,observer:u}))}getObserversCount(){return this.observers.length}#r(){return this.state.fetchStatus==="paused"&&this.state.status==="pending"}invalidate(){this.state.isInvalidated||this.#s({type:"invalidate"})}async fetch(u,c){if(this.state.fetchStatus!=="idle"&&this.#n?.status()!=="rejected"){if(this.state.data!==void 0&&c?.cancelRefetch)this.cancel({silent:!0});else if(this.#n)return this.#n.continueRetry(),this.#n.promise}if(u&&this.setOptions(u),!this.options.queryFn){const g=this.observers.find(y=>y.options.queryFn);g&&this.setOptions(g.options)}const f=new AbortController,r=g=>{Object.defineProperty(g,"signal",{enumerable:!0,get:()=>(this.#i=!0,f.signal)})},o=()=>{const g=Ld(this.options,c),z=(()=>{const x={client:this.#u,queryKey:this.queryKey,meta:this.meta};return r(x),x})();return this.#i=!1,this.options.persister?this.options.persister(g,z,this):g(z)},S=(()=>{const g={fetchOptions:c,options:this.options,queryKey:this.queryKey,client:this.#u,state:this.state,fetchFn:o};return r(g),g})();(this.#t==="infinite"?Pv(this.options.pages):this.options.behavior)?.onFetch(S,this),this.#l=this.state,(this.state.fetchStatus==="idle"||this.state.fetchMeta!==S.fetchOptions?.meta)&&this.#s({type:"fetch",meta:S.fetchOptions?.meta}),this.#n=Zd({initialPromise:c?.initialPromise,fn:S.fetchFn,onCancel:g=>{g instanceof Ws&&g.revert&&this.setState({...this.#l,fetchStatus:"idle"}),f.abort()},onFail:(g,y)=>{this.#s({type:"failed",failureCount:g,error:y})},onPause:()=>{this.#s({type:"pause"})},onContinue:()=>{this.#s({type:"continue"})},retry:S.options.retry,retryDelay:S.options.retryDelay,networkMode:S.options.networkMode,canRun:()=>!0});try{const g=await this.#n.start();if(g===void 0)throw new Error(`${this.queryHash} data is undefined`);return this.setData(g),this.#a.config.onSuccess?.(g,this),this.#a.config.onSettled?.(g,this.state.error,this),g}catch(g){if(g instanceof Ws){if(g.silent)return this.#n.promise;if(g.revert){if(this.state.data===void 0)throw g;return this.state.data}}throw this.#s({type:"error",error:g}),this.#a.config.onError?.(g,this),this.#a.config.onSettled?.(this.state.data,g,this),g}finally{this.scheduleGc()}}#s(u){const c=f=>{switch(u.type){case"failed":return{...f,fetchFailureCount:u.failureCount,fetchFailureReason:u.error};case"pause":return{...f,fetchStatus:"paused"};case"continue":return{...f,fetchStatus:"fetching"};case"fetch":return{...f,...Jd(f.data,this.options),fetchMeta:u.meta??null};case"success":const r={...f,...Od(u.data,u.dataUpdatedAt),dataUpdateCount:f.dataUpdateCount+1,...!u.manual&&{fetchStatus:"idle",fetchFailureCount:0,fetchFailureReason:null}};return this.#l=u.manual?r:void 0,r;case"error":const o=u.error;return{...f,error:o,errorUpdateCount:f.errorUpdateCount+1,errorUpdatedAt:Date.now(),fetchFailureCount:f.fetchFailureCount+1,fetchFailureReason:o,fetchStatus:"idle",status:"error",isInvalidated:!0};case"invalidate":return{...f,isInvalidated:!0};case"setState":return{...f,...u.state}}};this.state=c(this.state),It.batch(()=>{this.observers.forEach(f=>{f.onQueryUpdate()}),this.#a.notify({query:this,type:"updated",action:u})})}};function Jd(u,c){return{fetchFailureCount:0,fetchFailureReason:null,fetchStatus:Kd(c.networkMode)?"fetching":"paused",...u===void 0&&{error:null,status:"pending"}}}function Od(u,c){return{data:u,dataUpdatedAt:c??Date.now(),error:null,isInvalidated:!1,status:"success"}}function Ad(u){const c=typeof u.initialData=="function"?u.initialData():u.initialData,f=c!==void 0,r=f?typeof u.initialDataUpdatedAt=="function"?u.initialDataUpdatedAt():u.initialDataUpdatedAt:0;return{data:c,dataUpdateCount:0,dataUpdatedAt:f?r??Date.now():0,error:null,errorUpdateCount:0,errorUpdatedAt:0,fetchFailureCount:0,fetchFailureReason:null,fetchMeta:null,isInvalidated:!1,status:f?"success":"pending",fetchStatus:"idle"}}var l0=class extends tu{constructor(u,c){super(),this.options=c,this.#t=u,this.#i=null,this.#c=$s(),this.bindMethods(),this.setOptions(c)}#t;#e=void 0;#l=void 0;#a=void 0;#u;#n;#c;#i;#r;#s;#m;#o;#h;#f;#y=new Set;bindMethods(){this.refetch=this.refetch.bind(this)}onSubscribe(){this.listeners.size===1&&(this.#e.addObserver(this),zd(this.#e,this.options)?this.#d():this.updateResult(),this.#b())}onUnsubscribe(){this.hasListeners()||this.destroy()}shouldFetchOnReconnect(){return Is(this.#e,this.options,this.options.refetchOnReconnect)}shouldFetchOnWindowFocus(){return Is(this.#e,this.options,this.options.refetchOnWindowFocus)}destroy(){this.listeners=new Set,this.#S(),this.#x(),this.#e.removeObserver(this)}setOptions(u){const c=this.options,f=this.#e;if(this.options=this.#t.defaultQueryOptions(u),this.options.enabled!==void 0&&typeof this.options.enabled!="boolean"&&typeof this.options.enabled!="function"&&typeof Ee(this.options.enabled,this.#e)!="boolean")throw new Error("Expected enabled to be a boolean or a callback that returns a boolean");this.#E(),this.#e.setOptions(this.options),c._defaulted&&!Js(this.options,c)&&this.#t.getQueryCache().notify({type:"observerOptionsUpdated",query:this.#e,observer:this});const r=this.hasListeners();r&&Md(this.#e,f,this.options,c)&&this.#d(),this.updateResult(),r&&(this.#e!==f||Ee(this.options.enabled,this.#e)!==Ee(c.enabled,this.#e)||Bl(this.options.staleTime,this.#e)!==Bl(c.staleTime,this.#e))&&this.#v();const o=this.#g();r&&(this.#e!==f||Ee(this.options.enabled,this.#e)!==Ee(c.enabled,this.#e)||o!==this.#f)&&this.#p(o)}getOptimisticResult(u){const c=this.#t.getQueryCache().build(this.#t,u),f=this.createResult(c,u);return n0(this,f)&&(this.#a=f,this.#n=this.options,this.#u=this.#e.state),f}getCurrentResult(){return this.#a}trackResult(u,c){return new Proxy(u,{get:(f,r)=>(this.trackProp(r),c?.(r),r==="promise"&&(this.trackProp("data"),!this.options.experimental_prefetchInRender&&this.#c.status==="pending"&&this.#c.reject(new Error("experimental_prefetchInRender feature flag is not enabled"))),Reflect.get(f,r))})}trackProp(u){this.#y.add(u)}getCurrentQuery(){return this.#e}refetch({...u}={}){return this.fetch({...u})}fetchOptimistic(u){const c=this.#t.defaultQueryOptions(u),f=this.#t.getQueryCache().build(this.#t,c);return f.fetch().then(()=>this.createResult(f,c))}fetch(u){return this.#d({...u,cancelRefetch:u.cancelRefetch??!0}).then(()=>(this.updateResult(),this.#a))}#d(u){this.#E();let c=this.#e.fetch(this.options,u);return u?.throwOnError||(c=c.catch(oe)),c}#v(){this.#S();const u=Bl(this.options.staleTime,this.#e);if($n.isServer()||this.#a.isStale||!Vs(u))return;const f=Yd(this.#a.dataUpdatedAt,u)+1;this.#o=ua.setTimeout(()=>{this.#a.isStale||this.updateResult()},f)}#g(){return(typeof this.options.refetchInterval=="function"?this.options.refetchInterval(this.#e):this.options.refetchInterval)??!1}#p(u){this.#x(),this.#f=u,!($n.isServer()||Ee(this.options.enabled,this.#e)===!1||!Vs(this.#f)||this.#f===0)&&(this.#h=ua.setInterval(()=>{(this.options.refetchIntervalInBackground||ef.isFocused())&&this.#d()},this.#f))}#b(){this.#v(),this.#p(this.#g())}#S(){this.#o!==void 0&&(ua.clearTimeout(this.#o),this.#o=void 0)}#x(){this.#h!==void 0&&(ua.clearInterval(this.#h),this.#h=void 0)}createResult(u,c){const f=this.#e,r=this.options,o=this.#a,m=this.#u,S=this.#n,g=u!==f?u.state:this.#l,{state:y}=u;let z={...y},x=!1,j;if(c._optimisticResults){const rt=this.hasListeners(),Gt=!rt&&zd(u,c),ae=rt&&Md(u,f,c,r);(Gt||ae)&&(z={...z,...Jd(y.data,u.options)}),c._optimisticResults==="isRestoring"&&(z.fetchStatus="idle")}let{error:H,errorUpdatedAt:w,status:Q}=z;j=z.data;let G=!1;if(c.placeholderData!==void 0&&j===void 0&&Q==="pending"){let rt;o?.isPlaceholderData&&c.placeholderData===S?.placeholderData?(rt=o.data,G=!0):rt=typeof c.placeholderData=="function"?c.placeholderData(this.#m?.state.data,this.#m):c.placeholderData,rt!==void 0&&(Q="success",j=Fs(o?.data,rt,c),x=!0)}if(c.select&&j!==void 0&&!G)if(o&&j===m?.data&&c.select===this.#r)j=this.#s;else try{this.#r=c.select,j=c.select(j),j=Fs(o?.data,j,c),this.#s=j,this.#i=null}catch(rt){this.#i=rt}this.#i&&(H=this.#i,j=this.#s,w=Date.now(),Q="error");const L=z.fetchStatus==="fetching",$=Q==="pending",nt=Q==="error",Nt=$&&L,Mt=j!==void 0,W={status:Q,fetchStatus:z.fetchStatus,isPending:$,isSuccess:Q==="success",isError:nt,isInitialLoading:Nt,isLoading:Nt,data:j,dataUpdatedAt:z.dataUpdatedAt,error:H,errorUpdatedAt:w,failureCount:z.fetchFailureCount,failureReason:z.fetchFailureReason,errorUpdateCount:z.errorUpdateCount,isFetched:u.isFetched(),isFetchedAfterMount:z.dataUpdateCount>g.dataUpdateCount||z.errorUpdateCount>g.errorUpdateCount,isFetching:L,isRefetching:L&&!$,isLoadingError:nt&&!Mt,isPaused:z.fetchStatus==="paused",isPlaceholderData:x,isRefetchError:nt&&Mt,isStale:nf(u,c),refetch:this.refetch,promise:this.#c,isEnabled:Ee(c.enabled,u)!==!1};if(this.options.experimental_prefetchInRender){const rt=W.data!==void 0,Gt=W.status==="error"&&!rt,ae=Tt=>{Gt?Tt.reject(W.error):rt&&Tt.resolve(W.data)},Vt=()=>{const Tt=this.#c=W.promise=$s();ae(Tt)},Ut=this.#c;switch(Ut.status){case"pending":u.queryHash===f.queryHash&&ae(Ut);break;case"fulfilled":(Gt||W.data!==Ut.value)&&Vt();break;case"rejected":(!Gt||W.error!==Ut.reason)&&Vt();break}}return W}updateResult(){const u=this.#a,c=this.createResult(this.#e,this.options);if(this.#u=this.#e.state,this.#n=this.options,this.#u.data!==void 0&&(this.#m=this.#e),Js(c,u))return;this.#a=c;const f=()=>{if(!u)return!0;const{notifyOnChangeProps:r}=this.options,o=typeof r=="function"?r():r;if(o==="all"||!o&&!this.#y.size)return!0;const m=new Set(o??this.#y);return this.options.throwOnError&&m.add("error"),Object.keys(this.#a).some(S=>{const M=S;return this.#a[M]!==u[M]&&m.has(M)})};this.#j({listeners:f()})}#E(){const u=this.#t.getQueryCache().build(this.#t,this.options);if(u===this.#e)return;const c=this.#e;this.#e=u,this.#l=u.state,this.hasListeners()&&(c?.removeObserver(this),u.addObserver(this))}onQueryUpdate(){this.updateResult(),this.hasListeners()&&this.#b()}#j(u){It.batch(()=>{u.listeners&&this.listeners.forEach(c=>{c(this.#a)}),this.#t.getQueryCache().notify({query:this.#e,type:"observerResultsUpdated"})})}};function a0(u,c){return Ee(c.enabled,u)!==!1&&u.state.data===void 0&&!(u.state.status==="error"&&Ee(c.retryOnMount,u)===!1)}function zd(u,c){return a0(u,c)||u.state.data!==void 0&&Is(u,c,c.refetchOnMount)}function Is(u,c,f){if(Ee(c.enabled,u)!==!1&&Bl(c.staleTime,u)!=="static"){const r=typeof f=="function"?f(u):f;return r==="always"||r!==!1&&nf(u,c)}return!1}function Md(u,c,f,r){return(u!==c||Ee(r.enabled,u)===!1)&&(!f.suspense||u.state.status!=="error")&&nf(u,f)}function nf(u,c){return Ee(c.enabled,u)!==!1&&u.isStaleByTime(Bl(c.staleTime,u))}function n0(u,c){return!Js(u.getCurrentResult(),c)}var u0=class extends Vd{#t;#e;#l;#a;constructor(u){super(),this.#t=u.client,this.mutationId=u.mutationId,this.#l=u.mutationCache,this.#e=[],this.state=u.state||i0(),this.setOptions(u.options),this.scheduleGc()}setOptions(u){this.options=u,this.updateGcTime(this.options.gcTime)}get meta(){return this.options.meta}addObserver(u){this.#e.includes(u)||(this.#e.push(u),this.clearGcTimeout(),this.#l.notify({type:"observerAdded",mutation:this,observer:u}))}removeObserver(u){this.#e=this.#e.filter(c=>c!==u),this.scheduleGc(),this.#l.notify({type:"observerRemoved",mutation:this,observer:u})}optionalRemove(){this.#e.length||(this.state.status==="pending"?this.scheduleGc():this.#l.remove(this))}continue(){return this.#a?.continue()??this.execute(this.state.variables)}async execute(u){const c=()=>{this.#u({type:"continue"})},f={client:this.#t,meta:this.options.meta,mutationKey:this.options.mutationKey};this.#a=Zd({fn:()=>this.options.mutationFn?this.options.mutationFn(u,f):Promise.reject(new Error("No mutationFn found")),onFail:(m,S)=>{this.#u({type:"failed",failureCount:m,error:S})},onPause:()=>{this.#u({type:"pause"})},onContinue:c,retry:this.options.retry??0,retryDelay:this.options.retryDelay,networkMode:this.options.networkMode,canRun:()=>this.#l.canRun(this)});const r=this.state.status==="pending",o=!this.#a.canStart();try{if(r)c();else{this.#u({type:"pending",variables:u,isPaused:o}),this.#l.config.onMutate&&await this.#l.config.onMutate(u,this,f);const S=await this.options.onMutate?.(u,f);S!==this.state.context&&this.#u({type:"pending",context:S,variables:u,isPaused:o})}const m=await this.#a.start();return await this.#l.config.onSuccess?.(m,u,this.state.context,this,f),await this.options.onSuccess?.(m,u,this.state.context,f),await this.#l.config.onSettled?.(m,null,this.state.variables,this.state.context,this,f),await this.options.onSettled?.(m,null,u,this.state.context,f),this.#u({type:"success",data:m}),m}catch(m){try{await this.#l.config.onError?.(m,u,this.state.context,this,f)}catch(S){Promise.reject(S)}try{await this.options.onError?.(m,u,this.state.context,f)}catch(S){Promise.reject(S)}try{await this.#l.config.onSettled?.(void 0,m,this.state.variables,this.state.context,this,f)}catch(S){Promise.reject(S)}try{await this.options.onSettled?.(void 0,m,u,this.state.context,f)}catch(S){Promise.reject(S)}throw this.#u({type:"error",error:m}),m}finally{this.#l.runNext(this)}}#u(u){const c=f=>{switch(u.type){case"failed":return{...f,failureCount:u.failureCount,failureReason:u.error};case"pause":return{...f,isPaused:!0};case"continue":return{...f,isPaused:!1};case"pending":return{...f,context:u.context,data:void 0,failureCount:0,failureReason:null,error:null,isPaused:u.isPaused,status:"pending",variables:u.variables,submittedAt:Date.now()};case"success":return{...f,data:u.data,failureCount:0,failureReason:null,error:null,status:"success",isPaused:!1};case"error":return{...f,data:void 0,error:u.error,failureCount:f.failureCount+1,failureReason:u.error,isPaused:!1,status:"error"}}};this.state=c(this.state),It.batch(()=>{this.#e.forEach(f=>{f.onMutationUpdate(u)}),this.#l.notify({mutation:this,type:"updated",action:u})})}};function i0(){return{context:void 0,data:void 0,error:null,failureCount:0,failureReason:null,isPaused:!1,status:"idle",variables:void 0,submittedAt:0}}var c0=class extends tu{constructor(u={}){super(),this.config=u,this.#t=new Set,this.#e=new Map,this.#l=0}#t;#e;#l;build(u,c,f){const r=new u0({client:u,mutationCache:this,mutationId:++this.#l,options:u.defaultMutationOptions(c),state:f});return this.add(r),r}add(u){this.#t.add(u);const c=gi(u);if(typeof c=="string"){const f=this.#e.get(c);f?f.push(u):this.#e.set(c,[u])}this.notify({type:"added",mutation:u})}remove(u){if(this.#t.delete(u)){const c=gi(u);if(typeof c=="string"){const f=this.#e.get(c);if(f)if(f.length>1){const r=f.indexOf(u);r!==-1&&f.splice(r,1)}else f[0]===u&&this.#e.delete(c)}}this.notify({type:"removed",mutation:u})}canRun(u){const c=gi(u);if(typeof c=="string"){const r=this.#e.get(c)?.find(o=>o.state.status==="pending");return!r||r===u}else return!0}runNext(u){const c=gi(u);return typeof c=="string"?this.#e.get(c)?.find(r=>r!==u&&r.state.isPaused)?.continue()??Promise.resolve():Promise.resolve()}clear(){It.batch(()=>{this.#t.forEach(u=>{this.notify({type:"removed",mutation:u})}),this.#t.clear(),this.#e.clear()})}getAll(){return Array.from(this.#t)}find(u){const c={exact:!0,...u};return this.getAll().find(f=>xd(c,f))}findAll(u={}){return this.getAll().filter(c=>xd(u,c))}notify(u){It.batch(()=>{this.listeners.forEach(c=>{c(u)})})}resumePausedMutations(){const u=this.getAll().filter(c=>c.state.isPaused);return It.batch(()=>Promise.all(u.map(c=>c.continue().catch(oe))))}};function gi(u){return u.options.scope?.id}var s0=class extends tu{constructor(u={}){super(),this.config=u,this.#t=new Map}#t;build(u,c,f){const r=c.queryKey,o=c.queryHash??lf(r,c);let m=this.get(o);return m||(m=new e0({client:u,queryKey:r,queryHash:o,options:u.defaultQueryOptions(c),state:f,defaultOptions:u.getQueryDefaults(r)}),this.add(m)),m}add(u){this.#t.has(u.queryHash)||(this.#t.set(u.queryHash,u),this.notify({type:"added",query:u}))}remove(u){const c=this.#t.get(u.queryHash);c&&(u.destroy(),c===u&&this.#t.delete(u.queryHash),this.notify({type:"removed",query:u}))}clear(){It.batch(()=>{this.getAll().forEach(u=>{this.remove(u)})})}get(u){return this.#t.get(u)}getAll(){return[...this.#t.values()]}find(u){const c={exact:!0,...u};return this.getAll().find(f=>Sd(c,f))}findAll(u={}){const c=this.getAll();return Object.keys(u).length>0?c.filter(f=>Sd(u,f)):c}notify(u){It.batch(()=>{this.listeners.forEach(c=>{c(u)})})}onFocus(){It.batch(()=>{this.getAll().forEach(u=>{u.onFocus()})})}onOnline(){It.batch(()=>{this.getAll().forEach(u=>{u.onOnline()})})}},f0=class{#t;#e;#l;#a;#u;#n;#c;#i;constructor(u={}){this.#t=u.queryCache||new s0,this.#e=u.mutationCache||new c0,this.#l=u.defaultOptions||{},this.#a=new Map,this.#u=new Map,this.#n=0}mount(){this.#n++,this.#n===1&&(this.#c=ef.subscribe(async u=>{u&&(await this.resumePausedMutations(),this.#t.onFocus())}),this.#i=xi.subscribe(async u=>{u&&(await this.resumePausedMutations(),this.#t.onOnline())}))}unmount(){this.#n--,this.#n===0&&(this.#c?.(),this.#c=void 0,this.#i?.(),this.#i=void 0)}isFetching(u){return this.#t.findAll({...u,fetchStatus:"fetching"}).length}isMutating(u){return this.#e.findAll({...u,status:"pending"}).length}getQueryData(u){const c=this.defaultQueryOptions({queryKey:u});return this.#t.get(c.queryHash)?.state.data}ensureQueryData(u){const c=this.defaultQueryOptions(u),f=this.#t.build(this,c),r=f.state.data;return r===void 0?this.fetchQuery(u):(u.revalidateIfStale&&f.isStaleByTime(Bl(c.staleTime,f))&&this.prefetchQuery(c),Promise.resolve(r))}getQueriesData(u){return this.#t.findAll(u).map(({queryKey:c,state:f})=>{const r=f.data;return[c,r]})}setQueryData(u,c,f){const r=this.defaultQueryOptions({queryKey:u}),m=this.#t.get(r.queryHash)?.state.data,S=Xv(c,m);if(S!==void 0)return this.#t.build(this,r).setData(S,{...f,manual:!0})}setQueriesData(u,c,f){return It.batch(()=>this.#t.findAll(u).map(({queryKey:r})=>[r,this.setQueryData(r,c,f)]))}getQueryState(u){const c=this.defaultQueryOptions({queryKey:u});return this.#t.get(c.queryHash)?.state}removeQueries(u){const c=this.#t;It.batch(()=>{c.findAll(u).forEach(f=>{c.remove(f)})})}resetQueries(u,c){const f=this.#t;return It.batch(()=>(f.findAll(u).forEach(r=>{r.reset()}),this.refetchQueries({type:"active",...u},c)))}cancelQueries(u,c={}){const f={revert:!0,...c},r=It.batch(()=>this.#t.findAll(u).map(o=>o.cancel(f)));return Promise.all(r).then(oe).catch(oe)}invalidateQueries(u,c={}){return It.batch(()=>(this.#t.findAll(u).forEach(f=>{f.invalidate()}),u?.refetchType==="none"?Promise.resolve():this.refetchQueries({...u,type:u?.refetchType??u?.type??"active"},c)))}refetchQueries(u,c={}){const f={...c,cancelRefetch:c.cancelRefetch??!0},r=It.batch(()=>this.#t.findAll(u).filter(o=>!o.isDisabled()&&!o.isStatic()).map(o=>{let m=o.fetch(void 0,f);return f.throwOnError||(m=m.catch(oe)),o.state.fetchStatus==="paused"?Promise.resolve():m}));return Promise.all(r).then(oe)}fetchQuery(u){const c=this.defaultQueryOptions(u);c.retry===void 0&&(c.retry=!1);const f=this.#t.build(this,c);return f.isStaleByTime(Bl(c.staleTime,f))?f.fetch(c):Promise.resolve(f.state.data)}prefetchQuery(u){return this.fetchQuery(u).then(oe).catch(oe)}fetchInfiniteQuery(u){return u._type="infinite",this.fetchQuery(u)}prefetchInfiniteQuery(u){return this.fetchInfiniteQuery(u).then(oe).catch(oe)}ensureInfiniteQueryData(u){return u._type="infinite",this.ensureQueryData(u)}resumePausedMutations(){return xi.isOnline()?this.#e.resumePausedMutations():Promise.resolve()}getQueryCache(){return this.#t}getMutationCache(){return this.#e}getDefaultOptions(){return this.#l}setDefaultOptions(u){this.#l=u}setQueryDefaults(u,c){this.#a.set(kn(u),{queryKey:u,defaultOptions:c})}getQueryDefaults(u){const c=[...this.#a.values()],f={};return c.forEach(r=>{Fn(u,r.queryKey)&&Object.assign(f,r.defaultOptions)}),f}setMutationDefaults(u,c){this.#u.set(kn(u),{mutationKey:u,defaultOptions:c})}getMutationDefaults(u){const c=[...this.#u.values()],f={};return c.forEach(r=>{Fn(u,r.mutationKey)&&Object.assign(f,r.defaultOptions)}),f}defaultQueryOptions(u){if(u._defaulted)return u;const c={...this.#l.queries,...this.getQueryDefaults(u.queryKey),...u,_defaulted:!0};return c.queryHash||(c.queryHash=lf(c.queryKey,c)),c.refetchOnReconnect===void 0&&(c.refetchOnReconnect=c.networkMode!=="always"),c.throwOnError===void 0&&(c.throwOnError=!!c.suspense),!c.networkMode&&c.persister&&(c.networkMode="offlineFirst"),c.queryFn===af&&(c.enabled=!1),c}defaultMutationOptions(u){return u?._defaulted?u:{...this.#l.mutations,...u?.mutationKey&&this.getMutationDefaults(u.mutationKey),...u,_defaulted:!0}}clear(){this.#t.clear(),this.#e.clear()}},kd=q.createContext(void 0),uf=u=>{const c=q.useContext(kd);if(!c)throw new Error("No QueryClient set, use QueryClientProvider to set one");return c},r0=({client:u,children:c})=>(q.useEffect(()=>(u.mount(),()=>{u.unmount()}),[u]),d.jsx(kd.Provider,{value:u,children:c})),Fd=q.createContext(!1),o0=()=>q.useContext(Fd);Fd.Provider;function h0(){let u=!1;return{clearReset:()=>{u=!1},reset:()=>{u=!0},isReset:()=>u}}var d0=q.createContext(h0()),m0=()=>q.useContext(d0),y0=(u,c,f)=>{const r=f?.state.error&&typeof u.throwOnError=="function"?Xd(u.throwOnError,[f.state.error,f]):u.throwOnError;(u.suspense||u.experimental_prefetchInRender||r)&&(c.isReset()||(u.retryOnMount=!1))},v0=u=>{q.useEffect(()=>{u.clearReset()},[u])},g0=({result:u,errorResetBoundary:c,throwOnError:f,query:r,suspense:o})=>u.isError&&!c.isReset()&&!u.isFetching&&r&&(o&&u.data===void 0||Xd(f,[u.error,r])),p0=u=>{if(u.suspense){const f=o=>o==="static"?o:Math.max(o??1e3,1e3),r=u.staleTime;u.staleTime=typeof r=="function"?(...o)=>f(r(...o)):f(r),typeof u.gcTime=="number"&&(u.gcTime=Math.max(u.gcTime,1e3))}},b0=(u,c)=>u.isLoading&&u.isFetching&&!c,S0=(u,c)=>u?.suspense&&c.isPending,Cd=(u,c,f)=>c.fetchOptimistic(u).catch(()=>{f.clearReset()});function x0(u,c,f){const r=o0(),o=m0(),m=uf(),S=m.defaultQueryOptions(u);m.getDefaultOptions().queries?._experimental_beforeQuery?.(S);const M=m.getQueryCache().get(S.queryHash),g=u.subscribed!==!1;S._optimisticResults=r?"isRestoring":g?"optimistic":void 0,p0(S),y0(S,o,M),v0(o);const y=!m.getQueryCache().get(S.queryHash),[z]=q.useState(()=>new c(m,S)),x=z.getOptimisticResult(S),j=!r&&g;if(q.useSyncExternalStore(q.useCallback(H=>{const w=j?z.subscribe(It.batchCalls(H)):oe;return z.updateResult(),w},[z,j]),()=>z.getCurrentResult(),()=>z.getCurrentResult()),q.useEffect(()=>{z.setOptions(S)},[S,z]),S0(S,x))throw Cd(S,z,o);if(g0({result:x,errorResetBoundary:o,throwOnError:S.throwOnError,query:M,suspense:S.suspense}))throw x.error;return m.getDefaultOptions().queries?._experimental_afterQuery?.(S,x),S.experimental_prefetchInRender&&!$n.isServer()&&b0(x,r)&&(y?Cd(S,z,o):M?.promise)?.catch(oe).finally(()=>{z.updateResult()}),S.notifyOnChangeProps?x:z.trackResult(x)}function Ye(u,c){return x0(u,l0)}function $d(){throw location.href="/auth/login?next="+encodeURIComponent(location.pathname+location.search),new Error("signing in…")}async function Ve(u){const c=await fetch(u);if(c.status===401&&$d(),!c.ok)throw new Error(await c.text());return c.json()}async function E0(u,c,f){const o=await fetch(c,{method:u});if(!o.ok)throw new Error(await o.text());return o.status===204?{}:o.json()}async function cf(u,c){const f=await fetch(u,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(c||{})});if(f.status===401&&$d(),!f.ok)throw new Error(await f.text());return f.json()}function j0(){return Ye({queryKey:["config"],queryFn:async()=>{const u=await Ve("/api/config");return u.auth.enabled&&!u.me&&(location.href="/auth/login?next="+encodeURIComponent(location.pathname+location.search),await new Promise(()=>{})),u},staleTime:1/0})}function T0(){document.body.classList.toggle("sb-open")}function Ei(){document.body.classList.remove("sb-open")}function Pt({name:u}){return d.jsx("svg",{className:"ico","aria-hidden":"true",children:d.jsx("use",{href:`#i-${u}`})})}function Wn(u){return d.jsxs(d.Fragment,{children:[d.jsx("div",{id:"sb-backdrop",onClick:Ei}),d.jsxs("aside",{id:"sidebar",children:[u.vault,u.projectsNav,u.tree??d.jsx("nav",{id:"tree","aria-label":"Files"}),u.orgBar]}),d.jsxs("main",{id:"main",children:[u.topbar,d.jsx("article",{id:"content",className:u.contentClass??"markdown",ref:u.contentRef,onScroll:u.onContentScroll,children:u.children})]})]})}function ji(u){const{name:c,onHome:f,showSignout:r,admin:o,gear:m}=u;return d.jsxs("header",{id:"vault",children:[d.jsx("span",{id:"vault-badge","aria-hidden":"true",children:"🐻"}),d.jsx("span",{id:"vault-name",className:f?"vault-link":void 0,onClick:f,role:f?"button":void 0,tabIndex:f?0:void 0,onKeyDown:S=>{f&&(S.key==="Enter"||S.key===" ")&&(S.preventDefault(),f())},children:c}),d.jsxs("div",{className:"vault-actions",children:[o&&d.jsxs("button",{id:"adminbar",className:"adminbar",title:"Hub administration — signup policy"+(o.pending?" and pending approvals":""),onClick:o.onClick,children:[d.jsx(Pt,{name:"shield"}),d.jsxs("span",{children:["Admin",o.pending?" · "+o.pending:""]})]}),m&&d.jsx("button",{id:"settings-btn",className:"icon-btn2",title:"Manage organization","aria-label":"Manage organization",onClick:m.onClick,children:d.jsx(Pt,{name:"users"})}),r&&d.jsx("a",{id:"signout",href:"/auth/logout",title:"Sign out","aria-label":"Sign out",children:d.jsx(Pt,{name:"power"})})]})]})}function In(u){return d.jsxs("header",{id:"topbar",children:[d.jsx("button",{id:"menu-btn",className:"icon-btn",title:"Menu","aria-label":"Menu",onClick:T0,children:d.jsx(Pt,{name:"menu"})}),d.jsx("span",{id:"crumb",children:u.crumb}),d.jsx("span",{id:"meta",children:u.meta}),u.actions]})}let sf={msg:"",err:!1,shown:!1},pi=[],Nd;function Dd(u){sf=u,pi.forEach(c=>c())}function He(u,c=!1){Dd({msg:u,err:c,shown:!0}),clearTimeout(Nd),Nd=setTimeout(()=>Dd({...sf,shown:!1}),3200)}function O0(){const u=q.useSyncExternalStore(c=>(pi.push(c),()=>{pi=pi.filter(f=>f!==c)}),()=>sf);return d.jsx("div",{id:"toast",className:u.shown?"show"+(u.err?" err":""):"",children:u.msg})}let Wd=null,bi=[];function Id(u){Wd=u,bi.forEach(c=>c())}function A0(u,c,f="",r="OK"){return new Promise(o=>Id({kind:"prompt",title:u,label:c,value:f,okLabel:r,resolve:o}))}function z0(){const u=q.useSyncExternalStore(c=>(bi.push(c),()=>{bi=bi.filter(f=>f!==c)}),()=>Wd);return u?u.kind==="prompt"?d.jsx(M0,{m:u}):d.jsx(C0,{m:u}):null}function Pd(){Id(null)}function M0({m:u}){const c=q.useRef(null),f=o=>{Pd(),u.resolve(o)},r=()=>f(c.current.value.trim()||null);return q.useEffect(()=>{c.current.focus(),c.current.select();const o=m=>{m.key==="Escape"&&f(null),m.key==="Enter"&&r()};return document.addEventListener("keydown",o),()=>document.removeEventListener("keydown",o)},[]),d.jsx("div",{className:"modal-back",onClick:o=>o.target===o.currentTarget&&f(null),children:d.jsxs("div",{className:"modal",children:[d.jsx("h3",{children:u.title}),d.jsx("label",{className:"modal-label",children:u.label}),d.jsx("input",{className:"modal-input",type:"text",autoComplete:"off",defaultValue:u.value,ref:c}),d.jsxs("div",{className:"modal-actions",children:[d.jsx("button",{className:"ai-btn",onClick:()=>f(null),children:"Cancel"}),d.jsx("button",{className:"pbtn",onClick:r,children:u.okLabel})]})]})})}function C0({m:u}){const c=q.useRef(null),f=r=>{Pd(),u.resolve(r)};return q.useEffect(()=>{c.current.focus();const r=o=>{o.key==="Escape"&&f(!1),o.key==="Enter"&&f(!0)};return document.addEventListener("keydown",r),()=>document.removeEventListener("keydown",r)},[]),d.jsx("div",{className:"modal-back",onClick:r=>r.target===r.currentTarget&&f(!1),children:d.jsxs("div",{className:"modal",children:[d.jsx("h3",{children:u.title}),d.jsx("p",{className:"modal-msg",children:u.message}),d.jsxs("div",{className:"modal-actions",children:[d.jsx("button",{className:"ai-btn",onClick:()=>f(!1),children:"Cancel"}),d.jsx("button",{className:u.danger?"danger-btn":"pbtn",onClick:()=>f(!0),ref:c,children:u.confirmLabel})]})]})})}function N0(u){return Ye({queryKey:["projects"],queryFn:()=>Ve("/api/projects"),enabled:u,refetchInterval:3e4,select:c=>c.projects||[]})}function D0(u){return Ye({queryKey:["orgs"],queryFn:()=>Ve("/api/orgs"),enabled:u,select:c=>c.orgs||[]})}function _0(u){return Ye({queryKey:["admin","pending"],queryFn:()=>Ve("/api/admin/pending"),enabled:u,select:c=>c.pending||[]})}function tm(){const u=uf();return()=>Promise.all([u.invalidateQueries({queryKey:["projects"]}),u.invalidateQueries({queryKey:["orgs"]})]).then(()=>{})}function em(u){return u.split("/").map(encodeURIComponent).join("/")}function _d(u){return u.split("/").map(decodeURIComponent).join("/")}const R0=new Set(["insights","history"]);function lm(u,c){const f=u.replace(/^\/+/,"");if(c!=="hub")return{path:f?_d(f):""};const r=f.indexOf("/");if(r===-1)return{project:f,path:""};const o={project:f.slice(0,r),path:_d(f.slice(r+1))},m=o.path.indexOf("/"),S=m===-1?o.path:o.path.slice(0,m);return R0.has(S)&&(o.view=S,o.viewTarget=m===-1?"":o.path.slice(m+1).replace(/\/+$/,""),o.path=""),o}function U0(u,c){const f=em(u);return c?"/"+c+(f?"/"+f:""):"/"+f}function Rd(u,c,f){let r=(c?"/"+c:"")+"/"+u;return u==="history"&&f&&(r+="/"+em(f.replace(/\/+$/,""))),r}let ff="POP";const Ps=new Set;function am(){for(const u of Ps)u()}window.addEventListener("popstate",()=>{ff="POP",am()});function Ze(u,c){const f=location.pathname+location.search;!c?.replace&&f===u||(history[c?.replace?"replaceState":"pushState"](null,"",u),ff=c?.replace?"REPLACE":"PUSH",am())}function rf(){return q.useSyncExternalStore(u=>(Ps.add(u),()=>{Ps.delete(u)}),()=>location.pathname)}function H0(){return ff}function q0({to:u}){return q.useEffect(()=>{Ze(u,{replace:!0})},[u]),null}const Ud=["#5b8def","#f5a623","#4cc38a","#e0679b","#8b7bf0","#3ec8c8","#e6934a"];function w0(u){let c=0;for(const f of u)c=c*31+f.charCodeAt(0)>>>0;return Ud[c%Ud.length]}function Hd({projects:u,currentId:c}){const f=tm(),r=async()=>{const o=await A0("New project","Project name","","Create");if(o)try{const m=await cf("/api/projects",{name:o});await f(),Ze("/"+m.project.id),He(`Created “${m.project.name}”.`)}catch(m){He("Could not create the project: "+m.message,!0)}};return d.jsxs("nav",{id:"projects","aria-label":"Projects",children:[d.jsxs("div",{className:"nav-head",children:[d.jsx("span",{children:"Projects"}),d.jsx("button",{className:"nav-add",title:"New project",onClick:r,children:"+"})]}),d.jsx("ul",{children:u.map(o=>d.jsx("li",{children:d.jsxs("div",{className:"row"+(c===o.id?" active":""),title:o.name,tabIndex:0,role:"button",onClick:()=>{Ze("/"+o.id),Ei()},onKeyDown:m=>{(m.key==="Enter"||m.key===" ")&&(m.preventDefault(),m.currentTarget.click())},children:[d.jsx("span",{className:"proj-mark",style:{background:w0(o.name)},children:o.name.trim()[0]||"?"}),d.jsx("span",{className:"label",children:o.name})]})},o.id))})]})}function Q0({org:u,onManage:c}){return u?d.jsxs("footer",{id:"orgbar",children:[d.jsx("span",{id:"org-name",title:"Manage organization",role:"button",tabIndex:0,onClick:()=>c(u),onKeyDown:f=>{(f.key==="Enter"||f.key===" ")&&(f.preventDefault(),c(u))},children:u.name}),u.role==="owner"&&d.jsx("button",{id:"invite-btn",title:"Manage this organization",onClick:()=>c(u),children:"Manage"})]}):null}function B0({authEnabled:u,onCreate:c}){const f=q.useRef(null),r=q.useRef(null),o=()=>{const m=f.current.value.trim(),S=m.match(/join\/([0-9a-f]+)/)||m.match(/^([0-9a-f]{8,})$/);if(!S){He("That doesn't look like an invite link.",!0);return}location.href="/join/"+S[1]};return d.jsxs("div",{className:"onboard",children:[d.jsx("h1",{children:"Welcome to BearDrive"}),d.jsx("p",{children:"You're signed in, but you're not part of any project yet."}),u&&d.jsxs("div",{className:"ob-card",children:[d.jsx("h3",{children:"Have an invite link?"}),d.jsx("p",{children:"A teammate can send you a join link. Paste it here:"}),d.jsxs("div",{className:"ob-row",children:[d.jsx("input",{id:"ob-invite",type:"text",placeholder:"https://…/join/…",autoComplete:"off",ref:f}),d.jsx("button",{id:"ob-join",className:"pbtn",onClick:o,children:"Join"})]})]}),d.jsxs("div",{className:"ob-card",children:[d.jsx("h3",{children:"Or start a new project"}),d.jsx("p",{children:"Create a shared space for your team's files."}),d.jsxs("div",{className:"ob-row",children:[d.jsx("input",{id:"ob-name",type:"text",placeholder:"Project name, e.g. wiki",autoComplete:"off",ref:r}),d.jsx("button",{id:"ob-create",className:"pbtn",onClick:()=>c(r.current.value.trim()),children:"Create"})]})]})]})}function Y0(u,c=!0){const f=Ye({queryKey:["tree",u],queryFn:()=>Ve(u+"tree"),enabled:c,refetchInterval:15e3}),r=q.useMemo(()=>{const o=[],m=new Map,S=M=>{for(const g of M.children||[])g.dir?(m.set(g.path,g),S(g)):o.push(g)};return f.data&&S(f.data),{flatFiles:o,dirIndex:m}},[f.data]);return{tree:f.data,...r,loaded:!!f.data}}function G0(u,c){return Ye({queryKey:["heat",u],queryFn:()=>Ve(u+"heat?days=30"),enabled:c,staleTime:6e4,refetchInterval:6e4}).data?.entries??null}function L0(u,c,f){return Ye({queryKey:["history",u,"prefix",c,20],queryFn:()=>Ve(u+"history?prefix="+encodeURIComponent(c)+"&n=20"),enabled:f,staleTime:15e3}).data?.entries??null}function qd(u,c,f){if(!u)return null;if(!f)return u[c]||null;const r={human:0,agent:0,share:0};for(const[o,m]of Object.entries(u))o.startsWith(c+"/")&&(r.human+=m.human||0,r.agent+=m.agent||0,r.share+=m.share||0);return r.human||r.agent||r.share?r:null}function Pn(u){return(u.human||0)+(u.agent||0)+(u.share||0)}function Si(u){const c=Pn(u);if(!c)return"";let f=c+(c===1?" read":" reads");return u.agent&&(f+=" ("+u.agent+" agent)"),f}function X0(u){const c=Pn(u);return c?c<3?1:c<10?2:c<30?3:4:0}async function K0(u,c,f){const r=await f.arrayBuffer(),o=await Z0(r),m=async(g,y)=>{const z=await fetch(g,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(y)});if(!z.ok)throw new Error(await z.text());return z.json()},S={path:c,sha256:o,size:f.size},M=await m(u+"upload/init",S);if(M.mode==="direct"){if(!M.exists){const g=await fetch(M.url,{method:M.method||"PUT",headers:M.headers||{},body:r});if(!g.ok)throw new Error("storage upload failed: "+g.status)}await m(u+"upload/commit",S)}else{const g=await fetch(u+"upload/content?path="+encodeURIComponent(c),{method:"PUT",body:r});if(!g.ok)throw new Error(await g.text())}}async function Z0(u){if(crypto.subtle){const c=await crypto.subtle.digest("SHA-256",u);return[...new Uint8Array(c)].map(f=>f.toString(16).padStart(2,"0")).join("")}return V0(new Uint8Array(u))}function V0(u){const c=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),f=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),r=(g,y)=>g>>>y|g<<32-y,o=u.length,m=new Uint8Array((o+8>>6)+1<<6);m.set(u),m[o]=128;const S=new DataView(m.buffer);S.setUint32(m.length-8,Math.floor(o*8/4294967296)),S.setUint32(m.length-4,o*8>>>0);const M=new Uint32Array(64);for(let g=0;g>>3,nt=r(M[L-2],17)^r(M[L-2],19)^M[L-2]>>>10;M[L]=M[L-16]+$+M[L-7]+nt>>>0}let[y,z,x,j,H,w,Q,G]=f;for(let L=0;L<64;L++){const $=r(H,6)^r(H,11)^r(H,25),nt=G+$+(H&w^~H&Q)+c[L]+M[L]>>>0,Mt=(r(y,2)^r(y,13)^r(y,22))+(y&z^y&x^z&x)>>>0;G=Q,Q=w,w=H,H=j+nt>>>0,j=x,x=z,z=y,y=nt+Mt>>>0}f[0]+=y,f[1]+=z,f[2]+=x,f[3]+=j,f[4]+=H,f[5]+=w,f[6]+=Q,f[7]+=G}return[...f].map(g=>(g>>>0).toString(16).padStart(8,"0")).join("")}const J0=/\.(md|markdown)$/i,k0=/\.(png|jpe?g|gif|svg|webp|ico|bmp|avif)$/i,F0=/\.(txt|log|json|ya?ml|toml|csv|go|py|js|ts|jsx|tsx|sh|bash|zsh|rb|rs|c|h|cpp|java|kt|swift|sql|html|css|xml|ini|conf|env|mod|sum|jsonl)$/i;function nm(u){if(u<1024)return u+" B";const c=["KB","MB","GB","TB"];let f=-1;do u/=1024,f++;while(u>=1024&&fd.jsx(W0,{node:f,...c},f.path))})}function W0({node:u,...c}){const{expanded:f,onToggle:r,currentPath:o,listingShowing:m,onOpen:S}=c,M=u.dir?f.has(u.path):!1,g=()=>{if(u.dir&&o===u.path&&m){r(u.path);return}S(u.path),u.dir||Ei()};return d.jsxs("li",{className:(u.dir?"dir":"file")+(u.dir&&!M?" collapsed":""),children:[d.jsxs("div",{className:"row"+(o===u.path?" active":""),"data-path":u.path,tabIndex:0,role:"button",title:u.name,"aria-expanded":u.dir?M:void 0,onClick:g,onKeyDown:y=>{(y.key==="Enter"||y.key===" ")&&(y.preventDefault(),g())},children:[d.jsx("span",{className:"chev",onClick:y=>{u.dir&&(y.stopPropagation(),r(u.path))},children:d.jsx(Pt,{name:"chevd"})}),d.jsx("span",{className:"ticon",children:d.jsx(Pt,{name:u.dir?"folder":"doc"})}),d.jsx("span",{className:"label",children:u.name})]}),u.dir&&d.jsx(im,{nodes:u.children||[],...c})]})}function I0(u){const c=u.split("/"),f=[];let r="";for(let o=0;o{r=r?r+"/"+o:o;const S=r,M=m===f.length-1;return d.jsxs("span",{children:[m>0&&d.jsx("span",{className:"crumb-sep",children:"/"}),M?d.jsx("span",{children:o}):d.jsx("span",{className:"crumb-seg",title:S,onClick:()=>c(S),children:o})]},S)})})}const tg={add:"plus",edit:"edit",delete:"x"},eg={add:"added",edit:"edited",delete:"deleted"};function cm({entry:u,onOpen:c}){const[f,r]=q.useState(!1),o=u.kind==="put"?"edit":u.kind,m=u.user_name?`${u.user_name} <${u.user}>`:u.user||u.author||"unknown",S=[u.device.name||u.device.id,u.device.os,u.device.ip].filter(Boolean).join(" · "),M=o!=="delete",g=y=>{y.target.tagName!=="A"&&M&&c(u.path)};return d.jsxs("div",{className:"hentry "+o+(M?" clickable":""),tabIndex:M?0:void 0,role:M?"button":void 0,onClick:g,onKeyDown:y=>{M&&(y.key==="Enter"||y.key===" ")&&(y.preventDefault(),c(u.path))},children:[d.jsxs("div",{className:"hline",children:[d.jsx("span",{className:"hkind",children:d.jsx(Pt,{name:tg[o]||"dot"})}),d.jsx("span",{className:"hpath",children:u.path}),d.jsx("span",{className:"htag",children:eg[o]||o}),d.jsx("span",{className:"htime",children:new Date(u.time).toLocaleString()})]}),d.jsxs("div",{className:"hmeta",children:[d.jsx("span",{className:"hwho",children:m}),d.jsx("span",{className:"hdev",children:S}),d.jsx("span",{className:"hsize",children:u.size?nm(u.size):""})]}),u.note&&d.jsx("div",{className:"hnote"+(f?" open":""),tabIndex:0,role:"button",title:f?"Collapse note":"Show full note","aria-expanded":f,onClick:y=>{y.stopPropagation(),y.target.tagName!=="A"&&r(!f)},onKeyDown:y=>{(y.key==="Enter"||y.key===" ")&&(y.preventDefault(),y.stopPropagation(),r(!f))},children:u.note.split(/(https?:\/\/\S+)/).map((y,z)=>/^https?:\/\//.test(y)?d.jsx("a",{href:y,target:"_blank",rel:"noopener",children:y},z):y)})]})}function lg(u){const{node:c,heatMap:f,onOpen:r}=u,o=(c.children||[]).slice().sort((y,z)=>Number(z.dir||!1)-Number(y.dir||!1)||y.name.localeCompare(z.name)),m=o.filter(y=>y.dir).length,S=o.length-m,M=[];m&&M.push(m+(m===1?" folder":" folders")),S&&M.push(S+(S===1?" file":" files"));const g=qd(f,c.path,!0);return g&&M.push(Si(g)+" in 30 days"),d.jsxs("div",{className:"dirlist",children:[d.jsxs("h1",{className:"dl-title",children:[d.jsx("span",{className:"dl-title-icon",children:d.jsx(Pt,{name:"folder"})}),d.jsx("span",{children:c.name})]}),d.jsx("p",{className:"dl-sub",children:M.join(" · ")||"Empty folder"}),o.length===0?d.jsx("div",{className:"dl-empty",children:"Nothing in this folder yet."}):d.jsx("div",{className:"dl-items",children:o.map(y=>{let z="";if(y.dir){const j=(y.children||[]).length;z=j+(j===1?" item":" items")}else z=[y.size?nm(y.size):"",y.time?new Date(y.time).toLocaleDateString():""].filter(Boolean).join(" · ");const x=qd(f,y.path,!!y.dir);return x&&(z=Si(x)+(z?" · "+z:"")),d.jsxs("div",{className:"dl-row",tabIndex:0,role:"button",title:y.path,onClick:()=>r(y.path),onKeyDown:j=>{(j.key==="Enter"||j.key===" ")&&(j.preventDefault(),r(y.path))},children:[d.jsx("span",{className:"ticon",children:d.jsx(Pt,{name:y.dir?"folder":"doc"})}),d.jsx("span",{className:"dl-name",children:y.name}),x&&d.jsx("span",{className:"heatdot lvl"+X0(x),title:Si(x)+" in 30 days"}),d.jsx("span",{className:"dl-meta",children:z})]},y.path)})}),u.hub&&d.jsx(ag,{apiBase:u.apiBase,prefix:c.path+"/",onOpen:r,onFullHistory:()=>u.onFullHistory(c.path+"/"),onRendered:u.onRendered})]})}function ag(u){const c=L0(u.apiBase,u.prefix,!0),{onRendered:f}=u;return q.useEffect(()=>{c&&c.length&&f&&f()},[c,f]),!c||c.length===0?null:d.jsxs("div",{className:"dl-history",children:[d.jsx("h3",{className:"dl-h3",children:"Recent changes"}),d.jsx("div",{className:"history dl-hlist",children:c.map((r,o)=>d.jsx(cm,{entry:r,onOpen:u.onOpen},o))}),d.jsx("button",{className:"ai-btn dl-more",onClick:u.onFullHistory,children:"Full history"})]})}function ng(u){const{apiBase:c,path:f,onMeta:r}=u,o=c+"file?path="+encodeURIComponent(f);return q.useEffect(()=>()=>r(""),[f,r]),J0.test(f)?d.jsx(ug,{...u}):k0.test(f)?d.jsx(sg,{src:o,alt:f,onRendered:u.onRendered}):F0.test(f)?d.jsx(fg,{...u,fileURL:o}):d.jsxs("div",{className:"filecard",children:[d.jsx("div",{className:"name",children:f.split("/").pop()}),d.jsx("p",{children:"No preview for this file type."}),d.jsx("a",{className:"btn",download:!0,href:c+"download?path="+encodeURIComponent(f),children:"Download"})]})}function ug(u){const{apiBase:c,path:f,heatMap:r,flatFiles:o,onOpenFile:m,onMeta:S,onRendered:M}=u,{data:g,error:y}=Ye({queryKey:["render",c,f],queryFn:()=>Ve(c+"render?path="+encodeURIComponent(f))}),z=q.useMemo(()=>g?cg(g.html,f,c):"",[g,f,c]);return q.useEffect(()=>{if(!g)return;const x=[];g.author&&x.push(g.author+(g.device?" on "+g.device:"")),g.time&&x.push(new Date(g.time).toLocaleString());const j=r&&r[g.path];j&&Pn(j)&&x.push(Si(j)+" / 30d"),S(x.join(" · ")),M?.()},[g,r,S,M]),y?d.jsxs("div",{className:"empty",children:["Could not load file: ",y.message]}):g?d.jsx("div",{dangerouslySetInnerHTML:{__html:z},onClick:x=>ig(x,f,o,m)}):null}function ig(u,c,f,r){const o=u.target.closest("a");if(!o||!u.currentTarget.contains(o))return;const m=o.getAttribute("href")||"",S=c.includes("/")?c.slice(0,c.lastIndexOf("/")):"";m.startsWith("wiki:")?(u.preventDefault(),rg(decodeURIComponent(m.slice(5)),f,r)):/^([a-z]+:|\/|#)/i.test(m)||(u.preventDefault(),r(um(S,decodeURIComponent(m))))}function cg(u,c,f){const r=c.includes("/")?c.slice(0,c.lastIndexOf("/")):"",o=S=>f+"file?path="+encodeURIComponent(S),m=new DOMParser().parseFromString(u,"text/html");for(const S of m.querySelectorAll("img")){const M=S.getAttribute("src")||"";/^([a-z]+:|\/)/i.test(M)||S.setAttribute("src",o(um(r,M)))}for(const S of m.querySelectorAll("a")){const M=S.getAttribute("href")||"";/^https?:/i.test(M)&&(S.setAttribute("target","_blank"),S.setAttribute("rel","noopener"))}return m.body.innerHTML}function sg({src:u,alt:c,onRendered:f}){return d.jsx("img",{src:u,alt:c,onLoad:f})}function fg(u){const{path:c,fileURL:f,onRendered:r}=u,{data:o,error:m}=Ye({queryKey:["text",f],queryFn:async()=>{const S=await fetch(f);if(!S.ok)throw new Error(await S.text());return S.text()}});return q.useEffect(()=>{o!=null&&r?.()},[o,r]),m?d.jsxs("div",{className:"empty",children:["Could not load file: ",m.message]}):o==null?null:d.jsx("pre",{className:"plain",children:o},c)}function rg(u,c,f){const r=u.toLowerCase(),o=c.find(m=>m.path.toLowerCase()===r||m.path.toLowerCase()===r+".md")||c.find(m=>{const S=m.name.toLowerCase();return S===r||S===r+".md"});o&&f(o.path)}function og({url:u,copied:c,onClose:f}){const r=u.split("/s/")[1];return d.jsx("div",{className:"modal-back",onClick:o=>o.target===o.currentTarget&&f(),children:d.jsxs("div",{className:"modal",children:[d.jsx("h3",{children:"Public link created"}),d.jsxs("p",{children:[d.jsx("b",{children:"Anyone with this link can view this file"})," — no account needed. It always shows the latest version until you revoke it."]}),d.jsx("div",{className:"modal-url",children:u}),d.jsxs("div",{className:"modal-actions",children:[d.jsx("button",{className:"pbtn",onClick:()=>of(u).then(o=>He(o?"Copied.":"Select and copy the link above.")),children:c?"Copied ✓":"Copy link"}),d.jsx("button",{className:"ai-btn",onClick:()=>window.open(u,"_blank"),children:"Open"}),d.jsx("button",{className:"ai-del",onClick:async()=>{try{await E0("DELETE","/api/shares/"+r),He("Link revoked — it no longer works."),f()}catch(o){He(o.message,!0)}},children:"Revoke"}),d.jsx("button",{className:"ai-btn",onClick:f,children:"Done"})]})]})})}function wd(u,c){if(!u)return{score:0,hits:[]};const f=u.toLowerCase(),r=c.toLowerCase();let o=0,m=0,S=0;const M=[];for(let g=0;g3&&r.endsWith("ies")?o=r.slice(0,-3)+"y":r.length>3&&r.endsWith("es")?o=r.slice(0,-2):r.length>2&&r.endsWith("s")&&(o=r.slice(0,-1)),o?wd(o,c):null}function dg({text:u,hits:c}){const f=[];let r=0;return c.forEach((o,m)=>{o>r&&f.push(u.slice(r,o)),f.push(d.jsx("b",{children:u[o]},m)),r=o+1}),f.push(u.slice(r)),d.jsx("span",{className:"plabel",children:f})}function mg({open:u,onClose:c,candidates:f}){const[r,o]=q.useState(""),[m,S]=q.useState(0),M=q.useRef(null),g=q.useRef(null),y=q.useMemo(()=>{if(!u)return[];const x=[];for(const j of f()){const H=hg(r,j.label);H&&x.push({...j,score:H.score,hits:H.hits})}return x.sort((j,H)=>H.score-j.score),x.slice(0,40)},[u,r,f]);q.useEffect(()=>{u&&(o(""),S(0),M.current?.focus())},[u]),q.useEffect(()=>S(0),[r]),q.useEffect(()=>{g.current?.children[m]?.scrollIntoView({block:"nearest"})},[m,y]);const z=x=>{c(),x.run()};return q.useEffect(()=>{if(!u)return;const x=j=>{if(j.key==="Escape")j.preventDefault(),c();else if(j.key==="ArrowDown"||j.key==="ArrowUp"){j.preventDefault();const H=y.length;H&&S(w=>(w+(j.key==="ArrowDown"?1:H-1))%H)}else j.key==="Enter"&&(j.preventDefault(),y[m]&&z(y[m]))};return window.addEventListener("keydown",x),()=>window.removeEventListener("keydown",x)},[u,y,m]),u?d.jsx("div",{id:"palette-overlay",onClick:x=>x.target===x.currentTarget&&c(),children:d.jsxs("div",{id:"palette",role:"dialog","aria-label":"Search and quick actions",children:[d.jsxs("div",{id:"palette-inputwrap",children:[d.jsx(Pt,{name:"search"}),d.jsx("input",{id:"palette-input",type:"text",placeholder:"Search file names, projects, actions…",autoComplete:"off",spellCheck:!1,ref:M,value:r,onChange:x=>o(x.target.value)})]}),d.jsx("ul",{id:"palette-results",ref:g,children:y.length===0?d.jsx("li",{className:"pempty",children:"No matches — search covers file names, projects, and actions"}):y.map((x,j)=>d.jsxs("li",{className:j===m?"selected":void 0,onClick:()=>z(x),onMouseMove:()=>m!==j&&S(j),children:[d.jsx("span",{className:"picon",children:d.jsx(Pt,{name:x.icon})}),d.jsx(dg,{text:x.label,hits:x.hits}),d.jsx("span",{className:"pkind",children:x.kind})]},x.kind+":"+x.label))}),d.jsx("footer",{id:"palette-hint",children:"↑↓ navigate · ⏎ select · esc close"})]})}):null}const Ks=[{key:"claude",label:"Claude Code & Cowork"},{key:"hermes",label:"Hermes",hook:"hermes",note:"Registers BearDrive's hooks in Hermes's config: pull before every turn, push after edits with a session note, and report file reads to Insights."},{key:"codex",label:"Codex",hook:"codex",note:"Registers hooks in .codex/hooks.json.",extra:"Run /hooks inside Codex once to trust the project's .codex layer — after that every turn pulls, edits push automatically, and reads are reported to Insights."}];function yg(u,c){const f=window.location.origin,r=c.id;if(u.key==="claude")return[{title:"Add the BearDrive plugin",desc:"One time, in any Claude Code session. The plugin ships the beardrive skill, the /beardrive commands, and turn-boundary sync hooks — and Claude Cowork shares the same plugins, so installing it once covers both.",code:`/plugin marketplace add runbear-io/beardrive -/plugin install beardrive@beardrive`},{title:"Set up this project conversationally",desc:"In a Claude Code or Cowork session in the folder where you want the files, run:",code:"/beardrive:install connect to "+f+", project "+r,extra:"Claude installs the CLI, signs this machine in, mounts the project, and registers the sync hooks — pull the latest before every turn, push after edits (stamped with the session that made them), and report file reads to Insights. It asks before anything it changes."}];const o=(c.name||"project").toLowerCase().replace(/[^a-z0-9._-]+/g,"-")||"project";return[{title:"Install the BearDrive CLI",desc:"One static binary. Homebrew on macOS and Linux; releases and `go install` also work.",code:"brew install runbear-io/tap/beardrive"},{title:"Sign in to this hub",desc:"Opens the browser once and stores a device token on this machine — the synced folder itself never holds credentials.",code:"bdrive login "+f},{title:"Mount the project into a local folder",desc:"Run it where you want the files. An existing folder works too — contents merge, and re-running init later (or after moving the folder) just resumes.",code:"mkdir -p ~/"+o+" && cd ~/"+o+` -bdrive init --project `+r},{title:"Connect "+u.label,desc:u.note,code:"bdrive hooks install --agent "+u.hook,extra:u.extra}]}function vg(){try{return localStorage.getItem("bdrive-guide-agent")||"claude"}catch{return"claude"}}function gg({project:u}){const[c,f]=q.useState(vg),r=Ks.find(o=>o.key===c)||Ks[0];return d.jsxs("div",{className:"guide",children:[d.jsx("h1",{className:"in-title",children:u.name}),d.jsx("p",{className:"dl-sub",children:"Mount this project as a folder on any machine and connect your coding agent: files sync both ways in the background, every change is journaled with who made it, and agent reads feed Insights."}),d.jsx("div",{className:"gd-tabs",children:Ks.map(o=>d.jsx("button",{className:"gd-tab"+(o.key===r.key?" active":""),"data-key":o.key,onClick:()=>{f(o.key);try{localStorage.setItem("bdrive-guide-agent",o.key)}catch{}},children:o.label},o.key))}),d.jsxs("div",{className:"gd-body",children:[yg(r,u).map((o,m)=>d.jsxs("div",{className:"gd-step",children:[d.jsxs("div",{className:"gd-step-head",children:[d.jsx("span",{className:"gd-num",children:m+1}),d.jsx("span",{className:"gd-step-title",children:o.title})]}),o.desc&&d.jsx("p",{className:"gd-desc",children:o.desc}),o.code&&d.jsx(pg,{code:o.code}),o.extra&&d.jsx("p",{className:"gd-desc gd-extra",children:o.extra})]},m)),d.jsx("p",{className:"gd-done",children:"That's it — the folder now syncs on its own. Every agent turn starts from the latest state, edits appear here (and on every teammate's mount) within seconds, and what your agents read shows up in Insights."})]})]})}function pg({code:u}){const[c,f]=q.useState("Copy");return d.jsxs("pre",{className:"gd-code",children:[d.jsx("code",{children:u}),d.jsx("button",{className:"gd-copy",onClick:async()=>{f(await of(u)?"Copied":"Copy failed"),setTimeout(()=>f("Copy"),1400)},children:c})]})}const Jn=3,ka=30;function bg(u,c){return Ye({queryKey:["heatDevices",u],queryFn:()=>Ve(u+"heat?by=device&days=30"),enabled:c,retry:!1,staleTime:6e4}).data?.devices??null}function Qd(u){const[c,f]=q.useState("all"),{flatFiles:r,heatMap:o,devices:m}=u,S=Date.now(),M=r.map(g=>{const y=o&&o[g.path]||{},z=g.time?Math.max(0,(S-new Date(g.time).getTime())/864e5):0,x=c==="all"?Pn(y):y[c]||0;return{path:g.path,reads:x,agent:y.agent||0,total:Pn(y),days:z,danger:x>=Jn&&z>=ka}});return d.jsxs("div",{className:"insights",children:[d.jsx("h1",{className:"in-title",children:"Knowledge insights"}),d.jsx("p",{className:"dl-sub",children:"Reads over the last 30 days × how long since each file changed. Hot but stale knowledge — read a lot, maintained by nobody — is the danger zone."}),d.jsx("div",{className:"in-lens",children:["all","human","agent"].map(g=>d.jsx("button",{className:"in-lens-btn"+(g===c?" active":""),onClick:()=>f(g),children:g==="all"?"All reads":g==="human"?"Human reads":"Agent reads"},g))}),d.jsx("h3",{className:"dl-h3",children:"Map — cell size = reads, color = freshness"}),d.jsx(xg,{pts:M,onOpenFile:u.onOpenFile,onOpenFolder:u.onOpenFolder,isFolder:u.isFolder}),d.jsx("h3",{className:"dl-h3",children:"Reads × freshness"}),d.jsx(Eg,{pts:M,onOpenFile:u.onOpenFile}),d.jsx("h3",{className:"dl-h3",children:"Hot path — top files by reads"}),d.jsx(jg,{pts:M,lens:c,onOpenFile:u.onOpenFile}),m&&m.length>0&&d.jsxs(d.Fragment,{children:[d.jsx("h3",{className:"dl-h3",children:"Agent coverage — which agents read which areas"}),d.jsx(Tg,{devices:m})]})]})}function Sg(u){const c=[[76,195,138],[232,196,84],[224,93,93]],f=Math.min(1,Math.max(0,u/300))*(c.length-1),r=Math.min(c.length-2,Math.floor(f)),o=f-r,m=c[r].map((S,M)=>Math.round(S+(c[r+1][M]-S)*o));return`rgb(${m[0]},${m[1]},${m[2]})`}function Bd(u,c,f,r,o){const m=u.reduce((y,z)=>y+z.value,0);if(!m||r<=0||o<=0)return[];const S=u.slice().sort((y,z)=>z.value-y.value).map(y=>({it:y,a:y.value/m*r*o})),M=(y,z)=>{const j=y.reduce((w,Q)=>w+Q.a,0)/z;let H=0;for(const w of y){const Q=w.a/j;H=Math.max(H,Q/j,j/Q)}return H},g=[];for(;S.length;){const y=r>=o,z=y?o:r,x=[S.shift()];for(;S.length&&M(x.concat(S[0]),z)<=M(x,z);)x.push(S.shift());const j=x.reduce((w,Q)=>w+Q.a,0)/z;let H=0;for(const w of x){const Q=w.a/j;y?g.push({item:w.it,x:c,y:f+H,w:j,h:Q}):g.push({item:w.it,x:c+H,y:f,w:Q,h:j}),H+=Q}y?(c+=j,r-=j):(f+=j,o-=j)}return g}const Zs=15;function xg({pts:u,onOpenFile:c,onOpenFolder:f,isFolder:r}){const S=new Map;for(const g of u){const y=g.path.includes("/")?g.path.split("/")[0]:"/";let z=S.get(y);z||S.set(y,z={name:y,files:[],value:0}),z.files.push(g),z.value+=g.reads+1}const M=[];for(const g of Bd([...S.values()],0,0,720,480)){const y=g.item,z=y.name==="/"?"":y.name;if(M.push(d.jsx("rect",{x:g.x+1,y:g.y+1,width:Math.max(0,g.w-2),height:Math.max(0,g.h-2),rx:3,className:"in-tm-group","data-dir":z},"g"+y.name)),g.w>46&&g.h>Zs+10){let j=y.name==="/"?"(root)":y.name;const H=Math.floor((g.w-8)/6);j.length>H&&(j=j.slice(0,Math.max(1,H-1))+"…"),M.push(d.jsx("text",{x:g.x+5,y:g.y+12,className:"in-tm-glabel","data-dir":z,children:j},"gl"+y.name))}const x=Bd(y.files.map(j=>({...j,name:j.path.split("/").pop(),value:j.reads+1})),g.x+2,g.y+Zs,Math.max(0,g.w-4),Math.max(0,g.h-Zs-2));for(const j of x)if(M.push(d.jsx("rect",{x:j.x+.6,y:j.y+.6,width:Math.max(.4,j.w-1.2),height:Math.max(.4,j.h-1.2),rx:1.5,fill:Sg(j.item.days),className:"in-tm-cell","data-path":j.item.path,children:d.jsx("title",{children:`${j.item.path} — ${j.item.reads} read${j.item.reads===1?"":"s"}/30d · changed ${Math.round(j.item.days)}d ago`})},j.item.path)),j.w>54&&j.h>16){const H=Math.floor((j.w-8)/6);let w=(j.item.danger?"⚠ ":"")+j.item.name;w.length>H&&(w=w.slice(0,Math.max(1,H-1))+"…"),H>=5&&M.push(d.jsx("text",{x:j.x+4.5,y:j.y+12.5,className:"in-tm-label","data-path":j.item.path,children:w},"l"+j.item.path))}}return d.jsx("svg",{viewBox:"0 0 720 480",className:"in-chart in-treemap",onClick:g=>{const y=g.target.closest("[data-path], [data-dir]");if(!y)return;const z=y.getAttribute("data-path");if(z)return c(z);const x=y.getAttribute("data-dir");x&&r(x)&&f(x)},children:M})}function Eg({pts:u,onOpenFile:c}){const o={l:44,r:16,t:20,b:34},m=Math.max(ka*2,...u.map(x=>x.days)),S=Math.max(Jn*2,...u.map(x=>x.reads)),M=x=>Math.log10(x+1)/Math.log10(m+1),g=x=>Math.log10(x+1)/Math.log10(S+1),y=x=>o.l+M(x)*(720-o.l-o.r),z=x=>360-o.b-g(x)*(360-o.t-o.b);return d.jsxs("svg",{viewBox:"0 0 720 360",className:"in-chart",children:[d.jsx("rect",{x:y(ka),y:o.t,width:720-o.r-y(ka),height:z(Jn)-o.t,className:"in-danger-zone"}),d.jsx("line",{x1:y(ka),y1:o.t,x2:y(ka),y2:360-o.b,className:"in-threshold"}),d.jsx("line",{x1:o.l,y1:z(Jn),x2:720-o.r,y2:z(Jn),className:"in-threshold"}),d.jsx("line",{x1:o.l,y1:360-o.b,x2:720-o.r,y2:360-o.b,className:"in-axis"}),d.jsx("line",{x1:o.l,y1:o.t,x2:o.l,y2:360-o.b,className:"in-axis"}),d.jsx("text",{x:(o.l+720-o.r)/2,y:352,className:"in-label",children:"days since last change →"}),d.jsx("text",{x:12,y:(o.t+360-o.b)/2,className:"in-label",transform:`rotate(-90 12 ${(o.t+360-o.b)/2})`,children:"reads / 30d →"}),d.jsx("text",{x:720-o.r-6,y:o.t+14,className:"in-quad in-quad-danger",textAnchor:"end",children:"hot + stale"}),d.jsx("text",{x:o.l+6,y:o.t+14,className:"in-quad",children:"hot + fresh"}),d.jsx("text",{x:720-o.r-6,y:360-o.b-8,className:"in-quad",textAnchor:"end",children:"cold + stale"}),d.jsx("text",{x:720-o.r-6,y:o.t+28,className:"in-label",textAnchor:"end",children:"dot size = agent share of reads"}),u.map(x=>{const j=x.total?(x.agent||0)/x.total:0;return d.jsx("circle",{cx:Number(y(x.days).toFixed(1)),cy:Number(z(x.reads).toFixed(1)),r:Number((3+4*j).toFixed(1)),className:"in-pt"+(x.danger?" danger":x.reads?"":" cold"),onClick:()=>c(x.path),children:d.jsx("title",{children:`${x.path} — ${x.reads} read${x.reads===1?"":"s"} / 30d · changed ${Math.round(x.days)}d ago`})},x.path)})]})}function jg({pts:u,lens:c,onOpenFile:f}){const r=u.filter(m=>m.reads>0).sort((m,S)=>S.reads-m.reads||S.days-m.days).slice(0,20);if(!r.length)return d.jsx("div",{className:"dl-empty",children:"No reads in the window yet."});const o=r[0].reads;return d.jsxs(d.Fragment,{children:[d.jsx("div",{className:"in-hotpath",children:r.map(m=>{const S=c==="agent"?1:c==="human"?0:m.total?m.agent/m.total:0,M=m.reads/o*100;return d.jsxs("div",{className:"in-hp-row",tabIndex:0,role:"button",title:m.danger?`${m.reads} read${m.reads===1?"":"s"}/30d · unchanged ${Math.round(m.days)}d — review this file`:m.path,onClick:()=>f(m.path),onKeyDown:g=>{(g.key==="Enter"||g.key===" ")&&(g.preventDefault(),f(m.path))},children:[d.jsx("span",{className:"in-hp-name"+(m.danger?" danger":""),children:m.path+(m.danger?" ⚠":"")}),d.jsxs("span",{className:"in-hp-bar",children:[d.jsx("span",{className:"in-hp-agent",style:{width:(M*S).toFixed(1)+"%"}}),d.jsx("span",{className:"in-hp-human",style:{width:(M*(1-S)).toFixed(1)+"%"}})]}),d.jsx("span",{className:"in-hp-count",children:m.reads})]},m.path)})}),d.jsxs("p",{className:"in-legend",children:[d.jsx("span",{className:"in-sw agent"})," agent reads ",d.jsx("span",{className:"in-sw human"})," human reads"]})]})}function Tg({devices:u}){const c=new Map;for(const j of u)for(const[H,w]of Object.entries(j.folders||{}))c.set(H,(c.get(H)||0)+w);const f=[...c.entries()].sort((j,H)=>H[1]-j[1]).slice(0,12).map(j=>j[0]),r=u.slice(0,12),o=140,m=6,S=Math.min(76,Math.max(34,(720-o-8)/f.length)),M=26,g=720,y=m+r.length*M+58,z=Math.max(1,...r.flatMap(j=>f.map(H=>(j.folders||{})[H]||0))),x=j=>{const H=[23,25,31],w=[245,166,35],Q=H.map((G,L)=>Math.round(G+(w[L]-G)*j));return`rgb(${Q[0]},${Q[1]},${Q[2]})`};return d.jsxs("svg",{viewBox:`0 0 ${g} ${y}`,className:"in-chart in-matrix",children:[r.map((j,H)=>{let w=j.name||j.id||"";return w.length>20&&(w=w.slice(0,19)+"…"),d.jsxs("g",{children:[d.jsx("text",{x:o-8,y:m+H*M+17,textAnchor:"end",className:"in-label",children:w}),f.map((Q,G)=>{const L=(j.folders||{})[Q]||0;return d.jsx("rect",{x:o+G*S,y:m+H*M,width:S-4,height:M-4,rx:3,fill:x(Math.sqrt(L/z)),children:d.jsx("title",{children:`${j.name||j.id} × ${Q||"(root)"}: ${L} read${L===1?"":"s"}/30d`})},Q)})]},j.id||H)}),f.map((j,H)=>{const w=o+H*S+(S-4)/2,Q=m+r.length*M+14;return d.jsx("text",{x:w,y:Q,className:"in-label",textAnchor:"end",transform:`rotate(-28 ${w} ${Q})`,children:j||"(root)"},j)})]})}function Og(u){const{apiBase:c,target:f,isFolder:r,onMeta:o,onRendered:m}=u,S=f?r(f)?{prefix:f+"/"}:{path:f}:{prefix:""},M="path"in S&&S.path!==void 0?"path="+encodeURIComponent(S.path):"prefix="+encodeURIComponent(S.prefix??""),{data:g,error:y}=Ye({queryKey:["history",c,M,200],queryFn:()=>Ve(c+"history?"+M+"&n=200"),staleTime:15e3});if(q.useEffect(()=>{y&&o("History unavailable: "+y.message)},[y,o]),q.useEffect(()=>{g&&m?.()},[g,m]),!g)return null;const z=g.entries||[];return d.jsxs("div",{className:"history",children:[z.length===0&&d.jsx("div",{className:"empty",children:"No history yet."}),z.map((x,j)=>d.jsx(cm,{entry:x,onOpen:u.onOpen},j))]})}function Ag(u,c){return u?c(u)?u+"/ (folder)":u:"all changes"}function sm(u){const{config:c,apiBase:f,route:r,hub:o,project:m}=u,S=rf(),M=uf(),{tree:g,flatFiles:y,dirIndex:z,loaded:x}=Y0(f,!o||!!m),j=G0(f,o&&!!m&&!!c.reads?.enabled),H=o&&!!m&&!r.path&&!r.view,w=!!u.canInsights&&(r.view==="insights"||H),Q=bg(f,w);q.useEffect(()=>{w&&M.invalidateQueries({queryKey:["heat",f]})},[w,f,M]);const G=r.path,L=!!G&&z.has(G),$=!!G&&x&&!z.has(G),nt=L&&!r.view,[Nt,Mt]=q.useState(()=>new Set),Rt=q.useRef(!0);q.useEffect(()=>{if(!g||!Rt.current)return;Rt.current=!1;const at=(g.children||[]).filter(F=>F.dir);at.length===1&&Mt(F=>new Set(F).add(at[0].path))},[g]),q.useEffect(()=>{if(!G||!x)return;Mt(F=>{const gt=new Set(F);for(const qe of I0(G))gt.add(qe);return z.has(G)&>.add(G),gt});const at=document.querySelector(`#tree .row[data-path="${CSS.escape(G)}"]`);at&&at.scrollIntoView({block:"nearest"})},[G,x,z]);const W=q.useCallback(at=>{Mt(F=>{const gt=new Set(F);return gt.has(at)?gt.delete(at):gt.add(at),gt})},[]),rt=q.useRef(null),Gt=q.useRef(new Map),ae=q.useRef({key:"",want:0,attempts:0});q.useEffect(()=>{ae.current={key:S,want:H0()==="POP"?Gt.current.get(S)??0:0,attempts:0}},[S]);const Vt=q.useCallback(()=>{const at=rt.current,F=ae.current;!at||F.key!==S||F.attempts>=3||(F.attempts++,at.scrollTo({top:F.want,behavior:"instant"}))},[S]),Ut=q.useCallback(()=>{rt.current&&Gt.current.set(S,rt.current.scrollTop)},[S]),Tt=q.useCallback(at=>{Ze(U0(at,m?.id)),Ei()},[m?.id]),te=q.useCallback(at=>Ze(Rd("history",m?.id,at)),[m?.id]),[he,D]=q.useState(""),[B,J]=q.useState(""),[ot,vt]=q.useState(null),[b,U]=q.useState(!1),[Y,X]=q.useState(!1),I=q.useRef(null),et=q.useRef(null),ht=o&&!!m&&$,Xt=o&&!!m,Ot=!!c.upload?.enabled&&(!o||!!m),hl=$,ia=$||o&&!!m&&L,Fa=f+"download?path="+encodeURIComponent(G),ca=q.useCallback(async()=>{try{const at=await fetch(f+"shares",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:G})});if(!at.ok)throw new Error(await at.text());const F=await at.json(),gt=await of(F.url);vt({url:F.url,copied:gt})}catch(at){He("Share failed: "+at.message,!0)}},[f,G]),je=q.useCallback(()=>{if(!G)return te("");te(L?G+"/":G)},[G,L,te]),dl=q.useCallback(()=>I.current?.click(),[]),$a=async()=>{const at=I.current,F=at.files?.[0];if(at.value="",!F)return;const gt=G?L?G:G.includes("/")?G.slice(0,G.lastIndexOf("/")):"":"",qe=gt?gt+"/"+F.name:F.name;try{J(`Uploading ${qe}…`),await K0(f,qe,F),J(`Uploaded ${qe}`),await M.invalidateQueries({queryKey:["tree",f]}),Tt(qe)}catch(sa){J("Upload failed: "+sa.message)}};q.useEffect(()=>{J("")},[S]),q.useEffect(()=>{const at=F=>{(F.metaKey||F.ctrlKey)&&F.key.toLowerCase()==="k"&&(F.preventDefault(),X(gt=>!gt))};return window.addEventListener("keydown",at),()=>window.removeEventListener("keydown",at)},[]);const Ti=q.useCallback(()=>{const at=[],F=(gt,qe,sa,fa)=>at.push({icon:gt,label:qe,kind:sa,run:fa});if(o&&m&&G&&($&&F("share","Share: "+G,"action",ca),F("hist","History: "+G,"action",je),$&&F("download","Download: "+G,"action",()=>et.current?.click())),o&&m&&F("hist","History: whole project","action",()=>te("")),Ot&&F("upload","Upload a file…","action",dl),o)for(const gt of u.projects||[])(!m||gt.id!==m.id)&&F("folder","Switch to project: "+gt.name,"project",()=>Ze("/"+gt.id));c.auth?.enabled&&F("power","Sign out","action",()=>window.location.href="/auth/logout");for(const gt of z.keys())F("folder",gt,"folder",()=>Tt(gt));for(const gt of y)F("doc",gt.path,"file",()=>Tt(gt.path));return at},[o,m,G,$,Ot,c.auth?.enabled,z,y,u.projects,ca,je,dl,te,Tt]);q.useEffect(()=>{if(!b)return;const at=()=>U(!1);return document.addEventListener("click",at),()=>document.removeEventListener("click",at)},[b]);const Yl=q.useCallback(at=>z.has(at),[z]);let Je="markdown",Te;r.view==="insights"?(Je="view",Te=u.canInsights?d.jsx(Qd,{flatFiles:y,heatMap:j,devices:Q,onOpenFile:Tt,onOpenFolder:Tt,isFolder:Yl}):d.jsx("div",{className:"empty",children:"Insights is for hub admins and org owners."})):r.view==="history"?(Je="view",Te=d.jsx(Og,{apiBase:f,target:r.viewTarget||"",isFolder:Yl,onOpen:Tt,onMeta:D,onRendered:Vt})):G?x?L?(Je="view",Te=d.jsx(lg,{node:z.get(G),heatMap:j,hub:o&&!!m,apiBase:f,onOpen:Tt,onFullHistory:te,onRendered:Vt})):Te=d.jsx(ng,{apiBase:f,path:G,heatMap:j,flatFiles:y,onOpenFile:Tt,onMeta:D,onRendered:Vt}):Te=d.jsx("div",{className:"empty",children:"Loading…"}):H?(Je="view",Te=d.jsxs(d.Fragment,{children:[d.jsx(gg,{project:m}),u.canInsights&&d.jsx("div",{className:"home-insights",children:d.jsx(Qd,{flatFiles:y,heatMap:j,devices:Q,onOpenFile:Tt,onOpenFolder:Tt,isFolder:Yl})})]})):Te=d.jsx("div",{className:"empty",children:"Select a file to read it."});const Wa=G?d.jsx(P0,{path:G,onOpenFolder:Tt}):r.view==="insights"?"Insights — "+(m?.name??""):r.view==="history"?"History — "+Ag(r.viewTarget||"",Yl):H?m.name:null,Oi=d.jsx(In,{crumb:Wa,meta:B||he,actions:d.jsxs(d.Fragment,{children:[d.jsxs("button",{className:"btn ghost",title:"Search (⌘K)",onClick:()=>X(!0),children:[d.jsx(Pt,{name:"search"})," ",d.jsx("span",{className:"lbl",children:"Search"})," ",d.jsx("kbd",{children:"⌘K"})]}),ht&&d.jsxs("button",{id:"share-btn",className:"btn",onClick:ca,children:[d.jsx(Pt,{name:"share"})," ",d.jsx("span",{className:"lbl",children:"Share"})]}),Xt&&d.jsxs("button",{id:"history-btn",className:"btn",onClick:je,children:[d.jsx(Pt,{name:"hist"})," ",d.jsx("span",{className:"lbl",children:"History"})]}),Ot&&d.jsxs("button",{id:"upload-btn",className:"btn",onClick:dl,children:[d.jsx(Pt,{name:"upload"})," ",d.jsx("span",{className:"lbl",children:"Upload"})]}),d.jsx("input",{type:"file",hidden:!0,ref:I,onChange:$a}),hl&&d.jsxs("a",{id:"download",className:"btn",download:!0,href:Fa,ref:et,children:[d.jsx(Pt,{name:"download"})," ",d.jsx("span",{className:"lbl",children:"Download"})]}),ia&&d.jsx("button",{id:"more-btn",className:"btn icon-only",title:"More actions","aria-label":"More actions",onClick:at=>{at.stopPropagation(),U(!b)},children:d.jsx(Pt,{name:"dots"})}),b&&d.jsxs("div",{id:"more-menu",role:"menu",children:[Xt&&d.jsx("button",{className:"more-item",onClick:je,children:"History"}),Ot&&d.jsx("button",{className:"more-item",onClick:dl,children:"Upload"}),hl&&d.jsx("button",{className:"more-item",onClick:()=>et.current?.click(),children:"Download"}),u.canInsights&&d.jsx("button",{className:"more-item",onClick:()=>Ze(Rd("insights",m?.id)),children:"Insights"})]})]})});return d.jsxs(d.Fragment,{children:[d.jsx(Wn,{vault:u.sidebar.vault,projectsNav:u.sidebar.projectsNav,orgBar:u.sidebar.orgBar,tree:d.jsx($0,{root:g,expanded:Nt,onToggle:W,currentPath:G,listingShowing:nt,onOpen:Tt}),topbar:Oi,contentClass:Je,contentRef:rt,onContentScroll:Ut,children:Te}),ot&&d.jsx(og,{url:ot.url,copied:ot.copied,onClose:()=>vt(null)}),d.jsx(mg,{open:Y,onClose:()=>X(!1),candidates:Ti})]})}function zg({config:u}){const c=rf(),f=tm(),[r,o]=q.useState(null),m=q.useMemo(()=>{const $=c.match(/^\/join\/([0-9a-f]+)\/?$/);return $?$[1]:null},[c]),{data:S}=N0(!m),{data:M}=D0(!m),g=!!u.auth.admin,{data:y}=_0(g),z=q.useMemo(()=>lm(c,"hub"),[c]),x=q.useMemo(()=>S&&(S.find($=>$.id===z.project)||r&&S.find($=>$.org===r)||S[0])||null,[S,z.project,r]);if(q.useEffect(()=>{document.title=x?x.name+" — BearDrive":u.brand||u.volume||"BearDrive"},[x,u]),m)return d.jsx(Mg,{token:m,onDone:async $=>{o($),await f(),Ze("/",{replace:!0})}});const j=u.brand||u.volume||"BearDrive",H=x&&M?.find($=>$.id===x.org)||null,w=M?.find($=>$.role==="owner")||null,Q=H&&H.role==="owner"?H:w,G=g||(H?H.role==="owner":!1),L=d.jsx(ji,{name:S?x?x.name:j:"…",onHome:x?()=>Ze("/"+x.id):void 0,showSignout:u.auth.enabled,admin:g?{pending:y?.length||0,onClick:()=>{}}:void 0,gear:Q?{onClick:()=>{}}:void 0});return!S||!M?d.jsx(Wn,{vault:L,topbar:d.jsx(In,{}),children:d.jsx("div",{className:"empty",children:"Loading…"})}):x?z.project!==x.id?d.jsx(q0,{to:"/"+x.id}):d.jsx(sm,{config:u,apiBase:"/api/p/"+x.id+"/",route:z,hub:!0,project:x,projects:S,canInsights:G,sidebar:{vault:L,projectsNav:d.jsx(Hd,{projects:S,currentId:x.id}),orgBar:d.jsx(Q0,{org:H,onManage:()=>{}})}},x.id):d.jsx(Wn,{vault:L,projectsNav:d.jsx(Hd,{projects:S}),topbar:d.jsx(In,{}),contentClass:"view",children:d.jsx(B0,{authEnabled:u.auth.enabled,onCreate:async $=>{if(!$){He("Give the project a name.",!0);return}try{const nt=await cf("/api/projects",{name:$});await f(),Ze("/"+nt.project.id),He(`Created “${nt.project.name}”.`)}catch(nt){He("Could not create the project: "+nt.message,!0)}}})})}function Mg({token:u,onDone:c}){return q.useEffect(()=>{let f=!1;return cf("/api/invites/"+u).then(r=>{f||(He(`Welcome — you joined the “${r.org.name}” team. Opening its projects…`),c(r.org.id))}).catch(r=>{f||String(r.message).includes("signing in")||(He("Could not accept the invite: "+r.message,!0),c(null))}),()=>{f=!0}},[u]),d.jsx(Wn,{vault:d.jsx(ji,{name:"…",showSignout:!0}),topbar:d.jsx(In,{}),children:d.jsx("div",{className:"empty",children:"Joining…"})})}function Cg({config:u}){const c=rf(),f=u.volume||"BearDrive";q.useEffect(()=>{document.title=u.brand||f},[u,f]);const r=q.useMemo(()=>lm(c,"volume"),[c]);return d.jsx(sm,{config:u,apiBase:"/api/",route:r,hub:!1,sidebar:{vault:d.jsx(ji,{name:f,showSignout:u.auth.enabled})}})}function Ng(){const{data:u}=j0();return d.jsxs(d.Fragment,{children:[u?u.mode==="hub"?d.jsx(zg,{config:u}):d.jsx(Cg,{config:u}):d.jsx(Wn,{vault:d.jsx(ji,{name:"…",showSignout:!1}),topbar:d.jsx(In,{}),children:d.jsx("div",{className:"empty",children:"Loading…"})}),d.jsx(O0,{}),d.jsx(z0,{})]})}const Dg=new f0({defaultOptions:{queries:{retry:1,refetchOnWindowFocus:!1}}});wv.createRoot(document.getElementById("root")).render(d.jsx(q.StrictMode,{children:d.jsx(r0,{client:Dg,children:d.jsx(Ng,{})})})); diff --git a/internal/webapp/static/index.html b/internal/webapp/static/index.html index 2343b4f..8f53e27 100644 --- a/internal/webapp/static/index.html +++ b/internal/webapp/static/index.html @@ -5,7 +5,7 @@ BearDrive - +