wiki-viewer 1.14.1 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.next/standalone/.next/BUILD_ID +1 -1
- package/.next/standalone/.next/build-manifest.json +3 -3
- package/.next/standalone/.next/server/app/_global-error.html +1 -1
- package/.next/standalone/.next/server/app/_global-error.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/_not-found.html +1 -1
- package/.next/standalone/.next/server/app/_not-found.rsc +2 -2
- package/.next/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/api/agent/activity/route.js +6 -6
- package/.next/standalone/.next/server/app/api/agent/activity/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/agent/events/[...path]/route.js +8 -8
- package/.next/standalone/.next/server/app/api/agent/events/[...path]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/agent/files/[...path]/route.js +9 -9
- package/.next/standalone/.next/server/app/api/agent/files/[...path]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/agent/fs/file/[...path]/route.js +8 -8
- package/.next/standalone/.next/server/app/api/agent/fs/file/[...path]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/agent/fs/ls/[[...path]]/route.js +8 -8
- package/.next/standalone/.next/server/app/api/agent/fs/ls/[[...path]]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/agent/fs/move/route.js +8 -8
- package/.next/standalone/.next/server/app/api/agent/fs/move/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/agent/fs/search/route.js +9 -9
- package/.next/standalone/.next/server/app/api/agent/fs/search/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/agent/internal/span/route.js +8 -8
- package/.next/standalone/.next/server/app/api/agent/internal/span/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/agent/settings/route.js +7 -7
- package/.next/standalone/.next/server/app/api/agent/settings/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/agent/sidecar/[...path]/route.js +6 -6
- package/.next/standalone/.next/server/app/api/agent/sidecar/[...path]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/app-proxy/[...path]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/assets/[...path]/route.js +5 -5
- package/.next/standalone/.next/server/app/api/assets/[...path]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/share/[token]/route.js +6 -5
- package/.next/standalone/.next/server/app/api/share/[token]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/share/route.js +4 -4
- package/.next/standalone/.next/server/app/api/share/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/system/browse/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/system/clear-root/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/system/reveal/route.js +6 -6
- package/.next/standalone/.next/server/app/api/system/reveal/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/system/root-status/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/system/set-root/route.js +6 -5
- package/.next/standalone/.next/server/app/api/system/set-root/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/system/workspaces/[id]/open/route.js +5 -4
- package/.next/standalone/.next/server/app/api/system/workspaces/[id]/open/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/system/workspaces/[id]/refresh/route.js +6 -5
- package/.next/standalone/.next/server/app/api/system/workspaces/[id]/refresh/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/system/workspaces/[id]/route.js +5 -4
- package/.next/standalone/.next/server/app/api/system/workspaces/[id]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/system/workspaces/route.js +7 -6
- package/.next/standalone/.next/server/app/api/system/workspaces/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/upload/[...path]/route.js +5 -5
- package/.next/standalone/.next/server/app/api/upload/[...path]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/wiki/app/route.js +7 -7
- package/.next/standalone/.next/server/app/api/wiki/app/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/wiki/backlinks/route.js +7 -7
- package/.next/standalone/.next/server/app/api/wiki/backlinks/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/wiki/content/route.js +7 -7
- package/.next/standalone/.next/server/app/api/wiki/content/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/wiki/download/route.js +6 -6
- package/.next/standalone/.next/server/app/api/wiki/download/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/wiki/file/route.js +5 -5
- package/.next/standalone/.next/server/app/api/wiki/file/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/wiki/folder/route.js +5 -5
- package/.next/standalone/.next/server/app/api/wiki/folder/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/wiki/git-branches/route.js +4 -4
- package/.next/standalone/.next/server/app/api/wiki/git-branches/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/wiki/git-checkout/route.js +6 -6
- package/.next/standalone/.next/server/app/api/wiki/git-checkout/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/wiki/git-diff/route.js +4 -4
- package/.next/standalone/.next/server/app/api/wiki/git-diff/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/wiki/git-file-info/route.js +4 -4
- package/.next/standalone/.next/server/app/api/wiki/git-file-info/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/wiki/git-history/route.js +4 -4
- package/.next/standalone/.next/server/app/api/wiki/git-history/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/wiki/git-pull/route.js +8 -8
- package/.next/standalone/.next/server/app/api/wiki/git-pull/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/wiki/move/route.js +6 -6
- package/.next/standalone/.next/server/app/api/wiki/move/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/wiki/new-file/route.js +5 -5
- package/.next/standalone/.next/server/app/api/wiki/new-file/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/wiki/outlinks/route.js +7 -7
- package/.next/standalone/.next/server/app/api/wiki/outlinks/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/wiki/page/route.js +5 -5
- package/.next/standalone/.next/server/app/api/wiki/page/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/wiki/presence/route.js +6 -6
- package/.next/standalone/.next/server/app/api/wiki/presence/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/wiki/route.js +5 -5
- package/.next/standalone/.next/server/app/api/wiki/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/wiki/search/route.js +5 -5
- package/.next/standalone/.next/server/app/api/wiki/search/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/wiki/slugs/route.js +5 -5
- package/.next/standalone/.next/server/app/api/wiki/slugs/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/wiki/upload/route.js +5 -5
- package/.next/standalone/.next/server/app/api/wiki/upload/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/wiki/watch/route.js +5 -5
- package/.next/standalone/.next/server/app/api/wiki/watch/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/index.html +1 -1
- package/.next/standalone/.next/server/app/index.rsc +3 -3
- package/.next/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/index.segments/_full.segment.rsc +3 -3
- package/.next/standalone/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/index.segments/_index.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/index.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/s/[token]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/signin/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0-jzw2_._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0.-oq-7._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__000spch._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__01oin-a._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__01qcera._.js +16 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__02.uul~._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__024967n._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__06booxp._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__071_pmz._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0_0bqpg._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0_1f2cw._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0a6j6r4._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0aoqat-._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0as-u6z._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0bvtbax._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0c-ee48._.js +5 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0e_9pc5._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0esmskc._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0fshk._._.js +20 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0fu72o7._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0k9mili._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0l-wu5u._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0lvz22t._.js +20 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0n-chxk._.js +16 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0n9zdf0._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0nmx3k2._.js +12 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0nzlmkb._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0o0v6hf._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0s38pid._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0s_8poz._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0sfrx~.._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0sggstu._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0u81k~2._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0uibxf_._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0wfv_by._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0wlj-yw._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0w~__xz._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0yat~ul._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0yxauu6._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0zbkgnr._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0zv_j05._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0~rntxj._.js +3 -0
- package/.next/standalone/.next/server/chunks/src_lib_search_0d-_j3u._.js +4 -4
- package/.next/standalone/.next/server/chunks/src_lib_search_0ymmp0c._.js +3 -3
- package/.next/standalone/.next/server/chunks/src_lib_workspaces_ts_0qon40u._.js +4 -0
- package/.next/standalone/.next/server/chunks/ssr/{0~w0_katex_dist_katex_mjs_029cdbg._.js → 0~w0_katex_dist_katex_mjs_0s4yb1t._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0z41nrr._.js → [root-of-the-server]__10te1ye._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_13p348f._.js → node_modules__pnpm_0-a_zjq._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0gos._c._.js → node_modules__pnpm_02l_1_8._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0ru1i2-._.js → node_modules__pnpm_03rzttw._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_08xpp3w._.js → node_modules__pnpm_04frxp9._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0b8odbc._.js → node_modules__pnpm_057-t6m._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0f_n_zp._.js → node_modules__pnpm_05_oahi._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0~i3a.i._.js → node_modules__pnpm_05ans~m._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0i2m0b.._.js → node_modules__pnpm_06-2ia.._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0aha1~u._.js → node_modules__pnpm_086.ow4._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0w.kwue._.js → node_modules__pnpm_0cahog3._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0e0r_qk._.js → node_modules__pnpm_0cxanql._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0ajqqlq._.js → node_modules__pnpm_0e09gmf._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0hzzx9d._.js → node_modules__pnpm_0eqjo2f._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_02bje_g._.js → node_modules__pnpm_0f-yazg._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0xk042~._.js → node_modules__pnpm_0iu44jv._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_11ede0p._.js → node_modules__pnpm_0jh8q66._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0k-7uzm._.js → node_modules__pnpm_0m39f~t._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0xr.ztu._.js → node_modules__pnpm_0ma-8l.._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0i6_kfe._.js → node_modules__pnpm_0met6sx._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_04v1_ty._.js → node_modules__pnpm_0mtrsi0._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0607~kg._.js → node_modules__pnpm_0n_swwn._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0t4l89_._.js → node_modules__pnpm_0ndyy93._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0-_58b8._.js → node_modules__pnpm_0s-cj7c._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0y2h_cz._.js → node_modules__pnpm_0tr41-t._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_08edl1n._.js → node_modules__pnpm_0u.uija._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_0026mgr._.js → node_modules__pnpm_0wiyn6d._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{node_modules__pnpm_09o_spj._.js → node_modules__pnpm_0ygzt82._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/src_app_page_tsx_0ss2.w7._.js +2 -2
- package/.next/standalone/.next/server/middleware-build-manifest.js +3 -3
- package/.next/standalone/.next/server/middleware-manifest.json +1 -1
- package/.next/standalone/.next/server/pages/404.html +1 -1
- package/.next/standalone/.next/server/pages/500.html +1 -1
- package/.next/standalone/.next/static/chunks/0ci7khnv7i~7_.js +17 -0
- package/.next/standalone/.next/static/chunks/0sx~65~lg4mgl.css +5 -0
- package/.next/standalone/package.json +1 -1
- package/README.md +88 -17
- package/bin/postbuild.js +21 -0
- package/bin/wiki-viewer.js +198 -6
- package/package.json +1 -1
- package/.next/standalone/.github/workflows/publish.yml +0 -37
- package/.next/standalone/.handoffs/archive/handoff-20260612-113332.md +0 -98
- package/.next/standalone/.handoffs/archive/handoff-20260612-141032.md +0 -73
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0-.y6im._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0-3_t2y._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0-kjkzt._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0-puax4._.js +0 -4
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__01h996g._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0329ktu._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__03_xj4r._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__05398dt._.js +0 -4
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__06lfvxh._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__06w0aet._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__070_p2a._.js +0 -4
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0905hi1._.js +0 -21
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0aa63~j._.js +0 -5
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0avcplk._.js +0 -4
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0b8_kyo._.js +0 -16
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0bticq1._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0bwevvu._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0c__k3q._.js +0 -4
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0cp~z4x._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0fmdv9h._.js +0 -20
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0h0qbwr._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0jk~oyi._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0ndq77b._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0nvgpuk._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0ocvng2._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0ps4h~.._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0q7jqwp._.js +0 -12
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0qew~6p._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0s_9f-a._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0uv7b8u._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0uv8.9i._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0vfe2io._.js +0 -4
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0w11kjy._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0wc-.e4._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0ymovmp._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0~c6ouv._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0~rhs0u._.js +0 -16
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__10h9tid._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__10yk-u1._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__11105ew._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__11a3dhw._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__13420tt._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__13h~pdf._.js +0 -3
- package/.next/standalone/.next/static/chunks/02kg.lbkfi1yc.css +0 -5
- package/.next/standalone/.next/static/chunks/0rcwd6-.iu~nd.js +0 -17
- package/.next/standalone/.pi/ownership.json +0 -3
- package/.next/standalone/AGENTS.md +0 -114
- package/.next/standalone/DESIGN.md +0 -521
- package/.next/standalone/README.md +0 -821
- package/.next/standalone/TODO.md +0 -20
- package/.next/standalone/agents/bootstrap-prompt.md +0 -14
- package/.next/standalone/agents/wiki-viewer-skill/SKILL.md +0 -456
- package/.next/standalone/bin/postbuild.js +0 -78
- package/.next/standalone/bin/wiki-viewer.js +0 -922
- package/.next/standalone/certificates/localhost-key.pem +0 -28
- package/.next/standalone/certificates/localhost.pem +0 -24
- package/.next/standalone/docs/agent-collab-plan.md +0 -1615
- package/.next/standalone/docs/agent-collab-v2-plan.md +0 -771
- package/.next/standalone/docs/agent-fs-plan.md +0 -232
- package/.next/standalone/docs/editorial-skin-spec.md +0 -242
- package/.next/standalone/docs/file-vs-collab-authority.md +0 -124
- package/.next/standalone/docs/mobile-readiness-spec.md +0 -229
- package/.next/standalone/docs/workspacing-plan.md +0 -364
- package/.next/standalone/packages/wiki-viewer-mcp/README.md +0 -195
- package/.next/standalone/packages/wiki-viewer-mcp/bench-e2e.mjs +0 -166
- package/.next/standalone/packages/wiki-viewer-mcp/bench-latency.mjs +0 -87
- package/.next/standalone/packages/wiki-viewer-mcp/bench-payload.mjs +0 -45
- package/.next/standalone/packages/wiki-viewer-mcp/dist/http-client.js +0 -331
- package/.next/standalone/packages/wiki-viewer-mcp/dist/index.js +0 -531
- package/.next/standalone/packages/wiki-viewer-mcp/dist/register.js +0 -94
- package/.next/standalone/packages/wiki-viewer-mcp/dist/state-cache.js +0 -28
- package/.next/standalone/packages/wiki-viewer-mcp/package-lock.json +0 -1716
- package/.next/standalone/packages/wiki-viewer-mcp/package.json +0 -41
- package/.next/standalone/packages/wiki-viewer-mcp/src/http-client.ts +0 -459
- package/.next/standalone/packages/wiki-viewer-mcp/src/index.ts +0 -638
- package/.next/standalone/packages/wiki-viewer-mcp/src/register.ts +0 -144
- package/.next/standalone/packages/wiki-viewer-mcp/src/state-cache.ts +0 -55
- package/.next/standalone/packages/wiki-viewer-mcp/tsconfig.json +0 -19
- package/.next/standalone/pnpm-lock.yaml +0 -6697
- package/.next/standalone/pnpm-workspace.yaml +0 -8
- package/.next/standalone/postcss.config.mjs +0 -2
- package/.next/standalone/src/app/api/agent/activity/route.ts +0 -59
- package/.next/standalone/src/app/api/agent/admin/agents/[agentId]/revoke/route.ts +0 -40
- package/.next/standalone/src/app/api/agent/admin/agents/route.ts +0 -33
- package/.next/standalone/src/app/api/agent/admin/registrations/[regId]/approve/route.ts +0 -83
- package/.next/standalone/src/app/api/agent/admin/registrations/[regId]/deny/route.ts +0 -36
- package/.next/standalone/src/app/api/agent/admin/registrations/route.ts +0 -27
- package/.next/standalone/src/app/api/agent/events/[...path]/route.ts +0 -148
- package/.next/standalone/src/app/api/agent/files/[...path]/route.ts +0 -219
- package/.next/standalone/src/app/api/agent/fs/file/[...path]/route.ts +0 -446
- package/.next/standalone/src/app/api/agent/fs/ls/[[...path]]/route.ts +0 -152
- package/.next/standalone/src/app/api/agent/fs/move/route.ts +0 -130
- package/.next/standalone/src/app/api/agent/fs/search/route.ts +0 -272
- package/.next/standalone/src/app/api/agent/internal/span/route.ts +0 -121
- package/.next/standalone/src/app/api/agent/register/[regId]/route.ts +0 -50
- package/.next/standalone/src/app/api/agent/register/route.ts +0 -118
- package/.next/standalone/src/app/api/agent/settings/route.ts +0 -34
- package/.next/standalone/src/app/api/agent/settings/token/regenerate/route.ts +0 -20
- package/.next/standalone/src/app/api/agent/sidecar/[...path]/route.ts +0 -53
- package/.next/standalone/src/app/api/agents/install/route.ts +0 -143
- package/.next/standalone/src/app/api/agents/skill/route.ts +0 -20
- package/.next/standalone/src/app/api/agents/skill.tar.gz/route.ts +0 -87
- package/.next/standalone/src/app/api/app-proxy/[...path]/route.ts +0 -247
- package/.next/standalone/src/app/api/assets/[...path]/route.ts +0 -75
- package/.next/standalone/src/app/api/auth/[...all]/route.ts +0 -7
- package/.next/standalone/src/app/api/owner/init/route.ts +0 -14
- package/.next/standalone/src/app/api/share/[token]/route.ts +0 -269
- package/.next/standalone/src/app/api/share/route.ts +0 -127
- package/.next/standalone/src/app/api/system/admins/route.ts +0 -103
- package/.next/standalone/src/app/api/system/auth-config/route.ts +0 -22
- package/.next/standalone/src/app/api/system/auth-settings/route.ts +0 -86
- package/.next/standalone/src/app/api/system/browse/route.ts +0 -82
- package/.next/standalone/src/app/api/system/clear-root/route.ts +0 -16
- package/.next/standalone/src/app/api/system/config/route.ts +0 -14
- package/.next/standalone/src/app/api/system/pins/route.ts +0 -38
- package/.next/standalone/src/app/api/system/reveal/route.ts +0 -36
- package/.next/standalone/src/app/api/system/root-status/route.ts +0 -13
- package/.next/standalone/src/app/api/system/set-root/route.ts +0 -53
- package/.next/standalone/src/app/api/system/users/route.ts +0 -120
- package/.next/standalone/src/app/api/system/workspaces/[id]/open/route.ts +0 -34
- package/.next/standalone/src/app/api/system/workspaces/[id]/refresh/route.ts +0 -32
- package/.next/standalone/src/app/api/system/workspaces/[id]/route.ts +0 -78
- package/.next/standalone/src/app/api/system/workspaces/route.ts +0 -128
- package/.next/standalone/src/app/api/upload/[...path]/route.ts +0 -85
- package/.next/standalone/src/app/api/wiki/app/route.ts +0 -60
- package/.next/standalone/src/app/api/wiki/backlinks/route.ts +0 -29
- package/.next/standalone/src/app/api/wiki/content/route.ts +0 -159
- package/.next/standalone/src/app/api/wiki/download/route.ts +0 -100
- package/.next/standalone/src/app/api/wiki/file/route.ts +0 -57
- package/.next/standalone/src/app/api/wiki/folder/route.ts +0 -34
- package/.next/standalone/src/app/api/wiki/git-branches/route.ts +0 -32
- package/.next/standalone/src/app/api/wiki/git-checkout/route.ts +0 -45
- package/.next/standalone/src/app/api/wiki/git-diff/route.ts +0 -33
- package/.next/standalone/src/app/api/wiki/git-file-info/route.ts +0 -27
- package/.next/standalone/src/app/api/wiki/git-history/route.ts +0 -27
- package/.next/standalone/src/app/api/wiki/git-pull/route.ts +0 -48
- package/.next/standalone/src/app/api/wiki/move/route.ts +0 -61
- package/.next/standalone/src/app/api/wiki/new-file/route.ts +0 -56
- package/.next/standalone/src/app/api/wiki/outlinks/route.ts +0 -76
- package/.next/standalone/src/app/api/wiki/page/route.ts +0 -92
- package/.next/standalone/src/app/api/wiki/presence/route.ts +0 -56
- package/.next/standalone/src/app/api/wiki/route.ts +0 -116
- package/.next/standalone/src/app/api/wiki/search/route.ts +0 -44
- package/.next/standalone/src/app/api/wiki/slugs/route.ts +0 -54
- package/.next/standalone/src/app/api/wiki/upload/route.ts +0 -95
- package/.next/standalone/src/app/api/wiki/watch/route.ts +0 -67
- package/.next/standalone/src/app/globals.css +0 -1249
- package/.next/standalone/src/app/icon.svg +0 -11
- package/.next/standalone/src/app/layout.tsx +0 -78
- package/.next/standalone/src/app/manifest.ts +0 -30
- package/.next/standalone/src/app/page.tsx +0 -3260
- package/.next/standalone/src/app/s/[token]/page.tsx +0 -357
- package/.next/standalone/src/app/signin/page.tsx +0 -16
- package/.next/standalone/src/app/signin/signin-form.tsx +0 -238
- package/.next/standalone/src/components/ai-panel/activity-row.tsx +0 -284
- package/.next/standalone/src/components/ai-panel/ai-panel.tsx +0 -311
- package/.next/standalone/src/components/ai-panel/token-section.tsx +0 -313
- package/.next/standalone/src/components/auth-settings-sheet.tsx +0 -474
- package/.next/standalone/src/components/confirm-dialog.tsx +0 -56
- package/.next/standalone/src/components/dir-picker.tsx +0 -606
- package/.next/standalone/src/components/editor/backlinks-panel.tsx +0 -139
- package/.next/standalone/src/components/editor/bubble-menu.tsx +0 -346
- package/.next/standalone/src/components/editor/callout-extension.ts +0 -36
- package/.next/standalone/src/components/editor/comment-pip.tsx +0 -56
- package/.next/standalone/src/components/editor/comment-thread.tsx +0 -254
- package/.next/standalone/src/components/editor/csv-viewer.tsx +0 -379
- package/.next/standalone/src/components/editor/document-outline.tsx +0 -230
- package/.next/standalone/src/components/editor/editor-toolbar.tsx +0 -564
- package/.next/standalone/src/components/editor/editor.tsx +0 -1327
- package/.next/standalone/src/components/editor/extensions/drag-handle.ts +0 -325
- package/.next/standalone/src/components/editor/extensions/heading-anchors.ts +0 -55
- package/.next/standalone/src/components/editor/extensions/proof-span.ts +0 -60
- package/.next/standalone/src/components/editor/extensions/resizable-image.tsx +0 -159
- package/.next/standalone/src/components/editor/extensions.ts +0 -150
- package/.next/standalone/src/components/editor/file-fallback-viewer.tsx +0 -75
- package/.next/standalone/src/components/editor/folder-index.tsx +0 -236
- package/.next/standalone/src/components/editor/google-doc-viewer.tsx +0 -73
- package/.next/standalone/src/components/editor/image-viewer.tsx +0 -57
- package/.next/standalone/src/components/editor/large-file-gate.tsx +0 -108
- package/.next/standalone/src/components/editor/link-popover.tsx +0 -111
- package/.next/standalone/src/components/editor/media-popover.tsx +0 -212
- package/.next/standalone/src/components/editor/media-viewer.tsx +0 -70
- package/.next/standalone/src/components/editor/mermaid-viewer.tsx +0 -286
- package/.next/standalone/src/components/editor/node-app-viewer.tsx +0 -328
- package/.next/standalone/src/components/editor/notebook-viewer.tsx +0 -371
- package/.next/standalone/src/components/editor/office/docx-viewer.tsx +0 -93
- package/.next/standalone/src/components/editor/office/office-chrome.tsx +0 -83
- package/.next/standalone/src/components/editor/office/pptx-viewer.tsx +0 -104
- package/.next/standalone/src/components/editor/office/xlsx-viewer.tsx +0 -192
- package/.next/standalone/src/components/editor/pdf-viewer.tsx +0 -32
- package/.next/standalone/src/components/editor/proof-span-popover.tsx +0 -162
- package/.next/standalone/src/components/editor/slash-commands.tsx +0 -629
- package/.next/standalone/src/components/editor/source-viewer.tsx +0 -289
- package/.next/standalone/src/components/editor/suggest-edit-popover.tsx +0 -229
- package/.next/standalone/src/components/editor/suggestion-card.tsx +0 -206
- package/.next/standalone/src/components/editor/table-menu.tsx +0 -232
- package/.next/standalone/src/components/editor/view-mode-comment-button.tsx +0 -77
- package/.next/standalone/src/components/editor/website-viewer.tsx +0 -75
- package/.next/standalone/src/components/editor/wiki-link-create-dialog.tsx +0 -189
- package/.next/standalone/src/components/editor/wiki-link-decorator.ts +0 -79
- package/.next/standalone/src/components/editor/wiki-link-extension.ts +0 -120
- package/.next/standalone/src/components/editor/wiki-link-picker.tsx +0 -250
- package/.next/standalone/src/components/layout/viewer-toolbar.tsx +0 -54
- package/.next/standalone/src/components/search/search-command-dialog.tsx +0 -246
- package/.next/standalone/src/components/search/sidebar-search-box.tsx +0 -121
- package/.next/standalone/src/components/search/snippet-text.tsx +0 -48
- package/.next/standalone/src/components/share-dialog.tsx +0 -307
- package/.next/standalone/src/components/theme-provider.tsx +0 -16
- package/.next/standalone/src/components/theme-toggle.tsx +0 -24
- package/.next/standalone/src/components/ui/badge.tsx +0 -35
- package/.next/standalone/src/components/ui/button.tsx +0 -56
- package/.next/standalone/src/components/ui/card.tsx +0 -63
- package/.next/standalone/src/components/ui/collapsible.tsx +0 -9
- package/.next/standalone/src/components/ui/command.tsx +0 -151
- package/.next/standalone/src/components/ui/context-menu.tsx +0 -191
- package/.next/standalone/src/components/ui/dialog.tsx +0 -119
- package/.next/standalone/src/components/ui/dropdown-menu.tsx +0 -194
- package/.next/standalone/src/components/ui/input.tsx +0 -22
- package/.next/standalone/src/components/ui/label.tsx +0 -25
- package/.next/standalone/src/components/ui/popover.tsx +0 -33
- package/.next/standalone/src/components/ui/scroll-area.tsx +0 -47
- package/.next/standalone/src/components/ui/select.tsx +0 -156
- package/.next/standalone/src/components/ui/separator.tsx +0 -30
- package/.next/standalone/src/components/ui/sheet.tsx +0 -140
- package/.next/standalone/src/components/ui/skeleton.tsx +0 -15
- package/.next/standalone/src/components/ui/switch.tsx +0 -28
- package/.next/standalone/src/components/ui/tabs.tsx +0 -54
- package/.next/standalone/src/components/ui/textarea.tsx +0 -21
- package/.next/standalone/src/components/ui/tip.tsx +0 -23
- package/.next/standalone/src/components/ui/toggle-group.tsx +0 -41
- package/.next/standalone/src/components/ui/tooltip.tsx +0 -27
- package/.next/standalone/src/components/view-width-toggle.tsx +0 -70
- package/.next/standalone/src/components/wiki/frontmatter-header.tsx +0 -164
- package/.next/standalone/src/hooks/use-is-mobile.ts +0 -14
- package/.next/standalone/src/lib/app-runner.ts +0 -272
- package/.next/standalone/src/lib/auth/admin.ts +0 -120
- package/.next/standalone/src/lib/auth/allowlist.ts +0 -50
- package/.next/standalone/src/lib/auth/client.ts +0 -4
- package/.next/standalone/src/lib/auth/csrf.ts +0 -68
- package/.next/standalone/src/lib/auth/server.ts +0 -215
- package/.next/standalone/src/lib/cabinets/tree.ts +0 -75
- package/.next/standalone/src/lib/config.ts +0 -114
- package/.next/standalone/src/lib/embeds/detect.ts +0 -142
- package/.next/standalone/src/lib/git-secrets.ts +0 -65
- package/.next/standalone/src/lib/git.ts +0 -503
- package/.next/standalone/src/lib/google/detect.ts +0 -107
- package/.next/standalone/src/lib/markdown/parse-frontmatter.ts +0 -104
- package/.next/standalone/src/lib/markdown/remark-wikilinks.ts +0 -100
- package/.next/standalone/src/lib/markdown/sanitize-schema.ts +0 -106
- package/.next/standalone/src/lib/markdown/to-html.ts +0 -282
- package/.next/standalone/src/lib/markdown/to-markdown.ts +0 -252
- package/.next/standalone/src/lib/proof/activity-shared.ts +0 -31
- package/.next/standalone/src/lib/proof/activity.ts +0 -74
- package/.next/standalone/src/lib/proof/audit.ts +0 -88
- package/.next/standalone/src/lib/proof/auth.ts +0 -143
- package/.next/standalone/src/lib/proof/block-refs.ts +0 -133
- package/.next/standalone/src/lib/proof/blocks.ts +0 -73
- package/.next/standalone/src/lib/proof/client-auth.ts +0 -23
- package/.next/standalone/src/lib/proof/collab-state.ts +0 -81
- package/.next/standalone/src/lib/proof/event-bus.ts +0 -47
- package/.next/standalone/src/lib/proof/file-lock.ts +0 -43
- package/.next/standalone/src/lib/proof/glob.ts +0 -51
- package/.next/standalone/src/lib/proof/idempotency.ts +0 -37
- package/.next/standalone/src/lib/proof/lease.ts +0 -117
- package/.next/standalone/src/lib/proof/mutex.ts +0 -36
- package/.next/standalone/src/lib/proof/ops-applier.ts +0 -727
- package/.next/standalone/src/lib/proof/owner-auth.ts +0 -2
- package/.next/standalone/src/lib/proof/pending.ts +0 -97
- package/.next/standalone/src/lib/proof/proof-span.ts +0 -141
- package/.next/standalone/src/lib/proof/rate-limit.ts +0 -53
- package/.next/standalone/src/lib/proof/raw-fs.ts +0 -197
- package/.next/standalone/src/lib/proof/register-rate-limit.ts +0 -53
- package/.next/standalone/src/lib/proof/registry.ts +0 -195
- package/.next/standalone/src/lib/proof/sidecar.ts +0 -103
- package/.next/standalone/src/lib/proof/suggest-capture.ts +0 -69
- package/.next/standalone/src/lib/proof/types.ts +0 -182
- package/.next/standalone/src/lib/proof-config.ts +0 -14
- package/.next/standalone/src/lib/root-dir.ts +0 -35
- package/.next/standalone/src/lib/search/indexable-exts.ts +0 -25
- package/.next/standalone/src/lib/search/indexer.ts +0 -634
- package/.next/standalone/src/lib/search/sanitize.ts +0 -35
- package/.next/standalone/src/lib/search/search-db.ts +0 -57
- package/.next/standalone/src/lib/search/watcher-pool.ts +0 -79
- package/.next/standalone/src/lib/shared-docs/db.ts +0 -177
- package/.next/standalone/src/lib/toast.ts +0 -9
- package/.next/standalone/src/lib/utils.ts +0 -6
- package/.next/standalone/src/lib/wiki-helpers.ts +0 -36
- package/.next/standalone/src/lib/workspace-client.ts +0 -82
- package/.next/standalone/src/lib/workspace-context.ts +0 -173
- package/.next/standalone/src/lib/workspaces.ts +0 -400
- package/.next/standalone/src/middleware.ts +0 -44
- package/.next/standalone/src/stores/ai-panel-store.ts +0 -79
- package/.next/standalone/src/stores/editor-store.ts +0 -439
- package/.next/standalone/src/stores/pin-store.ts +0 -56
- package/.next/standalone/src/stores/proof-store.ts +0 -124
- package/.next/standalone/src/stores/recent-store.ts +0 -51
- package/.next/standalone/src/stores/search-store.ts +0 -104
- package/.next/standalone/src/stores/show-hidden-store.ts +0 -26
- package/.next/standalone/src/stores/sidebar-width-store.ts +0 -39
- package/.next/standalone/src/stores/skin-store.ts +0 -42
- package/.next/standalone/src/stores/tree-store.ts +0 -52
- package/.next/standalone/src/stores/view-width-store.ts +0 -101
- package/.next/standalone/src/stores/wiki-slugs-store.ts +0 -75
- package/.next/standalone/src/tests/proof/activity-aggregator.test.ts +0 -146
- package/.next/standalone/src/tests/proof/admin-create-user.test.ts +0 -43
- package/.next/standalone/src/tests/proof/agent-fs.test.ts +0 -973
- package/.next/standalone/src/tests/proof/agent-ownership.test.ts +0 -140
- package/.next/standalone/src/tests/proof/agent-workspace-scope.test.ts +0 -134
- package/.next/standalone/src/tests/proof/agents-install.test.ts +0 -110
- package/.next/standalone/src/tests/proof/bench-write.ts +0 -179
- package/.next/standalone/src/tests/proof/better-auth.test.ts +0 -68
- package/.next/standalone/src/tests/proof/block-refs.test.ts +0 -108
- package/.next/standalone/src/tests/proof/blocks.test.ts +0 -92
- package/.next/standalone/src/tests/proof/collab-state.test.ts +0 -501
- package/.next/standalone/src/tests/proof/comments-ops.test.ts +0 -177
- package/.next/standalone/src/tests/proof/editor-roundtrip.test.ts +0 -85
- package/.next/standalone/src/tests/proof/external-edit.test.ts +0 -58
- package/.next/standalone/src/tests/proof/file-lock.test.ts +0 -80
- package/.next/standalone/src/tests/proof/git-branches-checkout.test.ts +0 -136
- package/.next/standalone/src/tests/proof/git-read-features.test.ts +0 -473
- package/.next/standalone/src/tests/proof/git-secrets.test.ts +0 -138
- package/.next/standalone/src/tests/proof/git-sparse.test.ts +0 -257
- package/.next/standalone/src/tests/proof/git-workspace.test.ts +0 -135
- package/.next/standalone/src/tests/proof/git.test.ts +0 -243
- package/.next/standalone/src/tests/proof/glob.test.ts +0 -82
- package/.next/standalone/src/tests/proof/helpers/auth-session.ts +0 -27
- package/.next/standalone/src/tests/proof/markdown-to-html.test.ts +0 -46
- package/.next/standalone/src/tests/proof/ops-applier.test.ts +0 -368
- package/.next/standalone/src/tests/proof/owner-init.test.ts +0 -2
- package/.next/standalone/src/tests/proof/parse-frontmatter.test.ts +0 -60
- package/.next/standalone/src/tests/proof/preload.ts +0 -21
- package/.next/standalone/src/tests/proof/proof-span.test.ts +0 -98
- package/.next/standalone/src/tests/proof/rate-limit.test.ts +0 -54
- package/.next/standalone/src/tests/proof/readonly-enforcement.test.ts +0 -161
- package/.next/standalone/src/tests/proof/reconcile-sidecar.test.ts +0 -195
- package/.next/standalone/src/tests/proof/registration-flow.test.ts +0 -330
- package/.next/standalone/src/tests/proof/registry.test.ts +0 -169
- package/.next/standalone/src/tests/proof/routes.test.ts +0 -516
- package/.next/standalone/src/tests/proof/search-index.test.ts +0 -376
- package/.next/standalone/src/tests/proof/sidecar-lifecycle.test.ts +0 -177
- package/.next/standalone/src/tests/proof/sidecar-trim.test.ts +0 -58
- package/.next/standalone/src/tests/proof/suggestion-ops.test.ts +0 -280
- package/.next/standalone/src/tests/proof/wiki-content-put.test.ts +0 -140
- package/.next/standalone/src/tests/proof/wiki-routes-auth.test.ts +0 -208
- package/.next/standalone/src/tests/proof/workspace-isolation.test.ts +0 -87
- package/.next/standalone/src/tests/proof/workspaces-api.test.ts +0 -227
- package/.next/standalone/src/types/index.ts +0 -47
- package/.next/standalone/tailwind.config.ts +0 -191
- package/.next/standalone/tsconfig.json +0 -41
- package/.next/standalone/tsconfig.tsbuildinfo +0 -1
- /package/.next/standalone/.next/static/{WMOTgfV82apmdovxzgbMx → ecpoWt_SP3WkUTh0NsnuT}/_buildManifest.js +0 -0
- /package/.next/standalone/.next/static/{WMOTgfV82apmdovxzgbMx → ecpoWt_SP3WkUTh0NsnuT}/_clientMiddlewareManifest.js +0 -0
- /package/.next/standalone/.next/static/{WMOTgfV82apmdovxzgbMx → ecpoWt_SP3WkUTh0NsnuT}/_ssgManifest.js +0 -0
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,952683,e=>{"use strict";var t=e.i(44501),a=e.i(425732),n=e.i(605993);let s=(0,n.default)("bot",[["path",{d:"M12 8V4H8",key:"hb8ula"}],["rect",{width:"16",height:"12",x:"4",y:"8",rx:"2",key:"enze0r"}],["path",{d:"M2 14h2",key:"vft8re"}],["path",{d:"M20 14h2",key:"4cs60a"}],["path",{d:"M15 13v2",key:"1xurst"}],["path",{d:"M9 13v2",key:"rq6x2g"}]]);var r=e.i(43240),i=e.i(367092),l=e.i(10137),o=e.i(391548);let c=(0,n.default)("download",[["path",{d:"M12 15V3",key:"m9g1x1"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["path",{d:"m7 10 5 5 5-5",key:"brsn70"}]]);var d=e.i(73302),u=e.i(530229),m=e.i(764143),p=e.i(916767);let h=(0,n.default)("folder-open",[["path",{d:"m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2",key:"usdka0"}]]),x=(0,n.default)("folder-plus",[["path",{d:"M12 10v6",key:"1bos4e"}],["path",{d:"M9 13h6",key:"1uhe8q"}],["path",{d:"M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z",key:"1kt360"}]]),f=(0,n.default)("git-branch",[["line",{x1:"6",x2:"6",y1:"3",y2:"15",key:"17qcm7"}],["circle",{cx:"18",cy:"6",r:"3",key:"1h7g24"}],["circle",{cx:"6",cy:"18",r:"3",key:"fqmcym"}],["path",{d:"M18 9a9 9 0 0 1-9 9",key:"n2h4wq"}]]);var g=e.i(845478);let b=(0,n.default)("history",[["path",{d:"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"1357e3"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}],["path",{d:"M12 7v5l4 2",key:"1fdv2h"}]]),w=(0,n.default)("user",[["path",{d:"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2",key:"975kel"}],["circle",{cx:"12",cy:"7",r:"4",key:"17ys0d"}]]);var y=e.i(375707),y=y,v=e.i(702166),N=e.i(691520);let k=(0,n.default)("maximize-2",[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"m21 3-7 7",key:"1l2asr"}],["path",{d:"m3 21 7-7",key:"tjx5ai"}],["path",{d:"M9 21H3v-6",key:"wtvkvv"}]]),j=(0,n.default)("ellipsis",[["circle",{cx:"12",cy:"12",r:"1",key:"41hilf"}],["circle",{cx:"19",cy:"12",r:"1",key:"1wjl8i"}],["circle",{cx:"5",cy:"12",r:"1",key:"1pcz8c"}]]),_=(0,n.default)("panel-left-close",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M9 3v18",key:"fh3hqa"}],["path",{d:"m16 15-3-3 3-3",key:"14y99z"}]]),C=(0,n.default)("panel-left-open",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M9 3v18",key:"fh3hqa"}],["path",{d:"m14 9 3 3-3 3",key:"8010ee"}]]),E=(0,n.default)("pencil",[["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}],["path",{d:"m15 5 4 4",key:"1mk7zo"}]]);var S=e.i(301138);let M=(0,n.default)("eye-off",[["path",{d:"M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49",key:"ct8e1f"}],["path",{d:"M14.084 14.158a3 3 0 0 1-4.242-4.242",key:"151rxh"}],["path",{d:"M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143",key:"13bj9a"}],["path",{d:"m2 2 20 20",key:"1ooewy"}]]),A=(0,n.default)("pin",[["path",{d:"M12 17v5",key:"bb1du9"}],["path",{d:"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z",key:"1nkz8b"}]]),D=(0,n.default)("plus",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]]),O=(0,n.default)("refresh-cw",[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]]),T=(0,n.default)("settings",[["path",{d:"M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z",key:"1qme2f"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]]),I=(0,n.default)("share",[["path",{d:"M12 2v13",key:"1km8f5"}],["path",{d:"m16 6-4-4-4 4",key:"13yo43"}],["path",{d:"M4 12v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-8",key:"1b2hhj"}]]),R=(0,n.default)("star",[["path",{d:"M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z",key:"r04s7s"}]]),F=(0,n.default)("terminal",[["path",{d:"M12 19h8",key:"baeox8"}],["path",{d:"m4 17 6-6-6-6",key:"1yngyt"}]]);var L=e.i(920978),P=e.i(924782),B=e.i(22245),z=e.i(101685),$=e.i(380560),U=e.i(519455),q=e.i(776639);function K({open:e,onOpenChange:a,title:n,description:s,confirmLabel:r="Delete",onConfirm:i,variant:l="destructive"}){return(0,t.jsx)(q.Dialog,{open:e,onOpenChange:a,children:(0,t.jsxs)(q.DialogContent,{className:"sm:max-w-sm",children:[(0,t.jsxs)(q.DialogHeader,{children:[(0,t.jsx)(q.DialogTitle,{children:n}),(0,t.jsx)(q.DialogDescription,{children:s})]}),(0,t.jsxs)(q.DialogFooter,{className:"gap-2 sm:gap-0",children:[(0,t.jsx)(U.Button,{variant:"outline",onClick:()=>a(!1),children:"Cancel"}),(0,t.jsx)(U.Button,{variant:l,onClick:()=>{i(),a(!1)},children:r})]})]})})}var H=e.i(313393);let W=(0,n.default)("save",[["path",{d:"M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z",key:"1c8476"}],["path",{d:"M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7",key:"1ydtos"}],["path",{d:"M7 3v4a1 1 0 0 0 1 1h7",key:"t51u73"}]]);var G=e.i(671485),V=e.i(975157);function Z({path:e,badge:a,sublabel:n,showBreadcrumb:s=!0,leading:r,children:i,className:l}){return(0,t.jsxs)("div",{className:(0,V.cn)("flex shrink-0 items-center justify-between gap-3 border-b border-border bg-background px-4 py-2",l),children:[(0,t.jsxs)("div",{className:"flex min-w-0 flex-1 items-center gap-2",children:[r,e&&(0,t.jsx)("span",{className:"text-xs text-muted-foreground truncate",title:e,children:e.split("/").pop()??e}),a&&(0,t.jsx)("span",{className:"shrink-0 rounded bg-muted px-1.5 py-0.5 text-xs text-muted-foreground/50",children:a}),n&&(0,t.jsx)("span",{className:"shrink-0 text-xs text-muted-foreground/40",children:n})]}),(0,t.jsx)("div",{className:"flex shrink-0 items-center gap-1",children:i})]})}function X(e){let t=[],a="",n=!1,s=[];for(let r=0;r<e.length;r++){let i=e[r],l=e[r+1];n?'"'===i&&'"'===l?(a+='"',r++):'"'===i?n=!1:a+=i:'"'===i?n=!0:","===i?(s.push(a),a=""):"\n"===i||"\r"===i&&"\n"===l?(s.push(a),a="",s.length>0&&t.push(s),s=[],"\r"===i&&r++):a+=i}return s.push(a),s.some(e=>""!==e)&&t.push(s),t}function J(e){return e.map(e=>e.map(e=>e.includes(",")||e.includes('"')||e.includes("\n")?`"${e.replace(/"/g,'""')}"`:e).join(",")).join("\n")}function Q({path:e}){let[a,n]=(0,z.useState)([]),[s,r]=(0,z.useState)(""),[i,l]=(0,z.useState)(!1),[o,d]=(0,z.useState)(!1),[u,m]=(0,z.useState)(!1),[p,h]=(0,z.useState)(null),[x,f]=(0,z.useState)(!1),[g,b]=(0,z.useState)(1e3),w=`/api/assets/${e}`;(0,z.useEffect)(()=>{(0,G.wsFetch)(w).then(e=>e.text()).then(e=>{let t=X(e),a=e.length>2097152||t.length>2e3;r(e),n(t),f(a),l(a),d(!1)})},[w]);let y=(0,z.useCallback)((e,t,a)=>{n(n=>{let s=n.map(e=>[...e]);for(;s.length<=e;)s.push([]);for(;s[e].length<=t;)s[e].push("");return s[e][t]=a,s}),d(!0)},[]),v=async()=>{m(!0);let t=i?s:J(a);try{await (0,G.wsFetch)(`/api/assets/${e}`,{method:"PUT",headers:{"Content-Type":"text/plain"},body:t}),i?n(X(s)):r(t),d(!1)}catch(e){console.error("Failed to save CSV:",e)}m(!1)},N=a[0]||[],k=a.slice(1),j=x?k.slice(0,g):k,_=x&&g<k.length;return(0,t.jsxs)("div",{className:"flex-1 flex flex-col overflow-hidden",children:[(0,t.jsxs)(Z,{path:e,badge:`CSV${a.length>0?` (${a.length-1} rows)`:""}`,children:[o&&(0,t.jsxs)(U.Button,{variant:"ghost",size:"sm",className:"h-7 gap-1.5 text-xs",onClick:v,disabled:u,children:[(0,t.jsx)(W,{className:"h-3.5 w-3.5"}),u?"Saving...":"Save"]}),x&&(0,t.jsxs)("span",{className:"text-[11px] text-amber-600 dark:text-amber-400 px-1",children:["Large file (",(s.length/1048576).toFixed(1)," MB,"," ",a.length.toLocaleString()," rows)"]}),(0,t.jsxs)("button",{onClick:()=>{i?n(X(s)):r(J(a)),l(!i)},className:`flex items-center gap-1.5 px-2.5 py-1 text-[11px] rounded-md transition-colors border border-border ${i?"bg-primary text-primary-foreground":"text-muted-foreground hover:bg-accent"}`,children:[(0,t.jsx)(H.Code2,{className:"h-3 w-3"}),i?"Table":"Source"]}),(0,t.jsx)("button",{onClick:()=>window.open(w,"_blank"),className:"inline-flex items-center justify-center rounded-md h-8 w-8 hover:bg-accent hover:text-accent-foreground transition-colors cursor-pointer",title:"Download CSV",children:(0,t.jsx)(c,{className:"h-4 w-4"})})]}),i?(0,t.jsx)("div",{className:"flex-1 overflow-y-auto p-4",children:(0,t.jsx)("textarea",{value:s,onChange:e=>{r(e.target.value),d(!0)},className:"w-full h-full min-h-[calc(100vh-12rem)] bg-transparent font-mono text-[13px] leading-relaxed resize-none focus:outline-none",spellCheck:!1})}):(0,t.jsxs)("div",{className:"flex-1 overflow-auto",children:[(0,t.jsxs)("table",{className:"w-full border-collapse text-[13px]",children:[(0,t.jsx)("thead",{className:"sticky top-0 z-10",children:(0,t.jsxs)("tr",{className:"bg-muted/80 backdrop-blur-sm",children:[(0,t.jsx)("th",{className:"border border-border px-1 py-1 text-center text-[10px] text-muted-foreground w-8",children:"#"}),N.map((e,a)=>(0,t.jsx)("th",{className:"border border-border px-3 py-1.5 text-left font-medium text-foreground min-w-[100px]",children:p?.r===0&&p?.c===a?(0,t.jsx)("input",{autoFocus:!0,className:"w-full bg-transparent outline-none",value:e,onChange:e=>y(0,a,e.target.value),onBlur:()=>h(null),onKeyDown:e=>{("Enter"===e.key||"Escape"===e.key)&&h(null),"Tab"===e.key&&(e.preventDefault(),h({r:0,c:a+1<N.length?a+1:0}))}}):(0,t.jsx)("span",{className:"cursor-text",onDoubleClick:()=>h({r:0,c:a}),children:e||" "})},a))]})}),(0,t.jsx)("tbody",{children:j.map((e,a)=>{let s=a+1;return(0,t.jsxs)("tr",{className:"hover:bg-accent/30 transition-colors group",children:[(0,t.jsxs)("td",{className:"border border-border px-1 py-1 text-center text-[10px] text-muted-foreground/50",children:[(0,t.jsx)("span",{className:"group-hover:hidden",children:a+1}),(0,t.jsx)("button",{className:"hidden group-hover:inline text-destructive hover:text-destructive/80 text-[10px]",onClick:()=>{n(e=>e.filter((e,t)=>t!==s)),d(!0)},title:"Delete row",children:"×"})]}),N.map((a,n)=>{let r=e[n]??"",i=p?.r===s&&p?.c===n;return(0,t.jsx)("td",{className:"border border-border px-3 py-1.5",children:i?(0,t.jsx)("input",{autoFocus:!0,className:"w-full bg-transparent outline-none",value:r,onChange:e=>y(s,n,e.target.value),onBlur:()=>h(null),onKeyDown:e=>{"Escape"===e.key&&h(null),"Enter"===e.key&&h({r:s+1,c:n}),"Tab"===e.key&&(e.preventDefault(),e.shiftKey?h({r:s,c:Math.max(0,n-1)}):h({r:n+1>=N.length?s+1:s,c:n+1>=N.length?0:n+1}))}}):(0,t.jsx)("span",{className:"cursor-text",onDoubleClick:()=>h({r:s,c:n}),children:r||" "})},n)})]},a)})})]}),_&&(0,t.jsxs)("div",{className:"flex items-center gap-3 px-4 py-2 border-t border-border",children:[(0,t.jsxs)("button",{onClick:()=>b(e=>e+1e3),className:"text-[11px] text-foreground hover:bg-accent transition-colors px-2.5 py-1 rounded border border-border",children:["Show"," ",Math.min(1e3,k.length-g).toLocaleString()," ","more rows"]}),(0,t.jsxs)("span",{className:"text-[11px] text-muted-foreground",children:[g.toLocaleString()," /"," ",k.length.toLocaleString()," rows"]})]}),(0,t.jsxs)("div",{className:"flex items-center gap-2 px-4 py-2 border-t border-border",children:[(0,t.jsx)("button",{onClick:()=>{let e=a[0]?.length||1;n(t=>[...t,Array(e).fill("")]),d(!0)},className:"text-[11px] text-muted-foreground hover:text-foreground transition-colors px-2 py-1 rounded hover:bg-accent",children:"+ Add row"}),(0,t.jsx)("button",{onClick:()=>{n(e=>e.map(e=>[...e,""])),d(!0)},className:"text-[11px] text-muted-foreground hover:text-foreground transition-colors px-2 py-1 rounded hover:bg-accent",children:"+ Add column"})]})]})]})}var Y=e.i(912235);function ee({path:e}){let a=(0,G.withWs)(`/api/assets/${e}`),n=e.split("/").pop()||e,s=n.includes(".")?n.split(".").pop()?.toUpperCase():"",r=async()=>{try{await (0,G.wsFetch)("/api/system/reveal",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:e})})}catch{}};return(0,t.jsxs)("div",{className:"flex-1 flex flex-col overflow-hidden",children:[(0,t.jsx)(Z,{path:e,badge:s||void 0}),(0,t.jsx)("div",{className:"flex-1 flex items-center justify-center",children:(0,t.jsxs)("div",{className:"flex flex-col items-center gap-4 text-center max-w-sm",children:[(0,t.jsx)("div",{className:"flex size-16 items-center justify-center rounded-2xl bg-muted",children:(0,t.jsx)(d.File,{className:"size-8 text-muted-foreground/50"})}),(0,t.jsxs)("div",{className:"space-y-1",children:[(0,t.jsx)("p",{className:"text-sm font-medium",children:n}),(0,t.jsx)("p",{className:"text-xs text-muted-foreground",children:"This file type can't be previewed in Cabinet."})]}),(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsxs)(U.Button,{variant:"outline",size:"sm",className:"gap-2",onClick:r,children:[(0,t.jsx)(h,{className:"h-4 w-4"}),"Open in Finder"]}),(0,t.jsxs)(U.Button,{variant:"outline",size:"sm",className:"gap-2",onClick:()=>{let e=document.createElement("a");e.href=a,e.download=n,e.click()},children:[(0,t.jsx)(c,{className:"h-4 w-4"}),"Download"]})]})]})})]})}var et=e.i(412473);let ea=(0,n.default)("file-warning",[["path",{d:"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z",key:"1rqfz7"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]]);function en({path:e,size:a,onOpen:n}){let s=(0,G.withWs)(`/api/assets/${e}`),r=e.split("/").pop()||e,i=r.includes(".")?r.split(".").pop()?.toUpperCase():"",l=async()=>{try{await (0,G.wsFetch)("/api/system/reveal",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:e})})}catch{}};return(0,t.jsxs)("div",{className:"flex-1 flex flex-col overflow-hidden",children:[(0,t.jsx)(Z,{path:e,badge:i||void 0}),(0,t.jsx)("div",{className:"flex-1 flex items-center justify-center",children:(0,t.jsxs)("div",{className:"flex flex-col items-center gap-4 text-center max-w-sm",children:[(0,t.jsx)("div",{className:"flex size-16 items-center justify-center rounded-2xl bg-amber-500/10",children:(0,t.jsx)(ea,{className:"size-8 text-amber-500"})}),(0,t.jsxs)("div",{className:"space-y-1",children:[(0,t.jsx)("p",{className:"text-sm font-medium",children:r}),(0,t.jsxs)("p",{className:"text-xs text-muted-foreground",children:["This file is ",a>=0x40000000?`${(a/0x40000000).toFixed(1)} GB`:a>=1048576?`${(a/1048576).toFixed(1)} MB`:a>=1024?`${Math.round(a/1024)} KB`:`${a} B`,". Opening it in the viewer may freeze the tab while it loads and renders."]})]}),(0,t.jsxs)("div",{className:"flex flex-wrap items-center justify-center gap-2",children:[(0,t.jsx)(U.Button,{variant:"default",size:"sm",className:"gap-2",onClick:n,children:"Open anyway"}),(0,t.jsxs)(U.Button,{variant:"outline",size:"sm",className:"gap-2",onClick:()=>window.open(s,"_blank"),children:[(0,t.jsx)(et.ExternalLink,{className:"h-4 w-4"}),"Raw"]}),(0,t.jsxs)(U.Button,{variant:"outline",size:"sm",className:"gap-2",onClick:()=>{let e=document.createElement("a");e.href=s,e.download=r,e.click()},children:[(0,t.jsx)(c,{className:"h-4 w-4"}),"Download"]}),(0,t.jsxs)(U.Button,{variant:"outline",size:"sm",className:"gap-2",onClick:l,children:[(0,t.jsx)(h,{className:"h-4 w-4"}),"Open in Finder"]})]})]})})]})}function es({path:e,title:a}){let n=(0,G.withWs)(`/api/assets/${e}`),s=e.split("/").pop()||e,r=s.includes(".")?s.split(".").pop()?.toUpperCase():"IMG";return(0,t.jsxs)("div",{className:"flex-1 flex flex-col overflow-hidden",children:[(0,t.jsxs)(Z,{path:e,badge:r,children:[(0,t.jsxs)(U.Button,{variant:"ghost",size:"sm",className:"h-7 gap-1.5 text-xs",onClick:()=>{let e=document.createElement("a");e.href=n,e.download=s,e.click()},children:[(0,t.jsx)(c,{className:"h-3.5 w-3.5"}),"Download"]}),(0,t.jsxs)(U.Button,{variant:"ghost",size:"sm",className:"h-7 gap-1.5 text-xs",onClick:()=>window.open(n,"_blank"),children:[(0,t.jsx)(et.ExternalLink,{className:"h-3.5 w-3.5"}),"Open in new tab"]})]}),(0,t.jsx)("div",{className:"flex-1 overflow-auto flex items-center justify-center bg-[#1a1a1a] p-8",children:(0,t.jsx)("img",{src:n,alt:a,className:"max-w-full max-h-full object-contain rounded-md shadow-lg",style:{imageRendering:"auto"}})})]})}function er({path:e,type:a}){let n=(0,G.withWs)(`/api/assets/${e}`),s=e.split("/").pop()||e,r=s.includes(".")?s.split(".").pop()?.toUpperCase():a.toUpperCase();return(0,t.jsxs)("div",{className:"flex-1 flex flex-col overflow-hidden",children:[(0,t.jsxs)(Z,{path:e,badge:r,children:[(0,t.jsxs)(U.Button,{variant:"ghost",size:"sm",className:"h-7 gap-1.5 text-xs",onClick:()=>{let e=document.createElement("a");e.href=n,e.download=s,e.click()},children:[(0,t.jsx)(c,{className:"h-3.5 w-3.5"}),"Download"]}),(0,t.jsxs)(U.Button,{variant:"ghost",size:"sm",className:"h-7 gap-1.5 text-xs",onClick:()=>window.open(n,"_blank"),children:[(0,t.jsx)(et.ExternalLink,{className:"h-3.5 w-3.5"}),"Open in new tab"]})]}),(0,t.jsx)("div",{className:"flex-1 overflow-auto flex items-center justify-center bg-[#1a1a1a] p-8",children:"video"===a?(0,t.jsx)("video",{src:n,controls:!0,className:"max-w-full max-h-full rounded-md shadow-lg",children:"Your browser does not support the video element."}):(0,t.jsxs)("div",{className:"w-full max-w-lg space-y-4",children:[(0,t.jsx)("div",{className:"text-center text-muted-foreground text-sm",children:s}),(0,t.jsx)("audio",{src:n,controls:!0,className:"w-full",children:"Your browser does not support the audio element."})]})})]})}let ei=(0,n.default)("maximize",[["path",{d:"M8 3H5a2 2 0 0 0-2 2v3",key:"1dcmit"}],["path",{d:"M21 8V5a2 2 0 0 0-2-2h-3",key:"1e4gt3"}],["path",{d:"M3 16v3a2 2 0 0 0 2 2h3",key:"wsl5sc"}],["path",{d:"M16 21h3a2 2 0 0 0 2-2v-3",key:"18trek"}]]),el=(0,n.default)("zoom-in",[["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}],["line",{x1:"21",x2:"16.65",y1:"21",y2:"16.65",key:"13gj7c"}],["line",{x1:"11",x2:"11",y1:"8",y2:"14",key:"1vmskp"}],["line",{x1:"8",x2:"14",y1:"11",y2:"11",key:"durymu"}]]),eo=(0,n.default)("zoom-out",[["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}],["line",{x1:"21",x2:"16.65",y1:"21",y2:"16.65",key:"13gj7c"}],["line",{x1:"8",x2:"14",y1:"11",y2:"11",key:"durymu"}]]);function ec({path:a,title:n}){let[s,i]=(0,z.useState)(""),[l,d]=(0,z.useState)(""),[u,m]=(0,z.useState)(""),[p,h]=(0,z.useState)(!0),[x,f]=(0,z.useState)(!1),[g,b]=(0,z.useState)(!1),[w,y]=(0,z.useState)(1),[v,N]=(0,z.useState)({x:0,y:0}),[k,j]=(0,z.useState)(!1),_=(0,z.useRef)({x:0,y:0,panX:0,panY:0}),C=(0,z.useRef)(null),E=(0,z.useRef)(null),M=(0,z.useRef)(0),A=(0,z.useCallback)(e=>{if(e.ctrlKey||e.metaKey){e.preventDefault();let t=e.deltaY>0?-.25:.25;y(e=>Math.min(Math.max(e+t,.25),5))}},[]),D=(0,z.useCallback)(e=>{0===e.button&&(j(!0),_.current={x:e.clientX,y:e.clientY,panX:v.x,panY:v.y},e.target.setPointerCapture(e.pointerId))},[v]),O=(0,z.useCallback)(e=>{k&&N({x:_.current.panX+(e.clientX-_.current.x),y:_.current.panY+(e.clientY-_.current.y)})},[k]),T=(0,z.useCallback)(()=>{j(!1)},[]),I=(0,G.withWs)(`/api/assets/${a}`);a.split("/").pop();let R=(0,z.useCallback)(async()=>{h(!0),m("");try{let t=await (0,G.wsFetch)(I);if(!t.ok)throw Error("Failed to fetch file");let a=await t.text();i(a);let n=(await e.A(890793)).default;n.initialize({startOnLoad:!1,theme:document.documentElement.classList.contains("dark")?"dark":"default",securityLevel:"loose",suppressErrorRendering:!0}),await n.parse(a.trim());let s=`mermaid-${++M.current}`,{svg:r}=await n.render(s,a.trim());d(r)}catch(e){document.querySelectorAll('[id^="dmermaid-"], [id^="d"]:has(> .error-icon)').forEach(e=>e.remove()),m(e instanceof Error?e.message:"Failed to render diagram")}finally{h(!1)}},[I]);return(0,z.useEffect)(()=>{R()},[R]),(0,t.jsxs)("div",{className:"flex-1 flex flex-col overflow-hidden",children:[(0,t.jsxs)(Z,{path:a,badge:"MERMAID",children:[(0,t.jsxs)(U.Button,{variant:"ghost",size:"sm",className:`h-7 gap-1.5 text-xs ${x?"bg-muted":""}`,onClick:()=>f(e=>!e),children:[x?(0,t.jsx)(S.Eye,{className:"h-3.5 w-3.5"}):(0,t.jsx)(H.Code2,{className:"h-3.5 w-3.5"}),x?"Diagram":"Code"]}),(0,t.jsxs)(U.Button,{variant:"ghost",size:"sm",className:"h-7 gap-1.5 text-xs",onClick:()=>{navigator.clipboard.writeText(s),b(!0),setTimeout(()=>b(!1),2e3)},children:[g?(0,t.jsx)(r.Check,{className:"h-3.5 w-3.5 text-green-500"}):(0,t.jsx)(o.Copy,{className:"h-3.5 w-3.5"}),g?"Copied":"Copy"]}),l&&!x&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("div",{className:"h-4 w-px bg-border mx-0.5"}),(0,t.jsx)(U.Button,{variant:"ghost",size:"sm",className:"h-7 w-7 p-0",onClick:()=>y(e=>Math.max(e-.25,.25)),title:"Zoom out",children:(0,t.jsx)(eo,{className:"h-3.5 w-3.5"})}),(0,t.jsxs)("span",{className:"text-[11px] text-muted-foreground tabular-nums w-10 text-center select-none",children:[Math.round(100*w),"%"]}),(0,t.jsx)(U.Button,{variant:"ghost",size:"sm",className:"h-7 w-7 p-0",onClick:()=>y(e=>Math.min(e+.25,5)),title:"Zoom in",children:(0,t.jsx)(el,{className:"h-3.5 w-3.5"})}),(0,t.jsx)(U.Button,{variant:"ghost",size:"sm",className:"h-7 w-7 p-0",onClick:()=>{y(1),N({x:0,y:0})},title:"Reset view",children:(0,t.jsx)(ei,{className:"h-3.5 w-3.5"})}),(0,t.jsx)("div",{className:"h-4 w-px bg-border mx-0.5"})]}),l&&(0,t.jsxs)(U.Button,{variant:"ghost",size:"sm",className:"h-7 gap-1.5 text-xs",onClick:()=>{if(!l)return;let e=new Blob([l],{type:"image/svg+xml"}),t=URL.createObjectURL(e),a=document.createElement("a");a.href=t,a.download=`${n}.svg`,a.click(),URL.revokeObjectURL(t)},children:[(0,t.jsx)(c,{className:"h-3.5 w-3.5"}),"SVG"]})]}),(0,t.jsx)("div",{className:"flex-1 overflow-auto",children:p?(0,t.jsx)("div",{className:"flex items-center justify-center h-full text-muted-foreground text-sm",children:"Rendering diagram..."}):x?(0,t.jsx)("pre",{className:"p-4 text-[13px] leading-relaxed font-mono bg-[#1e1e1e]",children:(0,t.jsx)("code",{children:s.split("\n").map((e,a)=>(0,t.jsxs)("div",{className:"flex",children:[(0,t.jsx)("span",{className:"inline-block w-12 pr-4 text-right text-[#858585] select-none shrink-0",children:a+1}),(0,t.jsx)("span",{className:"text-[#d4d4d4] flex-1",children:e||"\n"})]},a))})}):u?(0,t.jsxs)("div",{className:"flex flex-col items-center justify-center h-full gap-4 text-sm p-8",children:[(0,t.jsxs)("div",{className:"flex flex-col items-center gap-2",children:[(0,t.jsx)("div",{className:"h-10 w-10 rounded-full bg-red-500/10 flex items-center justify-center",children:(0,t.jsx)(H.Code2,{className:"h-5 w-5 text-red-500"})}),(0,t.jsx)("p",{className:"text-red-500 font-medium",children:"Diagram syntax error"})]}),(0,t.jsx)("pre",{className:"text-muted-foreground text-xs max-w-lg text-left bg-muted rounded-md p-3 overflow-auto whitespace-pre-wrap",children:u}),(0,t.jsx)(U.Button,{variant:"outline",size:"sm",onClick:()=>f(!0),children:"View source to fix"})]}):(0,t.jsx)("div",{ref:E,className:"relative w-full h-full overflow-hidden",style:{cursor:k?"grabbing":"grab"},onWheel:A,onPointerDown:D,onPointerMove:O,onPointerUp:T,children:(0,t.jsx)("div",{ref:C,className:"flex items-center justify-center p-8 min-h-full [&_svg]:max-w-full origin-center select-none",style:{transform:`translate(${v.x}px, ${v.y}px) scale(${w})`},dangerouslySetInnerHTML:{__html:l}})})})]})}var ed=e.i(790070),eu=e.i(944404),em=e.i(334609),ep=e.i(265590),eh="[0-9](_*[0-9])*",ex=`\\.(${eh})`,ef="[0-9a-fA-F](_*[0-9a-fA-F])*",eg={className:"number",variants:[{begin:`(\\b(${eh})((${ex})|\\.)?|(${ex}))[eE][+-]?(${eh})[fFdD]?\\b`},{begin:`\\b(${eh})((${ex})[fFdD]?\\b|\\.([fFdD]\\b)?)`},{begin:`(${ex})[fFdD]?\\b`},{begin:`\\b(${eh})[fFdD]\\b`},{begin:`\\b0[xX]((${ef})\\.?|(${ef})?\\.(${ef}))[pP][+-]?(${eh})[fFdD]?\\b`},{begin:"\\b(0|[1-9](_*[0-9])*)[lL]?\\b"},{begin:`\\b0[xX](${ef})[lL]?\\b`},{begin:"\\b0(_*[0-7])*[lL]?\\b"},{begin:"\\b0[bB][01](_*[01])*[lL]?\\b"}],relevance:0},eb=e.i(441228),ew=e.i(576500),ey="[0-9](_*[0-9])*",ev=`\\.(${ey})`,eN="[0-9a-fA-F](_*[0-9a-fA-F])*",ek={className:"number",variants:[{begin:`(\\b(${ey})((${ev})|\\.)?|(${ev}))[eE][+-]?(${ey})[fFdD]?\\b`},{begin:`\\b(${ey})((${ev})[fFdD]?\\b|\\.([fFdD]\\b)?)`},{begin:`(${ev})[fFdD]?\\b`},{begin:`\\b(${ey})[fFdD]\\b`},{begin:`\\b0[xX]((${eN})\\.?|(${eN})?\\.(${eN}))[pP][+-]?(${ey})[fFdD]?\\b`},{begin:"\\b(0|[1-9](_*[0-9])*)[lL]?\\b"},{begin:`\\b0[xX](${eN})[lL]?\\b`},{begin:"\\b0(_*[0-7])*[lL]?\\b"},{begin:"\\b0[bB][01](_*[01])*[lL]?\\b"}],relevance:0};let ej=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","main","mark","menu","nav","object","ol","optgroup","option","p","picture","q","quote","samp","section","select","source","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video","defs","g","marker","mask","pattern","svg","switch","symbol","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feFlood","feGaussianBlur","feImage","feMerge","feMorphology","feOffset","feSpecularLighting","feTile","feTurbulence","linearGradient","radialGradient","stop","circle","ellipse","image","line","path","polygon","polyline","rect","text","use","textPath","tspan","foreignObject","clipPath"],e_=["any-hover","any-pointer","aspect-ratio","color","color-gamut","color-index","device-aspect-ratio","device-height","device-width","display-mode","forced-colors","grid","height","hover","inverted-colors","monochrome","orientation","overflow-block","overflow-inline","pointer","prefers-color-scheme","prefers-contrast","prefers-reduced-motion","prefers-reduced-transparency","resolution","scan","scripting","update","width","min-width","max-width","min-height","max-height"].sort().reverse(),eC=["active","any-link","blank","checked","current","default","defined","dir","disabled","drop","empty","enabled","first","first-child","first-of-type","fullscreen","future","focus","focus-visible","focus-within","has","host","host-context","hover","indeterminate","in-range","invalid","is","lang","last-child","last-of-type","left","link","local-link","not","nth-child","nth-col","nth-last-child","nth-last-col","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","past","placeholder-shown","read-only","read-write","required","right","root","scope","target","target-within","user-invalid","valid","visited","where"].sort().reverse(),eE=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"].sort().reverse(),eS=["accent-color","align-content","align-items","align-self","alignment-baseline","all","anchor-name","animation","animation-composition","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-range","animation-range-end","animation-range-start","animation-timeline","animation-timing-function","appearance","aspect-ratio","backdrop-filter","backface-visibility","background","background-attachment","background-blend-mode","background-clip","background-color","background-image","background-origin","background-position","background-position-x","background-position-y","background-repeat","background-size","baseline-shift","block-size","border","border-block","border-block-color","border-block-end","border-block-end-color","border-block-end-style","border-block-end-width","border-block-start","border-block-start-color","border-block-start-style","border-block-start-width","border-block-style","border-block-width","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-end-end-radius","border-end-start-radius","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-inline","border-inline-color","border-inline-end","border-inline-end-color","border-inline-end-style","border-inline-end-width","border-inline-start","border-inline-start-color","border-inline-start-style","border-inline-start-width","border-inline-style","border-inline-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-start-end-radius","border-start-start-radius","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-align","box-decoration-break","box-direction","box-flex","box-flex-group","box-lines","box-ordinal-group","box-orient","box-pack","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","caret-color","clear","clip","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","color-scheme","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","contain","contain-intrinsic-block-size","contain-intrinsic-height","contain-intrinsic-inline-size","contain-intrinsic-size","contain-intrinsic-width","container","container-name","container-type","content","content-visibility","counter-increment","counter-reset","counter-set","cue","cue-after","cue-before","cursor","cx","cy","direction","display","dominant-baseline","empty-cells","enable-background","field-sizing","fill","fill-opacity","fill-rule","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","flood-color","flood-opacity","flow","font","font-display","font-family","font-feature-settings","font-kerning","font-language-override","font-optical-sizing","font-palette","font-size","font-size-adjust","font-smooth","font-smoothing","font-stretch","font-style","font-synthesis","font-synthesis-position","font-synthesis-small-caps","font-synthesis-style","font-synthesis-weight","font-variant","font-variant-alternates","font-variant-caps","font-variant-east-asian","font-variant-emoji","font-variant-ligatures","font-variant-numeric","font-variant-position","font-variation-settings","font-weight","forced-color-adjust","gap","glyph-orientation-horizontal","glyph-orientation-vertical","grid","grid-area","grid-auto-columns","grid-auto-flow","grid-auto-rows","grid-column","grid-column-end","grid-column-start","grid-gap","grid-row","grid-row-end","grid-row-start","grid-template","grid-template-areas","grid-template-columns","grid-template-rows","hanging-punctuation","height","hyphenate-character","hyphenate-limit-chars","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","initial-letter","initial-letter-align","inline-size","inset","inset-area","inset-block","inset-block-end","inset-block-start","inset-inline","inset-inline-end","inset-inline-start","isolation","justify-content","justify-items","justify-self","kerning","left","letter-spacing","lighting-color","line-break","line-height","line-height-step","list-style","list-style-image","list-style-position","list-style-type","margin","margin-block","margin-block-end","margin-block-start","margin-bottom","margin-inline","margin-inline-end","margin-inline-start","margin-left","margin-right","margin-top","margin-trim","marker","marker-end","marker-mid","marker-start","marks","mask","mask-border","mask-border-mode","mask-border-outset","mask-border-repeat","mask-border-slice","mask-border-source","mask-border-width","mask-clip","mask-composite","mask-image","mask-mode","mask-origin","mask-position","mask-repeat","mask-size","mask-type","masonry-auto-flow","math-depth","math-shift","math-style","max-block-size","max-height","max-inline-size","max-width","min-block-size","min-height","min-inline-size","min-width","mix-blend-mode","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","offset","offset-anchor","offset-distance","offset-path","offset-position","offset-rotate","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-anchor","overflow-block","overflow-clip-margin","overflow-inline","overflow-wrap","overflow-x","overflow-y","overlay","overscroll-behavior","overscroll-behavior-block","overscroll-behavior-inline","overscroll-behavior-x","overscroll-behavior-y","padding","padding-block","padding-block-end","padding-block-start","padding-bottom","padding-inline","padding-inline-end","padding-inline-start","padding-left","padding-right","padding-top","page","page-break-after","page-break-before","page-break-inside","paint-order","pause","pause-after","pause-before","perspective","perspective-origin","place-content","place-items","place-self","pointer-events","position","position-anchor","position-visibility","print-color-adjust","quotes","r","resize","rest","rest-after","rest-before","right","rotate","row-gap","ruby-align","ruby-position","scale","scroll-behavior","scroll-margin","scroll-margin-block","scroll-margin-block-end","scroll-margin-block-start","scroll-margin-bottom","scroll-margin-inline","scroll-margin-inline-end","scroll-margin-inline-start","scroll-margin-left","scroll-margin-right","scroll-margin-top","scroll-padding","scroll-padding-block","scroll-padding-block-end","scroll-padding-block-start","scroll-padding-bottom","scroll-padding-inline","scroll-padding-inline-end","scroll-padding-inline-start","scroll-padding-left","scroll-padding-right","scroll-padding-top","scroll-snap-align","scroll-snap-stop","scroll-snap-type","scroll-timeline","scroll-timeline-axis","scroll-timeline-name","scrollbar-color","scrollbar-gutter","scrollbar-width","shape-image-threshold","shape-margin","shape-outside","shape-rendering","speak","speak-as","src","stop-color","stop-opacity","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","tab-size","table-layout","text-align","text-align-all","text-align-last","text-anchor","text-combine-upright","text-decoration","text-decoration-color","text-decoration-line","text-decoration-skip","text-decoration-skip-ink","text-decoration-style","text-decoration-thickness","text-emphasis","text-emphasis-color","text-emphasis-position","text-emphasis-style","text-indent","text-justify","text-orientation","text-overflow","text-rendering","text-shadow","text-size-adjust","text-transform","text-underline-offset","text-underline-position","text-wrap","text-wrap-mode","text-wrap-style","timeline-scope","top","touch-action","transform","transform-box","transform-origin","transform-style","transition","transition-behavior","transition-delay","transition-duration","transition-property","transition-timing-function","translate","unicode-bidi","user-modify","user-select","vector-effect","vertical-align","view-timeline","view-timeline-axis","view-timeline-inset","view-timeline-name","view-transition-name","visibility","voice-balance","voice-duration","voice-family","voice-pitch","voice-range","voice-rate","voice-stress","voice-volume","white-space","white-space-collapse","widows","width","will-change","word-break","word-spacing","word-wrap","writing-mode","x","y","z-index","zoom"].sort().reverse(),eM=eC.concat(eE).sort().reverse();var eA=e.i(194633),eD=e.i(32033),eO=e.i(623568);let eT=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","main","mark","menu","nav","object","ol","optgroup","option","p","picture","q","quote","samp","section","select","source","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video","defs","g","marker","mask","pattern","svg","switch","symbol","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feFlood","feGaussianBlur","feImage","feMerge","feMorphology","feOffset","feSpecularLighting","feTile","feTurbulence","linearGradient","radialGradient","stop","circle","ellipse","image","line","path","polygon","polyline","rect","text","use","textPath","tspan","foreignObject","clipPath"],eI=["any-hover","any-pointer","aspect-ratio","color","color-gamut","color-index","device-aspect-ratio","device-height","device-width","display-mode","forced-colors","grid","height","hover","inverted-colors","monochrome","orientation","overflow-block","overflow-inline","pointer","prefers-color-scheme","prefers-contrast","prefers-reduced-motion","prefers-reduced-transparency","resolution","scan","scripting","update","width","min-width","max-width","min-height","max-height"].sort().reverse(),eR=["active","any-link","blank","checked","current","default","defined","dir","disabled","drop","empty","enabled","first","first-child","first-of-type","fullscreen","future","focus","focus-visible","focus-within","has","host","host-context","hover","indeterminate","in-range","invalid","is","lang","last-child","last-of-type","left","link","local-link","not","nth-child","nth-col","nth-last-child","nth-last-col","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","past","placeholder-shown","read-only","read-write","required","right","root","scope","target","target-within","user-invalid","valid","visited","where"].sort().reverse(),eF=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"].sort().reverse(),eL=["accent-color","align-content","align-items","align-self","alignment-baseline","all","anchor-name","animation","animation-composition","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-range","animation-range-end","animation-range-start","animation-timeline","animation-timing-function","appearance","aspect-ratio","backdrop-filter","backface-visibility","background","background-attachment","background-blend-mode","background-clip","background-color","background-image","background-origin","background-position","background-position-x","background-position-y","background-repeat","background-size","baseline-shift","block-size","border","border-block","border-block-color","border-block-end","border-block-end-color","border-block-end-style","border-block-end-width","border-block-start","border-block-start-color","border-block-start-style","border-block-start-width","border-block-style","border-block-width","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-end-end-radius","border-end-start-radius","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-inline","border-inline-color","border-inline-end","border-inline-end-color","border-inline-end-style","border-inline-end-width","border-inline-start","border-inline-start-color","border-inline-start-style","border-inline-start-width","border-inline-style","border-inline-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-start-end-radius","border-start-start-radius","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-align","box-decoration-break","box-direction","box-flex","box-flex-group","box-lines","box-ordinal-group","box-orient","box-pack","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","caret-color","clear","clip","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","color-scheme","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","contain","contain-intrinsic-block-size","contain-intrinsic-height","contain-intrinsic-inline-size","contain-intrinsic-size","contain-intrinsic-width","container","container-name","container-type","content","content-visibility","counter-increment","counter-reset","counter-set","cue","cue-after","cue-before","cursor","cx","cy","direction","display","dominant-baseline","empty-cells","enable-background","field-sizing","fill","fill-opacity","fill-rule","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","flood-color","flood-opacity","flow","font","font-display","font-family","font-feature-settings","font-kerning","font-language-override","font-optical-sizing","font-palette","font-size","font-size-adjust","font-smooth","font-smoothing","font-stretch","font-style","font-synthesis","font-synthesis-position","font-synthesis-small-caps","font-synthesis-style","font-synthesis-weight","font-variant","font-variant-alternates","font-variant-caps","font-variant-east-asian","font-variant-emoji","font-variant-ligatures","font-variant-numeric","font-variant-position","font-variation-settings","font-weight","forced-color-adjust","gap","glyph-orientation-horizontal","glyph-orientation-vertical","grid","grid-area","grid-auto-columns","grid-auto-flow","grid-auto-rows","grid-column","grid-column-end","grid-column-start","grid-gap","grid-row","grid-row-end","grid-row-start","grid-template","grid-template-areas","grid-template-columns","grid-template-rows","hanging-punctuation","height","hyphenate-character","hyphenate-limit-chars","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","initial-letter","initial-letter-align","inline-size","inset","inset-area","inset-block","inset-block-end","inset-block-start","inset-inline","inset-inline-end","inset-inline-start","isolation","justify-content","justify-items","justify-self","kerning","left","letter-spacing","lighting-color","line-break","line-height","line-height-step","list-style","list-style-image","list-style-position","list-style-type","margin","margin-block","margin-block-end","margin-block-start","margin-bottom","margin-inline","margin-inline-end","margin-inline-start","margin-left","margin-right","margin-top","margin-trim","marker","marker-end","marker-mid","marker-start","marks","mask","mask-border","mask-border-mode","mask-border-outset","mask-border-repeat","mask-border-slice","mask-border-source","mask-border-width","mask-clip","mask-composite","mask-image","mask-mode","mask-origin","mask-position","mask-repeat","mask-size","mask-type","masonry-auto-flow","math-depth","math-shift","math-style","max-block-size","max-height","max-inline-size","max-width","min-block-size","min-height","min-inline-size","min-width","mix-blend-mode","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","offset","offset-anchor","offset-distance","offset-path","offset-position","offset-rotate","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-anchor","overflow-block","overflow-clip-margin","overflow-inline","overflow-wrap","overflow-x","overflow-y","overlay","overscroll-behavior","overscroll-behavior-block","overscroll-behavior-inline","overscroll-behavior-x","overscroll-behavior-y","padding","padding-block","padding-block-end","padding-block-start","padding-bottom","padding-inline","padding-inline-end","padding-inline-start","padding-left","padding-right","padding-top","page","page-break-after","page-break-before","page-break-inside","paint-order","pause","pause-after","pause-before","perspective","perspective-origin","place-content","place-items","place-self","pointer-events","position","position-anchor","position-visibility","print-color-adjust","quotes","r","resize","rest","rest-after","rest-before","right","rotate","row-gap","ruby-align","ruby-position","scale","scroll-behavior","scroll-margin","scroll-margin-block","scroll-margin-block-end","scroll-margin-block-start","scroll-margin-bottom","scroll-margin-inline","scroll-margin-inline-end","scroll-margin-inline-start","scroll-margin-left","scroll-margin-right","scroll-margin-top","scroll-padding","scroll-padding-block","scroll-padding-block-end","scroll-padding-block-start","scroll-padding-bottom","scroll-padding-inline","scroll-padding-inline-end","scroll-padding-inline-start","scroll-padding-left","scroll-padding-right","scroll-padding-top","scroll-snap-align","scroll-snap-stop","scroll-snap-type","scroll-timeline","scroll-timeline-axis","scroll-timeline-name","scrollbar-color","scrollbar-gutter","scrollbar-width","shape-image-threshold","shape-margin","shape-outside","shape-rendering","speak","speak-as","src","stop-color","stop-opacity","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","tab-size","table-layout","text-align","text-align-all","text-align-last","text-anchor","text-combine-upright","text-decoration","text-decoration-color","text-decoration-line","text-decoration-skip","text-decoration-skip-ink","text-decoration-style","text-decoration-thickness","text-emphasis","text-emphasis-color","text-emphasis-position","text-emphasis-style","text-indent","text-justify","text-orientation","text-overflow","text-rendering","text-shadow","text-size-adjust","text-transform","text-underline-offset","text-underline-position","text-wrap","text-wrap-mode","text-wrap-style","timeline-scope","top","touch-action","transform","transform-box","transform-origin","transform-style","transition","transition-behavior","transition-delay","transition-duration","transition-property","transition-timing-function","translate","unicode-bidi","user-modify","user-select","vector-effect","vertical-align","view-timeline","view-timeline-axis","view-timeline-inset","view-timeline-name","view-transition-name","visibility","voice-balance","voice-duration","voice-family","voice-pitch","voice-range","voice-rate","voice-stress","voice-volume","white-space","white-space-collapse","widows","width","will-change","word-break","word-spacing","word-wrap","writing-mode","x","y","z-index","zoom"].sort().reverse();var eP=e.i(42420),eB=e.i(278909);function ez(e){return e?"string"==typeof e?e:e.source:null}function e$(e){return eU("(?=",e,")")}function eU(...e){return e.map(e=>ez(e)).join("")}function eq(...e){let t;return"("+(("object"==typeof(t=e[e.length-1])&&t.constructor===Object?(e.splice(e.length-1,1),t):{}).capture?"":"?:")+e.map(e=>ez(e)).join("|")+")"}let eK=e=>eU(/\b/,e,/\w$/.test(e)?/\b/:/\B/),eH=["Protocol","Type"].map(eK),eW=["init","self"].map(eK),eG=["Any","Self"],eV=["actor","any","associatedtype","async","await",/as\?/,/as!/,"as","borrowing","break","case","catch","class","consume","consuming","continue","convenience","copy","default","defer","deinit","didSet","distributed","do","dynamic","each","else","enum","extension","fallthrough",/fileprivate\(set\)/,"fileprivate","final","for","func","get","guard","if","import","indirect","infix",/init\?/,/init!/,"inout",/internal\(set\)/,"internal","in","is","isolated","nonisolated","lazy","let","macro","mutating","nonmutating",/open\(set\)/,"open","operator","optional","override","package","postfix","precedencegroup","prefix",/private\(set\)/,"private","protocol",/public\(set\)/,"public","repeat","required","rethrows","return","set","some","static","struct","subscript","super","switch","throws","throw",/try\?/,/try!/,"try","typealias",/unowned\(safe\)/,/unowned\(unsafe\)/,"unowned","var","weak","where","while","willSet"],eZ=["false","nil","true"],eX=["assignment","associativity","higherThan","left","lowerThan","none","right"],eJ=["#colorLiteral","#column","#dsohandle","#else","#elseif","#endif","#error","#file","#fileID","#fileLiteral","#filePath","#function","#if","#imageLiteral","#keyPath","#line","#selector","#sourceLocation","#warning"],eQ=["abs","all","any","assert","assertionFailure","debugPrint","dump","fatalError","getVaList","isKnownUniquelyReferenced","max","min","numericCast","pointwiseMax","pointwiseMin","precondition","preconditionFailure","print","readLine","repeatElement","sequence","stride","swap","swift_unboxFromSwiftValueWithType","transcode","type","unsafeBitCast","unsafeDowncast","withExtendedLifetime","withUnsafeMutablePointer","withUnsafePointer","withVaList","withoutActuallyEscaping","zip"],eY=eq(/[/=\-+!*%<>&|^~?]/,/[\u00A1-\u00A7]/,/[\u00A9\u00AB]/,/[\u00AC\u00AE]/,/[\u00B0\u00B1]/,/[\u00B6\u00BB\u00BF\u00D7\u00F7]/,/[\u2016-\u2017]/,/[\u2020-\u2027]/,/[\u2030-\u203E]/,/[\u2041-\u2053]/,/[\u2055-\u205E]/,/[\u2190-\u23FF]/,/[\u2500-\u2775]/,/[\u2794-\u2BFF]/,/[\u2E00-\u2E7F]/,/[\u3001-\u3003]/,/[\u3008-\u3020]/,/[\u3030]/),e0=eq(eY,/[\u0300-\u036F]/,/[\u1DC0-\u1DFF]/,/[\u20D0-\u20FF]/,/[\uFE00-\uFE0F]/,/[\uFE20-\uFE2F]/),e1=eU(eY,e0,"*"),e2=eq(/[a-zA-Z_]/,/[\u00A8\u00AA\u00AD\u00AF\u00B2-\u00B5\u00B7-\u00BA]/,/[\u00BC-\u00BE\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u00FF]/,/[\u0100-\u02FF\u0370-\u167F\u1681-\u180D\u180F-\u1DBF]/,/[\u1E00-\u1FFF]/,/[\u200B-\u200D\u202A-\u202E\u203F-\u2040\u2054\u2060-\u206F]/,/[\u2070-\u20CF\u2100-\u218F\u2460-\u24FF\u2776-\u2793]/,/[\u2C00-\u2DFF\u2E80-\u2FFF]/,/[\u3004-\u3007\u3021-\u302F\u3031-\u303F\u3040-\uD7FF]/,/[\uF900-\uFD3D\uFD40-\uFDCF\uFDF0-\uFE1F\uFE30-\uFE44]/,/[\uFE47-\uFEFE\uFF00-\uFFFD]/),e5=eq(e2,/\d/,/[\u0300-\u036F\u1DC0-\u1DFF\u20D0-\u20FF\uFE20-\uFE2F]/),e3=eU(e2,e5,"*"),e4=eU(/[A-Z]/,e5,"*"),e7=["attached","autoclosure",eU(/convention\(/,eq("swift","block","c"),/\)/),"discardableResult","dynamicCallable","dynamicMemberLookup","escaping","freestanding","frozen","GKInspectable","IBAction","IBDesignable","IBInspectable","IBOutlet","IBSegueAction","inlinable","main","nonobjc","NSApplicationMain","NSCopying","NSManaged",eU(/objc\(/,e3,/\)/),"objc","objcMembers","propertyWrapper","requires_stored_property_inits","resultBuilder","Sendable","testable","UIApplicationMain","unchecked","unknown","usableFromInline","warn_unqualified_access"],e9=["iOS","iOSApplicationExtension","macOS","macOSApplicationExtension","macCatalyst","macCatalystApplicationExtension","watchOS","watchOSApplicationExtension","tvOS","tvOSApplicationExtension","swift"];var e6=e.i(532270),e8=e.i(503658),te=e.i(185503);let tt={arduino:function(e){let t,a,n,s,r,i,l,o,c,d,u,m,p,h,x,f,g=(t=e.regex,a=e.COMMENT("//","$",{contains:[{begin:/\\\n/}]}),s="[a-zA-Z_]\\w*::",r="(?!struct)("+(n="decltype\\(auto\\)")+"|"+t.optional(s)+"[a-zA-Z_]\\w*"+t.optional("<[^<>]+>")+")",i={className:"type",begin:"\\b[a-z\\d_]*_t\\b"},l={className:"string",variants:[{begin:'(u8?|U|L)?"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},{begin:"(u8?|U|L)?'(\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)|.)",end:"'",illegal:"."},e.END_SAME_AS_BEGIN({begin:/(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/,end:/\)([^()\\ ]{0,16})"/})]},o={className:"number",variants:[{begin:"[+-]?(?:(?:[0-9](?:'?[0-9])*\\.(?:[0-9](?:'?[0-9])*)?|\\.[0-9](?:'?[0-9])*)(?:[Ee][+-]?[0-9](?:'?[0-9])*)?|[0-9](?:'?[0-9])*[Ee][+-]?[0-9](?:'?[0-9])*|0[Xx](?:[0-9A-Fa-f](?:'?[0-9A-Fa-f])*(?:\\.(?:[0-9A-Fa-f](?:'?[0-9A-Fa-f])*)?)?|\\.[0-9A-Fa-f](?:'?[0-9A-Fa-f])*)[Pp][+-]?[0-9](?:'?[0-9])*)(?:[Ff](?:16|32|64|128)?|(BF|bf)16|[Ll]|)"},{begin:"[+-]?\\b(?:0[Bb][01](?:'?[01])*|0[Xx][0-9A-Fa-f](?:'?[0-9A-Fa-f])*|0(?:'?[0-7])*|[1-9](?:'?[0-9])*)(?:[Uu](?:LL?|ll?)|[Uu][Zz]?|(?:LL?|ll?)[Uu]?|[Zz][Uu]|)"}],relevance:0},c={className:"meta",begin:/#\s*[a-z]+\b/,end:/$/,keywords:{keyword:"if else elif endif define undef warning error line pragma _Pragma ifdef ifndef include"},contains:[{begin:/\\\n/,relevance:0},e.inherit(l,{className:"string"}),{className:"string",begin:/<.*?>/},a,e.C_BLOCK_COMMENT_MODE]},d={className:"title",begin:t.optional(s)+e.IDENT_RE,relevance:0},u=t.optional(s)+e.IDENT_RE+"\\s*\\(",x={variants:[{begin:/=/,end:/;/},{begin:/\(/,end:/\)/},{beginKeywords:"new throw return else",end:/;/}],keywords:m={type:["bool","char","char16_t","char32_t","char8_t","double","float","int","long","short","void","wchar_t","unsigned","signed","const","static"],keyword:["alignas","alignof","and","and_eq","asm","atomic_cancel","atomic_commit","atomic_noexcept","auto","bitand","bitor","break","case","catch","class","co_await","co_return","co_yield","compl","concept","const_cast|10","consteval","constexpr","constinit","continue","decltype","default","delete","do","dynamic_cast|10","else","enum","explicit","export","extern","false","final","for","friend","goto","if","import","inline","module","mutable","namespace","new","noexcept","not","not_eq","nullptr","operator","or","or_eq","override","private","protected","public","reflexpr","register","reinterpret_cast|10","requires","return","sizeof","static_assert","static_cast|10","struct","switch","synchronized","template","this","thread_local","throw","transaction_safe","transaction_safe_dynamic","true","try","typedef","typeid","typename","union","using","virtual","volatile","while","xor","xor_eq"],literal:["NULL","false","nullopt","nullptr","true"],built_in:["_Pragma"],_type_hints:["any","auto_ptr","barrier","binary_semaphore","bitset","complex","condition_variable","condition_variable_any","counting_semaphore","deque","false_type","flat_map","flat_set","future","imaginary","initializer_list","istringstream","jthread","latch","lock_guard","multimap","multiset","mutex","optional","ostringstream","packaged_task","pair","promise","priority_queue","queue","recursive_mutex","recursive_timed_mutex","scoped_lock","set","shared_future","shared_lock","shared_mutex","shared_timed_mutex","shared_ptr","stack","string_view","stringstream","timed_mutex","thread","true_type","tuple","unique_lock","unique_ptr","unordered_map","unordered_multimap","unordered_multiset","unordered_set","variant","vector","weak_ptr","wstring","wstring_view"]},contains:(h=[p={className:"function.dispatch",relevance:0,keywords:{_hint:["abort","abs","acos","apply","as_const","asin","atan","atan2","calloc","ceil","cerr","cin","clog","cos","cosh","cout","declval","endl","exchange","exit","exp","fabs","floor","fmod","forward","fprintf","fputs","free","frexp","fscanf","future","invoke","isalnum","isalpha","iscntrl","isdigit","isgraph","islower","isprint","ispunct","isspace","isupper","isxdigit","labs","launder","ldexp","log","log10","make_pair","make_shared","make_shared_for_overwrite","make_tuple","make_unique","malloc","memchr","memcmp","memcpy","memset","modf","move","pow","printf","putchar","puts","realloc","scanf","sin","sinh","snprintf","sprintf","sqrt","sscanf","std","stderr","stdin","stdout","strcat","strchr","strcmp","strcpy","strcspn","strlen","strncat","strncmp","strncpy","strpbrk","strrchr","strspn","strstr","swap","tan","tanh","terminate","to_underlying","tolower","toupper","vfprintf","visit","vprintf","vsprintf"]},begin:t.concat(/\b/,/(?!decltype)/,/(?!if)/,/(?!for)/,/(?!switch)/,/(?!while)/,e.IDENT_RE,t.lookahead(/(<[^<>]+>|)\s*\(/))},c,i,a,e.C_BLOCK_COMMENT_MODE,o,l]).concat([{begin:/\(/,end:/\)/,keywords:m,contains:h.concat(["self"]),relevance:0}]),relevance:0},f={className:"function",begin:"("+r+"[\\*&\\s]+)+"+u,returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:m,illegal:/[^\w\s\*&:<>.]/,contains:[{begin:n,keywords:m,relevance:0},{begin:u,returnBegin:!0,contains:[d],relevance:0},{begin:/::/,relevance:0},{begin:/:/,endsWithParent:!0,contains:[l,o]},{relevance:0,match:/,/},{className:"params",begin:/\(/,end:/\)/,keywords:m,relevance:0,contains:[a,e.C_BLOCK_COMMENT_MODE,l,o,i,{begin:/\(/,end:/\)/,keywords:m,relevance:0,contains:["self",a,e.C_BLOCK_COMMENT_MODE,l,o,i]}]},i,a,e.C_BLOCK_COMMENT_MODE,c]},{name:"C++",aliases:["cc","c++","h++","hpp","hh","hxx","cxx"],keywords:m,illegal:"</",classNameAliases:{"function.dispatch":"built_in"},contains:[].concat(x,f,p,h,[c,{begin:"\\b(deque|list|queue|priority_queue|pair|stack|vector|map|set|bitset|multiset|multimap|unordered_map|unordered_set|unordered_multiset|unordered_multimap|array|tuple|optional|variant|function|flat_map|flat_set)\\s*<(?!<)",end:">",keywords:m,contains:["self",i]},{begin:e.IDENT_RE+"::",keywords:m},{match:[/\b(?:enum(?:\s+(?:class|struct))?|class|struct|union)/,/\s+/,/\w+/],className:{1:"keyword",3:"title.class"}}])}),b=g.keywords;return b.type=[...b.type,"boolean","byte","word","String"],b.literal=[...b.literal,"DIGITAL_MESSAGE","FIRMATA_STRING","ANALOG_MESSAGE","REPORT_DIGITAL","REPORT_ANALOG","INPUT_PULLUP","SET_PIN_MODE","INTERNAL2V56","SYSTEM_RESET","LED_BUILTIN","INTERNAL1V1","SYSEX_START","INTERNAL","EXTERNAL","DEFAULT","OUTPUT","INPUT","HIGH","LOW"],b.built_in=[...b.built_in,"KeyboardController","MouseController","SoftwareSerial","EthernetServer","EthernetClient","LiquidCrystal","RobotControl","GSMVoiceCall","EthernetUDP","EsploraTFT","HttpClient","RobotMotor","WiFiClient","GSMScanner","FileSystem","Scheduler","GSMServer","YunClient","YunServer","IPAddress","GSMClient","GSMModem","Keyboard","Ethernet","Console","GSMBand","Esplora","Stepper","Process","WiFiUDP","GSM_SMS","Mailbox","USBHost","Firmata","PImage","Client","Server","GSMPIN","FileIO","Bridge","Serial","EEPROM","Stream","Mouse","Audio","Servo","File","Task","GPRS","WiFi","Wire","TFT","GSM","SPI","SD"],b._hints=["setup","loop","runShellCommandAsynchronously","analogWriteResolution","retrieveCallingNumber","printFirmwareVersion","analogReadResolution","sendDigitalPortPair","noListenOnLocalhost","readJoystickButton","setFirmwareVersion","readJoystickSwitch","scrollDisplayRight","getVoiceCallStatus","scrollDisplayLeft","writeMicroseconds","delayMicroseconds","beginTransmission","getSignalStrength","runAsynchronously","getAsynchronously","listenOnLocalhost","getCurrentCarrier","readAccelerometer","messageAvailable","sendDigitalPorts","lineFollowConfig","countryNameWrite","runShellCommand","readStringUntil","rewindDirectory","readTemperature","setClockDivider","readLightSensor","endTransmission","analogReference","detachInterrupt","countryNameRead","attachInterrupt","encryptionType","readBytesUntil","robotNameWrite","readMicrophone","robotNameRead","cityNameWrite","userNameWrite","readJoystickY","readJoystickX","mouseReleased","openNextFile","scanNetworks","noInterrupts","digitalWrite","beginSpeaker","mousePressed","isActionDone","mouseDragged","displayLogos","noAutoscroll","addParameter","remoteNumber","getModifiers","keyboardRead","userNameRead","waitContinue","processInput","parseCommand","printVersion","readNetworks","writeMessage","blinkVersion","cityNameRead","readMessage","setDataMode","parsePacket","isListening","setBitOrder","beginPacket","isDirectory","motorsWrite","drawCompass","digitalRead","clearScreen","serialEvent","rightToLeft","setTextSize","leftToRight","requestFrom","keyReleased","compassRead","analogWrite","interrupts","WiFiServer","disconnect","playMelody","parseFloat","autoscroll","getPINUsed","setPINUsed","setTimeout","sendAnalog","readSlider","analogRead","beginWrite","createChar","motorsStop","keyPressed","tempoWrite","readButton","subnetMask","debugPrint","macAddress","writeGreen","randomSeed","attachGPRS","readString","sendString","remotePort","releaseAll","mouseMoved","background","getXChange","getYChange","answerCall","getResult","voiceCall","endPacket","constrain","getSocket","writeJSON","getButton","available","connected","findUntil","readBytes","exitValue","readGreen","writeBlue","startLoop","IPAddress","isPressed","sendSysex","pauseMode","gatewayIP","setCursor","getOemKey","tuneWrite","noDisplay","loadImage","switchPIN","onRequest","onReceive","changePIN","playFile","noBuffer","parseInt","overflow","checkPIN","knobRead","beginTFT","bitClear","updateIR","bitWrite","position","writeRGB","highByte","writeRed","setSpeed","readBlue","noStroke","remoteIP","transfer","shutdown","hangCall","beginSMS","endWrite","attached","maintain","noCursor","checkReg","checkPUK","shiftOut","isValid","shiftIn","pulseIn","connect","println","localIP","pinMode","getIMEI","display","noBlink","process","getBand","running","beginSD","drawBMP","lowByte","setBand","release","bitRead","prepare","pointTo","readRed","setMode","noFill","remove","listen","stroke","detach","attach","noTone","exists","buffer","height","bitSet","circle","config","cursor","random","IRread","setDNS","endSMS","getKey","micros","millis","begin","print","write","ready","flush","width","isPIN","blink","clear","press","mkdir","rmdir","close","point","yield","image","BSSID","click","delay","read","text","move","peek","beep","rect","line","open","seek","fill","size","turn","stop","home","find","step","tone","sqrt","RSSI","SSID","end","bit","tan","cos","sin","pow","map","abs","max","min","get","run","put"],g.name="Arduino",g.aliases=["ino"],g.supersetOf="cpp",g},bash:eu.default,c:function(e){let t=e.regex,a=e.COMMENT("//","$",{contains:[{begin:/\\\n/}]}),n="decltype\\(auto\\)",s="[a-zA-Z_]\\w*::",r="("+n+"|"+t.optional(s)+"[a-zA-Z_]\\w*"+t.optional("<[^<>]+>")+")",i={className:"type",variants:[{begin:"\\b[a-z\\d_]*_t\\b"},{match:/\batomic_[a-z]{3,6}\b/}]},l={className:"string",variants:[{begin:'(u8?|U|L)?"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},{begin:"(u8?|U|L)?'(\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)|.)",end:"'",illegal:"."},e.END_SAME_AS_BEGIN({begin:/(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/,end:/\)([^()\\ ]{0,16})"/})]},o={className:"number",variants:[{match:/\b(0b[01']+)/},{match:/(-?)\b([\d']+(\.[\d']*)?|\.[\d']+)((ll|LL|l|L)(u|U)?|(u|U)(ll|LL|l|L)?|f|F|b|B)/},{match:/(-?)\b(0[xX][a-fA-F0-9]+(?:'[a-fA-F0-9]+)*(?:\.[a-fA-F0-9]*(?:'[a-fA-F0-9]*)*)?(?:[pP][-+]?[0-9]+)?(l|L)?(u|U)?)/},{match:/(-?)\b\d+(?:'\d+)*(?:\.\d*(?:'\d*)*)?(?:[eE][-+]?\d+)?/}],relevance:0},c={className:"meta",begin:/#\s*[a-z]+\b/,end:/$/,keywords:{keyword:"if else elif endif define undef warning error line pragma _Pragma ifdef ifndef elifdef elifndef include"},contains:[{begin:/\\\n/,relevance:0},e.inherit(l,{className:"string"}),{className:"string",begin:/<.*?>/},a,e.C_BLOCK_COMMENT_MODE]},d={className:"title",begin:t.optional(s)+e.IDENT_RE,relevance:0},u=t.optional(s)+e.IDENT_RE+"\\s*\\(",m={keyword:["asm","auto","break","case","continue","default","do","else","enum","extern","for","fortran","goto","if","inline","register","restrict","return","sizeof","typeof","typeof_unqual","struct","switch","typedef","union","volatile","while","_Alignas","_Alignof","_Atomic","_Generic","_Noreturn","_Static_assert","_Thread_local","alignas","alignof","noreturn","static_assert","thread_local","_Pragma"],type:["float","double","signed","unsigned","int","short","long","char","void","_Bool","_BitInt","_Complex","_Imaginary","_Decimal32","_Decimal64","_Decimal96","_Decimal128","_Decimal64x","_Decimal128x","_Float16","_Float32","_Float64","_Float128","_Float32x","_Float64x","_Float128x","const","static","constexpr","complex","bool","imaginary"],literal:"true false NULL",built_in:"std string wstring cin cout cerr clog stdin stdout stderr stringstream istringstream ostringstream auto_ptr deque list queue stack vector map set pair bitset multiset multimap unordered_set unordered_map unordered_multiset unordered_multimap priority_queue make_pair array shared_ptr abort terminate abs acos asin atan2 atan calloc ceil cosh cos exit exp fabs floor fmod fprintf fputs free frexp fscanf future isalnum isalpha iscntrl isdigit isgraph islower isprint ispunct isspace isupper isxdigit tolower toupper labs ldexp log10 log malloc realloc memchr memcmp memcpy memset modf pow printf putchar puts scanf sinh sin snprintf sprintf sqrt sscanf strcat strchr strcmp strcpy strcspn strlen strncat strncmp strncpy strpbrk strrchr strspn strstr tanh tan vfprintf vprintf vsprintf endl initializer_list unique_ptr"},p=[c,i,a,e.C_BLOCK_COMMENT_MODE,o,l],h={variants:[{begin:/=/,end:/;/},{begin:/\(/,end:/\)/},{beginKeywords:"new throw return else",end:/;/}],keywords:m,contains:p.concat([{begin:/\(/,end:/\)/,keywords:m,contains:p.concat(["self"]),relevance:0}]),relevance:0},x={begin:"("+r+"[\\*&\\s]+)+"+u,returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:m,illegal:/[^\w\s\*&:<>.]/,contains:[{begin:n,keywords:m,relevance:0},{begin:u,returnBegin:!0,contains:[e.inherit(d,{className:"title.function"})],relevance:0},{relevance:0,match:/,/},{className:"params",begin:/\(/,end:/\)/,keywords:m,relevance:0,contains:[a,e.C_BLOCK_COMMENT_MODE,l,o,i,{begin:/\(/,end:/\)/,keywords:m,relevance:0,contains:["self",a,e.C_BLOCK_COMMENT_MODE,l,o,i]}]},i,a,e.C_BLOCK_COMMENT_MODE,c]};return{name:"C",aliases:["h"],keywords:m,disableAutodetect:!0,illegal:"</",contains:[].concat(h,x,p,[c,{begin:e.IDENT_RE+"::",keywords:m},{className:"class",beginKeywords:"enum class struct union",end:/[{;:<>=]/,contains:[{beginKeywords:"final class struct"},e.TITLE_MODE]}]),exports:{preprocessor:c,strings:l,keywords:m}}},cpp:function(e){let t=e.regex,a=e.COMMENT("//","$",{contains:[{begin:/\\\n/}]}),n="decltype\\(auto\\)",s="[a-zA-Z_]\\w*::",r="(?!struct)("+n+"|"+t.optional(s)+"[a-zA-Z_]\\w*"+t.optional("<[^<>]+>")+")",i={className:"type",begin:"\\b[a-z\\d_]*_t\\b"},l={className:"string",variants:[{begin:'(u8?|U|L)?"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},{begin:"(u8?|U|L)?'(\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)|.)",end:"'",illegal:"."},e.END_SAME_AS_BEGIN({begin:/(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/,end:/\)([^()\\ ]{0,16})"/})]},o={className:"number",variants:[{begin:"[+-]?(?:(?:[0-9](?:'?[0-9])*\\.(?:[0-9](?:'?[0-9])*)?|\\.[0-9](?:'?[0-9])*)(?:[Ee][+-]?[0-9](?:'?[0-9])*)?|[0-9](?:'?[0-9])*[Ee][+-]?[0-9](?:'?[0-9])*|0[Xx](?:[0-9A-Fa-f](?:'?[0-9A-Fa-f])*(?:\\.(?:[0-9A-Fa-f](?:'?[0-9A-Fa-f])*)?)?|\\.[0-9A-Fa-f](?:'?[0-9A-Fa-f])*)[Pp][+-]?[0-9](?:'?[0-9])*)(?:[Ff](?:16|32|64|128)?|(BF|bf)16|[Ll]|)"},{begin:"[+-]?\\b(?:0[Bb][01](?:'?[01])*|0[Xx][0-9A-Fa-f](?:'?[0-9A-Fa-f])*|0(?:'?[0-7])*|[1-9](?:'?[0-9])*)(?:[Uu](?:LL?|ll?)|[Uu][Zz]?|(?:LL?|ll?)[Uu]?|[Zz][Uu]|)"}],relevance:0},c={className:"meta",begin:/#\s*[a-z]+\b/,end:/$/,keywords:{keyword:"if else elif endif define undef warning error line pragma _Pragma ifdef ifndef include"},contains:[{begin:/\\\n/,relevance:0},e.inherit(l,{className:"string"}),{className:"string",begin:/<.*?>/},a,e.C_BLOCK_COMMENT_MODE]},d={className:"title",begin:t.optional(s)+e.IDENT_RE,relevance:0},u=t.optional(s)+e.IDENT_RE+"\\s*\\(",m={type:["bool","char","char16_t","char32_t","char8_t","double","float","int","long","short","void","wchar_t","unsigned","signed","const","static"],keyword:["alignas","alignof","and","and_eq","asm","atomic_cancel","atomic_commit","atomic_noexcept","auto","bitand","bitor","break","case","catch","class","co_await","co_return","co_yield","compl","concept","const_cast|10","consteval","constexpr","constinit","continue","decltype","default","delete","do","dynamic_cast|10","else","enum","explicit","export","extern","false","final","for","friend","goto","if","import","inline","module","mutable","namespace","new","noexcept","not","not_eq","nullptr","operator","or","or_eq","override","private","protected","public","reflexpr","register","reinterpret_cast|10","requires","return","sizeof","static_assert","static_cast|10","struct","switch","synchronized","template","this","thread_local","throw","transaction_safe","transaction_safe_dynamic","true","try","typedef","typeid","typename","union","using","virtual","volatile","while","xor","xor_eq"],literal:["NULL","false","nullopt","nullptr","true"],built_in:["_Pragma"],_type_hints:["any","auto_ptr","barrier","binary_semaphore","bitset","complex","condition_variable","condition_variable_any","counting_semaphore","deque","false_type","flat_map","flat_set","future","imaginary","initializer_list","istringstream","jthread","latch","lock_guard","multimap","multiset","mutex","optional","ostringstream","packaged_task","pair","promise","priority_queue","queue","recursive_mutex","recursive_timed_mutex","scoped_lock","set","shared_future","shared_lock","shared_mutex","shared_timed_mutex","shared_ptr","stack","string_view","stringstream","timed_mutex","thread","true_type","tuple","unique_lock","unique_ptr","unordered_map","unordered_multimap","unordered_multiset","unordered_set","variant","vector","weak_ptr","wstring","wstring_view"]},p={className:"function.dispatch",relevance:0,keywords:{_hint:["abort","abs","acos","apply","as_const","asin","atan","atan2","calloc","ceil","cerr","cin","clog","cos","cosh","cout","declval","endl","exchange","exit","exp","fabs","floor","fmod","forward","fprintf","fputs","free","frexp","fscanf","future","invoke","isalnum","isalpha","iscntrl","isdigit","isgraph","islower","isprint","ispunct","isspace","isupper","isxdigit","labs","launder","ldexp","log","log10","make_pair","make_shared","make_shared_for_overwrite","make_tuple","make_unique","malloc","memchr","memcmp","memcpy","memset","modf","move","pow","printf","putchar","puts","realloc","scanf","sin","sinh","snprintf","sprintf","sqrt","sscanf","std","stderr","stdin","stdout","strcat","strchr","strcmp","strcpy","strcspn","strlen","strncat","strncmp","strncpy","strpbrk","strrchr","strspn","strstr","swap","tan","tanh","terminate","to_underlying","tolower","toupper","vfprintf","visit","vprintf","vsprintf"]},begin:t.concat(/\b/,/(?!decltype)/,/(?!if)/,/(?!for)/,/(?!switch)/,/(?!while)/,e.IDENT_RE,t.lookahead(/(<[^<>]+>|)\s*\(/))},h=[p,c,i,a,e.C_BLOCK_COMMENT_MODE,o,l],x={variants:[{begin:/=/,end:/;/},{begin:/\(/,end:/\)/},{beginKeywords:"new throw return else",end:/;/}],keywords:m,contains:h.concat([{begin:/\(/,end:/\)/,keywords:m,contains:h.concat(["self"]),relevance:0}]),relevance:0},f={className:"function",begin:"("+r+"[\\*&\\s]+)+"+u,returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:m,illegal:/[^\w\s\*&:<>.]/,contains:[{begin:n,keywords:m,relevance:0},{begin:u,returnBegin:!0,contains:[d],relevance:0},{begin:/::/,relevance:0},{begin:/:/,endsWithParent:!0,contains:[l,o]},{relevance:0,match:/,/},{className:"params",begin:/\(/,end:/\)/,keywords:m,relevance:0,contains:[a,e.C_BLOCK_COMMENT_MODE,l,o,i,{begin:/\(/,end:/\)/,keywords:m,relevance:0,contains:["self",a,e.C_BLOCK_COMMENT_MODE,l,o,i]}]},i,a,e.C_BLOCK_COMMENT_MODE,c]};return{name:"C++",aliases:["cc","c++","h++","hpp","hh","hxx","cxx"],keywords:m,illegal:"</",classNameAliases:{"function.dispatch":"built_in"},contains:[].concat(x,f,p,h,[c,{begin:"\\b(deque|list|queue|priority_queue|pair|stack|vector|map|set|bitset|multiset|multimap|unordered_map|unordered_set|unordered_multiset|unordered_multimap|array|tuple|optional|variant|function|flat_map|flat_set)\\s*<(?!<)",end:">",keywords:m,contains:["self",i]},{begin:e.IDENT_RE+"::",keywords:m},{match:[/\b(?:enum(?:\s+(?:class|struct))?|class|struct|union)/,/\s+/,/\w+/],className:{1:"keyword",3:"title.class"}}])}},csharp:function(e){let t={keyword:["abstract","as","base","break","case","catch","class","const","continue","do","else","event","explicit","extern","finally","fixed","for","foreach","goto","if","implicit","in","interface","internal","is","lock","namespace","new","operator","out","override","params","private","protected","public","readonly","record","ref","return","scoped","sealed","sizeof","stackalloc","static","struct","switch","this","throw","try","typeof","unchecked","unsafe","using","virtual","void","volatile","while"].concat(["add","alias","and","ascending","args","async","await","by","descending","dynamic","equals","file","from","get","global","group","init","into","join","let","nameof","not","notnull","on","or","orderby","partial","record","remove","required","scoped","select","set","unmanaged","value|0","var","when","where","with","yield"]),built_in:["bool","byte","char","decimal","delegate","double","dynamic","enum","float","int","long","nint","nuint","object","sbyte","short","string","ulong","uint","ushort"],literal:["default","false","null","true"]},a=e.inherit(e.TITLE_MODE,{begin:"[a-zA-Z](\\.?\\w)*"}),n={className:"number",variants:[{begin:"\\b(0b[01']+)"},{begin:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)(u|U|l|L|ul|UL|f|F|b|B)"},{begin:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)"}],relevance:0},s={className:"string",begin:'@"',end:'"',contains:[{begin:'""'}]},r=e.inherit(s,{illegal:/\n/}),i={className:"subst",begin:/\{/,end:/\}/,keywords:t},l=e.inherit(i,{illegal:/\n/}),o={className:"string",begin:/\$"/,end:'"',illegal:/\n/,contains:[{begin:/\{\{/},{begin:/\}\}/},e.BACKSLASH_ESCAPE,l]},c={className:"string",begin:/\$@"/,end:'"',contains:[{begin:/\{\{/},{begin:/\}\}/},{begin:'""'},i]},d=e.inherit(c,{illegal:/\n/,contains:[{begin:/\{\{/},{begin:/\}\}/},{begin:'""'},l]});i.contains=[c,o,s,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,n,e.C_BLOCK_COMMENT_MODE],l.contains=[d,o,r,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,n,e.inherit(e.C_BLOCK_COMMENT_MODE,{illegal:/\n/})];let u={variants:[{className:"string",begin:/"""("*)(?!")(.|\n)*?"""\1/,relevance:1},c,o,s,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},m={begin:"<",end:">",contains:[{beginKeywords:"in out"},a]},p=e.IDENT_RE+"(<"+e.IDENT_RE+"(\\s*,\\s*"+e.IDENT_RE+")*>)?(\\[\\])?",h={begin:"@"+e.IDENT_RE,relevance:0};return{name:"C#",aliases:["cs","c#"],keywords:t,illegal:/::/,contains:[e.COMMENT("///","$",{returnBegin:!0,contains:[{className:"doctag",variants:[{begin:"///",relevance:0},{begin:"<!--|-->"},{begin:"</?",end:">"}]}]}),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"meta",begin:"#",end:"$",keywords:{keyword:"if else elif endif define undef warning error line region endregion pragma checksum"}},u,n,{beginKeywords:"class interface",relevance:0,end:/[{;=]/,illegal:/[^\s:,]/,contains:[{beginKeywords:"where class"},a,m,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{beginKeywords:"namespace",relevance:0,end:/[{;=]/,illegal:/[^\s:]/,contains:[a,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{beginKeywords:"record",relevance:0,end:/[{;=]/,illegal:/[^\s:]/,contains:[a,m,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{className:"meta",begin:"^\\s*\\[(?=[\\w])",excludeBegin:!0,end:"\\]",excludeEnd:!0,contains:[{className:"string",begin:/"/,end:/"/}]},{beginKeywords:"new return throw await else",relevance:0},{className:"function",begin:"("+p+"\\s+)+"+e.IDENT_RE+"\\s*(<[^=]+>\\s*)?\\(",returnBegin:!0,end:/\s*[{;=]/,excludeEnd:!0,keywords:t,contains:[{beginKeywords:"public private protected static internal protected abstract async extern override unsafe virtual new sealed partial",relevance:0},{begin:e.IDENT_RE+"\\s*(<[^=]+>\\s*)?\\(",returnBegin:!0,contains:[e.TITLE_MODE,m],relevance:0},{match:/\(\)/},{className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:t,relevance:0,contains:[u,n,e.C_BLOCK_COMMENT_MODE]},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},h]}},css:em.default,diff:function(e){let t=e.regex;return{name:"Diff",aliases:["patch"],contains:[{className:"meta",relevance:10,match:t.either(/^@@ +-\d+,\d+ +\+\d+,\d+ +@@/,/^\*\*\* +\d+,\d+ +\*\*\*\*$/,/^--- +\d+,\d+ +----$/)},{className:"comment",variants:[{begin:t.either(/Index: /,/^index/,/={3,}/,/^-{3}/,/^\*{3} /,/^\+{3}/,/^diff --git/),end:/$/},{match:/^\*{15}$/}]},{className:"addition",begin:/^\+/,end:/$/},{className:"deletion",begin:/^-/,end:/$/},{className:"addition",begin:/^!/,end:/$/}]}},go:ep.default,graphql:function(e){let t=e.regex;return{name:"GraphQL",aliases:["gql"],case_insensitive:!0,disableAutodetect:!1,keywords:{keyword:["query","mutation","subscription","type","input","schema","directive","interface","union","scalar","fragment","enum","on"],literal:["true","false","null"]},contains:[e.HASH_COMMENT_MODE,e.QUOTE_STRING_MODE,e.NUMBER_MODE,{scope:"punctuation",match:/[.]{3}/,relevance:0},{scope:"punctuation",begin:/[\!\(\)\:\=\[\]\{\|\}]{1}/,relevance:0},{scope:"variable",begin:/\$/,end:/\W/,excludeEnd:!0,relevance:0},{scope:"meta",match:/@\w+/,excludeEnd:!0},{scope:"symbol",begin:t.concat(/[_A-Za-z][_0-9A-Za-z]*/,t.lookahead(/\s*:/)),relevance:0}],illegal:[/[;<']/,/BEGIN/]}},ini:function(e){let t=e.regex,a={className:"number",relevance:0,variants:[{begin:/([+-]+)?[\d]+_[\d_]+/},{begin:e.NUMBER_RE}]},n=e.COMMENT();n.variants=[{begin:/;/,end:/$/},{begin:/#/,end:/$/}];let s={className:"variable",variants:[{begin:/\$[\w\d"][\w\d_]*/},{begin:/\$\{(.*?)\}/}]},r={className:"literal",begin:/\bon|off|true|false|yes|no\b/},i={className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{begin:"'''",end:"'''",relevance:10},{begin:'"""',end:'"""',relevance:10},{begin:'"',end:'"'},{begin:"'",end:"'"}]},l=t.either(/[A-Za-z0-9_-]+/,/"(\\"|[^"])*"/,/'[^']*'/);return{name:"TOML, also INI",aliases:["toml"],case_insensitive:!0,illegal:/\S/,contains:[n,{className:"section",begin:/\[+/,end:/\]+/},{begin:t.concat(l,"(\\s*\\.\\s*",l,")*",t.lookahead(/\s*=\s*[^#\s]/)),className:"attr",starts:{end:/$/,contains:[n,{begin:/\[/,end:/\]/,contains:[n,r,s,i,a,"self"],relevance:0},r,s,i,a]}}]}},java:function(e){let t=e.regex,a="[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*",n=a+function e(t,a,n){return -1===n?"":t.replace(a,s=>e(t,a,n-1))}("(?:<"+a+"~~~(?:\\s*,\\s*"+a+"~~~)*>)?",/~~~/g,2),s={keyword:["synchronized","abstract","private","var","static","if","const ","for","while","strictfp","finally","protected","import","native","final","void","enum","else","break","transient","catch","instanceof","volatile","case","assert","package","default","public","try","switch","continue","throws","protected","public","private","module","requires","exports","do","sealed","yield","permits","goto","when"],literal:["false","true","null"],type:["char","boolean","long","float","int","byte","short","double"],built_in:["super","this"]},r={className:"meta",begin:"@"+a,contains:[{begin:/\(/,end:/\)/,contains:["self"]}]},i={className:"params",begin:/\(/,end:/\)/,keywords:s,relevance:0,contains:[e.C_BLOCK_COMMENT_MODE],endsParent:!0};return{name:"Java",aliases:["jsp"],keywords:s,illegal:/<\/|#/,contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{begin:/\w+@/,relevance:0},{className:"doctag",begin:"@[A-Za-z]+"}]}),{begin:/import java\.[a-z]+\./,keywords:"import",relevance:2},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{begin:/"""/,end:/"""/,className:"string",contains:[e.BACKSLASH_ESCAPE]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{match:[/\b(?:class|interface|enum|extends|implements|new)/,/\s+/,a],className:{1:"keyword",3:"title.class"}},{match:/non-sealed/,scope:"keyword"},{begin:[t.concat(/(?!else)/,a),/\s+/,a,/\s+/,/=(?!=)/],className:{1:"type",3:"variable",5:"operator"}},{begin:[/record/,/\s+/,a],className:{1:"keyword",3:"title.class"},contains:[i,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{beginKeywords:"new throw return else",relevance:0},{begin:["(?:"+n+"\\s+)",e.UNDERSCORE_IDENT_RE,/\s*(?=\()/],className:{2:"title.function"},keywords:s,contains:[{className:"params",begin:/\(/,end:/\)/,keywords:s,relevance:0,contains:[r,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,eg,e.C_BLOCK_COMMENT_MODE]},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},eg,r]}},javascript:eb.default,json:ew.default,kotlin:function(e){let t={keyword:"abstract as val var vararg get set class object open private protected public noinline crossinline dynamic final enum if else do while for when throw try catch finally import package is in fun override companion reified inline lateinit init interface annotation data sealed internal infix operator out by constructor super tailrec where const inner suspend typealias external expect actual",built_in:"Byte Short Char Int Long Boolean Float Double Void Unit Nothing",literal:"true false null"},a={className:"symbol",begin:e.UNDERSCORE_IDENT_RE+"@"},n={className:"subst",begin:/\$\{/,end:/\}/,contains:[e.C_NUMBER_MODE]},s={className:"variable",begin:"\\$"+e.UNDERSCORE_IDENT_RE},r={className:"string",variants:[{begin:'"""',end:'"""(?=[^"])',contains:[s,n]},{begin:"'",end:"'",illegal:/\n/,contains:[e.BACKSLASH_ESCAPE]},{begin:'"',end:'"',illegal:/\n/,contains:[e.BACKSLASH_ESCAPE,s,n]}]};n.contains.push(r);let i={className:"meta",begin:"@(?:file|property|field|get|set|receiver|param|setparam|delegate)\\s*:(?:\\s*"+e.UNDERSCORE_IDENT_RE+")?"},l={className:"meta",begin:"@"+e.UNDERSCORE_IDENT_RE,contains:[{begin:/\(/,end:/\)/,contains:[e.inherit(r,{className:"string"}),"self"]}]},o=e.COMMENT("/\\*","\\*/",{contains:[e.C_BLOCK_COMMENT_MODE]}),c={variants:[{className:"type",begin:e.UNDERSCORE_IDENT_RE},{begin:/\(/,end:/\)/,contains:[]}]};return c.variants[1].contains=[c],c.variants[1].contains=[c],{name:"Kotlin",aliases:["kt","kts"],keywords:t,contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{className:"doctag",begin:"@[A-Za-z]+"}]}),e.C_LINE_COMMENT_MODE,o,{className:"keyword",begin:/\b(break|continue|return|this)\b/,starts:{contains:[{className:"symbol",begin:/@\w+/}]}},a,i,l,{className:"function",beginKeywords:"fun",end:"[(]|$",returnBegin:!0,excludeEnd:!0,keywords:t,relevance:5,contains:[{begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0,contains:[e.UNDERSCORE_TITLE_MODE]},{className:"type",begin:/</,end:/>/,keywords:"reified",relevance:0},{className:"params",begin:/\(/,end:/\)/,endsParent:!0,keywords:t,relevance:0,contains:[{begin:/:/,end:/[=,\/]/,endsWithParent:!0,contains:[c,e.C_LINE_COMMENT_MODE,o],relevance:0},e.C_LINE_COMMENT_MODE,o,i,l,r,e.C_NUMBER_MODE]},o]},{begin:[/class|interface|trait/,/\s+/,e.UNDERSCORE_IDENT_RE],beginScope:{3:"title.class"},keywords:"class interface trait",end:/[:\{(]|$/,excludeEnd:!0,illegal:"extends implements",contains:[{beginKeywords:"public protected internal private constructor"},e.UNDERSCORE_TITLE_MODE,{className:"type",begin:/</,end:/>/,excludeBegin:!0,excludeEnd:!0,relevance:0},{className:"type",begin:/[,:]\s*/,end:/[<\(,){\s]|$/,excludeBegin:!0,returnEnd:!0},i,l]},r,{className:"meta",begin:"^#!/usr/bin/env",end:"$",illegal:"\n"},ek]}},less:function(e){let t={IMPORTANT:{scope:"meta",begin:"!important"},BLOCK_COMMENT:e.C_BLOCK_COMMENT_MODE,HEXCOLOR:{scope:"number",begin:/#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\b/},FUNCTION_DISPATCH:{className:"built_in",begin:/[\w-]+(?=\()/},ATTRIBUTE_SELECTOR_MODE:{scope:"selector-attr",begin:/\[/,end:/\]/,illegal:"$",contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},CSS_NUMBER_MODE:{scope:"number",begin:e.NUMBER_RE+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",relevance:0},CSS_VARIABLE:{className:"attr",begin:/--[A-Za-z_][A-Za-z0-9_-]*/}},a="[\\w-]+",n="("+a+"|@\\{"+a+"\\})",s=[],r=[],i=function(e){return{className:"string",begin:"~?"+e+".*?"+e}},l=function(e,t,a){return{className:e,begin:t,relevance:a}},o={$pattern:/[a-z-]+/,keyword:"and or not only",attribute:e_.join(" ")};r.push(e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,i("'"),i('"'),t.CSS_NUMBER_MODE,{begin:"(url|data-uri)\\(",starts:{className:"string",end:"[\\)\\n]",excludeEnd:!0}},t.HEXCOLOR,{begin:"\\(",end:"\\)",contains:r,keywords:o,relevance:0},l("variable","@@?"+a,10),l("variable","@\\{"+a+"\\}"),l("built_in","~?`[^`]*?`"),{className:"attribute",begin:a+"\\s*:",end:":",returnBegin:!0,excludeEnd:!0},t.IMPORTANT,{beginKeywords:"and not"},t.FUNCTION_DISPATCH);let c=r.concat({begin:/\{/,end:/\}/,contains:s}),d={beginKeywords:"when",endsWithParent:!0,contains:[{beginKeywords:"and not"}].concat(r)},u={begin:n+"\\s*:",returnBegin:!0,end:/[;}]/,relevance:0,contains:[{begin:/-(webkit|moz|ms|o)-/},t.CSS_VARIABLE,{className:"attribute",begin:"\\b("+eS.join("|")+")\\b",end:/(?=:)/,starts:{endsWithParent:!0,illegal:"[<=$]",relevance:0,contains:r}}]},m={variants:[{begin:"[\\.#:&\\[>]",end:"[;{}]"},{begin:n,end:/\{/}],returnBegin:!0,returnEnd:!0,illegal:"[<='$\"]",relevance:0,contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,d,l("keyword","all\\b"),l("variable","@\\{"+a+"\\}"),{begin:"\\b("+ej.join("|")+")\\b",className:"selector-tag"},t.CSS_NUMBER_MODE,l("selector-tag",n,0),l("selector-id","#"+n),l("selector-class","\\."+n,0),l("selector-tag","&",0),t.ATTRIBUTE_SELECTOR_MODE,{className:"selector-pseudo",begin:":("+eC.join("|")+")"},{className:"selector-pseudo",begin:":(:)?("+eE.join("|")+")"},{begin:/\(/,end:/\)/,relevance:0,contains:c},{begin:"!important"},t.FUNCTION_DISPATCH]},p={begin:a+":(:)?"+`(${eM.join("|")})`,returnBegin:!0,contains:[m]};return s.push(e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"keyword",begin:"@(import|media|charset|font-face|(-[a-z]+-)?keyframes|supports|document|namespace|page|viewport|host)\\b",starts:{end:"[;{}]",keywords:o,returnEnd:!0,contains:r,relevance:0}},{className:"variable",variants:[{begin:"@"+a+"\\s*:",relevance:15},{begin:"@"+a}],starts:{end:"[;}]",returnEnd:!0,contains:c}},p,u,m,d,t.FUNCTION_DISPATCH),{name:"Less",case_insensitive:!0,illegal:"[=>'/<($\"]",contains:s}},lua:function(e){let t="\\[=*\\[",a="\\]=*\\]",n={begin:t,end:a,contains:["self"]},s=[e.COMMENT("--(?!"+t+")","$"),e.COMMENT("--"+t,a,{contains:[n],relevance:10})];return{name:"Lua",aliases:["pluto"],keywords:{$pattern:e.UNDERSCORE_IDENT_RE,literal:"true false nil",keyword:"and break do else elseif end for goto if in local not or repeat return then until while",built_in:"_G _ENV _VERSION __index __newindex __mode __call __metatable __tostring __len __gc __add __sub __mul __div __mod __pow __concat __unm __eq __lt __le assert collectgarbage dofile error getfenv getmetatable ipairs load loadfile loadstring module next pairs pcall print rawequal rawget rawset require select setfenv setmetatable tonumber tostring type unpack xpcall arg self coroutine resume yield status wrap create running debug getupvalue debug sethook getmetatable gethook setmetatable setlocal traceback setfenv getinfo setupvalue getlocal getregistry getfenv io lines write close flush open output type read stderr stdin input stdout popen tmpfile math log max acos huge ldexp pi cos tanh pow deg tan cosh sinh random randomseed frexp ceil floor rad abs sqrt modf asin min mod fmod log10 atan2 exp sin atan os exit setlocale date getenv difftime remove time clock tmpname rename execute package preload loadlib loaded loaders cpath config path seeall string sub upper len gfind rep find match char dump gmatch reverse byte format gsub lower table setn insert getn foreachi maxn foreach concat sort remove"},contains:s.concat([{className:"function",beginKeywords:"function",end:"\\)",contains:[e.inherit(e.TITLE_MODE,{begin:"([_a-zA-Z]\\w*\\.)*([_a-zA-Z]\\w*:)?[_a-zA-Z]\\w*"}),{className:"params",begin:"\\(",endsWithParent:!0,contains:s}].concat(s)},e.C_NUMBER_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{className:"string",begin:t,end:a,contains:[n],relevance:5}])}},makefile:function(e){let t={className:"variable",variants:[{begin:"\\$\\("+e.UNDERSCORE_IDENT_RE+"\\)",contains:[e.BACKSLASH_ESCAPE]},{begin:/\$[@%<?\^\+\*]/}]},a={className:"string",begin:/"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,t]},n={begin:"^"+e.UNDERSCORE_IDENT_RE+"\\s*(?=[:+?]?=)"};return{name:"Makefile",aliases:["mk","mak","make"],keywords:{$pattern:/[\w-]+/,keyword:"define endef undefine ifdef ifndef ifeq ifneq else endif include -include sinclude override export unexport private vpath"},contains:[e.HASH_COMMENT_MODE,t,a,{className:"variable",begin:/\$\([\w-]+\s/,end:/\)/,keywords:{built_in:"subst patsubst strip findstring filter filter-out sort word wordlist firstword lastword dir notdir suffix basename addsuffix addprefix join wildcard realpath abspath error warning shell origin flavor foreach if or and call eval file value"},contains:[t,a]},n,{className:"meta",begin:/^\.PHONY:/,end:/$/,keywords:{$pattern:/[\.\w]+/,keyword:".PHONY"}},{className:"section",begin:/^[^\s]+:/,end:/$/,contains:[t]}]}},markdown:eA.default,objectivec:function(e){let t=/[a-zA-Z@][a-zA-Z0-9_]*/,a={$pattern:t,keyword:["@interface","@class","@protocol","@implementation"]};return{name:"Objective-C",aliases:["mm","objc","obj-c","obj-c++","objective-c++"],keywords:{"variable.language":["this","super"],$pattern:t,keyword:["while","export","sizeof","typedef","const","struct","for","union","volatile","static","mutable","if","do","return","goto","enum","else","break","extern","asm","case","default","register","explicit","typename","switch","continue","inline","readonly","assign","readwrite","self","@synchronized","id","typeof","nonatomic","IBOutlet","IBAction","strong","weak","copy","in","out","inout","bycopy","byref","oneway","__strong","__weak","__block","__autoreleasing","@private","@protected","@public","@try","@property","@end","@throw","@catch","@finally","@autoreleasepool","@synthesize","@dynamic","@selector","@optional","@required","@encode","@package","@import","@defs","@compatibility_alias","__bridge","__bridge_transfer","__bridge_retained","__bridge_retain","__covariant","__contravariant","__kindof","_Nonnull","_Nullable","_Null_unspecified","__FUNCTION__","__PRETTY_FUNCTION__","__attribute__","getter","setter","retain","unsafe_unretained","nonnull","nullable","null_unspecified","null_resettable","class","instancetype","NS_DESIGNATED_INITIALIZER","NS_UNAVAILABLE","NS_REQUIRES_SUPER","NS_RETURNS_INNER_POINTER","NS_INLINE","NS_AVAILABLE","NS_DEPRECATED","NS_ENUM","NS_OPTIONS","NS_SWIFT_UNAVAILABLE","NS_ASSUME_NONNULL_BEGIN","NS_ASSUME_NONNULL_END","NS_REFINED_FOR_SWIFT","NS_SWIFT_NAME","NS_SWIFT_NOTHROW","NS_DURING","NS_HANDLER","NS_ENDHANDLER","NS_VALUERETURN","NS_VOIDRETURN"],literal:["false","true","FALSE","TRUE","nil","YES","NO","NULL"],built_in:["dispatch_once_t","dispatch_queue_t","dispatch_sync","dispatch_async","dispatch_once"],type:["int","float","char","unsigned","signed","short","long","double","wchar_t","unichar","void","bool","BOOL","id|0","_Bool"]},illegal:"</",contains:[{className:"built_in",begin:"\\b(AV|CA|CF|CG|CI|CL|CM|CN|CT|MK|MP|MTK|MTL|NS|SCN|SK|UI|WK|XC)\\w+"},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.C_NUMBER_MODE,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,{className:"string",variants:[{begin:'@"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]}]},{className:"meta",begin:/#\s*[a-z]+\b/,end:/$/,keywords:{keyword:"if else elif endif define undef warning error line pragma ifdef ifndef include"},contains:[{begin:/\\\n/,relevance:0},e.inherit(e.QUOTE_STRING_MODE,{className:"string"}),{className:"string",begin:/<.*?>/,end:/$/,illegal:"\\n"},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{className:"class",begin:"("+a.keyword.join("|")+")\\b",end:/(\{|$)/,excludeEnd:!0,keywords:a,contains:[e.UNDERSCORE_TITLE_MODE]},{begin:"\\."+e.UNDERSCORE_IDENT_RE,relevance:0}]}},perl:function(e){let t=e.regex,a=/[dualxmsipngr]{0,12}/,n={$pattern:/[\w.]+/,keyword:"abs accept alarm and atan2 bind binmode bless break caller chdir chmod chomp chop chown chr chroot class close closedir connect continue cos crypt dbmclose dbmopen defined delete die do dump each else elsif endgrent endhostent endnetent endprotoent endpwent endservent eof eval exec exists exit exp fcntl field fileno flock for foreach fork format formline getc getgrent getgrgid getgrnam gethostbyaddr gethostbyname gethostent getlogin getnetbyaddr getnetbyname getnetent getpeername getpgrp getpriority getprotobyname getprotobynumber getprotoent getpwent getpwnam getpwuid getservbyname getservbyport getservent getsockname getsockopt given glob gmtime goto grep gt hex if index int ioctl join keys kill last lc lcfirst length link listen local localtime log lstat lt ma map method mkdir msgctl msgget msgrcv msgsnd my ne next no not oct open opendir or ord our pack package pipe pop pos print printf prototype push q|0 qq quotemeta qw qx rand read readdir readline readlink readpipe recv redo ref rename require reset return reverse rewinddir rindex rmdir say scalar seek seekdir select semctl semget semop send setgrent sethostent setnetent setpgrp setpriority setprotoent setpwent setservent setsockopt shift shmctl shmget shmread shmwrite shutdown sin sleep socket socketpair sort splice split sprintf sqrt srand stat state study sub substr symlink syscall sysopen sysread sysseek system syswrite tell telldir tie tied time times tr truncate uc ucfirst umask undef unless unlink unpack unshift untie until use utime values vec wait waitpid wantarray warn when while write x|0 xor y|0"},s={className:"subst",begin:"[$@]\\{",end:"\\}",keywords:n},r={begin:/->\{/,end:/\}/},i={scope:"attr",match:/\s+:\s*\w+(\s*\(.*?\))?/},l={scope:"variable",variants:[{begin:/\$\d/},{begin:t.concat(/[$%@](?!")(\^\w\b|#\w+(::\w+)*|\{\w+\}|\w+(::\w*)*)/,"(?![A-Za-z])(?![@$%])")},{begin:/[$%@](?!")[^\s\w{=]|\$=/,relevance:0}],contains:[i]},o={className:"number",variants:[{match:/0?\.[0-9][0-9_]+\b/},{match:/\bv?(0|[1-9][0-9_]*(\.[0-9_]+)?|[1-9][0-9_]*)\b/},{match:/\b0[0-7][0-7_]*\b/},{match:/\b0x[0-9a-fA-F][0-9a-fA-F_]*\b/},{match:/\b0b[0-1][0-1_]*\b/}],relevance:0},c=[e.BACKSLASH_ESCAPE,s,l],d=[/!/,/\//,/\|/,/\?/,/'/,/"/,/#/],u=(e,n,s="\\1")=>{let r="\\1"===s?s:t.concat(s,n);return t.concat(t.concat("(?:",e,")"),n,/(?:\\.|[^\\\/])*?/,r,/(?:\\.|[^\\\/])*?/,s,a)},m=(e,n,s)=>t.concat(t.concat("(?:",e,")"),n,/(?:\\.|[^\\\/])*?/,s,a),p=[l,e.HASH_COMMENT_MODE,e.COMMENT(/^=\w/,/=cut/,{endsWithParent:!0}),r,{className:"string",contains:c,variants:[{begin:"q[qwxr]?\\s*\\(",end:"\\)",relevance:5},{begin:"q[qwxr]?\\s*\\[",end:"\\]",relevance:5},{begin:"q[qwxr]?\\s*\\{",end:"\\}",relevance:5},{begin:"q[qwxr]?\\s*\\|",end:"\\|",relevance:5},{begin:"q[qwxr]?\\s*<",end:">",relevance:5},{begin:"qw\\s+q",end:"q",relevance:5},{begin:"'",end:"'",contains:[e.BACKSLASH_ESCAPE]},{begin:'"',end:'"'},{begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE]},{begin:/\{\w+\}/,relevance:0},{begin:"-?\\w+\\s*=>",relevance:0}]},o,{begin:"(\\/\\/|"+e.RE_STARTERS_RE+"|\\b(split|return|print|reverse|grep)\\b)\\s*",keywords:"split return print reverse grep",relevance:0,contains:[e.HASH_COMMENT_MODE,{className:"regexp",variants:[{begin:u("s|tr|y",t.either(...d,{capture:!0}))},{begin:u("s|tr|y","\\(","\\)")},{begin:u("s|tr|y","\\[","\\]")},{begin:u("s|tr|y","\\{","\\}")}],relevance:2},{className:"regexp",variants:[{begin:/(m|qr)\/\//,relevance:0},{begin:m("(?:m|qr)?",/\//,/\//)},{begin:m("m|qr",t.either(...d,{capture:!0}),/\1/)},{begin:m("m|qr",/\(/,/\)/)},{begin:m("m|qr",/\[/,/\]/)},{begin:m("m|qr",/\{/,/\}/)}]}]},{className:"function",beginKeywords:"sub method",end:"(\\s*\\(.*?\\))?[;{]",excludeEnd:!0,relevance:5,contains:[e.TITLE_MODE,i]},{className:"class",beginKeywords:"class",end:"[;{]",excludeEnd:!0,relevance:5,contains:[e.TITLE_MODE,i,o]},{begin:"-\\w\\b",relevance:0},{begin:"^__DATA__$",end:"^__END__$",subLanguage:"mojolicious",contains:[{begin:"^@@.*",end:"$",className:"comment"}]}];return s.contains=p,r.contains=p,{name:"Perl",aliases:["pl","pm"],keywords:n,contains:p}},php:function(e){let t,a=e.regex,n=/(?![A-Za-z0-9])(?![$])/,s=a.concat(/[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/,n),r=a.concat(/(\\?[A-Z][a-z0-9_\x7f-\xff]+|\\?[A-Z]+(?=[A-Z][a-z0-9_\x7f-\xff])){1,}/,n),i=a.concat(/[A-Z]+/,n),l={scope:"variable",match:"\\$+"+s},o={scope:"subst",variants:[{begin:/\$\w+/},{begin:/\{\$/,end:/\}/}]},c=e.inherit(e.APOS_STRING_MODE,{illegal:null}),d=e.inherit(e.QUOTE_STRING_MODE,{illegal:null,contains:e.QUOTE_STRING_MODE.contains.concat(o)}),u={begin:/<<<[ \t]*(?:(\w+)|"(\w+)")\n/,end:/[ \t]*(\w+)\b/,contains:e.QUOTE_STRING_MODE.contains.concat(o),"on:begin":(e,t)=>{t.data._beginMatch=e[1]||e[2]},"on:end":(e,t)=>{t.data._beginMatch!==e[1]&&t.ignoreMatch()}},m=e.END_SAME_AS_BEGIN({begin:/<<<[ \t]*'(\w+)'\n/,end:/[ \t]*(\w+)\b/}),p="[ \n]",h={scope:"string",variants:[d,c,u,m]},x={scope:"number",variants:[{begin:"\\b0[bB][01]+(?:_[01]+)*\\b"},{begin:"\\b0[oO][0-7]+(?:_[0-7]+)*\\b"},{begin:"\\b0[xX][\\da-fA-F]+(?:_[\\da-fA-F]+)*\\b"},{begin:"(?:\\b\\d+(?:_\\d+)*(\\.(?:\\d+(?:_\\d+)*))?|\\B\\.\\d+)(?:[eE][+-]?\\d+)?"}],relevance:0},f=["false","null","true"],g=["__CLASS__","__DIR__","__FILE__","__FUNCTION__","__COMPILER_HALT_OFFSET__","__LINE__","__METHOD__","__NAMESPACE__","__TRAIT__","die","echo","exit","include","include_once","print","require","require_once","array","abstract","and","as","binary","bool","boolean","break","callable","case","catch","class","clone","const","continue","declare","default","do","double","else","elseif","empty","enddeclare","endfor","endforeach","endif","endswitch","endwhile","enum","eval","extends","final","finally","float","for","foreach","from","global","goto","if","implements","instanceof","insteadof","int","integer","interface","isset","iterable","list","match|0","mixed","new","never","object","or","private","protected","public","readonly","real","return","string","switch","throw","trait","try","unset","use","var","void","while","xor","yield"],b=["Error|0","AppendIterator","ArgumentCountError","ArithmeticError","ArrayIterator","ArrayObject","AssertionError","BadFunctionCallException","BadMethodCallException","CachingIterator","CallbackFilterIterator","CompileError","Countable","DirectoryIterator","DivisionByZeroError","DomainException","EmptyIterator","ErrorException","Exception","FilesystemIterator","FilterIterator","GlobIterator","InfiniteIterator","InvalidArgumentException","IteratorIterator","LengthException","LimitIterator","LogicException","MultipleIterator","NoRewindIterator","OutOfBoundsException","OutOfRangeException","OuterIterator","OverflowException","ParentIterator","ParseError","RangeException","RecursiveArrayIterator","RecursiveCachingIterator","RecursiveCallbackFilterIterator","RecursiveDirectoryIterator","RecursiveFilterIterator","RecursiveIterator","RecursiveIteratorIterator","RecursiveRegexIterator","RecursiveTreeIterator","RegexIterator","RuntimeException","SeekableIterator","SplDoublyLinkedList","SplFileInfo","SplFileObject","SplFixedArray","SplHeap","SplMaxHeap","SplMinHeap","SplObjectStorage","SplObserver","SplPriorityQueue","SplQueue","SplStack","SplSubject","SplTempFileObject","TypeError","UnderflowException","UnexpectedValueException","UnhandledMatchError","ArrayAccess","BackedEnum","Closure","Fiber","Generator","Iterator","IteratorAggregate","Serializable","Stringable","Throwable","Traversable","UnitEnum","WeakReference","WeakMap","Directory","__PHP_Incomplete_Class","parent","php_user_filter","self","static","stdClass"],w={keyword:g,literal:(t=[],f.forEach(e=>{t.push(e),e.toLowerCase()===e?t.push(e.toUpperCase()):t.push(e.toLowerCase())}),t),built_in:b},y=e=>e.map(e=>e.replace(/\|\d+$/,"")),v={variants:[{match:[/new/,a.concat(p,"+"),a.concat("(?!",y(b).join("\\b|"),"\\b)"),r],scope:{1:"keyword",4:"title.class"}}]},N=a.concat(s,"\\b(?!\\()"),k={variants:[{match:[a.concat(/::/,a.lookahead(/(?!class\b)/)),N],scope:{2:"variable.constant"}},{match:[/::/,/class/],scope:{2:"variable.language"}},{match:[r,a.concat(/::/,a.lookahead(/(?!class\b)/)),N],scope:{1:"title.class",3:"variable.constant"}},{match:[r,a.concat("::",a.lookahead(/(?!class\b)/))],scope:{1:"title.class"}},{match:[r,/::/,/class/],scope:{1:"title.class",3:"variable.language"}}]},j={scope:"attr",match:a.concat(s,a.lookahead(":"),a.lookahead(/(?!::)/))},_={relevance:0,begin:/\(/,end:/\)/,keywords:w,contains:[j,l,k,e.C_BLOCK_COMMENT_MODE,h,x,v]},C={relevance:0,match:[/\b/,a.concat("(?!fn\\b|function\\b|",y(g).join("\\b|"),"|",y(b).join("\\b|"),"\\b)"),s,a.concat(p,"*"),a.lookahead(/(?=\()/)],scope:{3:"title.function.invoke"},contains:[_]};_.contains.push(C);let E=[j,k,e.C_BLOCK_COMMENT_MODE,h,x,v],S={begin:a.concat(/#\[\s*\\?/,a.either(r,i)),beginScope:"meta",end:/]/,endScope:"meta",keywords:{literal:f,keyword:["new","array"]},contains:[{begin:/\[/,end:/]/,keywords:{literal:f,keyword:["new","array"]},contains:["self",...E]},...E,{scope:"meta",variants:[{match:r},{match:i}]}]};return{case_insensitive:!1,keywords:w,contains:[S,e.HASH_COMMENT_MODE,e.COMMENT("//","$"),e.COMMENT("/\\*","\\*/",{contains:[{scope:"doctag",match:"@[A-Za-z]+"}]}),{match:/__halt_compiler\(\);/,keywords:"__halt_compiler",starts:{scope:"comment",end:e.MATCH_NOTHING_RE,contains:[{match:/\?>/,scope:"meta",endsParent:!0}]}},{scope:"meta",variants:[{begin:/<\?php/,relevance:10},{begin:/<\?=/},{begin:/<\?/,relevance:.1},{begin:/\?>/}]},{scope:"variable.language",match:/\$this\b/},l,C,k,{match:[/const/,/\s/,s],scope:{1:"keyword",3:"variable.constant"}},v,{scope:"function",relevance:0,beginKeywords:"fn function",end:/[;{]/,excludeEnd:!0,illegal:"[$%\\[]",contains:[{beginKeywords:"use"},e.UNDERSCORE_TITLE_MODE,{begin:"=>",endsParent:!0},{scope:"params",begin:"\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0,keywords:w,contains:["self",S,l,k,e.C_BLOCK_COMMENT_MODE,h,x]}]},{scope:"class",variants:[{beginKeywords:"enum",illegal:/[($"]/},{beginKeywords:"class interface trait",illegal:/[:($"]/}],relevance:0,end:/\{/,excludeEnd:!0,contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"namespace",relevance:0,end:";",illegal:/[.']/,contains:[e.inherit(e.UNDERSCORE_TITLE_MODE,{scope:"title.class"})]},{beginKeywords:"use",relevance:0,end:";",contains:[{match:/\b(as|const|function)\b/,scope:"keyword"},e.UNDERSCORE_TITLE_MODE]},h,x]}},"php-template":function(e){return{name:"PHP template",subLanguage:"xml",contains:[{begin:/<\?(php|=)?/,end:/\?>/,subLanguage:"php",contains:[{begin:"/\\*",end:"\\*/",skip:!0},{begin:'b"',end:'"',skip:!0},{begin:"b'",end:"'",skip:!0},e.inherit(e.APOS_STRING_MODE,{illegal:null,className:null,contains:null,skip:!0}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null,className:null,contains:null,skip:!0})]}]}},plaintext:function(e){return{name:"Plain text",aliases:["text","txt"],disableAutodetect:!0}},python:eD.default,"python-repl":function(e){return{aliases:["pycon"],contains:[{className:"meta.prompt",starts:{end:/ |$/,starts:{end:"$",subLanguage:"python"}},variants:[{begin:/^>>>(?=[ ]|$)/},{begin:/^\.\.\.(?=[ ]|$)/}]}]}},r:function(e){let t=e.regex,a=/(?:(?:[a-zA-Z]|\.[._a-zA-Z])[._a-zA-Z0-9]*)|\.(?!\d)/,n=t.either(/0[xX][0-9a-fA-F]+\.[0-9a-fA-F]*[pP][+-]?\d+i?/,/0[xX][0-9a-fA-F]+(?:[pP][+-]?\d+)?[Li]?/,/(?:\d+(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+)?[Li]?/),s=/[=!<>:]=|\|\||&&|:::?|<-|<<-|->>|->|\|>|[-+*\/?!$&|:<=>@^~]|\*\*/,r=t.either(/[()]/,/[{}]/,/\[\[/,/[[\]]/,/\\/,/,/);return{name:"R",keywords:{$pattern:a,keyword:"function if in break next repeat else for while",literal:"NULL NA TRUE FALSE Inf NaN NA_integer_|10 NA_real_|10 NA_character_|10 NA_complex_|10",built_in:"LETTERS letters month.abb month.name pi T F abs acos acosh all any anyNA Arg as.call as.character as.complex as.double as.environment as.integer as.logical as.null.default as.numeric as.raw asin asinh atan atanh attr attributes baseenv browser c call ceiling class Conj cos cosh cospi cummax cummin cumprod cumsum digamma dim dimnames emptyenv exp expression floor forceAndCall gamma gc.time globalenv Im interactive invisible is.array is.atomic is.call is.character is.complex is.double is.environment is.expression is.finite is.function is.infinite is.integer is.language is.list is.logical is.matrix is.na is.name is.nan is.null is.numeric is.object is.pairlist is.raw is.recursive is.single is.symbol lazyLoadDBfetch length lgamma list log max min missing Mod names nargs nzchar oldClass on.exit pos.to.env proc.time prod quote range Re rep retracemem return round seq_along seq_len seq.int sign signif sin sinh sinpi sqrt standardGeneric substitute sum switch tan tanh tanpi tracemem trigamma trunc unclass untracemem UseMethod xtfrm"},contains:[e.COMMENT(/#'/,/$/,{contains:[{scope:"doctag",match:/@examples/,starts:{end:t.lookahead(t.either(/\n^#'\s*(?=@[a-zA-Z]+)/,/\n^(?!#')/)),endsParent:!0}},{scope:"doctag",begin:"@param",end:/$/,contains:[{scope:"variable",variants:[{match:a},{match:/`(?:\\.|[^`\\])+`/}],endsParent:!0}]},{scope:"doctag",match:/@[a-zA-Z]+/},{scope:"keyword",match:/\\[a-zA-Z]+/}]}),e.HASH_COMMENT_MODE,{scope:"string",contains:[e.BACKSLASH_ESCAPE],variants:[e.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\(/,end:/\)(-*)"/}),e.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\{/,end:/\}(-*)"/}),e.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\[/,end:/\](-*)"/}),e.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\(/,end:/\)(-*)'/}),e.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\{/,end:/\}(-*)'/}),e.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\[/,end:/\](-*)'/}),{begin:'"',end:'"',relevance:0},{begin:"'",end:"'",relevance:0}]},{relevance:0,variants:[{scope:{1:"operator",2:"number"},match:[s,n]},{scope:{1:"operator",2:"number"},match:[/%[^%]*%/,n]},{scope:{1:"punctuation",2:"number"},match:[r,n]},{scope:{2:"number"},match:[/[^a-zA-Z0-9._]|^/,n]}]},{scope:{3:"operator"},match:[a,/\s+/,/<-/,/\s+/]},{scope:"operator",relevance:0,variants:[{match:s},{match:/%[^%]*%/}]},{scope:"punctuation",relevance:0,match:r},{begin:"`",end:"`",contains:[{begin:/\\./}]}]}},ruby:function(e){let t=e.regex,a="([a-zA-Z_]\\w*[!?=]?|[-+~]@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?)",n=t.either(/\b([A-Z]+[a-z0-9]+)+/,/\b([A-Z]+[a-z0-9]+)+[A-Z]+/),s=t.concat(n,/(::\w+)*/),r={"variable.constant":["__FILE__","__LINE__","__ENCODING__"],"variable.language":["self","super"],keyword:["alias","and","begin","BEGIN","break","case","class","defined","do","else","elsif","end","END","ensure","for","if","in","module","next","not","or","redo","require","rescue","retry","return","then","undef","unless","until","when","while","yield","include","extend","prepend","public","private","protected","raise","throw"],built_in:["proc","lambda","attr_accessor","attr_reader","attr_writer","define_method","private_constant","module_function"],literal:["true","false","nil"]},i={className:"doctag",begin:"@[A-Za-z]+"},l={begin:"#<",end:">"},o=[e.COMMENT("#","$",{contains:[i]}),e.COMMENT("^=begin","^=end",{contains:[i],relevance:10}),e.COMMENT("^__END__",e.MATCH_NOTHING_RE)],c={className:"subst",begin:/#\{/,end:/\}/,keywords:r},d={className:"string",contains:[e.BACKSLASH_ESCAPE,c],variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/`/,end:/`/},{begin:/%[qQwWx]?\(/,end:/\)/},{begin:/%[qQwWx]?\[/,end:/\]/},{begin:/%[qQwWx]?\{/,end:/\}/},{begin:/%[qQwWx]?</,end:/>/},{begin:/%[qQwWx]?\//,end:/\//},{begin:/%[qQwWx]?%/,end:/%/},{begin:/%[qQwWx]?-/,end:/-/},{begin:/%[qQwWx]?\|/,end:/\|/},{begin:/\B\?(\\\d{1,3})/},{begin:/\B\?(\\x[A-Fa-f0-9]{1,2})/},{begin:/\B\?(\\u\{?[A-Fa-f0-9]{1,6}\}?)/},{begin:/\B\?(\\M-\\C-|\\M-\\c|\\c\\M-|\\M-|\\C-\\M-)[\x20-\x7e]/},{begin:/\B\?\\(c|C-)[\x20-\x7e]/},{begin:/\B\?\\?\S/},{begin:t.concat(/<<[-~]?'?/,t.lookahead(/(\w+)(?=\W)[^\n]*\n(?:[^\n]*\n)*?\s*\1\b/)),contains:[e.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/,contains:[e.BACKSLASH_ESCAPE,c]})]}]},u="[0-9](_?[0-9])*",m={className:"number",relevance:0,variants:[{begin:`\\b([1-9](_?[0-9])*|0)(\\.(${u}))?([eE][+-]?(${u})|r)?i?\\b`},{begin:"\\b0[dD][0-9](_?[0-9])*r?i?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*r?i?\\b"},{begin:"\\b0[oO][0-7](_?[0-7])*r?i?\\b"},{begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*r?i?\\b"},{begin:"\\b0(_?[0-7])+r?i?\\b"}]},p={variants:[{match:/\(\)/},{className:"params",begin:/\(/,end:/(?=\))/,excludeBegin:!0,endsParent:!0,keywords:r}]},h=[d,{variants:[{match:[/class\s+/,s,/\s+<\s+/,s]},{match:[/\b(class|module)\s+/,s]}],scope:{2:"title.class",4:"title.class.inherited"},keywords:r},{match:[/(include|extend)\s+/,s],scope:{2:"title.class"},keywords:r},{relevance:0,match:[s,/\.new[. (]/],scope:{1:"title.class"}},{relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:"variable.constant"},{relevance:0,match:n,scope:"title.class"},{match:[/def/,/\s+/,a],scope:{1:"keyword",3:"title.function"},contains:[p]},{begin:e.IDENT_RE+"::"},{className:"symbol",begin:e.UNDERSCORE_IDENT_RE+"(!|\\?)?:",relevance:0},{className:"symbol",begin:":(?!\\s)",contains:[d,{begin:a}],relevance:0},m,{className:"variable",begin:"(\\$\\W)|((\\$|@@?)(\\w+))(?=[^@$?])(?![A-Za-z])(?![@$?'])"},{className:"params",begin:/\|(?!=)/,end:/\|/,excludeBegin:!0,excludeEnd:!0,relevance:0,keywords:r},{begin:"("+e.RE_STARTERS_RE+"|unless)\\s*",keywords:"unless",contains:[{className:"regexp",contains:[e.BACKSLASH_ESCAPE,c],illegal:/\n/,variants:[{begin:"/",end:"/[a-z]*"},{begin:/%r\{/,end:/\}[a-z]*/},{begin:"%r\\(",end:"\\)[a-z]*"},{begin:"%r!",end:"![a-z]*"},{begin:"%r\\[",end:"\\][a-z]*"}]}].concat(l,o),relevance:0}].concat(l,o);c.contains=h,p.contains=h;let x=[{begin:/^\s*=>/,starts:{end:"$",contains:h}},{className:"meta.prompt",begin:"^([>?]>|[\\w#]+\\(\\w+\\):\\d+:\\d+[>*]|(\\w+-)?\\d+\\.\\d+\\.\\d+(p\\d+)?[^\\d][^>]+>)(?=[ ])",starts:{end:"$",keywords:r,contains:h}}];return o.unshift(l),{name:"Ruby",aliases:["rb","gemspec","podspec","thor","irb"],keywords:r,illegal:/\/\*/,contains:[e.SHEBANG({binary:"ruby"})].concat(x).concat(o).concat(h)}},rust:eO.default,scss:function(e){let t={IMPORTANT:{scope:"meta",begin:"!important"},BLOCK_COMMENT:e.C_BLOCK_COMMENT_MODE,HEXCOLOR:{scope:"number",begin:/#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\b/},FUNCTION_DISPATCH:{className:"built_in",begin:/[\w-]+(?=\()/},ATTRIBUTE_SELECTOR_MODE:{scope:"selector-attr",begin:/\[/,end:/\]/,illegal:"$",contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},CSS_NUMBER_MODE:{scope:"number",begin:e.NUMBER_RE+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",relevance:0},CSS_VARIABLE:{className:"attr",begin:/--[A-Za-z_][A-Za-z0-9_-]*/}},a="@[a-z-]+",n={className:"variable",begin:"(\\$[a-zA-Z-][a-zA-Z0-9_-]*)\\b",relevance:0};return{name:"SCSS",case_insensitive:!0,illegal:"[=/|']",contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,t.CSS_NUMBER_MODE,{className:"selector-id",begin:"#[A-Za-z0-9_-]+",relevance:0},{className:"selector-class",begin:"\\.[A-Za-z0-9_-]+",relevance:0},t.ATTRIBUTE_SELECTOR_MODE,{className:"selector-tag",begin:"\\b("+eT.join("|")+")\\b",relevance:0},{className:"selector-pseudo",begin:":("+eR.join("|")+")"},{className:"selector-pseudo",begin:":(:)?("+eF.join("|")+")"},n,{begin:/\(/,end:/\)/,contains:[t.CSS_NUMBER_MODE]},t.CSS_VARIABLE,{className:"attribute",begin:"\\b("+eL.join("|")+")\\b"},{begin:"\\b(whitespace|wait|w-resize|visible|vertical-text|vertical-ideographic|uppercase|upper-roman|upper-alpha|underline|transparent|top|thin|thick|text|text-top|text-bottom|tb-rl|table-header-group|table-footer-group|sw-resize|super|strict|static|square|solid|small-caps|separate|se-resize|scroll|s-resize|rtl|row-resize|ridge|right|repeat|repeat-y|repeat-x|relative|progress|pointer|overline|outside|outset|oblique|nowrap|not-allowed|normal|none|nw-resize|no-repeat|no-drop|newspaper|ne-resize|n-resize|move|middle|medium|ltr|lr-tb|lowercase|lower-roman|lower-alpha|loose|list-item|line|line-through|line-edge|lighter|left|keep-all|justify|italic|inter-word|inter-ideograph|inside|inset|inline|inline-block|inherit|inactive|ideograph-space|ideograph-parenthesis|ideograph-numeric|ideograph-alpha|horizontal|hidden|help|hand|groove|fixed|ellipsis|e-resize|double|dotted|distribute|distribute-space|distribute-letter|distribute-all-lines|disc|disabled|default|decimal|dashed|crosshair|collapse|col-resize|circle|char|center|capitalize|break-word|break-all|bottom|both|bolder|bold|block|bidi-override|below|baseline|auto|always|all-scroll|absolute|table|table-cell)\\b"},{begin:/:/,end:/[;}{]/,relevance:0,contains:[t.BLOCK_COMMENT,n,t.HEXCOLOR,t.CSS_NUMBER_MODE,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,t.IMPORTANT,t.FUNCTION_DISPATCH]},{begin:"@(page|font-face)",keywords:{$pattern:a,keyword:"@page @font-face"}},{begin:"@",end:"[{;]",returnBegin:!0,keywords:{$pattern:/[a-z-]+/,keyword:"and or not only",attribute:eI.join(" ")},contains:[{begin:a,className:"keyword"},{begin:/[a-z-]+(?=:)/,className:"attribute"},n,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,t.HEXCOLOR,t.CSS_NUMBER_MODE]},t.FUNCTION_DISPATCH]}},shell:eP.default,sql:eB.default,swift:function(e){let t={match:/\s+/,relevance:0},a=e.COMMENT("/\\*","\\*/",{contains:["self"]}),n=[e.C_LINE_COMMENT_MODE,a],s={match:[/\./,eq(...eH,...eW)],className:{2:"keyword"}},r={match:eU(/\./,eq(...eV)),relevance:0},i=eV.filter(e=>"string"==typeof e).concat(["_|0"]),l={variants:[{className:"keyword",match:eq(...eV.filter(e=>"string"!=typeof e).concat(eG).map(eK),...eW)}]},o={$pattern:eq(/\b\w+/,/#\w+/),keyword:i.concat(eJ),literal:eZ},c=[s,r,l],d=[{match:eU(/\./,eq(...eQ)),relevance:0},{className:"built_in",match:eU(/\b/,eq(...eQ),/(?=\()/)}],u={match:/->/,relevance:0},m=[u,{className:"operator",relevance:0,variants:[{match:e1},{match:`\\.(\\.|${e0})+`}]}],p="([0-9]_*)+",h="([0-9a-fA-F]_*)+",x={className:"number",relevance:0,variants:[{match:`\\b(${p})(\\.(${p}))?([eE][+-]?(${p}))?\\b`},{match:`\\b0x(${h})(\\.(${h}))?([pP][+-]?(${p}))?\\b`},{match:/\b0o([0-7]_*)+\b/},{match:/\b0b([01]_*)+\b/}]},f=(e="")=>({className:"subst",variants:[{match:eU(/\\/,e,/[0\\tnr"']/)},{match:eU(/\\/,e,/u\{[0-9a-fA-F]{1,8}\}/)}]}),g=(e="")=>({className:"subst",label:"interpol",begin:eU(/\\/,e,/\(/),end:/\)/}),b=(e="")=>({begin:eU(e,/"""/),end:eU(/"""/,e),contains:[f(e),((e="")=>({className:"subst",match:eU(/\\/,e,/[\t ]*(?:[\r\n]|\r\n)/)}))(e),g(e)]}),w=(e="")=>({begin:eU(e,/"/),end:eU(/"/,e),contains:[f(e),g(e)]}),y={className:"string",variants:[b(),b("#"),b("##"),b("###"),w(),w("#"),w("##"),w("###")]},v=[e.BACKSLASH_ESCAPE,{begin:/\[/,end:/\]/,relevance:0,contains:[e.BACKSLASH_ESCAPE]}],N=e=>{let t=eU(e,/\//),a=eU(/\//,e);return{begin:t,end:a,contains:[...v,{scope:"comment",begin:`#(?!.*${a})`,end:/$/}]}},k={scope:"regexp",variants:[N("###"),N("##"),N("#"),{begin:/\/[^\s](?=[^/\n]*\/)/,end:/\//,contains:v}]},j={match:eU(/`/,e3,/`/)},_=[j,{className:"variable",match:/\$\d+/},{className:"variable",match:`\\$${e5}+`}],C=[{match:/(@|#(un)?)available/,scope:"keyword",starts:{contains:[{begin:/\(/,end:/\)/,keywords:e9,contains:[...m,x,y]}]}},{scope:"keyword",match:eU(/@/,eq(...e7),e$(eq(/\(/,/\s+/)))},{scope:"meta",match:eU(/@/,e3)}],E={match:e$(/\b[A-Z]/),relevance:0,contains:[{className:"type",match:eU(/(AV|CA|CF|CG|CI|CL|CM|CN|CT|MK|MP|MTK|MTL|NS|SCN|SK|UI|WK|XC)/,e5,"+")},{className:"type",match:e4,relevance:0},{match:/[?!]+/,relevance:0},{match:/\.\.\./,relevance:0},{match:eU(/\s+&\s+/,e$(e4)),relevance:0}]},S={begin:/</,end:/>/,keywords:o,contains:[...n,...c,...C,u,E]};E.contains.push(S);let M={begin:/\(/,end:/\)/,relevance:0,keywords:o,contains:["self",{match:eU(e3,/\s*:/),keywords:"_|0",relevance:0},...n,k,...c,...d,...m,x,y,..._,...C,E]},A={begin:/</,end:/>/,keywords:"repeat each",contains:[...n,E]},D={begin:/\(/,end:/\)/,keywords:o,contains:[{begin:eq(e$(eU(e3,/\s*:/)),e$(eU(e3,/\s+/,e3,/\s*:/))),end:/:/,relevance:0,contains:[{className:"keyword",match:/\b_\b/},{className:"params",match:e3}]},...n,...c,...m,x,y,...C,E,M],endsParent:!0,illegal:/["']/},O={match:[/(func|macro)/,/\s+/,eq(j.match,e3,e1)],className:{1:"keyword",3:"title.function"},contains:[A,D,t],illegal:[/\[/,/%/]},T={begin:[/precedencegroup/,/\s+/,e4],className:{1:"keyword",3:"title"},contains:[E],keywords:[...eX,...eZ],end:/}/},I={begin:[/(struct|protocol|class|extension|enum|actor)/,/\s+/,e3,/\s*/],beginScope:{1:"keyword",3:"title.class"},keywords:o,contains:[A,...c,{begin:/:/,end:/\{/,keywords:o,contains:[{scope:"title.class.inherited",match:e4},...c],relevance:0}]};for(let e of y.variants){let t=e.contains.find(e=>"interpol"===e.label);t.keywords=o;let a=[...c,...d,...m,x,y,..._];t.contains=[...a,{begin:/\(/,end:/\)/,contains:["self",...a]}]}return{name:"Swift",keywords:o,contains:[...n,O,{match:[/\b(?:subscript|init[?!]?)/,/\s*(?=[<(])/],className:{1:"keyword"},contains:[A,D,t],illegal:/\[|%/},{match:[/class\b/,/\s+/,/func\b/,/\s+/,/\b[A-Za-z_][A-Za-z0-9_]*\b/],scope:{1:"keyword",3:"keyword",5:"title.function"}},{match:[/class\b/,/\s+/,/var\b/],scope:{1:"keyword",3:"keyword"}},I,{match:[/operator/,/\s+/,e1],className:{1:"keyword",3:"title"}},T,{beginKeywords:"import",end:/$/,contains:[...n],relevance:0},k,...c,...d,...m,x,y,..._,...C,E,M]}},typescript:e6.default,vbnet:function(e){let t=e.regex,a=/\d{1,2}\/\d{1,2}\/\d{4}/,n=/\d{4}-\d{1,2}-\d{1,2}/,s=/(\d|1[012])(:\d+){0,2} *(AM|PM)/,r=/\d{1,2}(:\d{1,2}){1,2}/,i={className:"literal",variants:[{begin:t.concat(/# */,t.either(n,a),/ *#/)},{begin:t.concat(/# */,r,/ *#/)},{begin:t.concat(/# */,s,/ *#/)},{begin:t.concat(/# */,t.either(n,a),/ +/,t.either(s,r),/ *#/)}]},l=e.COMMENT(/'''/,/$/,{contains:[{className:"doctag",begin:/<\/?/,end:/>/}]}),o=e.COMMENT(null,/$/,{variants:[{begin:/'/},{begin:/([\t ]|^)REM(?=\s)/}]});return{name:"Visual Basic .NET",aliases:["vb"],case_insensitive:!0,classNameAliases:{label:"symbol"},keywords:{keyword:"addhandler alias aggregate ansi as async assembly auto binary by byref byval call case catch class compare const continue custom declare default delegate dim distinct do each equals else elseif end enum erase error event exit explicit finally for friend from function get global goto group handles if implements imports in inherits interface into iterator join key let lib loop me mid module mustinherit mustoverride mybase myclass namespace narrowing new next notinheritable notoverridable of off on operator option optional order overloads overridable overrides paramarray partial preserve private property protected public raiseevent readonly redim removehandler resume return select set shadows shared skip static step stop structure strict sub synclock take text then throw to try unicode until using when where while widening with withevents writeonly yield",built_in:"addressof and andalso await directcast gettype getxmlnamespace is isfalse isnot istrue like mod nameof new not or orelse trycast typeof xor cbool cbyte cchar cdate cdbl cdec cint clng cobj csbyte cshort csng cstr cuint culng cushort",type:"boolean byte char date decimal double integer long object sbyte short single string uinteger ulong ushort",literal:"true false nothing"},illegal:"//|\\{|\\}|endif|gosub|variant|wend|^\\$ ",contains:[{className:"string",begin:/"(""|[^/n])"C\b/},{className:"string",begin:/"/,end:/"/,illegal:/\n/,contains:[{begin:/""/}]},i,{className:"number",relevance:0,variants:[{begin:/\b\d[\d_]*((\.[\d_]+(E[+-]?[\d_]+)?)|(E[+-]?[\d_]+))[RFD@!#]?/},{begin:/\b\d[\d_]*((U?[SIL])|[%&])?/},{begin:/&H[\dA-F_]+((U?[SIL])|[%&])?/},{begin:/&O[0-7_]+((U?[SIL])|[%&])?/},{begin:/&B[01_]+((U?[SIL])|[%&])?/}]},{className:"label",begin:/^\w+:/},l,o,{className:"meta",begin:/[\t ]*#(const|disable|else|elseif|enable|end|externalsource|if|region)\b/,end:/$/,keywords:{keyword:"const disable else elseif enable end externalsource if region then"},contains:[o]}]}},wasm:function(e){e.regex;let t=e.COMMENT(/\(;/,/;\)/);return t.contains.push("self"),{name:"WebAssembly",keywords:{$pattern:/[\w.]+/,keyword:["anyfunc","block","br","br_if","br_table","call","call_indirect","data","drop","elem","else","end","export","func","global.get","global.set","local.get","local.set","local.tee","get_global","get_local","global","if","import","local","loop","memory","memory.grow","memory.size","module","mut","nop","offset","param","result","return","select","set_global","set_local","start","table","tee_local","then","type","unreachable"]},contains:[e.COMMENT(/;;/,/$/),t,{match:[/(?:offset|align)/,/\s*/,/=/],className:{1:"keyword",3:"operator"}},{className:"variable",begin:/\$[\w_]+/},{match:/(\((?!;)|\))+/,className:"punctuation",relevance:0},{begin:[/(?:func|call|call_indirect)/,/\s+/,/\$[^\s)]+/],className:{1:"keyword",3:"title.function"}},e.QUOTE_STRING_MODE,{match:/(i32|i64|f32|f64)(?!\.)/,className:"type"},{className:"keyword",match:/\b(f32|f64|i32|i64)(?:\.(?:abs|add|and|ceil|clz|const|convert_[su]\/i(?:32|64)|copysign|ctz|demote\/f64|div(?:_[su])?|eqz?|extend_[su]\/i32|floor|ge(?:_[su])?|gt(?:_[su])?|le(?:_[su])?|load(?:(?:8|16|32)_[su])?|lt(?:_[su])?|max|min|mul|nearest|neg?|or|popcnt|promote\/f32|reinterpret\/[fi](?:32|64)|rem_[su]|rot[lr]|shl|shr_[su]|store(?:8|16|32)?|sqrt|sub|trunc(?:_[su]\/f(?:32|64))?|wrap\/i64|xor))\b/},{className:"number",relevance:0,match:/[+-]?\b(?:\d(?:_?\d)*(?:\.\d(?:_?\d)*)?(?:[eE][+-]?\d(?:_?\d)*)?|0x[\da-fA-F](?:_?[\da-fA-F])*(?:\.[\da-fA-F](?:_?[\da-fA-D])*)?(?:[pP][+-]?\d(?:_?\d)*)?)\b|\binf\b|\bnan(?::0x[\da-fA-F](?:_?[\da-fA-D])*)?\b/}]}},xml:e8.default,yaml:te.default};var ta=e.i(993667),tn=e.i(797715);let ts=(0,ta.createLowlight)(tt);function tr(e){return Array.isArray(e)?e.join(""):e??""}let ti=/\x1b\[[0-9;]*[A-Za-z]/g;function tl(e){return e.replace(ti,"")}function to({output:e}){if("stream"===e.output_type){let a=tl(tr(e.text)),n="stderr"===e.name;return(0,t.jsx)("pre",{className:`whitespace-pre-wrap font-mono text-[12.5px] leading-relaxed px-4 py-3 rounded-md ${n?"bg-[rgba(139,46,62,0.06)] text-[#8B2E3E]":"bg-[#F5EEDC] text-[#2A221B]"}`,children:a})}if("error"===e.output_type){let a=e.traceback.map(tl).join("\n");return(0,t.jsxs)("pre",{className:"whitespace-pre-wrap font-mono text-[12.5px] leading-relaxed px-4 py-3 rounded-md bg-[rgba(139,46,62,0.08)] text-[#8B2E3E] border border-[rgba(139,46,62,0.18)]",children:[(0,t.jsxs)("span",{className:"font-semibold",children:[e.ename,": ",e.evalue]}),a?`
|
|
2
|
+
|
|
3
|
+
${a}`:""]})}let a=e.data||{};if(a["image/png"]){let e=`data:image/png;base64,${tr(a["image/png"]).replace(/\s/g,"")}`;return(0,t.jsx)("img",{src:e,alt:"output",className:"max-w-full rounded-md bg-card p-2"})}if(a["image/jpeg"]){let e=`data:image/jpeg;base64,${tr(a["image/jpeg"]).replace(/\s/g,"")}`;return(0,t.jsx)("img",{src:e,alt:"output",className:"max-w-full rounded-md bg-card p-2"})}if(a["image/svg+xml"]){let e=tr(a["image/svg+xml"]);return(0,t.jsx)("div",{className:"max-w-full rounded-md bg-card p-2 overflow-auto",dangerouslySetInnerHTML:{__html:e}})}if(a["text/html"]){let e=tr(a["text/html"]);return(0,t.jsx)("iframe",{srcDoc:`<!doctype html><html><head><base target="_blank"><style>body{margin:0;padding:8px;font-family:-apple-system,BlinkMacSystemFont,Inter,system-ui,sans-serif;background:#FFF9E9;color:#2A221B;font-size:13px}table{border-collapse:collapse}th,td{border:1px solid #D4C4B0;padding:4px 8px;text-align:left}thead{background:#EFE5CC}</style></head><body>${e}</body></html>`,sandbox:"allow-scripts",className:"w-full bg-[#FFF9E9] rounded-md border border-[#E8DDC5]",style:{height:360}})}return a["text/plain"]?(0,t.jsx)("pre",{className:"whitespace-pre-wrap font-mono text-[12.5px] leading-relaxed px-4 py-3 rounded-md bg-[#F5EEDC] text-[#2A221B]",children:tl(tr(a["text/plain"]))}):null}function tc({cell:e,language:a}){let n=tr(e.source),s=(0,z.useMemo)(()=>(function(e,t){try{let a=t?ts.highlight(t,e):ts.highlightAuto(e);return(0,ed.toHtml)(a)}catch{return e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">")}})(n,a),[n,a]),r=e.execution_count??" ",i=(e.outputs?.length??0)>0;return(0,t.jsxs)("div",{className:"grid grid-cols-[60px_1fr] gap-3 mb-5",children:[(0,t.jsxs)("div",{className:"text-right pt-3 select-none font-mono text-[11px] text-[#8B5E3C]",children:["In [",r,"]:"]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("pre",{className:"whitespace-pre overflow-x-auto font-mono text-[13px] leading-relaxed px-4 py-3 rounded-md bg-[#FFF9E9] border border-[#E8DDC5] text-[#2A221B]",children:(0,t.jsx)("code",{dangerouslySetInnerHTML:{__html:s}})}),i&&(0,t.jsxs)("div",{className:"mt-2 grid grid-cols-[60px_1fr] gap-3",children:[(0,t.jsxs)("div",{className:"text-right pt-3 select-none font-mono text-[11px] text-[#8B2E3E]",children:["Out[",r,"]:"]}),(0,t.jsx)("div",{className:"space-y-2",children:e.outputs?.map((e,a)=>(0,t.jsx)(to,{output:e},a))})]})]})]})}function td({cell:e}){let[a,n]=(0,z.useState)("");return(0,z.useEffect)(()=>{let t=!1;return(0,tn.markdownToHtml)(tr(e.source)).then(e=>{t||n(e)}),()=>{t=!0}},[e.source]),(0,t.jsx)("div",{className:"prose prose-sm max-w-none mb-5 px-1 [&_h1]:font-serif [&_h2]:font-serif [&_h3]:font-serif [&_a]:text-[#8B5E3C] [&_a:hover]:underline [&_code]:bg-[#F5EEDC] [&_code]:px-1.5 [&_code]:py-0.5 [&_code]:rounded [&_code]:text-[#8B2E3E]",dangerouslySetInnerHTML:{__html:a}})}function tu({cell:e}){return(0,t.jsx)("pre",{className:"whitespace-pre-wrap font-mono text-[12.5px] leading-relaxed px-4 py-3 rounded-md bg-[#F5EEDC] text-[#2A221B] mb-5",children:tr(e.source)})}function tm({path:e}){let[n,s]=(0,z.useState)(null),[i,l]=(0,z.useState)(!0),[d,u]=(0,z.useState)(null),[m,p]=(0,z.useState)(!1),h=(0,G.withWs)(`/api/assets/${e}`),x=e.split("/").pop()||e,f=(0,z.useCallback)(async()=>{l(!0),u(null);try{let e=await (0,G.wsFetch)(h);if(!e.ok)throw Error(`HTTP ${e.status}`);let t=await e.json();s(t)}catch(e){u(e instanceof Error?e.message:"Failed to load notebook")}finally{l(!1)}},[h]);(0,z.useEffect)(()=>{f()},[f]);let g=n?.metadata?.language_info?.name||n?.metadata?.kernelspec?.name||"python",b=n?.cells?.length??0,w=n?.cells?.filter(e=>"code"===e.cell_type).length??0,y=n?.cells?.some(e=>"code"===e.cell_type&&(e.outputs?.length??0)>0)??!1;return(0,t.jsxs)("div",{className:"flex-1 flex flex-col overflow-hidden",children:[(0,t.jsxs)(Z,{path:e,badge:"IPYNB",sublabel:`${b} cells \xb7 ${w} code \xb7 ${g}`,children:[(0,t.jsxs)(U.Button,{variant:"ghost",size:"sm",className:"h-7 gap-1.5 text-xs",onClick:()=>{navigator.clipboard.writeText(`jupyter lab ${e}`),p(!0),setTimeout(()=>p(!1),2e3)},title:"Copy: jupyter lab <path>",children:[m?(0,t.jsx)(r.Check,{className:"h-3.5 w-3.5 text-green-500"}):(0,t.jsx)(o.Copy,{className:"h-3.5 w-3.5"}),m?"Copied":"Copy run cmd"]}),(0,t.jsxs)(U.Button,{variant:"ghost",size:"sm",className:"h-7 gap-1.5 text-xs",onClick:()=>{let e=document.createElement("a");e.href=h,e.download=x,e.click()},children:[(0,t.jsx)(c,{className:"h-3.5 w-3.5"}),"Download"]}),(0,t.jsxs)(U.Button,{variant:"ghost",size:"sm",className:"h-7 gap-1.5 text-xs",onClick:()=>window.open(h,"_blank"),children:[(0,t.jsx)(et.ExternalLink,{className:"h-3.5 w-3.5"}),"Raw JSON"]})]}),(0,t.jsx)("div",{className:"flex-1 overflow-auto bg-[#F5EEDC]",children:i?(0,t.jsx)("div",{className:"flex items-center justify-center h-full text-[#7A6B5D] text-sm",children:"Loading notebook…"}):d?(0,t.jsxs)("div",{className:"flex items-center justify-center h-full text-[#8B2E3E] text-sm gap-2",children:[(0,t.jsx)(a.AlertCircle,{className:"h-4 w-4"})," ",d]}):n?(0,t.jsxs)("div",{className:"max-w-[1100px] mx-auto py-8 px-6",children:[!y&&w>0&&(0,t.jsxs)("div",{className:"mb-6 rounded-md border border-[#E8DDC5] bg-[#FFF9E9] px-4 py-3 text-[13px] text-[#7A6B5D]",children:[(0,t.jsx)("span",{className:"font-semibold text-[#0c0a09]",children:"This notebook hasn't been run yet."})," ","Code and markdown cells display below; outputs appear once the author runs the notebook in Jupyter (or you do, then re-save)."]}),n.cells?.map((e,a)=>"markdown"===e.cell_type?(0,t.jsx)(td,{cell:e},a):"raw"===e.cell_type?(0,t.jsx)(tu,{cell:e},a):(0,t.jsx)(tc,{cell:e,language:g},a))]}):null})]})}function tp({path:e,extLabel:a,external:n,hideFinder:s}){let r=(0,G.withWs)(`/api/assets/${e}`),i=e.split("/").pop()||e,l=async()=>{try{await (0,G.wsFetch)("/api/system/reveal",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:e})})}catch{}};return(0,t.jsxs)(Z,{path:e,badge:a||void 0,children:[n&&(0,t.jsxs)("a",{href:n.href,target:"_blank",rel:"noreferrer noopener",className:"inline-flex items-center gap-1.5 text-[11px] h-7 px-2.5 rounded-md border border-border hover:bg-accent transition-colors",children:[(0,t.jsx)(et.ExternalLink,{className:"h-3.5 w-3.5"}),n.label]}),!s&&(0,t.jsxs)(U.Button,{variant:"outline",size:"sm",className:"gap-1.5 text-[11px] h-7",onClick:l,title:"Open in Finder",children:[(0,t.jsx)(h,{className:"h-3.5 w-3.5"}),"Reveal"]}),!s&&(0,t.jsxs)(U.Button,{variant:"outline",size:"sm",className:"gap-1.5 text-[11px] h-7",onClick:()=>{let e=document.createElement("a");e.href=r,e.download=i,e.click()},title:"Download original",children:[(0,t.jsx)(c,{className:"h-3.5 w-3.5"}),"Download"]})]})}function th({path:a,title:n}){let s=(0,z.useRef)(null),[r,i]=(0,z.useState)(!0),[l,o]=(0,z.useState)(null);return(0,z.useEffect)(()=>{let t=!1,n=s.current;if(n)return n.innerHTML="",(async()=>{i(!0),o(null);try{let[{renderAsync:s},r]=await Promise.all([e.A(410052),(0,G.wsFetch)(`/api/assets/${a}`)]);if(t)return;if(!r.ok)throw Error(`Failed to load file (${r.status})`);let l=await r.blob();if(t)return;await s(l,n,void 0,{className:"docx-rendered",inWrapper:!0,ignoreWidth:!1,ignoreHeight:!1,breakPages:!0,renderHeaders:!0,renderFooters:!0,renderFootnotes:!0,experimental:!0,useBase64URL:!0}),t||i(!1)}catch(e){t||(o(e instanceof Error?e.message:"Failed to render document"),i(!1))}})(),()=>{t=!0}},[a]),(0,t.jsxs)("div",{className:"flex-1 flex flex-col overflow-hidden",children:[(0,t.jsx)(tp,{path:a,title:n,extLabel:"DOCX"}),(0,t.jsxs)("div",{className:"flex-1 overflow-y-auto bg-muted/30",children:[r&&!l&&(0,t.jsxs)("div",{className:"h-full flex items-center justify-center text-muted-foreground",children:[(0,t.jsx)(N.Loader2,{className:"h-5 w-5 animate-spin mr-2"}),"Rendering document…"]}),l&&(0,t.jsx)("div",{className:"h-full flex items-center justify-center",children:(0,t.jsxs)("div",{className:"text-center space-y-2",children:[(0,t.jsx)("p",{className:"text-sm text-destructive",children:l}),(0,t.jsx)("p",{className:"text-xs text-muted-foreground",children:"Try downloading the file and opening it externally."})]})}),(0,t.jsx)("div",{ref:s,className:"docx-viewer-body mx-auto max-w-5xl py-6 px-4"})]})]})}function tx({path:a,title:n}){let s=(0,z.useRef)(null),[r,i]=(0,z.useState)(!0),[l,o]=(0,z.useState)(null);return(0,z.useEffect)(()=>{let t=!1,n=s.current;if(!n)return;n.innerHTML="";let r=null;return(async()=>{i(!0),o(null);try{let[{init:s},l]=await Promise.all([e.A(355350),(0,G.wsFetch)(`/api/assets/${a}`)]);if(t)return;if(!l.ok)throw Error(`Failed to load file (${l.status})`);let o=await l.arrayBuffer();if(t)return;let c=n.clientWidth||960,d=Math.round(9*c/16);r=s(n,{width:c,height:d,mode:"list"}),await r.preview(o),t||i(!1)}catch(e){t||(o(e instanceof Error?e.message:"Failed to render presentation"),i(!1))}})(),()=>{t=!0;try{r?.destroy?.()}catch{}}},[a]),(0,t.jsxs)("div",{className:"flex-1 flex flex-col overflow-hidden",children:[(0,t.jsx)(tp,{path:a,title:n,extLabel:"PPTX"}),(0,t.jsxs)("div",{className:"flex-1 overflow-auto bg-muted/30 py-4",children:[r&&!l&&(0,t.jsxs)("div",{className:"h-[60vh] flex items-center justify-center text-muted-foreground",children:[(0,t.jsx)(N.Loader2,{className:"h-5 w-5 animate-spin mr-2"}),"Rendering slides…"]}),l&&(0,t.jsx)("div",{className:"h-[60vh] flex items-center justify-center",children:(0,t.jsxs)("div",{className:"text-center space-y-2",children:[(0,t.jsx)("p",{className:"text-sm text-destructive",children:l}),(0,t.jsx)("p",{className:"text-xs text-muted-foreground",children:"Try downloading the file and opening it externally."})]})}),(0,t.jsx)("div",{ref:s,className:"pptx-viewer-body mx-auto max-w-5xl px-4"})]})]})}function tf({path:a,title:n}){let[s,r]=(0,z.useState)(null),[i,l]=(0,z.useState)(0),[o,c]=(0,z.useState)(!0),[d,u]=(0,z.useState)(null),m=(0,z.useRef)(null);(0,z.useEffect)(()=>{if(!s||!m.current)return;let e=s[i];if(!e||null!==e.html)return;let{wb:t,toHtml:a}=m.current,n=a(t.Sheets[e.name]);r(e=>{if(!e)return e;let t=[...e];return t[i]={...t[i],html:n.html,rows:n.rows,truncated:n.truncated},t})},[s,i]),(0,z.useEffect)(()=>{let t=!1;return c(!0),u(null),r(null),(async()=>{try{let[n,s]=await Promise.all([e.A(432302),(0,G.wsFetch)(`/api/assets/${a}`)]);if(t)return;if(!s.ok)throw Error(`Failed to load file (${s.status})`);let i=await s.arrayBuffer();if(t)return;let o=n.read(i,{type:"array",cellDates:!0,cellStyles:!0});if(t)return;m.current={wb:o,toHtml:e=>{let t=e["!ref"],a=t?n.utils.decode_range(t):null,s=a?a.e.r-a.s.r+1:0;if(!a||s<=2e3)return{html:n.utils.sheet_to_html(e,{editable:!1}),rows:s,truncated:!1};let r={...e,"!ref":n.utils.encode_range({s:a.s,e:{r:a.s.r+2e3-1,c:a.e.c}})};return{html:n.utils.sheet_to_html(r,{editable:!1}),rows:s,truncated:!0}}},r(o.SheetNames.map(e=>({name:e,html:null,rows:0,truncated:!1}))),l(0),c(!1)}catch(e){t||(u(e instanceof Error?e.message:"Failed to parse spreadsheet"),c(!1))}})(),()=>{t=!0}},[a]);let p=(0,z.useMemo)(()=>s?.[i]??null,[s,i]);return(0,t.jsxs)("div",{className:"flex-1 flex flex-col overflow-hidden",children:[(0,t.jsx)(tp,{path:a,title:n,extLabel:"XLSX"}),s&&s.length>1&&(0,t.jsx)("div",{className:"flex items-center gap-0.5 border-b border-border bg-muted/40 px-2 overflow-x-auto scrollbar-none",children:s.map((e,a)=>(0,t.jsx)("button",{type:"button",onClick:()=>l(a),className:(0,V.cn)("px-3 py-1.5 text-[12px] rounded-t whitespace-nowrap transition-colors",a===i?"bg-background text-foreground font-medium border-t border-x border-border -mb-px":"text-muted-foreground hover:text-foreground"),children:e.name},e.name+a))}),(0,t.jsxs)("div",{className:"flex-1 overflow-auto",children:[o&&!d&&(0,t.jsxs)("div",{className:"h-full flex items-center justify-center text-muted-foreground",children:[(0,t.jsx)(N.Loader2,{className:"h-5 w-5 animate-spin mr-2"}),"Parsing spreadsheet…"]}),d&&(0,t.jsx)("div",{className:"h-full flex items-center justify-center",children:(0,t.jsxs)("div",{className:"text-center space-y-2",children:[(0,t.jsx)("p",{className:"text-sm text-destructive",children:d}),(0,t.jsx)("p",{className:"text-xs text-muted-foreground",children:"Try downloading the file and opening it externally."})]})}),p?.truncated&&(0,t.jsxs)("div",{className:"px-3 py-2 text-[11px] text-amber-600 dark:text-amber-400 border-b border-border",children:["Large sheet (",p.rows.toLocaleString()," rows). Showing first"," ",2e3.toLocaleString()," for performance. Download the file to see everything."]}),p?.html!=null&&(0,t.jsx)("div",{className:"xlsx-sheet p-3 text-[12px]",dangerouslySetInnerHTML:{__html:p.html}})]})]})}function tg({path:e,title:a}){let n=(0,G.withWs)(`/api/assets/${e}`);return(0,t.jsxs)("div",{className:"flex-1 flex flex-col overflow-hidden",children:[(0,t.jsx)(Z,{path:e,badge:"PDF",children:(0,t.jsxs)(U.Button,{variant:"ghost",size:"sm",className:"h-7 gap-1.5 text-xs",onClick:()=>window.open(n,"_blank"),children:[(0,t.jsx)(et.ExternalLink,{className:"h-3.5 w-3.5"}),"Open in new tab"]})}),(0,t.jsx)("iframe",{src:n,className:"flex-1 w-full border-0",title:a})]})}let tb=(0,n.default)("wrap-text",[["path",{d:"m16 16-2 2 2 2",key:"kkc6pm"}],["path",{d:"M3 12h15a3 3 0 1 1 0 6h-4",key:"1cl7v7"}],["path",{d:"M3 18h7",key:"sq21v6"}],["path",{d:"M3 6h18",key:"d0wm0j"}]]),tw=(0,ta.createLowlight)(tt);function ty(e){return e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">")}let tv={".js":"javascript",".cjs":"javascript",".mjs":"javascript",".ts":"typescript",".tsx":"typescript",".jsx":"javascript",".py":"python",".rb":"ruby",".php":"php",".sh":"bash",".bash":"bash",".zsh":"bash",".ps1":"powershell",".css":"css",".scss":"scss",".html":"xml",".json":"json",".jsonc":"json",".yaml":"yaml",".yml":"yaml",".toml":"ini",".ini":"ini",".xml":"xml",".sql":"sql",".graphql":"graphql",".gql":"graphql",".go":"go",".rs":"rust",".swift":"swift",".java":"java",".kt":"kotlin",".kts":"kotlin",".c":"c",".cpp":"cpp",".h":"c",".env":"bash",".txt":"",".text":"",".log":"",".rst":"",".mdx":"markdown"};function tN({path:e}){let[a,n]=(0,z.useState)(null),[s,i]=(0,z.useState)(0),[l,d]=(0,z.useState)(!1),[u,m]=(0,z.useState)(!0),[p,h]=(0,z.useState)(!1),[x,f]=(0,z.useState)(!1),[g,b]=(0,z.useState)(2e3),w=(0,G.withWs)(`/api/assets/${e}`),y=e.split("/").pop()||e,v=tv[y.includes(".")?`.${y.split(".").pop()?.toLowerCase()}`:""]??"",N=(0,z.useCallback)(async()=>{m(!0);try{let e=await (0,G.wsFetch)(w);if(e.ok){let t=new Uint8Array(await e.arrayBuffer());!function(e){let t=Math.min(e.length,8192);if(0===t)return!1;let a=0;for(let n=0;n<t;n++){let t=e[n];if(0===t)return!0;(t<9||t>13&&t<32)&&a++}return a/t>.3}(t)?(i(t.length),n(new TextDecoder("utf-8").decode(t))):d(!0)}}catch{}finally{m(!1)}},[w]);(0,z.useEffect)(()=>{N()},[N]);let k=(0,z.useMemo)(()=>a?a.split("\n").length:0,[a]),j=s>2097152||k>5e3,_=(0,z.useMemo)(()=>{if(!a)return[];if(j)return a.split("\n").map(ty);try{let e=v?tw.highlight(v,a):tw.highlightAuto(a);return(0,ed.toHtml)(e).split("\n")}catch{return a.split("\n").map(ty)}},[a,v,j]),C=j?_.slice(0,g):_,E=j&&g<_.length;return l?(0,t.jsx)(ee,{path:e,title:y}):(0,t.jsxs)("div",{className:"flex-1 flex flex-col overflow-hidden",children:[(0,t.jsxs)(Z,{path:e,badge:y.includes(".")?y.split(".").pop()?.toUpperCase()??"TEXT":"TEXT",sublabel:v||void 0,children:[(0,t.jsxs)(U.Button,{variant:"ghost",size:"sm",className:`h-7 gap-1.5 text-xs ${p?"bg-muted":""}`,onClick:()=>h(e=>!e),title:p?"Disable line wrap":"Enable line wrap",children:[(0,t.jsx)(tb,{className:"h-3.5 w-3.5"}),"Wrap"]}),(0,t.jsxs)(U.Button,{variant:"ghost",size:"sm",className:"h-7 gap-1.5 text-xs",onClick:()=>{a&&(navigator.clipboard.writeText(a),f(!0),setTimeout(()=>f(!1),2e3))},title:"Copy file contents",children:[x?(0,t.jsx)(r.Check,{className:"h-3.5 w-3.5 text-green-500"}):(0,t.jsx)(o.Copy,{className:"h-3.5 w-3.5"}),x?"Copied":"Copy"]}),(0,t.jsxs)(U.Button,{variant:"ghost",size:"sm",className:"h-7 gap-1.5 text-xs",onClick:()=>{let e=document.createElement("a");e.href=w,e.download=y,e.click()},title:"Download file",children:[(0,t.jsx)(c,{className:"h-3.5 w-3.5"}),"Download"]}),(0,t.jsxs)(U.Button,{variant:"ghost",size:"sm",className:"h-7 gap-1.5 text-xs",onClick:()=>window.open(w,"_blank"),children:[(0,t.jsx)(et.ExternalLink,{className:"h-3.5 w-3.5"}),"Raw"]})]}),(0,t.jsx)("div",{className:"flex-1 overflow-auto source-viewer-code bg-muted",children:u?(0,t.jsx)("div",{className:"flex items-center justify-center h-full text-muted-foreground text-sm",children:"Loading..."}):(0,t.jsxs)(t.Fragment,{children:[j&&(0,t.jsxs)("div",{className:"px-4 py-2 text-[11px] text-amber-700 dark:text-amber-300 bg-amber-500/15 border-b border-amber-500/30 font-sans",children:["Large file (",(s/1048576).toFixed(1)," MB,"," ",_.length.toLocaleString()," lines). Syntax highlighting disabled for performance. Use Raw or Download for the full file."]}),(0,t.jsx)("table",{className:"w-full border-collapse text-[13px] leading-relaxed font-mono",children:(0,t.jsx)("tbody",{children:C.map((e,a)=>(0,t.jsxs)("tr",{className:"hover:bg-foreground/5",children:[(0,t.jsx)("td",{className:"w-12 pr-4 text-right text-muted-foreground select-none align-top sticky left-0 bg-muted",children:a+1}),(0,t.jsx)("td",{className:`text-foreground pl-2 ${p?"whitespace-pre-wrap break-all":"whitespace-pre"}`,dangerouslySetInnerHTML:{__html:e||" "}})]},a))})}),E&&(0,t.jsxs)("div",{className:"flex items-center gap-3 px-4 py-3 border-t border-border font-sans",children:[(0,t.jsxs)("button",{onClick:()=>b(e=>e+2e3),className:"text-[11px] text-foreground hover:text-foreground px-2.5 py-1 rounded bg-foreground/10 hover:bg-foreground/20 transition-colors",children:["Show"," ",Math.min(2e3,_.length-g).toLocaleString()," ","more"]}),(0,t.jsxs)("span",{className:"text-[11px] text-muted-foreground",children:[g.toLocaleString()," /"," ",_.length.toLocaleString()," lines"]})]})]})})]})}var tk=e.i(794469);function tj({path:e,title:a,src:n,fullscreen:s,onExit:r}){let i=(0,G.withWs)(n??`/api/assets/${e}/index.html`),l=s&&r?(0,t.jsxs)(U.Button,{variant:"ghost",size:"sm",className:"h-7 gap-1.5 text-xs",onClick:r,title:"Exit app",children:[(0,t.jsx)(tk.ArrowLeft,{className:"h-3.5 w-3.5"}),"Exit app"]}):null;return(0,t.jsxs)("div",{className:"flex-1 flex flex-col overflow-hidden",children:[(0,t.jsx)(Z,{path:e,badge:s?"App":void 0,showBreadcrumb:!s,leading:s?(0,t.jsxs)(t.Fragment,{children:[l,(0,t.jsx)("span",{className:"truncate text-[13px] font-medium text-foreground",children:a})]}):null,children:(0,t.jsxs)(U.Button,{variant:"ghost",size:"sm",className:"h-7 gap-1.5 text-xs",onClick:()=>window.open(i,"_blank"),children:[(0,t.jsx)(et.ExternalLink,{className:"h-3.5 w-3.5"}),"Open in new tab"]})}),(0,t.jsx)("iframe",{src:i,className:"flex-1 w-full border-0 bg-card",title:a,sandbox:"allow-scripts allow-same-origin allow-forms allow-popups allow-top-navigation-by-user-activation"})]})}let t_=(0,n.default)("play",[["polygon",{points:"6 3 20 12 6 21 6 3",key:"1oa8hb"}]]),tC=(0,n.default)("square",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}]]);var tE=e.i(755146);let tS={stopped:"Stopped",installing:"Installing dependencies…",starting:"Starting…",running:"Running",error:"Error"};function tM({path:e,title:n}){let[s,r]=(0,z.useState)("stopped"),[l,o]=(0,z.useState)(null),[c,d]=(0,z.useState)([]),[u,m]=(0,z.useState)(null),[p,h]=(0,z.useState)(!1),[x,f]=(0,z.useState)(0),[g,b]=(0,z.useState)([]),[w,y]=(0,z.useState)(null),v=(0,z.useRef)(null),k=(0,z.useRef)(null),j=`/api/app-proxy/${e}/`,_=()=>{v.current&&(clearInterval(v.current),v.current=null)},C=(0,z.useCallback)(async()=>{try{let t=await (0,G.wsFetch)(`/api/wiki/app?path=${encodeURIComponent(e)}`);if(!t.ok)return;let a=await t.json();r(a.status),d(a.logs??[]),a.scripts&&b(a.scripts),void 0!==a.defaultScript&&y(a.defaultScript),a.port&&o(a.port),a.error&&m(a.error),("running"===a.status||"stopped"===a.status||"error"===a.status)&&_()}catch{}},[e]);(0,z.useEffect)(()=>("installing"===s||"starting"===s?v.current||(v.current=setInterval(C,800)):_(),_),[s,C]),(0,z.useEffect)(()=>{k.current?.scrollIntoView({behavior:"smooth"})},[c]),(0,z.useEffect)(()=>{C()},[C]);let E=async t=>{m(null),d([]),r("starting");try{let a=await (0,G.wsFetch)("/api/wiki/app",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:e,script:t})}),n=await a.json();if(!a.ok||n.error){r("error"),m(n.error??"Failed to start");return}n.port&&o(n.port),await C()}catch(e){r("error"),m(String(e))}},S=async()=>{await (0,G.wsFetch)("/api/wiki/app",{method:"DELETE",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:e})}),r("stopped"),o(null)},M=async()=>{await S(),await E(),f(e=>e+1)},A=g.filter(e=>e!==w);return(0,t.jsxs)("div",{className:"flex-1 flex flex-col overflow-hidden",children:[(0,t.jsxs)(Z,{path:e,badge:"Node app",children:["running"===s&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(U.Button,{variant:"ghost",size:"sm",className:"h-7 gap-1.5 text-xs",onClick:()=>f(e=>e+1),children:[(0,t.jsx)(O,{className:"h-3.5 w-3.5"}),"Refresh"]}),(0,t.jsxs)(U.Button,{variant:"ghost",size:"sm",className:"h-7 gap-1.5 text-xs",onClick:()=>window.open(j,"_blank"),children:[(0,t.jsx)(et.ExternalLink,{className:"h-3.5 w-3.5"}),"Open in new tab"]}),(0,t.jsxs)(U.Button,{variant:"ghost",size:"sm",className:"h-7 gap-1.5 text-xs",onClick:M,children:[(0,t.jsx)(O,{className:"h-3.5 w-3.5"}),"Restart"]}),(0,t.jsxs)(U.Button,{variant:"ghost",size:"sm",className:"h-7 gap-1.5 text-xs text-destructive hover:text-destructive",onClick:S,children:[(0,t.jsx)(tC,{className:"h-3.5 w-3.5"}),"Stop"]})]}),(0,t.jsxs)(U.Button,{variant:"ghost",size:"sm",className:"h-7 gap-1.5 text-xs",onClick:()=>h(e=>!e),children:[(0,t.jsx)(F,{className:"h-3.5 w-3.5"}),"Logs"]})]}),p&&(0,t.jsxs)("div",{className:"border-b bg-black/90 text-green-400 font-mono text-xs h-40 overflow-auto p-2 shrink-0",children:[0===c.length?(0,t.jsx)("span",{className:"text-muted-foreground",children:"No output yet."}):c.map((e,a)=>(0,t.jsx)("div",{className:"whitespace-pre-wrap leading-5",children:e},a)),(0,t.jsx)("div",{ref:k})]}),(0,t.jsxs)("div",{className:"flex-1 flex flex-col overflow-hidden",children:["stopped"===s&&(0,t.jsxs)("div",{className:"flex-1 flex flex-col items-center justify-center gap-4",children:[(0,t.jsxs)("div",{className:"text-center space-y-1",children:[(0,t.jsx)("p",{className:"text-sm font-medium",children:n}),(0,t.jsx)("p",{className:"text-xs text-muted-foreground",children:"Node.js app — will be started on a local port"})]}),(0,t.jsxs)("div",{className:"inline-flex items-stretch overflow-hidden rounded-full bg-primary text-primary-foreground shadow-e-1",children:[(0,t.jsxs)("button",{type:"button",onClick:()=>E(),className:"inline-flex items-center gap-2 px-4 py-2.5 text-sm font-medium transition-colors hover:bg-primary-foreground/10 focus-visible:outline-none",children:[(0,t.jsx)(t_,{className:"h-4 w-4"}),"Launch app",w&&(0,t.jsxs)("span",{className:"opacity-70",children:["(",w,")"]})]}),A.length>0&&(0,t.jsxs)(tE.DropdownMenu,{children:[(0,t.jsx)(tE.DropdownMenuTrigger,{asChild:!0,children:(0,t.jsx)("button",{type:"button",className:"inline-flex items-center justify-center border-l border-l-primary-foreground/20 px-2 transition-colors hover:bg-primary-foreground/10 focus-visible:outline-none","aria-label":"Choose script to launch",children:(0,t.jsx)(i.ChevronDown,{className:"h-4 w-4"})})}),(0,t.jsxs)(tE.DropdownMenuContent,{align:"end",children:[(0,t.jsx)(tE.DropdownMenuLabel,{children:"Run script"}),(0,t.jsx)(tE.DropdownMenuSeparator,{}),g.map(e=>(0,t.jsxs)(tE.DropdownMenuItem,{onSelect:()=>E(e),className:"gap-2 font-mono text-xs",children:[(0,t.jsx)(t_,{className:"h-3.5 w-3.5"}),e,e===w&&(0,t.jsx)("span",{className:"ml-auto text-[10px] text-muted-foreground",children:"default"})]},e))]})]})]})]}),("installing"===s||"starting"===s)&&(0,t.jsxs)("div",{className:"flex-1 flex flex-col items-center justify-center gap-3",children:[(0,t.jsx)(N.Loader2,{className:"h-6 w-6 animate-spin text-muted-foreground"}),(0,t.jsx)("p",{className:"text-sm text-muted-foreground",children:tS[s]}),l&&(0,t.jsxs)("p",{className:"text-xs text-muted-foreground/60",children:["port ",l]})]}),"error"===s&&(0,t.jsxs)("div",{className:"flex-1 flex flex-col items-center justify-center gap-4 p-6",children:[(0,t.jsx)(a.AlertCircle,{className:"h-8 w-8 text-destructive"}),(0,t.jsxs)("div",{className:"text-center space-y-1 max-w-md",children:[(0,t.jsx)("p",{className:"text-sm font-medium text-destructive",children:"Failed to start app"}),(0,t.jsx)("p",{className:"text-xs text-muted-foreground break-words",children:u??"Unknown error"})]}),(0,t.jsxs)(U.Button,{onClick:()=>E(),variant:"outline",className:"gap-2",children:[(0,t.jsx)(O,{className:"h-4 w-4"}),"Try again"]})]}),"running"===s&&(0,t.jsx)("iframe",{src:j,className:"flex-1 w-full border-0 bg-card",title:n,sandbox:"allow-scripts allow-same-origin allow-forms allow-popups allow-modals allow-top-navigation-by-user-activation"},x)]})]})}let tA=(0,n.default)("hard-drive",[["line",{x1:"22",x2:"2",y1:"12",y2:"12",key:"1y58io"}],["path",{d:"M5.45 5.11 2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z",key:"oot6mr"}],["line",{x1:"6",x2:"6.01",y1:"16",y2:"16",key:"sgf278"}],["line",{x1:"10",x2:"10.01",y1:"16",y2:"16",key:"1l4acy"}]]),tD=(0,n.default)("server",[["rect",{width:"20",height:"8",x:"2",y:"2",rx:"2",ry:"2",key:"ngkwjq"}],["rect",{width:"20",height:"8",x:"2",y:"14",rx:"2",ry:"2",key:"iecqi9"}],["line",{x1:"6",x2:"6.01",y1:"6",y2:"6",key:"16zg32"}],["line",{x1:"6",x2:"6.01",y1:"18",y2:"18",key:"nzw8ys"}]]),tO=(0,n.default)("house",[["path",{d:"M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8",key:"5wwlr5"}],["path",{d:"M3 10a2 2 0 0 1 .709-1.528l7-5.999a2 2 0 0 1 2.582 0l7 5.999A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z",key:"1d0kgt"}]]),tT=(0,n.default)("key",[["path",{d:"m15.5 7.5 2.3 2.3a1 1 0 0 0 1.4 0l2.1-2.1a1 1 0 0 0 0-1.4L19 4",key:"g0fldk"}],["path",{d:"m21 2-9.6 9.6",key:"1j0ho8"}],["circle",{cx:"7.5",cy:"15.5",r:"5.5",key:"yqb3hr"}]]),tI=(0,n.default)("pin-off",[["path",{d:"M12 17v5",key:"bb1du9"}],["path",{d:"M15 9.34V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H7.89",key:"znwnzq"}],["path",{d:"m2 2 20 20",key:"1ooewy"}],["path",{d:"M9 9v1.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h11",key:"c9qhm2"}]]);function tR({onSelect:e}){let[a,n]=(0,z.useState)("local"),[s,r]=(0,z.useState)(null),[i,o]=(0,z.useState)(!0),[c,d]=(0,z.useState)(null),[u,m]=(0,z.useState)(""),[x,g]=(0,z.useState)(!1),[b,w]=(0,z.useState)([]),[y,v]=(0,z.useState)(!1),k=(0,z.useRef)(null),j=(0,z.useRef)(null),[_,C]=(0,z.useState)(""),[E,S]=(0,z.useState)(""),[M,D]=(0,z.useState)(""),[O,T]=(0,z.useState)(""),[I,R]=(0,z.useState)(""),[F,L]=(0,z.useState)(""),[P,$]=(0,z.useState)(!1),[q,K]=(0,z.useState)(null),[H,W]=(0,z.useState)(""),[G,Z]=(0,z.useState)(""),[X,J]=(0,z.useState)("agent"),[Q,Y]=(0,z.useState)(""),[ee,et]=(0,z.useState)(""),[ea,en]=(0,z.useState)(!1),[es,er]=(0,z.useState)(""),[ei,el]=(0,z.useState)(!1),[eo,ec]=(0,z.useState)(null),ed=async()=>{let t=H.trim();if(!t)return void ec("SSH target is required (user@host:/path).");if("keyfile"===X&&!Q.trim())return void ec("Private key path is required for key-file auth.");if("password"===X&&!ee)return void ec("Password is required for password auth.");el(!0),ec(null);try{let a={sshTarget:t,sshAuthMethod:X};G.trim()&&(a.sshPort=Number(G.trim())),"keyfile"===X&&Q.trim()&&(a.sshKeyPath=Q.trim()),"password"===X&&ee&&(a.sshPassword=ee),ea&&(a.sshReadOnly=!0),es.trim()&&(a.name=es.trim());let n=await fetch("/api/system/workspaces",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(a)});if(!n.ok){let e=await n.json();ec(e.error??e.message??"Mount failed.");return}let{workspace:s}=await n.json();et(""),e(s.id)}catch{ec("Network error.")}finally{el(!1)}},eu=async()=>{let t=_.trim();if(!t)return void K("Repository URL is required.");$(!0),K(null);try{let a={remoteUrl:t};E.trim()&&(a.branch=E.trim()),M.trim()&&(a.subpath=M.trim()),O.trim()&&(a.username=O.trim()),I.trim()&&(a.token=I.trim()),F.trim()&&(a.name=F.trim());let n=await fetch("/api/system/workspaces",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(a)});if(!n.ok){let e=await n.json();K(e.error??e.message??"Clone failed.");return}let{workspace:s}=await n.json();R(""),e(s.id)}catch{K("Network error.")}finally{$(!1)}},em=(0,z.useCallback)(async(e,t=!0)=>{j.current&&(clearTimeout(j.current),j.current=null),o(!0),d(null);try{let a=await fetch(`/api/system/browse?path=${encodeURIComponent(e)}`);if(!a.ok){let e=await a.json();d(e.error??"Cannot open directory");return}let n=await a.json();r(n),t&&m(n.path)}catch{d("Network error")}finally{o(!1)}},[]);(0,z.useEffect)(()=>{let e=!1;return(async()=>{try{let t=await fetch("/api/system/config");if(t.ok&&!e){let e=await t.json();w(e.pinnedPaths??[]),await em(e.lastOpenedPath??"");return}}catch{}e||await em("")})(),()=>{e=!0}},[]);let ep=async t=>{let a=t??s?.path;if(a){g(!0);try{let t=await fetch("/api/system/workspaces",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({rootDir:a})});if(!t.ok){let e=await t.json();d(e.message??e.error??"Cannot use that directory");return}let{workspace:n}=await t.json();e(n.id)}catch{d("Network error")}finally{g(!1)}}},eh=!!s&&b.includes(s.path),ex=async()=>{if(s){v(!0);try{let e=eh?"unpin":"pin";(await fetch("/api/system/pins",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:s.path,action:e})})).ok&&w(t=>"pin"===e?[...t,s.path]:t.filter(e=>e!==s.path))}catch{}finally{v(!1)}}},ef=async e=>{try{(await fetch("/api/system/pins",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:e,action:"unpin"})})).ok&&w(t=>t.filter(t=>t!==e))}catch{}},eg=(s?.path??"").split(/[/\\]/).filter(Boolean).reduce((e,t)=>{let a=e[e.length-1]?.path??"/";return e.push({label:t,path:`${"/"===a?"":a}/${t}`}),e},[{label:"/",path:"/"}]);return(0,t.jsx)("div",{className:"flex flex-1 items-center justify-center bg-background p-4",children:(0,t.jsxs)("div",{className:"flex w-full max-w-xl flex-col gap-4",children:[(0,t.jsxs)("div",{className:"text-center space-y-1",children:[(0,t.jsxs)("div",{className:"flex items-center justify-center gap-2 mb-1",children:[(0,t.jsx)("img",{src:"/logo.svg",alt:"Wiki Viewer",className:"h-8 w-8"}),(0,t.jsx)("span",{className:"text-xl font-semibold tracking-tight",children:"Wiki Viewer"})]}),(0,t.jsx)("h1",{className:"text-xl font-medium",children:"git"===a?"Add a Git repository":"ssh"===a?"Add a remote directory over SSH":"Choose a directory"}),(0,t.jsx)("p",{className:"text-sm text-muted-foreground",children:"git"===a?(0,t.jsxs)(t.Fragment,{children:["Clone a remote repo and serve it as a read-only workspace.",(0,t.jsx)("br",{}),"The server clones it, so the URL must be reachable from the server."]}):"ssh"===a?(0,t.jsxs)(t.Fragment,{children:["Mount a remote directory over SSH (sshfs) — no local clone.",(0,t.jsx)("br",{}),"Requires sshfs + FUSE installed on the server."]}):(0,t.jsxs)(t.Fragment,{children:["Select the folder wiki-viewer should serve.",(0,t.jsx)("br",{}),"This directory lives on the server, so use the browser below."]})})]}),(0,t.jsxs)("div",{className:"flex items-center self-center rounded-lg border bg-muted p-0.5 gap-0.5",children:[(0,t.jsxs)(U.Button,{variant:"local"===a?"default":"ghost",size:"sm",className:"h-7 px-3 text-xs gap-1.5",onClick:()=>{n("local"),R(""),K(null)},children:[(0,t.jsx)(p.Folder,{className:"h-3.5 w-3.5"}),"Local folder"]}),(0,t.jsxs)(U.Button,{variant:"git"===a?"default":"ghost",size:"sm",className:"h-7 px-3 text-xs gap-1.5",onClick:()=>n("git"),children:[(0,t.jsx)(f,{className:"h-3.5 w-3.5"}),"From Git"]}),(0,t.jsxs)(U.Button,{variant:"ssh"===a?"default":"ghost",size:"sm",className:"h-7 px-3 text-xs gap-1.5",onClick:()=>{n("ssh"),ec(null)},children:[(0,t.jsx)(tD,{className:"h-3.5 w-3.5"}),"Over SSH"]})]}),"git"===a&&(0,t.jsxs)("div",{className:"rounded-lg border bg-card shadow-sm overflow-hidden",children:[(0,t.jsxs)("div",{className:"px-4 pt-4 pb-3 flex flex-col gap-3",children:[(0,t.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,t.jsx)("label",{className:"text-xs font-medium",children:"Repository URL"}),(0,t.jsx)("div",{className:"flex items-center gap-2 rounded-md border bg-muted px-3 py-2",children:(0,t.jsx)("input",{className:"flex-1 bg-transparent text-sm outline-none font-mono min-w-0",placeholder:"https://github.com/org/repo.git",value:_,onChange:e=>{C(e.target.value),K(null)},disabled:P,autoComplete:"off",spellCheck:!1})}),(0,t.jsx)("p",{className:"text-[11px] text-muted-foreground",children:"Only https:// URLs are supported."})]}),(0,t.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,t.jsxs)("label",{className:"text-xs font-medium",children:["Branch ",(0,t.jsx)("span",{className:"font-normal text-muted-foreground",children:"(optional)"})]}),(0,t.jsx)("div",{className:"flex items-center gap-2 rounded-md border bg-muted px-3 py-2",children:(0,t.jsx)("input",{className:"flex-1 bg-transparent text-sm outline-none min-w-0",placeholder:"main (default branch if empty)",value:E,onChange:e=>{S(e.target.value),K(null)},disabled:P})})]}),(0,t.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,t.jsxs)("label",{className:"text-xs font-medium",children:["Subdirectory ",(0,t.jsx)("span",{className:"font-normal text-muted-foreground",children:"(optional)"})]}),(0,t.jsx)("div",{className:"flex items-center gap-2 rounded-md border bg-muted px-3 py-2",children:(0,t.jsx)("input",{className:"flex-1 bg-transparent text-sm outline-none font-mono min-w-0",placeholder:"docs (whole repo if empty)",value:M,onChange:e=>{D(e.target.value),K(null)},disabled:P,spellCheck:!1})}),(0,t.jsx)("p",{className:"text-[11px] text-muted-foreground",children:"Serve only this folder from the repo. Faster to clone for large repos with docs in a subfolder."})]}),(0,t.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,t.jsxs)("label",{className:"text-xs font-medium",children:["Username ",(0,t.jsx)("span",{className:"font-normal text-muted-foreground",children:"(optional)"})]}),(0,t.jsx)("div",{className:"flex items-center gap-2 rounded-md border bg-muted px-3 py-2",children:(0,t.jsx)("input",{className:"flex-1 bg-transparent text-sm outline-none min-w-0",placeholder:"x-access-token (default)",value:O,onChange:e=>{T(e.target.value),K(null)},disabled:P,autoComplete:"off"})}),(0,t.jsxs)("p",{className:"text-[11px] text-muted-foreground",children:["GitLab uses ",(0,t.jsx)("code",{className:"font-mono",children:"oauth2"}),"; Bitbucket uses your account username."]})]}),(0,t.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,t.jsxs)("label",{className:"text-xs font-medium",children:["Access token ",(0,t.jsx)("span",{className:"font-normal text-muted-foreground",children:"(optional)"})]}),(0,t.jsxs)("div",{className:"flex items-center gap-2 rounded-md border bg-muted px-3 py-2",children:[(0,t.jsx)(tT,{className:"h-3.5 w-3.5 shrink-0 text-muted-foreground"}),(0,t.jsx)("input",{type:"password",className:"flex-1 bg-transparent text-sm outline-none min-w-0",placeholder:"Personal access token",value:I,onChange:e=>{R(e.target.value),K(null)},disabled:P,autoComplete:"off"})]}),(0,t.jsx)("p",{className:"text-[11px] text-muted-foreground",children:"Required only for private repos. Stored securely on the server and never shown again."})]}),(0,t.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,t.jsxs)("label",{className:"text-xs font-medium",children:["Display name ",(0,t.jsx)("span",{className:"font-normal text-muted-foreground",children:"(optional)"})]}),(0,t.jsx)("div",{className:"flex items-center gap-2 rounded-md border bg-muted px-3 py-2",children:(0,t.jsx)("input",{className:"flex-1 bg-transparent text-sm outline-none min-w-0",placeholder:"Defaults to the repository name",value:F,onChange:e=>{L(e.target.value),K(null)},disabled:P})})]}),q&&(0,t.jsx)("p",{className:"text-sm text-destructive",children:q})]}),(0,t.jsxs)("div",{className:"border-t px-4 py-3 flex items-center justify-between gap-3 bg-muted",children:[(0,t.jsx)("p",{className:"text-[11px] text-muted-foreground",children:"Git workspaces are read-only, so editing is disabled."}),(0,t.jsx)(U.Button,{size:"sm",className:"shrink-0 gap-1.5",disabled:P,onClick:eu,children:P?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(N.Loader2,{className:"h-3.5 w-3.5 animate-spin"})," Cloning..."]}):(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(f,{className:"h-3.5 w-3.5"})," Clone and add"]})})]})]}),"ssh"===a&&(0,t.jsxs)("div",{className:"rounded-lg border bg-card shadow-sm overflow-hidden",children:[(0,t.jsxs)("div",{className:"px-4 pt-4 pb-3 flex flex-col gap-3",children:[(0,t.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,t.jsx)("label",{className:"text-xs font-medium",children:"SSH target"}),(0,t.jsx)("div",{className:"flex items-center gap-2 rounded-md border bg-muted px-3 py-2",children:(0,t.jsx)("input",{className:"flex-1 bg-transparent text-sm outline-none font-mono min-w-0",placeholder:"user@host:/abs/path",value:H,onChange:e=>{W(e.target.value),ec(null)},disabled:ei,autoComplete:"off",spellCheck:!1})}),(0,t.jsx)("p",{className:"text-[11px] text-muted-foreground",children:"The remote path must be absolute."})]}),(0,t.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,t.jsxs)("label",{className:"text-xs font-medium",children:["Port ",(0,t.jsx)("span",{className:"font-normal text-muted-foreground",children:"(optional)"})]}),(0,t.jsx)("div",{className:"flex items-center gap-2 rounded-md border bg-muted px-3 py-2",children:(0,t.jsx)("input",{className:"flex-1 bg-transparent text-sm outline-none min-w-0",placeholder:"22",inputMode:"numeric",value:G,onChange:e=>{Z(e.target.value.replace(/[^0-9]/g,"")),ec(null)},disabled:ei})})]}),(0,t.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,t.jsx)("label",{className:"text-xs font-medium",children:"Authentication"}),(0,t.jsx)("div",{className:"flex items-center self-start rounded-lg border bg-muted p-0.5 gap-0.5",children:["agent","keyfile","password"].map(e=>(0,t.jsx)(U.Button,{variant:X===e?"default":"ghost",size:"sm",className:"h-7 px-3 text-xs",onClick:()=>{J(e),ec(null)},disabled:ei,children:"agent"===e?"SSH agent":"keyfile"===e?"Key file":"Password"},e))}),(0,t.jsx)("p",{className:"text-[11px] text-muted-foreground",children:"agent"===X?"Uses the server's ssh-agent and default keys (~/.ssh/id_*).":"keyfile"===X?"Uses a specific private key on the server.":"Stored securely on the server and never shown again."})]}),"keyfile"===X&&(0,t.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,t.jsx)("label",{className:"text-xs font-medium",children:"Private key path"}),(0,t.jsxs)("div",{className:"flex items-center gap-2 rounded-md border bg-muted px-3 py-2",children:[(0,t.jsx)(tT,{className:"h-3.5 w-3.5 shrink-0 text-muted-foreground"}),(0,t.jsx)("input",{className:"flex-1 bg-transparent text-sm outline-none font-mono min-w-0",placeholder:"~/.ssh/id_ed25519",value:Q,onChange:e=>{Y(e.target.value),ec(null)},disabled:ei,autoComplete:"off",spellCheck:!1})]})]}),"password"===X&&(0,t.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,t.jsx)("label",{className:"text-xs font-medium",children:"Password"}),(0,t.jsxs)("div",{className:"flex items-center gap-2 rounded-md border bg-muted px-3 py-2",children:[(0,t.jsx)(tT,{className:"h-3.5 w-3.5 shrink-0 text-muted-foreground"}),(0,t.jsx)("input",{type:"password",className:"flex-1 bg-transparent text-sm outline-none min-w-0",placeholder:"SSH password",value:ee,onChange:e=>{et(e.target.value),ec(null)},disabled:ei,autoComplete:"off"})]})]}),(0,t.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,t.jsxs)("label",{className:"text-xs font-medium",children:["Display name ",(0,t.jsx)("span",{className:"font-normal text-muted-foreground",children:"(optional)"})]}),(0,t.jsx)("div",{className:"flex items-center gap-2 rounded-md border bg-muted px-3 py-2",children:(0,t.jsx)("input",{className:"flex-1 bg-transparent text-sm outline-none min-w-0",placeholder:"Defaults to host:path",value:es,onChange:e=>{er(e.target.value),ec(null)},disabled:ei})})]}),(0,t.jsxs)("label",{className:"flex items-center gap-2 text-xs font-medium cursor-pointer select-none",children:[(0,t.jsx)("input",{type:"checkbox",checked:ea,onChange:e=>en(e.target.checked),disabled:ei}),"Mount read-only"]}),eo&&(0,t.jsx)("p",{className:"text-sm text-destructive",children:eo})]}),(0,t.jsxs)("div",{className:"border-t px-4 py-3 flex items-center justify-between gap-3 bg-muted",children:[(0,t.jsx)("p",{className:"text-[11px] text-muted-foreground",children:"Served live over SSH — nothing is copied to disk."}),(0,t.jsx)(U.Button,{size:"sm",className:"shrink-0 gap-1.5",disabled:ei,onClick:ed,children:ei?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(N.Loader2,{className:"h-3.5 w-3.5 animate-spin"})," Mounting..."]}):(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(tD,{className:"h-3.5 w-3.5"})," Mount and add"]})})]})]}),"local"===a&&(0,t.jsxs)("div",{className:"rounded-lg border bg-card shadow-sm overflow-hidden",children:[(0,t.jsx)("div",{className:"flex items-center gap-2 border-b px-3 py-2 bg-muted",children:(0,t.jsx)("input",{ref:k,className:"flex-1 bg-transparent text-sm outline-none font-mono min-w-0",value:u,onChange:e=>{let t=e.target.value;m(t),j.current&&clearTimeout(j.current),j.current=setTimeout(()=>{j.current=null,em(t.trim(),!1)},500)},onKeyDown:e=>{"Enter"===e.key&&(e.preventDefault(),j.current&&(clearTimeout(j.current),j.current=null),em(u.trim())),"Escape"===e.key&&(j.current&&(clearTimeout(j.current),j.current=null),m(s?.path??""),k.current?.blur())},spellCheck:!1,placeholder:"Enter a path…"})}),(0,t.jsx)("div",{className:"flex items-center gap-1 border-b px-3 py-1.5 bg-muted/50 overflow-x-auto shrink-0 min-h-[32px]",children:eg.map((e,a)=>(0,t.jsxs)("span",{className:"flex items-center gap-1 shrink-0",children:[a>0&&(0,t.jsx)(l.ChevronRight,{className:"h-3 w-3 text-muted-foreground/50"}),(0,t.jsx)("button",{type:"button",className:"text-xs hover:text-foreground text-muted-foreground transition-colors rounded px-0.5",onClick:()=>em(e.path),children:0===a?(0,t.jsx)(tA,{className:"h-3.5 w-3.5"}):e.label})]},e.path))}),(0,t.jsx)("div",{className:"max-h-60 overflow-y-auto",children:i?(0,t.jsx)("div",{className:"flex justify-center py-8",children:(0,t.jsx)(N.Loader2,{className:"h-5 w-5 animate-spin text-muted-foreground"})}):c?(0,t.jsx)("div",{className:"px-4 py-3 text-sm text-destructive",children:c}):(0,t.jsxs)(t.Fragment,{children:[s?.parent&&(0,t.jsxs)("button",{type:"button",className:"flex w-full items-center gap-2.5 px-3 py-2 text-sm text-muted-foreground hover:bg-accent hover:text-accent-foreground transition-colors",onClick:()=>em(s.parent),children:[(0,t.jsx)(p.Folder,{className:"h-4 w-4 shrink-0"}),(0,t.jsx)("span",{className:"font-mono text-xs",children:".."})]}),s?.entries.length===0&&(0,t.jsx)("p",{className:"px-4 py-3 text-sm text-muted-foreground/60",children:"No subdirectories"}),s?.entries.map(e=>(0,t.jsxs)("button",{type:"button",className:"flex w-full items-center gap-2.5 px-3 py-2 text-sm hover:bg-accent hover:text-accent-foreground transition-colors",onClick:()=>em(e.path),children:[(0,t.jsx)(p.Folder,{className:"h-4 w-4 shrink-0 text-warning"}),(0,t.jsx)("span",{className:"truncate",children:e.name})]},e.path))]})}),(0,t.jsxs)("div",{className:"border-t px-3 py-2 flex items-center justify-between gap-2 bg-muted",children:[(0,t.jsxs)("button",{type:"button",className:(0,V.cn)("flex items-center gap-1.5 text-xs transition-colors rounded px-1.5 py-1",eh?"text-foreground hover:text-destructive":"text-muted-foreground hover:text-foreground"),title:eh?"Unpin this path":"Pin this path for quick access",onClick:ex,disabled:y||!s,children:[y?(0,t.jsx)(N.Loader2,{className:"h-3.5 w-3.5 animate-spin"}):eh?(0,t.jsx)(tI,{className:"h-3.5 w-3.5"}):(0,t.jsx)(A,{className:"h-3.5 w-3.5"}),eh?"Unpin":"Pin"]}),(0,t.jsxs)(U.Button,{size:"sm",className:"shrink-0 gap-1.5",disabled:!s||x,onClick:()=>ep(),children:[x?(0,t.jsx)(N.Loader2,{className:"h-3.5 w-3.5 animate-spin"}):(0,t.jsx)(h,{className:"h-3.5 w-3.5"}),"Select"]})]})]}),"local"===a&&b.length>0&&(0,t.jsxs)("div",{className:"rounded-lg border bg-card shadow-sm overflow-hidden",children:[(0,t.jsx)("div",{className:"px-3 py-2 border-b bg-muted",children:(0,t.jsxs)("span",{className:"text-xs font-medium text-muted-foreground flex items-center gap-1.5",children:[(0,t.jsx)(A,{className:"h-3 w-3"})," Pinned"]})}),(0,t.jsx)("div",{className:"max-h-40 overflow-y-auto",children:b.map(e=>(0,t.jsxs)("div",{className:"flex items-center gap-2 px-3 py-1.5 hover:bg-accent group",children:[(0,t.jsxs)("button",{type:"button",className:"flex-1 flex items-center gap-2 text-sm text-left min-w-0",onClick:()=>em(e),children:[(0,t.jsx)(p.Folder,{className:"h-4 w-4 shrink-0 text-warning"}),(0,t.jsx)("span",{className:"truncate font-mono text-xs",children:e})]}),(0,t.jsx)("button",{type:"button",className:"shrink-0 text-muted-foreground/50 hover:text-destructive opacity-0 group-hover:opacity-100 transition-all",onClick:()=>ef(e),title:"Remove pin",children:(0,t.jsx)(B.X,{className:"h-3.5 w-3.5"})})]},e))})]}),"local"===a&&s?.shortcuts&&s.shortcuts.length>0&&(0,t.jsx)("div",{className:"flex flex-wrap gap-1.5 justify-center",children:s.shortcuts.map(e=>(0,t.jsxs)(U.Button,{variant:"outline",size:"sm",className:"h-7 gap-1.5 text-xs",onClick:()=>em(e.path),children:["Home"===e.label?(0,t.jsx)(tO,{className:"h-3 w-3"}):(0,t.jsx)(tA,{className:"h-3 w-3"}),e.label]},e.path))})]})})}var tF=e.i(894013),tL=e.i(46951);let tP=tL.Root;tL.Trigger;let tB=tL.Close,tz=tL.Portal,t$=z.forwardRef(({className:e,...a},n)=>(0,t.jsx)(tL.Overlay,{ref:n,className:(0,V.cn)("fixed inset-0 z-40 bg-overlay backdrop-blur-sm data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",e),...a}));t$.displayName="SheetOverlay";let tU={bottom:"inset-x-0 bottom-0 data-[state=open]:slide-in-from-bottom data-[state=closed]:slide-out-to-bottom",top:"inset-x-0 top-0 data-[state=open]:slide-in-from-top data-[state=closed]:slide-out-to-top",left:"inset-y-0 left-0 data-[state=open]:slide-in-from-left data-[state=closed]:slide-out-to-left",right:"inset-y-0 right-0 data-[state=open]:slide-in-from-right data-[state=closed]:slide-out-to-right"},tq=z.forwardRef(({side:e="bottom",showClose:a=!1,className:n,children:s,...r},i)=>(0,t.jsxs)(tz,{children:[(0,t.jsx)(t$,{}),(0,t.jsxs)(tL.Content,{ref:i,className:(0,V.cn)("fixed z-50 bg-background shadow-golden transition-all ease-in-out","data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:duration-200 data-[state=open]:duration-300",tU[e],n),...r,children:[s,a&&(0,t.jsxs)(tL.Close,{className:"absolute right-4 top-4 rounded-sm opacity-70 transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring disabled:pointer-events-none",children:[(0,t.jsx)(B.X,{className:"h-4 w-4"}),(0,t.jsx)("span",{className:"sr-only",children:"Close"})]})]})]}));tq.displayName="SheetContent",z.forwardRef(({className:e,...a},n)=>(0,t.jsx)(tL.Title,{ref:n,className:(0,V.cn)("text-sm font-medium leading-none tracking-tight",e),...a})).displayName="SheetTitle",z.forwardRef(({className:e,...a},n)=>(0,t.jsx)(tL.Description,{ref:n,className:(0,V.cn)("text-sm text-muted-foreground",e),...a})).displayName="SheetDescription";var tK=e.i(417385),tH=e.i(199075),tW=e.i(534537);let tG="wiki-skin",tV={default:"Default",editorial:"Editorial"},tZ=["default","editorial"],tX=(0,tW.create)(e=>({skin:"editorial"===document.documentElement.dataset.skin?"editorial":"default",setSkin:t=>{"editorial"===t?(document.documentElement.setAttribute("data-skin","editorial"),localStorage.setItem(tG,"editorial")):(document.documentElement.removeAttribute("data-skin"),localStorage.removeItem(tG)),e({skin:t})}}));function tJ(e){return e.split(/[\n,]/).map(e=>e.trim()).filter(Boolean)}function tQ(){let e=tX(e=>e.skin),a=tX(e=>e.setSkin);return(0,t.jsx)("div",{className:"flex gap-1.5",children:tZ.map(n=>(0,t.jsx)("button",{type:"button",onClick:()=>a(n),"aria-pressed":e===n,className:`flex-1 rounded-md border px-3 py-2 text-sm transition-colors ${e===n?"border-ring bg-accent font-medium text-accent-foreground":"border-border text-muted-foreground hover:bg-accent/50"}`,children:tV[n]},n))})}function tY({open:e,onOpenChange:n}){let[s,r]=(0,z.useState)(!1),[i,l]=(0,z.useState)(!1),[o,c]=(0,z.useState)(null),[d,u]=(0,z.useState)("env"),[m,p]=(0,z.useState)(""),[h,x]=(0,z.useState)(""),[f,g]=(0,z.useState)(null),{data:b}=tH.authClient.useSession(),[w,y]=(0,z.useState)(!1),[v,k]=(0,z.useState)([]),[j,_]=(0,z.useState)([]),[C,E]=(0,z.useState)(null),[S,M]=(0,z.useState)(null),[A,D]=(0,z.useState)(""),[O,T]=(0,z.useState)(""),[I,R]=(0,z.useState)(!1),[F,L]=(0,z.useState)(null),P=(0,z.useCallback)(async()=>{try{let e=await fetch("/api/system/admins");if(!e.ok)return;let t=await e.json();y(!!t.isAdmin),k(t.admins??[]),_(t.users??[])}catch{}},[]),$=(0,z.useCallback)(async()=>{r(!0),c(null);try{let e=await fetch("/api/system/auth-settings");if(!e.ok)throw Error("Failed to load settings");let t=await e.json();p(t.allowedEmails.join("\n")),x(t.allowedDomains.join("\n")),u(t.source),g("number"==typeof t.rateLimit?t.rateLimit:null)}catch(e){c(e instanceof Error?e.message:"Failed to load")}finally{r(!1)}},[]);async function q(){l(!0),c(null);try{let e=await fetch("/api/system/auth-settings",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({allowedEmails:tJ(m),allowedDomains:tJ(h)})}),t=await e.json();if(!e.ok){c(t.error??"Save failed"),(0,tK.showError)(t.error??"Save failed");return}t.source&&u(t.source),n(!1)}catch{c("Save failed")}finally{l(!1)}}(0,z.useEffect)(()=>{e&&($(),P())},[e,$,P]);let K=0===tJ(m).length&&0===tJ(h).length;return(0,t.jsx)(tP,{open:e,onOpenChange:n,children:(0,t.jsxs)(tq,{side:"right",className:"w-[90vw] max-w-sm md:w-80 sm:max-w-md flex flex-col border-l border-border p-0",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between border-b border-border px-4 py-3 shrink-0",children:[(0,t.jsx)("span",{className:"text-sm font-semibold",children:"Settings"}),(0,t.jsxs)(tB,{className:"flex h-7 w-7 items-center justify-center rounded-md text-muted-foreground hover:bg-accent focus:outline-none focus:ring-2 focus:ring-ring",children:[(0,t.jsx)(B.X,{className:"h-3.5 w-3.5"}),(0,t.jsx)("span",{className:"sr-only",children:"Close"})]})]}),s?(0,t.jsx)("div",{className:"flex flex-1 items-center justify-center",children:(0,t.jsx)(N.Loader2,{className:"h-5 w-5 animate-spin text-muted-foreground"})}):(0,t.jsxs)("div",{className:"flex-1 space-y-5 overflow-y-auto px-4 py-4",children:[b?.user&&(0,t.jsxs)("section",{className:"space-y-2",children:[(0,t.jsx)("h3",{className:"text-xs font-semibold uppercase tracking-widest text-muted-foreground",children:"Account"}),(0,t.jsxs)("div",{className:"flex items-center justify-between rounded-md border border-border bg-muted/40 p-3",children:[(0,t.jsxs)("div",{className:"text-sm min-w-0",children:[(0,t.jsx)("div",{className:"font-medium truncate",children:b.user.name}),(0,t.jsx)("div",{className:"text-xs text-muted-foreground truncate",children:b.user.email})]}),(0,t.jsx)("button",{type:"button",onClick:async()=>{await tH.authClient.signOut(),window.location.href="/signin"},className:"ml-2 shrink-0 text-xs px-2 py-1 rounded border border-border hover:bg-accent",children:"Sign out"})]})]}),(0,t.jsxs)("section",{className:"space-y-2",children:[(0,t.jsx)("h3",{className:"text-xs font-semibold uppercase tracking-widest text-muted-foreground",children:"Appearance"}),(0,t.jsx)("p",{className:"text-xs text-muted-foreground",children:"Choose the visual style. Editorial uses a printed-journal aesthetic with serif type and warm paper tones."}),(0,t.jsx)(tQ,{})]}),(0,t.jsxs)("section",{className:"space-y-2",children:[(0,t.jsx)("h3",{className:"text-xs font-semibold uppercase tracking-widest text-muted-foreground",children:"Signup allowlist"}),(0,t.jsxs)("p",{className:"text-xs leading-relaxed text-muted-foreground",children:["Control who can create an account. Leave both lists empty to allow any email. Saving here overrides the"," ",(0,t.jsx)("code",{className:"bg-muted px-0.5 rounded",children:"AUTH_ALLOWED_EMAILS"})," ","and"," ",(0,t.jsx)("code",{className:"bg-muted px-0.5 rounded",children:"AUTH_ALLOWED_DOMAIN"})," ","environment variables."]}),"env"===d&&(0,t.jsxs)("div",{className:"flex items-start gap-2 rounded-md bg-muted px-3 py-2 text-xs text-muted-foreground",children:[(0,t.jsx)(a.AlertCircle,{className:"h-3.5 w-3.5 shrink-0 mt-0.5"}),(0,t.jsx)("span",{children:"Current values come from environment variables. Saving moves the allowlist into config and takes precedence going forward."})]}),(0,t.jsxs)("div",{className:"space-y-1.5",children:[(0,t.jsx)("label",{htmlFor:"allowed-emails",className:"text-sm font-medium",children:"Allowed emails"}),(0,t.jsx)("p",{className:"text-xs text-muted-foreground",children:"One per line (or comma-separated). Exact match, case-insensitive."}),(0,t.jsx)("textarea",{id:"allowed-emails",value:m,onChange:e=>p(e.target.value),spellCheck:!1,rows:5,placeholder:"alice@example.com bob@example.com",className:"w-full resize-y rounded-md border border-border bg-background px-3 py-2 font-mono text-sm outline-none focus:ring-2 focus:ring-primary"})]}),(0,t.jsxs)("div",{className:"space-y-1.5",children:[(0,t.jsx)("label",{htmlFor:"allowed-domains",className:"text-sm font-medium",children:"Allowed domains"}),(0,t.jsx)("p",{className:"text-xs text-muted-foreground",children:"One per line (or comma-separated). Matches any email at that domain."}),(0,t.jsx)("textarea",{id:"allowed-domains",value:h,onChange:e=>x(e.target.value),spellCheck:!1,rows:4,placeholder:"example.com trusted.org",className:"w-full resize-y rounded-md border border-border bg-background px-3 py-2 font-mono text-sm outline-none focus:ring-2 focus:ring-primary"})]}),K&&(0,t.jsxs)("div",{className:"flex items-start gap-2 rounded-md bg-warning-soft px-3 py-2 text-xs text-warning-ink",children:[(0,t.jsx)(a.AlertCircle,{className:"h-3.5 w-3.5 shrink-0 mt-0.5"}),(0,t.jsx)("span",{children:"Both lists are empty. Anyone with the signup URL can create an account."})]}),o&&(0,t.jsxs)("div",{className:"flex items-center gap-1.5 text-xs text-destructive",children:[(0,t.jsx)(a.AlertCircle,{className:"h-3.5 w-3.5 shrink-0"}),o]})]}),w&&(0,t.jsxs)("section",{className:"space-y-2",children:[(0,t.jsx)("h3",{className:"text-xs font-semibold uppercase tracking-widest text-muted-foreground",children:"Admins"}),(0,t.jsx)("p",{className:"text-xs leading-relaxed text-muted-foreground",children:"Admins can create workspaces, add users, and manage access."}),C&&(0,t.jsxs)("div",{className:"flex items-center gap-1.5 text-xs text-destructive",children:[(0,t.jsx)(a.AlertCircle,{className:"h-3.5 w-3.5 shrink-0"}),C]}),(0,t.jsxs)("div",{className:"space-y-2 rounded-md border border-border p-3",children:[(0,t.jsx)("div",{className:"text-xs font-medium",children:"Add user"}),F?(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsxs)("p",{className:"text-xs text-muted-foreground",children:["Created ",(0,t.jsx)("span",{className:"font-medium text-foreground",children:F.email}),". Share this temporary password now, it will not be shown again."]}),(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)("code",{className:"flex-1 rounded bg-muted px-2 py-1.5 font-mono text-sm select-all",children:F.tempPassword}),(0,t.jsx)("button",{type:"button",className:"shrink-0 text-xs px-2 py-1 rounded border border-border hover:bg-accent",onClick:()=>void navigator.clipboard?.writeText(F.tempPassword),children:"Copy"})]}),(0,t.jsx)("button",{type:"button",className:"text-xs text-muted-foreground hover:text-foreground",onClick:()=>{L(null),D(""),T(""),P()},children:"Done"})]}):(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsx)("input",{type:"email",value:A,onChange:e=>D(e.target.value),placeholder:"email@team.com",className:"w-full rounded-md border border-border bg-background px-2 py-1.5 text-sm outline-none focus:ring-2 focus:ring-primary"}),(0,t.jsx)("input",{type:"text",value:O,onChange:e=>T(e.target.value),placeholder:"Name (optional)",className:"w-full rounded-md border border-border bg-background px-2 py-1.5 text-sm outline-none focus:ring-2 focus:ring-primary"}),(0,t.jsxs)(U.Button,{size:"sm",className:"w-full gap-1.5",disabled:I||!A.trim(),onClick:async()=>{R(!0),E(null);try{let e=await fetch("/api/system/users",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({email:A.trim(),name:O.trim()})}),t=await e.json();e.ok&&t.tempPassword?L({email:t.email??A.trim(),tempPassword:t.tempPassword}):E(t.message??t.error??"Failed to create user")}catch{E("Network error")}finally{R(!1)}},children:[I&&(0,t.jsx)(N.Loader2,{className:"h-3.5 w-3.5 animate-spin"}),"Create user"]})]})]}),(0,t.jsxs)("div",{className:"space-y-1 rounded-md border border-border overflow-hidden",children:[j.map(e=>{let a=v.includes(e.id);return(0,t.jsxs)("div",{className:"flex items-center justify-between px-3 py-2 bg-muted/40 hover:bg-muted/60 transition-colors",children:[(0,t.jsxs)("div",{className:"text-sm min-w-0",children:[(0,t.jsx)("div",{className:"font-medium truncate",children:e.name}),(0,t.jsx)("div",{className:"text-xs text-muted-foreground truncate",children:e.email})]}),(0,t.jsx)("button",{type:"button",disabled:S===e.id,className:"ml-2 shrink-0 text-xs px-2 py-1 rounded border border-border hover:bg-accent disabled:opacity-50",onClick:async()=>{M(e.id),E(null);try{let t=await fetch("/api/system/admins",{method:a?"DELETE":"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({userId:e.id})}),n=await t.json();t.ok?n.admins&&k(n.admins):E(n.message??n.error??"Failed")}catch{E("Network error")}finally{M(null)}},children:S===e.id?(0,t.jsx)(N.Loader2,{className:"h-3 w-3 animate-spin"}):a?"Demote":"Promote"})]},e.id)}),0===j.length&&(0,t.jsx)("div",{className:"px-3 py-2 text-xs text-muted-foreground",children:"No users yet."})]})]}),(0,t.jsxs)("section",{className:"space-y-2",children:[(0,t.jsx)("h3",{className:"text-xs font-semibold uppercase tracking-widest text-muted-foreground",children:"Agent rate limit"}),(0,t.jsxs)("div",{className:"rounded-md border border-border bg-muted/40 p-3 space-y-1.5",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between text-xs",children:[(0,t.jsx)("span",{className:"text-muted-foreground",children:"Per agent"}),(0,t.jsx)("span",{className:"font-mono",children:null!==f?`${f} ops/min`:"--"})]}),(0,t.jsxs)("p",{className:"text-[10px] text-muted-foreground/60",children:["Override with ",(0,t.jsx)("code",{className:"bg-muted px-0.5 rounded",children:"AGENT_RATE_LIMIT"})," env var."]})]})]})]}),(0,t.jsxs)("div",{className:"flex items-center justify-end gap-2 border-t border-border px-4 py-3 shrink-0",children:[(0,t.jsx)(U.Button,{size:"sm",variant:"ghost",onClick:()=>n(!1),disabled:i,children:"Cancel"}),(0,t.jsxs)(U.Button,{size:"sm",onClick:q,disabled:i||s,className:"gap-1.5",children:[i&&(0,t.jsx)(N.Loader2,{className:"h-3.5 w-3.5 animate-spin"}),"Save"]})]})]})})}var t0=e.i(567776);let t1=(0,n.default)("clock",[["path",{d:"M12 6v6l4 2",key:"mmk7yg"}],["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]]);var t2=e.i(793479),t5=e.i(291967),t3=e.i(967928),t4=e.i(543250),t7=e.i(417256),t9=e.i(461614),t6=e.i(980939),t8="Switch",[ae,at]=(0,t4.createContextScope)(t8),[aa,an]=ae(t8),as=z.forwardRef((e,a)=>{let{__scopeSwitch:n,name:s,checked:r,defaultChecked:i,required:l,disabled:o,value:c="on",onCheckedChange:d,form:u,...m}=e,[p,h]=z.useState(null),x=(0,t3.useComposedRefs)(a,e=>h(e)),f=z.useRef(!1),g=!p||u||!!p.closest("form"),[b,w]=(0,t7.useControllableState)({prop:r,defaultProp:i??!1,onChange:d,caller:t8});return(0,t.jsxs)(aa,{scope:n,checked:b,disabled:o,children:[(0,t.jsx)(t6.Primitive.button,{type:"button",role:"switch","aria-checked":b,"aria-required":l,"data-state":ao(b),"data-disabled":o?"":void 0,disabled:o,value:c,...m,ref:x,onClick:(0,t5.composeEventHandlers)(e.onClick,e=>{w(e=>!e),g&&(f.current=e.isPropagationStopped(),f.current||e.stopPropagation())})}),g&&(0,t.jsx)(al,{control:p,bubbles:!f.current,name:s,value:c,checked:b,required:l,disabled:o,form:u,style:{transform:"translateX(-100%)"}})]})});as.displayName=t8;var ar="SwitchThumb",ai=z.forwardRef((e,a)=>{let{__scopeSwitch:n,...s}=e,r=an(ar,n);return(0,t.jsx)(t6.Primitive.span,{"data-state":ao(r.checked),"data-disabled":r.disabled?"":void 0,...s,ref:a})});ai.displayName=ar;var al=z.forwardRef(({__scopeSwitch:e,control:a,checked:n,bubbles:s=!0,...r},i)=>{let l,o=z.useRef(null),c=(0,t3.useComposedRefs)(o,i),d=(l=z.useRef({value:n,previous:n}),z.useMemo(()=>(l.current.value!==n&&(l.current.previous=l.current.value,l.current.value=n),l.current.previous),[n])),u=(0,t9.useSize)(a);return z.useEffect(()=>{let e=o.current;if(!e)return;let t=Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype,"checked").set;if(d!==n&&t){let a=new Event("click",{bubbles:s});t.call(e,n),e.dispatchEvent(a)}},[d,n,s]),(0,t.jsx)("input",{type:"checkbox","aria-hidden":!0,defaultChecked:n,...r,tabIndex:-1,ref:c,style:{...r.style,...u,position:"absolute",pointerEvents:"none",opacity:0,margin:0}})});function ao(e){return e?"checked":"unchecked"}function ac({className:e,...a}){return(0,t.jsx)(as,{"data-slot":"switch",className:(0,V.cn)("peer data-[state=checked]:bg-[var(--switch-checked)] data-[state=unchecked]:bg-input inline-flex h-5 w-9 shrink-0 items-center rounded-sm border-2 border-transparent shadow-e-1 transition-all outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 cursor-pointer",e),...a,children:(0,t.jsx)(ai,{"data-slot":"switch-thumb",className:"bg-background pointer-events-none block size-4 rounded-sm shadow-e-1 ring-0 transition-transform data-[state=checked]:translate-x-4 data-[state=unchecked]:translate-x-0"})})}al.displayName="SwitchBubbleInput";var ad=e.i(110204);function au({open:e,onOpenChange:a,filePath:n}){let[s,i]=(0,z.useState)([]),[l,c]=(0,z.useState)(!0),[d,u]=(0,z.useState)(!1),[m,p]=(0,z.useState)(""),[h,x]=(0,z.useState)(!1),[f,b]=(0,z.useState)(!1),[w,y]=(0,z.useState)("7"),[v,k]=(0,z.useState)(null),j=(0,z.useCallback)(async()=>{c(!0);try{let e=await (0,G.wsFetch)(`/api/share?path=${encodeURIComponent(n)}`);if(e.ok){let t=await e.json();i(t.shares??[])}}catch{}c(!1)},[n]);(0,z.useEffect)(()=>{e&&j()},[e,j]);let _=async()=>{u(!0);try{let e={path:n};if(h&&m.trim()&&(e.password=m.trim()),f&&w){let t=new Date;t.setDate(t.getDate()+Number(w)),e.expiresAt=t.toISOString()}let t=await (0,G.wsFetch)("/api/share",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});if(!t.ok){let e=await t.json();(0,tK.showError)(e.error??"Failed to create share link");return}(0,tK.showSuccess)("Share link created"),p(""),x(!1),b(!1),y("7"),await j()}catch{(0,tK.showError)("Failed to create share link")}finally{u(!1)}},C=async e=>{try{if(!(await fetch(`/api/share/${e}`,{method:"DELETE"})).ok)return void(0,tK.showError)("Failed to revoke share link");(0,tK.showSuccess)("Share link revoked"),await j()}catch{(0,tK.showError)("Failed to revoke share link")}};return(0,t.jsx)(q.Dialog,{open:e,onOpenChange:a,children:(0,t.jsxs)(q.DialogContent,{className:"sm:max-w-md",children:[(0,t.jsxs)(q.DialogHeader,{children:[(0,t.jsx)(q.DialogTitle,{children:"Share document"}),(0,t.jsx)(q.DialogDescription,{children:"Create a public link to share this document as read-only."})]}),(0,t.jsxs)("div",{className:"space-y-4",children:[(0,t.jsxs)("div",{className:"rounded-sm border border-border p-3 space-y-3",children:[(0,t.jsx)("h3",{className:"text-sm font-medium",children:"New share link"}),(0,t.jsxs)("div",{className:"flex items-center justify-between",children:[(0,t.jsxs)(ad.Label,{htmlFor:"share-pwd",className:"text-xs gap-1.5 flex items-center",children:[(0,t.jsx)(t0.Lock,{className:"h-3 w-3 text-muted-foreground"}),"Password protect"]}),(0,t.jsx)(ac,{id:"share-pwd",checked:h,onCheckedChange:x})]}),h&&(0,t.jsx)(t2.Input,{type:"password",placeholder:"Set a password",value:m,onChange:e=>p(e.target.value)}),(0,t.jsxs)("div",{className:"flex items-center justify-between",children:[(0,t.jsxs)(ad.Label,{htmlFor:"share-expiry",className:"text-xs gap-1.5 flex items-center",children:[(0,t.jsx)(t1,{className:"h-3 w-3 text-muted-foreground"}),"Set expiration"]}),(0,t.jsx)(ac,{id:"share-expiry",checked:f,onCheckedChange:b})]}),f&&(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)(t2.Input,{type:"number",min:1,max:365,value:w,onChange:e=>y(e.target.value),className:"w-20"}),(0,t.jsx)("span",{className:"text-xs text-muted-foreground",children:"days"})]}),(0,t.jsxs)(U.Button,{size:"sm",className:"w-full gap-1.5",onClick:_,disabled:d,children:[d?(0,t.jsx)(N.Loader2,{className:"h-3.5 w-3.5 animate-spin"}):(0,t.jsx)(g.Globe,{className:"h-3.5 w-3.5"}),"Create link"]})]}),(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsx)("h3",{className:"text-xs font-medium text-muted-foreground",children:s.length>0?`Active links (${s.length})`:l?"Loading...":"No active links"}),l&&(0,t.jsx)("div",{className:"flex justify-center py-2",children:(0,t.jsx)(N.Loader2,{className:"h-4 w-4 animate-spin text-muted-foreground"})}),s.map(e=>(0,t.jsxs)("div",{className:"flex items-center gap-2 rounded-sm border border-border p-2",children:[(0,t.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,t.jsx)("div",{className:"flex items-center gap-1.5",children:(0,t.jsxs)("span",{className:"text-xs font-mono truncate",children:[window.location.origin,"/s/",e.token]})}),(0,t.jsxs)("div",{className:"flex items-center gap-2 mt-0.5",children:[e.hasPassword&&(0,t.jsxs)("span",{className:"flex items-center gap-0.5 text-[10px] text-muted-foreground",children:[(0,t.jsx)(t0.Lock,{className:"h-2.5 w-2.5"}),"pwd"]}),e.expiresAt&&(0,t.jsxs)("span",{className:"flex items-center gap-0.5 text-[10px] text-muted-foreground",children:[(0,t.jsx)(t1,{className:"h-2.5 w-2.5"}),function(e){let t=new Date(e),a=new Date,n=t.getTime()-a.getTime();if(n<=0)return"expired";let s=Math.floor(n/864e5),r=Math.floor(n%864e5/36e5);return s>0?`${s}d`:r>0?`${r}h`:"<1h"}(e.expiresAt)]}),(0,t.jsxs)("span",{className:"text-[10px] text-muted-foreground",children:[e.viewCount," view",1!==e.viewCount?"s":""]}),e.isExpired&&(0,t.jsx)("span",{className:"text-[10px] text-destructive",children:"expired"})]})]}),(0,t.jsxs)("div",{className:"flex items-center gap-1 shrink-0",children:[(0,t.jsx)(U.Button,{size:"sm",variant:"ghost",className:"h-7 w-7 p-0",title:"Copy link",onClick:()=>{var t,a;let n;return t=e.url,a=e.token,n=`${window.location.origin}${t}`,void(navigator.clipboard.writeText(n),k(a),setTimeout(()=>k(null),2e3))},children:v===e.token?(0,t.jsx)(r.Check,{className:"h-3.5 w-3.5 text-success"}):(0,t.jsx)(o.Copy,{className:"h-3.5 w-3.5"})}),(0,t.jsx)(U.Button,{size:"sm",variant:"ghost",className:"h-7 w-7 p-0 text-destructive hover:text-destructive",title:"Revoke link",onClick:()=>C(e.token),children:(0,t.jsx)(L.Trash2,{className:"h-3.5 w-3.5"})})]})]},e.id))]})]})]})})}var am=e.i(515288),ap=e.i(918552),ah=e.i(136131),ax="ContextMenu",[af,ag]=(0,t4.createContextScope)(ax,[ap.createMenuScope]),ab=(0,ap.createMenuScope)(),[aw,ay]=af(ax),av=e=>{let{__scopeContextMenu:a,children:n,onOpenChange:s,dir:r,modal:i=!0}=e,[l,o]=z.useState(!1),c=ab(a),d=(0,ah.useCallbackRef)(s),u=z.useCallback(e=>{o(e),d(e)},[d]);return(0,t.jsx)(aw,{scope:a,open:l,onOpenChange:u,modal:i,children:(0,t.jsx)(ap.Root,{...c,dir:r,open:l,onOpenChange:u,modal:i,children:n})})};av.displayName=ax;var aN="ContextMenuTrigger",ak=z.forwardRef((e,a)=>{let{__scopeContextMenu:n,disabled:s=!1,...r}=e,i=ay(aN,n),l=ab(n),o=z.useRef({x:0,y:0}),c=z.useRef({getBoundingClientRect:()=>DOMRect.fromRect({width:0,height:0,...o.current})}),d=z.useRef(0),u=z.useCallback(()=>window.clearTimeout(d.current),[]),m=e=>{o.current={x:e.clientX,y:e.clientY},i.onOpenChange(!0)};return z.useEffect(()=>u,[u]),z.useEffect(()=>void(s&&u()),[s,u]),(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(ap.Anchor,{...l,virtualRef:c}),(0,t.jsx)(t6.Primitive.span,{"data-state":i.open?"open":"closed","data-disabled":s?"":void 0,...r,ref:a,style:{WebkitTouchCallout:"none",...e.style},onContextMenu:s?e.onContextMenu:(0,t5.composeEventHandlers)(e.onContextMenu,e=>{u(),m(e),e.preventDefault()}),onPointerDown:s?e.onPointerDown:(0,t5.composeEventHandlers)(e.onPointerDown,aR(e=>{u(),d.current=window.setTimeout(()=>m(e),700)})),onPointerMove:s?e.onPointerMove:(0,t5.composeEventHandlers)(e.onPointerMove,aR(u)),onPointerCancel:s?e.onPointerCancel:(0,t5.composeEventHandlers)(e.onPointerCancel,aR(u)),onPointerUp:s?e.onPointerUp:(0,t5.composeEventHandlers)(e.onPointerUp,aR(u))})]})});ak.displayName=aN;var aj=e=>{let{__scopeContextMenu:a,...n}=e,s=ab(a);return(0,t.jsx)(ap.Portal,{...s,...n})};aj.displayName="ContextMenuPortal";var a_="ContextMenuContent",aC=z.forwardRef((e,a)=>{let{__scopeContextMenu:n,...s}=e,r=ay(a_,n),i=ab(n),l=z.useRef(!1);return(0,t.jsx)(ap.Content,{...i,...s,ref:a,side:"right",sideOffset:2,align:"start",onCloseAutoFocus:t=>{e.onCloseAutoFocus?.(t),!t.defaultPrevented&&l.current&&t.preventDefault(),l.current=!1},onInteractOutside:t=>{e.onInteractOutside?.(t),t.defaultPrevented||r.modal||(l.current=!0)},style:{...e.style,"--radix-context-menu-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-context-menu-content-available-width":"var(--radix-popper-available-width)","--radix-context-menu-content-available-height":"var(--radix-popper-available-height)","--radix-context-menu-trigger-width":"var(--radix-popper-anchor-width)","--radix-context-menu-trigger-height":"var(--radix-popper-anchor-height)"}})});aC.displayName=a_,z.forwardRef((e,a)=>{let{__scopeContextMenu:n,...s}=e,r=ab(n);return(0,t.jsx)(ap.Group,{...r,...s,ref:a})}).displayName="ContextMenuGroup";var aE=z.forwardRef((e,a)=>{let{__scopeContextMenu:n,...s}=e,r=ab(n);return(0,t.jsx)(ap.Label,{...r,...s,ref:a})});aE.displayName="ContextMenuLabel";var aS=z.forwardRef((e,a)=>{let{__scopeContextMenu:n,...s}=e,r=ab(n);return(0,t.jsx)(ap.Item,{...r,...s,ref:a})});aS.displayName="ContextMenuItem";var aM=z.forwardRef((e,a)=>{let{__scopeContextMenu:n,...s}=e,r=ab(n);return(0,t.jsx)(ap.CheckboxItem,{...r,...s,ref:a})});aM.displayName="ContextMenuCheckboxItem",z.forwardRef((e,a)=>{let{__scopeContextMenu:n,...s}=e,r=ab(n);return(0,t.jsx)(ap.RadioGroup,{...r,...s,ref:a})}).displayName="ContextMenuRadioGroup";var aA=z.forwardRef((e,a)=>{let{__scopeContextMenu:n,...s}=e,r=ab(n);return(0,t.jsx)(ap.RadioItem,{...r,...s,ref:a})});aA.displayName="ContextMenuRadioItem";var aD=z.forwardRef((e,a)=>{let{__scopeContextMenu:n,...s}=e,r=ab(n);return(0,t.jsx)(ap.ItemIndicator,{...r,...s,ref:a})});aD.displayName="ContextMenuItemIndicator";var aO=z.forwardRef((e,a)=>{let{__scopeContextMenu:n,...s}=e,r=ab(n);return(0,t.jsx)(ap.Separator,{...r,...s,ref:a})});aO.displayName="ContextMenuSeparator",z.forwardRef((e,a)=>{let{__scopeContextMenu:n,...s}=e,r=ab(n);return(0,t.jsx)(ap.Arrow,{...r,...s,ref:a})}).displayName="ContextMenuArrow";var aT=z.forwardRef((e,a)=>{let{__scopeContextMenu:n,...s}=e,r=ab(n);return(0,t.jsx)(ap.SubTrigger,{...r,...s,ref:a})});aT.displayName="ContextMenuSubTrigger";var aI=z.forwardRef((e,a)=>{let{__scopeContextMenu:n,...s}=e,r=ab(n);return(0,t.jsx)(ap.SubContent,{...r,...s,ref:a,style:{...e.style,"--radix-context-menu-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-context-menu-content-available-width":"var(--radix-popper-available-width)","--radix-context-menu-content-available-height":"var(--radix-popper-available-height)","--radix-context-menu-trigger-width":"var(--radix-popper-anchor-width)","--radix-context-menu-trigger-height":"var(--radix-popper-anchor-height)"}})});function aR(e){return t=>"mouse"!==t.pointerType?e(t):void 0}aI.displayName="ContextMenuSubContent";var aF=e.i(149427);z.forwardRef(({className:e,inset:a,children:n,...s},r)=>(0,t.jsxs)(aT,{ref:r,className:(0,V.cn)("flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent data-[state=open]:bg-accent",a&&"pl-8",e),...s,children:[n,(0,t.jsx)(l.ChevronRight,{className:"ml-auto h-4 w-4"})]})).displayName=aT.displayName,z.forwardRef(({className:e,...a},n)=>(0,t.jsx)(aI,{ref:n,className:(0,V.cn)("z-50 min-w-[8rem] overflow-hidden rounded-sm border bg-popover p-1 text-popover-foreground shadow-golden data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",e),...a})).displayName=aI.displayName;let aL=z.forwardRef(({className:e,...a},n)=>(0,t.jsx)(aj,{children:(0,t.jsx)(aC,{ref:n,className:(0,V.cn)("z-50 min-w-[8rem] overflow-hidden rounded-sm border bg-popover p-1 text-popover-foreground shadow-golden data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",e),...a})}));aL.displayName=aC.displayName;let aP=z.forwardRef(({className:e,inset:a,...n},s)=>(0,t.jsx)(aS,{ref:s,className:(0,V.cn)("relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",a&&"pl-8",e),...n}));aP.displayName=aS.displayName,z.forwardRef(({className:e,children:a,checked:n,...s},i)=>(0,t.jsxs)(aM,{ref:i,className:(0,V.cn)("relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",e),checked:n,...s,children:[(0,t.jsx)("span",{className:"absolute left-2 flex h-3.5 w-3.5 items-center justify-center",children:(0,t.jsx)(aD,{children:(0,t.jsx)(r.Check,{className:"h-4 w-4"})})}),a]})).displayName=aM.displayName,z.forwardRef(({className:e,children:a,...n},s)=>(0,t.jsxs)(aA,{ref:s,className:(0,V.cn)("relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",e),...n,children:[(0,t.jsx)("span",{className:"absolute left-2 flex h-3.5 w-3.5 items-center justify-center",children:(0,t.jsx)(aD,{children:(0,t.jsx)(aF.Circle,{className:"h-2 w-2 fill-current"})})}),a]})).displayName=aA.displayName,z.forwardRef(({className:e,inset:a,...n},s)=>(0,t.jsx)(aE,{ref:s,className:(0,V.cn)("px-2 py-1.5 text-sm font-normal",a&&"pl-8",e),...n})).displayName=aE.displayName;let aB=z.forwardRef(({className:e,...a},n)=>(0,t.jsx)(aO,{ref:n,className:(0,V.cn)("-mx-1 my-1 h-px bg-muted",e),...a}));function az(e){return e?`wiki-recent-files-${e}`:"wiki-recent-files"}function a$(e){try{let t=localStorage.getItem(az(e));return t?JSON.parse(t):[]}catch{return[]}}aB.displayName=aO.displayName;let aU=(0,tW.create)(e=>({recents:[],loadForWorkspace:t=>{e({recents:a$(t)})},push:(t,a)=>{let n=a$(a).filter(e=>e.path!==t.path),s=[t,...n].slice(0,15);localStorage.setItem(az(a),JSON.stringify(s)),e({recents:s})}}));function aq(e){return e?`wiki-pinned-files-${e}`:"wiki-pinned-files"}function aK(e){try{let t=localStorage.getItem(aq(e));return t?JSON.parse(t):[]}catch{return[]}}let aH=(0,tW.create)((e,t)=>({pins:[],loadForWorkspace:t=>{e({pins:aK(t)})},toggle:(t,a)=>{let n=aK(a),s=n.some(e=>e.path===t.path)?n.filter(e=>e.path!==t.path):[...n,t];localStorage.setItem(aq(a),JSON.stringify(s)),e({pins:s})},isPinned:e=>t().pins.some(t=>t.path===e)})),aW=(0,n.default)("wifi",[["path",{d:"M12 20h.01",key:"zekei9"}],["path",{d:"M2 8.82a15 15 0 0 1 20 0",key:"dnpr2z"}],["path",{d:"M5 12.859a10 10 0 0 1 14 0",key:"1x1e6c"}],["path",{d:"M8.5 16.429a5 5 0 0 1 7 0",key:"1bycff"}]]);var aG=e.i(24800);let aV=(0,n.default)("circle-check-big",[["path",{d:"M21.801 10A10 10 0 1 1 17 3.335",key:"yps3ct"}],["path",{d:"m9 11 3 3L22 4",key:"1pflzl"}]]),aZ=(0,n.default)("circle-x",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m15 9-6 6",key:"1uzhvr"}],["path",{d:"m9 9 6 6",key:"z0biqf"}]]);var aX=e.i(187014);function aJ(e){let t=Date.now()-new Date(e).getTime();return t<6e4?"just now":t<36e5?`${Math.floor(t/6e4)}m ago`:t<864e5?`${Math.floor(t/36e5)}h ago`:`${Math.floor(t/864e5)}d ago`}function aQ({scope:e}){return(0,t.jsxs)("span",{className:"text-[10px] text-muted-foreground/70 font-mono",children:[e.paths.join(", ")," · ",e.ops.join(",")]})}function aY({reg:e,onApprove:a,onDeny:n}){let[s,r]=(0,z.useState)(!1);async function i(t){r(!0);try{await t(e.registrationId)}finally{r(!1)}}return(0,t.jsxs)("li",{className:"py-1.5 border-b border-border/40 last:border-0",children:[(0,t.jsxs)("div",{className:"flex items-start justify-between gap-1",children:[(0,t.jsxs)("div",{className:"min-w-0",children:[(0,t.jsx)("p",{className:"text-xs font-mono truncate",children:e.displayName}),(0,t.jsx)("p",{className:"text-[10px] text-muted-foreground/60 truncate",children:e.agentId}),(0,t.jsx)(aQ,{scope:e.requestedScope})]}),(0,t.jsxs)("div",{className:"flex items-center gap-1 shrink-0",children:[(0,t.jsxs)(U.Button,{size:"sm",variant:"default",className:"h-6 px-2 text-[10px]",disabled:s,onClick:()=>void i(a),title:"Approve",children:[(0,t.jsx)(aV,{className:"h-3 w-3 mr-0.5"}),"Approve"]}),(0,t.jsxs)(U.Button,{size:"sm",variant:"ghost",className:"h-6 px-2 text-[10px] text-destructive hover:text-destructive",disabled:s,onClick:()=>void i(n),title:"Deny",children:[(0,t.jsx)(aZ,{className:"h-3 w-3 mr-0.5"}),"Deny"]})]})]}),(0,t.jsxs)("p",{className:"text-[10px] text-muted-foreground/50 mt-0.5",children:["Requested ",aJ(e.requestedAt)]})]})}function a0({agent:e,onRevoke:a}){let[n,s]=(0,z.useState)(!1);return(0,t.jsxs)("li",{className:"py-1.5 border-b border-border/40 last:border-0",children:[(0,t.jsxs)("div",{className:"flex items-start justify-between gap-1",children:[(0,t.jsxs)("div",{className:"min-w-0",children:[(0,t.jsx)("p",{className:"text-xs font-mono truncate",children:e.displayName}),(0,t.jsx)("p",{className:"text-[10px] text-muted-foreground/60 truncate",children:e.id}),(0,t.jsx)(aQ,{scope:e.scope})]}),(0,t.jsx)(U.Button,{size:"sm",variant:"ghost",className:"h-6 w-6 p-0 shrink-0 text-destructive hover:text-destructive",disabled:n,onClick:async()=>{s(!0);try{await a(e.id)}finally{s(!1)}},title:"Revoke agent",children:(0,t.jsx)(L.Trash2,{className:"h-3 w-3"})})]}),(0,t.jsxs)("p",{className:"text-[10px] text-muted-foreground/50 mt-0.5",children:["Last seen ",aJ(e.lastSeen)]})]})}function a1(){let[e,a]=(0,z.useState)([]),[n,s]=(0,z.useState)([]),[r,i]=(0,z.useState)(!1);(0,z.useEffect)(()=>{fetch("/api/owner/init",{credentials:"same-origin"}).then(e=>{(e.ok||204===e.status)&&i(!0)}).catch(()=>{i(!0)})},[]);let l=(0,z.useCallback)(async()=>{try{let e=await fetch("/api/agent/admin/registrations",{credentials:"same-origin"});if(!e.ok)return;let t=await e.json();a(t.pending)}catch{}},[]),o=(0,z.useCallback)(async()=>{try{let e=await fetch("/api/agent/admin/agents",{credentials:"same-origin"});if(!e.ok)return;let t=await e.json();s(t.agents)}catch{}},[]);(0,z.useEffect)(()=>{if(!r)return;l(),o();let e=setInterval(()=>void l(),5e3),t=setInterval(()=>void o(),3e4);return()=>{clearInterval(e),clearInterval(t)}},[r,l,o]);let c=(0,z.useCallback)(async e=>{(await fetch(`/api/agent/admin/registrations/${e}/approve`,{method:"POST",credentials:"same-origin",headers:{"Content-Type":"application/json"},body:"{}"})).ok?(aX.toast.success("Agent approved"),await Promise.all([l(),o()])):aX.toast.error("Failed to approve agent")},[l,o]),d=(0,z.useCallback)(async e=>{(await fetch(`/api/agent/admin/registrations/${e}/deny`,{method:"POST",credentials:"same-origin"})).ok?(aX.toast.success("Registration denied"),await l()):aX.toast.error("Failed to deny registration")},[l]),u=(0,z.useCallback)(async e=>{(await fetch(`/api/agent/admin/agents/${encodeURIComponent(e)}/revoke`,{method:"POST",credentials:"same-origin"})).ok?(aX.toast.success("Agent revoked"),await o()):aX.toast.error("Failed to revoke agent")},[o]);return(0,t.jsxs)("section",{className:"space-y-2",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between",children:[(0,t.jsx)("h3",{className:"text-xs font-semibold uppercase tracking-widest text-muted-foreground",children:"Agents · approve & manage access"}),(0,t.jsx)(U.Button,{size:"sm",variant:"ghost",className:"h-5 w-5 p-0",title:"Refresh",onClick:()=>void Promise.all([l(),o()]),children:(0,t.jsx)(O,{className:"h-3 w-3"})})]}),e.length>0&&(0,t.jsxs)("div",{className:"rounded-md border border-amber-500/40 bg-amber-50/10 p-2",children:[(0,t.jsxs)("p",{className:"text-[10px] font-semibold uppercase tracking-widest text-amber-600/80 mb-1 flex items-center gap-1",children:[(0,t.jsx)(t1,{className:"h-3 w-3"}),"Waiting for your approval (",e.length,")"]}),(0,t.jsx)("ul",{children:e.map(e=>(0,t.jsx)(aY,{reg:e,onApprove:c,onDeny:d},e.registrationId))})]}),(0,t.jsx)("div",{className:"rounded-md border border-border bg-muted/40 p-2",children:0===n.length?(0,t.jsxs)("p",{className:"text-xs text-muted-foreground/60 py-1",children:["No assistants connected yet."," ",(0,t.jsx)("span",{className:"text-muted-foreground/40",children:"Connect one above; once it requests access it’ll appear here for you to approve."})]}):(0,t.jsx)("ul",{children:n.map(e=>(0,t.jsx)(a0,{agent:e,onRevoke:u},e.id))})}),(0,t.jsx)("p",{className:"text-[10px] text-muted-foreground/60 leading-relaxed",children:"Each assistant gets its own access that you can revoke anytime. New requests appear above for your approval before they can read or edit anything."})]})}var a2=e.i(96701);function a5(e){let t=Math.max(0,Math.round((Date.now()-new Date(e).getTime())/1e3));if(t<45)return"just now";let a=t,n="second";for(let[e,t]of[[60,"second"],[60,"minute"],[24,"hour"],[7,"day"]]){if(a<e)break;a=Math.floor(a/e),n=t}return new Intl.RelativeTimeFormat("en",{numeric:"always",style:"short"}).format(-a,n).replace(/\s+/g," ").replace(/\./g,"")}async function a3(e){if(!/\.(md|markdown)$/i.test(e))return 0;for(let t of[`/api/agent/sidecar/${e}`,`/api/agent/files/${e}/pending`,`/api/agent/files/${e}`])try{let e=await (0,G.wsFetch)(t);if(!e.ok)continue;let a=await e.json();if(Array.isArray(a.pending))return a.pending.length;if(Array.isArray(a.events)&&t.includes("/pending"))return a.events.length;if("number"==typeof a.pendingCount)return a.pendingCount;if("number"==typeof a.count)return a.count;if("number"==typeof a.total)return a.total;if(Array.isArray(a.suggestions)||Array.isArray(a.comments)||a.blockProvenance){let e=Array.isArray(a.suggestions)?a.suggestions.filter(e=>e&&"object"==typeof e&&"pending"===e.status).length:0,t=Array.isArray(a.comments)?a.comments.filter(e=>e&&"object"==typeof e&&!e.resolved).length:0,n=a.blockProvenance&&"object"==typeof a.blockProvenance?Object.keys(a.blockProvenance).length:0;return e+t+n}}catch{}return 0}let a4=(0,z.memo)(function({event:e}){var a,n;let s,r,i,l,o;return(0,t.jsxs)("div",{className:"flex items-start gap-2.5 rounded-md px-2 py-2 hover:bg-background/50",children:[(0,t.jsx)("div",{className:"flex h-7 w-7 shrink-0 items-center justify-center rounded-full text-[10px] font-semibold shadow-sm ring-1 ring-black/5",style:(s=function(e){let t=0;for(let a=0;a<e.length;a+=1)t=31*t+e.charCodeAt(a)|0;return Math.abs(t)}(e.by)%360,{backgroundColor:`hsl(${s} 72% 42%)`,color:"white"}),title:e.by,"aria-hidden":!0,children:((r=(a=e.by).split(/[:/]/).pop()??a).replace(/[^a-z0-9]/gi,"").slice(0,2)||r.slice(0,2)||"??").toUpperCase()}),(0,t.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,t.jsx)("p",{className:"truncate text-xs text-foreground/85",children:(i=((n=e.by).split(/[:/]/).pop()??n).replace(/[-_]+/g," ").replace(/^./,e=>e.toUpperCase()),l=e.type,o=Array.isArray(e.refs)?(e.refs??[]).length:+("string"==typeof e.ref),"block.append"===l||"block.inserted"===l&&"end"===e.position?`${i} appended ${o||1} block${1===(o||1)?"":"s"}`:"block.prepend"===l||"block.inserted"===l&&"start"===e.position?`${i} prepended ${o||1} block${1===(o||1)?"":"s"}`:"block.inserted"===l?`${i} inserted ${o||1} block${1===(o||1)?"":"s"}`:"block.replaced"===l||"file.rawWritten"===l?`${i} edited`:"block.deleted"===l?`${i} deleted ${o||1} block${1===(o||1)?"":"s"}`:"suggestion.added"===l?`${i} suggested a change`:"suggestion.accepted"===l?`${i} accepted a suggestion`:"suggestion.rejected"===l?`${i} rejected a suggestion`:"comment.added"===l?`${i} commented`:"comment.replied"===l?`${i} replied`:"comment.resolved"===l?`${i} resolved a comment`:"comment.reopened"===l?`${i} reopened a comment`:"file.externallyEdited"===l?`${i} changed file externally`:`${i} ${l.replace(/^\w+\./,"").replace(/([a-z])([A-Z])/g,"$1 $2")}`)}),(0,t.jsx)("p",{className:"truncate text-[10px] text-muted-foreground",children:a5(e.at)})]})]})});function a7({group:e,reviewCount:a}){let n=(0,a2.useEditorStore)(e=>e.loadPage),s=e.events[0];return(0,t.jsxs)("section",{className:"space-y-1.5 rounded-md border border-border/70 bg-background/50 p-2",children:[(0,t.jsxs)("div",{className:"flex items-start justify-between gap-2",children:[(0,t.jsxs)("button",{type:"button",onClick:()=>void n(e.path),className:"min-w-0 text-left",title:e.path,children:[(0,t.jsx)("p",{className:"truncate text-xs font-medium text-foreground/90",children:e.filename}),(0,t.jsx)("p",{className:"truncate text-[10px] text-muted-foreground",children:e.path})]}),(0,t.jsxs)("div",{className:"flex shrink-0 items-center gap-1.5",children:[a>0&&(0,t.jsxs)("button",{type:"button",onClick:()=>void n(e.path),className:"inline-flex items-center rounded-full border border-amber-500/40 bg-amber-500/10 px-2 py-0.5 text-[10px] font-medium text-amber-700 hover:bg-amber-500/15",title:"Open file for review",children:["review ",a]}),(0,t.jsx)("span",{className:"text-[10px] text-muted-foreground",children:a5(s.at)})]})]}),(0,t.jsx)("div",{className:"space-y-0.5",children:e.events.map(e=>(0,t.jsx)(a4,{event:e},`${e.path}-${e.id}`))})]})}function a9({activity:e}){let a=(0,z.useMemo)(()=>(function(e){let t=new Map;for(let a of e){let e=t.get(a.path)??[];e.push(a),t.set(a.path,e)}return Array.from(t.entries()).map(([e,t])=>({path:e,filename:e.split("/").pop()??e,latestAt:t[0]?.at??"",events:t})).sort((e,t)=>e.latestAt<t.latestAt?1:-1)})(e),[e]),[n,s]=(0,z.useState)({});return((0,z.useEffect)(()=>{let e=!1,t=Array.from(new Set(a.map(e=>e.path)));return 0===t.length?(s({}),()=>{e=!0}):((async()=>{let a=await Promise.all(t.map(async e=>[e,await a3(e)]));e||s(Object.fromEntries(a.filter(([,e])=>e>0)))})(),()=>{e=!0})},[a]),0===a.length)?(0,t.jsx)("p",{className:"py-2 text-xs text-muted-foreground/60",children:"No events recorded"}):(0,t.jsx)("div",{className:"space-y-2",children:a.map(e=>(0,t.jsx)(a7,{group:e,reviewCount:n[e.path]??0},e.path))})}let a6="npx skills add anh-chu/wiki-viewer/agents/wiki-viewer-skill";function a8(e){let[t,a]=(0,z.useState)(!1);return{copied:t,copy:(0,z.useCallback)(async()=>{await navigator.clipboard.writeText(e()),a(!0),setTimeout(()=>a(!1),1500)},[e])}}function ne({currentPath:e}){let a=(0,aG.useAIPanelStore)(e=>e.isOpen),n=(0,aG.useAIPanelStore)(e=>e.close),i=(0,aG.useAIPanelStore)(e=>e.activity),l=(0,aG.useAIPanelStore)(e=>e.connections),c=(0,aG.useAIPanelStore)(e=>e.loadActivity),{copied:d,copy:u}=function(e){let[t,a]=(0,z.useState)(!1);return{copied:t,copy:(0,z.useCallback)(async()=>{let t=window.location.origin,n=`# 1. Register
|
|
4
|
+
REG=$(curl -s -X POST -H 'Content-Type: application/json' \\
|
|
5
|
+
-d '{"id":"ai:claude","displayName":"Claude"}' \\
|
|
6
|
+
${t}/api/agent/register)
|
|
7
|
+
REG_ID=$(echo $REG | jq -r .registrationId)
|
|
8
|
+
|
|
9
|
+
# 2. Approve in AI Panel, then poll:
|
|
10
|
+
curl -s ${t}/api/agent/register/$REG_ID
|
|
11
|
+
# → {"status":"approved","token":"..."}
|
|
12
|
+
TOKEN=<paste token here>
|
|
13
|
+
|
|
14
|
+
# 3. Read snapshot
|
|
15
|
+
curl -s -H "Authorization: Bearer $TOKEN" \\
|
|
16
|
+
-H "X-Agent-Id: ai:claude" \\
|
|
17
|
+
${t}/api/agent/files/${e??"<path/to/file.md>"}`;await navigator.clipboard.writeText(n),a(!0),setTimeout(()=>a(!1),1500)},[e])}}(e??null),[m,p]=(0,z.useState)(""),h=(0,z.useRef)(null),x=window.location.origin,f=(0,z.useCallback)(()=>a6,[]),g=(0,z.useCallback)(()=>m.replace(/\$WIKI_URL/g,x),[m,x]),b=(0,z.useCallback)(()=>`npx wiki-viewer-mcp register --url ${x} --id ai:myagent --name "My Agent"`,[x]),w=(0,z.useCallback)(()=>JSON.stringify({servers:{"wiki-viewer":{command:"npx",args:["wiki-viewer-mcp"],env:{WIKI_VIEWER_URL:x,WIKI_VIEWER_TOKEN:"<token from register>",WIKI_VIEWER_AGENT_ID:"ai:myagent"}}}},null,2),[x]),y=a8(f),v=a8(g),N=a8(b),k=a8(w);return((0,z.useEffect)(()=>{if(a)return document.addEventListener("keydown",e),()=>document.removeEventListener("keydown",e);function e(e){"Escape"===e.key&&n()}},[a,n]),(0,z.useEffect)(()=>{a&&h.current?.focus()},[a]),(0,z.useEffect)(()=>{if(!a)return;c();let e=setInterval(()=>void c(),1e4);return()=>clearInterval(e)},[a,c]),(0,z.useEffect)(()=>{a&&fetch("/api/agents/install").then(e=>e.json()).then(e=>{e.bootstrapPrompt&&p(e.bootstrapPrompt)}).catch(()=>void 0)},[a]),a)?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("div",{className:"fixed inset-0 z-40 bg-overlay backdrop-blur-[1px]",onClick:n,"aria-hidden":!0}),(0,t.jsxs)("aside",{ref:h,tabIndex:-1,role:"dialog","aria-modal":"true","aria-label":"AI Agent Panel",className:"fixed right-0 top-0 bottom-0 z-50 flex w-[90vw] max-w-sm md:w-80 flex-col border-l border-border bg-background shadow-xl outline-none",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between border-b border-border px-4 py-3 shrink-0",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)(s,{className:"h-4 w-4 text-muted-foreground"}),(0,t.jsx)("span",{className:"text-sm font-semibold",children:"AI Agent"})]}),(0,t.jsx)(U.Button,{size:"sm",variant:"ghost",className:"h-7 w-7 p-0",onClick:n,title:"Close panel (Esc)",children:(0,t.jsx)(B.X,{className:"h-3.5 w-3.5"})})]}),(0,t.jsxs)("div",{className:"flex-1 overflow-y-auto space-y-5 px-4 py-4",children:[(0,t.jsxs)("section",{className:"rounded-md border border-border bg-muted/30 p-3",children:[(0,t.jsx)("p",{className:"text-sm font-medium text-foreground",children:"Work with this wiki using AI"}),(0,t.jsxs)("p",{className:"mt-1 text-xs leading-relaxed text-muted-foreground",children:["Connect Claude, Cursor, ChatGPT, and more. Pick by what you want — each option gives a copy-paste setup. You approve every assistant in ",(0,t.jsx)("span",{className:"font-medium text-foreground/80",children:"Agents"})," below before it gets access."]})]}),(0,t.jsxs)("section",{className:"space-y-3",children:[(0,t.jsxs)("div",{className:"rounded-md border border-border bg-muted/40 p-3 space-y-1.5",children:[(0,t.jsx)("p",{className:"text-xs font-semibold text-foreground",children:"Co-write docs with you"}),(0,t.jsx)("p",{className:"text-[10px] text-muted-foreground/70",children:"Edits arrive as suggestions with comments you accept or revert. No MCP needed."}),(0,t.jsx)(U.Button,{size:"sm",variant:"outline",className:"h-7 w-full text-xs gap-1.5",onClick:()=>void v.copy(),disabled:!m,children:v.copied?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(r.Check,{className:"h-3.5 w-3.5 text-green-500"})," Copied!"]}):(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(o.Copy,{className:"h-3.5 w-3.5"})," Paste into any chatbot"]})}),(0,t.jsxs)("p",{className:"text-[10px] text-muted-foreground/50 pt-1",children:["Or install once so it sticks"," ",(0,t.jsx)("span",{className:"text-muted-foreground/40",children:"· Claude, OpenCode"}),":"]}),(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)("code",{className:"flex-1 text-[10px] font-mono text-foreground/80 truncate bg-muted rounded px-1 py-0.5",children:a6}),(0,t.jsx)(U.Button,{size:"sm",variant:"ghost",className:"h-6 w-6 p-0 shrink-0",title:"Copy this command",onClick:()=>void y.copy(),children:y.copied?(0,t.jsx)(r.Check,{className:"h-3.5 w-3.5 text-green-500"}):(0,t.jsx)(o.Copy,{className:"h-3.5 w-3.5"})})]})]}),(0,t.jsxs)("div",{className:"rounded-md border border-border bg-muted/40 p-3 space-y-1.5",children:[(0,t.jsxs)("p",{className:"text-xs font-semibold text-foreground",children:["Edit files directly"," ",(0,t.jsx)("span",{className:"font-normal text-muted-foreground/60",children:"· Claude Code, Cursor, Codex"})]}),(0,t.jsx)("p",{className:"text-[10px] text-muted-foreground/70",children:"Native read / search / edit tools over MCP. Run to request access:"}),(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)("code",{className:"flex-1 text-[10px] font-mono text-foreground/80 truncate bg-muted rounded px-1 py-0.5",children:b()}),(0,t.jsx)(U.Button,{size:"sm",variant:"ghost",className:"h-6 w-6 p-0 shrink-0",title:"Copy this command",onClick:()=>void N.copy(),children:N.copied?(0,t.jsx)(r.Check,{className:"h-3.5 w-3.5 text-green-500"}):(0,t.jsx)(o.Copy,{className:"h-3.5 w-3.5"})})]}),(0,t.jsxs)("p",{className:"text-[10px] text-muted-foreground/50",children:["Approve in ",(0,t.jsx)("span",{className:"font-medium text-foreground/70",children:"Agents"}),", then add to your tool:"]}),(0,t.jsx)(U.Button,{size:"sm",variant:"outline",className:"h-7 w-full text-xs gap-1.5",onClick:()=>void k.copy(),children:k.copied?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(r.Check,{className:"h-3.5 w-3.5 text-green-500"})," Copied!"]}):(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(o.Copy,{className:"h-3.5 w-3.5"})," Copy config (mcp.json)"]})})]}),(0,t.jsxs)("div",{className:"flex flex-wrap items-center gap-x-3 gap-y-1",children:[(0,t.jsx)("span",{className:"text-[10px] text-muted-foreground/50",children:"For developers:"}),(0,t.jsxs)("button",{type:"button",onClick:()=>void u(),className:"inline-flex items-center gap-1 text-[10px] text-primary hover:underline",children:[d?(0,t.jsx)(r.Check,{className:"h-3 w-3 text-green-500"}):(0,t.jsx)(o.Copy,{className:"h-3 w-3"})," curl example"]}),(0,t.jsxs)("a",{href:"/api/agents/skill",target:"_blank",rel:"noreferrer",className:"inline-flex items-center gap-1 text-[10px] text-primary hover:underline",children:[(0,t.jsx)(et.ExternalLink,{className:"h-3 w-3"})," skill"]}),(0,t.jsxs)("a",{href:"/api/agents/install",target:"_blank",rel:"noreferrer",className:"inline-flex items-center gap-1 text-[10px] text-primary hover:underline",children:[(0,t.jsx)(et.ExternalLink,{className:"h-3 w-3"})," install JSON"]})]})]}),(0,t.jsx)(a1,{}),(0,t.jsxs)("section",{className:"space-y-2",children:[(0,t.jsxs)("h3",{className:"text-xs font-semibold uppercase tracking-widest text-muted-foreground",children:["Active Connections"," ",(0,t.jsx)("span",{className:"normal-case font-normal text-muted-foreground/50",children:"(last 5 min)"})]}),(0,t.jsx)("div",{className:"rounded-md border border-border bg-muted/40 p-3",children:0===l.length?(0,t.jsxs)("p",{className:"text-xs text-muted-foreground/60 flex items-center gap-1.5",children:[(0,t.jsx)(aW,{className:"h-3.5 w-3.5"}),"No recent activity"]}):(0,t.jsx)("ul",{className:"space-y-1.5",children:l.map(e=>(0,t.jsxs)("li",{className:"flex items-center justify-between text-xs",children:[(0,t.jsx)("span",{className:"font-mono text-foreground/80 truncate",children:e.by}),(0,t.jsxs)("span",{className:"text-muted-foreground shrink-0",children:[e.opCount," op",1!==e.opCount?"s":""]})]},e.by))})})]}),(0,t.jsxs)("section",{className:"space-y-2",children:[(0,t.jsx)("h3",{className:"text-xs font-semibold uppercase tracking-widest text-muted-foreground",children:"Recent Activity"}),(0,t.jsx)("div",{className:"rounded-md border border-border bg-muted/40 px-3 py-2 max-h-72 overflow-y-auto",children:(0,t.jsx)(a9,{activity:i})})]}),(0,t.jsx)("section",{children:(0,t.jsx)("a",{href:"/docs/agent-collab-plan.md",target:"_blank",rel:"noreferrer",className:"text-xs text-primary underline hover:no-underline",children:"Agent collaboration docs →"})})]})]})]}):null}var nt=e.i(580330),na=e.i(409082),nn=e.i(877031),ns=e.i(847463),nr=e.i(917356),ni=/[\\\/_+.#"@\[\(\{&]/,nl=/[\\\/_+.#"@\[\(\{&]/g,no=/[\s-]/,nc=/[\s-]/g;function nd(e){return e.toLowerCase().replace(nc," ")}var nu=e.i(750110),nm=e.i(433616),np='[cmdk-group=""]',nh='[cmdk-group-items=""]',nx='[cmdk-item=""]',nf=`${nx}:not([aria-disabled="true"])`,ng="cmdk-item-select",nb="data-value",nw=(e,t,a)=>{var n;return n=e,function e(t,a,n,s,r,i,l){if(i===a.length)return r===t.length?1:.99;var o=`${r},${i}`;if(void 0!==l[o])return l[o];for(var c,d,u,m,p=s.charAt(i),h=n.indexOf(p,r),x=0;h>=0;)(c=e(t,a,n,s,h+1,i+1,l))>x&&(h===r?c*=1:ni.test(t.charAt(h-1))?(c*=.8,(u=t.slice(r,h-1).match(nl))&&r>0&&(c*=Math.pow(.999,u.length))):no.test(t.charAt(h-1))?(c*=.9,(m=t.slice(r,h-1).match(nc))&&r>0&&(c*=Math.pow(.999,m.length))):(c*=.17,r>0&&(c*=Math.pow(.999,h-r))),t.charAt(h)!==a.charAt(i)&&(c*=.9999)),(c<.1&&n.charAt(h-1)===s.charAt(i+1)||s.charAt(i+1)===s.charAt(i)&&n.charAt(h-1)!==s.charAt(i))&&.1*(d=e(t,a,n,s,h+1,i+2,l))>c&&(c=.1*d),c>x&&(x=c),h=n.indexOf(p,h+1);return l[o]=x,x}(n=a&&a.length>0?`${n+" "+a.join(" ")}`:n,t,nd(n),nd(t),0,0,{})},ny=z.createContext(void 0),nv=z.createContext(void 0),nN=z.createContext(void 0),nk=z.forwardRef((e,t)=>{let a=nT(()=>{var t,a;return{search:"",value:null!=(a=null!=(t=e.value)?t:e.defaultValue)?a:"",selectedItemId:void 0,filtered:{count:0,items:new Map,groups:new Set}}}),n=nT(()=>new Set),s=nT(()=>new Map),r=nT(()=>new Map),i=nT(()=>new Set),l=nD(e),{label:o,children:c,value:d,onValueChange:u,filter:m,shouldFilter:p,loop:h,disablePointerSelection:x=!1,vimBindings:f=!0,...g}=e,b=(0,nm.useId)(),w=(0,nm.useId)(),y=(0,nm.useId)(),v=z.useRef(null),N=nF();nO(()=>{if(void 0!==d){let e=d.trim();a.current.value=e,k.emit()}},[d]),nO(()=>{N(6,M)},[]);let k=z.useMemo(()=>({subscribe:e=>(i.current.add(e),()=>i.current.delete(e)),snapshot:()=>a.current,setState:(e,t,n)=>{var s,r,i,o;if(!Object.is(a.current[e],t)){if(a.current[e]=t,"search"===e)S(),C(),N(1,E);else if("value"===e){if(document.activeElement.hasAttribute("cmdk-input")||document.activeElement.hasAttribute("cmdk-root")){let e=document.getElementById(y);e?e.focus():null==(s=document.getElementById(b))||s.focus()}if(N(7,()=>{var e;a.current.selectedItemId=null==(e=A())?void 0:e.id,k.emit()}),n||N(5,M),(null==(r=l.current)?void 0:r.value)!==void 0){null==(o=(i=l.current).onValueChange)||o.call(i,null!=t?t:"");return}}k.emit()}},emit:()=>{i.current.forEach(e=>e())}}),[]),j=z.useMemo(()=>({value:(e,t,n)=>{var s;t!==(null==(s=r.current.get(e))?void 0:s.value)&&(r.current.set(e,{value:t,keywords:n}),a.current.filtered.items.set(e,_(t,n)),N(2,()=>{C(),k.emit()}))},item:(e,t)=>(n.current.add(e),t&&(s.current.has(t)?s.current.get(t).add(e):s.current.set(t,new Set([e]))),N(3,()=>{S(),C(),a.current.value||E(),k.emit()}),()=>{r.current.delete(e),n.current.delete(e),a.current.filtered.items.delete(e);let t=A();N(4,()=>{S(),(null==t?void 0:t.getAttribute("id"))===e&&E(),k.emit()})}),group:e=>(s.current.has(e)||s.current.set(e,new Set),()=>{r.current.delete(e),s.current.delete(e)}),filter:()=>l.current.shouldFilter,label:o||e["aria-label"],getDisablePointerSelection:()=>l.current.disablePointerSelection,listId:b,inputId:y,labelId:w,listInnerRef:v}),[]);function _(e,t){var n,s;let r=null!=(s=null==(n=l.current)?void 0:n.filter)?s:nw;return e?r(e,a.current.search,t):0}function C(){if(!a.current.search||!1===l.current.shouldFilter)return;let e=a.current.filtered.items,t=[];a.current.filtered.groups.forEach(a=>{let n=s.current.get(a),r=0;n.forEach(t=>{r=Math.max(e.get(t),r)}),t.push([a,r])});let n=v.current;D().sort((t,a)=>{var n,s;let r=t.getAttribute("id"),i=a.getAttribute("id");return(null!=(n=e.get(i))?n:0)-(null!=(s=e.get(r))?s:0)}).forEach(e=>{let t=e.closest(nh);t?t.appendChild(e.parentElement===t?e:e.closest(`${nh} > *`)):n.appendChild(e.parentElement===n?e:e.closest(`${nh} > *`))}),t.sort((e,t)=>t[1]-e[1]).forEach(e=>{var t;let a=null==(t=v.current)?void 0:t.querySelector(`${np}[${nb}="${encodeURIComponent(e[0])}"]`);null==a||a.parentElement.appendChild(a)})}function E(){let e=D().find(e=>"true"!==e.getAttribute("aria-disabled")),t=null==e?void 0:e.getAttribute(nb);k.setState("value",t||void 0)}function S(){var e,t,i,o;if(!a.current.search||!1===l.current.shouldFilter){a.current.filtered.count=n.current.size;return}a.current.filtered.groups=new Set;let c=0;for(let s of n.current){let n=_(null!=(t=null==(e=r.current.get(s))?void 0:e.value)?t:"",null!=(o=null==(i=r.current.get(s))?void 0:i.keywords)?o:[]);a.current.filtered.items.set(s,n),n>0&&c++}for(let[e,t]of s.current)for(let n of t)if(a.current.filtered.items.get(n)>0){a.current.filtered.groups.add(e);break}a.current.filtered.count=c}function M(){var e,t,a;let n=A();n&&((null==(e=n.parentElement)?void 0:e.firstChild)===n&&(null==(a=null==(t=n.closest(np))?void 0:t.querySelector('[cmdk-group-heading=""]'))||a.scrollIntoView({block:"nearest"})),n.scrollIntoView({block:"nearest"}))}function A(){var e;return null==(e=v.current)?void 0:e.querySelector(`${nx}[aria-selected="true"]`)}function D(){var e;return Array.from((null==(e=v.current)?void 0:e.querySelectorAll(nf))||[])}function O(e){let t=D()[e];t&&k.setState("value",t.getAttribute(nb))}function T(e){var t;let a=A(),n=D(),s=n.findIndex(e=>e===a),r=n[s+e];null!=(t=l.current)&&t.loop&&(r=s+e<0?n[n.length-1]:s+e===n.length?n[0]:n[s+e]),r&&k.setState("value",r.getAttribute(nb))}function I(e){let t=A(),a=null==t?void 0:t.closest(np),n;for(;a&&!n;)n=null==(a=e>0?function(e,t){let a=e.nextElementSibling;for(;a;){if(a.matches(t))return a;a=a.nextElementSibling}}(a,np):function(e,t){let a=e.previousElementSibling;for(;a;){if(a.matches(t))return a;a=a.previousElementSibling}}(a,np))?void 0:a.querySelector(nf);n?k.setState("value",n.getAttribute(nb)):T(e)}let R=()=>O(D().length-1),F=e=>{e.preventDefault(),e.metaKey?R():e.altKey?I(1):T(1)},L=e=>{e.preventDefault(),e.metaKey?O(0):e.altKey?I(-1):T(-1)};return z.createElement(nu.Primitive.div,{ref:t,tabIndex:-1,...g,"cmdk-root":"",onKeyDown:e=>{var t;null==(t=g.onKeyDown)||t.call(g,e);let a=e.nativeEvent.isComposing||229===e.keyCode;if(!(e.defaultPrevented||a))switch(e.key){case"n":case"j":f&&e.ctrlKey&&F(e);break;case"ArrowDown":F(e);break;case"p":case"k":f&&e.ctrlKey&&L(e);break;case"ArrowUp":L(e);break;case"Home":e.preventDefault(),O(0);break;case"End":e.preventDefault(),R();break;case"Enter":{e.preventDefault();let t=A();if(t){let e=new Event(ng);t.dispatchEvent(e)}}}}},z.createElement("label",{"cmdk-label":"",htmlFor:j.inputId,id:j.labelId,style:nP},o),nL(e,e=>z.createElement(nv.Provider,{value:k},z.createElement(ny.Provider,{value:j},e))))}),nj=z.forwardRef((e,t)=>{var a,n;let s=(0,nm.useId)(),r=z.useRef(null),i=z.useContext(nN),l=z.useContext(ny),o=nD(e),c=null!=(n=null==(a=o.current)?void 0:a.forceMount)?n:null==i?void 0:i.forceMount;nO(()=>{if(!c)return l.item(s,null==i?void 0:i.id)},[c]);let d=nR(s,r,[e.value,e.children,r],e.keywords),u=z.useContext(nv),m=nI(e=>e.value&&e.value===d.current),p=nI(e=>!!c||!1===l.filter()||!e.search||e.filtered.items.get(s)>0);function h(){var e,t;x(),null==(t=(e=o.current).onSelect)||t.call(e,d.current)}function x(){u.setState("value",d.current,!0)}if(z.useEffect(()=>{let t=r.current;if(!(!t||e.disabled))return t.addEventListener(ng,h),()=>t.removeEventListener(ng,h)},[p,e.onSelect,e.disabled]),!p)return null;let{disabled:f,value:g,onSelect:b,forceMount:w,keywords:y,...v}=e;return z.createElement(nu.Primitive.div,{ref:(0,t3.composeRefs)(r,t),...v,id:s,"cmdk-item":"",role:"option","aria-disabled":!!f,"aria-selected":!!m,"data-disabled":!!f,"data-selected":!!m,onPointerMove:f||l.getDisablePointerSelection()?void 0:x,onClick:f?void 0:h},e.children)}),n_=z.forwardRef((e,t)=>{let{heading:a,children:n,forceMount:s,...r}=e,i=(0,nm.useId)(),l=z.useRef(null),o=z.useRef(null),c=(0,nm.useId)(),d=z.useContext(ny),u=nI(e=>!!s||!1===d.filter()||!e.search||e.filtered.groups.has(i));nO(()=>d.group(i),[]),nR(i,l,[e.value,e.heading,o]);let m=z.useMemo(()=>({id:i,forceMount:s}),[s]);return z.createElement(nu.Primitive.div,{ref:(0,t3.composeRefs)(l,t),...r,"cmdk-group":"",role:"presentation",hidden:!u||void 0},a&&z.createElement("div",{ref:o,"cmdk-group-heading":"","aria-hidden":!0,id:c},a),nL(e,e=>z.createElement("div",{"cmdk-group-items":"",role:"group","aria-labelledby":a?c:void 0},z.createElement(nN.Provider,{value:m},e))))}),nC=z.forwardRef((e,t)=>{let{alwaysRender:a,...n}=e,s=z.useRef(null),r=nI(e=>!e.search);return a||r?z.createElement(nu.Primitive.div,{ref:(0,t3.composeRefs)(s,t),...n,"cmdk-separator":"",role:"separator"}):null}),nE=z.forwardRef((e,t)=>{let{onValueChange:a,...n}=e,s=null!=e.value,r=z.useContext(nv),i=nI(e=>e.search),l=nI(e=>e.selectedItemId),o=z.useContext(ny);return z.useEffect(()=>{null!=e.value&&r.setState("search",e.value)},[e.value]),z.createElement(nu.Primitive.input,{ref:t,...n,"cmdk-input":"",autoComplete:"off",autoCorrect:"off",spellCheck:!1,"aria-autocomplete":"list",role:"combobox","aria-expanded":!0,"aria-controls":o.listId,"aria-labelledby":o.labelId,"aria-activedescendant":l,id:o.inputId,type:"text",value:s?e.value:i,onChange:e=>{s||r.setState("search",e.target.value),null==a||a(e.target.value)}})}),nS=z.forwardRef((e,t)=>{let{children:a,label:n="Suggestions",...s}=e,r=z.useRef(null),i=z.useRef(null),l=nI(e=>e.selectedItemId),o=z.useContext(ny);return z.useEffect(()=>{if(i.current&&r.current){let e=i.current,t=r.current,a,n=new ResizeObserver(()=>{a=requestAnimationFrame(()=>{let a=e.offsetHeight;t.style.setProperty("--cmdk-list-height",a.toFixed(1)+"px")})});return n.observe(e),()=>{cancelAnimationFrame(a),n.unobserve(e)}}},[]),z.createElement(nu.Primitive.div,{ref:(0,t3.composeRefs)(r,t),...s,"cmdk-list":"",role:"listbox",tabIndex:-1,"aria-activedescendant":l,"aria-label":n,id:o.listId},nL(e,e=>z.createElement("div",{ref:(0,t3.composeRefs)(i,o.listInnerRef),"cmdk-list-sizer":""},e)))}),nM=z.forwardRef((e,t)=>{let{open:a,onOpenChange:n,overlayClassName:s,contentClassName:r,container:i,...l}=e;return z.createElement(tL.Root,{open:a,onOpenChange:n},z.createElement(tL.Portal,{container:i},z.createElement(tL.Overlay,{"cmdk-overlay":"",className:s}),z.createElement(tL.Content,{"aria-label":e.label,"cmdk-dialog":"",className:r},z.createElement(nk,{ref:t,...l}))))}),nA=Object.assign(nk,{List:nS,Item:nj,Input:nE,Group:n_,Separator:nC,Dialog:nM,Empty:z.forwardRef((e,t)=>nI(e=>0===e.filtered.count)?z.createElement(nu.Primitive.div,{ref:t,...e,"cmdk-empty":"",role:"presentation"}):null),Loading:z.forwardRef((e,t)=>{let{progress:a,children:n,label:s="Loading...",...r}=e;return z.createElement(nu.Primitive.div,{ref:t,...r,"cmdk-loading":"",role:"progressbar","aria-valuenow":a,"aria-valuemin":0,"aria-valuemax":100,"aria-label":s},nL(e,e=>z.createElement("div",{"aria-hidden":!0},e)))})});function nD(e){let t=z.useRef(e);return nO(()=>{t.current=e}),t}var nO="u"<typeof window?z.useEffect:z.useLayoutEffect;function nT(e){let t=z.useRef();return void 0===t.current&&(t.current=e()),t}function nI(e){let t=z.useContext(nv),a=()=>e(t.snapshot());return z.useSyncExternalStore(t.subscribe,a,a)}function nR(e,t,a,n=[]){let s=z.useRef(),r=z.useContext(ny);return nO(()=>{var i;let l=(()=>{var e;for(let t of a){if("string"==typeof t)return t.trim();if("object"==typeof t&&"current"in t)return t.current?null==(e=t.current.textContent)?void 0:e.trim():s.current}})(),o=n.map(e=>e.trim());r.value(e,l,o),null==(i=t.current)||i.setAttribute(nb,l),s.current=l}),s}var nF=()=>{let[e,t]=z.useState(),a=nT(()=>new Map);return nO(()=>{a.current.forEach(e=>e()),a.current=new Map},[e]),(e,n)=>{a.current.set(e,n),t({})}};function nL({asChild:e,children:t},a){let n;return e&&z.isValidElement(t)?z.cloneElement("function"==typeof(n=t.type)?n(t.props):"render"in n?n.render(t.props):t,{ref:t.ref},a(t.props.children)):a(t)}var nP={position:"absolute",width:"1px",height:"1px",padding:"0",margin:"-1px",overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",borderWidth:"0"};let nB=(0,n.default)("search",[["path",{d:"m21 21-4.34-4.34",key:"14j7rj"}],["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}]]),nz=z.forwardRef(({className:e,...a},n)=>(0,t.jsx)(nA,{ref:n,className:(0,V.cn)("flex h-full w-full flex-col overflow-hidden rounded-sm bg-popover text-popover-foreground",e),...a}));function n$({children:e,shouldFilter:a,...n}){return(0,t.jsx)(q.Dialog,{...n,children:(0,t.jsxs)(q.DialogContent,{className:"overflow-hidden p-0 shadow-golden max-w-lg",children:[(0,t.jsx)(q.DialogTitle,{className:"sr-only",children:"Search"}),(0,t.jsx)(nz,{shouldFilter:a,className:"[&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-normal [&_[cmdk-group-heading]]:text-muted-foreground [&_[cmdk-group]]:px-2 [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5",children:e})]})})}nz.displayName=nA.displayName;let nU=z.forwardRef(({className:e,...a},n)=>(0,t.jsxs)("div",{className:"flex items-center border-b px-3","cmdk-input-wrapper":"",children:[(0,t.jsx)(nB,{className:"mr-2 h-4 w-4 shrink-0 opacity-50"}),(0,t.jsx)(nA.Input,{ref:n,className:(0,V.cn)("flex h-11 w-full rounded-sm bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50",e),...a})]}));nU.displayName=nA.Input.displayName;let nq=z.forwardRef(({className:e,...a},n)=>(0,t.jsx)(nA.List,{ref:n,className:(0,V.cn)("max-h-[300px] overflow-y-auto overflow-x-hidden",e),...a}));nq.displayName=nA.List.displayName;let nK=z.forwardRef((e,a)=>(0,t.jsx)(nA.Empty,{ref:a,className:"py-6 text-center text-sm text-muted-foreground",...e}));nK.displayName=nA.Empty.displayName;let nH=z.forwardRef(({className:e,...a},n)=>(0,t.jsx)(nA.Group,{ref:n,className:(0,V.cn)("overflow-hidden p-1 text-foreground [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-normal [&_[cmdk-group-heading]]:text-muted-foreground",e),...a}));nH.displayName=nA.Group.displayName;let nW=z.forwardRef(({className:e,...a},n)=>(0,t.jsx)(nA.Separator,{ref:n,className:(0,V.cn)("-mx-1 h-px bg-border",e),...a}));nW.displayName=nA.Separator.displayName;let nG=z.forwardRef(({className:e,...a},n)=>(0,t.jsx)(nA.Item,{ref:n,className:(0,V.cn)("relative flex cursor-default gap-2 select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",e),...a}));nG.displayName=nA.Item.displayName;let nV=null,nZ=null,nX=(0,tW.create)(e=>({query:"",results:[],loading:!1,truncated:!1,open:!1,setQuery:t=>e({query:t}),setOpen:t=>e({open:t}),clear:()=>{nZ&&clearTimeout(nZ),nV?.abort(),e({query:"",results:[],loading:!1,truncated:!1})},search:t=>(nZ&&clearTimeout(nZ),t.trim())?(e({loading:!0}),new Promise(a=>{nZ=setTimeout(()=>{nJ(e,t).finally(a)},150)})):(nV?.abort(),e({results:[],loading:!1,truncated:!1}),Promise.resolve())}));async function nJ(e,t){nV?.abort();let a=new AbortController;nV=a;try{let n=await (0,G.wsFetch)("/api/wiki/search",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({query:t,limit:30}),signal:a.signal});if(!n.ok)return void e({results:[],loading:!1,truncated:!1});let s=await n.json();if(a.signal.aborted)return;e({results:s.matches??[],truncated:!!s.truncated,loading:!1})}catch(t){"AbortError"!==t.name&&e({loading:!1})}}var nQ=e.i(395624);function nY({html:e}){let a=function(e){let t,a=[],n=/<mark>([\s\S]*?)<\/mark>/g,s=0;for(;null!==(t=n.exec(e));)t.index>s&&a.push({text:e.slice(s,t.index),mark:!1}),a.push({text:t[1]??"",mark:!0}),s=t.index+t[0].length;return s<e.length&&a.push({text:e.slice(s),mark:!1}),a}(e);return(0,t.jsx)(t.Fragment,{children:a.map((e,a)=>e.mark?(0,t.jsx)("mark",{className:"bg-yellow-200 dark:bg-yellow-700 rounded-[2px] px-[1px]",children:e.text},a):(0,t.jsx)("span",{children:e.text},a))})}function n0({onOpenFile:e,onToggleSidebar:a=()=>void 0,onNewFile:n=()=>void 0,onCopyPath:r=()=>void 0}){let i=nX(e=>e.open),l=nX(e=>e.setOpen),c=nX(e=>e.query),d=nX(e=>e.setQuery),m=nX(e=>e.results),p=nX(e=>e.loading),h=nX(e=>e.truncated),x=nX(e=>e.search),{resolvedTheme:f,setTheme:g}=(0,nr.useTheme)(),b=(0,aG.useAIPanelStore)(e=>e.toggle),w=(0,nQ.useViewWidthStore)(e=>e.width),y=(0,nQ.useViewWidthStore)(e=>e.cycle),v=c.trimStart(),N=""===v||v.startsWith(">"),k=N?"":c;function j(e){e(),l(!1),d("")}(0,z.useEffect)(()=>{function e(e){(e.metaKey||e.ctrlKey)&&"k"===e.key.toLowerCase()&&(e.preventDefault(),l(!i))}return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[i,l]),(0,z.useEffect)(()=>{if(!i||N)return;let e=setTimeout(()=>{x(k)},120);return()=>clearTimeout(e)},[k,N,i,x]);let _=(nQ.VIEW_WIDTH_ORDER.indexOf(w)+1)%nQ.VIEW_WIDTH_ORDER.length,C=nQ.VIEW_WIDTH_LABEL[nQ.VIEW_WIDTH_ORDER[_]];return(0,t.jsxs)(n$,{open:i,onOpenChange:e=>{l(e),e||d("")},shouldFilter:!1,children:[(0,t.jsx)(nU,{placeholder:"Search files… ( > for actions )",value:c,onValueChange:d}),(0,t.jsxs)(nq,{children:[N&&(0,t.jsxs)(nH,{heading:"Actions",children:[(0,t.jsxs)(nG,{value:"toggle-dark-mode",onSelect:()=>j(()=>g("dark"===f?"light":"dark")),children:["dark"===f?(0,t.jsx)(ns.Sun,{className:"mr-2 h-4 w-4"}):(0,t.jsx)(na.Moon,{className:"mr-2 h-4 w-4"}),"dark"===f?"Switch to light mode":"Switch to dark mode"]}),(0,t.jsxs)(nG,{value:"toggle-ai-panel",onSelect:()=>j(b),children:[(0,t.jsx)(s,{className:"mr-2 h-4 w-4"}),"Toggle AI panel"]}),(0,t.jsxs)(nG,{value:"toggle-sidebar",onSelect:()=>j(a),children:[(0,t.jsx)(nn.PanelLeft,{className:"mr-2 h-4 w-4"}),"Toggle sidebar"]}),(0,t.jsxs)(nG,{value:"new-file",onSelect:()=>j(n),children:[(0,t.jsx)(u.FilePlus,{className:"mr-2 h-4 w-4"}),"New file"]}),(0,t.jsxs)(nG,{value:"copy-path",onSelect:()=>j(r),children:[(0,t.jsx)(o.Copy,{className:"mr-2 h-4 w-4"}),"Copy current file path"]}),(0,t.jsxs)(nG,{value:"cycle-view-width",onSelect:()=>j(y),children:[(0,t.jsx)(nt.AlignCenter,{className:"mr-2 h-4 w-4"}),(0,t.jsxs)("span",{children:["Change view width"," ",(0,t.jsxs)("span",{className:"text-muted-foreground",children:["(",nQ.VIEW_WIDTH_LABEL[w]," → ",C,")"]})]})]})]}),!N&&(0,t.jsxs)(t.Fragment,{children:[p&&(0,t.jsx)("div",{className:"px-3 py-2 text-xs text-muted-foreground",children:"Searching…"}),!p&&""!==k.trim()&&0===m.length&&(0,t.jsx)(nK,{children:"No matches."}),m.length>0&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(nW,{}),(0,t.jsx)(nH,{heading:h?"Top results (refine query for more)":"Results",children:m.map(a=>(0,t.jsx)(nG,{value:a.path,onSelect:()=>{e(a.path),l(!1),d("")},children:(0,t.jsxs)("div",{className:"flex min-w-0 flex-col gap-0.5",children:[(0,t.jsx)("span",{className:"truncate font-mono text-xs",children:a.path}),a.snippet&&(0,t.jsx)("span",{className:"truncate text-xs text-muted-foreground",children:(0,t.jsx)(nY,{html:a.snippet})})]})},a.path))})]})]})]})]})}function n1({onOpenFile:e}){let a=nX(e=>e.query),n=nX(e=>e.setQuery),s=nX(e=>e.results),r=nX(e=>e.loading),i=nX(e=>e.search),l=nX(e=>e.clear),[o,c]=(0,z.useState)(0),d=(0,z.useRef)(null);function u(t){let a=s[t];a&&(e(a.path),l())}return(0,z.useEffect)(()=>{c(0)},[s]),(0,z.useEffect)(()=>{let e=d.current?.querySelector(`[data-idx="${o}"]`);e?.scrollIntoView({block:"nearest"})},[o]),(0,t.jsxs)("div",{className:"flex flex-col gap-1 px-2 py-1.5",children:[(0,t.jsxs)("div",{className:"relative",children:[(0,t.jsx)(nB,{className:"pointer-events-none absolute left-2 top-1/2 h-3.5 w-3.5 -translate-y-1/2 opacity-50"}),(0,t.jsx)("input",{type:"text",className:"w-full rounded-sm border bg-transparent py-1 pl-7 pr-2 text-xs outline-none focus:ring-1 focus:ring-ring",placeholder:"Search… (⌘K)",value:a,onChange:e=>{n(e.target.value),i(e.target.value)},onKeyDown:e=>{"Escape"===e.key?l():0!==s.length&&("ArrowDown"===e.key?(e.preventDefault(),c(e=>(e+1)%s.length)):"ArrowUp"===e.key?(e.preventDefault(),c(e=>(e-1+s.length)%s.length)):"Enter"===e.key&&(e.preventDefault(),u(o)))}})]}),""!==a.trim()&&(0,t.jsxs)("div",{ref:d,className:"max-h-64 overflow-y-auto rounded-sm border bg-popover",children:[r&&(0,t.jsx)("div",{className:"px-2 py-1 text-xs text-muted-foreground",children:"Searching…"}),!r&&0===s.length&&(0,t.jsx)("div",{className:"px-2 py-1 text-xs text-muted-foreground",children:"No matches"}),s.map((e,a)=>(0,t.jsxs)("button",{type:"button","data-idx":a,onClick:()=>u(a),onMouseEnter:()=>c(a),className:`block w-full px-2 py-1 text-left ${a===o?"bg-accent":"hover:bg-accent"}`,children:[(0,t.jsx)("div",{className:"truncate font-mono text-xs",children:e.path}),e.snippet&&(0,t.jsx)("div",{className:"truncate text-[10px] text-muted-foreground",children:(0,t.jsx)(nY,{html:e.snippet})})]},e.path))]})]})}let n2="wiki-sidebar-width";function n5(e){return Number.isNaN(e)?288:Math.min(600,Math.max(200,Math.round(e)))}let n3=(0,tW.create)(e=>({width:function(){let e=localStorage.getItem(n2);if(e){let t=Number.parseInt(e,10);if(!Number.isNaN(t))return n5(t)}return 288}(),setWidth:t=>{let a=n5(t);localStorage.setItem(n2,String(a)),e({width:a})}}));var n4=e.i(780569),n7=e.i(246542);let n9="wiki-show-hidden",n6=(0,tW.create)((e,t)=>({showHidden:"1"===localStorage.getItem(n9),toggle:()=>{let a=!t().showHidden;a?localStorage.setItem(n9,"1"):localStorage.removeItem(n9),e({showHidden:a})}}));function n8(e){let t=new Date(e).getTime();if(!Number.isFinite(t))return"";let a=Math.floor(Math.max(0,Date.now()-t)/1e3);if(a<60)return"just now";let n=Math.floor(a/60);if(n<60)return`${n}m ago`;let s=Math.floor(n/60);return s<24?`${s}h ago`:`${Math.floor(s/24)}d ago`}let se=new Set(["image","media","pdf","fallback","app","node-app","html"]);function st(e){return e.split(".").pop()?.toLowerCase()??""}function sa(e,t){if("node-app"===t)return"node-app";if("app"===t)return"app";if("dir"===t)return"fallback";let a=e.split("/").pop()??e;if(a.startsWith(".")&&-1===a.indexOf(".",1))return"source";let n=st(e);return n?["md","markdown"].includes(n)?"editor":"txt"===n?"text":["csv","tsv"].includes(n)?"csv":"pdf"===n?"pdf":["mmd","mermaid"].includes(n)?"mermaid":"ipynb"===n?"notebook":["png","jpg","jpeg","gif","webp","svg","avif","ico","bmp"].includes(n)?"image":["mp4","webm","mov","m4v","mp3","wav","ogg","m4a","aac"].includes(n)?"media":"docx"===n?"docx":["xlsx","xlsm"].includes(n)?"xlsx":"pptx"===n?"pptx":"html"===n?"html":(["py","js","ts","tsx","jsx","go","rs","java","c","cpp","h","sh","bash","zsh","rb","php","swift","kt","lua","sql","yaml","yml","toml","json","xml","css","scss"].includes(n),"source"):"source"}let sn=new Set(["txt","md","markdown","json","yaml","yml","toml","csv","tsv","xml","html","css","js","ts","tsx","jsx","sh","bash","zsh","rb","py","go","rs","java","c","cpp","h","php","swift","kt","lua","sql","scss","mmd","mermaid","ini","env","log","conf"]);function ss(e){let t=sa(e,"file");return"editor"===t||"text"===t||sn.has(st(e))}function sr(e){return["md","markdown"].includes(st(e))}function si(e){return"image"===sa(e,"file")}async function sl(e){let t=await (0,G.wsFetch)(`/api/wiki?dir=${encodeURIComponent(e)}`);return t.ok?(await t.json()).entries.map(t=>({name:t.name,path:e?`${e}/${t.name}`:t.name,type:t.type,size:t.size,modifiedAt:t.modifiedAt,expanded:!1,git:t.git})):[]}let so=new Map,sc=new Map;async function sd(e){let t=so.get(e);if(t)return so.delete(e),t;let a=sc.get(e);if(a){let t=await a;return so.delete(e),t}return null}function su(e,t,a){return e.map(e=>e.path===t?a(e):e.children?{...e,children:su(e.children,t,a)}:e)}let sm={contentVisibility:"auto",containIntrinsicSize:"auto 32px"},sp=(0,z.memo)(function({node:e,depth:a,ctx:n,isMobile:s,activeWorkspaceId:i,sidebarScrollRef:b,isActive:w,isDragOver:k,isPinned:_,isAgentActive:C,isPulling:E,branchOpen:S,branchPos:M,branches:A,branchLoading:D,checkingOut:T,onHoverEnter:I,onHoverLeave:B}){return(0,t.jsxs)(av,{children:[(0,t.jsx)(ak,{asChild:!0,children:(0,t.jsxs)("div",{role:"treeitem",tabIndex:0,draggable:!s,onKeyDown:t=>{if("Enter"===t.key||" "===t.key)t.preventDefault(),"dir"===e.type?n.toggleFolder(e):"app"===e.type||"node-app"===e.type?(n.openViewer(e),n.toggleFolder(e)):n.openViewer(e);else if("ArrowDown"===t.key){t.preventDefault();let e=b.current;if(!e)return;let a=Array.from(e.querySelectorAll('[role="treeitem"]')),n=a.indexOf(t.currentTarget);a[n+1]?.focus()}else if("ArrowUp"===t.key){t.preventDefault();let e=b.current;if(!e)return;let a=Array.from(e.querySelectorAll('[role="treeitem"]')),n=a.indexOf(t.currentTarget);a[n-1]?.focus()}else if("ArrowRight"===t.key){if(t.preventDefault(),"dir"===e.type||"app"===e.type||"node-app"===e.type)if(e.expanded){let e=b.current;if(!e)return;let a=Array.from(e.querySelectorAll('[role="treeitem"]')),n=a.indexOf(t.currentTarget);a[n+1]?.focus()}else n.toggleFolder(e)}else if("ArrowLeft"===t.key){if(t.preventDefault(),("dir"===e.type||"app"===e.type||"node-app"===e.type)&&e.expanded)n.toggleFolder(e);else if(a>0){let e=b.current;if(!e)return;let a=Array.from(e.querySelectorAll('[role="treeitem"]')),n=t.currentTarget,s=a.indexOf(n),r=Number.parseInt(n.style.paddingLeft??"0",10);for(let e=s-1;e>=0;e--)if(Number.parseInt(a[e].style.paddingLeft??"0",10)<r){a[e].focus();break}}}},onDragStart:t=>n.handleDragStart(t,e),onDragOver:t=>"dir"===e.type?n.handleDragOver(t,e.path,"dir"):t.preventDefault(),onDragLeave:()=>n.setDragOverPath(null),onDrop:t=>"dir"===e.type?n.handleDropOnFolder(t,e.path):t.preventDefault(),onMouseEnter:()=>I(e),onMouseLeave:B,className:(0,V.cn)("tree-row-reveal flex items-center gap-1.5 rounded-sm px-2 py-1 text-sm cursor-pointer group transition-colors select-none touch-target",w?"bg-accent-soft text-foreground font-medium":"hover:bg-muted",k&&"ring-2 ring-primary bg-primary-soft",e.name.startsWith(".")&&"opacity-40"),style:{paddingLeft:`${14*a+8}px`,...sm},onClick:()=>{"dir"===e.type?n.toggleFolder(e):("app"===e.type||"node-app"===e.type?(n.openViewer(e),n.toggleFolder(e)):n.openViewer(e),s&&n.setSidebarCollapsed(!0))},children:["dir"===e.type||"app"===e.type||"node-app"===e.type?e.loading?(0,t.jsx)(N.Loader2,{className:"h-3.5 w-3.5 shrink-0 animate-spin text-muted-foreground"}):(0,t.jsx)(l.ChevronRight,{className:"h-3.5 w-3.5 shrink-0 text-muted-foreground transition-transform duration-200 ease-out",style:{transform:e.expanded?"rotate(90deg)":"rotate(0deg)"}}):(0,t.jsx)("span",{className:"w-3.5 shrink-0"}),(0,t.jsx)("span",{className:"editorial-tree-typeicon",children:"dir"===e.type?e.expanded?(0,t.jsx)(h,{className:(0,V.cn)("h-4 w-4 shrink-0",!w&&"text-warning")}):(0,t.jsx)(p.Folder,{className:(0,V.cn)("h-4 w-4 shrink-0",!w&&"text-warning")}):"app"===e.type?(0,t.jsx)(g.Globe,{className:(0,V.cn)("h-4 w-4 shrink-0",!w&&"text-foreground/70")}):"node-app"===e.type?(0,t.jsx)(F,{className:(0,V.cn)("h-4 w-4 shrink-0",!w&&"text-emerald-500")}):"html"===sa(e.name,"file")?(0,t.jsx)(g.Globe,{className:(0,V.cn)("h-4 w-4 shrink-0",!w&&"text-foreground/60")}):si(e.name)?(0,t.jsx)(y.default,{className:(0,V.cn)("h-4 w-4 shrink-0",!w&&"text-sunshine-700")}):ss(e.name)?(0,t.jsx)(m.FileText,{className:(0,V.cn)("h-4 w-4 shrink-0",!w&&"text-foreground/70")}):(0,t.jsx)(d.File,{className:(0,V.cn)("h-4 w-4 shrink-0",!w&&"text-foreground/60")})}),(0,t.jsx)("span",{className:"min-w-0 flex-1 truncate",children:e.name}),e.git&&(0,t.jsxs)("span",{className:"relative flex shrink-0 items-center gap-0.5 rounded-sm bg-muted px-1 py-0.5 text-[10px] text-muted-foreground",children:[(0,t.jsxs)("button",{type:"button",className:"flex items-center gap-0.5 hover:text-foreground",title:"Switch branch",onClick:t=>{if(t.stopPropagation(),S){n.setBranchDropdownNode(null),n.setBranchDropdownPos(null);return}let a=t.currentTarget.getBoundingClientRect();n.setBranchDropdownPos({top:a.bottom+4,left:a.left}),n.setBranchDropdownNode(e.path),n.loadBranches(e.path)},children:[(0,t.jsx)(f,{className:"h-2.5 w-2.5"}),e.git.branch,e.git.dirty&&(0,t.jsx)("span",{className:"ml-0.5 text-warning",children:"*"})]}),E?(0,t.jsx)(N.Loader2,{className:"ml-0.5 h-2.5 w-2.5 animate-spin"}):(0,t.jsx)("button",{type:"button",onClick:t=>{t.stopPropagation();let a=e.path.includes("/")?e.path.substring(0,e.path.lastIndexOf("/")):"";n.handleGitPull(e.path,a)},className:"ml-0.5 text-muted-foreground hover:text-foreground",title:"Pull latest",children:(0,t.jsx)(O,{className:"h-2.5 w-2.5"})}),S&&M&&"u">typeof document&&(0,$.createPortal)((0,t.jsx)("div",{style:{position:"fixed",top:M.top,left:M.left},className:"z-[9999] min-w-[120px] rounded-md border bg-popover p-1 shadow-md",onKeyDown:e=>{"Escape"===e.key&&(n.setBranchDropdownNode(null),n.setBranchDropdownPos(null))},onClick:e=>e.stopPropagation(),children:D?(0,t.jsx)("div",{className:"flex justify-center py-2",children:(0,t.jsx)(N.Loader2,{className:"h-3.5 w-3.5 animate-spin text-muted-foreground"})}):0===A.length?(0,t.jsx)("p",{className:"px-2 py-1 text-[10px] text-muted-foreground",children:"No branches"}):A.map(a=>{let s=e.path.includes("/")?e.path.substring(0,e.path.lastIndexOf("/")):"";return(0,t.jsxs)("button",{type:"button",disabled:null!==T||a.current,className:(0,V.cn)("flex w-full items-center gap-1.5 rounded px-2 py-1 text-left text-[11px] hover:bg-muted",a.current&&"font-semibold text-foreground",!a.current&&"text-muted-foreground"),onClick:t=>{t.stopPropagation(),a.current||n.handleCheckout(e.path,a.name,s)},children:[a.current?(0,t.jsx)(r.Check,{className:"h-3 w-3 shrink-0"}):(0,t.jsx)("span",{className:"w-3 shrink-0"}),T===a.name?(0,t.jsx)(N.Loader2,{className:"h-3 w-3 animate-spin"}):a.name]},a.name)})}),document.body)]}),C&&(0,t.jsx)("span",{className:"ml-0.5 h-1.5 w-1.5 rounded-full bg-emerald-400 shrink-0 animate-pulse",title:"Agent recently active"}),(0,t.jsx)("div",{className:"hover-reveal flex max-w-0 shrink-0 items-center overflow-hidden opacity-0 transition-all duration-150 group-hover:max-w-7 group-hover:opacity-100 focus-within:max-w-7 focus-within:opacity-100",onClick:e=>e.stopPropagation(),onKeyDown:e=>e.stopPropagation(),children:(0,t.jsxs)(tE.DropdownMenu,{children:[(0,t.jsx)(tE.DropdownMenuTrigger,{asChild:!0,children:(0,t.jsx)(U.Button,{size:"sm",variant:"ghost",className:"h-6 w-6 p-0 text-muted-foreground hover:text-foreground",title:"File actions",children:(0,t.jsx)(j,{className:"h-3.5 w-3.5"})})}),(0,t.jsxs)(tE.DropdownMenuContent,{align:"end",className:"w-48",children:[(0,t.jsxs)(tE.DropdownMenuItem,{onClick:()=>n.copyPath(e.path),children:[(0,t.jsx)(o.Copy,{className:"mr-2 h-3.5 w-3.5"}),"Copy path"]}),sr(e.name)&&(0,t.jsxs)(tE.DropdownMenuItem,{onClick:()=>n.copyWikiLink(e.name),children:[(0,t.jsx)(m.FileText,{className:"mr-2 h-3.5 w-3.5"}),"Copy wiki link"]}),(0,t.jsxs)(tE.DropdownMenuItem,{onClick:()=>n.copyUrl(e.path),children:[(0,t.jsx)(v.Link,{className:"mr-2 h-3.5 w-3.5"}),"Copy URL"]}),"file"===e.type&&ss(e.name)&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(tE.DropdownMenuItem,{onClick:()=>n.copyRawContent(e.path),children:[(0,t.jsx)(m.FileText,{className:"mr-2 h-3.5 w-3.5"}),"Copy raw content"]}),(0,t.jsxs)(tE.DropdownMenuItem,{onClick:()=>n.copyFormattedContent(e.path,e.name),children:[(0,t.jsx)(m.FileText,{className:"mr-2 h-3.5 w-3.5"}),"Copy formatted content"]})]}),(0,t.jsx)(tE.DropdownMenuSeparator,{}),"dir"===e.type&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(tE.DropdownMenuItem,{onClick:async()=>{e.expanded||n.toggleFolder(e),n.setNewFileParent(e.path),n.setNewFileName(""),n.setFileCreateError(null)},children:[(0,t.jsx)(u.FilePlus,{className:"mr-2 h-3.5 w-3.5"}),"New file here"]}),(0,t.jsxs)(tE.DropdownMenuItem,{onClick:()=>n.triggerUpload(e.path),children:[(0,t.jsx)(P.Upload,{className:"mr-2 h-3.5 w-3.5"}),"Upload here"]}),(0,t.jsxs)(tE.DropdownMenuItem,{onClick:()=>{n.setNewFolderParent(e.path),n.setNewFolderName(""),n.setFolderError(null)},children:[(0,t.jsx)(x,{className:"mr-2 h-3.5 w-3.5"}),"New subfolder"]}),(0,t.jsx)(tE.DropdownMenuSeparator,{})]}),(0,t.jsxs)(tE.DropdownMenuItem,{onClick:()=>n.handleDownload(e),children:[(0,t.jsx)(c,{className:"mr-2 h-3.5 w-3.5"}),"file"===e.type?"Download":"Download as zip"]}),(0,t.jsxs)(tE.DropdownMenuItem,{onClick:()=>n.togglePin(e,i),children:[(0,t.jsx)(R,{className:(0,V.cn)("mr-2 h-3.5 w-3.5",_&&"fill-current text-amber-400")}),_?"Unpin":"Pin to top"]}),(0,t.jsx)(tE.DropdownMenuSeparator,{}),(0,t.jsxs)(tE.DropdownMenuItem,{className:"text-destructive focus:text-destructive",onClick:()=>{n.setDeletingPath(e.path),n.setDeletingIsDir("file"!==e.type)},children:[(0,t.jsx)(L.Trash2,{className:"mr-2 h-3.5 w-3.5"}),"Delete"]})]})]})})]})}),(0,t.jsxs)(aL,{children:[(0,t.jsx)(aP,{onSelect:()=>n.copyPath(e.path),children:"Copy path"}),sr(e.name)&&(0,t.jsx)(aP,{onSelect:()=>n.copyWikiLink(e.name),children:"Copy wiki link"}),(0,t.jsx)(aB,{}),(0,t.jsx)(aP,{onSelect:()=>n.copyUrl(e.path),children:"Copy URL"}),"file"===e.type&&ss(e.name)&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(aB,{}),(0,t.jsx)(aP,{onSelect:()=>n.copyRawContent(e.path),children:"Copy raw content"}),(0,t.jsx)(aP,{onSelect:()=>n.copyFormattedContent(e.path,e.name),children:"Copy formatted content"})]})]})]})}),sh=(0,z.memo)(function(e){let{ctx:a,openPath:n,dragOverPath:s,branchDropdownNode:i,branchDropdownPos:l,nodeBranches:o,branchesLoading:c,checkingOutBranch:d,pullingRepo:u,activePaths:h,pins:x,isMobile:f,activeWorkspaceId:g,newFileParent:b,newFileName:w,fileCreateError:y,newFolderParent:v,newFolderName:N,folderError:k,sidebarScrollRef:j}=e,_=n6(e=>e.showHidden),C=(0,z.useRef)(null),E=(0,z.useCallback)(e=>{let t=("dir"===e.type||"app"===e.type||"node-app"===e.type)&&!e.expanded&&void 0===e.children;("file"===e.type||t)&&(C.current&&clearTimeout(C.current),C.current=setTimeout(()=>a.prefetch(e),120))},[a]),S=(0,z.useCallback)(()=>{C.current&&(clearTimeout(C.current),C.current=null)},[]),M=(0,z.useMemo)(()=>{let t=[],a=(e,n)=>{for(let s of e)!(!_&&s.name.startsWith("."))&&(t.push({kind:"row",node:s,depth:n}),"dir"===s.type&&(v===s.path&&t.push({kind:"newfolder",node:s,depth:n}),b===s.path&&t.push({kind:"newfile",node:s,depth:n})),("dir"===s.type||"app"===s.type||"node-app"===s.type)&&s.expanded&&(s.children&&s.children.length>0?a(s.children,n+1):s.children?.length===0&&t.push({kind:"empty",node:s,depth:n})))};return a(e.nodes,0),t},[e.nodes,b,v,_]);return(0,t.jsx)(t.Fragment,{children:M.map(e=>{let{node:b,depth:v}=e;if("row"===e.kind){let e=i===b.path;return(0,t.jsx)(sp,{node:b,depth:v,ctx:a,isMobile:f,activeWorkspaceId:g,sidebarScrollRef:j,isActive:n===b.path,isDragOver:s===b.path,isPinned:x.some(e=>e.path===b.path),isAgentActive:h.has(b.path),isPulling:u===b.path,branchOpen:e,branchPos:e?l:null,branches:b.git?o[b.path]??[]:[],branchLoading:!!b.git&&!!c[b.path],checkingOut:e?d:null,onHoverEnter:E,onHoverLeave:S},b.path)}return"newfolder"===e.kind?(0,t.jsxs)("div",{className:"flex items-center gap-1.5 px-2 py-1",style:{paddingLeft:`${(v+1)*14+8}px`,...sm},children:[(0,t.jsx)("span",{className:"w-3.5 shrink-0"}),(0,t.jsx)(p.Folder,{className:"h-4 w-4 shrink-0 text-warning"}),(0,t.jsx)("input",{className:"flex-1 bg-transparent text-sm outline-none border-b border-border min-w-0",placeholder:"Folder name",value:N,onChange:e=>a.setNewFolderName(e.target.value),onKeyDown:e=>{"Enter"===e.key&&a.handleCreateFolder(),"Escape"===e.key&&(a.setNewFolderParent(null),a.setNewFolderName(""))}}),k&&(0,t.jsx)("span",{className:"text-xs text-destructive",children:k}),(0,t.jsx)(U.Button,{size:"sm",variant:"ghost",className:"h-6 w-6 p-0",onClick:a.handleCreateFolder,children:(0,t.jsx)(r.Check,{className:"h-3 w-3"})}),(0,t.jsx)(U.Button,{size:"sm",variant:"ghost",className:"h-6 w-6 p-0",onClick:()=>{a.setNewFolderParent(null),a.setNewFolderName("")},children:(0,t.jsx)(B.X,{className:"h-3 w-3"})})]},`nf-${b.path}`):"newfile"===e.kind?(0,t.jsxs)("div",{className:"flex items-center gap-1.5 px-2 py-1",style:{paddingLeft:`${(v+1)*14+8}px`,...sm},children:[(0,t.jsx)("span",{className:"w-3.5 shrink-0"}),(0,t.jsx)(m.FileText,{className:"h-4 w-4 shrink-0 text-accent"}),(0,t.jsx)("input",{autoFocus:!0,className:"flex-1 bg-transparent text-sm outline-none border-b border-border min-w-0",placeholder:"filename (default .md)",value:w,onChange:e=>a.setNewFileName(e.target.value),onKeyDown:e=>{"Enter"===e.key&&a.handleCreateFile(),"Escape"===e.key&&(a.setNewFileParent(null),a.setNewFileName(""))}}),y&&(0,t.jsx)("span",{className:"text-xs text-destructive",children:y}),(0,t.jsx)(U.Button,{size:"sm",variant:"ghost",className:"h-6 w-6 p-0",onClick:a.handleCreateFile,children:(0,t.jsx)(r.Check,{className:"h-3 w-3"})}),(0,t.jsx)(U.Button,{size:"sm",variant:"ghost",className:"h-6 w-6 p-0",onClick:()=>{a.setNewFileParent(null),a.setNewFileName("")},children:(0,t.jsx)(B.X,{className:"h-3 w-3"})})]},`ff-${b.path}`):(0,t.jsx)("div",{className:"text-xs text-muted-foreground/50 py-0.5",style:{paddingLeft:`${(v+1)*14+8+14+6+16+6}px`,...sm},children:"Empty"},`empty-${b.path}`)})})});e.s(["default",0,function(){let e;(0,n7.useWikiSlugsStore)(e=>e.loadedAt),(0,z.useEffect)(()=>{n7.useWikiSlugsStore.getState().load()},[]);let[n,c]=(0,z.useState)(null),[h,j]=(0,z.useState)(null),[F,$]=(0,z.useState)(()=>(0,G.getActiveWorkspaceId)()),[q,H]=(0,z.useState)([]),[W,Z]=(0,z.useState)(!1),[X,J]=(0,z.useState)(!1),[et,ea]=(0,z.useState)(null),[ei,el]=(0,z.useState)(null),eo=(0,z.useCallback)(async()=>{try{let e=await fetch("/api/system/workspaces");if(!e.ok)throw Error("Failed");let t=await e.json();if(H(t.workspaces),Z(t.isAdmin),t.workspaces.length>0){c(!0);let e=new URLSearchParams(window.location.search).get("ws"),a=e?t.workspaces.find(t=>t.id===e):null,n=a??[...t.workspaces].sort((e,t)=>(t.lastOpenedAt??t.createdAt).localeCompare(e.lastOpenedAt??e.createdAt))[0];if($(n.id),j(n.rootDir),!a){let e=new URL(location.href);e.searchParams.set("ws",n.id),history.replaceState(null,"",e.toString())}}else c(!1)}catch{c(!1)}},[]);(0,z.useEffect)(()=>{eo()},[eo]);let ed=(0,a2.useEditorStore)(e=>e.currentPath),eu=aU(e=>e.recents),[em,ep]=(0,z.useState)(!1),[eh,ex]=(0,z.useState)(!0),ef=aH(e=>e.pins),eg=(0,z.useRef)(null),eb=(0,aG.useAIPanelStore)(e=>e.activity),ew=(0,z.useMemo)(()=>{let e=new Date(Date.now()-6e4).toISOString(),t=new Set;for(let a of eb)a.at>=e&&a.path&&a.by?.startsWith("ai:")&&t.add(a.path);return t},[eb]);(0,z.useEffect)(()=>{let e=()=>{aG.useAIPanelStore.getState().loadActivity()};e();let t=setInterval(e,1e4);return()=>clearInterval(t)},[]),(0,z.useEffect)(()=>{aU.getState().loadForWorkspace(F),aH.getState().loadForWorkspace(F)},[F]),(0,z.useEffect)(()=>{let e=[...ef.map(e=>e.path),...eu.slice(0,8).map(e=>e.path)].filter((e,t,a)=>sr(e)&&a.indexOf(e)===t).slice(0,12);if(0===e.length)return;let t=("requestIdleCallback"in window?e=>window.requestIdleCallback(e):e=>window.setTimeout(e,400))(()=>{for(let t of e)(0,a2.prefetchPage)(t)});return()=>{"cancelIdleCallback"in window?window.cancelIdleCallback(t):clearTimeout(t)}},[ef,eu]);let ey=(0,z.useRef)(new URLSearchParams(window.location.search).get("path")),ev=(0,z.useRef)(!1),[eN,ek]=(0,z.useState)([]),[ej,e_]=(0,z.useState)(!1),[eC,eE]=(0,z.useState)(!1),eS=(0,z.useRef)(!1),[eM,eA]=(0,z.useState)(!1),[eD,eO]=(0,z.useState)(!1),[eT,eI]=(0,z.useState)(null),eR=(0,z.useRef)(null),eF=(0,z.useRef)(""),[eL,eP]=(0,z.useState)(null),[eB,ez]=(0,z.useState)(""),[e$,eU]=(0,z.useState)(null),[eq,eK]=(0,z.useState)(null),[eH,eW]=(0,z.useState)(""),[eG,eV]=(0,z.useState)(null),[eZ,eX]=(0,z.useState)(null),[eJ,eQ]=(0,z.useState)(!1),[eY,e0]=(0,z.useState)(null),[e1,e2]=(0,z.useState)(null),[e5,e3]=(0,z.useState)(!1),[e4,e7]=(0,z.useState)(0),e9=function(e="(max-width: 767px)"){let[t,a]=(0,z.useState)(!1);return(0,z.useEffect)(()=>{let t=window.matchMedia(e),n=()=>a(t.matches);return n(),t.addEventListener("change",n),()=>t.removeEventListener("change",n)},[e]),t}(),[e6,e8]=(0,z.useState)(!1),te=n3(e=>e.width),tt=n6(e=>e.showHidden),ta=n3(e=>e.setWidth);(0,z.useEffect)(()=>{e9&&e8(!0)},[e9]);let[ts,tr]=(0,z.useState)(!1),[ti,tl]=(0,z.useState)(!1),[to,tc]=(0,z.useState)(!1),[td,tu]=(0,z.useState)(null),[tp,tb]=(0,z.useState)(0),[tw,ty]=(0,z.useState)(!1),[tv,tk]=(0,z.useState)(!1),[t_,tC]=(0,z.useState)(""),[tS,tA]=(0,z.useState)(!1),[tD,tO]=(0,z.useState)(null),tT=(0,z.useRef)(null),[tI,tL]=(0,z.useState)(null),tP=(0,z.useRef)(null),tB=(0,z.useRef)(!1),tz=(0,z.useRef)(async()=>{});(0,z.useEffect)(()=>{ej||eS.current||(eS.current=!0,eE(!0),sl("").then(e=>{ek(e),e_(!0),eE(!1)}).catch(()=>{eS.current=!1,eE(!1)}))},[ej]);let t$=(0,z.useCallback)(async e=>{let t=e.split("/");if(t.length<=1)return;let a=[],n="";for(let e=0;e<t.length-1;e++)n=n?`${n}/${t[e]}`:t[e],a.push({prefix:n,children:await sl(n)});ek(e=>{let t=e;for(let{prefix:e,children:n}of a)t=su(t,e,e=>({...e,children:n,expanded:!0}));return t})},[]),tU=(0,z.useCallback)(async e=>{let t=await sl(e);""===e?ek(e=>{let a=new Map(e.map(e=>[e.path,e]));return t.map(e=>{let t=a.get(e.path);return t&&("dir"===t.type||"app"===t.type)?{...e,expanded:t.expanded,children:t.children}:e})}):ek(a=>su(a,e,e=>({...e,children:t,expanded:!0})))},[]),[tq,tH]=(0,z.useState)(null),[tW,tG]=(0,z.useState)(null),[tV,tZ]=(0,z.useState)(!1),[tX,tJ]=(0,z.useState)([]),[tQ,t0]=(0,z.useState)(!1),[t1,t2]=(0,z.useState)(null),[t5,t3]=(0,z.useState)(null),[t4,t7]=(0,z.useState)(!1),[t9,t6]=(0,z.useState)({}),[t8,ae]=(0,z.useState)({}),[at,aa]=(0,z.useState)(null),[an,as]=(0,z.useState)(null),[ar,ai]=(0,z.useState)(null),al=(0,z.useCallback)(async(e,t)=>{if(!tq){tH(e);try{let a=await (0,G.wsFetch)("/api/wiki/git-pull",{method:"POST",body:JSON.stringify({path:e})});if(!a.ok){let e=await a.json();(0,tK.showError)(e.message??e.error??"Pull failed");return}let n=await a.json();(0,tK.showSuccess)(`Pulled ${e} (${n.branch} @ ${n.sha.slice(0,7)})`),await tU(t)}catch{(0,tK.showError)("Pull failed")}finally{tH(null)}}},[tq,tU]);(0,z.useEffect)(()=>{tZ(!1),tJ([]),t2(null),t3(null)},[eY?.path]);let ao=eY?.path;(0,z.useEffect)(()=>{if(!ao)return void tG(null);let e=!1,t=setTimeout(()=>{(async()=>{try{let t=await (0,G.wsFetch)(`/api/wiki/git-file-info?path=${encodeURIComponent(ao)}`);if(e)return;if(!t.ok)return void tG(null);let a=await t.json();e||tG(a.info)}catch{e||tG(null)}})()},200);return()=>{e=!0,clearTimeout(t)}},[ao]);let ac=(0,z.useCallback)(async()=>{if(!eY)return;let e=eY.path;tZ(!0),t0(!0),tJ([]),t2(null),t3(null);try{let t=await (0,G.wsFetch)(`/api/wiki/git-history?path=${encodeURIComponent(e)}`);if(!t.ok)return void(0,tK.showError)("Could not load history");let a=await t.json();eY.path===e&&tJ(a.commits)}catch{(0,tK.showError)("Could not load history")}finally{t0(!1)}},[eY]),ad=(0,z.useCallback)(async e=>{if(!eY)return;if(t1===e){t2(null),t3(null);return}let t=eY.path;t2(e),t7(!0),t3(null);try{let a=await (0,G.wsFetch)(`/api/wiki/git-diff?path=${encodeURIComponent(t)}&sha=${encodeURIComponent(e)}`);if(!a.ok)return void(0,tK.showError)("Could not load diff");let n=await a.json();eY.path===t&&t1===e&&t3(n.diff)}catch{(0,tK.showError)("Could not load diff")}finally{t7(!1)}},[eY,t1]),ap=(0,z.useCallback)(async e=>{if(t9[e]||t8[e])return;let t=!1;ae(t=>({...t,[e]:!0}));try{let a=await (0,G.wsFetch)(`/api/wiki/git-branches?path=${encodeURIComponent(e)}`);if(t)return;if(!a.ok)return void(0,tK.showError)("Could not load branches");let n=await a.json();t||t6(t=>({...t,[e]:n.branches}))}catch{t||(0,tK.showError)("Could not load branches")}finally{t||ae(t=>({...t,[e]:!1}))}return()=>{t=!0}},[t9,t8]),ah=(0,z.useCallback)(async(e,t,a)=>{if(!at){aa(t);try{let n=await (0,G.wsFetch)("/api/wiki/git-checkout",{method:"POST",body:JSON.stringify({path:e,branch:t})});if(409===n.status)return void(0,tK.showError)("Repository has uncommitted changes");if(!n.ok){let e=await n.json();(0,tK.showError)(e.error??"Checkout failed");return}let s=await n.json();(0,tK.showSuccess)(`Switched to ${s.branch}`),t6(t=>{let a={...t};return delete a[e],a}),as(null),ai(null),await tU(a)}catch{(0,tK.showError)("Checkout failed")}finally{aa(null)}}},[at,tU]);(0,z.useEffect)(()=>{if(!an)return;let e=()=>{as(null),ai(null)},t=e=>{"Escape"===e.key&&(as(null),ai(null))};return document.addEventListener("click",e),document.addEventListener("keydown",t),()=>{document.removeEventListener("click",e),document.removeEventListener("keydown",t)}},[an]);let ax=(0,z.useCallback)(e=>{let t=[];for(let a of e)("dir"===a.type||"app"===a.type||"node-app"===a.type)&&a.expanded&&a.children&&(t.push(a.path),t.push(...ax(a.children)));return t},[]),af=(0,z.useCallback)(async()=>{eA(!0);try{let e=ax(eN),t=await sl("");for(let a of(ek(t),e)){let e=await sl(a);ek(t=>su(t,a,t=>({...t,children:e,expanded:!0})))}}finally{eA(!1)}},[eN,ax]),ag=(0,z.useCallback)(async()=>{if(eY){if(sr(eY.name)){ty(!0);try{await a2.useEditorStore.getState().loadPage(eY.path)}finally{ty(!1)}return}if(["editor","text"].includes(sa(eY.name,eY.nodeType))||ss(eY.name)){ty(!0);try{let e=await (0,G.wsFetch)(`/api/wiki/content?path=${encodeURIComponent(eY.path)}`);if(e.ok){let t=await e.json();tu(t.content),tb(Number(e.headers.get("X-Wiki-Revision")??0))}}catch{}ty(!1)}}},[eY]);async function ab(e){if("dir"===e.type||"app"===e.type||"node-app"===e.type)if(e.expanded)ek(t=>su(t,e.path,e=>({...e,expanded:!1})));else if(void 0===e.children){let t=await sd(e.path);if(t)return void ek(a=>su(a,e.path,e=>({...e,loading:!1,children:t,expanded:!0})));ek(t=>su(t,e.path,e=>({...e,loading:!0})));let a=await sl(e.path);ek(t=>su(t,e.path,e=>({...e,loading:!1,children:a,expanded:!0})))}else ek(t=>su(t,e.path,e=>({...e,expanded:!0})))}async function aw(e){if("file"===e.type&&aU.getState().push({path:e.path,name:e.name},F),e0({path:e.path,name:e.name,size:e.size,nodeType:"app"===e.type?"app":"node-app"===e.type?"node-app":"file"}),tk(!1),tO(null),tu(null),tb(0),"file"===e.type&&sr(e.name)){ty(!0);try{await a2.useEditorStore.getState().loadPage(e.path)}finally{ty(!1)}return}if(["editor","text"].includes(sa(e.name,e.type))||ss(e.name)){ty(!0);try{let t=await (0,G.wsFetch)(`/api/wiki/content?path=${encodeURIComponent(e.path)}`);if(t.ok){let e=await t.json();tu(e.content),tb(Number(t.headers.get("X-Wiki-Revision")??0))}}catch{}ty(!1)}}(0,z.useEffect)(()=>{eY&&sr(eY.name)&&a2.useEditorStore.getState().currentPath!==eY.path&&a2.useEditorStore.getState().loadPage(eY.path)},[eY]),(0,z.useEffect)(()=>{tP.current=eY},[eY]),(0,z.useEffect)(()=>{tB.current=tv},[tv]),(0,z.useEffect)(()=>{tz.current=ag},[ag]),(0,z.useEffect)(()=>{if(!n)return;let e=new Map,t=new EventSource((0,G.withWs)("/api/wiki/watch"));return t.onmessage=t=>{var a;let n;try{n=JSON.parse(t.data)}catch{return}let{type:s,path:r}=n,i=r.split("/");if(a=i.length>1?i.slice(0,-1).join("/"):"",e.has(a)&&clearTimeout(e.get(a)),e.set(a,setTimeout(()=>{e.delete(a),tU(a)},300)),"change"===s&&tP.current?.path===r&&!tB.current){let t=`__file__${r}`;e.has(t)&&clearTimeout(e.get(t)),e.set(t,setTimeout(()=>{e.delete(t),tz.current()},400))}},()=>{for(let a of(t.close(),e.values()))clearTimeout(a)}},[n,tU]),(0,z.useEffect)(()=>{e3(!1)},[]);let ay=(0,z.useCallback)(e=>{let t=e.split("/").pop()??e;t$(e),aw({path:e,name:t,type:"file"})},[t$]);(0,z.useEffect)(()=>{if(!ed||eY&&eY.path===ed)return;let e=ed.split("/").pop()??ed;aw({path:ed,name:e,type:"file"})},[ed]),(0,z.useEffect)(()=>{let e=new URL(window.location.href);eY?e.searchParams.set("path",eY.path):e.searchParams.delete("path"),window.history.replaceState(null,"",e.toString())},[eY]),(0,z.useEffect)(()=>{if(ev.current||!ej)return;let e=ey.current;if(!e){ev.current=!0;return}ev.current=!0,(async()=>{let t=e.split("/"),a=t[t.length-1],n=t.slice(0,-1).join("/"),s=(await sl(n)).find(t=>t.path===e);s&&(await t$(e),aw({path:e,name:a,type:s.type,modifiedAt:s.modifiedAt}))})()},[ej,t$]);let av=(0,z.useCallback)(async e=>{if(e===F)return;try{await fetch(`/api/system/workspaces/${e}/open`,{method:"POST"})}catch{}let t=new URL(location.href);t.searchParams.set("ws",e),t.searchParams.delete("path"),history.pushState(null,"",t.toString()),e0(null),tu(null),tk(!1),ek([]),e_(!1),eS.current=!1,n7.useWikiSlugsStore.getState().invalidate();let a=q.find(t=>t.id===e);a&&j(a.rootDir),$(e)},[F,q]),aN=(0,z.useCallback)(async()=>{if(et)try{if(!(await fetch(`/api/system/workspaces/${et}`,{method:"DELETE"})).ok)throw Error("Failed");if(et===F){let e=q.filter(e=>e.id!==et);if(e.length>0){let t=[...e].sort((e,t)=>(t.lastOpenedAt??t.createdAt).localeCompare(e.lastOpenedAt??e.createdAt))[0];await av(t.id)}else c(!1)}await eo()}catch{}finally{ea(null)}},[et,F,q,av,eo]),ak=(0,z.useCallback)(async e=>{if(!ei){el(e);try{let t=await fetch(`/api/system/workspaces/${e}/refresh`,{method:"POST"});if(!t.ok){let e=await t.json();(0,tK.showError)(e.error??"Refresh failed")}await eo()}catch{(0,tK.showError)("Refresh failed")}finally{el(null)}}},[ei,eo]);async function aj(){if(!eY)return;tA(!0),tO(null);let e=await (0,G.wsFetch)("/api/wiki/content",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:eY.path,content:t_,baseRevision:tp})});if(e.ok){let t=await e.json();"number"==typeof t.revision&&tb(t.revision),tu(t_),tk(!1)}else tO((await e.json()).error??"Save failed");tA(!1)}let a_=(0,z.useCallback)(async(e,t)=>{let a=Array.from(e);if(a.length){eO(!0),eI(null);try{for(let e of a){let a=new FormData;a.append("file",e),a.append("dir",t);let n=await (0,G.wsFetch)("/api/wiki/upload",{method:"POST",body:a});if(!n.ok){let e=await n.json();eI(e.error??"Upload failed"),(0,tK.showError)(e.error??"Upload failed");break}}await tU(t)}catch{eI("Upload failed.")}finally{eO(!1),eR.current&&(eR.current.value="")}}},[tU]);function aC(e){eF.current=e,eR.current?.click()}async function aE(){let e=eB.trim();if(!e||null===eL)return;eU(null);let t=eL?`${eL}/${e}`:e,a=await (0,G.wsFetch)("/api/wiki/folder",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:t})});a.ok?(eP(null),ez(""),await tU(eL),""!==eL&&ek(e=>su(e,eL,e=>({...e,expanded:!0})))):eU((await a.json()).error??"Failed")}async function aS(){let e=eH.trim();if(!e||null===eq)return;eV(null);let t=e.includes(".")?e:`${e}.md`,a=eq?`${eq}/${t}`:t,n=await (0,G.wsFetch)("/api/wiki/new-file",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:a})});n.ok?(eK(null),eW(""),await tU(eq),""!==eq&&ek(e=>su(e,eq,e=>({...e,expanded:!0}))),aw({path:a,name:t,type:"file",modifiedAt:new Date().toISOString()})):eV((await n.json()).error??"Failed")}function aM(e){navigator.clipboard.writeText(e),(0,tK.showSuccess)("Path copied")}function aA(e){let t=e.replace(/\.(md|markdown)$/i,"");navigator.clipboard.writeText(`[[${t}]]`),(0,tK.showSuccess)("Wiki link copied")}function aD(e){let t=new URL(location.href);t.searchParams.set("path",e),F&&t.searchParams.set("ws",F),navigator.clipboard.writeText(t.toString()),(0,tK.showSuccess)("URL copied")}async function aO(e){if(eY?.path===e&&null!==td)return td;if(a2.useEditorStore.getState().currentPath===e)return a2.useEditorStore.getState().content;let t=await (0,G.wsFetch)(`/api/wiki/content?path=${encodeURIComponent(e)}`);if(!t.ok)throw Error("Cannot copy content");return(await t.json()).content}async function aT(e){try{let t=await aO(e);await navigator.clipboard.writeText(t),(0,tK.showSuccess)("Raw content copied")}catch{(0,tK.showError)("Could not copy file content")}}async function aI(e,t){try{let a=await aO(e);if(!sr(t)){await navigator.clipboard.writeText(a),(0,tK.showSuccess)("Content copied");return}let n=await (0,tn.markdownToHtml)(a,{pagePath:e,sanitize:!0});"ClipboardItem"in window&&navigator.clipboard.write?await navigator.clipboard.write([new ClipboardItem({"text/html":new Blob([n],{type:"text/html"}),"text/plain":new Blob([a],{type:"text/plain"})})]):await navigator.clipboard.writeText(a),(0,tK.showSuccess)("Formatted content copied")}catch{(0,tK.showError)("Could not copy formatted content")}}function aR(e){return(0,t.jsxs)(tE.DropdownMenu,{children:[(0,t.jsx)(tE.DropdownMenuTrigger,{asChild:!0,children:(0,t.jsxs)(U.Button,{size:"sm",variant:"ghost",className:"h-7 gap-1.5 px-2 text-xs",title:"Copy path, wiki link, or URL",children:[(0,t.jsx)(o.Copy,{className:"h-3.5 w-3.5"}),"Copy",(0,t.jsx)(i.ChevronDown,{className:"h-3 w-3 opacity-60"})]})}),(0,t.jsxs)(tE.DropdownMenuContent,{align:"end",className:"w-44",children:[(0,t.jsxs)(tE.DropdownMenuItem,{onClick:()=>aM(e.path),children:[(0,t.jsx)(o.Copy,{className:"mr-2 h-3.5 w-3.5"}),"Copy path"]}),sr(e.name)&&(0,t.jsxs)(tE.DropdownMenuItem,{onClick:()=>aA(e.name),children:[(0,t.jsx)(m.FileText,{className:"mr-2 h-3.5 w-3.5"}),"Copy wiki link"]}),(0,t.jsx)(tE.DropdownMenuSeparator,{}),(0,t.jsxs)(tE.DropdownMenuItem,{onClick:()=>aD(e.path),children:[(0,t.jsx)(v.Link,{className:"mr-2 h-3.5 w-3.5"}),"Copy URL"]}),ss(e.name)&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(tE.DropdownMenuSeparator,{}),(0,t.jsxs)(tE.DropdownMenuItem,{onClick:()=>void aT(e.path),children:[(0,t.jsx)(m.FileText,{className:"mr-2 h-3.5 w-3.5"}),"Copy raw content"]}),(0,t.jsxs)(tE.DropdownMenuItem,{onClick:()=>void aI(e.path,e.name),children:[(0,t.jsx)(m.FileText,{className:"mr-2 h-3.5 w-3.5"}),"Copy formatted content"]})]})]})]})}async function aF(){eZ&&(await (0,G.wsFetch)("/api/wiki",{method:"DELETE",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:eZ})}),(eY?.path===eZ||eY?.path.startsWith(`${eZ}/`))&&(e0(null),tu(null)),ek(e=>(function e(t,a){return t.filter(e=>e.path!==a).map(t=>t.children?{...t,children:e(t.children,a)}:t)})(e,eZ)),eX(null))}function aL(e,t,a){e.preventDefault(),e.stopPropagation();let n=tT.current;!n||n.path===t||t.startsWith(`${n.path}/`)||(e.dataTransfer.dropEffect="move",tL("root"===a?"":t))}async function aP(e,t){e.preventDefault(),e.stopPropagation(),tL(null);let a=tT.current;if(tT.current=null,!a||a.path===t||t.startsWith(`${a.path}/`))return;let n=t?`${t}/${a.name}`:a.name;if(n!==a.path&&(await (0,G.wsFetch)("/api/wiki/move",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({from:a.path,to:n})})).ok){let e=a.path.includes("/")?a.path.split("/").slice(0,-1).join("/"):"";await tU(e),t!==e&&await tU(t),eY?.path===a.path&&e0({path:n,name:a.name,nodeType:eY.nodeType,size:eY.size})}}let aB=eY?sa(eY.name,eY.nodeType):null,az=!!eY&&null!==aB&&!se.has(aB)&&(eY.size??0)>5242880&&e1!==eY.path,a$=(0,nQ.useViewWidthStore)(e=>e.width),aq=(0,nQ.useViewWidthStore)(e=>e.align),aK=null===aB||"editor"===aB||"text"===aB||"source"===aB||"notebook"===aB||"fallback"===aB,aW=aK?nQ.VIEW_WIDTH_CLASS[a$]:"",aV=aK?nQ.VIEW_ALIGN_CLASS[aq]:"",aZ=(0,z.useRef)(null);aZ.current={toggleFolder:e=>void ab(e),openViewer:e=>void aw(e),copyPath:aM,copyWikiLink:aA,copyUrl:aD,copyRawContent:e=>void aT(e),copyFormattedContent:(e,t)=>void aI(e,t),handleDownload:function(e){let t=(0,G.withWs)(`/api/wiki/download?path=${encodeURIComponent(e.path)}`),a=document.createElement("a");a.href=t,a.download="file"===e.type?e.name:`${e.name}.zip`,document.body.appendChild(a),a.click(),a.remove()},triggerUpload:aC,handleCreateFile:()=>void aS(),handleCreateFolder:()=>void aE(),handleDragStart:function(e,t){tT.current=t,e.dataTransfer.effectAllowed="move",e.dataTransfer.setData("text/plain",t.path)},handleDragOver:aL,handleDropOnFolder:(e,t)=>void aP(e,t),handleGitPull:(e,t)=>void al(e,t),handleCheckout:(e,t,a)=>void ah(e,t,a),loadBranches:e=>void ap(e),prefetch:e=>{"file"===e.type?sr(e.name)&&(0,a2.prefetchPage)(e.path):function(e){if(so.has(e)||sc.has(e))return;let t=sl(e).then(t=>(so.set(e,t),t)).finally(()=>sc.delete(e));sc.set(e,t),t.catch(()=>{})}(e.path)},togglePin:(e,t)=>aH.getState().toggle({path:e.path,name:e.name,type:"dir"===e.type?"file":e.type},t),setDragOverPath:tL,setSidebarCollapsed:e8,setBranchDropdownNode:as,setBranchDropdownPos:ai,setNewFileParent:eK,setNewFileName:eW,setFileCreateError:eV,setNewFolderParent:eP,setNewFolderName:ez,setFolderError:eU,setDeletingPath:eX,setDeletingIsDir:eQ};let aX=(0,z.useMemo)(()=>({toggleFolder:e=>aZ.current.toggleFolder(e),openViewer:e=>aZ.current.openViewer(e),copyPath:e=>aZ.current.copyPath(e),copyWikiLink:e=>aZ.current.copyWikiLink(e),copyUrl:e=>aZ.current.copyUrl(e),copyRawContent:e=>aZ.current.copyRawContent(e),copyFormattedContent:(e,t)=>aZ.current.copyFormattedContent(e,t),handleDownload:e=>aZ.current.handleDownload(e),triggerUpload:e=>aZ.current.triggerUpload(e),handleCreateFile:()=>aZ.current.handleCreateFile(),handleCreateFolder:()=>aZ.current.handleCreateFolder(),handleDragStart:(e,t)=>aZ.current.handleDragStart(e,t),handleDragOver:(e,t,a)=>aZ.current.handleDragOver(e,t,a),handleDropOnFolder:(e,t)=>aZ.current.handleDropOnFolder(e,t),handleGitPull:(e,t)=>aZ.current.handleGitPull(e,t),handleCheckout:(e,t,a)=>aZ.current.handleCheckout(e,t,a),loadBranches:e=>aZ.current.loadBranches(e),prefetch:e=>aZ.current.prefetch(e),togglePin:(e,t)=>aZ.current.togglePin(e,t),setDragOverPath:e=>aZ.current.setDragOverPath(e),setSidebarCollapsed:e=>aZ.current.setSidebarCollapsed(e),setBranchDropdownNode:e=>aZ.current.setBranchDropdownNode(e),setBranchDropdownPos:e=>aZ.current.setBranchDropdownPos(e),setNewFileParent:e=>aZ.current.setNewFileParent(e),setNewFileName:e=>aZ.current.setNewFileName(e),setFileCreateError:e=>aZ.current.setFileCreateError(e),setNewFolderParent:e=>aZ.current.setNewFolderParent(e),setNewFolderName:e=>aZ.current.setNewFolderName(e),setFolderError:e=>aZ.current.setFolderError(e),setDeletingPath:e=>aZ.current.setDeletingPath(e),setDeletingIsDir:e=>aZ.current.setDeletingIsDir(e)}),[]);return(0,t.jsxs)("div",{className:"flex h-screen gap-0 overflow-hidden bg-background",children:[null===n&&(0,t.jsx)("div",{className:"flex-1 flex items-center justify-center",children:(0,t.jsx)(N.Loader2,{className:"h-5 w-5 animate-spin text-muted-foreground"})}),!1===n&&(0,t.jsx)(tR,{onSelect:e=>{let t=new URL(location.href);t.searchParams.set("ws",e),t.searchParams.delete("path"),history.replaceState(null,"",t.toString()),e_(!1),eS.current=!1,$(e),c(!0),eo()}}),!0===n&&X&&(0,t.jsxs)("div",{className:"flex-1 flex flex-col",children:[(0,t.jsx)("div",{className:"flex items-center justify-end border-b px-3 py-2 bg-muted shrink-0",children:(0,t.jsxs)(U.Button,{size:"sm",variant:"ghost",className:"h-7 gap-1.5 text-xs",onClick:()=>J(!1),children:[(0,t.jsx)(B.X,{className:"h-3.5 w-3.5"})," Cancel"]})}),(0,t.jsx)(tR,{onSelect:e=>{J(!1),eo(),av(e)}})]}),!0===n&&!X&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n0,{onOpenFile:ay,onToggleSidebar:()=>e8(e=>{let t=!e;return e9&&!1===t&&aG.useAIPanelStore.getState().close(),t}),onNewFile:()=>eK(""),onCopyPath:()=>{eY&&navigator.clipboard.writeText(eY.path)}}),!e6&&e9&&(0,t.jsx)("div",{className:"fixed inset-0 z-40 bg-overlay backdrop-blur-[1px] md:hidden",onClick:()=>e8(!0),"aria-hidden":!0}),!e6&&(0,t.jsxs)(am.Card,{style:e9?void 0:{width:te},className:"fixed inset-y-0 left-0 z-50 w-[85vw] max-w-[20rem] md:relative md:z-auto md:w-auto md:max-w-none flex flex-col shrink-0 overflow-hidden rounded-none border-r border-l-0 border-t-0 border-b-0",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between gap-2 px-3 py-2 border-b bg-muted shrink-0",children:[(0,t.jsxs)("div",{className:"flex min-w-0 items-center gap-1.5",children:[(0,t.jsx)("img",{src:"/logo.svg",alt:"Wiki Viewer",className:"h-5 w-5 shrink-0"}),(0,t.jsx)("span",{className:"truncate text-xs font-semibold leading-5 tracking-tight translate-y-[0.5px]",children:"Wiki Viewer"})]}),(0,t.jsx)(U.Button,{size:"sm",variant:"ghost",className:"h-7 w-7 p-0 shrink-0",title:"Collapse sidebar",onClick:()=>e8(!0),children:(0,t.jsx)(_,{className:"h-3.5 w-3.5"})})]}),(0,t.jsxs)("div",{className:"flex items-center justify-between gap-1 px-3 py-1.5 border-b bg-muted/50 shrink-0",children:[(0,t.jsxs)(tE.DropdownMenu,{children:[(0,t.jsx)(tE.DropdownMenuTrigger,{asChild:!0,children:(0,t.jsxs)(U.Button,{size:"sm",variant:"ghost",className:"h-7 gap-1 px-2 text-xs",disabled:eD,children:[eD?(0,t.jsx)(N.Loader2,{className:"h-3.5 w-3.5 animate-spin"}):(0,t.jsx)(D,{className:"h-3.5 w-3.5"}),"New",(0,t.jsx)(i.ChevronDown,{className:"h-3 w-3 opacity-60"})]})}),(0,t.jsxs)(tE.DropdownMenuContent,{align:"start",className:"w-44",children:[(0,t.jsxs)(tE.DropdownMenuItem,{onClick:()=>{eK(""),eW(""),eV(null)},children:[(0,t.jsx)(u.FilePlus,{className:"mr-2 h-3.5 w-3.5"}),"New file"]}),(0,t.jsxs)(tE.DropdownMenuItem,{onClick:()=>{eP(""),ez(""),eU(null)},children:[(0,t.jsx)(x,{className:"mr-2 h-3.5 w-3.5"}),"New folder"]}),(0,t.jsxs)(tE.DropdownMenuItem,{onClick:()=>aC(""),disabled:eD,children:[(0,t.jsx)(P.Upload,{className:"mr-2 h-3.5 w-3.5"}),"Upload"]})]})]}),(0,t.jsxs)("div",{className:"flex items-center gap-0.5",children:[(0,t.jsx)(U.Button,{size:"sm",variant:"ghost",className:"h-7 w-7 p-0",title:"Refresh tree",onClick:af,disabled:eM,children:eM?(0,t.jsx)(N.Loader2,{className:"h-3.5 w-3.5 animate-spin"}):(0,t.jsx)(O,{className:"h-3.5 w-3.5"})}),(0,t.jsx)(U.Button,{size:"sm",variant:"ghost",className:"h-7 w-7 p-0",title:tt?"Hide hidden files":"Show hidden files",onClick:()=>n6.getState().toggle(),children:tt?(0,t.jsx)(S.Eye,{className:"h-3.5 w-3.5"}):(0,t.jsx)(M,{className:"h-3.5 w-3.5"})}),(0,t.jsx)(tF.ThemeToggle,{}),(0,t.jsx)(U.Button,{size:"sm",variant:"ghost",className:"h-7 w-7 p-0",title:"AI Agent panel",onClick:()=>{aG.useAIPanelStore.getState().toggle(),e9&&e8(!0)},children:(0,t.jsx)(s,{className:"h-3.5 w-3.5"})}),(0,t.jsx)(U.Button,{size:"sm",variant:"ghost",className:"h-7 w-7 p-0",title:"Settings",onClick:()=>tl(!0),children:(0,t.jsx)(T,{className:"h-3.5 w-3.5"})})]})]}),eT&&(0,t.jsxs)("div",{className:"flex items-center gap-1.5 px-3 py-1.5 text-xs text-destructive bg-destructive/10 shrink-0",children:[(0,t.jsx)(a.AlertCircle,{className:"h-3.5 w-3.5 shrink-0"}),eT]}),""===eL&&(0,t.jsxs)("div",{className:"flex items-center gap-1.5 px-2 py-1 border-b shrink-0",children:[(0,t.jsx)(p.Folder,{className:"h-4 w-4 shrink-0 text-warning"}),(0,t.jsx)("input",{className:"flex-1 bg-transparent text-sm outline-none border-b border-border min-w-0",placeholder:"Folder name",value:eB,onChange:e=>ez(e.target.value),onKeyDown:e=>{"Enter"===e.key&&aE(),"Escape"===e.key&&(eP(null),ez(""))}}),e$&&(0,t.jsx)("span",{className:"text-xs text-destructive",children:e$}),(0,t.jsx)(U.Button,{size:"sm",variant:"ghost",className:"h-6 w-6 p-0",onClick:aE,children:(0,t.jsx)(r.Check,{className:"h-3 w-3"})}),(0,t.jsx)(U.Button,{size:"sm",variant:"ghost",className:"h-6 w-6 p-0",onClick:()=>{eP(null),ez("")},children:(0,t.jsx)(B.X,{className:"h-3 w-3"})})]}),""===eq&&(0,t.jsxs)("div",{className:"flex items-center gap-1.5 px-2 py-1 border-b shrink-0",children:[(0,t.jsx)(m.FileText,{className:"h-4 w-4 shrink-0 text-accent"}),(0,t.jsx)("input",{autoFocus:!0,className:"flex-1 bg-transparent text-sm outline-none border-b border-border min-w-0",placeholder:"filename (default .md)",value:eH,onChange:e=>eW(e.target.value),onKeyDown:e=>{"Enter"===e.key&&aS(),"Escape"===e.key&&(eK(null),eW(""))}}),eG&&(0,t.jsx)("span",{className:"text-xs text-destructive",children:eG}),(0,t.jsx)(U.Button,{size:"sm",variant:"ghost",className:"h-6 w-6 p-0",onClick:aS,children:(0,t.jsx)(r.Check,{className:"h-3 w-3"})}),(0,t.jsx)(U.Button,{size:"sm",variant:"ghost",className:"h-6 w-6 p-0",onClick:()=>{eK(null),eW("")},children:(0,t.jsx)(B.X,{className:"h-3 w-3"})})]}),(0,t.jsx)("div",{className:"border-b",children:(0,t.jsx)(n1,{onOpenFile:ay})}),(0,t.jsxs)("div",{ref:eg,className:(0,V.cn)("flex-1 overflow-auto py-1 editorial-file-tree",""===tI&&"ring-2 ring-inset ring-primary bg-primary/5"),onDragOver:e=>aL(e,"","root"),onDragLeave:e=>{e.currentTarget.contains(e.relatedTarget)||tL(null)},onDrop:e=>aP(e,""),children:[ef.length>0&&(0,t.jsxs)("div",{className:"border-b mb-1",children:[(0,t.jsxs)("button",{type:"button",className:"flex w-full items-center gap-1 px-2 py-1 text-[10px] font-semibold uppercase tracking-wider text-muted-foreground hover:text-foreground",onClick:()=>ep(e=>!e),children:[em?(0,t.jsx)(l.ChevronRight,{className:"h-3 w-3"}):(0,t.jsx)(i.ChevronDown,{className:"h-3 w-3"}),(0,t.jsx)(A,{className:"h-3 w-3"}),"Pinned",(0,t.jsx)("span",{className:"ml-auto text-[9px] tabular-nums opacity-60",children:ef.length})]}),!em&&ef.map(e=>(0,t.jsxs)("div",{role:"button",tabIndex:0,className:(0,V.cn)("group flex items-center gap-1.5 rounded-sm px-2 py-1 text-sm cursor-pointer transition-colors select-none",eY?.path===e.path?"bg-accent-soft text-foreground font-medium":"hover:bg-muted"),onClick:()=>{aw({path:e.path,name:e.name,type:e.type??"file",modifiedAt:""}),e9&&e8(!0)},onKeyDown:t=>{("Enter"===t.key||" "===t.key)&&(t.preventDefault(),aw({path:e.path,name:e.name,type:e.type??"file",modifiedAt:""}))},children:[(0,t.jsx)(R,{className:"h-3 w-3 shrink-0 fill-current text-amber-400"}),(0,t.jsx)("span",{className:"min-w-0 flex-1 truncate text-xs",children:e.name}),(0,t.jsx)("span",{className:"max-w-[80px] truncate text-[10px] text-muted-foreground/60",children:e.path.split("/").slice(0,-1).join("/")}),(0,t.jsx)("button",{type:"button",className:"hover-reveal shrink-0 rounded p-0.5 text-muted-foreground/50 opacity-0 transition-colors hover:bg-muted hover:text-amber-400 group-hover:opacity-100 focus:opacity-100",title:"Remove from pinned",onClick:t=>{t.stopPropagation(),aH.getState().toggle({path:e.path,name:e.name},F)},children:(0,t.jsx)(B.X,{className:"h-3 w-3"})})]},e.path))]}),eu.length>0&&(0,t.jsxs)("div",{className:"border-b mb-1",children:[(0,t.jsxs)("button",{type:"button",className:"flex w-full items-center gap-1 px-2 py-1 text-[10px] font-semibold uppercase tracking-wider text-muted-foreground hover:text-foreground",onClick:()=>ex(e=>!e),children:[eh?(0,t.jsx)(l.ChevronRight,{className:"h-3 w-3"}):(0,t.jsx)(i.ChevronDown,{className:"h-3 w-3"}),"Recent",(0,t.jsx)("span",{className:"ml-auto text-[9px] tabular-nums opacity-60",children:eu.length})]}),!eh&&eu.slice(0,8).map(e=>(0,t.jsxs)("div",{role:"button",tabIndex:0,className:(0,V.cn)("flex items-center gap-1.5 rounded-sm px-2 py-1 text-sm cursor-pointer transition-colors select-none",eY?.path===e.path?"bg-accent-soft text-foreground font-medium":"hover:bg-muted"),onClick:()=>{aw({path:e.path,name:e.name,type:e.type??"file",modifiedAt:""}),e9&&e8(!0)},onKeyDown:t=>{("Enter"===t.key||" "===t.key)&&(t.preventDefault(),aw({path:e.path,name:e.name,type:e.type??"file",modifiedAt:""}))},children:[(0,t.jsx)(m.FileText,{className:"h-3.5 w-3.5 shrink-0 text-muted-foreground"}),(0,t.jsx)("span",{className:"flex-1 truncate text-xs",children:e.name}),(0,t.jsx)("span",{className:"text-[10px] text-muted-foreground/60 truncate max-w-[80px]",children:e.path.split("/").slice(0,-1).join("/")})]},e.path))]}),eC?(0,t.jsx)("div",{className:"flex justify-center py-6",children:(0,t.jsx)(N.Loader2,{className:"h-5 w-5 animate-spin text-muted-foreground"})}):0===eN.length?(0,t.jsxs)("div",{className:"flex flex-col items-center gap-3 px-4 py-8 text-center",children:[(0,t.jsx)("div",{className:"rounded-full bg-muted p-3",children:(0,t.jsx)(m.FileText,{className:"h-6 w-6 text-muted-foreground"})}),(0,t.jsxs)("div",{className:"space-y-1",children:[(0,t.jsx)("p",{className:"text-sm font-medium",children:"No files yet"}),(0,t.jsx)("p",{className:"text-xs text-muted-foreground",children:"Upload files or add them to the configured directory"})]}),(0,t.jsxs)(U.Button,{size:"sm",variant:"outline",className:"w-full gap-1.5 max-w-[180px]",onClick:()=>aC(""),disabled:eD,children:[eD?(0,t.jsx)(N.Loader2,{className:"h-3.5 w-3.5 animate-spin"}):(0,t.jsx)(P.Upload,{className:"h-3.5 w-3.5"}),"Upload Files"]})]}):(0,t.jsx)(sh,{ctx:aX,nodes:eN,openPath:eY?.path??null,dragOverPath:tI,branchDropdownNode:an,branchDropdownPos:ar,nodeBranches:t9,branchesLoading:t8,checkingOutBranch:at,pullingRepo:tq,activePaths:ew,pins:ef,isMobile:e9,activeWorkspaceId:F,newFileParent:eq,newFileName:eH,fileCreateError:eG,newFolderParent:eL,newFolderName:eB,folderError:e$,sidebarScrollRef:eg})]}),(0,t.jsx)("div",{className:"border-t px-2 py-2 bg-muted shrink-0",children:(0,t.jsxs)(tE.DropdownMenu,{children:[(0,t.jsx)(tE.DropdownMenuTrigger,{asChild:!0,children:(0,t.jsxs)(U.Button,{size:"sm",variant:"ghost",className:"w-full h-auto justify-between gap-2 px-2 py-1.5 text-left",title:h??"",children:[(0,t.jsxs)("span",{className:"flex flex-col min-w-0",children:[(0,t.jsx)("span",{className:"truncate text-xs font-medium",children:q.find(e=>e.id===F)?.name??"Workspace"}),(0,t.jsx)("span",{className:"truncate text-[10px] text-muted-foreground font-mono",children:h??""})]}),(0,t.jsx)(i.ChevronDown,{className:"h-3.5 w-3.5 shrink-0 opacity-60"})]})}),(0,t.jsxs)(tE.DropdownMenuContent,{align:"start",className:"w-60",children:[q.map(e=>(0,t.jsxs)(tE.DropdownMenuItem,{onClick:()=>void av(e.id),className:(0,V.cn)("gap-2",e.id===F&&"font-medium"),children:[e.id===F?(0,t.jsx)(r.Check,{className:"h-3.5 w-3.5 shrink-0"}):(0,t.jsx)("span",{className:"w-3.5 shrink-0"}),(0,t.jsxs)("span",{className:"flex flex-col min-w-0 flex-1",children:[(0,t.jsxs)("span",{className:"flex items-center gap-1.5 truncate",children:[(0,t.jsx)("span",{className:"truncate",children:e.name}),e.readOnly&&(0,t.jsxs)("span",{className:"inline-flex items-center gap-0.5 rounded bg-muted px-1.5 text-[10px] text-muted-foreground font-normal shrink-0",children:[(0,t.jsx)(f,{className:"h-2.5 w-2.5"})," read-only"]})]}),(0,t.jsx)("span",{className:"truncate text-[10px] text-muted-foreground font-mono",children:e.rootDir}),e.git?.lastPulledAt&&n8(e.git.lastPulledAt)&&(0,t.jsxs)("span",{className:"text-[10px] text-muted-foreground/70",children:["synced ",n8(e.git.lastPulledAt)]})]}),W&&e.git&&(0,t.jsx)("button",{className:(0,V.cn)("shrink-0 rounded p-0.5 hover:bg-accent transition-colors",e.git.lastError?"text-destructive":"text-muted-foreground hover:text-foreground"),title:e.git.lastError?`Last refresh failed: ${e.git.lastError}`:"Refresh",disabled:ei===e.id,onClick:t=>{t.stopPropagation(),t.preventDefault(),ak(e.id)},children:(0,t.jsx)(O,{className:(0,V.cn)("h-3.5 w-3.5",ei===e.id&&"animate-spin")})}),W&&(0,t.jsx)("button",{className:"shrink-0 rounded p-0.5 text-muted-foreground hover:text-destructive hover:bg-destructive/10 transition-colors",title:"Delete workspace (does not delete files)",onClick:t=>{t.stopPropagation(),ea(e.id)},children:(0,t.jsx)(L.Trash2,{className:"h-3.5 w-3.5"})})]},e.id)),W&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(tE.DropdownMenuSeparator,{}),(0,t.jsxs)(tE.DropdownMenuItem,{onClick:()=>J(!0),children:[(0,t.jsx)(x,{className:"mr-2 h-3.5 w-3.5"}),"Add workspace…"]})]})]})]})}),(0,t.jsx)("div",{role:"separator","aria-orientation":"vertical","aria-label":"Resize sidebar",title:"Drag to resize",onMouseDown:e=>{e.preventDefault();let t=e.clientX;tr(!0);let a=document.body.style.cursor,n=document.body.style.userSelect;document.body.style.cursor="col-resize",document.body.style.userSelect="none";let s=e=>{ta(te+(e.clientX-t))},r=()=>{tr(!1),document.body.style.cursor=a,document.body.style.userSelect=n,window.removeEventListener("mousemove",s),window.removeEventListener("mouseup",r)};window.addEventListener("mousemove",s),window.addEventListener("mouseup",r)},onDoubleClick:()=>ta(288),onKeyDown:e=>{"ArrowLeft"===e.key?(e.preventDefault(),ta(te-16)):"ArrowRight"===e.key&&(e.preventDefault(),ta(te+16))},tabIndex:0,"aria-valuemin":200,"aria-valuemax":600,"aria-valuenow":te,className:(0,V.cn)("absolute right-0 top-0 z-20 h-full w-1.5 cursor-col-resize -mr-px transition-colors hover:bg-primary/40 focus:bg-primary/40 focus:outline-none hidden md:block",ts&&"bg-primary/60")})]}),(0,t.jsxs)("div",{className:"flex-1 flex flex-col min-w-0 relative",children:[e6&&(0,t.jsx)(U.Button,{size:"sm",variant:"ghost",className:"hidden md:flex absolute left-2 top-2 z-10 h-7 w-7 p-0",title:"Show sidebar",onClick:()=>e8(!1),children:(0,t.jsx)(C,{className:"h-3.5 w-3.5"})}),(0,t.jsxs)("div",{className:"md:hidden flex h-11 shrink-0 items-center justify-between gap-2 border-b bg-muted px-1",children:[(0,t.jsx)(U.Button,{size:"sm",variant:"ghost",className:"h-9 w-9 p-0",title:"Show sidebar",onClick:()=>{e8(!1),aG.useAIPanelStore.getState().close()},children:(0,t.jsx)(C,{className:"h-4 w-4"})}),(0,t.jsxs)("span",{className:"flex min-w-0 items-center gap-1.5 text-xs font-semibold tracking-tight text-muted-foreground",title:eY?.path,children:[eY&&(0,t.jsx)("span",{className:"editorial-tree-typeicon shrink-0",children:"app"===aB||"html"===aB?(0,t.jsx)(g.Globe,{className:"h-4 w-4 text-foreground/70"}):si(eY.name)?(0,t.jsx)(y.default,{className:"h-4 w-4 text-sunshine-700"}):ss(eY.name)?(0,t.jsx)(m.FileText,{className:"h-4 w-4 text-foreground/70"}):(0,t.jsx)(d.File,{className:"h-4 w-4 text-foreground/60"})}),(0,t.jsx)("span",{className:"truncate",children:eY?eY.name:"Wiki Viewer"})]}),(0,t.jsx)(U.Button,{size:"sm",variant:"ghost",className:"h-9 w-9 p-0",title:"AI Agent panel",onClick:()=>{aG.useAIPanelStore.getState().open(),e8(!0)},children:(0,t.jsx)(s,{className:"h-4 w-4"})})]}),eY?"node-app"===aB?(0,t.jsx)(tM,{path:eY.path,title:eY.name}):"app"===aB||"html"===aB?(e="html"===aB?`/api/assets/${eY.path}`:void 0,e5?(0,t.jsx)(tj,{path:eY.path,title:eY.name,src:e,fullscreen:!0,onExit:()=>e3(!1)}):(0,t.jsxs)("div",{className:"flex-1 flex flex-col overflow-hidden min-w-0",children:[(0,t.jsxs)("div",{className:(0,V.cn)("flex items-center justify-between px-4 py-2 border-b bg-muted shrink-0 editorial-doc-header",!e9&&e6&&"pl-11"),children:[(0,t.jsxs)("div",{className:"flex items-center gap-2 min-w-0",children:[(0,t.jsx)("span",{className:"hidden md:inline-flex",children:(0,t.jsx)("span",{className:"editorial-tree-typeicon",children:(0,t.jsx)(g.Globe,{className:"h-4 w-4 shrink-0 text-foreground/70"})})}),(0,t.jsx)("span",{className:"hidden md:inline text-sm font-normal truncate",title:eY.path,children:eY.path})]}),(0,t.jsxs)("div",{className:"flex items-center gap-1 shrink-0",children:[aR(eY),"html"===aB&&!tv&&null!==td&&(0,t.jsx)(U.Button,{size:"sm",variant:"ghost",className:"h-7 w-7 p-0",title:"Edit source",onClick:()=>{tk(!0),tC(td),tO(null)},children:(0,t.jsx)(E,{className:"h-3.5 w-3.5"})}),(0,t.jsx)(U.Button,{size:"sm",variant:"ghost",className:"h-7 w-7 p-0",title:"Refresh",onClick:()=>e7(e=>e+1),children:(0,t.jsx)(O,{className:"h-3.5 w-3.5"})}),(0,t.jsxs)(U.Button,{size:"sm",variant:"ghost",className:"h-7 gap-1.5 text-xs",onClick:()=>e3(!0),children:[(0,t.jsx)(k,{className:"h-3.5 w-3.5"}),"Open fullscreen"]}),(0,t.jsx)(U.Button,{size:"sm",variant:"ghost",className:"h-7 w-7 p-0",onClick:()=>{e0(null),tk(!1)},children:(0,t.jsx)(B.X,{className:"h-3.5 w-3.5"})})]})]}),tv&&"html"===aB?(0,t.jsxs)("div",{className:"flex-1 flex flex-col overflow-hidden min-h-0",children:[(0,t.jsx)("textarea",{value:t_,onChange:e=>tC(e.target.value),spellCheck:!1,className:"flex-1 w-full min-h-0 resize-none bg-background text-foreground px-4 py-3 font-mono text-[13px] leading-relaxed outline-none border-0"}),(0,t.jsxs)("div",{className:"border-t px-4 py-2 flex items-center justify-end gap-2 bg-muted shrink-0",children:[tD&&(0,t.jsx)("span",{className:"text-xs text-destructive mr-auto",children:tD}),(0,t.jsx)(U.Button,{size:"sm",variant:"ghost",onClick:()=>{tk(!1),tO(null)},children:"Cancel"}),(0,t.jsxs)(U.Button,{size:"sm",className:"gap-1",onClick:aj,disabled:tS,children:[tS&&(0,t.jsx)(N.Loader2,{className:"h-3 w-3 animate-spin"}),"Save"]})]})]}):(0,t.jsx)(tj,{path:eY.path,title:eY.name,src:e},e4)]})):(0,t.jsxs)("div",{className:"flex-1 flex flex-col overflow-hidden min-w-0",children:[(0,t.jsxs)("div",{className:(0,V.cn)("flex items-center justify-between px-4 py-2 border-b bg-muted shrink-0 editorial-doc-header",!e9&&e6&&"pl-11"),children:[(0,t.jsxs)("div",{className:"flex items-center gap-2 min-w-0",children:[(0,t.jsx)("span",{className:"hidden md:inline-flex",children:(0,t.jsx)("span",{className:"editorial-tree-typeicon",children:si(eY.name)?(0,t.jsx)(y.default,{className:"h-4 w-4 shrink-0 text-sunshine-700"}):ss(eY.name)?(0,t.jsx)(m.FileText,{className:"h-4 w-4 shrink-0 text-foreground/70"}):(0,t.jsx)(d.File,{className:"h-4 w-4 shrink-0 text-foreground/60"})})}),(0,t.jsx)("span",{className:"hidden md:inline text-sm font-normal truncate",title:eY.path,children:eY.path}),tW&&(0,t.jsxs)("span",{className:"hidden md:flex items-center gap-1 text-[11px] text-muted-foreground shrink-0 ml-1",children:[(0,t.jsx)(w,{className:"h-3 w-3 shrink-0"}),(0,t.jsx)("span",{className:"truncate max-w-[100px]",children:tW.author}),(0,t.jsx)("span",{title:new Date(tW.date).toLocaleString(),className:"shrink-0",children:n8(tW.date)})]})]}),(0,t.jsxs)("div",{className:"flex items-center gap-1 shrink-0",children:[aR(eY),(0,t.jsx)(U.Button,{size:"sm",variant:"ghost",className:"h-7 w-7 p-0",title:"File history",onClick:()=>{tV?tZ(!1):ac()},children:(0,t.jsx)(b,{className:"h-3.5 w-3.5"})}),(0,t.jsx)(U.Button,{size:"sm",variant:"ghost",className:"h-7 w-7 p-0",title:"Share",onClick:()=>tc(!0),children:(0,t.jsx)(I,{className:"h-3.5 w-3.5"})}),ss(eY.name)&&!tv&&(null!==td||sr(eY.name))&&(0,t.jsx)(U.Button,{size:"sm",variant:"ghost",className:"h-7 w-7 p-0",onClick:()=>{tk(!0),tC(td??""),tO(null),sr(eY.name)&&a2.useEditorStore.getState().loadPage(eY.path)},children:(0,t.jsx)(E,{className:"h-3.5 w-3.5"})}),ss(eY.name)&&tv&&sr(eY.name)&&(0,t.jsx)(U.Button,{size:"sm",variant:"ghost",className:"h-7 w-7 p-0",title:"Done editing",onClick:()=>{tk(!1),tO(null)},children:(0,t.jsx)(S.Eye,{className:"h-3.5 w-3.5"})}),ss(eY.name)&&!tv&&(null!==td||sr(eY.name))&&(0,t.jsx)(U.Button,{size:"sm",variant:"ghost",className:"h-7 w-7 p-0",title:"Refresh",onClick:ag,disabled:tw,children:tw?(0,t.jsx)(N.Loader2,{className:"h-3.5 w-3.5 animate-spin"}):(0,t.jsx)(O,{className:"h-3.5 w-3.5"})}),aK&&(0,t.jsx)(n4.ViewWidthToggle,{}),(0,t.jsx)(U.Button,{size:"sm",variant:"ghost",className:"h-7 w-7 p-0",onClick:()=>{e0(null),tu(null),tk(!1)},children:(0,t.jsx)(B.X,{className:"h-3.5 w-3.5"})})]})]}),tV&&(0,t.jsxs)("div",{className:"border-b bg-muted/30 shrink-0 max-h-[40vh] overflow-auto",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between px-4 py-1.5 border-b",children:[(0,t.jsx)("span",{className:"text-xs font-semibold text-muted-foreground",children:"History"}),(0,t.jsx)("button",{type:"button",className:"text-muted-foreground hover:text-foreground",onClick:()=>tZ(!1),children:(0,t.jsx)(B.X,{className:"h-3.5 w-3.5"})})]}),tQ?(0,t.jsx)("div",{className:"flex justify-center py-4",children:(0,t.jsx)(N.Loader2,{className:"h-4 w-4 animate-spin text-muted-foreground"})}):0===tX.length?(0,t.jsx)("p",{className:"px-4 py-3 text-xs text-muted-foreground",children:"No history found."}):(0,t.jsx)("div",{children:tX.map(e=>(0,t.jsxs)("div",{children:[(0,t.jsx)("button",{type:"button",className:(0,V.cn)("w-full text-left px-4 py-2 hover:bg-muted transition-colors",t1===e.sha&&"bg-muted"),onClick:()=>void ad(e.sha),children:(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)("code",{className:"text-[11px] font-mono text-muted-foreground shrink-0",children:e.shortSha}),(0,t.jsx)("span",{className:"flex-1 truncate text-xs",children:e.message}),(0,t.jsx)("span",{className:"shrink-0 text-[11px] text-muted-foreground",children:e.author}),(0,t.jsx)("span",{className:"shrink-0 text-[11px] text-muted-foreground",title:new Date(e.date).toLocaleString(),children:n8(e.date)})]})}),t1===e.sha&&(0,t.jsx)("div",{className:"border-t",children:t4?(0,t.jsx)("div",{className:"flex justify-center py-3",children:(0,t.jsx)(N.Loader2,{className:"h-4 w-4 animate-spin text-muted-foreground"})}):null!==t5?(0,t.jsx)("pre",{className:"overflow-auto px-4 py-2 text-[11px] font-mono leading-relaxed whitespace-pre text-foreground/80 max-h-60",children:t5}):null})]},e.sha))})]}),az?(0,t.jsx)(en,{path:eY.path,size:eY.size??0,onOpen:()=>e2(eY.path)}):tv?(0,t.jsx)("div",{className:"flex-1 flex flex-col overflow-hidden min-h-0",children:sr(eY.name)?(0,t.jsx)(Y.KBEditor,{}):(0,t.jsx)("textarea",{value:t_,onChange:e=>tC(e.target.value),spellCheck:!1,className:"flex-1 w-full min-h-0 resize-none bg-background text-foreground px-4 py-3 font-mono text-[13px] leading-relaxed outline-none border-0"})}):sr(eY.name)?(0,t.jsx)("div",{className:"flex-1 flex flex-col overflow-hidden min-h-0",children:tw?(0,t.jsx)("div",{className:"flex justify-center py-8",children:(0,t.jsx)(N.Loader2,{className:"h-5 w-5 animate-spin text-muted-foreground"})}):(0,t.jsx)(Y.KBEditor,{mode:"viewing"})}):(0,t.jsx)("div",{className:"flex-1 overflow-auto p-4 min-h-0",children:(0,t.jsx)("div",{className:(0,V.cn)("w-full",aV,aW),children:tw?(0,t.jsx)("div",{className:"flex justify-center py-8",children:(0,t.jsx)(N.Loader2,{className:"h-5 w-5 animate-spin text-muted-foreground"})}):"csv"===aB?(0,t.jsx)(Q,{path:eY.path,title:eY.name}):"pdf"===aB?(0,t.jsx)(tg,{path:eY.path,title:eY.name}):"mermaid"===aB?(0,t.jsx)(ec,{path:eY.path,title:eY.name}):"notebook"===aB?(0,t.jsx)(tm,{path:eY.path,title:eY.name}):"image"===aB?(0,t.jsx)(es,{path:eY.path,title:eY.name}):"media"===aB?(0,t.jsx)(er,{path:eY.path,title:eY.name,type:["mp4","webm","mov","m4v"].includes(st(eY.name))?"video":"audio"}):"docx"===aB?(0,t.jsx)(th,{path:eY.path,title:eY.name}):"xlsx"===aB?(0,t.jsx)(tf,{path:eY.path,title:eY.name}):"pptx"===aB?(0,t.jsx)(tx,{path:eY.path,title:eY.name}):"source"===aB?(0,t.jsx)(tN,{path:eY.path,title:eY.name}):"fallback"===aB?(0,t.jsx)(ee,{path:eY.path,title:eY.name}):null!==td?(0,t.jsx)("pre",{className:"text-xs font-mono whitespace-pre-wrap break-words leading-relaxed",children:td}):ss(eY.name)?(0,t.jsx)("p",{className:"text-sm text-muted-foreground",children:"Could not load file."}):(0,t.jsx)("p",{className:"text-sm text-muted-foreground",children:"Preview not available for this file type."})})}),tv&&!sr(eY.name)&&(0,t.jsxs)("div",{className:"border-t px-4 py-2 flex items-center justify-end gap-2 bg-muted shrink-0",children:[tD&&(0,t.jsx)("span",{className:"text-xs text-destructive mr-auto",children:tD}),(0,t.jsx)(U.Button,{size:"sm",variant:"ghost",onClick:()=>{tk(!1),tO(null)},children:"Cancel"}),(0,t.jsxs)(U.Button,{size:"sm",className:"gap-1",onClick:aj,disabled:tS,children:[tS&&(0,t.jsx)(N.Loader2,{className:"h-3 w-3 animate-spin"}),"Save"]})]})]}):(0,t.jsx)("div",{className:"flex-1 flex flex-col items-center justify-center",children:(0,t.jsxs)("div",{className:"flex flex-col items-center gap-2 text-center px-4",children:[(0,t.jsx)(m.FileText,{className:"h-8 w-8 text-muted-foreground"}),(0,t.jsx)("p",{className:"text-sm text-muted-foreground",children:"Select a file to view or edit"})]})})]}),(0,t.jsx)(au,{open:to,onOpenChange:tc,filePath:eY?.path??""}),(0,t.jsx)(tY,{open:ti,onOpenChange:tl}),(0,t.jsx)(ne,{currentPath:eY?.path}),(0,t.jsx)("input",{ref:eR,type:"file",multiple:!0,className:"hidden",onChange:e=>{e.target.files&&a_(e.target.files,eF.current)}}),(0,t.jsx)(K,{open:!!eZ,onOpenChange:e=>{e||eX(null)},title:eJ?"Delete folder?":"Delete file?",description:eJ?`"${eZ?.split("/").pop()}" and all its contents will be permanently deleted.`:`"${eZ?.split("/").pop()}" will be permanently removed.`,onConfirm:aF}),(0,t.jsx)(K,{open:!!et,onOpenChange:e=>{e||ea(null)},title:"Delete workspace?",description:`"${q.find(e=>e.id===et)?.name??""}" will be removed from the workspace list. Files on disk are NOT deleted.`,onConfirm:aN})]})]},F??"none")}],952683)}]);
|