@vantran-se/openchamber-web 2.0.3 → 2.0.5
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/README.md +20 -28
- package/bin/cli.js +3 -1
- package/bin/cli.test.js +13 -4
- package/bin/lib/DOCUMENTATION.md +4 -1
- package/bin/lib/commands-serve.js +9 -0
- package/dist/assets/{CodeMirrorCommentWidgets-CWhdh0wf.js → CodeMirrorCommentWidgets-DCAQTLMM.js} +1 -1
- package/dist/assets/DiffView-uzNpHBlV.js +4 -0
- package/dist/assets/FilesView-Bkq0sjNx.js +17 -0
- package/dist/assets/{GitView-DKIjpnu4.js → GitView-BmibZC7n.js} +4 -4
- package/dist/assets/{GuestAttachDialog-BIa9jCfL.js → GuestAttachDialog-D7TJG1rt.js} +1 -1
- package/dist/assets/GuestSurfacePane-PAcYaFzP.js +1 -0
- package/dist/assets/{JsonTreeView-CtI1Mqwo.js → JsonTreeView-BNT2yUVu.js} +1 -1
- package/dist/assets/{LinearIssuesView-BD2zLu-r.js → LinearIssuesView-D3Azksju.js} +1 -1
- package/dist/assets/MarkdownImageGallery-BGY6tuiK.js +1 -0
- package/dist/assets/MarkdownRendererImpl-DJmhQ37f.js +12 -0
- package/dist/assets/{OnboardingScreen-B8TxloXZ.js → OnboardingScreen-D_41H2qC.js} +1 -1
- package/dist/assets/{PatchDiff--Civs1xY.js → PatchDiff-C0RSqa9W.js} +1 -1
- package/dist/assets/{PierreDiffViewer-BlDmw3-A.js → PierreDiffViewer-BBE7tTY2.js} +3 -3
- package/dist/assets/{PlanView-DyH2SyCP.js → PlanView-Bqc-xuDe.js} +4 -4
- package/dist/assets/PluginPane-DQ0k41Q-.js +3 -0
- package/dist/assets/SettingsView-BAiJU5hJ.js +30 -0
- package/dist/assets/{SettingsWindow-y9WpZqK6.js → SettingsWindow-DuC4ecLw.js} +1 -1
- package/dist/assets/{SubmoduleDiffSummary-DeFmhPFZ.js → SubmoduleDiffSummary-0HgmcMXz.js} +1 -1
- package/dist/assets/{ToolOutputDialog-8DmF7_PZ.js → ToolOutputDialog-DdHkQJEE.js} +6 -6
- package/dist/assets/{ToolPartDiffPreview-Ca15DKE1.js → ToolPartDiffPreview-DWdN0r5K.js} +2 -2
- package/dist/assets/{VirtualizedFileDiff-BfEBad09.js → VirtualizedFileDiff-ClDezf2d.js} +1 -1
- package/dist/assets/{WalkthroughView-Cj3K8Xz6.js → WalkthroughView-BJicp0RC.js} +2 -2
- package/dist/assets/{appThemeRegistry-DAdawJZn.js → appThemeRegistry-CiuyzfSW.js} +1 -1
- package/dist/assets/changesTree-CePHbFcj.js +1 -0
- package/dist/assets/commitAndPush-DTKb6IwT.js +1 -0
- package/dist/assets/{computeVirtualFileMetrics-RF-KjfUH.js → computeVirtualFileMetrics-kM_zJNMt.js} +2 -2
- package/dist/assets/de-BMnfXm-G.js +10 -0
- package/dist/assets/es-DKEvCCL6.js +16 -0
- package/dist/assets/fr-D9fgE2xE.js +14 -0
- package/dist/assets/index-DUke1nme.css +1 -0
- package/dist/assets/{index-CL7ZQ94-.js → index-DWB8bR_g.js} +1 -1
- package/dist/assets/index-Di6zUe5h.js +41 -0
- package/dist/assets/{isDiffPlainText-D2yJ9fO6.js → isDiffPlainText-DOoIsGqs.js} +1 -1
- package/dist/assets/{isFilePlainText-BwMEq1Ey.js → isFilePlainText-bt5VHvcd.js} +1 -1
- package/dist/assets/ja-BEXad-KW.js +16 -0
- package/dist/assets/ko-DGrQ0lEe.js +16 -0
- package/dist/assets/{main-quLSA7jc.js → main-BpLQbZC2.js} +2 -2
- package/dist/assets/main-CI9DtHJv.js +896 -0
- package/dist/assets/{markdown-shiki.worker-CahLvHIq.js → markdown-shiki.worker-Bg8SoAJJ.js} +8 -5
- package/dist/assets/markdownCore-DK2KK5RW.js +7 -0
- package/dist/assets/{miniChat-D-lJJibr.js → miniChat-CIWaR8wG.js} +2 -2
- package/dist/assets/{mobile-VTtphbW6.js → mobile-CnWKEYIP.js} +2 -2
- package/dist/assets/patchFileDiff-Cqn0C0az.js +13 -0
- package/dist/assets/pl-BlhkmR5b.js +16 -0
- package/dist/assets/pt-BR-Bs96Ew9I.js +16 -0
- package/dist/assets/{renderElectronMiniChatApp-DF7ch5eM.js → renderElectronMiniChatApp-D9t0-9nV.js} +2 -2
- package/dist/assets/renderMobileApp-CW7fVs_s.js +25 -0
- package/dist/assets/runtimeEndpointReset-D0PcCb3K.js +27 -0
- package/dist/assets/scheduledTasksApi-Dahv3ws0.js +1 -0
- package/dist/assets/{shikiHighlight-_HeCCHx1.js → shikiHighlight-l-MbaNS4.js} +1 -1
- package/dist/assets/{textMateThemeFromAppTheme-C95XdFGj.js → textMateThemeFromAppTheme-C-kGcOpD.js} +1 -1
- package/dist/assets/tr-CehUK1M9.js +7 -0
- package/dist/assets/uk-Bno5WGNz.js +16 -0
- package/dist/assets/{useAppFontEffects-ZM9ij19-.js → useAppFontEffects-DDjuwVqi.js} +160 -156
- package/dist/assets/{useInlineCommentController-CkfxMJPy.js → useInlineCommentController-Clg8EO3A.js} +2 -2
- package/dist/assets/{useRootScrollLock-BtiAC1fj.js → useRootScrollLock-nDcRrgJ1.js} +2 -2
- package/dist/assets/{vendor-codemirror-language-data-U-lXzXNK.js → vendor-codemirror-language-data-oKF0MAwd.js} +2 -2
- package/dist/assets/vendor-opencode-client-DSZl7jSi.js +12 -0
- package/dist/assets/vendor-zod-BSoePkpP.js +39 -0
- package/dist/assets/{web-components-C583Pmfm.js → web-components-Bc1WPd4i.js} +1 -1
- package/dist/assets/zh-CN-DnAweIWo.js +16 -0
- package/dist/assets/zh-TW-BbBBK25p.js +16 -0
- package/dist/index.html +5 -5
- package/dist/mini-chat.html +5 -5
- package/dist/mobile.html +5 -5
- package/package.json +3 -3
- package/server/index.d.ts +2 -0
- package/server/index.js +196 -52
- package/server/lib/agent-tool/DOCUMENTATION.md +5 -0
- package/server/lib/agent-tool/runtime.js +89 -51
- package/server/lib/agent-tool/runtime.test.js +17 -0
- package/server/lib/browser-control/DOCUMENTATION.md +14 -2
- package/server/lib/event-stream/DOCUMENTATION.md +2 -2
- package/server/lib/event-stream/global-hub.js +45 -7
- package/server/lib/event-stream/global-hub.test.js +128 -2
- package/server/lib/event-stream/global-ws-bridge.js +3 -1
- package/server/lib/event-stream/rebind.test.js +1 -0
- package/server/lib/event-stream/runtime.js +1 -2
- package/server/lib/event-stream/upstream-reader.js +3 -2
- package/server/lib/git/DOCUMENTATION.md +1 -1
- package/server/lib/git/service.js +22 -0
- package/server/lib/git/service.test.js +8 -0
- package/server/lib/guests/DOCUMENTATION.md +4 -3
- package/server/lib/guests/catalog.js +19 -1
- package/server/lib/guests/catalog.test.js +22 -0
- package/server/lib/guests/html-styles.js +5 -3
- package/server/lib/guests/html-styles.test.js +3 -1
- package/server/lib/guests/routes.js +11 -3
- package/server/lib/guests/service.js +5 -0
- package/server/lib/guests/surface.js +55 -9
- package/server/lib/guests/surface.test.js +56 -6
- package/server/lib/notifications/DOCUMENTATION.md +10 -0
- package/server/lib/notifications/emit-route.js +118 -0
- package/server/lib/notifications/emit-route.test.js +112 -0
- package/server/lib/openchamber-control/actions.js +16 -2
- package/server/lib/openchamber-control/service.js +23 -0
- package/server/lib/openchamber-control/service.test.js +31 -0
- package/server/lib/openchamber-sessions/fork-inheritance.js +103 -0
- package/server/lib/openchamber-sessions/fork-inheritance.test.js +69 -0
- package/server/lib/openchamber-sessions/routes.js +11 -0
- package/server/lib/openchamber-sessions/routes.test.js +18 -0
- package/server/lib/opencode/DOCUMENTATION.md +23 -23
- package/server/lib/opencode/bootstrap-runtime.js +14 -1
- package/server/lib/opencode/compatibility.js +6 -3
- package/server/lib/opencode/compatibility.test.js +8 -0
- package/server/lib/opencode/config-entity-v2.test.js +27 -0
- package/server/lib/opencode/config-paths.test.js +12 -0
- package/server/lib/opencode/config-v2.d.ts +2 -0
- package/server/lib/opencode/config-v2.js +42 -0
- package/server/lib/opencode/config-v2.test.js +17 -0
- package/server/lib/opencode/core-routes.js +20 -4
- package/server/lib/opencode/core-routes.test.js +41 -0
- package/server/lib/opencode/env-runtime.js +1 -8
- package/server/lib/opencode/feature-routes-runtime.js +2 -1
- package/server/lib/opencode/lifecycle.js +156 -2
- package/server/lib/opencode/lifecycle.test.js +255 -1
- package/server/lib/opencode/managed-config-file.js +18 -6
- package/server/lib/opencode/managed-config-file.test.js +23 -7
- package/server/lib/opencode/mcp.js +7 -2
- package/server/lib/opencode/network-runtime.js +16 -7
- package/server/lib/opencode/network-runtime.test.js +29 -1
- package/server/lib/opencode/npm-registry-config.d.ts +1 -0
- package/server/lib/opencode/npm-registry-config.js +123 -0
- package/server/lib/opencode/npm-registry-config.test.js +167 -0
- package/server/lib/opencode/npm-registry.js +5 -6
- package/server/lib/opencode/npm-registry.test.js +30 -0
- package/server/lib/opencode/openchamber-routes.js +29 -11
- package/server/lib/opencode/openchamber-routes.test.js +18 -0
- package/server/lib/opencode/project-directory-runtime.js +8 -0
- package/server/lib/opencode/project-directory-runtime.test.js +13 -0
- package/server/lib/opencode/provider-source-route.test.js +59 -0
- package/server/lib/opencode/providers.js +3 -0
- package/server/lib/opencode/providers.test.js +62 -0
- package/server/lib/opencode/proxy.js +53 -16
- package/server/lib/opencode/routes-upgrade.test.js +1 -1
- package/server/lib/opencode/routes.js +36 -1
- package/server/lib/opencode/server-startup-runtime.js +25 -0
- package/server/lib/opencode/server-startup-runtime.test.js +67 -1
- package/server/lib/opencode/server-utils-runtime.js +5 -0
- package/server/lib/opencode/settings-helpers.js +10 -0
- package/server/lib/opencode/settings-helpers.test.js +2 -2
- package/server/lib/opencode/settings-registry.json +17 -0
- package/server/lib/opencode/settings-runtime.js +1 -0
- package/server/lib/opencode/shared-service-runtime.js +155 -0
- package/server/lib/opencode/shared-service-runtime.test.js +180 -0
- package/server/lib/opencode/shared.js +49 -4
- package/server/lib/opencode/shared.test.js +78 -1
- package/server/lib/opencode/shutdown-runtime.js +14 -5
- package/server/lib/opencode/shutdown-runtime.test.js +77 -2
- package/server/lib/opencode/skill-routes.js +28 -12
- package/server/lib/opencode/skill-routes.test.js +121 -1
- package/server/lib/opencode/startup-pipeline-runtime.js +5 -4
- package/server/lib/opencode/startup-pipeline-runtime.test.js +18 -7
- package/server/lib/opencode/upgrade-capability.js +0 -14
- package/server/lib/opencode/v1-migration-topup.js +21 -15
- package/server/lib/opencode/v1-migration-topup.test.js +14 -6
- package/server/lib/opencode/v2-install.d.ts +1 -0
- package/server/lib/opencode/v2-install.js +8 -7
- package/server/lib/opencode/v2-install.test.js +13 -4
- package/server/lib/opencode/watcher.js +3 -1
- package/server/lib/opencode/watcher.test.js +54 -0
- package/server/lib/opencode/websearch-config.js +13 -1
- package/server/lib/quota/providers/kimi.js +1 -1
- package/server/lib/realtime-proxy.js +5 -1
- package/server/lib/realtime-proxy.test.js +29 -0
- package/server/lib/relay/tunnel-host.js +4 -1
- package/server/lib/relay/tunnel-host.test.js +11 -0
- package/server/lib/session-assist/DOCUMENTATION.md +17 -5
- package/server/lib/session-assist/runtime.js +19 -2
- package/server/lib/session-assist/runtime.test.js +8 -0
- package/server/lib/session-goal/DOCUMENTATION.md +11 -0
- package/server/lib/small-model/DOCUMENTATION.md +11 -10
- package/server/lib/small-model/index.js +27 -32
- package/server/lib/small-model/index.test.js +28 -16
- package/server/lib/spaces/DOCUMENTATION.md +404 -32
- package/server/lib/spaces/code-in-bait.js +145 -6
- package/server/lib/spaces/code-in.js +10 -150
- package/server/lib/spaces/code-in.test.js +7 -83
- package/server/lib/spaces/code-out.js +1819 -0
- package/server/lib/spaces/code-out.test.js +3945 -0
- package/server/lib/spaces/code-transfer.js +173 -0
- package/server/lib/spaces/command-stream.test.js +181 -0
- package/server/lib/spaces/dispatcher.js +670 -0
- package/server/lib/spaces/dispatcher.test.js +582 -0
- package/server/lib/spaces/gatekeeper-channel.js +61 -7
- package/server/lib/spaces/gatekeeper-channel.test.js +43 -7
- package/server/lib/spaces/gatekeeper-program.cjs +68 -14
- package/server/lib/spaces/gatekeeper-program.test.js +118 -3
- package/server/lib/spaces/hardening.js +20 -4
- package/server/lib/spaces/hardening.test.js +18 -3
- package/server/lib/spaces/host-git.js +7 -4
- package/server/lib/spaces/host-git.test.js +6 -2
- package/server/lib/spaces/host.js +310 -0
- package/server/lib/spaces/host.test.js +273 -0
- package/server/lib/spaces/journey.js +552 -0
- package/server/lib/spaces/journey.test.js +589 -0
- package/server/lib/spaces/layout.js +42 -8
- package/server/lib/spaces/manager.js +4 -3
- package/server/lib/spaces/manager.test.js +6 -0
- package/server/lib/spaces/places/code-out.docker.live.test.js +412 -0
- package/server/lib/spaces/places/contract-suite.js +36 -0
- package/server/lib/spaces/places/dispatcher.docker.live.test.js +296 -0
- package/server/lib/spaces/places/docker-live-support.js +27 -4
- package/server/lib/spaces/places/docker.js +33 -5
- package/server/lib/spaces/places/docker.test.js +42 -3
- package/server/lib/spaces/places/escape-suite.js +118 -14
- package/server/lib/spaces/places/fake-docker.js +3 -1
- package/server/lib/spaces/places/grants.docker.live.test.js +197 -0
- package/server/lib/spaces/places/memory-place.js +24 -1
- package/server/lib/spaces/places/registry.js +1 -1
- package/server/lib/spaces/places/server.docker.live.test.js +69 -33
- package/server/lib/spaces/places/sessions.docker.live.test.js +222 -0
- package/server/lib/spaces/routes.js +216 -0
- package/server/lib/spaces/routes.test.js +213 -0
- package/server/lib/spaces/run-command.js +261 -8
- package/server/lib/spaces/run-command.test.js +193 -3
- package/server/lib/spaces/space-events.js +153 -0
- package/server/lib/spaces/space-events.test.js +160 -0
- package/server/lib/spaces/space-opencode.js +52 -0
- package/server/lib/spaces/space-opencode.test.js +41 -0
- package/server/lib/spaces/space-records.js +150 -0
- package/server/lib/spaces/space-records.test.js +113 -0
- package/server/lib/spaces/space-sessions.js +210 -0
- package/server/lib/spaces/space-sessions.test.js +161 -0
- package/server/lib/spaces/websocket.js +329 -0
- package/server/lib/spaces/websocket.test.js +345 -0
- package/server/lib/ui-auth/ui-auth.js +8 -2
- package/server/lib/ui-auth/ui-auth.test.js +29 -0
- package/server/opencode-proxy.test.js +271 -0
- package/server/proxy-headers.js +8 -2
- package/server/proxy-headers.test.js +20 -0
- package/dist/assets/DiffView-CX3wAX2S.js +0 -4
- package/dist/assets/FilesView-OL3CON3r.js +0 -17
- package/dist/assets/GuestSurfacePane-B_cqX5I5.js +0 -1
- package/dist/assets/MarkdownImageGallery-DFiTFZgj.js +0 -1
- package/dist/assets/MarkdownRendererImpl-DZm5sf1W.js +0 -12
- package/dist/assets/PluginPane-BibJit86.js +0 -3
- package/dist/assets/SettingsView-h-VpVO47.js +0 -29
- package/dist/assets/commitAndPush-BIPfOMXY.js +0 -1
- package/dist/assets/de-BqCNGROu.js +0 -10
- package/dist/assets/es-BTPpTRgN.js +0 -16
- package/dist/assets/fr-hxbzMdAg.js +0 -14
- package/dist/assets/index-CLcM8HKx.css +0 -1
- package/dist/assets/index-CvLgnuNI.js +0 -41
- package/dist/assets/ja-_zLwwYiy.js +0 -16
- package/dist/assets/ko-CFn3Dzhc.js +0 -16
- package/dist/assets/main-BLJaug9I.js +0 -896
- package/dist/assets/markdownCore-DS9FdwrI.js +0 -5
- package/dist/assets/patchFileDiff-D9iBcTEi.js +0 -13
- package/dist/assets/pl-DFHE7xac.js +0 -16
- package/dist/assets/pt-BR-CUjZF179.js +0 -16
- package/dist/assets/renderMobileApp-CNQhdXsi.js +0 -25
- package/dist/assets/runtimeEndpointReset-DeaERc0M.js +0 -27
- package/dist/assets/scheduledTasksApi-BD6Vx9pu.js +0 -1
- package/dist/assets/tr-BB6sA_zH.js +0 -7
- package/dist/assets/uk-CB4o8g-o.js +0 -16
- package/dist/assets/vendor-opencode-client-_BAHQo4R.js +0 -12
- package/dist/assets/vendor-zod-Gea9uBlY.js +0 -39
- package/dist/assets/zh-CN-BRyDuWhc.js +0 -16
- package/dist/assets/zh-TW-BDGbWA1Q.js +0 -16
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import{f as Re,R as i,c as Ei,j as r,r as ht}from"./vendor-react-BUCujlKS.js";import{a as tt,h as en,Y as Mo,Z as Do,_ as zo,$ as Lo,v as et,u as mt,e1 as Ao,I as Vi,B as Io,a3 as Pi,e as Oo,d$ as Bo,a2 as $o,e0 as _o}from"./index-CvLgnuNI.js";import{f as st,z as Mi,ai as sa,cf as Wo,h as W,kw as Uo,g5 as Ko,X as Fs,B as I,I as E,kx as Ho,aA as Ns,gV as qo,gT as Go,_ as Xo,T as Jo,bj as Yo,K as Zo,ak as Qo,cA as el,eF as Di,ix as tl,gr as sl,t as re,l as zi,ay as Kr,ct as bs,d9 as rl,b as nl,ky as ys,c1 as il,az as Hr,kz as qr,cu as Li,cv as Ai,kA as Ii,kB as Oi,kC as al,kD as ol,kE as ll,hy as cl,kF as ul,kG as dl,kH as fl,c2 as ra,c3 as na,c4 as ia,c5 as aa,c6 as oa,c7 as la,as as tn,at as sn,av as rn,bh as ur,c8 as Gr,aB as ar,cp as Xr,ae as Mt,af as Dt,ag as zt,b$ as ml,c0 as hl,g as fr,bi as pl,cz as gl}from"./useAppFontEffects-ZM9ij19-.js";import{at as xl,Y as vl,Z as wl,_ as bl,$ as yl,a0 as jl}from"./runtimeEndpointReset-DeaERc0M.js";import{c as Bi,s as Nl,P as js,C as Sl}from"./shikiHighlight-_HeCCHx1.js";import{a as Fl}from"./vendor-codemirror-state-C9awkmn-.js";import{E as Lt}from"./vendor-codemirror-view-CiLROUVV.js";import{V as Cl,J as kl,F as Rl}from"./JsonTreeView-CtI1Mqwo.js";import{ensurePierreThemeRegistered as $i,getResolvedShikiTheme as Tl}from"./appThemeRegistry-DAdawJZn.js";import{V as El,W as Vl}from"./Virtualizer-CZlLSacm.js";import{V as Pl}from"./Virtualizer-D_a8gKmg.js";import{a as Ml,u as or,b as Dl,c as zl,h as Ll,i as Al,j as Il}from"./scheduledTasksApi-BD6Vx9pu.js";import{D as Ol}from"./vendor-react-drawio-Ct3Q0DsD.js";import{I as Bl,u as $l,n as _l}from"./useInlineCommentController-CkfxMJPy.js";import{b as Wl}from"./CodeMirrorCommentWidgets-CWhdh0wf.js";import"./vendor-scheduler-7OC5HNn7.js";import"./vendor-zod-Gea9uBlY.js";import"./vendor-vite-runtime-DD1OZmLC.js";import"./vendor-zustand-BAGL70zf.js";import"./vendor-opencode-client-_BAHQo4R.js";import"./vendor-simplewebauthn-browser-VDA66rT_.js";import"./vendor-base-ui-CsXYnR5c.js";import"./vendor-floating-ui-utils-D6FqdtJt.js";import"./vendor-floating-ui-react-dom-DxYCWdHj.js";import"./vendor-floating-ui-dom-BTvzWks8.js";import"./vendor-floating-ui-core-PuGzNPnN.js";import"./vendor-use-sync-external-store-D6wYuSt-.js";import"./vendor-class-variance-authority-5VPnzWs2.js";import"./vendor-clsx-B-dksMZM.js";import"./vendor-dnd-kit-core-BZknOX2w.js";import"./vendor-dnd-kit-utilities-B_MdXhJC.js";import"./vendor-dnd-kit-accessibility-BHxJPORy.js";import"./vendor-dnd-kit-sortable-CsEagZ81.js";import"./vendor-framer-motion-Bq3iTZ6r.js";import"./vendor-motion-dom-DcCgeG69.js";import"./vendor-motion-utils-BGh8QBgx.js";import"./vendor-tanstack-react-virtual-ClYN8CzB.js";import"./vendor-tanstack-virtual-core-BewVQryB.js";import"./contextPanelEmbeddedChat-CirXEPJq.js";import"./vendor-sonner-DFyL3AvE.js";import"./vendor-cmdk-DgLInKvT.js";import"./vendor-radix-ui-react-dialog-B94Bt2qq.js";import"./vendor-radix-ui-primitive-Dc_FVRD7.js";import"./vendor-radix-ui-react-compose-refs-DcAh5WdT.js";import"./vendor-radix-ui-react-context-Czxm7Z62.js";import"./vendor-radix-ui-react-id-f5BLKEVw.js";import"./vendor-radix-ui-react-use-layout-effect-D_3IhJdJ.js";import"./vendor-radix-ui-react-use-controllable-state-BFT5YmkA.js";import"./vendor-radix-ui-react-dismissable-layer-D7kXcwgJ.js";import"./vendor-radix-ui-react-primitive-DhVoX9SD.js";import"./vendor-radix-ui-react-slot-BQgQOasS.js";import"./vendor-radix-ui-react-use-callback-ref-BZPnuXAC.js";import"./vendor-radix-ui-react-use-escape-keydown-oph88g-F.js";import"./vendor-radix-ui-react-focus-scope-CiaxW4dD.js";import"./vendor-radix-ui-react-portal-BMJYHWck.js";import"./vendor-radix-ui-react-presence-CNxf-uq4.js";import"./vendor-radix-ui-react-focus-guards-B6qJXYua.js";import"./vendor-react-remove-scroll-DO7dCTnK.js";import"./vendor-tslib-De9GV7Vy.js";import"./vendor-react-remove-scroll-bar-BcFYyj3E.js";import"./vendor-react-style-singleton-q6EMHnwf.js";import"./vendor-get-nonce-C-Z93AgS.js";import"./vendor-use-sidecar-zDC0RhA3.js";import"./vendor-use-callback-ref-D3RC8gqK.js";import"./vendor-aria-hidden-DvXkyWUv.js";import"./vendor-codemirror-language-BgPj_McA.js";import"./vendor-lezer-common-B3-cUCR_.js";import"./vendor-lezer-highlight-CDMHUZ74.js";import"./vendor-style-mod-NZ5MEPvj.js";import"./vendor-codemirror-lang-javascript-Cc2ZYbgX.js";import"./vendor-lezer-javascript-D7Tj24ot.js";import"./vendor-lezer-lr-bhwg1HMg.js";import"./vendor-codemirror-autocomplete-DzPz9Wgq.js";import"./vendor-marijn-find-cluster-break-DXwl3gUT.js";import"./vendor-w3c-keyname-Vcq4gwWv.js";import"./vendor-crelt-C8TCjufn.js";import"./vendor-codemirror-lang-json-CMBS2tG9.js";import"./vendor-lezer-json-Iaex0UN-.js";import"./vendor-codemirror-lang-css-O0cZX78y.js";import"./vendor-lezer-css-C5xB6jxd.js";import"./vendor-codemirror-lang-html-CfgK872x.js";import"./vendor-lezer-html-C0I1p52t.js";import"./vendor-codemirror-lang-markdown-BPGOH9ye.js";import"./vendor-lezer-markdown-C6g-d6P3.js";import"./vendor-codemirror-language-data-U-lXzXNK.js";import"./vendor-codemirror-lang-python-HahnQaAS.js";import"./vendor-lezer-python-CvuFxeZl.js";import"./vendor-codemirror-commands-B7H_j0iU.js";import"./vendor-legendapp-list-BuBPBC3R.js";import"./vendor-tailwind-merge-CPcsbTWB.js";import"./vendor-fuse.js-Dw8P0qyA.js";import"./GuestAttachDialog-BIa9jCfL.js";import"./PluginPane-BibJit86.js";import"./vendor-codemirror-search-BmS-GmcX.js";import"./vendor-replit-codemirror-vim-B2DJlAhT.js";import"./vendor-replit-codemirror-vim-core-FHzKdNUS.js";import"./web-components-C583Pmfm.js";import"./computeVirtualFileMetrics-RF-KjfUH.js";import"./vendor-shiki-Bbf2GEcE.js";import"./vendor-shikijs-core-CGM_jqPK.js";import"./vendor-shikijs-types-CPSbSeK6.js";import"./vendor-shikijs-vscode-textmate-BgLrS_2D.js";import"./vendor-hast-util-to-html-BKBhbTDb.js";import"./vendor-html-void-elements-CkdplsNl.js";import"./vendor-property-information-rJCbAzvX.js";import"./vendor-zwitch-C2o2j-tx.js";import"./vendor-stringify-entities-CsH1VEn9.js";import"./vendor-character-entities-legacy-BpoLgcEt.js";import"./vendor-character-entities-html4-D7taRCQ7.js";import"./vendor-ccount-c2V3InAJ.js";import"./vendor-comma-separated-tokens-D8TqSuIK.js";import"./vendor-space-separated-tokens-DD3iYX1K.js";import"./vendor-hast-util-whitespace-D4Wp6AEg.js";import"./vendor-shikijs-engine-oniguruma-DPWuIF1G.js";import"./themeResolver-BmJyTmjJ.js";import"./vendor-pierre-theming-C6Z4M5_u.js";import"./vendor-shikijs-engine-javascript-Cme4830A.js";import"./vendor-oniguruma-to-es-DLBnFDCE.js";import"./vendor-oniguruma-parser-C0D4_9rT.js";import"./vendor-regex-BBWcyTkg.js";import"./vendor-regex-utilities-2BQyy0xI.js";import"./vendor-regex-recursion-JU4mF-dD.js";import"./vendor-shikijs-transformers-CZWsLLKm.js";import"./isFilePlainText-BwMEq1Ey.js";import"./textMateThemeFromAppTheme-C95XdFGj.js";function _i(n){const e=Re.c(41),{containerRef:t,filePath:a,fileContent:w}=n,{t:f}=st(),v=Mi(Yl),d=Mi(Jl),x=sa(),g=Wo(Xl),[m,b]=i.useState(null),[y,C]=i.useState(""),[N,F]=i.useState(!1),p=i.useRef(!1),l=i.useRef(null),T=i.useRef(null),[R,M]=i.useState(null);let D;e[0]===Symbol.for("react.memo_cache_sentinel")?(D=()=>{b(null),C(""),F(!1),p.current=!1,T.current=null,M(null)},e[0]=D):D=e[0];const L=D;let k,V;e[1]!==t?(k=()=>{const K=t.current;if(!K)return;const ie=()=>{if(p.current)return;const ae=window.getSelection(),fe=ae?.toString().trim()??"";if(!ae||!fe||ae.rangeCount===0){L();return}const me=ae.getRangeAt(0);if(!K.contains(me.commonAncestorContainer)){L();return}const ce=me.getBoundingClientRect();T.current=me.cloneRange(),C(fe),b({x:ce.left+ce.width/2,y:ce.top-10})},_=ae=>{l.current?.contains(ae.target)||p.current&&L()};return document.addEventListener("selectionchange",ie),document.addEventListener("pointerdown",_),()=>{document.removeEventListener("selectionchange",ie),document.removeEventListener("pointerdown",_)}},V=[t,L],e[1]=t,e[2]=k,e[3]=V):(k=e[2],V=e[3]),i.useEffect(k,V);let z;e[4]!==w?(z=K=>{const ie=he=>w.slice(0,he).split(`
|
|
2
|
-
`).length,_=ql,ae=(he,ve)=>{for(const Ee of _(he)){const ye=w.indexOf(Ee,ve);if(ye>=0)return ye}return-1},fe=K.length>=8?w.indexOf(K):-1;if(fe>=0){const he=ie(fe);return{start:he,end:he+K.split(`
|
|
3
|
-
`).length-1}}const me=K.split(`
|
|
4
|
-
`).map(Hl).filter(Boolean);if(me.length===0)return null;const ce=ae(me[0],0);if(ce<0)return null;const be=ie(ce);if(me.length===1)return{start:be,end:be};const xe=ae(me[me.length-1],ce);return xe<0?null:{start:be,end:Math.max(be,ie(xe))}},e[4]=w,e[5]=z):z=e[5];const B=z;let U;e[6]===Symbol.for("react.memo_cache_sentinel")?(U=()=>{const K=T.current;if(!K){M(null);return}M(Uo(K))},e[6]=U):U=e[6];const Z=U;let te,ee;e[7]!==N?(te=()=>{if(!N)return;let K=null;const ie=()=>{K===null&&(K=window.requestAnimationFrame(()=>{K=null,Z()}))};return document.addEventListener("scroll",ie,{capture:!0,passive:!0}),window.addEventListener("resize",ie),()=>{K!==null&&window.cancelAnimationFrame(K),document.removeEventListener("scroll",ie,{capture:!0}),window.removeEventListener("resize",ie)}},ee=[N,Z],e[7]=N,e[8]=te,e[9]=ee):(te=e[8],ee=e[9]),i.useEffect(te,ee);let q;e[10]!==y?(q=()=>{y&&(F(!0),p.current=!0,Z(),window.getSelection()?.removeAllRanges())},e[10]=y,e[11]=q):q=e[11];const G=q;let X;e[12]!==g||e[13]!==v||e[14]!==x||e[15]!==a||e[16]!==d||e[17]!==B||e[18]!==y?(X=K=>{const ie=v??(d?"draft":null);if(!y||!ie||!x){L();return}const _=B(y);g({directory:x,sessionKey:ie},{source:"file-quote",fileLabel:a,startLine:_?.start??0,endLine:_?.end??0,code:y,language:"",text:K.trim()}),L(),queueMicrotask(Kl)},e[12]=g,e[13]=v,e[14]=x,e[15]=a,e[16]=d,e[17]=B,e[18]=y,e[19]=X):X=e[19];const H=X;if(!m)return null;let Q;e[20]!==N||e[21]!==B||e[22]!==y?(Q=N?B(y):null,e[20]=N,e[21]=B,e[22]=y,e[23]=Q):Q=e[23];const _e=Q;let ne;e[24]!==m.x||e[25]!==m.y?(ne={left:m.x,top:m.y,transform:"translate(-50%, -100%)"},e[24]=m.x,e[25]=m.y,e[26]=ne):ne=e[26];let Te;e[27]!==N||e[28]!==R?(Te=N&&R&&R.length>0?Ei.createPortal(r.jsx("div",{className:"pointer-events-none fixed inset-0 z-40",children:R.map(Ul)}),document.body):null,e[27]=N,e[28]=R,e[29]=Te):Te=e[29];let De;e[30]!==N||e[31]!==a||e[32]!==_e||e[33]!==G||e[34]!==H||e[35]!==f?(De=N?r.jsx("div",{className:"w-[min(420px,80vw)]",children:r.jsx(Bl,{fileLabel:a,lineRange:_e?{start:_e.start,end:_e.end}:void 0,onSave:H,onCancel:L})}):r.jsx("div",{className:W("flex items-center whitespace-nowrap","oc-glass-popover rounded-full border border-[var(--interactive-border)]","shadow-[0_4px_16px_-4px_rgb(0_0_0_/_0.12)]","p-1"),children:r.jsx("button",{type:"button",onClick:G,className:W("px-3.5 py-1.5 rounded-full","text-sm font-medium","text-foreground","hover:bg-[var(--interactive-hover)]","transition-colors duration-150"),title:f("chat.textSelection.title.commentOnSelection"),children:f("chat.textSelection.actions.comment")})}),e[30]=N,e[31]=a,e[32]=_e,e[33]=G,e[34]=H,e[35]=f,e[36]=De):De=e[36];let ze;return e[37]!==ne||e[38]!==Te||e[39]!==De?(ze=Ei.createPortal(r.jsxs("div",{ref:l,className:"fixed z-50",style:ne,children:[Te,De]}),document.body),e[37]=ne,e[38]=Te,e[39]=De,e[40]=ze):ze=e[40],ze}function Ul(n,e){return r.jsx("div",{className:"oc-chat-comment-rect absolute",style:{left:n.left,top:n.top,width:n.width,height:n.height}},e)}function Kl(){Ko()}function Hl(n){return n.trim()}function ql(n){const e=n.trim();return[e,e.slice(0,32),e.split(" ").slice(0,4).join(" ")].filter(Gl)}function Gl(n){return n.length>=8}function Xl(n){return n.addDraft}function Jl(n){return n.newSessionDraft?.open}function Yl(n){return n.currentSessionId}const Zl=(n,e)=>{if(!e)return null;const t=Number.parseInt(n.trim(),10);return!Number.isFinite(t)||t<1?null:Math.min(t,e.state.doc.lines)},Wi=(n,e)=>{const t=n.state.doc.lineAt(e.main.head);return{lineNumber:t.number,character:e.main.head-t.from+1,selection:e}},Ui=(n,e,t)=>{const a=n.state.doc.line(e),w=Math.max(1,Math.min(t,a.length+1)),f=a.from+w-1;n.dispatch({selection:Fl.cursor(f),effects:Lt.scrollIntoView(f,{y:"center"})})};function Ql({open:n,onOpenChange:e,view:t,variant:a="overlay"}){const{t:w}=st(),[f,v]=i.useState(""),d=i.useRef(null),x=i.useRef(!1),g=i.useRef(null),m=i.useRef(null),b=i.useMemo(()=>Zl(f,t),[f,t]);i.useEffect(()=>{!n||!t||(x.current=!1,d.current=Wi(t,t.state.selection),v(""))},[n,t]),i.useEffect(()=>{n&&window.requestAnimationFrame(()=>{m.current?.focus(),m.current?.select()})},[n]),i.useEffect(()=>{if(!(!n||!t||!d.current)){if(b===null){const{selection:p}=d.current;t.dispatch({selection:p,effects:Lt.scrollIntoView(p.main.from,{y:"center"})});return}Ui(t,b,d.current.character)}},[b,n,t]);const y=i.useCallback(()=>{if(!t||x.current||!d.current)return;const{selection:p}=d.current;t.dispatch({selection:p,effects:Lt.scrollIntoView(p.main.from,{y:"center"})})},[t]),C=i.useCallback(p=>{p||y(),e(p)},[e,y]),N=i.useCallback(()=>{!t||b===null||!d.current||(x.current=!0,Ui(t,b,d.current.character),e(!1),t.focus())},[b,e,t]);i.useEffect(()=>{if(!n)return;const p=T=>{const R=g.current,M=T.target;!R||!(M instanceof Node)||R.contains(M)||C(!1)},l=T=>{T.key==="Escape"&&(T.preventDefault(),C(!1))};return document.addEventListener("pointerdown",p,!0),document.addEventListener("keydown",l,!0),()=>{document.removeEventListener("pointerdown",p,!0),document.removeEventListener("keydown",l,!0)}},[C,n,a]);const F=i.useMemo(()=>{if(!t)return w("goToLineDialog.helper.editorUnavailable");if(b===null){const p=d.current??Wi(t,t.state.selection);return w("goToLineDialog.helper.currentLineRange",{current:p.lineNumber,max:t.state.doc.lines})}return w("goToLineDialog.helper.goToLine",{line:b})},[b,w,t]);return a==="inline"?n?r.jsxs("div",{ref:g,className:"ml-1 flex h-6 items-center gap-1",children:[r.jsx(Fs,{ref:m,type:"number",min:1,step:1,inputMode:"numeric",value:f,onChange:p=>v(p.target.value),onKeyDown:p=>{p.key==="Enter"&&(p.preventDefault(),N())},placeholder:w("goToLineDialog.field.linePlaceholderShort"),className:"h-6 w-20 rounded-md border-border/70 bg-transparent px-2 typography-meta"}),r.jsx(I,{variant:"outline",size:"xs",onClick:N,disabled:!t||b===null,className:"h-6 px-2",children:w("goToLineDialog.actions.go")})]}):null:r.jsx("div",{ref:g,className:W("absolute left-3 top-3 z-40 w-[min(32rem,calc(100%-1.5rem))] rounded-xl border border-[var(--interactive-border)] bg-[color:color-mix(in_srgb,var(--surface-elevated)_94%,transparent)] p-2.5 shadow-lg backdrop-blur-sm transition-all",n?"pointer-events-auto translate-y-0 opacity-100":"pointer-events-none -translate-y-1 opacity-0"),children:r.jsxs("div",{className:"min-w-0",children:[r.jsx(Fs,{ref:m,type:"number",min:1,step:1,inputMode:"numeric",value:f,onChange:p=>v(p.target.value),onKeyDown:p=>{p.key==="Enter"&&(p.preventDefault(),N())},placeholder:w("goToLineDialog.field.linePlaceholder"),className:"h-8 w-full rounded-md border-border/70 bg-surface-elevated/60 typography-ui-label"}),r.jsx("div",{className:"mt-2 rounded-md bg-primary/15 px-3 py-1.5 typography-ui-label text-foreground/95",children:F})]})})}const ec=(n,e)=>{const t=e.trim().toLowerCase(),a=[];if(!t)return a;const w=n.toLowerCase();let f=0;for(;;){const v=w.indexOf(t,f);if(v===-1)break;a.push({start:v,end:v+t.length}),f=v+t.length}return a},mr="data-md-find",Jr="data-md-find-current",ca="rounded-[2px] bg-status-warning/30 text-foreground",tc="rounded-[2px] bg-status-warning/60 text-foreground",sc=120,rc=n=>n instanceof Element&&n.hasAttribute(mr),nc=n=>n.target instanceof Element&&n.target.hasAttribute(mr)?!0:[...n.addedNodes].some(e=>rc(e)),ua=n=>{const e=new Set;n.querySelectorAll(`mark[${mr}]`).forEach(t=>{const a=t.parentNode;a&&(a.replaceChild(document.createTextNode(t.textContent??""),t),e.add(a))}),e.forEach(t=>t.normalize())},ic=(n,e)=>{ua(n);const t=e.trim().toLowerCase();if(!t)return[];const a=[],w=document.createTreeWalker(n,NodeFilter.SHOW_TEXT,{acceptNode(v){const d=v.parentElement;return!d||d.closest("svg, script, style")?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT}}),f=[];for(;w.nextNode();){const v=w.currentNode;v instanceof Text&&f.push(v)}for(const v of f){const d=v.nodeValue??"";if(!d)continue;const x=ec(d,t);if(x.length===0)continue;const g=v.parentNode;if(!g)continue;const m=document.createDocumentFragment();let b=0;for(const y of x){y.start>b&&m.appendChild(document.createTextNode(d.slice(b,y.start)));const C=document.createElement("mark");C.setAttribute(mr,""),C.className=ca,C.textContent=d.slice(y.start,y.end),m.appendChild(C),a.push(C),b=y.end}b<d.length&&m.appendChild(document.createTextNode(d.slice(b))),g.replaceChild(m,v)}return a},Ki=({containerRef:n,open:e,onOpenChange:t,focusNonce:a,className:w})=>{const{t:f}=st(),[v,d]=i.useState(""),[x,g]=i.useState(0),[m,b]=i.useState(0),y=i.useRef(null),C=i.useRef([]),N=i.useRef(v);N.current=v;const F=i.useRef(null),p=i.useRef(null),l=i.useCallback((k,V=!1)=>{const z=n.current;if(!z){C.current=[],g(0),b(0);return}C.current=ic(z,k);const B=C.current.length;g(B),b(U=>!V||B===0?0:Math.min(U,B-1))},[n]),T=i.useCallback((k,V=!1)=>{F.current&&clearTimeout(F.current),F.current=setTimeout(()=>{F.current=null,l(k,V)},sc)},[l]);i.useEffect(()=>()=>{F.current&&clearTimeout(F.current)},[]);const R=i.useCallback(()=>{t(!1);const k=p.current;p.current=null,k?.isConnected&&k.focus()},[t]);i.useEffect(()=>{const k=n.current;if(!e||!k)return;const V=new MutationObserver(z=>{!N.current.trim()||!z.some(U=>!nc(U))||T(N.current,!0)});return V.observe(k,{childList:!0,subtree:!0,characterData:!0}),()=>{V.disconnect(),ua(k)}},[n,e,T]),i.useEffect(()=>{if(!e)return;const k=document.activeElement;k instanceof HTMLElement&&!p.current&&(p.current=k),y.current?.focus()},[e]),i.useEffect(()=>{e&&a>0&&(y.current?.focus(),y.current?.select())},[e,a]),i.useEffect(()=>{const k=n.current;if(!k||(k.querySelectorAll(`mark[${Jr}]`).forEach(z=>{z.removeAttribute(Jr),z.className=ca}),x===0))return;const V=C.current[Math.min(Math.max(m,0),x-1)];V&&(V.setAttribute(Jr,""),V.className=tc,V.scrollIntoView({block:"nearest"}))},[n,m,x]);const M=i.useCallback(()=>{b(k=>x===0?0:(k+1)%x)},[x]),D=i.useCallback(()=>{b(k=>x===0?0:(k-1+x)%x)},[x]),L=i.useCallback(k=>{k.key==="Enter"?(k.preventDefault(),k.shiftKey?D():M()):k.key==="Escape"&&(k.preventDefault(),R())},[R,M,D]);return e?r.jsxs("div",{className:W("absolute right-3 top-3 z-10 flex items-center gap-1 rounded-lg border border-border/60 bg-[var(--surface-elevated)] px-1.5 py-1 shadow-lg",w),children:[r.jsx(E,{name:"search",className:"ml-0.5 size-3.5 text-muted-foreground"}),r.jsx(Fs,{ref:y,value:v,onChange:k=>{d(k.target.value),T(k.target.value)},onKeyDown:L,placeholder:f("filesView.preview.find.placeholder"),"aria-label":f("filesView.preview.find.placeholder"),className:"h-7 w-40 rounded-md px-2 py-0 text-sm md:w-56"}),r.jsx("span",{className:"min-w-12 px-1 text-center typography-micro text-muted-foreground tabular-nums","aria-live":"polite","aria-label":x>0?f("filesView.preview.find.countAria",{current:m+1,total:x}):f("filesView.preview.find.noMatches"),children:v.trim()&&x===0?f("filesView.preview.find.noMatches"):x>0?`${m+1}/${x}`:""}),r.jsx(I,{type:"button",variant:"ghost",size:"sm",className:"size-6 p-0 text-muted-foreground",onClick:D,title:f("filesView.preview.find.previousAria"),"aria-label":f("filesView.preview.find.previousAria"),disabled:x===0,children:r.jsx(E,{name:"arrow-up",className:"size-3.5"})}),r.jsx(I,{type:"button",variant:"ghost",size:"sm",className:"size-6 p-0 text-muted-foreground",onClick:M,title:f("filesView.preview.find.nextAria"),"aria-label":f("filesView.preview.find.nextAria"),disabled:x===0,children:r.jsx(E,{name:"arrow-down",className:"size-3.5"})}),r.jsx(I,{type:"button",variant:"ghost",size:"sm",className:"size-6 p-0 text-muted-foreground",onClick:R,title:f("filesView.preview.find.closeAria"),"aria-label":f("filesView.preview.find.closeAria"),children:r.jsx(E,{name:"close",className:"size-3.5"})})]}):null},ac=n=>{let e=!0;return{poll:async()=>{if(!e||n.isDirty())return!1;const t=n.getLoadedContent(),a=n.getLoadedRevision();try{const w=await n.readContent();if(!e||n.isDirty()||a!==n.getLoadedRevision())return!1;if(w===t)return!0;const f=await n.readContent();return!e||n.isDirty()||f!==w||a!==n.getLoadedRevision()?!1:(n.applyContent(w),!0)}catch{return!1}},dispose:()=>{e=!1}}},oc=1,lc=(n,e)=>e.size!==n.size||e.mtimeMs!==void 0&&n.mtimeMs!==void 0&&Math.abs(e.mtimeMs-n.mtimeMs)>=oc;function Hi(){const n=Re.c(8),[e]=ht.useState(cc),t=ht.useRef(!1);let a;n[0]!==e?(a=x=>{if(x==null){e.cleanUp(),t.current=!1;return}t.current||(t.current=!0,e.setup(x,x.firstElementChild??void 0))},n[0]=e,n[1]=a):a=n[1];const w=a;let f,v;n[2]!==e?(f=()=>()=>{t.current=!1,e.cleanUp()},v=[e],n[2]=e,n[3]=f,n[4]=v):(f=n[3],v=n[4]),ht.useLayoutEffect(f,v);let d;return n[5]!==w||n[6]!==e?(d={virtualizer:e,setScroller:w},n[5]=w,n[6]=e,n[7]=d):d=n[7],d}function cc(){return new Pl}const rs=new Map,uc=100;function lr(n){const[e,t]=ht.useState(null),a=ht.useRef(null),w=ht.useRef(null),f=ht.useRef(null),v=ht.useCallback((d,x)=>{d&&x instanceof Cl&&(f.current={key:n,file:x,node:d});const g=a.current,m=w.current,b=()=>{a.current===g&&(g?.(),m?.())};x?queueMicrotask(b):b()},[n]);return ht.useLayoutEffect(()=>{if(!e||!n)return;const d=rs.get(n)??{top:0,left:0};let x=!0;const g=()=>f.current?.key===n?f.current.file:null,m=l=>f.current?.key===n?f.current.node.shadowRoot?.querySelector(`[data-line][data-line-index="${l-1}"]`):null,b=()=>{C.disconnect(),N.disconnect()},y=()=>{if(!x)return;const l=g(),T=d.line&&l?.getLinePosition(d.line.number),R=d.line&&m(d.line.number);let M=d.top;d.line&&T&&(M=(l?.top??0)+T.top-d.line.offset),d.line&&R&&(M=e.scrollTop+R.getBoundingClientRect().top-e.getBoundingClientRect().top-d.line.offset),e.scrollTop=M,e.scrollLeft=d.left,(!d.line||R)&&Math.abs(e.scrollTop-M)<1&&Math.abs(e.scrollLeft-d.left)<1&&(x=!1,b())},C=new ResizeObserver(y),N=new MutationObserver(()=>{if(x){for(const l of e.children)C.observe(l);y()}});C.observe(e);for(const l of e.children)C.observe(l);N.observe(e,{childList:!0,subtree:!0});const F=()=>{if(x)return;const l=g(),T=l?.getNumericScrollAnchor(e.scrollTop-(l.top??0)),R=T&&m(T.lineNumber),M=R?R.getBoundingClientRect().top-e.getBoundingClientRect().top:null;if(rs.delete(n),rs.set(n,{top:e.scrollTop,left:e.scrollLeft,line:T&&M!==null&&M>=0&&M<e.clientHeight?{number:T.lineNumber,offset:M}:void 0}),rs.size>uc){const D=rs.keys().next().value;D!==void 0&&rs.delete(D)}},p=()=>{x=!1,b()};return a.current=y,w.current=F,y(),e.addEventListener("scroll",F,{passive:!0}),e.addEventListener("wheel",p,{passive:!0}),e.addEventListener("touchstart",p,{passive:!0}),e.addEventListener("pointerdown",p,{passive:!0}),e.addEventListener("keydown",p),()=>{a.current=null,w.current=null,f.current?.key===n&&(f.current=null),b(),e.removeEventListener("scroll",F),e.removeEventListener("wheel",p),e.removeEventListener("touchstart",p),e.removeEventListener("pointerdown",p),e.removeEventListener("keydown",p)}},[n,e]),{setScroller:t,restore:v}}function dc(n){return!(!n.autoSaveEnabled||!n.isDirty||!n.canWrite||n.isSaving||n.fileLoading||n.isNonEditableBinary||!n.selectedFilePath||n.loadedFilePath!==n.selectedFilePath)}function fc(n){return n.selectedFilePath?n.isDirty?!(n.fileLoading||n.loadedFilePath!==n.selectedFilePath||n.isNonEditableBinary||n.draftContent===""&&n.fileContent!==""&&n.loadedFilePath!==n.selectedFilePath):!0:!1}const da=2e5,mc=n=>{let e=0,t=0;for(let a=0;a<n.length;a++)n.charCodeAt(a)===10&&(a>0&&n.charCodeAt(a-1)===13?e++:t++);return e>t?`\r
|
|
5
|
-
`:`
|
|
6
|
-
`},fa=n=>n.replace(/\r\n/g,`
|
|
7
|
-
`).replace(/\r/g,`
|
|
8
|
-
`),hc=n=>({content:fa(n),lineEnding:mc(n)}),pc=(n,e)=>{const t=fa(n);return e===`\r
|
|
9
|
-
`?t.replace(/\n/g,`\r
|
|
10
|
-
`):t},gc=(n,e)=>e??(n.length>da?"view":"edit"),xc=n=>{let e=2166136261;for(let t=0;t<n.length;t++)e^=n.charCodeAt(t),e=e+((e<<1)+(e<<4)+(e<<7)+(e<<8)+(e<<24))>>>0;return`${n.length}:${e.toString(16)}`},vc='<mxfile><diagram id="new" name="Page-1"><mxGraphModel dx="0" dy="0" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0"><root><mxCell id="0"/><mxCell id="1" parent="0"/></root></mxGraphModel></diagram></mxfile>';function qi(){if(typeof document>"u")return!1;const n=document.documentElement.getAttribute("data-theme");return n==="dark"||!n&&window.matchMedia("(prefers-color-scheme: dark)").matches}const wc=i.forwardRef(function({xml:e,readOnly:t,className:a,onChange:w},f){const v=i.useRef(e),d=i.useRef(null),x=i.useRef(!1),[g,m]=i.useState(qi),b=i.useRef(e),y=i.useRef(e);y.current!==e&&(y.current=e,b.current=e,v.current=e);const C=i.useRef(g);C.current!==g&&(C.current=g,b.current=v.current);const N=i.useRef(null);i.useEffect(()=>{const l=()=>m(qi());l();const T=new MutationObserver(l);return T.observe(document.documentElement,{attributes:!0,attributeFilter:["data-theme"]}),()=>T.disconnect()},[]),i.useEffect(()=>{const l=setTimeout(()=>{N.current?.querySelector(".diagrams-iframe")?.focus()},600);return()=>clearTimeout(l)},[]),i.useImperativeHandle(f,()=>({getXml:()=>v.current}));const F=i.useCallback(()=>{!e&&!x.current&&(x.current=!0,setTimeout(()=>{d.current?.template({})},500))},[e]),p=i.useCallback(l=>{v.current=l.xml,w?.(l.xml)},[w]);return r.jsx("div",{ref:N,className:W("h-full w-full",a),children:r.jsx(Ol,{ref:d,xml:b.current||vc,autosave:!0,urlParameters:{ui:t?"simple":g?"dark":"kennedy",spin:!0,libraries:!t,chrome:t,nav:t,layers:t,noSaveBtn:!0,noExitBtn:!0,saveAndExit:!1},onLoad:F,onAutoSave:p},g?"dark":"light")})}),Cs=n=>{const e=Re.c(18),{items:t,actions:a,className:w}=n;let f,v,d,x;if(e[0]!==a||e[1]!==w||e[2]!==t){x=Symbol.for("react.early_return_sentinel");e:{const y=t.filter(bc);if(y.length===0&&!a){x=null;break e}e[7]!==w?(d=W("flex min-h-7 items-center gap-2 border-b border-border/40 bg-[var(--surface-subtle)] px-3 py-1",w),e[7]=w,e[8]=d):d=e[8],f="min-w-0 flex-1 truncate typography-meta text-muted-foreground",v=y.join(" · ")}e[0]=a,e[1]=w,e[2]=t,e[3]=f,e[4]=v,e[5]=d,e[6]=x}else f=e[3],v=e[4],d=e[5],x=e[6];if(x!==Symbol.for("react.early_return_sentinel"))return x;let g;e[9]!==f||e[10]!==v?(g=r.jsx("div",{className:f,children:v}),e[9]=f,e[10]=v,e[11]=g):g=e[11];let m;e[12]!==a?(m=a?r.jsx("div",{className:"flex shrink-0 items-center gap-1",children:a}):null,e[12]=a,e[13]=m):m=e[13];let b;return e[14]!==d||e[15]!==g||e[16]!==m?(b=r.jsxs("div",{className:d,children:[g,m]}),e[14]=d,e[15]=g,e[16]=m,e[17]=b):b=e[17],b};function bc(n){return n.length>0}const ks=n=>{if(n===null||!Number.isFinite(n)||n<0)return"";if(n<1024)return`${n} B`;const e=["KB","MB","GB"];let t=n/1024;for(const a of e){if(t<1024||a===e[e.length-1])return`${t.toFixed(t>=10?0:1)} ${a}`;t/=1024}return""},yc=n=>{if(n===null||!Number.isFinite(n)||n<0)return"";const e=Math.round(n),t=Math.floor(e/3600),a=Math.floor(e%3600/60),w=e%60,f=v=>String(v).padStart(2,"0");return t>0?`${t}:${f(a)}:${f(w)}`:`${a}:${f(w)}`},ma=n=>n&&n.width>0&&n.height>0?`${n.width} × ${n.height}`:"",jc=n=>{const e=Re.c(28),{name:t,path:a,sizeBytes:w,download:f}=n,{t:v}=st();let d,x,g,m,b,y,C;if(e[0]!==t||e[1]!==a||e[2]!==w||e[3]!==v){const l=Ho(a).toUpperCase();y="flex h-full min-h-0 flex-col",C=r.jsx(Cs,{items:[l,ks(w)]}),g="flex flex-1 flex-col items-center justify-center gap-3 p-6 text-center",e[11]!==a?(m=r.jsx(Ns,{filePath:a,className:"size-10"}),e[11]=a,e[12]=m):m=e[12],e[13]!==t?(b=r.jsx("div",{className:"max-w-full truncate typography-ui-header text-foreground",children:t}),e[13]=t,e[14]=b):b=e[14],d="max-w-md typography-ui text-muted-foreground",x=l?v("filesView.artifact.binary.descriptionWithType",{extension:l}):v("filesView.artifact.binary.description"),e[0]=t,e[1]=a,e[2]=w,e[3]=v,e[4]=d,e[5]=x,e[6]=g,e[7]=m,e[8]=b,e[9]=y,e[10]=C}else d=e[4],x=e[5],g=e[6],m=e[7],b=e[8],y=e[9],C=e[10];let N;e[15]!==d||e[16]!==x?(N=r.jsx("div",{className:d,children:x}),e[15]=d,e[16]=x,e[17]=N):N=e[17];let F;e[18]!==f||e[19]!==g||e[20]!==m||e[21]!==b||e[22]!==N?(F=r.jsxs("div",{className:g,children:[m,b,N,f]}),e[18]=f,e[19]=g,e[20]=m,e[21]=b,e[22]=N,e[23]=F):F=e[23];let p;return e[24]!==y||e[25]!==C||e[26]!==F?(p=r.jsxs("div",{className:y,children:[C,F]}),e[24]=y,e[25]=C,e[26]=F,e[27]=p):p=e[27],p},Nc=[48,32,24,18,14],Sc=["ABCDEFGHIJKLMNOPQRSTUVWXYZ","abcdefghijklmnopqrstuvwxyz",`0123456789 .,;:!?&@#%()[]{}<>+-=/\\*"'`];let Yr=0;const Fc=n=>{const e=Re.c(16),{src:t,name:a,sizeBytes:w}=n,{t:f}=st(),[v,d]=i.useState("loading"),[x]=i.useState(Cc);let g,m;e[0]!==x||e[1]!==t?(g=()=>{let F=!1;d("loading");const p=new FontFace(x,`url("${t.replace(/"/g,"%22")}")`);return document.fonts.add(p),p.load().then(()=>{F||d("ready")}).catch(()=>{F||d("failed")}),()=>{F=!0,document.fonts.delete(p)}},m=[x,t],e[0]=x,e[1]=t,e[2]=g,e[3]=m):(g=e[2],m=e[3]),i.useEffect(g,m);let b;e[4]!==w?(b=ks(w),e[4]=w,e[5]=b):b=e[5];let y;e[6]!==a||e[7]!==b?(y=r.jsx(Cs,{items:[a,b]}),e[6]=a,e[7]=b,e[8]=y):y=e[8];let C;e[9]!==x||e[10]!==v||e[11]!==f?(C=v==="failed"?r.jsx("div",{className:"flex flex-1 items-center justify-center p-6 text-center typography-ui text-muted-foreground",children:f("filesView.artifact.font.loadFailed")}):v==="loading"?r.jsxs("div",{className:"flex items-center gap-2 p-3 typography-ui text-muted-foreground",children:[r.jsx(E,{name:"loader-4",className:"size-4 animate-spin"}),f("common.loading")]}):r.jsx("div",{className:"min-h-0 flex-1 overflow-auto p-4",style:{fontFamily:`"${x}"`},children:r.jsxs("div",{className:"flex flex-col gap-4",children:[Nc.map(F=>r.jsxs("div",{className:"flex items-baseline gap-3",children:[r.jsx("span",{className:"w-8 shrink-0 text-right font-sans typography-meta text-muted-foreground",children:F}),r.jsx("span",{className:"min-w-0 break-words leading-tight text-foreground",style:{fontSize:`${F}px`},children:f("filesView.artifact.font.sample")})]},F)),r.jsx("div",{className:"mt-2 flex flex-col gap-1 border-t border-border/40 pt-4 text-foreground",style:{fontSize:"20px"},children:Sc.map(kc)})]})}),e[9]=x,e[10]=v,e[11]=f,e[12]=C):C=e[12];let N;return e[13]!==y||e[14]!==C?(N=r.jsxs("div",{className:"flex h-full min-h-0 flex-col",children:[y,C]}),e[13]=y,e[14]=C,e[15]=N):N=e[15],N};function Cc(){return Yr=Yr+1,`oc-font-preview-${Yr}`}function kc(n){return r.jsx("div",{className:"break-all leading-relaxed",children:n},n)}const Rc=n=>{const e=Re.c(46),{src:t,name:a,sizeBytes:w}=n,{t:f}=st(),[v,d]=i.useState("fit"),[x,g]=i.useState(null);let m;e[0]===Symbol.for("react.memo_cache_sentinel")?(m=()=>{g(null),d("fit")},e[0]=m):m=e[0];let b;e[1]!==t?(b=[t],e[1]=t,e[2]=b):b=e[2],i.useEffect(m,b);let y;e[3]!==x?(y=ma(x),e[3]=x,e[4]=y):y=e[4];let C;e[5]!==w?(C=ks(w),e[5]=w,e[6]=C):C=e[6];let N;e[7]!==y||e[8]!==C?(N=[y,C],e[7]=y,e[8]=C,e[9]=N):N=e[9];const F=v==="fit";let p;e[10]!==f?(p=f("filesView.artifact.image.fitTitle"),e[10]=f,e[11]=p):p=e[11];let l;e[12]===Symbol.for("react.memo_cache_sentinel")?(l=()=>d("fit"),e[12]=l):l=e[12];let T;e[13]!==f?(T=f("filesView.artifact.image.fit"),e[13]=f,e[14]=T):T=e[14];let R;e[15]!==F||e[16]!==p||e[17]!==T?(R=r.jsx(I,{variant:"chip",size:"xs","aria-pressed":F,title:p,onClick:l,children:T}),e[15]=F,e[16]=p,e[17]=T,e[18]=R):R=e[18];const M=v==="actual";let D;e[19]!==f?(D=f("filesView.artifact.image.actualTitle"),e[19]=f,e[20]=D):D=e[20];let L;e[21]===Symbol.for("react.memo_cache_sentinel")?(L=()=>d("actual"),e[21]=L):L=e[21];let k;e[22]!==M||e[23]!==D?(k=r.jsx(I,{variant:"chip",size:"xs","aria-pressed":M,title:D,onClick:L,children:"1:1"}),e[22]=M,e[23]=D,e[24]=k):k=e[24];let V;e[25]!==R||e[26]!==k?(V=r.jsxs(r.Fragment,{children:[R,k]}),e[25]=R,e[26]=k,e[27]=V):V=e[27];let z;e[28]!==V||e[29]!==N?(z=r.jsx(Cs,{items:N,actions:V}),e[28]=V,e[29]=N,e[30]=z):z=e[30];const B=v==="fit"&&"flex items-center justify-center";let U;e[31]!==B?(U=W("min-h-0 flex-1 overflow-auto p-3",B),e[31]=B,e[32]=U):U=e[32];let Z;e[33]===Symbol.for("react.memo_cache_sentinel")?(Z=H=>{const Q=H.currentTarget;g({width:Q.naturalWidth,height:Q.naturalHeight})},e[33]=Z):Z=e[33];const te=v==="fit"?"max-h-full max-w-full object-contain":"max-w-none";let ee;e[34]!==te?(ee=W("rounded-md border border-border/30 bg-primary/10",te),e[34]=te,e[35]=ee):ee=e[35];let q;e[36]!==a||e[37]!==t||e[38]!==ee?(q=r.jsx("img",{src:t,alt:a,draggable:!1,onLoad:Z,className:ee},t),e[36]=a,e[37]=t,e[38]=ee,e[39]=q):q=e[39];let G;e[40]!==U||e[41]!==q?(G=r.jsx("div",{className:U,children:q}),e[40]=U,e[41]=q,e[42]=G):G=e[42];let X;return e[43]!==z||e[44]!==G?(X=r.jsxs("div",{className:"flex h-full min-h-0 flex-col",children:[z,G]}),e[43]=z,e[44]=G,e[45]=X):X=e[45],X},Tc=n=>{const e=Re.c(24),{kind:t,src:a,name:w,sizeBytes:f,download:v}=n,{t:d}=st(),[x,g]=i.useState(null),[m,b]=i.useState(null),[y,C]=i.useState(!1);let N;e[0]===Symbol.for("react.memo_cache_sentinel")?(N=()=>{g(null),b(null),C(!1)},e[0]=N):N=e[0];let F;e[1]!==a?(F=[a],e[1]=a,e[2]=F):F=e[2],i.useEffect(N,F);let p;e[3]===Symbol.for("react.memo_cache_sentinel")?(p=V=>{const z=V.currentTarget;g(Number.isFinite(z.duration)?z.duration:null),z instanceof HTMLVideoElement&&b({width:z.videoWidth,height:z.videoHeight})},e[3]=p):p=e[3];const l=p;let T;e[4]!==x?(T=yc(x),e[4]=x,e[5]=T):T=e[5];let R;e[6]!==m?(R=ma(m),e[6]=m,e[7]=R):R=e[7];let M;e[8]!==f?(M=ks(f),e[8]=f,e[9]=M):M=e[9];let D;e[10]!==T||e[11]!==R||e[12]!==M?(D=r.jsx(Cs,{items:[T,R,M]}),e[10]=T,e[11]=R,e[12]=M,e[13]=D):D=e[13];let L;e[14]!==v||e[15]!==y||e[16]!==t||e[17]!==w||e[18]!==a||e[19]!==d?(L=y?r.jsxs("div",{className:"flex flex-1 flex-col items-center justify-center gap-3 p-6 text-center",children:[r.jsx("div",{className:"max-w-md typography-ui text-muted-foreground",children:d("filesView.artifact.media.unplayable")}),v]}):t==="video"?r.jsx("div",{className:"flex min-h-0 flex-1 items-center justify-center bg-[var(--surface-background)] p-3",children:r.jsx("video",{src:a,controls:!0,playsInline:!0,preload:"metadata",title:w,className:"max-h-full max-w-full rounded-md",onLoadedMetadata:l,onError:()=>C(!0)},a)}):r.jsxs("div",{className:"flex flex-1 flex-col items-center justify-center gap-4 p-6",children:[r.jsx("div",{className:"typography-ui-label truncate text-foreground",children:w}),r.jsx("audio",{src:a,controls:!0,preload:"metadata",title:w,className:"w-full max-w-lg",onLoadedMetadata:l,onError:()=>C(!0)},a)]}),e[14]=v,e[15]=y,e[16]=t,e[17]=w,e[18]=a,e[19]=d,e[20]=L):L=e[20];let k;return e[21]!==D||e[22]!==L?(k=r.jsxs("div",{className:"flex h-full min-h-0 flex-col",children:[D,L]}),e[21]=D,e[22]=L,e[23]=k):k=e[23],k},Ec=2e3,Vc=n=>n.toLowerCase().endsWith(".tsv")?" ":",",Pc=(n,e,t=Ec)=>{const a=[];let w=0,f="",v=[],d=!1,x=!1;const g=()=>{v.push(f),f="",v.length===1&&v[0]===""&&!x||((w===0||a.length<=t)&&a.push(v),w+=1),v=[],x=!1},m=n.charCodeAt(0)===65279?n.slice(1):n;for(let F=0;F<m.length;F+=1){const p=m[F];if(d){p==='"'?m[F+1]==='"'?(f+='"',F+=1):d=!1:f+=p;continue}if(p==='"'){d=!0,x=!0;continue}if(p===e){v.push(f),f="",x=!0;continue}if(p===`
|
|
11
|
-
`||p==="\r"){p==="\r"&&m[F+1]===`
|
|
12
|
-
`&&(F+=1),g();continue}f+=p}(f.length>0||v.length>0||d)&&g();const b=a[0]??[],y=a.slice(1),C=a.reduce((F,p)=>Math.max(F,p.length),0),N=Math.max(0,w-1);return{header:b,rows:y,totalRows:N,columnCount:C,truncated:y.length<N}},Mc=n=>{const e=Re.c(29),{path:t,content:a,sizeBytes:w}=n,{t:f}=st();let v;e[0]!==a||e[1]!==t?(v=Pc(a,Vc(t)),e[0]=a,e[1]=t,e[2]=v):v=e[2];const d=v;let x;e[3]!==f||e[4]!==d.columnCount||e[5]!==d.totalRows?(x=d.totalRows===1?f("filesView.artifact.table.rowsSingle",{rows:d.totalRows,columns:d.columnCount}):f("filesView.artifact.table.rowsPlural",{rows:d.totalRows,columns:d.columnCount}),e[3]=f,e[4]=d.columnCount,e[5]=d.totalRows,e[6]=x):x=e[6];const g=x;let m;e[7]!==d.columnCount?(m=Array.from({length:d.columnCount},Dc),e[7]=d.columnCount,e[8]=m):m=e[8];const b=m;let y;e[9]!==f||e[10]!==d.rows||e[11]!==d.totalRows||e[12]!==d.truncated?(y=d.truncated?f("filesView.artifact.table.truncated",{shown:d.rows.length,total:d.totalRows}):"",e[9]=f,e[10]=d.rows,e[11]=d.totalRows,e[12]=d.truncated,e[13]=y):y=e[13];let C;e[14]!==w?(C=ks(w),e[14]=w,e[15]=C):C=e[15];let N;e[16]!==g||e[17]!==y||e[18]!==C?(N=r.jsx(Cs,{items:[g,y,C]}),e[16]=g,e[17]=y,e[18]=C,e[19]=N):N=e[19];let F;e[20]!==b||e[21]!==f||e[22]!==d.columnCount||e[23]!==d.header||e[24]!==d.rows?(F=d.columnCount===0?r.jsx("div",{className:"p-3 typography-ui text-muted-foreground",children:f("filesView.artifact.table.empty")}):r.jsx("div",{className:"min-h-0 flex-1 overflow-auto",children:r.jsxs("table",{className:"min-w-full border-separate border-spacing-0 font-mono typography-meta",children:[r.jsx("thead",{className:"sticky top-0 z-10 bg-[var(--surface-subtle)]",children:r.jsx("tr",{children:b.map(l=>r.jsx("th",{scope:"col",className:"whitespace-nowrap border-b border-r border-border/40 px-2 py-1 text-left font-medium text-foreground last:border-r-0",children:d.header[l]??""},l))})}),r.jsx("tbody",{children:d.rows.map((l,T)=>r.jsx("tr",{className:"odd:bg-[var(--surface-background)] even:bg-[var(--surface-subtle)]/40",children:b.map(R=>r.jsx("td",{className:"max-w-[32rem] truncate border-b border-r border-border/30 px-2 py-1 align-top text-foreground last:border-r-0",title:l[R]??"",children:l[R]??""},R))},T))})]})}),e[20]=b,e[21]=f,e[22]=d.columnCount,e[23]=d.header,e[24]=d.rows,e[25]=F):F=e[25];let p;return e[26]!==N||e[27]!==F?(p=r.jsxs("div",{className:"flex h-full min-h-0 flex-col",children:[N,F]}),e[26]=N,e[27]=F,e[28]=p):p=e[28],p};function Dc(n,e){return e}const Zr="data-oc-local-asset",zc=25*1024*1024,Gi=n=>{const e=n.trim();return!e||e.startsWith("#")||e.startsWith("//")?!1:!/^[a-z][a-z\d+.-]*:/i.test(e)},Lc=n=>n.split(/[?#]/,1)[0]??"",Ac=n=>n.trim().toLowerCase().replace(/[^\p{L}\p{N}\s-]/gu,"").replace(/\s+/g,"-"),Ic=(n,e)=>{const t=ha(e.replace(/^#/,"")).toLowerCase();if(!t)return!1;for(const a of Array.from(n.querySelectorAll("h1, h2, h3, h4, h5, h6")))if(a.id===t||Ac(a.textContent??"")===t)return a.scrollIntoView({block:"start"}),!0;return!1},ha=n=>{try{return decodeURIComponent(n)}catch{return n}},Xi=({container:n,filePath:e,workspaceRoot:t,onOpenFile:a,enabled:w})=>{const f=i.useRef(a);f.current=a,i.useEffect(()=>{if(!w||!n||!e)return;const v=e.slice(0,e.lastIndexOf("/")+1)||"/",d=p=>qo(v,ha(Lc(p))),x=p=>({path:p,allowOutsideWorkspace:t&&Go(p,t)?void 0:"true",directory:t||void 0});let g=!1;const m=tt(),b=new Map,y=p=>{const l=b.get(p);if(l)return l;const T=(async()=>{const R=await en("/api/fs/raw",{query:x(p),signal:AbortSignal.timeout(3e4)});if(!R.ok)throw new Error(`Image read failed (${R.status})`);const M=await R.blob();if(M.size>zc)throw new Error("Image too large for preview");if(g||tt()!==m)throw new Error("Preview closed");return URL.createObjectURL(M)})();return b.set(p,T),T.catch(()=>b.delete(p)),T},C=()=>{for(const p of Array.from(n.querySelectorAll("img[src]"))){const l=p.getAttribute("src")??"";if(!Gi(l))continue;const T=d(l);p.setAttribute(Zr,T),y(T).then(R=>{g||p.getAttribute(Zr)!==T||p.getAttribute("src")!==R&&(p.src=R)}).catch(()=>{g||p.removeAttribute(Zr)})}},N=p=>{if(p.defaultPrevented||p.button!==0||p.metaKey||p.ctrlKey||p.shiftKey||p.altKey)return;const l=p.target;if(!(l instanceof Element))return;const T=l.closest("a[href]");if(!(T instanceof HTMLAnchorElement)||!n.contains(T))return;const R=T.getAttribute("href")??"";if(R.startsWith("#")){p.preventDefault(),p.stopPropagation(),Ic(n,R);return}Gi(R)&&(p.preventDefault(),p.stopPropagation(),f.current(d(R)))};C();const F=new MutationObserver(C);return F.observe(n,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["src"]}),n.addEventListener("click",N,!0),()=>{g=!0,F.disconnect(),n.removeEventListener("click",N,!0);for(const p of b.values())p.then(l=>URL.revokeObjectURL(l)).catch(()=>{})}},[n,w,e,t])},Oc=n=>{const e=Y(n);if(!e)return"";if(e==="/"||/^[A-Za-z]:\/$/.test(e))return e;const t=e.lastIndexOf("/");if(t<0)return e;if(t===0)return"/";const a=e.slice(0,t);return/^[A-Za-z]:$/.test(a)?`${a}/`:a},Bc=n=>{const e=Re.c(8),{label:t,iconDataUrl:a}=n,[w,f]=i.useState(!1);let v;e[0]!==t?(v=t.trim().slice(0,1).toUpperCase()||"?",e[0]=t,e[1]=v):v=e[1];const d=v;if(a&&!w){let m;e[2]===Symbol.for("react.memo_cache_sentinel")?(m=()=>f(!0),e[2]=m):m=e[2];let b;return e[3]!==a?(b=r.jsx("img",{src:a,alt:"",className:"size-4 rounded-sm",onError:m}),e[3]=a,e[4]=b):b=e[4],b}let x;e[5]===Symbol.for("react.memo_cache_sentinel")?(x=W("size-4 rounded-sm flex items-center justify-center","bg-[var(--surface-muted)] text-[9px] font-medium text-muted-foreground"),e[5]=x):x=e[5];let g;return e[6]!==d?(g=r.jsx("span",{className:x,children:d}),e[6]=d,e[7]=g):g=e[7],g},$c=n=>n.slice().sort((e,t)=>e.type!==t.type?e.type==="directory"?-1:1:e.name.localeCompare(t.name)),Y=n=>{if(!n)return"";const e=n.replace(/\\/g,"/"),t=e.startsWith("//");let a=e.replace(/\/+/g,"/");t&&!a.startsWith("//")&&(a=`/${a}`);const w=a==="/",f=/^[A-Za-z]:\/$/.test(a);return!w&&!f&&(a=a.replace(/\/+$/,"")),a},_c=n=>n.startsWith("/")||n.startsWith("//")||/^[A-Za-z]:\//.test(n),is=n=>/^[A-Za-z]:\//.test(n)?n.toLowerCase():n,Ss=(n,e)=>{const t=Y(e),a=Y(n);if(!t||!a)return!1;const w=is(t),f=is(a);return f===w||f.startsWith(`${w}/`)},Ji=(n,e)=>{const t=Y(e),a=Y(n);if(!Ss(a,t))return[];const f=a.slice(t.length).replace(/^\//,"").split("/"),v=[];let d=t;for(let x=0;x<f.length-1;x++)d=d?`${d}/${f[x]}`:f[x],v.push(d);return v},dr=(n,e)=>{if(!e)return"";const t=Y(e);if(!n||!Ss(t,n))return t;const a=t.slice(n.length);return a.startsWith("/")?a.slice(1):a},Wc=new Set(["node_modules"]),Uc=n=>{const e=Re.c(3),{status:t}=n;let a;e[0]===Symbol.for("react.memo_cache_sentinel")?(a={open:"var(--status-info)",modified:"var(--status-warning)","git-modified":"var(--status-warning)","git-added":"var(--status-success)","git-deleted":"var(--status-error)"},e[0]=a):a=e[0];const w=a[t];let f;return e[1]!==w?(f=r.jsx("span",{className:"size-2 rounded-full",style:{backgroundColor:w}}),e[1]=w,e[2]=f):f=e[2],f},Yi=n=>{const e=Re.c(11),{name:t}=n,a=i.useRef(null),w=i.useRef(null),[f,v]=i.useState(!1);let d;e[0]===Symbol.for("react.memo_cache_sentinel")?(d=()=>{const y=a.current,C=w.current;if(!y||!C)return;const N=()=>{v(C.scrollWidth>y.clientWidth+1)};N();const F=new ResizeObserver(N);return F.observe(y),F.observe(C),()=>{F.disconnect()}},e[0]=d):d=e[0];let x;e[1]!==t?(x=[t],e[1]=t,e[2]=x):x=e[2],i.useLayoutEffect(d,x);let g;e[3]!==t?(g=r.jsx("span",{ref:w,"aria-hidden":"true",className:"invisible absolute whitespace-nowrap",children:t}),e[3]=t,e[4]=g):g=e[4];let m;e[5]!==t||e[6]!==f?(m=f?r.jsxs("span",{className:"open-file-name-marquee-track",children:[r.jsx("span",{className:"open-file-name-marquee-item",children:t}),r.jsx("span",{className:"open-file-name-marquee-item","aria-hidden":"true",children:t})]}):r.jsx("span",{className:"block min-w-0 truncate",children:t}),e[5]=t,e[6]=f,e[7]=m):m=e[7];let b;return e[8]!==g||e[9]!==m?(b=r.jsxs("span",{ref:a,className:"relative block min-w-0 flex-1 overflow-hidden whitespace-nowrap",children:[g,m]}),e[8]=g,e[9]=m,e[10]=b):b=e[10],b},Kc=n=>Wc.has(n),Hc=n=>{const e=Y(n);return e==="node_modules"||e.endsWith("/node_modules")||e.includes("/node_modules/")},qc=n=>{const t=(n instanceof Error?n.message:String(n??"")).toLowerCase();return t.includes("is a directory")||t.includes("eisdir")},Zi=n=>{const t=(n instanceof Error?n.message:String(n??"")).toLowerCase();return t.includes("file not found")||t.includes("enoent")||t.includes("no such file")||t.includes("does not exist")},Gc=2e5,pa=(n,e)=>r.jsx(Ns,{filePath:n,extension:e}),Qr=n=>{if(!n)return!1;const e=n.toLowerCase().split(".").pop();return e==="md"||e==="markdown"},Qi=n=>{if(!n)return!1;const e=n.toLowerCase().split(".").pop();return e==="json"||e==="jsonc"||e==="json5"||e==="geojson"},cr=n=>{if(!n)return!1;const e=n.toLowerCase().split(".").pop();return e==="html"||e==="htm"},Xc=n=>{const e=Re.c(78),{node:t,root:a,isExpanded:w,isActive:f,isMobile:v,isBrowserClient:d,alwaysShowActions:x,status:g,badge:m,permissions:b,downloadFile:y,contextMenuPath:C,setContextMenuPath:N,rightClickMenuPath:F,setRightClickMenuPath:p,onSelect:l,onToggle:T,onRevealPath:R,onOpenDialog:M,canUpload:D,onPickFiles:L}=n,{t:k}=st(),V=t.type==="directory",{canRename:z,canCreateFile:B,canCreateFolder:U,canDelete:Z,canReveal:te}=b,ee=!V&&!!y,q=te&&!d,G=V&&D,X=z||B||U||G||Z||ee||q;let H;e[0]!==X||e[1]!==t.path||e[2]!==p?(H=Ue=>{X&&(Ue?.preventDefault(),p(t.path))},e[0]=X,e[1]=t.path,e[2]=p,e[3]=H):H=e[3];const Q=H;let _e;e[4]!==V||e[5]!==t||e[6]!==l||e[7]!==T?(_e=()=>{V?T(t.path):l(t)},e[4]=V,e[5]=t,e[6]=l,e[7]=T,e[8]=_e):_e=e[8];const ne=_e;let Te;e[9]!==t.path||e[10]!==N||e[11]!==p?(Te=Ue=>{Ue.stopPropagation(),p(null),N(t.path)},e[9]=t.path,e[10]=N,e[11]=p,e[12]=Te):Te=e[12];const De=Te;let ze;e[13]!==B||e[14]!==U||e[15]!==Z||e[16]!==z||e[17]!==q||e[18]!==G||e[19]!==y||e[20]!==d||e[21]!==V||e[22]!==t||e[23]!==M||e[24]!==L||e[25]!==R||e[26]!==a||e[27]!==k?(ze=Ue=>{const{Item:je,Separator:as}=Ue;return r.jsxs(r.Fragment,{children:[z&&r.jsxs(je,{onClick:ue=>{ue.stopPropagation(),M("rename",t)},children:[r.jsx(E,{name:"edit",className:"mr-2 size-4"})," ",k("sidebarFilesTree.menu.rename")]}),r.jsxs(je,{onClick:ue=>{ue.stopPropagation(),fr(t.path).then(St=>{if(St.ok){re.success(k("sidebarFilesTree.toast.pathCopied"));return}re.error(k("sidebarFilesTree.toast.copyFailed"))})},children:[r.jsx(E,{name:"file-copy",className:"mr-2 size-4"})," ",k("sidebarFilesTree.menu.copyPath")]}),r.jsxs(je,{onClick:ue=>{ue.stopPropagation();const St=dr(a,t.path)||t.path;fr(St).then(At=>{if(At.ok){re.success(k("filesView.toast.relativePathCopied"));return}re.error(k("sidebarFilesTree.toast.copyFailed"))})},children:[r.jsx(E,{name:"file-copy-2",className:"mr-2 size-4"})," ",k("filesView.tree.menu.copyRelativePath")]}),!V&&y&&r.jsxs(je,{onClick:ue=>{ue.stopPropagation(),y(t.path).catch(St=>{console.error("Download failed:",St),re.error(k("sidebarFilesTree.toast.operationFailed"))})},children:[r.jsx(E,{name:"download",className:"mr-2 size-4"})," ",k(d?"sidebarFilesTree.menu.download":"sidebarFilesTree.menu.save")]}),q&&r.jsxs(je,{onClick:ue=>{ue.stopPropagation(),R(t.path)},children:[r.jsx(E,{name:"folder-received",className:"mr-2 size-4"})," ",k(gl())]}),V&&(B||U||G)&&r.jsxs(r.Fragment,{children:[r.jsx(as,{}),B&&r.jsxs(je,{onClick:ue=>{ue.stopPropagation(),M("createFile",t)},children:[r.jsx(E,{name:"file-add",className:"mr-2 size-4"})," ",k("sidebarFilesTree.menu.newFile")]}),U&&r.jsxs(je,{onClick:ue=>{ue.stopPropagation(),M("createFolder",t)},children:[r.jsx(E,{name:"folder-add",className:"mr-2 size-4"})," ",k("sidebarFilesTree.menu.newFolder")]}),G&&r.jsxs(je,{onClick:ue=>{ue.stopPropagation(),L(t.path)},children:[r.jsx(E,{name:"upload-2",className:"mr-2 size-4"})," ",k("sidebarFilesTree.menu.uploadFiles")]})]}),Z&&r.jsxs(r.Fragment,{children:[r.jsx(as,{}),r.jsxs(je,{onClick:ue=>{ue.stopPropagation(),M("delete",t)},className:"text-destructive focus:text-destructive",children:[r.jsx(E,{name:"delete-bin",className:"mr-2 size-4"})," ",k("sidebarFilesTree.menu.delete")]})]})]})},e[13]=B,e[14]=U,e[15]=Z,e[16]=z,e[17]=q,e[18]=G,e[19]=y,e[20]=d,e[21]=V,e[22]=t,e[23]=M,e[24]=L,e[25]=R,e[26]=a,e[27]=k,e[28]=ze):ze=e[28];const K=ze,ie=F===t.path;let _;e[29]!==t.path||e[30]!==p?(_=Ue=>p(Ue?t.path:null),e[29]=t.path,e[30]=p,e[31]=_):_=e[31];const ae=v?void 0:Q;let fe;e[32]!==ae?(fe=r.jsx("div",{className:"group relative flex items-center",onContextMenu:ae}),e[32]=ae,e[33]=fe):fe=e[33];const me=v?void 0:Q,ce=f?"bg-interactive-selection/70":"hover:bg-interactive-hover/40";let be;e[34]!==ce?(be=W("flex w-full items-center gap-1.5 rounded-md px-2 py-1 text-left text-foreground transition-colors pr-8 select-none",ce),e[34]=ce,e[35]=be):be=e[35];let xe;e[36]!==V||e[37]!==w||e[38]!==t.extension||e[39]!==t.path?(xe=V?w?r.jsx(E,{name:"folder-open",className:"size-4 flex-shrink-0 text-muted-foreground"}):r.jsx(E,{name:"folder-3",className:"size-4 flex-shrink-0 text-muted-foreground"}):pa(t.path,t.extension),e[36]=V,e[37]=w,e[38]=t.extension,e[39]=t.path,e[40]=xe):xe=e[40];let he;e[41]!==t.name||e[42]!==t.path?(he=r.jsx("span",{className:"min-w-0 flex-1 truncate typography-meta",title:t.path,children:t.name}),e[41]=t.name,e[42]=t.path,e[43]=he):he=e[43];let ve;e[44]!==V||e[45]!==g?(ve=!V&&g&&r.jsx(Uc,{status:g}),e[44]=V,e[45]=g,e[46]=ve):ve=e[46];let Ee;e[47]!==m||e[48]!==V?(Ee=V&&m&&r.jsxs("span",{className:"text-xs flex items-center gap-1 ml-auto mr-1",children:[m.modified>0&&r.jsxs("span",{className:"text-[var(--status-warning)]",children:["M",m.modified]}),m.added>0&&r.jsxs("span",{className:"text-[var(--status-success)]",children:["+",m.added]})]}),e[47]=m,e[48]=V,e[49]=Ee):Ee=e[49];let ye;e[50]!==ne||e[51]!==be||e[52]!==xe||e[53]!==he||e[54]!==ve||e[55]!==Ee||e[56]!==me?(ye=r.jsxs("button",{type:"button",onClick:ne,onContextMenu:me,className:be,children:[xe,he,ve,Ee]}),e[50]=ne,e[51]=be,e[52]=xe,e[53]=he,e[54]=ve,e[55]=Ee,e[56]=me,e[57]=ye):ye=e[57];let lt;e[58]!==x||e[59]!==C||e[60]!==De||e[61]!==X||e[62]!==v||e[63]!==t.path||e[64]!==K||e[65]!==N?(lt=X&&r.jsx("div",{className:W("absolute right-1 top-1/2 -translate-y-1/2",x?"opacity-100":"opacity-0 focus-within:opacity-100 group-hover:opacity-100"),children:r.jsxs(tn,{open:C===t.path,onOpenChange:Ue=>N(Ue?t.path:null),children:[r.jsx(sn,{asChild:!0,children:r.jsx(I,{variant:"ghost",size:"icon",className:"size-6",onClick:De,children:r.jsx(E,{name:"more-2-fill",className:"size-4"})})}),r.jsx(rn,{align:"end",side:"bottom",onCloseAutoFocus:()=>N(null),children:K({Item:ur,Separator:pl})})]})}),e[58]=x,e[59]=C,e[60]=De,e[61]=X,e[62]=v,e[63]=t.path,e[64]=K,e[65]=N,e[66]=lt):lt=e[66];let We;e[67]!==ye||e[68]!==lt||e[69]!==fe?(We=r.jsxs(yl,{render:fe,children:[ye,lt]}),e[67]=ye,e[68]=lt,e[69]=fe,e[70]=We):We=e[70];let ct;e[71]!==K?(ct=r.jsx(vl,{className:"min-w-[180px]",children:K({Item:bl,Separator:wl})}),e[71]=K,e[72]=ct):ct=e[72];let Le;return e[73]!==We||e[74]!==ct||e[75]!==ie||e[76]!==_?(Le=r.jsxs(jl,{open:ie,onOpenChange:_,children:[We,ct]}),e[73]=We,e[74]=ct,e[75]=ie,e[76]=_,e[77]=Le):Le=e[77],Le},Jc=n=>{const e=Re.c(83),{activeDialog:t,dialogData:a,dialogInputValue:w,onDialogInputChange:f,isDialogSubmitting:v,onDialogSubmit:d,onClose:x,inputRef:g}=n,{t:m}=st(),b=!!t;let y;e[0]!==x?(y=Q=>!Q&&x(),e[0]=x,e[1]=y):y=e[1];let C;e[2]!==t||e[3]!==m?(C=t==="createFile"&&m("filesView.dialog.createFile.title"),e[2]=t,e[3]=m,e[4]=C):C=e[4];let N;e[5]!==t||e[6]!==m?(N=t==="createFolder"&&m("filesView.dialog.createFolder.title"),e[5]=t,e[6]=m,e[7]=N):N=e[7];let F;e[8]!==t||e[9]!==m?(F=t==="rename"&&m("filesView.dialog.rename.title"),e[8]=t,e[9]=m,e[10]=F):F=e[10];let p;e[11]!==t||e[12]!==m?(p=t==="delete"&&m("filesView.dialog.delete.title"),e[11]=t,e[12]=m,e[13]=p):p=e[13];let l;e[14]!==C||e[15]!==N||e[16]!==F||e[17]!==p?(l=r.jsxs(aa,{children:[C,N,F,p]}),e[14]=C,e[15]=N,e[16]=F,e[17]=p,e[18]=l):l=e[18];let T;e[19]!==t||e[20]!==a?.path||e[21]!==m?(T=t==="createFile"&&m("filesView.dialog.createFile.description",{path:a?.path??m("filesView.dialog.rootFallback")}),e[19]=t,e[20]=a?.path,e[21]=m,e[22]=T):T=e[22];let R;e[23]!==t||e[24]!==a?.path||e[25]!==m?(R=t==="createFolder"&&m("filesView.dialog.createFolder.description",{path:a?.path??m("filesView.dialog.rootFallback")}),e[23]=t,e[24]=a?.path,e[25]=m,e[26]=R):R=e[26];let M;e[27]!==t||e[28]!==a?.name||e[29]!==m?(M=t==="rename"&&m("filesView.dialog.rename.description",{name:a?.name??""}),e[27]=t,e[28]=a?.name,e[29]=m,e[30]=M):M=e[30];let D;e[31]!==t||e[32]!==a?.name||e[33]!==m?(D=t==="delete"&&m("filesView.dialog.delete.description",{name:a?.name??""}),e[31]=t,e[32]=a?.name,e[33]=m,e[34]=D):D=e[34];let L;e[35]!==M||e[36]!==D||e[37]!==T||e[38]!==R?(L=r.jsxs(oa,{children:[T,R,M,D]}),e[35]=M,e[36]=D,e[37]=T,e[38]=R,e[39]=L):L=e[39];let k;e[40]!==L||e[41]!==l?(k=r.jsxs(ia,{children:[l,L]}),e[40]=L,e[41]=l,e[42]=k):k=e[42];let V;e[43]!==t||e[44]!==w||e[45]!==g||e[46]!==f||e[47]!==d||e[48]!==m?(V=t!=="delete"&&r.jsx("div",{className:"py-4",children:r.jsx(Fs,{value:w,onChange:Q=>f(Q.target.value),placeholder:m(t==="rename"?"filesView.dialog.rename.placeholder":"filesView.dialog.namePlaceholder"),onKeyDown:Q=>{Q.key==="Enter"&&d()},ref:g})}),e[43]=t,e[44]=w,e[45]=g,e[46]=f,e[47]=d,e[48]=m,e[49]=V):V=e[49];let z;e[50]!==m?(z=m("filesView.dialog.cancel"),e[50]=m,e[51]=z):z=e[51];let B;e[52]!==v||e[53]!==x||e[54]!==z?(B=r.jsx(I,{variant:"outline",onClick:x,disabled:v,children:z}),e[52]=v,e[53]=x,e[54]=z,e[55]=B):B=e[55];const U=t==="delete"?"destructive":"default";let Z;e[56]!==d?(Z=()=>{d()},e[56]=d,e[57]=Z):Z=e[57];let te;e[58]!==t||e[59]!==w||e[60]!==v?(te=v||t!=="delete"&&!w.trim(),e[58]=t,e[59]=w,e[60]=v,e[61]=te):te=e[61];let ee;e[62]!==t||e[63]!==v||e[64]!==m?(ee=v?r.jsx(E,{name:"loader-4",className:"size-4 animate-spin"}):m(t==="delete"?"filesView.dialog.delete.confirm":"filesView.dialog.confirm"),e[62]=t,e[63]=v,e[64]=m,e[65]=ee):ee=e[65];let q;e[66]!==U||e[67]!==Z||e[68]!==te||e[69]!==ee?(q=r.jsx(I,{variant:U,onClick:Z,disabled:te,children:ee}),e[66]=U,e[67]=Z,e[68]=te,e[69]=ee,e[70]=q):q=e[70];let G;e[71]!==B||e[72]!==q?(G=r.jsxs(la,{children:[B,q]}),e[71]=B,e[72]=q,e[73]=G):G=e[73];let X;e[74]!==g||e[75]!==k||e[76]!==V||e[77]!==G?(X=r.jsxs(na,{initialFocus:g,children:[k,V,G]}),e[74]=g,e[75]=k,e[76]=V,e[77]=G,e[78]=X):X=e[78];let H;return e[79]!==b||e[80]!==y||e[81]!==X?(H=r.jsx(ra,{open:b,onOpenChange:y,children:X}),e[79]=b,e[80]=y,e[81]=X,e[82]=H):H=e[82],H},ns=new Map,Yc=100,ea=n=>{const e=Re.c(13);let t,a,w;e[0]!==n?({positionKey:a,onViewReady:t,...w}=n,e[0]=n,e[1]=t,e[2]=a,e[3]=w):(t=e[1],a=e[2],w=e[3]);const f=i.useRef(null);let v,d;e[4]!==a?(v=()=>()=>{const m=f.current;if(!m)return;const{anchor:b,head:y}=m.state.selection.main;if(ns.delete(a),ns.set(a,{scroll:m.scrollSnapshot(),anchor:b,head:y}),ns.size>Yc){const C=ns.keys().next().value;C!==void 0&&ns.delete(C)}},d=[a],e[4]=a,e[5]=v,e[6]=d):(v=e[5],d=e[6]),i.useLayoutEffect(v,d);let x;e[7]!==t||e[8]!==a?(x=m=>{f.current=m;const b=ns.get(a);b&&m.dispatch({selection:{anchor:Math.min(b.anchor,m.state.doc.length),head:Math.min(b.head,m.state.doc.length)},effects:b.scroll}),t?.(m)},e[7]=t,e[8]=a,e[9]=x):x=e[9];let g;return e[10]!==w||e[11]!==x?(g=r.jsx(Sl,{...w,onViewReady:x}),e[10]=w,e[11]=x,e[12]=g):g=e[12],g},ta=(n,e,t)=>{const a=Re.c(8),[w,f]=i.useState(""),[v,d]=i.useState(0);let x,g;a[0]!==n||a[1]!==t||a[2]!==e?(x=()=>{if(!n){f("");return}let b=!1;f("");const y=Oo(),C=Bo(y);$o(y).then(F=>{b||!F||(f(n),e(null))}).catch(F=>{b||(e(F instanceof Error?F.message:t),f(n))});const N=_o(()=>{b||(f(n),d(Zc),e(null))});return()=>{b=!0,C(),N()}},g=[n,e,t],a[0]=n,a[1]=t,a[2]=e,a[3]=x,a[4]=g):(x=a[3],g=a[4]),i.useEffect(x,g);let m;return a[5]!==v||a[6]!==w?(m={readyKey:w,nonce:v},a[5]=v,a[6]=w,a[7]=m):m=a[7],m},yf=({mode:n="full",visible:e=!0})=>{const{t}=st(),{files:a,runtime:w}=Xo(),{currentTheme:f,availableThemes:v,lightThemeId:d,darkThemeId:x}=Jo(),{isMobile:g,isTablet:m,screenWidth:b}=Yo(),y=Mo(w.platform),C=g||m,N=Do(),F=zo(),p=sa()??"",l=Y(p.trim()),T=g||n==="full",R=T&&e,M=Zo(s=>s.runtimeKey),D=JSON.stringify([M,l]),L=i.useRef(D);L.current=D;const k=JSON.stringify([M,l,N,F]),V=i.useRef(k);V.current=k;const z=n!=="editor-only",B=n==="editor-only"&&!g,U=Lo(s=>s.searchFiles),Z=Qo(R?p:null),[te,ee]=i.useState(""),q=el(te,200),G=i.useRef(null),[X,H]=i.useState(!1),[Q,_e]=i.useState(!0),[ne,Te]=i.useState(!1),[De,ze]=i.useState(!1),K=i.useRef(0),ie=i.useCallback(s=>{K.current=Math.max(0,K.current+(s?1:-1))},[]),[_,ae]=i.useState("edit"),[fe,me]=i.useState("edit"),[ce,be]=i.useState("tree"),[xe,he]=i.useState("edit"),[ve,Ee]=i.useState("preview"),[ye,lt]=i.useState("preview"),[We,ct]=i.useState("preview"),[Le,Ue]=i.useState("table"),[je,as]=i.useState(null),[ue,St]=i.useState(0),At=i.useRef({}),hr=i.useRef({}),pr=i.useRef({}),nn=i.useRef({}),an=i.useRef({}),on=i.useRef({}),gr=i.useRef({}),Rs=i.useMemo(()=>v.find(s=>s.metadata.id===d)??Di(!1),[v,d]),Ts=i.useMemo(()=>v.find(s=>s.metadata.id===x)??Di(!0),[v,x]);i.useEffect(()=>{$i(Rs),$i(Ts)},[Rs,Ts]);const Es=i.useMemo(()=>[],[]),Ne=et(s=>l?s.byRoot[l]?.openPaths??Es:Es),Ft=et(s=>l?s.byRoot[l]?.selectedPath??null:null),rt=et(s=>l?s.byRoot[l]?.expandedPaths??Es:Es),ga=i.useMemo(()=>new Set(rt),[rt]),It=et(s=>s.removeOpenPath),pt=et(s=>s.removeOpenPathsByPrefix),ln=et(s=>s.removeExpandedPathsByPrefix),Se=et(s=>s.setSelectedPath),cn=et(s=>s.toggleExpandedPath),Vs=et(s=>s.expandPaths),Ot=i.useCallback(s=>{const o=Y(s),u=o.split("/"),h=u[u.length-1]||o,j=h.includes(".")?h.split(".").pop()?.toLowerCase():void 0;return{name:h,path:o,type:"file",extension:j}},[]),Bt=i.useMemo(()=>Ne.map(Ot),[Ne,Ot]),xr=i.useMemo(()=>{if(Ft){const s=is(Ft);if(Ne.some(o=>is(o)===s))return Ft}return Ne[0]??null},[Ne,Ft]),c=i.useMemo(()=>xr?Ot(xr):null,[xr,Ot]),nt=c?.path??"";i.useEffect(()=>{if(!l||!Ft)return;const s=is(Ft);Ne.some(u=>is(u)===s)||Se(l,Ne[0]??null)},[Ne,l,Ft,Se]);const vr=!!(l&&nt&&!Ss(nt,l)),wr=i.useMemo(()=>({allowOutsideWorkspace:vr,directory:l||void 0}),[vr,l]),gt=i.useCallback(s=>({allowOutsideWorkspace:!!(l&&!Ss(s,l))}),[l]),br=i.useRef(null),[un,xa]=i.useState({left:!1,right:!1}),dn=i.useCallback(()=>{const s=br.current;s&&xa({left:s.scrollLeft>2,right:s.scrollLeft+s.clientWidth<s.scrollWidth-2})},[]),fn=i.useRef(dn);fn.current=dn,i.useEffect(()=>{const s=br.current;if(!s)return;const o=()=>fn.current();o(),s.addEventListener("scroll",o,{passive:!0});const u=new ResizeObserver(o);return u.observe(s),()=>{s.removeEventListener("scroll",o),u.disconnect()}},[Bt.length]);const[mn,yr]=i.useState({}),[Ps,os]=i.useState({}),Ke=i.useRef(new Set),Ve=i.useMemo(()=>new Ml,[]);i.useEffect(()=>()=>Ve.clear(),[Ve]);const[hn,Ms]=i.useState([]),[va,Ds]=i.useState(!1),[$,pe]=i.useState(""),{isPlaying:zs,play:wa,stop:ba}=tl(),[Fe,xt]=i.useState(!1),[Xe,we]=i.useState(null),[ya,He]=i.useState(""),[ge,de]=i.useState(null),vt=JSON.stringify([tt(),l,ge]),[se,Ce]=i.useState(""),[ls,jr]=i.useState(!1),[pn,ja]=i.useState(`
|
|
13
|
-
`),Na=i.useRef(null),it=i.useRef(null),Ae=i.useRef(null),wt=i.useRef(""),cs=i.useRef(""),ut=i.useRef(null),gn=i.useRef(null),Je=i.useRef(null),Nr=i.useRef(""),Sr=i.useRef(0),$t=i.useRef(0),Ct=i.useRef(null),[us,Sa]=i.useState(0),[Fa,_t]=i.useState("idle"),[Ca,Ls]=i.useState(!1),[kt,xn]=i.useState(!1),ke=mt(s=>s.autoSaveEnabled),ka=mt(s=>s.setAutoSaveEnabled),[Fr,ds]=i.useState(!1),Wt=i.useRef(null),fs=i.useRef(null),ms=i.useRef(!1),hs=i.useRef(null),ps=i.useRef(null),Ye=i.useRef(null),As=i.useRef(null),[Ra,Cr]=i.useState(0),Ut=i.useRef(null),Rt=i.useRef({key:"",attempts:0});i.useEffect(()=>()=>{Ut.current!==null&&typeof window<"u"&&(window.cancelAnimationFrame(Ut.current),Ut.current=null)},[]);const[Tt,kr]=i.useState(null),[Et,Ta]=i.useState(null),[bt,vn]=i.useState(""),[Ea,Rr]=i.useState(!1),[Va,Pa]=i.useState(null),[Ma,Da]=i.useState(null),[za,wn]=i.useState(!1),[La,bn]=i.useState(!1),[Aa,Tr]=i.useState(!1),[yn,Is]=i.useState(!1),[jn,Nn]=i.useState(0),Os=i.useRef(null),Bs=i.useCallback(s=>{const o=s?.currentTarget??Os.current;if(!o)return;const u=document.activeElement;u&&u!==document.body&&u!==o&&(sl(u)||o.contains(u))||o.focus({preventScroll:!0})},[]),$s=i.useRef(null),Sn=!!a.writeFile,Fn=!!a.createDirectory,Cn=!!a.rename,kn=!!a.delete,Rn=!!a.revealPath,Ia=or(s=>s.availableApps),Oa=or(s=>s.isCacheStale),Tn=or(s=>s.initialize),Ba=or(s=>s.loadInstalledApps);i.useEffect(()=>{Tn()},[Tn]);const $a=i.useCallback(s=>{a.revealPath&&a.revealPath(s).catch(()=>{re.error(t("sidebarFilesTree.toast.revealFailed"))})},[a,t]),_a=i.useCallback(async s=>{if(!c?.path||await Ao(c.path,s.id,s.appName)||await Vi(c.path,s.appName))return;const h=Oc(c.path)||l;h&&await Vi(h,s.appName)||re.error(t("filesView.toast.openInAppFailed",{app:s.appName}))},[l,c?.path,t]),Er=i.useCallback((s,o)=>{kr(s),Ta(o),vn(s==="rename"&&o.name||""),Rr(!1)},[]),[J,Ze]=i.useState(null),Kt=i.useRef(!1),yt=i.useRef(null),[En,Ht]=i.useState(!1),at=mt(s=>s.pendingFileNavigation),_s=mt(s=>s.setPendingFileNavigation),Vr=mt(s=>s.pendingFileFocusPath),Pr=mt(s=>s.setPendingFileFocusPath),Vn=mt(s=>s.fileEditorKeymap),gs=zi(s=>s.settingsDefaultFileViewerPreview),Wa=zi(s=>s.showMessageTTSButtons);i.useEffect(()=>{const s=()=>{Kt.current=!1,yt.current=null,Ht(!1)};return document.addEventListener("mouseup",s),()=>document.removeEventListener("mouseup",s)},[]),i.useEffect(()=>()=>{hs.current!==null&&window.clearTimeout(hs.current),ps.current!==null&&window.clearTimeout(ps.current)},[]);const Ua=i.useCallback((s,o)=>{const u=s.split(`
|
|
14
|
-
`),h=Math.max(1,o.start),j=Math.min(u.length,o.end);return h>j?"":u.slice(h-1,j).join(`
|
|
15
|
-
`)},[]),Pn=i.useRef(null),Ka=$l({source:"file",fileLabel:c?.path??null,language:c?.path&&Kr(c.path)||"text",getCodeForRange:s=>Ua($,_l(s)),toStoreRange:s=>({startLine:s.start,endLine:s.end}),fromDraftRange:s=>({start:s.startLine,end:s.endLine})}),{drafts:Mn,commentText:Ws,setCommentText:Dn,editingDraftId:Us,setSelection:zn,saveComment:Ln,cancel:xs,reset:An,startEdit:In,deleteDraft:On}=Ka;i.useEffect(()=>{Ze(null),An(),Ce(""),jr(!1)},[c?.path,An]),i.useEffect(()=>{zn(J)},[J,zn]),i.useEffect(()=>{if(!J&&!Us)return;const s=u=>{const h=u.target;h.closest('[data-comment-input="true"]')||h.closest('[data-comment-card="true"]')||h.closest(".cm-gutterElement")||h.closest("[data-sonner-toast]")||h.closest("[data-sonner-toaster]")||Ws.trim()||(Ze(null),xs())},o=setTimeout(()=>{document.addEventListener("click",s)},100);return()=>{clearTimeout(o),document.removeEventListener("click",s)}},[xs,Ws,Us,J]);const Bn=i.useCallback((s,o)=>{const u=o??J??void 0;o&&Ze(o),Ln(s,u),Ze(null)},[J,Ln]),$n=i.useCallback((s,o)=>{const u=[];for(const h of o){if(!(h&&typeof h.name=="string"&&h.name.length>0)||!N&&h.name.startsWith(".")||!F&&Kc(h.name))continue;const j=h.name,S=Y(h.path||""),P=S?_c(S)?S:Y(`${s}/${S}`):Y(`${s}/${j}`),O=h.isDirectory?"directory":"file",oe=O==="file"&&j.includes(".")?j.split(".").pop()?.toLowerCase():void 0;u.push({name:j,path:P,type:O,extension:oe})}return $c(u)},[F,N]),Pe=i.useCallback(async(s,o=!1)=>{if(!R)return;const u=Y(s.trim());if(!u||!o&&Ke.current.has(u))return;const h=V.current,j=tt();return Ve.run(u,async S=>{const P=()=>S()&&V.current===h&&tt()===j;try{const O=a.listDirectory?(await a.listDirectory(u)).entries:await Io.listLocalDirectory(u);if(!P())return;const oe=$n(u,O);Ke.current=new Set(Ke.current),Ke.current.add(u),os(A=>{if(!A[u])return A;const le={...A};return delete le[u],le}),yr(A=>A[u]&&Dl(A[u],oe)?A:{...A,[u]:oe})}catch(O){if(!P())return;const oe=O instanceof Error?O.message:String(O??"");if(oe==="Directory not found"&&l&&u!==l){ln(l,u),os(A=>{if(!A[u])return A;const le={...A};return delete le[u],le});return}console.error("Failed to load files directory:",O),os(A=>({...A,[u]:oe}))}},o)},[Ve,a,$n,ln,l,R]),Ks=i.useCallback(async()=>{l&&(Ke.current=new Set,Ve.clear(),os({}),yr(s=>Object.keys(s).length===0?s:{}),await Pe(l))},[Ve,Pe,l]),Ie=i.useCallback(async s=>{if(!s){await Ks();return}const o=Y(s);Ke.current=new Set(Ke.current),Ke.current.delete(o),await Pe(o,!0)},[Pe,Ks]),{canUpload:_n,uploadingDirectory:Ha,pickFiles:Wn,uploadElements:qa}=zl({root:l,refreshDirectory:Ie}),Hs=Ha!==null,Un=i.useRef(""),Kn=i.useRef("");i.useEffect(()=>{if(!l)return;const s=k,o=Un.current!==D,u=Kn.current!==s;!o&&!u||(o&&(Un.current=D,$t.current+=1,Ct.current=null,pe(""),we(null),He(""),de(null),H(!1)),u&&(Kn.current=s,Ke.current=new Set,Ve.clear(),os({}),yr(h=>Object.keys(h).length===0?h:{}),Pe(l)))},[Ve,D,Pe,l,k]),i.useEffect(()=>{if(!R||!a.listDirectory)return;const s=()=>{if(!document.hidden&&rt.length>0)for(const o of rt)Ve.has(o)||Ie(o)};return document.addEventListener("visibilitychange",s),()=>document.removeEventListener("visibilitychange",s)},[Ve,rt,a.listDirectory,Ie,R]);const Hn=i.useRef(!1);i.useEffect(()=>{const s=R&&!Hn.current;if(Hn.current=R,!(!R||!l)&&(Pe(l),s))for(const o of rt)Ve.has(o)||Ie(o)},[Ve,rt,Pe,Ie,l,R]),i.useEffect(()=>{if(!R||!a.listDirectory||rt.length===0)return;const s=setInterval(()=>{if(!document.hidden)for(const o of rt)Ve.has(o)||Ie(o)},8e3);return()=>clearInterval(s)},[Ve,rt,a.listDirectory,Ie,R]);const Ga=i.useCallback(async s=>{if(s?.preventDefault(),!Et||!Tt)return;Rr(!0);const o=()=>{kr(null)},u=j=>{re.error(j)},h=()=>{Rr(!1)};if(Tt==="createFile"){if(!bt.trim()){u(t("sidebarFilesTree.toast.filenameRequired")),h();return}if(!a.writeFile){u(t("sidebarFilesTree.toast.writeNotSupported")),h();return}const j=Et.path,S=j?`${j}/`:"",P=Y(`${S}${bt.trim()}`);await a.writeFile(P,"").then(async O=>{O.success&&(re.success(t("sidebarFilesTree.toast.fileCreated")),await Ie(j)),o()}).catch(()=>u(t("sidebarFilesTree.toast.operationFailed"))).finally(h);return}if(Tt==="createFolder"){if(!bt.trim()){u(t("sidebarFilesTree.toast.folderNameRequired")),h();return}const j=Et.path,S=j?`${j}/`:"",P=Y(`${S}${bt.trim()}`);await a.createDirectory(P).then(async O=>{O.success&&(re.success(t("sidebarFilesTree.toast.folderCreated")),await Ie(j)),o()}).catch(()=>u(t("sidebarFilesTree.toast.operationFailed"))).finally(h);return}if(Tt==="rename"){if(!bt.trim()){u(t("sidebarFilesTree.toast.nameRequired")),h();return}if(!a.rename){u(t("sidebarFilesTree.toast.renameNotSupported")),h();return}const j=Et.path,S=j.split("/").slice(0,-1).join("/"),P=S?`${S}/`:"",O=Y(`${P}${bt.trim()}`);await a.rename(j,O).then(async oe=>{oe.success&&(re.success(t("sidebarFilesTree.toast.renamedSuccessfully")),await Ie(S),l&&pt(l,j),(c?.path===j||c?.path.startsWith(`${j}/`))&&(l&&Se(l,null),pe(""),we(null),He(""),de(null),g&&H(!1))),o()}).catch(()=>u(t("sidebarFilesTree.toast.operationFailed"))).finally(h);return}if(Tt==="delete"){if(!a.delete){u(t("sidebarFilesTree.toast.deleteNotSupported")),h();return}const j=Et.path,S=j.split("/").slice(0,-1).join("/");await a.delete(j).then(async P=>{P.success&&(re.success(t("sidebarFilesTree.toast.deletedSuccessfully")),await Ie(S),l&&pt(l,j),(c?.path===j||c?.path.startsWith(`${j}/`))&&(l&&Se(l,null),pe(""),we(null),He(""),de(null),g&&H(!1))),o()}).catch(()=>u(t("sidebarFilesTree.toast.operationFailed"))).finally(h);return}h()},[Tt,Et,bt,a,Ie,g,pt,l,c?.path,Se,t]);i.useEffect(()=>{if(!p){Ms([]),Ds(!1);return}const s=q.trim();if(!s){Ms([]),Ds(!1);return}let o=!1;return Ds(!0),U(p,s,150,{includeHidden:N,respectGitignore:!F,type:"file"}).then(u=>{if(o)return;const j=u.filter(S=>F||!Hc(S.path)).map(S=>({name:S.name,path:Y(S.path),type:"file",extension:S.extension,relativePath:S.relativePath}));Ms(j)}).catch(()=>{o||Ms([])}).finally(()=>{o||Ds(!1)}),()=>{o=!0}},[p,q,U,N,F]);const qs=i.useCallback(async(s,o)=>{const u=gt(s);if(a.readFile)return(await a.readFile(s,{...u,directory:l||void 0,...o})).content??"";const h=new URLSearchParams({path:s});u.allowOutsideWorkspace&&h.set("allowOutsideWorkspace","true"),l&&h.set("directory",l);const j=await en(`/api/fs/read?${h.toString()}`,{cache:o?.fresh?"no-store":"default",signal:AbortSignal.timeout(3e4)});if(!j.ok){const S=await j.json().catch(()=>({error:j.statusText}));throw new Error(S.error||t("filesView.error.readFileFailed"))}return j.text()},[a,gt,l,t]),ot=i.useCallback(async s=>{if(a.statFile){const o=gt(s),u=await a.statFile(s,{...o,directory:l||void 0});return{path:u.path,size:u.size,mtimeMs:u.mtimeMs}}return null},[a,gt,l]);i.useEffect(()=>{if(!l||!a.statFile||Ne.length===0)return;let s=!1;const o=[...Ne];return Promise.all(o.map(async u=>{try{const h=gt(u),j=await a.statFile?.(u,{...h,directory:l||void 0});!s&&j&&!j.isFile&&pt(l,u)}catch(h){!s&&Zi(h)&&pt(l,u)}})),()=>{s=!0}},[a,Ne,pt,gt,l]);const Oe=se!==$,qt=i.useCallback(async()=>{if(!c||!a.writeFile)return re.error(t("filesView.toast.savingNotSupported")),!1;const s=bs(c.path)||kt;if(!fc({selectedFilePath:c.path,loadedFilePath:ge,fileLoading:Fe,isDirty:Oe,draftContent:se,fileContent:$,isNonEditableBinary:s}))return s?console.warn(`[saveDraft] refusing to save binary file "${c.path}".`):se===""&&$!==""&&ge!==c.path&&console.warn(`[saveDraft] refusing to save empty draft for "${c.path}" (${$.length} bytes were expected). The file may have been read during a concurrent write (O_TRUNC race). Try again after content finishes loading if the save was intentional.`),!1;if(!Oe)return!0;jr(!0);try{const o=pc(se,pn);if(!(await a.writeFile(c.path,o))?.success)return re.error(t("filesView.toast.writeFileFailed")),!1;if(pe(se),Nr.current=o,Sr.current+=1,l&&Ss(c.path,l)){const h=dr(l,c.path);h&&rl.requestGitRefresh({directory:l,paths:[h]})}if(l&&/(?:^|\/)\.agents\/loops\/[^/]+\.md$/i.test(Y(c.path))){const h=nl.getState().projects.find(j=>Y(j.path)===Y(l));if(h)try{await Ll(h.id)}catch{re.error(t("sessions.scheduledTasks.dialog.toast.updateFailed"))}}return c?.path&&ys(c.path)&&(wt.current=se,cs.current=se),ot(c.path).then(h=>{h&&(Je.current=h)}).catch(()=>{}),!0}catch(o){return re.error(o instanceof Error?o.message:t("filesView.toast.saveFailed")),!1}finally{jr(!1)}},[kt,se,$,Fe,a,Oe,pn,ge,ot,l,c,t]);i.useEffect(()=>{ke||(_t("idle"),it.current&&(clearTimeout(it.current),it.current=null))},[ke]);const qn=1500;i.useEffect(()=>{const s=!!(c&&a.writeFile),o=!!(c?.path&&(bs(c.path)||kt));if(dc({autoSaveEnabled:ke,isDirty:Oe,canWrite:s,isSaving:ls,fileLoading:Fe,selectedFilePath:c?.path,loadedFilePath:ge,isNonEditableBinary:o}))return it.current=setTimeout(()=>{qt().then(u=>{u&&(_t("saved"),setTimeout(()=>_t("idle"),2e3))})},qn),()=>{it.current&&(clearTimeout(it.current),it.current=null)}},[ke,kt,se,Fe,Oe,ge,c,a.writeFile,ls,qt]),i.useEffect(()=>{_t("idle")},[c?.path]),il({save_file:s=>{if(!(s.target instanceof Node)||!As.current?.contains(s.target))return!1;it.current&&(clearTimeout(it.current),it.current=null),ls||qt().then(o=>{o&&(_t("saved"),setTimeout(()=>_t("idle"),2e3))})},find_in_file:s=>{if(!(s.target instanceof Node))return!1;if(Ge&&$e()==="preview"){if(g||!(ne?$s.current:Os.current)?.contains(s.target))return!1;Is(!0),Nn(u=>u+1);return}if(!As.current?.contains(s.target))return!1;ze(!0)}});const Gt=i.useCallback(s=>{const{content:o,lineEnding:u}=hc(s);return Nr.current=s,Sr.current+=1,ja(u),pe(o),wt.current=o,cs.current=o,Ce(o),o},[]),Gn=i.useCallback(async s=>{const o=$t.current+1;$t.current=o;const u=tt(),h=L.current,j=()=>{if(!l||tt()!==u||L.current!==h)return!1;const A=et.getState().byRoot[l],le=A?.selectedPath??A?.openPaths[0]??null;return $t.current===o&&le===s.path};we(null),He(""),de(null),xn(!1),xt(!0);const S=Hr(s.path),P=qr(s.path),O=Li(s.path),oe=bs(s.path);if(g&&H(!0),w.isDesktop&&S&&!P){pe(""),Ce("");return}if(!w.isDesktop&&S&&!P){pe(""),Ce(""),de(s.path),xt(!1);return}if(O){pe(""),Ce(""),de(s.path),xt(!1);return}if(oe){pe(""),Ce(""),de(s.path),xt(!1);return}await qs(s.path).then(A=>{if(!j())return;if(Ai(A)){xn(!0),pe(""),Ce(""),de(s.path);return}const le=Gt(A),Vt=Qr(s.path)||cr(s.path)||Qi(s.path)||ys(s.path)||qr(s.path)||Ii(s.path)||Oi(s.path);ae(Vt?"edit":gc(le,At.current[s.path])),de(s.path),ot(s.path).then(ss=>{ss&&j()&&(Je.current=ss)}).catch(()=>{})}).catch(A=>{if(j()){if(qc(A)){if(xt(!1),l&&Se(l,null),we(null),pe(""),Ce(""),de(null),Je.current=null,te.trim().length>0&&ee(""),g&&H(!1),l){const Vt=[...Ji(s.path,l),s.path];Vt.length>0&&Vs(l,Vt);for(const ss of Vt)Ke.current.has(ss)||Pe(ss)}return}if(Zi(A)){l&&pt(l,s.path),pe(""),Ce(""),we(null),Je.current=null,g&&H(!1);return}pe(""),Ce(""),we(A instanceof Error?A.message:t("filesView.error.readFileFailed")),Je.current=null}}).finally(()=>{j()&&xt(!1)})},[Gt,Vs,g,Pe,qs,ot,pt,l,w.isDesktop,te,Se,t]),Gs=i.useCallback(async(s,o)=>{if(!e||!l)return;const u=Ji(s,l),h=o?[...u,s]:u;if(h.length>0&&Vs(l,h),!R)return;const j=h.map(S=>{if(!Ke.current.has(S))return Pe(S)}).filter(Boolean);await Promise.all(j)},[Vs,Pe,l,R,e]),Xn=i.useCallback((s,o)=>{const u=o.findIndex(h=>h.path===s);return u===-1||o.length<=1?null:o[u+1]??o[u-1]??null},[]),Me=i.useCallback(async s=>{if(ms.current)ms.current=!1;else if(Oe){ds(!0),Wt.current=s;return}l&&(Se(l,s.path),Gs(s.path,!1)),we(null),He(""),pe(""),wt.current="",cs.current="",Ce(""),de(null),g&&H(!0)},[Gs,Oe,g,l,Se]);i.useEffect(()=>{c?.path&&Gs(c.path,!1)},[Gs,c?.path]),i.useEffect(()=>{if(!e)return;if(!c){$t.current+=1,Ct.current=null,xt(!1);return}if(ge===c.path||Ct.current===c.path)return;const s=c.path;Ct.current=s,Gn(c).finally(()=>{Ct.current===s&&(Ct.current=null)})},[us,Gn,ge,c,e]);const Xs=i.useRef(Oe);Xs.current=Oe,i.useEffect(()=>Al(({runtimeKey:s,paths:o})=>{const u=c?.path;s!==tt()||!u||Xs.current||!o.includes(Y(u))||($t.current+=1,Ct.current=null,Je.current=null,He(""),we(null),de(null),Sa(h=>h+1))}),[c?.path]),i.useEffect(()=>{if(!e||!c?.path||ge!==c.path)return;const s=c.path,o=tt(),u=L.current,h=()=>Xs.current||ys(s)&&wt.current!==cs.current,j=!bs(s)&&!Hr(s)&&!kt?ac({readContent:()=>qs(s,{fresh:!0}),getLoadedContent:()=>Nr.current,getLoadedRevision:()=>Sr.current,isDirty:h,applyContent:A=>{if(!(S||tt()!==o||L.current!==u)){if(Ai(A)){de(null);return}Gt(A)}}}):null;let S=!1,P=!1;const O=()=>{document.hidden||P||(P=!0,ot(s).then(async A=>{if(S||tt()!==o||L.current!==u||!A)return;const le=Je.current;if(!le||le.path!==s){Je.current=A;return}if(lc(le,A)){if(j&&A.size<=Gc){await j.poll()&&!S&&(Je.current=A);return}Xs.current||(Je.current=A,de(null))}}).catch(()=>{}).finally(()=>{P=!1}))};O();const oe=window.setInterval(O,2e3);return()=>{S=!0,j?.dispose(),window.clearInterval(oe)}},[Gt,kt,ge,qs,ot,c?.path,e]);const Xa=i.useCallback(()=>{const s=Wt.current,o=fs.current;if(Wt.current=null,fs.current=null,ms.current=!0,ds(!1),Ce($),o){l&&It(l,o),c?.path===o&&(s?Me(s):(l&&Se(l,null),pe(""),we(null),He(""),de(null),g&&H(!1)));return}if(s){Me(s);return}},[$,Me,g,It,l,c?.path,Se]),Ja=i.useCallback(async()=>{const s=Wt.current,o=fs.current;if(!await qt()){ms.current=!1;return}if(Wt.current=null,fs.current=null,ms.current=!0,ds(!1),o){l&&It(l,o),c?.path===o&&(s?await Me(s):(l&&Se(l,null),pe(""),we(null),He(""),de(null),g&&H(!1)));return}if(s){await Me(s);return}},[Me,g,It,l,qt,c?.path,Se]),Jn=i.useCallback(s=>{const o=c?.path===s,u=Xn(s,Bt);if(o&&Oe){ds(!0),Wt.current=u,fs.current=s;return}if(l&&It(l,s),!!o){if(u){Me(u);return}l&&Se(l,null),pe(""),we(null),He(""),de(null),g&&H(!1)}},[Xn,Me,Oe,g,Bt,It,l,c?.path,Se]),Yn=i.useMemo(()=>new Set(Ne),[Ne]),Js=i.useMemo(()=>Il(T?Z?.files??[]:[]),[Z?.files,T]),Ya=i.useCallback(s=>{if(Yn.has(s))return"open";const o=s.startsWith(l+"/")?s.slice(l.length+1):s;return Js.statusByPath.get(o)??null},[Yn,Js,l]),Za=i.useCallback(s=>{if(!Z?.files)return null;const o=s.startsWith(l+"/")?s.slice(l.length+1):s;return Js.badgeByDir.get(o)??null},[Z,Js,l]),Qa=i.useCallback(async s=>{const o=Y(s);l&&(cn(l,o),Ke.current.has(o)||await Pe(o))},[Pe,l,cn]),eo=i.useMemo(()=>({canRename:Cn,canCreateFile:Sn,canCreateFolder:Fn,canDelete:kn,canReveal:Rn}),[Cn,Sn,Fn,kn,Rn]);function Zn(s,o){const u=mn[s]??[];return u.map((h,j)=>{const S=h.type==="directory",P=S&&ga.has(h.path),O=c?.path===h.path,oe=j===u.length-1;return r.jsxs("li",{className:"relative",children:[o>0&&r.jsxs(r.Fragment,{children:[r.jsx("span",{className:"absolute top-3.5 left-[-12px] w-3 h-px bg-border/40"}),oe&&r.jsx("span",{className:"absolute top-3.5 bottom-0 left-[-13px] w-[2px] bg-background"})]}),r.jsx(Xc,{node:h,root:l,isExpanded:P,isActive:O,isMobile:g,isBrowserClient:y,alwaysShowActions:C,status:S?void 0:Ya(h.path),badge:S?Za(h.path):void 0,permissions:eo,downloadFile:a.downloadFile,contextMenuPath:Va,setContextMenuPath:Pa,rightClickMenuPath:Ma,setRightClickMenuPath:Da,onSelect:Me,onToggle:Qa,onRevealPath:$a,onOpenDialog:Er,canUpload:_n&&!Hs,onPickFiles:Wn}),S&&P&&r.jsxs("ul",{className:"flex flex-col gap-1 ml-3 pl-3 border-l border-border/40 relative",children:[Ps[h.path]?r.jsxs("li",{className:"flex items-center gap-2 px-2 py-1 typography-meta text-muted-foreground",children:[r.jsx("span",{className:"min-w-0 flex-1 truncate text-[var(--status-error)]",title:Ps[h.path],children:Ps[h.path]}),r.jsxs(I,{variant:"ghost",size:"xs",className:"h-6 gap-1",onClick:()=>{Ie(h.path)},children:[r.jsx(E,{name:"refresh",className:"size-3.5"}),t("filesView.tree.actions.refreshTitle")]})]}):null,Zn(h.path,o+1)]})]},h.path)})}const Be=!!(c?.path&&Hr(c.path)),qe=!!(c?.path&&qr(c.path)),Qn=qe&&ye==="edit",jt=!!(c?.path&&Li(c.path)),ei=!!(c?.path&&al(c.path)),Mr=ei||!!(c?.path&&ol(c.path)),Dr=!!(c?.path&&ll(c.path)),Ys=!!(c?.path&&(bs(c.path)||kt)),Xt=Ys&&!Be&&!jt&&!Mr&&!Dr,ti=Ys||Be&&!Qn,si=i.useMemo(()=>Y(at?.path??""),[at?.path]),Jt=!!(at&&si&&nt&&nt===si&&!Fe&&!Xe&&!ti),Nt=i.useMemo(()=>dr(l,nt),[nt,l]),to=!!(c&&(!Be||qe)&&!jt&&!Xt&&$.length>0),so=!!(c&&Nt.length>0),Qe=!!(c&&!vr&&!Ys&&(!Be||qe)&&a.writeFile),Ge=!!(c?.path&&Qr(c.path)),Yt=!!(c?.path&&Qi(c.path)),Zt=!!(c?.path&&cr(c.path)),vs=!!(c?.path&&ys(c.path)),Qt=!!(c?.path&&Ii(c.path)),es=!!(c?.path&&Oi(c.path)),Zs=!!(c&&!Ys&&(!Be||qe))&&!Ge&&!vs&&!(Zt&&xe==="preview")&&!(qe&&ye==="preview")&&!(Qt&&We==="preview")&&!(es&&Le==="table"),ro=Ge&&fe==="edit"||Zt&&xe==="edit"||qe&&ye==="edit"||Qt&&We==="edit"||es&&Le==="text"||Yt&&ce==="text"||!Ge&&!Zt&&!Yt&&!qe&&!Qt&&!es&&_==="edit",Qs=i.useMemo(()=>nt?cl(nt):null,[nt]),[ri,zr]=i.useState(null);i.useEffect(()=>{let s=!1;const o=c?.path;if(!o||Qs){zr(null);return}return zr(null),ul(o).then(u=>{s||zr(u)}),()=>{s=!0}},[c?.path,Qs]),i.useEffect(()=>{!Qe&&_==="edit"&&ae("view")},[Qe,_]);const Lr="openchamber:files:md-viewer-mode",Ar="openchamber:files:html-viewer-mode",Ir="openchamber:files:json-viewer-mode";i.useEffect(()=>{const s=c?.path;if(!s)return;ae(At.current[s]??"edit");let o=gs?"preview":"edit";try{const j=localStorage.getItem(Lr);(j==="preview"||j==="edit")&&(o=j)}catch{}me(hr.current[s]??o);let u=gs?"preview":"edit";try{const j=localStorage.getItem(Ar);(j==="preview"||j==="edit")&&(u=j)}catch{}he(pr.current[s]??u),Ee(gr.current[s]??(gs?"preview":"edit")),lt(nn.current[s]??"preview"),ct(an.current[s]??"preview"),Ue(on.current[s]??"table");let h=gs?"tree":"text";try{const j=localStorage.getItem(Ir);(j==="tree"||j==="text")&&(h=j)}catch{}be(h)},[c?.path,gs]);const no=i.useCallback(s=>{const o=c?.path;o&&(At.current[o]=s),ae(s)},[c?.path]),io=i.useCallback(s=>{const o=c?.path;o&&(hr.current[o]=s),me(s);try{localStorage.setItem(Lr,s)}catch{}},[c?.path]),$e=i.useCallback(()=>fe,[fe]),ao=i.useCallback(s=>{const o=c?.path;o&&(nn.current[o]=s),lt(s)},[c?.path]),oo=i.useCallback(s=>{const o=c?.path;o&&(an.current[o]=s),ct(s)},[c?.path]),lo=i.useCallback(s=>{const o=c?.path;o&&(on.current[o]=s),Ue(s)},[c?.path]);i.useEffect(()=>{const s=c?.path;if(as(null),!s||ge!==s)return;let o=!1;return ot(s).then(u=>{!o&&u&&as(u.size)}).catch(()=>{}),()=>{o=!0}},[us,ge,ot,c?.path]);const ni=c&&Ge&&$e()==="preview"&&!Fe?c.path:null;i.useEffect(()=>{!ni||g||Bs()},[Bs,ne,g,ni]);const co=i.useCallback(s=>{be(s);try{localStorage.setItem(Ir,s)}catch{}},[]),uo=i.useCallback(s=>{const o=c?.path;o&&(pr.current[o]=s),he(s);try{localStorage.setItem(Ar,s)}catch{}},[c?.path]),fo=i.useCallback(s=>{const o=c?.path;if(o&&(gr.current[o]=s),Ae.current&&(clearTimeout(Ae.current),Ae.current=null),ut.current!==null&&(cancelAnimationFrame(ut.current),ut.current=null),s==="edit")Ce(wt.current||$),Ee(s);else{wt.current=se;const u=o;Ee("edit"),ut.current=requestAnimationFrame(()=>{ut.current=requestAnimationFrame(()=>{ut.current=null,!(l&&u&&et.getState().byRoot[l]?.selectedPath!==u)&&(St(h=>h+1),Ee("preview"))})});return}},[se,$,l,c?.path]),Or=i.useCallback(async(s,o)=>{if(!a.writeFile||o===cs.current)return!1;if(!(await a.writeFile(s,o))?.success)return re.error(t("filesView.toast.writeFileFailed")),!1;Gt(o);const h=await ot(s).catch(()=>null);return h&&(Je.current=h),!0},[Gt,a,ot,t]);i.useEffect(()=>()=>{Ae.current&&(clearTimeout(Ae.current),Ae.current=null),ut.current!==null&&(cancelAnimationFrame(ut.current),ut.current=null)},[ve,c?.path]);const mo=i.useCallback(s=>{if(wt.current=s,!ke||!c?.path||ve!=="preview"||!a.writeFile)return;Ae.current&&clearTimeout(Ae.current);const o=c.path;Ae.current=setTimeout(()=>{Ae.current=null,Or(o,s).then(u=>{u&&(Ls(!0),setTimeout(()=>Ls(!1),1500))}).catch(u=>{re.error(u instanceof Error?u.message:t("filesView.toast.saveFailed"))})},qn)},[ke,ve,a.writeFile,Or,c?.path,t]),ho=i.useMemo(()=>vs&&(wt.current||se)||$,[se,$,vs]),ii=i.useCallback(()=>xe,[xe]);i.useEffect(()=>{const s=u=>{const h=u?"preview":"edit",j=u?"tree":"text";for(const S of Ne)At.current[S]="edit",Qr(S)&&(hr.current[S]=h),cr(S)&&(pr.current[S]=h),ys(S)&&(gr.current[S]=h);ae("edit"),me(h),he(h),Ee(h),be(j);try{localStorage.setItem(Lr,h),localStorage.setItem(Ar,h),localStorage.setItem(Ir,j)}catch{}},o=u=>{const h=!!u.detail?.enabled;s(h)};return window.addEventListener("openchamber:file-viewer-preview-mode-changed",o),()=>{window.removeEventListener("openchamber:file-viewer-preview-mode-changed",o)}},[Ne]),i.useEffect(()=>{if(!at||!l)return;const s=()=>{typeof window>"u"||Ut.current===null&&(Ut.current=window.requestAnimationFrame(()=>{Ut.current=null,Cr(ft=>ft+1)}))},o=(ft,Pt)=>{if(ft.state.doc.length!==Pt.length)return!1;if(Pt.length===0)return!0;const Ur=Math.min(128,Pt.length);if(ft.state.sliceDoc(0,Ur)!==Pt.slice(0,Ur))return!1;const Ti=Math.max(0,Pt.length-Ur);return ft.state.sliceDoc(Ti,Pt.length)===Pt.slice(Ti)},u=Y(at.path);if(!u){_s(null),Rt.current={key:"",attempts:0};return}const h=`${u}:${at.line}:${at.column??1}`;if(Rt.current.key!==h&&(Rt.current={key:h,attempts:0}),c?.path!==u){if(Fr)return;Me(Ot(u));return}if(Fe||ge!==u)return;if(Xe||Be||jt||Xt){_s(null),Rt.current={key:"",attempts:0};return}if(!Qe)return;if(_!=="edit"){ae("edit");return}const j=Ye.current;if(!j){s();return}if(!o(j,se)){s();return}const S=Math.max(1,Math.min(at.line,j.state.doc.lines)),P=j.state.doc.line(S),O=Math.max(1,at.column||1),oe=Math.max(0,P.to-P.from),A=Math.min(oe,O-1),le=P.from+A;if(!(j.state.selection.main.head===le)||Rt.current.attempts===0){Rt.current.attempts+=1,j.dispatch({selection:{anchor:le},effects:Lt.scrollIntoView(le,{y:"center"})}),j.focus(),s();return}typeof window<"u"&&window.requestAnimationFrame(()=>{const ft=Ye.current;ft&&(ft.dispatch({selection:{anchor:le},effects:Lt.scrollIntoView(le,{y:"center"})}),ft.focus())}),_s(null),Rt.current={key:"",attempts:0}},[Qe,Fr,se,Ra,Xe,Fe,Be,jt,Xt,ge,Me,at,l,c?.path,_s,_,Ot]),i.useEffect(()=>{if(!Vr||!l)return;const s=Y(Vr);if(!s){Pr(null);return}c?.path===s&&(Fe||ge!==s||(!Xe&&!Be&&!jt&&!Xt&&Qe&&_==="edit"&&Ye.current?.focus(),Pr(null)))},[Qe,Xe,Fe,Be,jt,Xt,ge,Vr,l,c?.path,Pr,_]);const ts=i.useCallback(s=>{if(!g||!s||!s.hasFocus||typeof window>"u")return;const o=window.visualViewport;if(!o)return;const u=document.documentElement.clientHeight||window.innerHeight;if(Math.max(0,u-(o.offsetTop+o.height))<=0)return;const j=s.state.selection.main.head,S=s.coordsAtPos(j);if(!S)return;const P=Math.round(o.offsetTop+o.height),oe=S.bottom+20-P;oe<=0||(s.scrollDOM.scrollTop+=oe)},[g]);i.useEffect(()=>{if(!g||typeof window>"u")return;const s=()=>{window.requestAnimationFrame(()=>{ts(Ye.current)})},o=window.visualViewport;return o?.addEventListener("resize",s),o?.addEventListener("scroll",s,{passive:!0}),document.addEventListener("selectionchange",s),()=>{o?.removeEventListener("resize",s),o?.removeEventListener("scroll",s),document.removeEventListener("selectionchange",s)}},[g,ts]),dl("open_go_to_line",s=>{if(!Qe||_!=="edit"||g)return!1;const o=s.target;if(o?.closest('[role="dialog"]')||!(o instanceof Node)||!As.current?.contains(o))return!1;const u=!!o?.closest(".cm-editor");if(!!o?.closest('input, textarea, [contenteditable="true"], [role="textbox"]')&&!u)return!1;Tr(!0)});const er=mt(s=>s.editorFontSize),ai=i.useMemo(()=>{if(!c?.path)return[Bi(f,{fontSize:er})];const s=Kr(c.path),o=[Bi(f,s?{syntaxColors:!1,fontSize:er}:{fontSize:er})],u=Qs??ri;return u&&o.push(u),s&&o.push(Nl({language:s,themeName:f.metadata.id,theme:Tl(f)})),Q&&o.push(Lt.lineWrapping),g&&o.push(Lt.updateListener.of(h=>{h.view.hasFocus&&(h.selectionSet||h.focusChanged||h.viewportChanged||h.geometryChanged)&&window.requestAnimationFrame(()=>{ts(h.view)})})),o},[f,c?.path,Qs,ri,Q,g,ts,er]),oi=i.useMemo(()=>({light:Rs.metadata.id,dark:Ts.metadata.id}),[Rs.metadata.id,Ts.metadata.id]),li=jt||Mr||Dr,ws=c?.path&&li?`${c.path}|${wr.allowOutsideWorkspace?"outside":"workspace"}|${us}`:"",tr=c?.path&&Zt&&xe==="preview"&&!w.isVSCode?`${c.path}|${us}`:"",ci=t("filesView.error.readFileFailed"),{readyKey:ui,nonce:po}=ta(tr,we,ci),{readyKey:di,nonce:sr}=ta(ws,we,ci),go=!!(tr&&ui!==tr),Br=!!(ws&&di!==ws),xo=c?.path&&Be?qe?`data:${fl(c.path)};utf8,${encodeURIComponent($)}`:ya:"",rr=c?.path&&li&&ws&&di===ws?Pi().authenticatedAsset("/api/fs/raw",{path:c.path,allowOutsideWorkspace:wr.allowOutsideWorkspace?"true":void 0,directory:l||void 0}):"",vo=i.useCallback(s=>r.jsx("div",{className:"h-full overflow-hidden bg-[var(--surface-background)]",children:r.jsx("iframe",{src:rr,className:"h-full w-full border-0",title:s.name},sr)}),[rr,sr]),fi=c&&a.downloadFile?r.jsxs(I,{type:"button",variant:"outline",size:"sm",onClick:()=>{const s=a.downloadFile;!s||!c||s(c.path).catch(o=>{console.error("Download failed:",o),re.error(t("sidebarFilesTree.toast.operationFailed"))})},children:[r.jsx(E,{name:"download",className:"mr-2 size-4"}),t("filesView.editor.saveFile")]}):null,nr=c&&!Fe&&!Br&&!Xe?(s=>Be&&!Qn?r.jsx(Rc,{src:xo,name:s.name,sizeBytes:je}):jt?vo(s):Mr?r.jsx(Tc,{kind:ei?"video":"audio",src:rr,name:s.name,sizeBytes:je,download:fi},sr):Dr?r.jsx(Fc,{src:rr,name:s.name,sizeBytes:je},sr):Xt?r.jsx(jc,{name:s.name,path:s.path,sizeBytes:je,download:fi}):es&&Le==="table"?r.jsx(Mc,{path:s.path,content:$,sizeBytes:je}):Qt&&We==="preview"?r.jsx("div",{className:"h-full min-h-0 overflow-hidden",children:r.jsx(ar,{fallback:r.jsxs("div",{className:"m-3 rounded-md border border-destructive/20 bg-destructive/10 px-3 py-2",children:[r.jsx("div",{className:"mb-1 font-medium text-destructive",children:t("filesView.error.previewUnavailable")}),r.jsx("div",{className:"text-sm text-muted-foreground",children:t("filesView.error.switchToEditMode")})]}),children:r.jsx(Xr,{content:`\`\`\`mermaid
|
|
16
|
-
${$}
|
|
17
|
-
\`\`\``,className:"markdown-mermaid-fullscreen h-full",enableFileReferences:!1,allowMermaidWheelEvents:!0})})}):null)(c):null;i.useEffect(()=>{let s=!1,o="";return(async()=>{if(!c?.path||!Be||qe){He("");return}we(null);const h=gt(c.path);if(s)return;await(a.readFileBinary?a.readFileBinary(c.path,h).then(S=>S.dataUrl):(async()=>{const S=await en("/api/fs/raw",{signal:AbortSignal.timeout(3e4),query:{path:c.path,allowOutsideWorkspace:h.allowOutsideWorkspace?"true":void 0,directory:l||void 0}});if(!S.ok)throw new Error(t("filesView.error.readFileFailed"));const P=await S.blob();return o=URL.createObjectURL(P),s?(URL.revokeObjectURL(o),o="",""):o})()).then(S=>{s||(He(S),de(c.path))}).catch(S=>{s||(He(""),we(S instanceof Error?S.message:t("filesView.error.readFileFailed")),de(null))}).finally(()=>{s||xt(!1)})})(),()=>{s=!0,o&&URL.revokeObjectURL(o)}},[us,a,Be,qe,gt,l,c?.path,wr,t]);const wo=i.useCallback(()=>kr(null),[]),bo=i.useMemo(()=>Wl({drafts:Mn,editingDraftId:Us,commentText:Ws,onTextChange:Dn,selection:J,isDragging:En,fileLabel:c?.path??"",newWidgetId:"files-new-comment-input",mapDraftToRange:s=>({start:s.startLine,end:s.endLine}),onSave:Bn,onCancel:()=>{Ze(null),xs()},onEdit:s=>{In(s),Ze({start:s.startLine,end:s.endLine})},onDelete:On}),[xs,Ws,On,Us,Mn,Bn,En,J,c?.path,Dn,In]),mi=Hi(),hi=Hi(),pi=!Fe&&!Xe&&ge===nt,ir=pi&&Zs&&_==="view"&&!(Yt&&ce==="tree"),gi=pi&&Ge&&$e()==="preview",{setScroller:xi,restore:yo}=lr(ir?`${vt}:code`:null),{setScroller:vi,restore:jo}=lr(ir?`${vt}:code:fullscreen`:null),{setScroller:wi}=lr(gi?`${vt}:markdown`:null),{setScroller:bi}=lr(gi?`${vt}:markdown:fullscreen`:null),{setScroller:yi}=mi,{setScroller:ji}=hi,No=i.useCallback(s=>{yi(s),xi(s)},[yi,xi]),So=i.useCallback(s=>{ji(s),vi(s)},[ji,vi]),[Fo,Co]=i.useState(null),[ko,Ro]=i.useState(null),To=i.useCallback(s=>{Pn.current=s,Os.current=s,Co(s),wi(s)},[wi]),Eo=i.useCallback(s=>{$s.current=s,Ro(s),bi(s)},[bi]),Ni=i.useCallback(s=>{l&&mt.getState().openContextFile(l,s)},[l]),Si=Ge&&fe==="preview"&&!Fe;Xi({container:Fo,filePath:c?.path??null,workspaceRoot:l||null,onOpenFile:Ni,enabled:Si}),Xi({container:ko,filePath:c?.path??null,workspaceRoot:l||null,onOpenFile:Ni,enabled:Si});const $r=xl("unified"),dt=se.length>da,_r=i.useMemo(()=>dt&&ir?xc(se):void 0,[ir,se,dt]),Fi=i.useCallback((s,o,u,h)=>{const j={name:s.name,contents:o,lang:Kr(s.path)||void 0},S=P=>r.jsx(Rl,{file:dt&&_r?{...j,cacheKey:`${s.path}:${_r}`}:j,options:{disableFileHeader:!0,overflow:Q?"wrap":"scroll",theme:oi,themeType:f.metadata.variant==="dark"?"dark":"light",onPostRender:h},className:dt?"block w-full":"block h-full w-full",style:dt?void 0:{height:"100%"}},P);return dt?r.jsx("div",{className:"h-full",children:r.jsx(El.Provider,{value:u.virtualizer,children:r.jsx(Vl.Provider,{value:$r,children:S(`${s.path}:${$r?"pool":"pending"}`)})})}):r.jsx("div",{className:"h-full",children:S(s.path)})},[f.metadata.variant,dt,_r,oi,$r,Q]),Ci=({exitFullscreenOnly:s=!1,layout:o="floating"}={})=>{if(!c)return null;const u=o==="docked",h=ml(hl("save_file")),j=u?"pointer-events-auto flex flex-wrap items-center gap-1":"pointer-events-auto flex items-center gap-1 rounded-lg border border-[var(--interactive-border)] bg-[var(--surface-elevated)] p-1 shadow-sm",S=(P,O)=>r.jsxs(Mt,{children:[r.jsx(Dt,{asChild:!0,children:r.jsx("span",{className:"inline-flex",children:O})}),r.jsx(zt,{side:"bottom",sideOffset:6,children:P})]});return r.jsxs("div",{className:j,children:[Qe&&ro&&r.jsxs(r.Fragment,{children:[ls?r.jsxs("span",{className:"flex items-center gap-1 px-1 text-muted-foreground typography-meta",children:[r.jsx(E,{name:"loader-4",className:"size-3.5 animate-spin"}),t("filesView.editor.saving")]}):ke&&Fa==="saved"&&!Oe?r.jsxs("span",{className:"flex items-center gap-1 px-1 text-[color:var(--status-success)] typography-meta",children:[r.jsx(E,{name:"check",className:"size-3.5"}),t("filesView.editor.saved")]}):Oe?S(t(ke?"filesView.editor.saveNowTitle":"filesView.editor.saveNowManualTitle",{shortcut:h}),r.jsx(I,{variant:"ghost",size:"sm",onClick:()=>{qt()},className:"h-6 gap-1 px-1 text-muted-foreground opacity-80 hover:bg-transparent hover:opacity-100 focus-visible:bg-transparent active:bg-transparent",title:t(ke?"filesView.editor.saveNowTitle":"filesView.editor.saveNowManualTitle",{shortcut:h}),"aria-label":t("filesView.editor.saveAria",{shortcut:h}),children:r.jsx(E,{name:"save-3",className:"size-4"})})):null,S(t(ke?"filesView.editor.autoSaveOn":"filesView.editor.manualSave"),r.jsx(I,{variant:"ghost",size:"sm",onClick:()=>ka(!ke),className:W("size-6 p-0 transition-opacity hover:bg-transparent focus-visible:bg-transparent active:bg-transparent",ke?"text-foreground opacity-100":"text-muted-foreground opacity-65 hover:opacity-100"),title:t(ke?"filesView.editor.autoSaveOn":"filesView.editor.manualSave"),"aria-label":t(ke?"filesView.editor.autoSaveOn":"filesView.editor.manualSave"),children:ke?r.jsx(E,{name:"file-check-fill",className:"size-4"}):r.jsx(E,{name:"file-check",className:"size-4"})}))]}),r.jsxs(tn,{onOpenChange:ie,children:[r.jsxs(Mt,{children:[r.jsx(Dt,{asChild:!0,children:r.jsx("span",{className:"inline-flex",children:r.jsx(sn,{asChild:!0,children:r.jsx(I,{variant:"ghost",size:"sm",className:"size-6 p-0 text-foreground opacity-100 hover:bg-transparent focus-visible:bg-transparent active:bg-transparent",title:t("filesView.editor.openInDesktopApp"),"aria-label":t("filesView.editor.openInDesktopApp"),children:r.jsx(E,{name:"file-transfer",className:"size-4"})})})})}),r.jsx(zt,{side:"bottom",sideOffset:6,children:t("filesView.editor.openInDesktopApp")})]}),r.jsxs(rn,{align:"end",className:"w-56 max-h-[70vh] overflow-y-auto",children:[Ia.map(P=>r.jsxs(ur,{className:"flex items-center gap-2",onClick:()=>{_a(P)},children:[r.jsx(Bc,{label:P.label,iconDataUrl:P.iconDataUrl}),r.jsx("span",{className:"typography-ui-label text-foreground",children:P.label})]},P.id)),Oa?r.jsxs(ur,{className:"flex items-center gap-2",onClick:()=>{Ba(!0)},children:[r.jsx(E,{name:"refresh",className:"size-4"}),r.jsx("span",{className:"typography-ui-label text-foreground",children:t("filesView.editor.refreshApps")})]}):null]})]}),!ti&&r.jsxs(r.Fragment,{children:[S(t(Q?"filesView.editor.disableLineWrap":"filesView.editor.enableLineWrap"),r.jsx(I,{variant:"ghost",size:"sm",onClick:()=>_e(!Q),className:W("size-6 p-0 transition-opacity hover:bg-transparent focus-visible:bg-transparent active:bg-transparent",Q?"text-foreground opacity-100":"text-muted-foreground opacity-65 hover:opacity-100"),title:t(Q?"filesView.editor.disableLineWrap":"filesView.editor.enableLineWrap"),children:r.jsx(E,{name:"text-wrap",className:"size-4"})})),_==="edit"&&r.jsxs(r.Fragment,{children:[S(t("filesView.editor.findInFile"),r.jsx(I,{variant:"ghost",size:"sm",onClick:P=>{ze(!De),P.currentTarget.blur()},className:"size-6 p-0 text-foreground opacity-100 transition-opacity hover:bg-transparent focus-visible:bg-transparent active:bg-transparent",title:t("filesView.editor.findInFile"),children:r.jsx(E,{name:"search",className:"size-4"})})),S(t("filesView.editor.goToLine"),r.jsx(I,{variant:"ghost",size:"sm",onClick:P=>{Tr(O=>!O),P.currentTarget.blur()},className:"size-6 p-0 text-foreground opacity-100 transition-opacity hover:bg-transparent focus-visible:bg-transparent active:bg-transparent",title:t("filesView.editor.goToLine"),children:r.jsx(E,{name:"menu-fold-2",className:"size-4"})})),r.jsx(Ql,{open:Aa,onOpenChange:Tr,view:Ye.current,variant:"inline"})]})]}),Zs&&Qe&&!Yt&&!Zt&&!qe&&!Qt&&!es&&r.jsx(js,{currentMode:_==="view"?"preview":"edit",onToggle:()=>{no(_==="view"?"edit":"view")}}),Ge&&S(t($e()==="preview"?"filesView.editor.switchToEditMode":"filesView.editor.switchToPreviewMode"),r.jsx(I,{variant:"ghost",size:"sm",onClick:()=>io($e()==="preview"?"edit":"preview"),className:W("size-6 p-0 transition-colors hover:bg-[var(--interactive-hover)] focus-visible:bg-[var(--interactive-hover)] active:bg-[var(--interactive-hover)]",$e()==="preview"?"bg-[var(--interactive-selection)] text-[var(--interactive-selection-foreground)] hover:bg-[var(--interactive-selection)] focus-visible:bg-[var(--interactive-selection)] active:bg-[var(--interactive-selection)]":"text-muted-foreground opacity-65 hover:opacity-100"),title:t($e()==="preview"?"filesView.editor.switchToEditMode":"filesView.editor.switchToPreviewMode"),"aria-label":t($e()==="preview"?"filesView.editor.switchToEditMode":"filesView.editor.switchToPreviewMode"),children:r.jsx(E,{name:$e()==="preview"?"eye":"eye-off",className:"size-4"})})),cr(c?.path??"")&&r.jsx(js,{currentMode:ii(),onToggle:()=>{uo(ii()==="preview"?"edit":"preview")}}),qe&&r.jsx(js,{currentMode:ye,onToggle:()=>ao(ye==="preview"?"edit":"preview")}),Qt&&r.jsx(js,{currentMode:We,onToggle:()=>oo(We==="preview"?"edit":"preview")}),es&&S(t(Le==="table"?"filesView.artifact.table.showSource":"filesView.artifact.table.showTable"),r.jsx(I,{variant:"ghost",size:"sm",onClick:()=>lo(Le==="table"?"text":"table"),className:"size-6 p-0 text-muted-foreground opacity-65 hover:bg-transparent hover:opacity-100 focus-visible:bg-transparent active:bg-transparent",title:t(Le==="table"?"filesView.artifact.table.showSource":"filesView.artifact.table.showTable"),"aria-label":t(Le==="table"?"filesView.artifact.table.showSource":"filesView.artifact.table.showTable"),children:Le==="table"?r.jsx(E,{name:"code-sslash",className:"size-4"}):r.jsx(E,{name:"table-2",className:"size-4"})})),Ge&&$e()==="preview"&&S(t("filesView.editor.findInFile"),r.jsx(I,{variant:"ghost",size:"sm",onClick:()=>{Is(!0),Nn(P=>P+1)},className:"size-6 p-0 text-foreground opacity-100 transition-opacity hover:bg-transparent focus-visible:bg-transparent active:bg-transparent",title:t("filesView.editor.findInFile"),children:r.jsx(E,{name:"search",className:"size-4"})})),Ge&&$e()==="preview"&&Wa&&r.jsxs(Mt,{children:[r.jsx(Dt,{asChild:!0,children:r.jsx(I,{variant:"ghost",size:"sm",className:"size-6 p-0 text-muted-foreground opacity-65 hover:bg-transparent hover:opacity-100 focus-visible:bg-transparent active:bg-transparent","aria-label":t(zs?"filesView.tts.stopSpeaking":"filesView.tts.readAloud"),onClick:()=>{zs?ba():$.trim()&&wa($)},children:zs?r.jsx(E,{name:"stop",className:"size-4 text-[color:var(--status-success)]"}):r.jsx(E,{name:"volume-up",className:"size-4"})})}),r.jsx(zt,{sideOffset:8,children:t(zs?"filesView.tts.stopSpeaking":"filesView.tts.readAloud")})]}),vs&&r.jsxs(r.Fragment,{children:[r.jsx(js,{currentMode:ve,onToggle:()=>fo(ve==="preview"?"edit":"preview")}),ve==="preview"&&r.jsx(I,{variant:"ghost",size:"sm",onClick:async()=>{const P=gn.current?.getXml();if(Ae.current&&(clearTimeout(Ae.current),Ae.current=null),c?.path&&P){if(!await Or(c.path,P))return;Ls(!0),setTimeout(()=>Ls(!1),1500)}},className:"size-6 p-0 text-foreground hover:bg-transparent focus-visible:bg-transparent active:bg-transparent",title:t("filesView.diagram.saveDiagram"),children:Ca?r.jsx(E,{name:"check",className:"size-4 text-[color:var(--status-success)]"}):r.jsx(E,{name:"save-3",className:"size-4"})})]}),Yt&&S(t(ce==="tree"?"filesView.editor.switchToTextView":"filesView.editor.switchToTreeView"),r.jsx(I,{variant:"ghost",size:"sm",onClick:()=>co(ce==="tree"?"text":"tree"),className:"size-6 p-0 text-muted-foreground opacity-65 hover:bg-transparent hover:opacity-100 focus-visible:bg-transparent active:bg-transparent",title:t(ce==="tree"?"filesView.editor.switchToTextView":"filesView.editor.switchToTreeView"),children:ce==="tree"?r.jsx(E,{name:"code-sslash",className:"size-4"}):r.jsx(E,{name:"node-tree",className:"size-4"})})),to&&S(t("filesView.editor.copyFileContents"),r.jsx(I,{variant:"ghost",size:"sm",onClick:async()=>{(await fr($)).ok?(wn(!0),hs.current!==null&&window.clearTimeout(hs.current),hs.current=window.setTimeout(()=>{wn(!1)},1200)):re.error(t("filesView.toast.copyFailed"))},className:"size-6 p-0 hover:bg-transparent focus-visible:bg-transparent active:bg-transparent",title:t("filesView.editor.copyFileContents"),"aria-label":t("filesView.editor.copyFileContents"),children:za?r.jsx(E,{name:"check",className:"size-4 text-[color:var(--status-success)]"}):r.jsx(E,{name:"clipboard",className:"size-4"})})),so&&S(t("filesView.editor.copyFilePathTitle",{path:Nt}),r.jsx(I,{variant:"ghost",size:"sm",onClick:async()=>{(await fr(Nt)).ok?(bn(!0),ps.current!==null&&window.clearTimeout(ps.current),ps.current=window.setTimeout(()=>{bn(!1)},1200)):re.error(t("filesView.toast.copyFailed"))},className:"size-6 p-0 hover:bg-transparent focus-visible:bg-transparent active:bg-transparent",title:t("filesView.editor.copyFilePathTitle",{path:Nt}),"aria-label":t("filesView.editor.copyFilePathTitle",{path:Nt}),children:La?r.jsx(E,{name:"check",className:"size-4 text-[color:var(--status-success)]"}):r.jsx(E,{name:"file-copy-2",className:"size-4"})})),a.downloadFile&&S(t("filesView.editor.saveFile"),r.jsx(I,{variant:"ghost",size:"sm",onClick:()=>{const P=a.downloadFile;P&&P(c.path).catch(O=>{console.error("Download failed:",O),re.error(t("sidebarFilesTree.toast.operationFailed"))})},className:"size-6 p-0 hover:bg-transparent focus-visible:bg-transparent active:bg-transparent",title:t("filesView.editor.saveFile"),"aria-label":t("filesView.editor.saveFile"),children:r.jsx(E,{name:"download",className:"size-4"})})),s?S(t("filesView.editor.exitFullscreen"),r.jsx(I,{variant:"ghost",size:"sm",onClick:()=>Te(!1),className:"size-6 p-0 hover:bg-transparent focus-visible:bg-transparent active:bg-transparent",title:t("filesView.editor.exitFullscreen"),"aria-label":t("filesView.editor.exitFullscreen"),children:r.jsx(E,{name:"fullscreen-exit",className:"size-4"})})):!g&&n==="full"&&S(t(ne?"filesView.editor.exitFullscreen":"filesView.editor.fullscreen"),r.jsx(I,{variant:"ghost",size:"sm",onClick:()=>Te(!ne),className:"size-6 p-0 hover:bg-transparent focus-visible:bg-transparent active:bg-transparent",title:t(ne?"filesView.editor.exitFullscreen":"filesView.editor.fullscreen"),"aria-label":t(ne?"filesView.editor.exitFullscreen":"filesView.editor.fullscreen"),children:ne?r.jsx(E,{name:"fullscreen-exit",className:"size-4"}):r.jsx(E,{name:"fullscreen",className:"size-4"})}))]})},Wr=r.jsxs("div",{className:"relative flex h-full min-h-0 min-w-0 w-full flex-col overflow-hidden",children:[r.jsx(ra,{open:Fr,onOpenChange:s=>{s||ds(!0)},children:r.jsxs(na,{showCloseButton:!1,className:"max-w-md",children:[r.jsxs(ia,{children:[r.jsx(aa,{children:t("filesView.unsaved.title")}),r.jsx(oa,{children:t("filesView.unsaved.description")})]}),r.jsxs(la,{children:[r.jsx(I,{variant:"outline",onClick:()=>{Ja()},disabled:ls,className:"border-[var(--status-success-border)] bg-[var(--status-success-background)] text-[var(--status-success)] hover:bg-[rgb(var(--status-success)/0.2)]",children:t("filesView.unsaved.saveChanges")}),r.jsx(I,{variant:"destructive",onClick:Xa,children:t("filesView.unsaved.discard")})]})]})}),r.jsxs("div",{className:W("flex flex-col flex-shrink-0",z&&"border-b border-border/40"),children:[z?r.jsxs("div",{className:"flex min-w-0 items-center px-3 py-1.5",children:[g&&X&&r.jsx("button",{type:"button",onClick:()=>H(!1),"aria-label":t("filesView.editor.back"),className:"inline-flex size-7 flex-shrink-0 items-center justify-center mr-1 text-muted-foreground hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",children:r.jsx(E,{name:"arrow-left-s",className:"size-5"})}),g?c?r.jsxs(tn,{children:[r.jsx(sn,{asChild:!0,children:r.jsxs("button",{type:"button",className:"inline-flex min-w-0 max-w-full items-center gap-1 text-left typography-ui-label font-medium","aria-label":t("filesView.editor.openFilesAria"),children:[r.jsx(Ns,{filePath:c.path,extension:c.extension,className:"size-3.5 flex-shrink-0"}),r.jsx(Yi,{name:c.name}),r.jsx(E,{name:"arrow-down-s",className:"size-4 flex-shrink-0 text-muted-foreground"})]})}),r.jsx(rn,{align:"start",className:"w-[min(24rem,calc(100vw-2rem))] max-w-[calc(100vw-2rem)]",children:Bt.map(s=>{const o=c?.path===s.path;return r.jsxs(ur,{onSelect:u=>{if(u.target.closest("[data-close-open-file]")){u.preventDefault();return}o||Me(s)},className:W("flex min-w-0 items-center justify-between gap-2 overflow-hidden",o&&"bg-[var(--interactive-selection)] text-[var(--interactive-selection-foreground)]"),children:[r.jsxs("span",{className:"flex min-w-0 flex-1 items-center gap-2 overflow-hidden",children:[r.jsx(Ns,{filePath:s.path,extension:s.extension,className:"size-3.5 flex-shrink-0"}),r.jsx(Yi,{name:s.name})]}),r.jsx("button",{type:"button","data-close-open-file":!0,onPointerDown:u=>{u.preventDefault(),u.stopPropagation()},onClick:u=>{u.preventDefault(),u.stopPropagation(),Jn(s.path)},className:"inline-flex size-6 shrink-0 items-center justify-center rounded-md text-[var(--surface-muted-foreground)] hover:text-[var(--surface-foreground)]","aria-label":t("filesView.editor.closeFileAria",{name:s.name}),children:r.jsx(E,{name:"close",className:"size-3.5"})})]},s.path)})})]}):r.jsx("div",{className:"typography-ui-label font-medium truncate",children:t("filesView.editor.selectFile")}):Bt.length>0?r.jsxs("div",{className:"relative min-w-0 flex-1",children:[un.left&&r.jsx("div",{className:"pointer-events-none absolute left-0 top-0 bottom-0 w-6 z-10 bg-gradient-to-r from-background to-transparent"}),un.right&&r.jsx("div",{className:"pointer-events-none absolute right-0 top-0 bottom-0 w-6 z-10 bg-gradient-to-l from-background to-transparent"}),r.jsx("div",{ref:br,className:"flex min-w-0 items-center gap-1 overflow-x-auto scrollbar-none",style:{scrollbarWidth:"none",msOverflowStyle:"none"},children:Bt.map(s=>{const o=c?.path===s.path;return r.jsxs("div",{title:dr(l,s.path),className:W("group inline-flex items-center gap-1 rounded-md border px-2 py-1 typography-ui-label transition-colors whitespace-nowrap",o?"bg-[var(--interactive-selection)] border-[var(--primary-muted)] text-[var(--interactive-selection-foreground)]":"bg-transparent border-[var(--interactive-border)] text-[var(--surface-muted-foreground)] hover:bg-[var(--interactive-hover)] hover:text-[var(--surface-foreground)]"),children:[r.jsx(Ns,{filePath:s.path,extension:s.extension,className:"size-3.5 flex-shrink-0"}),r.jsx("button",{type:"button",onClick:()=>{o||Me(s)},className:"max-w-[12rem] truncate text-left",children:s.name}),r.jsx("button",{type:"button",onClick:u=>{u.stopPropagation(),Jn(s.path)},className:W("rounded-sm p-0.5 text-[var(--surface-muted-foreground)] hover:text-[var(--surface-foreground)]",!o&&!C&&"opacity-0 group-hover:opacity-100"),"aria-label":t("filesView.editor.closeFileAria",{name:s.name}),children:r.jsx(E,{name:"close",className:"size-3.5"})})]},s.path)})})]}):r.jsx("div",{className:"typography-ui-label font-medium truncate",children:t("filesView.editor.selectFile")})]}):null,c?r.jsxs("div",{className:"flex min-w-0 items-center gap-3 border-t border-border/40 bg-[var(--surface-subtle)] px-3 py-1",children:[Nt&&!g?r.jsx("span",{className:"min-w-0 flex-1 truncate typography-meta text-muted-foreground",title:Nt,children:Nt}):null,r.jsx("div",{className:"ml-auto min-w-0 shrink-0 overflow-x-auto",children:Ci({layout:"docked"})})]}):null]}),r.jsx("div",{className:"flex-1 min-h-0 min-w-0 relative",children:r.jsx(Gr,{ref:No,outerClassName:"h-full min-w-0",className:W("h-full min-w-0",dt&&"[overflow-anchor:none]"),children:c?Fe||Br?B?r.jsx("div",{className:"p-3"}):r.jsxs("div",{className:"p-3 flex items-center gap-2 typography-ui text-muted-foreground",children:[r.jsx(E,{name:"loader-4",className:"size-4 animate-spin"}),t("filesView.state.loading")]}):Xe?r.jsx("div",{className:"p-3 typography-ui text-[color:var(--status-error)]",children:Xe}):nr||(c&&vs&&ve==="preview"?r.jsx("div",{className:"h-full overflow-hidden",style:{minHeight:"400px"},children:r.jsx(wc,{ref:gn,xml:ho,onChange:mo},`${c.path}:${ue}`)}):c&&Yt&&ce==="tree"?r.jsx(ar,{fallback:r.jsxs("div",{className:"rounded-md border border-destructive/20 bg-destructive/10 px-3 py-2",children:[r.jsx("div",{className:"mb-1 font-medium text-destructive",children:t("filesView.error.jsonViewerUnavailable")}),r.jsx("div",{className:"text-sm text-muted-foreground",children:t("filesView.error.switchToTextMode")})]}),children:r.jsx("div",{className:"h-full overflow-auto",children:r.jsx(kl,{jsonString:$,maxHeight:"100%",initiallyExpandedDepth:2})})}):c&&Ge&&$e()==="preview"?r.jsxs("div",{className:"relative h-full min-h-0",children:[r.jsxs("div",{className:"oc-file-preview h-full overflow-auto p-3 outline-none",tabIndex:-1,onMouseDown:Bs,ref:To,children:[r.jsx(_i,{containerRef:Pn,filePath:c.path,fileContent:$}),$.length>500*1024&&r.jsx("div",{className:"mb-3 rounded-md border border-status-warning/20 bg-status-warning/10 px-3 py-2 text-sm text-status-warning",children:t("filesView.warning.largeFilePreviewLimited",{sizeKb:Math.round($.length/1024)})}),r.jsx(ar,{fallback:r.jsxs("div",{className:"rounded-md border border-destructive/20 bg-destructive/10 px-3 py-2",children:[r.jsx("div",{className:"mb-1 font-medium text-destructive",children:t("filesView.error.previewUnavailable")}),r.jsx("div",{className:"text-sm text-muted-foreground",children:t("filesView.error.switchToEditMode")})]}),children:r.jsx(Xr,{content:$,className:"typography-markdown-body",stripFrontmatter:!0,enableFileReferences:!1})})]}),!ne&&r.jsx(Ki,{containerRef:Os,open:yn,onOpenChange:Is,focusNonce:jn})]}):c&&Zt&&xe==="preview"?go?r.jsx("div",{className:"flex h-full items-center justify-center text-muted-foreground typography-ui-label",children:t("common.loading")}):r.jsx("div",{className:"h-full overflow-hidden",children:r.jsx("iframe",{src:!w.isVSCode&&ui===tr?(()=>{const s=c.path.split("/").map(o=>encodeURIComponent(o)).join("/");return Pi().authenticatedAsset(`/api/fs/serve${s.startsWith("/")?s:`/${s}`}`)})():void 0,srcDoc:w.isVSCode?(()=>{const s=c.path.substring(0,c.path.lastIndexOf("/")+1);return s?$.replace(/<head([^>]*)>/i,`<head$1><base href="${s}">`):$})():void 0,className:"w-full h-full border-none",sandbox:"allow-scripts allow-same-origin allow-forms",title:t("filesView.editor.htmlPreviewTitle")},po)}):c&&Zs&&_==="view"?Fi(c,se,mi,yo):r.jsxs("div",{className:W("relative h-full",Jt&&"overflow-hidden"),ref:As,children:[r.jsx("div",{className:W("h-full",Jt&&"invisible"),children:r.jsx(ea,{positionKey:vt,value:se,onChange:Ce,readOnly:!Qe,vimMode:Vn==="vim",extensions:ai,className:"h-full",blockWidgets:bo,onViewReady:s=>{Ye.current=s,Cr(o=>o+1),window.requestAnimationFrame(()=>{ts(s)})},onViewDestroy:()=>{Ye.current&&(Ye.current=null),Cr(s=>s+1)},enableSearch:!0,searchOpen:De,onSearchOpenChange:ze,highlightLines:J?{start:Math.min(J.start,J.end),end:Math.max(J.start,J.end)}:void 0,lineNumbersConfig:{domEventHandlers:{mousedown:(s,o,u)=>{if(!(u instanceof MouseEvent)||u.button!==0)return!1;u.preventDefault();const h=s.state.doc.lineAt(o.from).number;if(J&&!u.shiftKey&&Math.min(J.start,J.end)===h&&Math.max(J.start,J.end)===h)return Ze(null),xs(),Kt.current=!1,yt.current=null,Ht(!1),!0;if(g&&J&&!u.shiftKey){const j=Math.min(J.start,J.end,h),S=Math.max(J.start,J.end,h);return Ze({start:j,end:S}),Kt.current=!1,yt.current=null,Ht(!1),!0}if(Kt.current=!0,yt.current=h,Ht(!0),J&&u.shiftKey){const j=Math.min(J.start,h),S=Math.max(J.end,h);Ze({start:j,end:S})}else Ze({start:h,end:h});return!0},mouseover:(s,o,u)=>{if(!(u instanceof MouseEvent)||u.buttons!==1||!Kt.current||yt.current===null)return!1;const h=s.state.doc.lineAt(o.from).number,j=Math.min(yt.current,h),S=Math.max(yt.current,h);return Ze({start:j,end:S}),Ht(!0),!1},mouseup:()=>(Kt.current=!1,yt.current=null,Ht(!1),!1)}}},vt)}),Jt&&r.jsx("div",{className:"pointer-events-none absolute inset-0 flex items-center justify-center bg-background",children:r.jsxs("div",{className:"flex items-center gap-2 typography-ui text-muted-foreground",children:[r.jsx(E,{name:"loader-4",className:"size-4 animate-spin"}),t("filesView.state.openingFileAtChange")]})})]})):r.jsx("div",{className:"p-3 typography-ui text-muted-foreground",children:t("filesView.editor.pickFileFromTree")})})})]}),Vo=!!(l&&mn[l]),ki=l?Ps[l]:null,Ri=T?r.jsxs("section",{className:W("flex min-h-0 flex-col overflow-hidden",g?"h-full w-full bg-background":"h-full rounded-xl border border-border/60 bg-background/70"),children:[r.jsx("div",{className:W("flex flex-col gap-2 py-2",g?"px-3":"px-2"),children:r.jsxs("div",{className:"flex items-center gap-2",children:[r.jsxs("div",{className:"relative flex-1 min-w-0",children:[r.jsx(E,{name:"search",className:"pointer-events-none absolute left-2 top-2 size-4 text-muted-foreground"}),r.jsx(Fs,{ref:G,value:te,onChange:s=>ee(s.target.value),placeholder:t("filesView.tree.search.placeholder"),className:"h-8 pl-8 pr-8 typography-meta"}),te.trim().length>0&&r.jsx("button",{type:"button","aria-label":t("filesView.tree.search.clearAria"),className:"absolute right-2 top-2 inline-flex size-4 items-center justify-center text-muted-foreground hover:text-foreground",onClick:()=>{ee(""),G.current?.focus()},children:r.jsx(E,{name:"close",className:"size-4"})})]}),r.jsxs(Mt,{children:[r.jsx(Dt,{asChild:!0,children:r.jsx("span",{className:"inline-flex flex-shrink-0",children:r.jsx(I,{variant:"ghost",size:"sm",onClick:()=>Er("createFile",{path:p,type:"directory"}),className:"size-8 p-0 flex-shrink-0",title:t("filesView.tree.actions.newFileTitle"),"aria-label":t("filesView.tree.actions.newFileTitle"),children:r.jsx(E,{name:"file-add",className:"size-4"})})})}),r.jsx(zt,{side:"bottom",sideOffset:6,children:t("filesView.tree.actions.newFileTitle")})]}),r.jsxs(Mt,{children:[r.jsx(Dt,{asChild:!0,children:r.jsx("span",{className:"inline-flex flex-shrink-0",children:r.jsx(I,{variant:"ghost",size:"sm",onClick:()=>Er("createFolder",{path:p,type:"directory"}),className:"size-8 p-0 flex-shrink-0",title:t("filesView.tree.actions.newFolderTitle"),"aria-label":t("filesView.tree.actions.newFolderTitle"),children:r.jsx(E,{name:"folder-add",className:"size-4"})})})}),r.jsx(zt,{side:"bottom",sideOffset:6,children:t("filesView.tree.actions.newFolderTitle")})]}),_n&&r.jsxs(Mt,{children:[r.jsx(Dt,{asChild:!0,children:r.jsx("span",{className:"inline-flex flex-shrink-0",children:r.jsx(I,{variant:"ghost",size:"sm",onClick:()=>Wn(l),disabled:!l||Hs,className:"size-8 p-0 flex-shrink-0",title:t("sidebarFilesTree.actions.uploadFilesTitle"),"aria-label":t("sidebarFilesTree.actions.uploadFilesTitle"),children:r.jsx(E,{name:Hs?"loader-4":"upload-2",className:W("size-4",Hs&&"animate-spin")})})})}),r.jsx(zt,{side:"bottom",sideOffset:6,children:t("sidebarFilesTree.actions.uploadFilesTitle")})]}),r.jsxs(Mt,{children:[r.jsx(Dt,{asChild:!0,children:r.jsx("span",{className:"inline-flex flex-shrink-0",children:r.jsx(I,{variant:"ghost",size:"sm",onClick:()=>{Ks()},className:"size-8 p-0 flex-shrink-0",title:t("filesView.tree.actions.refreshTitle"),"aria-label":t("filesView.tree.actions.refreshTitle"),children:r.jsx(E,{name:"refresh",className:"size-4"})})})}),r.jsx(zt,{side:"bottom",sideOffset:6,children:t("filesView.tree.actions.refreshTitle")})]})]})}),r.jsx(Gr,{outerClassName:"flex-1 min-h-0",className:W("py-2",g?"px-3":"px-2"),children:r.jsx("ul",{className:"flex flex-col",children:va?r.jsxs("li",{className:"flex items-center gap-1.5 px-2 py-1 typography-meta text-muted-foreground",children:[r.jsx(E,{name:"loader-4",className:"size-4 animate-spin"}),t("filesView.tree.search.searching")]}):hn.length>0?hn.map(s=>{const o=c?.path===s.path;return r.jsx("li",{children:r.jsxs("button",{type:"button",onClick:()=>{Me(s)},className:W("flex w-full items-center gap-1.5 rounded-md px-2 py-1 text-left text-foreground transition-colors",o?"bg-interactive-selection/70":"hover:bg-interactive-hover/40"),children:[pa(s.path,s.extension),r.jsx("span",{className:"min-w-0 flex-1 truncate typography-meta",style:{direction:"rtl",textAlign:"left"},title:s.path,children:s.relativePath??s.path})]})},s.path)}):ki?r.jsxs("li",{className:"flex flex-col gap-2 px-2 py-1 typography-meta text-muted-foreground",children:[r.jsx("span",{className:"text-[var(--status-error)]",children:ki}),r.jsxs(I,{variant:"outline",size:"xs",className:"w-fit gap-1.5",onClick:()=>{Ks()},children:[r.jsx(E,{name:"refresh",className:"size-3.5"}),t("filesView.tree.actions.refreshTitle")]})]}):Vo?Zn(l,0):r.jsx("li",{className:"px-2 py-1 typography-meta text-muted-foreground",children:t("filesView.state.loading")})})})]}):null,Po=n==="full"&&ne&&c&&r.jsx("div",{className:"absolute inset-0 z-50 flex flex-col bg-background",children:r.jsxs("div",{className:"flex-1 min-h-0 min-w-0 relative",children:[r.jsx("div",{className:"absolute right-4 top-4 z-30",children:Ci({exitFullscreenOnly:!0})}),r.jsx(Gr,{ref:So,outerClassName:"h-full min-w-0",className:W("h-full min-w-0",dt&&"[overflow-anchor:none]"),children:Fe||Br?B?r.jsx("div",{className:"p-4"}):r.jsxs("div",{className:"p-4 flex items-center gap-2 typography-ui text-muted-foreground",children:[r.jsx(E,{name:"loader-4",className:"size-4 animate-spin"}),"Loading…"]}):Xe?r.jsx("div",{className:"p-4 typography-ui text-[color:var(--status-error)]",children:Xe}):nr||(Ge&&$e()==="preview"?r.jsxs("div",{className:"relative h-full min-h-0",children:[r.jsxs("div",{className:"oc-file-preview h-full overflow-auto p-4 outline-none",tabIndex:-1,onMouseDown:Bs,ref:Eo,children:[c?r.jsx(_i,{containerRef:$s,filePath:c.path,fileContent:$}):null,$.length>500*1024&&r.jsx("div",{className:"mb-3 rounded-md border border-status-warning/20 bg-status-warning/10 px-3 py-2 text-sm text-status-warning",children:t("filesView.warning.largeFilePreviewLimited",{sizeKb:Math.round($.length/1024)})}),r.jsx(ar,{fallback:r.jsxs("div",{className:"rounded-md border border-destructive/20 bg-destructive/10 px-3 py-2",children:[r.jsx("div",{className:"mb-1 font-medium text-destructive",children:t("filesView.error.previewUnavailable")}),r.jsx("div",{className:"text-sm text-muted-foreground",children:t("filesView.error.switchToEditMode")})]}),children:r.jsx(Xr,{content:$,className:"typography-markdown-body",stripFrontmatter:!0,enableFileReferences:!1})})]}),r.jsx(Ki,{containerRef:$s,open:yn,onOpenChange:Is,focusNonce:jn,className:"right-4 top-16"})]}):Zs&&_==="view"?Fi(c,se,hi,jo):r.jsxs("div",{className:W("relative h-full",Jt&&"overflow-hidden"),children:[r.jsx("div",{className:W("h-full",Jt&&"invisible"),children:r.jsx(ea,{positionKey:`${vt}:fullscreen`,value:se,onChange:Ce,readOnly:!Qe,vimMode:Vn==="vim",extensions:ai,className:"h-full",onViewReady:s=>{Ye.current=s,window.requestAnimationFrame(()=>{ts(s)})},onViewDestroy:()=>{Ye.current&&(Ye.current=null)}},`${vt}:fullscreen`)}),Jt&&r.jsx("div",{className:"pointer-events-none absolute inset-0 flex items-center justify-center bg-background",children:r.jsxs("div",{className:"flex items-center gap-2 typography-ui text-muted-foreground",children:[r.jsx(E,{name:"loader-4",className:"size-4 animate-spin"}),t("filesView.state.openingFileAtChange")]})})]}))})]})});return r.jsxs("div",{className:"flex h-full min-h-0 overflow-hidden bg-background relative",children:[r.jsx(Jc,{activeDialog:Tt,dialogData:Et,dialogInputValue:bt,onDialogInputChange:vn,isDialogSubmitting:Ea,onDialogSubmit:Ga,onClose:wo,inputRef:Na}),qa,Po,g?X?Wr:Ri:n==="editor-only"?r.jsx("div",{className:"flex flex-1 min-h-0 min-w-0 overflow-hidden",children:r.jsx("div",{className:"flex-1 min-h-0 min-w-0 overflow-hidden bg-background",children:Wr})}):r.jsxs("div",{className:"flex flex-1 min-h-0 min-w-0 gap-3 px-3 pb-3 pt-2",children:[b>=700&&r.jsx("div",{className:"w-72 flex-shrink-0 min-h-0 overflow-hidden",children:Ri}),r.jsx("div",{className:"flex-1 min-h-0 min-w-0 overflow-hidden rounded-xl border border-border/60 bg-background",children:Wr})]})]})};function Zc(n){return n+1}export{yf as FilesView};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{R as i,j as u}from"./vendor-react-BUCujlKS.js";import{f as Q,b_ as V,hR as _,h as S,B as q,g as ee}from"./useAppFontEffects-ZM9ij19-.js";import{k as te}from"./PluginPane-BibJit86.js";import{bo as ne,a2 as re,a4 as se,a3 as ie,a8 as oe}from"./index-CvLgnuNI.js";import"./vendor-scheduler-7OC5HNn7.js";import"./vendor-zod-Gea9uBlY.js";import"./vendor-simplewebauthn-browser-VDA66rT_.js";import"./vendor-vite-runtime-DD1OZmLC.js";import"./vendor-zustand-BAGL70zf.js";import"./vendor-base-ui-CsXYnR5c.js";import"./vendor-floating-ui-utils-D6FqdtJt.js";import"./vendor-floating-ui-react-dom-DxYCWdHj.js";import"./vendor-floating-ui-dom-BTvzWks8.js";import"./vendor-floating-ui-core-PuGzNPnN.js";import"./vendor-use-sync-external-store-D6wYuSt-.js";import"./vendor-class-variance-authority-5VPnzWs2.js";import"./vendor-clsx-B-dksMZM.js";import"./vendor-dnd-kit-core-BZknOX2w.js";import"./vendor-dnd-kit-utilities-B_MdXhJC.js";import"./vendor-dnd-kit-accessibility-BHxJPORy.js";import"./vendor-dnd-kit-sortable-CsEagZ81.js";import"./vendor-framer-motion-Bq3iTZ6r.js";import"./vendor-motion-dom-DcCgeG69.js";import"./vendor-motion-utils-BGh8QBgx.js";import"./vendor-tanstack-react-virtual-ClYN8CzB.js";import"./vendor-tanstack-virtual-core-BewVQryB.js";import"./contextPanelEmbeddedChat-CirXEPJq.js";import"./vendor-sonner-DFyL3AvE.js";import"./vendor-cmdk-DgLInKvT.js";import"./vendor-radix-ui-react-dialog-B94Bt2qq.js";import"./vendor-radix-ui-primitive-Dc_FVRD7.js";import"./vendor-radix-ui-react-compose-refs-DcAh5WdT.js";import"./vendor-radix-ui-react-context-Czxm7Z62.js";import"./vendor-radix-ui-react-id-f5BLKEVw.js";import"./vendor-radix-ui-react-use-layout-effect-D_3IhJdJ.js";import"./vendor-radix-ui-react-use-controllable-state-BFT5YmkA.js";import"./vendor-radix-ui-react-dismissable-layer-D7kXcwgJ.js";import"./vendor-radix-ui-react-primitive-DhVoX9SD.js";import"./vendor-radix-ui-react-slot-BQgQOasS.js";import"./vendor-radix-ui-react-use-callback-ref-BZPnuXAC.js";import"./vendor-radix-ui-react-use-escape-keydown-oph88g-F.js";import"./vendor-radix-ui-react-focus-scope-CiaxW4dD.js";import"./vendor-radix-ui-react-portal-BMJYHWck.js";import"./vendor-radix-ui-react-presence-CNxf-uq4.js";import"./vendor-radix-ui-react-focus-guards-B6qJXYua.js";import"./vendor-react-remove-scroll-DO7dCTnK.js";import"./vendor-tslib-De9GV7Vy.js";import"./vendor-react-remove-scroll-bar-BcFYyj3E.js";import"./vendor-react-style-singleton-q6EMHnwf.js";import"./vendor-get-nonce-C-Z93AgS.js";import"./vendor-use-sidecar-zDC0RhA3.js";import"./vendor-use-callback-ref-D3RC8gqK.js";import"./vendor-aria-hidden-DvXkyWUv.js";import"./vendor-codemirror-language-BgPj_McA.js";import"./vendor-lezer-common-B3-cUCR_.js";import"./vendor-codemirror-state-C9awkmn-.js";import"./vendor-marijn-find-cluster-break-DXwl3gUT.js";import"./vendor-codemirror-view-CiLROUVV.js";import"./vendor-style-mod-NZ5MEPvj.js";import"./vendor-w3c-keyname-Vcq4gwWv.js";import"./vendor-crelt-C8TCjufn.js";import"./vendor-lezer-highlight-CDMHUZ74.js";import"./vendor-codemirror-lang-javascript-Cc2ZYbgX.js";import"./vendor-lezer-javascript-D7Tj24ot.js";import"./vendor-lezer-lr-bhwg1HMg.js";import"./vendor-codemirror-autocomplete-DzPz9Wgq.js";import"./vendor-codemirror-lang-json-CMBS2tG9.js";import"./vendor-lezer-json-Iaex0UN-.js";import"./vendor-codemirror-lang-css-O0cZX78y.js";import"./vendor-lezer-css-C5xB6jxd.js";import"./vendor-codemirror-lang-html-CfgK872x.js";import"./vendor-lezer-html-C0I1p52t.js";import"./vendor-codemirror-lang-markdown-BPGOH9ye.js";import"./vendor-lezer-markdown-C6g-d6P3.js";import"./vendor-codemirror-language-data-U-lXzXNK.js";import"./vendor-codemirror-lang-python-HahnQaAS.js";import"./vendor-lezer-python-CvuFxeZl.js";import"./vendor-codemirror-commands-B7H_j0iU.js";import"./vendor-legendapp-list-BuBPBC3R.js";import"./vendor-tailwind-merge-CPcsbTWB.js";import"./vendor-fuse.js-Dw8P0qyA.js";import"./vendor-opencode-client-_BAHQo4R.js";const ce=1,ae=8e3,ue=6e4,le={refreshAuth:re,clearUrlAuthToken:ne,openSocket:s=>se(ie().websocket(`/api/guests/${s}/surface/ws`)),isPaused:()=>document.visibilityState==="hidden"||!navigator.onLine,onWake:s=>(window.addEventListener("online",s),document.addEventListener("visibilitychange",s),()=>{window.removeEventListener("online",s),document.removeEventListener("visibilitychange",s)})};class de{constructor(r,n,o=le){this.guestId=r,this.handlers=n,this.dependencies=o}socket=null;pendingFrame=null;reconnectTimer=null;wakeCleanup=null;failures=0;generation=0;disposed=!1;ended=!1;start(){this.handlers.onConnection({status:"connecting"}),this.connect()}dispose(){this.disposed=!0,this.generation+=1,this.cancelReconnect();const r=this.socket;if(this.socket=null,r)try{r.close()}catch{}}ack(r){this.send({type:"ack",seq:r})}sendInput(r){return r.length===0?!1:this.send({type:"input",events:r})}release(){this.send({type:"release"})}resize(r,n){this.send({type:"resize",width:r,height:n})}requestClipboard(r){this.send({type:"clipboard-read",id:r})}send(r){const n=this.socket;if(!n||n.readyState!==ce)return!1;try{return n.send(JSON.stringify(r)),!0}catch{return!1}}async connect(){if(this.disposed||this.ended)return;const r=this.generation;try{await this.dependencies.refreshAuth()}catch{this.scheduleReconnect();return}if(r!==this.generation||this.disposed)return;let n;try{n=this.dependencies.openSocket(this.guestId)}catch{this.scheduleReconnect();return}n.binaryType="arraybuffer",this.socket=n;let o=!1;n.onopen=()=>{this.socket===n&&(o=!0,this.failures=0,this.pendingFrame=null,this.handlers.onConnection({status:"open"}))},n.onmessage=p=>{this.socket===n&&this.handleMessage(p.data)},n.onerror=()=>{},n.onclose=()=>{this.socket===n&&(this.socket=null,this.pendingFrame=null,!(this.disposed||this.ended)&&(o||this.dependencies.clearUrlAuthToken(),this.scheduleReconnect()))}}handleMessage(r){if(r instanceof ArrayBuffer){const o=this.pendingFrame;if(this.pendingFrame=null,!o)return;this.handlers.onFrame({...o,bytes:r});return}let n;try{const o=te.safeParse(JSON.parse(r));if(!o.success)return;n=o.data}catch{return}switch(n.type){case"hello":return;case"frame":this.pendingFrame={seq:n.seq,width:n.width,height:n.height,mime:n.mime,agentActive:n.agentActive},n.title&&(this.pendingFrame.title=n.title);return;case"control":this.handlers.onControl({controller:n.controller,mine:n.mine});return;case"resized":this.handlers.onResized?.({width:n.width,height:n.height});return;case"clipboard":this.handlers.onClipboard?.(n.id,n.text);return;case"error":this.handlers.onError?.(n.code,n.message);return;case"ended":this.ended=!0,this.cancelReconnect(),this.handlers.onConnection({status:"ended",reason:n.reason});return}}retry(){this.disposed||(this.ended=!1,this.failures=0,this.handlers.onConnection({status:"connecting"}),this.connect())}scheduleReconnect(){if(this.reconnectTimer||this.disposed||this.ended)return;this.failures+=1;const r=this.dependencies.isPaused()?ue:Math.min(500*2**Math.min(this.failures-1,10),ae);this.handlers.onConnection({status:"reconnecting",attempt:this.failures});const n=()=>{this.dependencies.isPaused()||(this.cancelReconnect(),this.connect())};this.wakeCleanup=this.dependencies.onWake(n),this.reconnectTimer=setTimeout(n,r)}cancelReconnect(){this.reconnectTimer&&(clearTimeout(this.reconnectTimer),this.reconnectTimer=null),this.wakeCleanup?.(),this.wakeCleanup=null}}const he=250,F=s=>({alt:s.altKey,ctrl:s.ctrlKey,meta:s.metaKey,shift:s.shiftKey}),pe=s=>(s.metaKey||s.ctrlKey)&&!s.altKey&&s.key.toLowerCase()==="c",me=s=>(s.metaKey||s.ctrlKey)&&!s.altKey&&s.key.toLowerCase()==="v",Wt=({mode:s})=>{const{t:r}=Q(),n=oe(s),o=V(e=>e.guests.find(t=>t.id===n)??null),p=o!==null&&_(o)&&o.service?.surface===!0,b=i.useRef(null),w=i.useRef(null),l=i.useRef(null),k=i.useRef(null),y=i.useRef([]),m=i.useRef(null),T=i.useRef(0),C=i.useRef(!1),R=i.useRef({controller:"none",mine:!1}),[d,L]=i.useState({status:"connecting"}),[h,U]=i.useState({controller:"none",mine:!1}),A=i.useCallback(e=>{R.current=e,U(e)},[]),[K,W]=i.useState(""),[$,X]=i.useState(!1),[f,M]=i.useState(!1),[j,E]=i.useState(!1),I=i.useCallback(async e=>{const t=w.current,c=l.current;if(!(!t||!c))try{const a=await createImageBitmap(new Blob([e.bytes],{type:e.mime}));(t.width!==e.width||t.height!==e.height)&&(t.width=e.width,t.height=e.height),t.getContext("2d")?.drawImage(a,0,0,e.width,e.height),a.close(),k.current={width:e.width,height:e.height},M(!0),W(e.title??""),X(e.agentActive)}catch{}finally{c.ack(e.seq)}},[]);i.useEffect(()=>{if(!p)return;const e=new de(n,{onFrame:t=>{I(t)},onControl:A,onConnection:L,onClipboard:(t,c)=>{ee(c)}});return l.current=e,e.start(),()=>{e.dispose(),l.current===e&&(l.current=null),m.current!==null&&cancelAnimationFrame(m.current),m.current=null,y.current=[],k.current=null,M(!1)}},[p,I,n,A]),i.useEffect(()=>{const e=b.current;if(!e||!p)return;let t=null;const c=new ResizeObserver(a=>{const g=a[0];if(!g)return;const{width:v,height:Z}=g.contentRect;t&&clearTimeout(t),t=setTimeout(()=>{t=null;const D=window.devicePixelRatio||1,z=Math.round(v*D),O=Math.round(Z*D);z>0&&O>0&&l.current?.resize(z,O)},he)});return c.observe(e),()=>{c.disconnect(),t&&clearTimeout(t)}},[p]);const x=i.useCallback(e=>{y.current.push(e),m.current===null&&(m.current=requestAnimationFrame(()=>{m.current=null;const t=y.current;y.current=[],l.current?.sendInput(t),C.current&&(C.current=!1,T.current+=1,l.current?.requestClipboard(`copy-${T.current}`))}))},[]),N=i.useCallback(e=>{const t=w.current,c=k.current;if(!t||!c)return null;const a=t.getBoundingClientRect();if(a.width===0||a.height===0)return null;const g=(e.clientX-a.left)/a.width*c.width,v=(e.clientY-a.top)/a.height*c.height;return{x:Math.round(g),y:Math.round(v)}},[]),P=e=>t=>{if(!f||e==="move"&&t.buttons===0&&!(R.current.controller==="user"&&R.current.mine))return;const c=N(t);c&&(e==="down"?(b.current?.focus(),t.currentTarget.setPointerCapture(t.pointerId)):e==="up"&&t.currentTarget.hasPointerCapture(t.pointerId)&&t.currentTarget.releasePointerCapture(t.pointerId),t.preventDefault(),x({type:"pointer",action:e,x:c.x,y:c.y,button:e==="move"?-1:t.button,buttons:t.buttons,modifiers:F(t)}))},G=e=>{if(!f)return;const t=N(e);t&&(e.preventDefault(),x({type:"wheel",x:t.x,y:t.y,deltaX:e.deltaX,deltaY:e.deltaY,modifiers:F(e)}))},B=e=>t=>{f&&(me(t)||(t.preventDefault(),t.stopPropagation(),e==="down"&&pe(t)&&(C.current=!0),x({type:"key",action:e,key:t.key,code:t.code,modifiers:F(t)})))},Y=e=>{if(!f)return;const t=e.clipboardData.getData("text/plain");e.preventDefault(),t&&x({type:"text",text:t})},H=()=>{l.current?.release()};if(!o)return null;if(!p)return u.jsx("div",{className:"flex h-full items-center justify-center px-6 text-sm text-muted-foreground",children:r("contextPanel.surface.unavailable")});const J=d.status==="connecting"?"contextPanel.surface.status.connecting":d.status==="reconnecting"?"contextPanel.surface.status.reconnecting":d.status==="ended"?`contextPanel.surface.ended.${d.reason}`:h.controller==="user"?h.mine?"contextPanel.surface.status.youControl":"contextPanel.surface.status.otherControls":h.controller==="agent"||$?"contextPanel.surface.status.agentWorking":j?"contextPanel.surface.status.readyFocused":"contextPanel.surface.status.ready";return u.jsxs("div",{className:"flex h-full flex-col bg-[var(--surface-background)]",children:[u.jsxs("div",{className:"flex h-8 shrink-0 items-center gap-2 border-b border-border px-3",children:[u.jsx("span",{className:"typography-meta min-w-0 flex-1 truncate text-foreground",title:K||o.name,children:K||o.name}),u.jsx("span",{className:S("typography-meta shrink-0 truncate",h.controller==="user"&&h.mine?"text-foreground":"text-muted-foreground"),"aria-live":"polite",children:r(J)}),h.controller==="user"&&h.mine?u.jsx(q,{size:"xs",variant:"outline",onClick:H,children:r("contextPanel.surface.handBack")}):null,d.status==="ended"?u.jsx(q,{size:"xs",variant:"outline",onClick:()=>l.current?.retry(),children:r("contextPanel.surface.retry")}):null]}),u.jsxs("div",{ref:b,tabIndex:0,role:"application","aria-label":r("contextPanel.surface.canvasAria",{name:o.name}),"data-terminal-owner":`surface:${n}`,className:S("relative flex min-h-0 flex-1 items-center justify-center overflow-hidden outline-none",j?"ring-1 ring-inset ring-[var(--interactive-selection-border)]":""),onFocus:()=>E(!0),onBlur:()=>E(!1),onKeyDown:B("down"),onKeyUp:B("up"),onPaste:Y,children:[u.jsx("canvas",{ref:w,className:S("max-h-full max-w-full",f?"block":"hidden",h.controller==="user"&&!h.mine?"cursor-not-allowed":"cursor-default"),onPointerDown:P("down"),onPointerMove:P("move"),onPointerUp:P("up"),onWheel:G,onContextMenu:e=>e.preventDefault()}),!f||d.status!=="open"?u.jsx("div",{className:"absolute inset-0 flex items-center justify-center px-6 text-center text-sm text-muted-foreground",children:r(d.status==="ended"?`contextPanel.surface.ended.${d.reason}`:d.status==="reconnecting"?"contextPanel.surface.status.reconnecting":"contextPanel.surface.status.connecting")}):null]})]})};export{Wt as GuestSurfacePane};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{f as B,R as h,j as P}from"./vendor-react-BUCujlKS.js";import{toast as H}from"./vendor-sonner-DFyL3AvE.js";import{gV as K,gT as J,ai as Z,f as Q,I as W}from"./useAppFontEffects-ZM9ij19-.js";import{h as G,a3 as V,O as ee,e as te,d$ as re,e0 as oe,a2 as ae}from"./index-CvLgnuNI.js";import{extractMarkdownImageCandidates as se,MAX_MARKDOWN_IMAGE_COUNT as ne}from"./markdownCore-DS9FdwrI.js";import"./vendor-scheduler-7OC5HNn7.js";import"./vendor-zod-Gea9uBlY.js";import"./vendor-simplewebauthn-browser-VDA66rT_.js";import"./vendor-vite-runtime-DD1OZmLC.js";import"./vendor-zustand-BAGL70zf.js";import"./vendor-base-ui-CsXYnR5c.js";import"./vendor-floating-ui-utils-D6FqdtJt.js";import"./vendor-floating-ui-react-dom-DxYCWdHj.js";import"./vendor-floating-ui-dom-BTvzWks8.js";import"./vendor-floating-ui-core-PuGzNPnN.js";import"./vendor-use-sync-external-store-D6wYuSt-.js";import"./vendor-class-variance-authority-5VPnzWs2.js";import"./vendor-clsx-B-dksMZM.js";import"./vendor-dnd-kit-core-BZknOX2w.js";import"./vendor-dnd-kit-utilities-B_MdXhJC.js";import"./vendor-dnd-kit-accessibility-BHxJPORy.js";import"./vendor-dnd-kit-sortable-CsEagZ81.js";import"./vendor-framer-motion-Bq3iTZ6r.js";import"./vendor-motion-dom-DcCgeG69.js";import"./vendor-motion-utils-BGh8QBgx.js";import"./vendor-tanstack-react-virtual-ClYN8CzB.js";import"./vendor-tanstack-virtual-core-BewVQryB.js";import"./contextPanelEmbeddedChat-CirXEPJq.js";import"./vendor-cmdk-DgLInKvT.js";import"./vendor-radix-ui-react-dialog-B94Bt2qq.js";import"./vendor-radix-ui-primitive-Dc_FVRD7.js";import"./vendor-radix-ui-react-compose-refs-DcAh5WdT.js";import"./vendor-radix-ui-react-context-Czxm7Z62.js";import"./vendor-radix-ui-react-id-f5BLKEVw.js";import"./vendor-radix-ui-react-use-layout-effect-D_3IhJdJ.js";import"./vendor-radix-ui-react-use-controllable-state-BFT5YmkA.js";import"./vendor-radix-ui-react-dismissable-layer-D7kXcwgJ.js";import"./vendor-radix-ui-react-primitive-DhVoX9SD.js";import"./vendor-radix-ui-react-slot-BQgQOasS.js";import"./vendor-radix-ui-react-use-callback-ref-BZPnuXAC.js";import"./vendor-radix-ui-react-use-escape-keydown-oph88g-F.js";import"./vendor-radix-ui-react-focus-scope-CiaxW4dD.js";import"./vendor-radix-ui-react-portal-BMJYHWck.js";import"./vendor-radix-ui-react-presence-CNxf-uq4.js";import"./vendor-radix-ui-react-focus-guards-B6qJXYua.js";import"./vendor-react-remove-scroll-DO7dCTnK.js";import"./vendor-tslib-De9GV7Vy.js";import"./vendor-react-remove-scroll-bar-BcFYyj3E.js";import"./vendor-react-style-singleton-q6EMHnwf.js";import"./vendor-get-nonce-C-Z93AgS.js";import"./vendor-use-sidecar-zDC0RhA3.js";import"./vendor-use-callback-ref-D3RC8gqK.js";import"./vendor-aria-hidden-DvXkyWUv.js";import"./vendor-codemirror-language-BgPj_McA.js";import"./vendor-lezer-common-B3-cUCR_.js";import"./vendor-codemirror-state-C9awkmn-.js";import"./vendor-marijn-find-cluster-break-DXwl3gUT.js";import"./vendor-codemirror-view-CiLROUVV.js";import"./vendor-style-mod-NZ5MEPvj.js";import"./vendor-w3c-keyname-Vcq4gwWv.js";import"./vendor-crelt-C8TCjufn.js";import"./vendor-lezer-highlight-CDMHUZ74.js";import"./vendor-codemirror-lang-javascript-Cc2ZYbgX.js";import"./vendor-lezer-javascript-D7Tj24ot.js";import"./vendor-lezer-lr-bhwg1HMg.js";import"./vendor-codemirror-autocomplete-DzPz9Wgq.js";import"./vendor-codemirror-lang-json-CMBS2tG9.js";import"./vendor-lezer-json-Iaex0UN-.js";import"./vendor-codemirror-lang-css-O0cZX78y.js";import"./vendor-lezer-css-C5xB6jxd.js";import"./vendor-codemirror-lang-html-CfgK872x.js";import"./vendor-lezer-html-C0I1p52t.js";import"./vendor-codemirror-lang-markdown-BPGOH9ye.js";import"./vendor-lezer-markdown-C6g-d6P3.js";import"./vendor-codemirror-language-data-U-lXzXNK.js";import"./vendor-codemirror-lang-python-HahnQaAS.js";import"./vendor-lezer-python-CvuFxeZl.js";import"./vendor-codemirror-commands-B7H_j0iU.js";import"./vendor-legendapp-list-BuBPBC3R.js";import"./vendor-tailwind-merge-CPcsbTWB.js";import"./vendor-fuse.js-Dw8P0qyA.js";import"./vendor-opencode-client-_BAHQo4R.js";import"./vendor-marked-CX41MkDF.js";import"./vendor-marked-linkify-it-CXI_LHIE.js";import"./vendor-linkify-it-DZCzzDkK.js";import"./vendor-uc.micro-BAd0H0z4.js";import"./vendor-remend-BWYYytN3.js";import"./vendor-katex-CHD9BdDO.js";import"./vendor-dompurify-r8glNMJW.js";const $=10*1024*1024,ie=1024,le=3e4,ce=new Set(["image/png","image/jpeg","image/gif","image/webp"]),z=new WeakMap,L=r=>{if(r.aborted)throw new DOMException("Image load aborted","AbortError")},me=r=>{let e=r;if(/^file:\/\//i.test(e))try{const o=new URL(e);if(o.protocol!=="file:")return"";e=o.host&&o.host!=="localhost"?`//${o.host}${o.pathname}`:o.pathname,/^\/[A-Za-z]:\//.test(e)&&(e=e.slice(1))}catch{return""}const t=e.split(/[?#]/,1)[0]??"";try{return decodeURIComponent(t)}catch{return t}},ue=r=>new Promise((e,t)=>{const o=new FileReader;o.onload=()=>{typeof o.result=="string"?e(o.result):t(new Error("Unable to encode image"))},o.onerror=()=>t(o.error??new Error("Unable to encode image")),o.readAsDataURL(r)}),pe=async(r,e)=>{const t=new Uint8Array(await r.slice(0,12).arrayBuffer()),o=(n,u)=>String.fromCharCode(...t.slice(n,u));switch(e){case"image/png":return t[0]===137&&o(1,4)==="PNG"&&t[4]===13&&t[5]===10&&t[6]===26&&t[7]===10;case"image/jpeg":return t[0]===255&&t[1]===216&&t[2]===255;case"image/gif":{const n=o(0,6);return n==="GIF87a"||n==="GIF89a"}case"image/webp":return o(0,4)==="RIFF"&&o(8,12)==="WEBP";default:return!1}},Y=async(r,e)=>{if(!ce.has(e))throw new Error("Unsupported image type");if(r.size>$)throw new Error("Image is too large");if(!await pe(r,e))throw new Error("Unsupported image data")},fe=async r=>{const e=/^data:(image\/(?:png|jpeg|gif|webp));base64,([\s\S]*)$/i.exec(r);if(!e?.[1]||e[2]===void 0)throw new Error("Invalid image data URL");if(e[2].length>Math.ceil($*4/3)+4)throw new Error("Image is too large");let t;try{t=atob(e[2])}catch{throw new Error("Invalid image data URL")}const o=Uint8Array.from(t,n=>n.charCodeAt(0));await Y(new Blob([o]),e[1].toLowerCase())},q=r=>!/^(?:https?:)?\/\//i.test(r)&&!/^data:image\/(?:png|jpeg|gif|webp);base64,/i.test(r),de=async({sources:r,directory:e,sessionId:t,messageId:o,signal:n})=>{const u=V();let s=z.get(u);s||(s=new Map,z.set(u,s));const c=`${t}\0${o}\0${e}\0${r.join("\0")}`,i=s.get(c);if(i&&i.expiresAt>Date.now())return s.delete(c),s.set(c,i),i.result;i&&s.delete(c);const p=await G(`/api/openchamber/sessions/${encodeURIComponent(t)}/markdown-image-grants`,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({directory:e,messageId:o,sources:r}),signal:n});if(!p.ok)throw new Error(`Unable to prepare images (${p.status})`);const m=await p.json(),l=new Map;for(const a of m.results??[])a.source&&(a.status==="ready"&&a.path?l.set(a.source,{status:"ready",path:a.path,outsideFileGrant:a.outsideFileGrant,expiresAt:a.expiresAt}):a.status==="missing"?l.set(a.source,{status:"missing"}):l.set(a.source,{status:"error"}));for(const a of r)l.has(a)||l.set(a,{status:"error"});for(;s.size>=ie;)s.delete(s.keys().next().value);const w=[...l.values()].every(a=>a.status==="ready"),y=Math.min(...[...l.values()].filter(a=>a.status==="ready").map(a=>a.expiresAt??Number.POSITIVE_INFINITY));return s.set(c,{result:l,expiresAt:w?y:Date.now()+le}),l},ge=async(r,e)=>{if(L(e),/^(?:https?:)?\/\//i.test(r))return r;if(/^data:image\/(?:png|jpeg|gif|webp);base64,/i.test(r))return await fe(r),L(e),r;throw new Error("Local image has not been prepared")},he=async(r,e,t)=>{L(t);const o=me(r),n=K(e,o);if(!e||!o||!J(n,e))throw new Error("Image path is outside the active workspace");const u=await G("/api/fs/stat",{query:{path:n,directory:e,optional:"true"},signal:t});if(!u.ok)throw new Error(`Unable to inspect image (${u.status})`);const s=await u.json();if(!s.isFile)throw new Error("Image path is not a file");if(typeof s.size=="number"&&s.size>$)throw new Error("Image is too large");const c=await G("/api/fs/raw",{query:{path:n,directory:e},signal:t});if(!c.ok)throw new Error(`Unable to load image (${c.status})`);const i=(c.headers.get("content-type")??"").split(";",1)[0]?.toLowerCase()??"",p=Number(c.headers.get("content-length"));if(Number.isFinite(p)&&p>$)throw new Error("Image is too large");const m=await c.blob();return await Y(m,i),L(t),ue(m)},we=(r,e)=>V().authenticatedAsset("/api/fs/raw",{path:r.path,directory:e,allowOutsideWorkspace:r.outsideFileGrant?"true":void 0,outsideFileGrant:r.outsideFileGrant}),be=r=>{const e=B.c(7),[t,o]=h.useState(!1),[n,u]=h.useState(0);let s;e[0]===Symbol.for("react.memo_cache_sentinel")?(s=te(),e[0]=s):s=e[0];const c=s;let i,p;e[1]!==r?(i=()=>{if(!r){o(!1);return}let w=!1,y;const a=re(c),g=oe(()=>{w||u(Ie)}),I=()=>{ae(c).then(()=>{w||o(!0)}).catch(()=>{w||(y=setTimeout(I,1e3))})};return I(),()=>{w=!0,y&&clearTimeout(y),a(),g()}},p=[c,r],e[1]=r,e[2]=i,e[3]=p):(i=e[2],p=e[3]),h.useEffect(i,p);const m=!r||t;let l;return e[4]!==n||e[5]!==m?(l={ready:m,nonce:n},e[4]=n,e[5]=m,e[6]=l):l=e[6],l},ye=r=>{const e=B.c(46),{candidate:t,preparation:o,directory:n,assetAuthReady:u,assetAuthNonce:s,useWorkspaceFsBridge:c,onShowPopup:i}=r,{t:p}=Q(),m=h.useRef(null),[l,w]=h.useState(!1);let y;e[0]===Symbol.for("react.memo_cache_sentinel")?(y={url:"",status:"loading"},e[0]=y):y=e[0];const[a,g]=h.useState(y);let I;e[1]!==t.source?(I=q(t.source),e[1]=t.source,e[2]=I):I=e[2];const b=I;let x,f;e[3]!==l?(x=()=>{const N=m.current;if(!N||l)return;if(typeof IntersectionObserver>"u"){w(!0);return}const E=new IntersectionObserver(C=>{C.some(Ee)&&(w(!0),E.disconnect())},{rootMargin:"200px"});return E.observe(N),()=>E.disconnect()},f=[l],e[3]=l,e[4]=x,e[5]=f):(x=e[4],f=e[5]),h.useEffect(x,f);let v;e[6]!==u||e[7]!==t.source||e[8]!==n||e[9]!==b||e[10]!==o||e[11]!==l||e[12]!==c?(v=()=>{if(!l||b&&!c&&!o)return;if(b&&c){const E=new AbortController;return g({url:"",status:"loading"}),he(t.source,n,E.signal).then(C=>{E.signal.aborted||g({url:C,status:"loading"})}).catch(()=>{E.signal.aborted||g({url:"",status:"error"})}),()=>E.abort()}if(b){if(o?.status!=="ready"){g({url:"",status:"error"});return}if(!u)return;g({url:we(o,n),status:"loading"});return}const N=new AbortController;return g({url:"",status:"loading"}),ge(t.source,N.signal).then(E=>{N.signal.aborted||g({url:E,status:"loading"})}).catch(()=>{N.signal.aborted||g({url:"",status:"error"})}),()=>N.abort()},e[6]=u,e[7]=t.source,e[8]=n,e[9]=b,e[10]=o,e[11]=l,e[12]=c,e[13]=v):v=e[13];let k;e[14]!==s||e[15]!==u||e[16]!==t.source||e[17]!==n||e[18]!==b||e[19]!==o||e[20]!==l||e[21]!==c?(k=[s,u,t.source,n,b,o,l,c],e[14]=s,e[15]=u,e[16]=t.source,e[17]=n,e[18]=b,e[19]=o,e[20]=l,e[21]=c,e[22]=k):k=e[22],h.useEffect(v,k);let R;e[23]!==t.filename||e[24]!==a.status||e[25]!==a.url||e[26]!==i||e[27]!==p?(R=()=>{if(a.status==="error"){H.error(p("filesView.error.previewUnavailable"));return}a.status!=="ready"||!i||i({open:!0,title:t.filename,content:"",metadata:{tool:"markdown-image-preview",filename:t.filename},image:{url:a.url,filename:t.filename}})},e[23]=t.filename,e[24]=a.status,e[25]=a.url,e[26]=i,e[27]=p,e[28]=R):R=e[28];const U=R,j=a.status==="loading";let A;e[29]!==t.filename||e[30]!==a.status||e[31]!==a.url?(A=P.jsx("span",{className:"flex h-[72px] w-[100px] items-center justify-center overflow-hidden rounded-lg border border-border/40 bg-muted/10",children:a.url&&a.status!=="error"?P.jsx("img",{src:a.url,alt:t.filename,className:"h-full w-full object-contain",loading:"lazy",decoding:"async",referrerPolicy:"no-referrer",onLoad:()=>g(Ae),onError:()=>g({url:"",status:"error"}),"data-openchamber-markdown-image":"true","data-openchamber-markdown-image-thumbnail":"true","data-openchamber-markdown-image-state":a.status}):P.jsx(W,{name:"file-image",className:"h-5 w-5 text-muted-foreground"})}),e[29]=t.filename,e[30]=a.status,e[31]=a.url,e[32]=A):A=e[32];let _;e[33]===Symbol.for("react.memo_cache_sentinel")?(_=P.jsx(W,{name:"file-image",className:"h-3 w-3 shrink-0"}),e[33]=_):_=e[33];let S;e[34]!==t.filename?(S=P.jsx("span",{className:"min-w-0 truncate typography-meta",children:t.filename}),e[34]=t.filename,e[35]=S):S=e[35];let T;e[36]!==t.filename||e[37]!==S?(T=P.jsxs("span",{className:"mt-1 flex w-[100px] items-center justify-center gap-1 text-muted-foreground",title:t.filename,"data-openchamber-markdown-image-caption":"true",children:[_,S]}),e[36]=t.filename,e[37]=S,e[38]=T):T=e[38];let M;return e[39]!==t.filename||e[40]!==t.source||e[41]!==U||e[42]!==T||e[43]!==j||e[44]!==A?(M=P.jsxs("button",{ref:m,type:"button",className:"w-[100px] shrink-0 text-left outline-none focus-visible:ring-2 focus-visible:ring-[var(--interactive-focus-ring)]","aria-label":t.filename,disabled:j,onClick:U,"data-openchamber-markdown-image-action":"true","data-openchamber-markdown-image-source":t.source,"data-openchamber-markdown-image-filename":t.filename,children:[A,T]}),e[39]=t.filename,e[40]=t.source,e[41]=U,e[42]=T,e[43]=j,e[44]=A,e[45]=M):M=e[45],M},pr=r=>{const e=B.c(34),{sessionId:t,messageId:o,contents:n,onShowPopup:u}=r,s=Z()??"",c=h.useRef(null),[i,p]=h.useState(!1),[m,l]=h.useState(null),[w,y]=h.useState(0);let a;e[0]===Symbol.for("react.memo_cache_sentinel")?(a=ee(),e[0]=a):a=e[0];const g=a;let I;e[1]!==n?(I=se(n,ne),e[1]=n,e[2]=I):I=e[2];const b=I;let x;e[3]!==b?(x=g?[]:b.filter(xe).map(ve),e[3]=b,e[4]=x):x=e[4];const f=x;let v,k;e[5]!==f.length||e[6]!==i?(v=()=>{if(f.length===0||i)return;const d=c.current;if(!d||typeof IntersectionObserver>"u"){p(!0);return}const F=new IntersectionObserver(X=>{X.some(ke)&&(p(!0),F.disconnect())},{rootMargin:"200px"});return F.observe(d),()=>F.disconnect()},k=[f.length,i],e[5]=f.length,e[6]=i,e[7]=v,e[8]=k):(v=e[7],k=e[8]),h.useEffect(v,k);let R;e[9]!==s||e[10]!==o||e[11]!==f||e[12]!==t||e[13]!==i?(R=()=>{if(!i||!t||f.length===0)return;const d=new AbortController;return de({sources:f,directory:s,sessionId:t,messageId:o,signal:d.signal}).then(F=>{d.signal.aborted||l(F)}).catch(()=>{d.signal.aborted||l(new Map(f.map(Re)))}),()=>d.abort()},e[9]=s,e[10]=o,e[11]=f,e[12]=t,e[13]=i,e[14]=R):R=e[14];let U;e[15]!==s||e[16]!==o||e[17]!==w||e[18]!==f||e[19]!==t||e[20]!==i?(U=[s,o,w,f,t,i],e[15]=s,e[16]=o,e[17]=w,e[18]=f,e[19]=t,e[20]=i,e[21]=U):U=e[21],h.useEffect(R,U);let j,A;e[22]!==m?(j=()=>{const d=Math.min(...[...m?.values()??[]].filter(_e).map(Se));if(!Number.isFinite(d))return;const F=setTimeout(()=>y(Me),Math.max(0,d-Date.now()));return()=>clearTimeout(F)},A=[m],e[22]=m,e[23]=j,e[24]=A):(j=e[23],A=e[24]),h.useEffect(j,A);let _;e[25]!==m?(_=d=>m?.get(d.source)?.status!=="missing",e[25]=m,e[26]=_):_=e[26];const S=b.filter(_),T=[...m?.values()??[]].some(Ne),M=be(T);if(S.length===0)return null;const N="mt-3 flex max-w-full gap-2 overflow-x-auto pb-1",E="true";let C;e[27]!==M||e[28]!==s||e[29]!==u||e[30]!==m?(C=d=>P.jsx(ye,{candidate:d,preparation:m?.get(d.source),directory:s,assetAuthReady:M.ready,assetAuthNonce:M.nonce,useWorkspaceFsBridge:g,onShowPopup:u},d.source),e[27]=M,e[28]=s,e[29]=u,e[30]=m,e[31]=C):C=e[31];const D=S.map(C);let O;return e[32]!==D?(O=P.jsx("div",{ref:c,className:N,"data-openchamber-markdown-image-gallery":E,children:D}),e[32]=D,e[33]=O):O=e[33],O};function Ie(r){return r+1}function Ee(r){return r.isIntersecting}function Ae(r){return{...r,status:"ready"}}function xe(r){return q(r.source)}function ve(r){return r.source}function ke(r){return r.isIntersecting}function Re(r){return[r,{status:"error"}]}function _e(r){return r.status==="ready"}function Se(r){return r.expiresAt??Number.POSITIVE_INFINITY}function Me(r){return r+1}function Ne(r){return r.status==="ready"}export{pr as MarkdownImageGallery};
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import{R as E,f as ae,j as re}from"./vendor-react-BUCujlKS.js";import{m as zt}from"./vendor-morphdom-B7dS_VPB.js";import{r as Ht,a as Vt}from"./vendor-beautiful-mermaid-DztCUpLZ.js";import{gJ as at,gK as Kt,gL as Ut,gM as jt,gN as Xt,gO as Zt,g as we,bp as Gt,bs as Yt,gP as Jt,gQ as Qt,_ as lt,ai as ct,gR as dt,f as ut,h as mt,eE as en,eF as qe,gS as tn,gT as nn,gU as rn,gV as on,gW as sn,gX as an,o as ln}from"./useAppFontEffects-ZM9ij19-.js";import{h as cn,O as pt,L as oe,c_ as dn,u as Y,a as un,b8 as mn}from"./index-CvLgnuNI.js";import{getCachedMarkdownBlocks as Be,renderMarkdownSync as pn,renderMarkdownBlocks as fn}from"./markdownCore-DS9FdwrI.js";import{b as hn,r as gn}from"./textMateThemeFromAppTheme-C95XdFGj.js";import"./vendor-scheduler-7OC5HNn7.js";import"./vendor-elkjs-BRwcR927.js";import"./vendor-entities-C3BA0AJP.js";import"./vendor-zod-Gea9uBlY.js";import"./vendor-simplewebauthn-browser-VDA66rT_.js";import"./vendor-vite-runtime-DD1OZmLC.js";import"./vendor-zustand-BAGL70zf.js";import"./vendor-base-ui-CsXYnR5c.js";import"./vendor-floating-ui-utils-D6FqdtJt.js";import"./vendor-floating-ui-react-dom-DxYCWdHj.js";import"./vendor-floating-ui-dom-BTvzWks8.js";import"./vendor-floating-ui-core-PuGzNPnN.js";import"./vendor-use-sync-external-store-D6wYuSt-.js";import"./vendor-class-variance-authority-5VPnzWs2.js";import"./vendor-clsx-B-dksMZM.js";import"./vendor-dnd-kit-core-BZknOX2w.js";import"./vendor-dnd-kit-utilities-B_MdXhJC.js";import"./vendor-dnd-kit-accessibility-BHxJPORy.js";import"./vendor-dnd-kit-sortable-CsEagZ81.js";import"./vendor-framer-motion-Bq3iTZ6r.js";import"./vendor-motion-dom-DcCgeG69.js";import"./vendor-motion-utils-BGh8QBgx.js";import"./vendor-tanstack-react-virtual-ClYN8CzB.js";import"./vendor-tanstack-virtual-core-BewVQryB.js";import"./contextPanelEmbeddedChat-CirXEPJq.js";import"./vendor-sonner-DFyL3AvE.js";import"./vendor-cmdk-DgLInKvT.js";import"./vendor-radix-ui-react-dialog-B94Bt2qq.js";import"./vendor-radix-ui-primitive-Dc_FVRD7.js";import"./vendor-radix-ui-react-compose-refs-DcAh5WdT.js";import"./vendor-radix-ui-react-context-Czxm7Z62.js";import"./vendor-radix-ui-react-id-f5BLKEVw.js";import"./vendor-radix-ui-react-use-layout-effect-D_3IhJdJ.js";import"./vendor-radix-ui-react-use-controllable-state-BFT5YmkA.js";import"./vendor-radix-ui-react-dismissable-layer-D7kXcwgJ.js";import"./vendor-radix-ui-react-primitive-DhVoX9SD.js";import"./vendor-radix-ui-react-slot-BQgQOasS.js";import"./vendor-radix-ui-react-use-callback-ref-BZPnuXAC.js";import"./vendor-radix-ui-react-use-escape-keydown-oph88g-F.js";import"./vendor-radix-ui-react-focus-scope-CiaxW4dD.js";import"./vendor-radix-ui-react-portal-BMJYHWck.js";import"./vendor-radix-ui-react-presence-CNxf-uq4.js";import"./vendor-radix-ui-react-focus-guards-B6qJXYua.js";import"./vendor-react-remove-scroll-DO7dCTnK.js";import"./vendor-tslib-De9GV7Vy.js";import"./vendor-react-remove-scroll-bar-BcFYyj3E.js";import"./vendor-react-style-singleton-q6EMHnwf.js";import"./vendor-get-nonce-C-Z93AgS.js";import"./vendor-use-sidecar-zDC0RhA3.js";import"./vendor-use-callback-ref-D3RC8gqK.js";import"./vendor-aria-hidden-DvXkyWUv.js";import"./vendor-codemirror-language-BgPj_McA.js";import"./vendor-lezer-common-B3-cUCR_.js";import"./vendor-codemirror-state-C9awkmn-.js";import"./vendor-marijn-find-cluster-break-DXwl3gUT.js";import"./vendor-codemirror-view-CiLROUVV.js";import"./vendor-style-mod-NZ5MEPvj.js";import"./vendor-w3c-keyname-Vcq4gwWv.js";import"./vendor-crelt-C8TCjufn.js";import"./vendor-lezer-highlight-CDMHUZ74.js";import"./vendor-codemirror-lang-javascript-Cc2ZYbgX.js";import"./vendor-lezer-javascript-D7Tj24ot.js";import"./vendor-lezer-lr-bhwg1HMg.js";import"./vendor-codemirror-autocomplete-DzPz9Wgq.js";import"./vendor-codemirror-lang-json-CMBS2tG9.js";import"./vendor-lezer-json-Iaex0UN-.js";import"./vendor-codemirror-lang-css-O0cZX78y.js";import"./vendor-lezer-css-C5xB6jxd.js";import"./vendor-codemirror-lang-html-CfgK872x.js";import"./vendor-lezer-html-C0I1p52t.js";import"./vendor-codemirror-lang-markdown-BPGOH9ye.js";import"./vendor-lezer-markdown-C6g-d6P3.js";import"./vendor-codemirror-language-data-U-lXzXNK.js";import"./vendor-codemirror-lang-python-HahnQaAS.js";import"./vendor-lezer-python-CvuFxeZl.js";import"./vendor-codemirror-commands-B7H_j0iU.js";import"./vendor-legendapp-list-BuBPBC3R.js";import"./vendor-tailwind-merge-CPcsbTWB.js";import"./vendor-fuse.js-Dw8P0qyA.js";import"./vendor-opencode-client-_BAHQo4R.js";import"./vendor-marked-CX41MkDF.js";import"./vendor-marked-linkify-it-CXI_LHIE.js";import"./vendor-linkify-it-DZCzzDkK.js";import"./vendor-uc.micro-BAd0H0z4.js";import"./vendor-remend-BWYYytN3.js";import"./vendor-katex-CHD9BdDO.js";import"./vendor-dompurify-r8glNMJW.js";import"./themeResolver-BmJyTmjJ.js";import"./vendor-pierre-theming-C6Z4M5_u.js";import"./vendor-shikijs-core-CGM_jqPK.js";import"./vendor-shikijs-types-CPSbSeK6.js";import"./vendor-shikijs-vscode-textmate-BgLrS_2D.js";import"./vendor-hast-util-to-html-BKBhbTDb.js";import"./vendor-html-void-elements-CkdplsNl.js";import"./vendor-property-information-rJCbAzvX.js";import"./vendor-zwitch-C2o2j-tx.js";import"./vendor-stringify-entities-CsH1VEn9.js";import"./vendor-character-entities-legacy-BpoLgcEt.js";import"./vendor-character-entities-html4-D7taRCQ7.js";import"./vendor-ccount-c2V3InAJ.js";import"./vendor-comma-separated-tokens-D8TqSuIK.js";import"./vendor-space-separated-tokens-DD3iYX1K.js";import"./vendor-hast-util-whitespace-D4Wp6AEg.js";const ft=t=>{const e=t.target;if(!(e instanceof Element))return null;const n=e.closest("a[href]");return!(n instanceof HTMLAnchorElement)||n.getAttribute("data-openchamber-file-link")==="true"?null:n},Ne=(t,e)=>{if(t.defaultPrevented)return!1;const r=ft(t)?.getAttribute("href")??"";return Kt(r)?(t.preventDefault(),t.stopPropagation(),e?.(r),!0):!1},bn=t=>t.button===0&&!t.metaKey&&!t.ctrlKey&&!t.altKey&&!t.shiftKey,wn=(t,e)=>{const n=o=>{if(Ne(o,e.openAppLink)||!e.allowExternalHttp||o.defaultPrevented||!bn(o))return;const s=ft(o)?.getAttribute("href")??"";at(s)&&(o.preventDefault(),o.stopPropagation(),e.openExternalHttp(s))},r=o=>{o.button===1&&Ne(o,e.openAppLink)},i=o=>{Ne(o)};return t.addEventListener("click",n),t.addEventListener("auxclick",r),t.addEventListener("dragstart",i),()=>{t.removeEventListener("click",n),t.removeEventListener("auxclick",r),t.removeEventListener("dragstart",i)}},ht="openchamber-md",ye={background:"transparent",foreground:"var(--md-syntax-foreground)",comment:"var(--md-syntax-comment)",keyword:"var(--md-syntax-keyword)",string:"var(--md-syntax-string)",number:"var(--md-syntax-number)",function:"var(--md-syntax-function)",variable:"var(--md-syntax-variable)",type:"var(--md-syntax-type)",operator:"var(--md-syntax-operator)"},yn=Object.fromEntries(Object.keys(Ut({base:ye})).map(t=>[t,`var(--md-token-${t})`])),An={name:ht,colors:{"editor.background":"transparent","editor.foreground":ye.foreground},tokenColors:[...hn({base:ye,tokens:yn}),{scope:["markup.bold","punctuation.definition.bold"],settings:{fontStyle:"bold"}},{scope:["markup.italic","punctuation.definition.italic"],settings:{fontStyle:"italic"}},{scope:["markup.heading","markup.heading entity.name"],settings:{foreground:ye.keyword,fontStyle:"bold"}},{scope:["markup.inserted","punctuation.definition.inserted"],settings:{foreground:"var(--md-syntax-inserted)"}},{scope:["markup.deleted","punctuation.definition.deleted","invalid","invalid.illegal"],settings:{foreground:"var(--md-syntax-deleted)"}}]};let $e=!1;const vn=()=>{$e||($e=!0,gn(ht,()=>Promise.resolve(An)))},R=t=>Number.isFinite(t)&&t>0,ze=t=>{if(t==null)return null;const e=String(t).trim().match(/^([+-]?(?:(?:\d+\.?\d*)|(?:\.\d+))(?:[eE][+-]?\d+)?)(?:px)?$/);if(!e)return null;const n=Number(e[1]);return R(n)?n:null},Te=(t,e,n)=>Math.min(n,Math.max(e,t)),kn=6,He=1.25,En=1.0015,Cn=.5,Sn=12,Ve=3,Ln=400,ie='[data-markdown="mermaid-block"]',F=t=>t.querySelector(ie)!==null,Mn=t=>[t.x,t.y,t.width,t.height].map(e=>{const n=Number(e.toFixed(kn));return Object.is(n,-0)?"0":String(n)}).join(" "),Nn=t=>{const e=t.viewBox?.trim().split(/[\s,]+/).map(i=>Number.parseFloat(i));if(e?.length===4){const[i,o,s,a]=e;if(Number.isFinite(i)&&Number.isFinite(o)&&R(s)&&R(a))return{x:i,y:o,width:s,height:a}}const n=ze(t.width),r=ze(t.height);return n===null||r===null?null:{x:0,y:0,width:n,height:r}},Tn=t=>{let e=2166136261;for(let n=0;n<t.length;n+=1)e^=t.charCodeAt(n),e=Math.imul(e,16777619);return(e>>>0).toString(36)},Rn=t=>{const e=t.renderMode||"unknown",n=t.svgMarkup??"";if(!n){const r=[t.viewBox??"",t.width??"",t.height??""];return r.some(i=>i!=="")?`${e}:bounds:${r.join(":")}`:`${e}:no-svg`}return[e,Tn(n)].join(":")},gt=(t,e)=>{if(!R(e.width)||!R(e.height))return t;const n=t.width/t.height,r=e.width/e.height;if(n>r){const o=t.width/r;return{x:t.x,y:t.y-(o-t.height)/2,width:t.width,height:o}}const i=t.height*r;return{x:t.x-(i-t.width)/2,y:t.y,width:i,height:t.height}},_n=({currentBox:t,viewport:e,delta:n})=>!R(e.width)||!R(e.height)||!R(t.width)||!R(t.height)?t:{x:t.x-n.x/e.width*t.width,y:t.y-n.y/e.height*t.height,width:t.width,height:t.height},xn=(t,e)=>{const n=e.x-t.x,r=e.y-t.y;return n*n+r*r>Ve*Ve},Pn=({currentBox:t,contentBox:e,viewport:n,pointer:r,zoomFactor:i,minScale:o,maxScale:s})=>{if(!R(n.width)||!R(n.height)||!R(i)||!R(t.width)||!R(t.height)||!R(e.width)||!R(e.height)||!R(o)||!R(s))return t;const a=Math.min(o,s),l=Math.max(o,s),c=gt(e,n),u=c.width/t.width,f=Te(u*i,a,l),m=c.width/f,g=m/(t.width/t.height),y=Te(r.x/n.width,0,1),v=Te(r.y/n.height,0,1),S=t.x+y*t.width,p=t.y+v*t.height;return{x:S-y*m,y:p-v*g,width:m,height:g}},Ae=new WeakMap,Fe=new WeakMap,U=new Set,se=new Set;let K=null,ne=null,Q=null;const In=t=>t.querySelector('[data-markdown="mermaid-viewport"]')??t.querySelector('[data-markdown="mermaid"]'),bt=t=>{const e=t.querySelector('[data-markdown="mermaid"] svg'),n=t.querySelector('[data-markdown="mermaid"]');return Rn({renderMode:t.getAttribute("data-mermaid-render"),svgMarkup:n?.getAttribute("data-md-original-svg")??e?.outerHTML??null,viewBox:e?.getAttribute("viewBox"),width:e?.getAttribute("width"),height:e?.getAttribute("height")})},G=t=>{const e=t.getBoundingClientRect();return{width:e.width,height:e.height}},Fn=(t,e)=>{const n=e.getBoundingClientRect();return{x:t.clientX-n.left,y:t.clientY-n.top}},Dn=t=>t instanceof Element&&!!t.closest('button, a, [role="button"]'),wt=t=>{const e=t.map(n=>G(n.viewport));t.forEach((n,r)=>{const i=e[r];i&&n.fitToViewport(i)})},yt=()=>{Q!==null||U.size===0||(Q=window.requestAnimationFrame(()=>{Q=null,wt(Array.from(U))}))},On=()=>{if(K)return K;const t=globalThis.ResizeObserver;return t?(K=new t(e=>{for(const n of e)n.target instanceof HTMLElement&&Fe.get(n.target)?.fitToViewport({width:n.contentRect.width,height:n.contentRect.height})}),K):null},Wn=t=>{if(U.has(t))return;const e=U.size===0;U.add(t),Fe.set(t.viewport,t),On()?.observe(t.viewport),e&&window.addEventListener("resize",yt)},qn=t=>{U.delete(t)&&(K?.unobserve(t.viewport),Fe.delete(t.viewport),!(U.size>0)&&(K?.disconnect(),K=null,window.removeEventListener("resize",yt),Q!==null&&(window.cancelAnimationFrame(Q),Q=null)))},Bn=t=>{const e=In(t),n=t.querySelector('[data-markdown="mermaid"] svg');if(!e||!n)return null;const r=Nn({viewBox:n.getAttribute("viewBox"),width:n.getAttribute("width"),height:n.getAttribute("height")});if(!r)return null;let i=r,o=null,s=null,a=null,l=null;const c=d=>{i=d,n.setAttribute("viewBox",Mn(d)),n.removeAttribute("width"),n.removeAttribute("height")},u=d=>{c(gt(r,d))},f=()=>{u(G(e))},m=(d,b)=>{c(Pn({currentBox:i,contentBox:r,viewport:G(e),pointer:d,zoomFactor:b,minScale:Cn,maxScale:Sn}))},g=()=>{const d=G(e);m({x:d.width/2,y:d.height/2},He)},y=()=>{const d=G(e);m({x:d.width/2,y:d.height/2},1/He)},v=d=>{!d.ctrlKey&&!d.metaKey||(d.preventDefault(),d.stopPropagation(),m(Fn(d,e),Math.pow(En,-d.deltaY)))},S=d=>{d.button!==0||Dn(d.target)||(o=d.pointerId,s={x:d.clientX,y:d.clientY},a=s,l!==null&&(window.clearTimeout(l),l=null),t.removeAttribute("data-mermaid-suppress-click"),e.setPointerCapture?.(d.pointerId),t.setAttribute("data-mermaid-panning","true"),d.preventDefault())},p=d=>{if(o!==d.pointerId||!a)return;const b={x:d.clientX,y:d.clientY};c(_n({currentBox:i,viewport:G(e),delta:{x:b.x-a.x,y:b.y-a.y}})),a=b,s&&xn(s,b)&&t.setAttribute("data-mermaid-suppress-click","true"),d.preventDefault()},h=d=>{o===d.pointerId&&(e.releasePointerCapture?.(d.pointerId),o=null,s=null,a=null,t.removeAttribute("data-mermaid-panning"),t.hasAttribute("data-mermaid-suppress-click")&&(l=window.setTimeout(()=>{t.removeAttribute("data-mermaid-suppress-click"),l=null},Ln)))};e.addEventListener("wheel",v,{passive:!1}),e.addEventListener("pointerdown",S),e.addEventListener("pointermove",p),e.addEventListener("pointerup",h),e.addEventListener("pointercancel",h);const k={viewport:e,zoomIn:g,zoomOut:y,fit:f,fitToViewport:u,cleanup:()=>{qn(k),e.removeEventListener("wheel",v),e.removeEventListener("pointerdown",S),e.removeEventListener("pointermove",p),e.removeEventListener("pointerup",h),e.removeEventListener("pointercancel",h),l!==null&&window.clearTimeout(l),t.removeAttribute("data-mermaid-panning"),t.removeAttribute("data-mermaid-suppress-click"),Ae.delete(t)}};return k},At=t=>{for(const[e,n]of t.controllers){const r=bt(e);(!t.container.contains(e)||r!==t.signatures.get(e))&&(n.cleanup(),t.controllers.delete(e),t.signatures.delete(e))}},$n=t=>{if(t.disposed)return[];const e=[];for(const n of Array.from(t.container.querySelectorAll(ie))){if(t.controllers.has(n)||n.querySelector('[data-markdown="mermaid"] svg')===null)continue;const r=Bn(n);r&&(t.controllers.set(n,r),t.signatures.set(n,bt(n)),Ae.set(n,r),e.push(r))}return e},vt=()=>{const t=Array.from(se);se.clear();const e=[];for(const n of t)n.disposed||(At(n),e.push(...$n(n)));wt(e);for(const n of e)Wn(n)},zn=()=>{ne===null&&(ne=window.requestAnimationFrame(()=>{ne=null,ne=window.requestAnimationFrame(()=>{ne=null,vt()})}))},Hn=t=>{t.disposed||(At(t),se.add(t),zn())},Vn=t=>{if(!(t instanceof HTMLElement))return null;const e=Ae.get(t);if(e)return e;for(const n of se)if(n.container.contains(t))return vt(),Ae.get(t)??null;return null},Kn=t=>{const e={container:t,controllers:new Map,signatures:new Map,disposed:!1},n=()=>Hn(e),r=()=>{e.disposed=!0,se.delete(e);for(const i of e.controllers.values())i.cleanup();e.controllers.clear(),e.signatures.clear()};return n(),{refresh:n,cleanup:r}},Un={copy:"file-copy",check:"check",download:"download",zoomIn:"add",zoomOut:"subtract",fit:"refresh",textWrap:"text-wrap",image:"file-image",disclosure:"arrow-right-s"},kt="p-1 rounded hover:bg-interactive-hover/60 text-muted-foreground hover:text-foreground transition-colors focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[var(--interactive-focus-ring)]",ee=(t,e)=>{const n=Un[e],r=t.ownerDocument.createElementNS("http://www.w3.org/2000/svg","svg");r.setAttribute("class","remixicon size-3.5"),r.setAttribute("viewBox","0 0 24 24"),r.setAttribute("aria-hidden","true");const i=t.ownerDocument.createElementNS("http://www.w3.org/2000/svg","use");i.setAttribute("href",`#oc-${n}`),r.appendChild(i),t.replaceChildren(r)},jn=t=>{for(const e of Array.from(t.querySelectorAll('[data-openchamber-markdown-image-label="true"]'))){if(e.querySelector("[data-openchamber-markdown-image-label-icon]"))continue;const n=document.createElement("span");n.className="inline-flex shrink-0",n.setAttribute("aria-hidden","true"),n.setAttribute("data-openchamber-markdown-image-label-icon","true"),ee(n,"image"),e.prepend(n)}},Xn=t=>{for(const e of t.querySelectorAll("details[data-md-details] > summary")){if(e.querySelector("[data-md-disclosure-icon]"))continue;const n=document.createElement("span");n.append(...Array.from(e.childNodes));const r=document.createElement("span");r.setAttribute("data-md-disclosure-icon",""),r.setAttribute("aria-hidden","true"),ee(r,"disclosure"),e.append(r,n)}},B=(t,e,n)=>{const r=document.createElement("button");return r.type="button",r.className=kt,r.setAttribute("data-md-action",n),r.setAttribute("title",e),r.setAttribute("aria-label",e),ee(r,t),r},Et=(t,e,n)=>{const r=t.querySelector("[data-md-code-body]"),i=t.querySelector("pre"),o=t.querySelector("pre code"),s=t.querySelectorAll("[data-md-code-line-content]"),a=t.querySelector('[data-md-action="toggle-code-wrap"]');t.setAttribute("data-code-wrap",e?"true":"false"),r?.classList.toggle("overflow-x-auto",!e),r?.classList.toggle("overflow-x-hidden",e),i?.classList.toggle("whitespace-pre-wrap",e),i?.classList.toggle("break-words",e),o?.classList.toggle("whitespace-pre-wrap",e),o?.classList.toggle("break-words",e),i&&(i.style.whiteSpace=e?"pre-wrap":"pre",i.style.overflowWrap=e?"anywhere":"normal"),o&&(o.style.whiteSpace=e?"pre-wrap":"pre",o.style.overflowWrap=e?"anywhere":"normal");for(const l of Array.from(s))l.style.whiteSpace=e?"pre-wrap":"pre",l.style.overflowWrap=e?"anywhere":"normal";if(a){const l=e?n.disableCodeWrap:n.enableCodeWrap;a.setAttribute("title",l),a.setAttribute("aria-label",l),a.classList.toggle("text-foreground",e),a.classList.toggle("opacity-100",e),a.classList.toggle("text-muted-foreground",!e),a.classList.toggle("opacity-65",!e),a.setAttribute("aria-pressed",e?"true":"false")}},Ct=t=>{const e=t.querySelector(":scope > code");if(!e||e.hasAttribute("data-md-code-lines"))return;t.removeAttribute("data-md-gutter-reserved");const n=e.textContent??"",r=n.endsWith(`
|
|
2
|
-
`),i=r?n.slice(0,-1).split(`
|
|
3
|
-
`):n.split(`
|
|
4
|
-
`),o=i.length>0?i:[""],s=Array.from(e.children).filter(c=>c.classList.contains("line"));r&&s.length===o.length+1&&s.at(-1)?.textContent===""&&s.pop();const a=s.length===o.length,l=document.createDocumentFragment();o.forEach((c,u)=>{const f=document.createElement("span");f.setAttribute("data-md-code-line","");const m=document.createElement("span");m.setAttribute("data-md-code-line-number",String(u+1)),m.setAttribute("aria-hidden","true");const g=document.createElement("span");if(g.setAttribute("data-md-code-line-content",""),a){const y=s[u];y&&g.append(...Array.from(y.childNodes))}else g.textContent=c;if(f.append(m,g),l.appendChild(f),u<o.length-1||r){const y=document.createElement("span");y.setAttribute("data-md-code-line-break",""),y.textContent=`
|
|
5
|
-
`,l.appendChild(y)}}),e.replaceChildren(l),e.setAttribute("data-md-code-lines",""),e.toggleAttribute("data-md-code-trailing-newline",r)},St=t=>{const e=Array.from(t.querySelectorAll("[data-md-code-line-content]"));if(e.length===0)return t.textContent??"";const n=e.map(r=>r.textContent??"").join(`
|
|
6
|
-
`);return t.hasAttribute("data-md-code-trailing-newline")?`${n}
|
|
7
|
-
`:n},Ke=(t,e,n)=>{const r=t.querySelectorAll('[data-component="markdown-code"]');for(const i of Array.from(r)){const o=i.querySelector("pre");o&&Ct(o),Et(i,e,n)}},Ue=(t,e,n,r)=>{ee(t,"check"),t.setAttribute("title",e),t.setAttribute("aria-label",e),window.setTimeout(()=>{ee(t,n),t.setAttribute("title",r),t.setAttribute("aria-label",r)},2e3)},Zn=t=>{const e=t.querySelectorAll(":not(pre) > code");for(const n of Array.from(e))n.getAttribute("data-markdown")!=="inline-code"&&n.setAttribute("data-markdown","inline-code")},Gn=(t,e)=>{const n=t.querySelectorAll("pre");for(const r of Array.from(n)){if(r.querySelector("code.language-mermaid"))continue;const i=r.parentElement;if(!i||i.closest('[data-component="markdown-code"]'))continue;const o=r.querySelector("code")?.className.match(/language-([\w+#.-]+)/)?.[1],s=r.getAttribute("data-md-lang")??o??"text",a=document.createElement("div");a.setAttribute("data-component","markdown-code"),a.className="my-4 group overflow-hidden rounded-2xl border border-border/80 bg-[var(--surface-elevated)]";const l=document.createElement("div");l.className="flex items-center justify-between border-b border-border/70 px-3 py-1.5";const c=document.createElement("span");c.className="font-mono text-[13px] text-muted-foreground",c.textContent=s;const u=B("copy",e.labels.copy,"copy-code"),f=B("textWrap",e.codeBlockLineWrap?e.labels.disableCodeWrap:e.labels.enableCodeWrap,"toggle-code-wrap");l.appendChild(c);const m=document.createElement("div");m.className="flex items-center gap-1",m.setAttribute("data-md-code-actions",""),m.appendChild(f),m.appendChild(u),l.appendChild(m);const g=document.createElement("div");g.setAttribute("data-md-code-body",""),g.className="px-3 py-2.5 overflow-x-auto",i.replaceChild(a,r),r.style.margin="0",r.style.background="transparent",r.classList.add("min-w-0","w-full","flex-1"),e.deferCodeLineNumberSync?r.setAttribute("data-md-gutter-reserved",""):Ct(r),g.appendChild(r),a.appendChild(l),a.appendChild(g),Et(a,e.codeBlockLineWrap,e.labels)}},je=t=>{const e=[],n=[],r=t.querySelectorAll("thead th");for(const o of Array.from(r))e.push((o.textContent??"").trim());const i=t.querySelectorAll("tbody tr");for(const o of Array.from(i)){const s=Array.from(o.querySelectorAll("td")).map(a=>(a.textContent??"").trim());s.length>0&&n.push(s)}return{headers:e,rows:n}},Yn=t=>/[",\n]/.test(t)?`"${t.replace(/"/g,'""')}"`:t,Xe=({headers:t,rows:e})=>[t,...e].map(n=>n.map(Yn).join(",")).join(`
|
|
8
|
-
`),Jn=({headers:t,rows:e})=>[t,...e].map(n=>n.join(" ")).join(`
|
|
9
|
-
`),Ze=({headers:t,rows:e})=>{const n=`| ${t.join(" | ")} |`,r=`| ${t.map(()=>"---").join(" | ")} |`,i=e.map(o=>`| ${o.join(" | ")} |`).join(`
|
|
10
|
-
`);return`${n}
|
|
11
|
-
${r}
|
|
12
|
-
${i}`},Ge=(t,e)=>{const n=document.createElement("div");n.className=`absolute top-full right-0 mt-1 hidden ${Gt}`,n.style.backgroundColor="var(--surface-elevated)",n.style.color="var(--surface-elevated-foreground)",n.setAttribute("data-md-menu",t);for(const r of e){const i=document.createElement("button");i.type="button",i.className=`w-full text-left ${Yt}`,i.setAttribute("data-md-action",`${t}-${r.key}`),i.textContent=r.label,n.appendChild(i)}return n},Qn=120,er=320,Ie="data-md-table-layout",tr=(t,e)=>{const n=t.querySelectorAll("table");for(const r of Array.from(n)){if(r.closest('[data-markdown="table-wrapper"]'))continue;const o=document.createElement("div");o.className="group my-4 flex w-fit max-w-full flex-col space-y-2",o.setAttribute("data-markdown","table-wrapper");const s=document.createElement("div");s.className="flex items-center justify-end gap-1";const a=document.createElement("div");a.className="relative",a.appendChild(B("copy",e.copyTable,"table-copy-toggle")),a.appendChild(Ge("table-copy",[{key:"csv",label:"CSV"},{key:"tsv",label:"TSV"},{key:"markdown",label:"Markdown"}]));const l=document.createElement("div");l.className="relative",l.appendChild(B("download",e.downloadTable,"table-download-toggle")),l.appendChild(Ge("table-download",[{key:"csv",label:"CSV"},{key:"markdown",label:"Markdown"}])),s.appendChild(a),s.appendChild(l);const c=document.createElement("div");c.className="overflow-x-auto rounded-lg border border-border/80 bg-[var(--surface-elevated)]";const u=r.parentElement;if(!u)continue;u.replaceChild(o,r),r.setAttribute("data-markdown","table"),r.setAttribute(Ie,"pending"),r.classList.add("w-max","border-collapse","text-sm");for(const m of Array.from(r.querySelectorAll("tr")))m.classList.add("border-b","border-border/60");const f=r.querySelector("tbody tr:last-child");f?.classList.remove("border-b"),f?.classList.add("border-0");for(const m of Array.from(r.querySelectorAll("th")))m.classList.add("min-w-[120px]","max-w-[320px]","whitespace-normal","[overflow-wrap:anywhere]","border-r","border-border/60","px-4","py-2.5","text-left","align-middle","font-semibold","text-foreground","last:border-r-0");for(const m of Array.from(r.querySelectorAll("td")))m.classList.add("min-w-[120px]","max-w-[320px]","whitespace-normal","[overflow-wrap:anywhere]","border-r","border-border/60","px-4","py-2.5","align-middle","text-foreground/90","last:border-r-0");c.appendChild(r),o.appendChild(s),o.appendChild(c)}},nr=t=>{const e=Array.from(t.querySelectorAll(`table[data-markdown="table"]:not([${Ie}="fixed"])`));if(e.length===0||!t.isConnected)return;const n=t.ownerDocument.createElement("div");n.setAttribute("aria-hidden","true"),n.setAttribute("data-md-table-measure",""),n.style.position="fixed",n.style.left="-100000px",n.style.top="0",n.style.visibility="hidden",n.style.pointerEvents="none",n.style.width="max-content";const r=e.map(o=>{const s=f=>Array.from(f.children).filter(m=>m.tagName==="TH"||m.tagName==="TD"),a=Array.from(o.querySelectorAll("tbody tr")),l=a.some(f=>s(f).length>0)?a:Array.from(o.querySelectorAll("thead tr")),c=Math.max(0,...Array.from(o.querySelectorAll("tr")).map(f=>s(f).length)),u=[];for(let f=0;f<c;f+=1){const m=t.ownerDocument.createElement("table");m.className=o.className,m.style.tableLayout="auto",m.style.width="max-content";const g=t.ownerDocument.createElement("tbody");for(const y of l){const v=s(y)[f];if(!v)continue;const S=t.ownerDocument.createElement("tr"),p=v.cloneNode(!0);p instanceof HTMLElement&&(p.style.width="auto",p.style.minWidth="0",p.style.maxWidth="none",p.style.whiteSpace="nowrap",p.style.overflowWrap="normal",S.appendChild(p),g.appendChild(S))}m.appendChild(g),n.appendChild(m),u.push(m)}return{table:o,columnProbes:u}});t.appendChild(n);const i=r.map(({table:o,columnProbes:s})=>({table:o,widths:s.map(a=>Math.min(er,Math.max(Qn,Math.ceil(a.getBoundingClientRect().width))))}));n.remove();for(const{table:o,widths:s}of i){Array.from(o.children).find(u=>u.matches("colgroup[data-md-table-columns]"))?.remove();const l=t.ownerDocument.createElement("colgroup");l.setAttribute("data-md-table-columns","");for(const u of s){const f=t.ownerDocument.createElement("col");f.style.width=`${u}px`,l.appendChild(f)}const c=Array.from(o.children).find(u=>u.tagName==="THEAD"||u.tagName==="TBODY"||u.tagName==="TFOOT")??null;o.insertBefore(l,c),o.style.tableLayout="fixed",o.style.width=`${s.reduce((u,f)=>u+f,0)}px`,o.setAttribute(Ie,"fixed")}},rr=(t,e)=>{const n=t.querySelectorAll("pre > code.language-mermaid");for(const r of Array.from(n)){const i=r.parentElement;if(!i)continue;const o=(r.textContent??"").replace(/\s+$/,""),s=e.renderMermaid(o),a=document.createElement("div");a.setAttribute("data-markdown","mermaid-block"),a.setAttribute("data-md-source",o),a.className="group relative";const l=document.createElement("div");l.setAttribute("data-markdown","mermaid-scroll");const c=document.createElement("div");if(c.setAttribute("data-markdown","mermaid-toolbar"),c.className="absolute top-1 right-2 flex items-center gap-1 opacity-0 group-hover:opacity-100 group-focus-within:opacity-100 transition-opacity",s.svg){a.setAttribute("data-mermaid-render","svg");const f=document.createElement("div");f.setAttribute("data-markdown","mermaid-viewport");const m=document.createElement("div");if(m.setAttribute("data-markdown","mermaid"),m.setAttribute("data-md-original-svg",s.svg),m.innerHTML=s.svg,f.appendChild(m),l.appendChild(f),e.mermaidControls.showPanZoomControls&&(c.appendChild(B("zoomIn",e.labels.zoomInDiagram,"mermaid-zoom-in")),c.appendChild(B("zoomOut",e.labels.zoomOutDiagram,"mermaid-zoom-out")),c.appendChild(B("fit",e.labels.resetDiagramView,"mermaid-fit"))),e.mermaidControls.copy){const g=B("copy",e.labels.copyDiagram,"mermaid-copy");g.setAttribute("data-md-source",o),c.appendChild(g)}if(e.mermaidControls.download){const g=B("download",e.labels.downloadDiagram,"mermaid-download");g.setAttribute("data-md-svg","1"),c.appendChild(g)}}else{a.setAttribute("data-mermaid-render","ascii");const f=document.createElement("pre");if(f.setAttribute("data-markdown","mermaid-ascii"),f.textContent=s.ascii||o,l.appendChild(f),e.mermaidControls.copy){const m=B("copy",e.labels.copyDiagram,"mermaid-copy");m.setAttribute("data-md-source",s.ascii||o),c.appendChild(m)}}a.appendChild(l),a.appendChild(c);const u=i.parentElement;u&&u.replaceChild(a,i)}},or=(t,e)=>{const n=t.querySelectorAll("a[href]");for(const r of Array.from(n)){if(r.getAttribute("data-md-link-decorated")==="true"||r.getAttribute("data-openchamber-file-link")==="true")continue;const i=r.getAttribute("href")??"";if(!at(i))continue;r.setAttribute("data-md-link-decorated","true");const o=jt(i);if(o){const s=document.createElement("span");s.setAttribute(Xt,"true"),s.className="mr-1 inline-flex size-[18px] items-center justify-center rounded border border-[var(--border)] bg-[var(--interactive-hover)] align-middle";const a=document.createElement("img");a.src=o,a.alt="",a.setAttribute("aria-hidden","true"),a.loading="lazy",a.decoding="async",a.className="size-3.5 rounded-sm",a.addEventListener("error",()=>s.remove(),{once:!0}),s.appendChild(a),r.parentNode?.insertBefore(s,r)}if(e.onPreviewLoopback&&Zt(i)){const s=document.createElement("button");s.type="button",s.className=`ml-1 align-middle ${kt}`,s.setAttribute("data-md-action","preview-loopback"),s.setAttribute("data-md-url",i),s.setAttribute("title",e.labels.previewTitle),s.setAttribute("aria-label",e.labels.previewLabel),ee(s,"download"),r.parentNode?.insertBefore(s,r.nextSibling)}}},pe=(t,e)=>{Xn(t),jn(t),Zn(t),rr(t,e),Gn(t,e),tr(t,e.labels),or(t,e)},Ye=(t,e,n)=>{const r=new Blob([e],{type:n}),i=URL.createObjectURL(r),o=document.createElement("a");o.href=i,o.download=t,document.body.appendChild(o),o.click(),document.body.removeChild(o),URL.revokeObjectURL(i)},fe=t=>{for(const e of Array.from(t.querySelectorAll("[data-md-menu]")))e.classList.add("hidden")},Je=t=>(t.nodeType===1?t:t.parentElement)?.closest("pre code[data-md-code-lines]")??null,ir=t=>{const e=Je(t.startContainer);return!e||e!==Je(t.endContainer)?null:t.toString()},he=new WeakMap,sr=t=>{let e=he.get(t);if(!e){const n=()=>{const o=t.getSelection();return!o||o.rangeCount!==1||o.isCollapsed?null:ir(o.getRangeAt(0))},r=o=>{if(!o.clipboardData)return;const s=n();s!==null&&(o.preventDefault(),o.stopPropagation(),o.clipboardData.setData("text/plain",s))},i=o=>{const s=n();s!==null&&(o.preventDefault(),we(s))};e={registrations:0,handler:r,menuHandler:i},he.set(t,e),t.addEventListener("copy",r,!0),t.defaultView?.addEventListener("openchamber:copy",i)}return e.registrations+=1,()=>{const n=he.get(t);n&&(n.registrations-=1,!(n.registrations>0)&&(t.removeEventListener("copy",n.handler,!0),t.defaultView?.removeEventListener("openchamber:copy",n.menuHandler),he.delete(t)))}},ar=(t,e)=>{const n=sr(t.ownerDocument),r=i=>{const o=i.target;if(!(o instanceof Element))return;const s=o.closest("[data-md-action]");if(!s){fe(t);return}const a=s.getAttribute("data-md-action")??"";if(a==="copy-code"){const l=s.closest('[data-component="markdown-code"]')?.querySelector("code"),c=l?St(l):"";c&&(s.setAttribute("data-md-copy-pending",""),we(c).then(()=>Ue(s,e.labels.copied,"copy",e.labels.copy)).finally(()=>s.removeAttribute("data-md-copy-pending")));return}if(a==="toggle-code-wrap"){i.preventDefault(),e.onToggleCodeBlockLineWrap?.();return}if(a==="table-copy-toggle"||a==="table-download-toggle"){i.preventDefault();const l=s.parentElement?.querySelector("[data-md-menu]")??null,c=l?.classList.contains("hidden")??!1;fe(t),l&&c&&l.classList.remove("hidden");return}if(a.startsWith("table-copy-")){const l=a.replace("table-copy-",""),c=s.closest('[data-markdown="table-wrapper"]')?.querySelector("table");if(c instanceof HTMLTableElement){const u=je(c),f=l==="csv"?Xe(u):l==="tsv"?Jn(u):Ze(u);we(f)}fe(t);return}if(a.startsWith("table-download-")){const l=a.replace("table-download-",""),c=s.closest('[data-markdown="table-wrapper"]')?.querySelector("table");if(c instanceof HTMLTableElement){const u=je(c),f=l==="csv"?Xe(u):Ze(u);Ye(l==="csv"?"table.csv":"table.md",f,l==="csv"?"text/csv":"text/markdown")}fe(t);return}if(a==="mermaid-copy"){const l=s.getAttribute("data-md-source")??"";l&&we(l).then(()=>Ue(s,e.labels.copied,"copy",e.labels.copyDiagram));return}if(a==="mermaid-zoom-in"||a==="mermaid-zoom-out"||a==="mermaid-fit"){i.preventDefault();const l=s.closest('[data-markdown="mermaid-block"]'),c=Vn(l);a==="mermaid-zoom-in"?c?.zoomIn():a==="mermaid-zoom-out"?c?.zoomOut():c?.fit();return}if(a==="mermaid-download"){const l=s.closest('[data-markdown="mermaid-block"]')?.querySelector('[data-markdown="mermaid"]'),c=l?.getAttribute("data-md-original-svg")??l?.innerHTML??"";c&&Ye("diagram.svg",c,"image/svg+xml;charset=utf-8");return}if(a==="preview-loopback"){i.preventDefault();const l=s.getAttribute("data-md-url")??"";l&&e.onPreviewLoopback?.(l);return}};return t.addEventListener("click",r),()=>{n(),t.removeEventListener("click",r)}},Qe=(t,e,n)=>{let r=0;for(const o of t){const s=r+o.data.length;if(e<s||e===s&&n==="left")return{node:o,offset:Math.max(0,e-r)};r=s}const i=t.at(-1);return i?{node:i,offset:i.data.length}:null},lr=new Set(["dockerfile","makefile","readme","license",".env",".gitignore",".npmrc"]),et=Array.from(lr).map(t=>t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")).join("|"),Lt=t=>Jt(t),cr=t=>Qt(t),dr=t=>{let e;try{e=new URL(t.trim())}catch{return null}if(e.protocol!=="file:"||e.hostname&&e.hostname!=="localhost")return null;try{const n=decodeURIComponent(e.pathname);return/^\/[A-Za-z]:\//.test(n)?n.slice(1):n.startsWith("/")?n:null}catch{return null}},ve=t=>{let e=(t||"").trim();return e?((e.startsWith("`")&&e.endsWith("`")||e.startsWith('"')&&e.endsWith('"')||e.startsWith("'")&&e.endsWith("'"))&&(e=e.slice(1,-1).trim()),e=e.replace(/[.,;!?]+$/g,""),e.endsWith(")")&&!e.includes("(")&&(e=e.slice(0,-1)),e.endsWith("]")&&!e.includes("[")&&(e=e.slice(0,-1)),e):""},ge=t=>{let e=ve(t);if(!e)return"";const n=e.indexOf(";");n>=0&&(e=e.slice(0,n)),e=e.replace(/#.*$/,"");const r=e.match(/^(.*\.[A-Za-z0-9_-]{1,16}):.*$/);r&&(e=r[1]??e);const i=et.length>0?e.match(new RegExp(`^(.*(?:/|^)(${et})):.*$`,"i")):null;return i&&(e=i[1]??e),ve(e)},Mt=t=>{const e=ve(t);if(!e)return null;const n=e.indexOf(";"),r=n>=0?ve(e.slice(0,n)):e;if(!r)return null;const i=r.match(/^(.*?):(\d+)-(\d+)$/);if(i){const l=ge(i[1]??""),c=Number.parseInt(i[2]??"",10),u=Number.parseInt(i[3]??"",10);return!l||!Number.isFinite(c)||!Number.isFinite(u)||u<c?null:{path:l,line:c,endLine:u}}const o=r.match(/^(.*)#L(\d+)(?:C(\d+))?$/i);if(o){const l=ge(o[1]??""),c=Number.parseInt(o[2]??"",10),u=o[3]?Number.parseInt(o[3],10):void 0;return!l||!Number.isFinite(c)?null:{path:l,line:c,column:Number.isFinite(u??Number.NaN)?u:void 0}}const s=r.match(/^(.*?):(\d+)(?::(\d+))?$/);if(s){const l=ge(s[1]??""),c=Number.parseInt(s[2]??"",10),u=s[3]?Number.parseInt(s[3],10):void 0;return!l||!Number.isFinite(c)?null:{path:l,line:c,column:Number.isFinite(u??Number.NaN)?u:void 0}}const a=ge(r);return a?{path:a}:null},Re=/(?:[A-Za-z]:[\\/])?[\w.\-/@+]*[\w\-/@+]\.[A-Za-z0-9]{1,8}(?::\d+(?:-\d+)?(?::\d+)?)?/g,ur=4,mr=1e3,pr=200,z=new Map;let be=0;const tt=[],fr=()=>pt()?pr:mr,hr=(t,e)=>`${t}\0${e}`,gr=(t,e)=>{const n=Lt(t);if(!n)return Promise.resolve(!1);const r=hr(e,n),i=z.get(r);if(i)return z.delete(r),z.set(r,i),i;const o=new Promise(a=>{const l=()=>{be+=1,cn(`/api/fs/stat?path=${encodeURIComponent(n)}&optional=true`,{method:"GET",cache:"no-store",headers:e?{"x-opencode-directory":e}:void 0}).then(async c=>{if(!c.ok){a(!1);return}const u=await c.json().catch(()=>null);a(u?.exists!==!1)}).catch(()=>a(!1)).finally(()=>{be=Math.max(0,be-1),tt.shift()?.()})};if(be<ur){l();return}tt.push(l)}),s=fr();for(;z.size>=s;){const a=z.keys().next().value;if(typeof a!="string")break;z.delete(a)}return z.set(r,o),o},br={maxSessions:8,maxEntriesPerSession:4};class wr{maxSessions;maxEntriesPerSession;sessions=new Map;constructor(e=br){this.maxSessions=Math.max(1,e.maxSessions),this.maxEntriesPerSession=Math.max(1,e.maxEntriesPerSession)}store(e){const n=e.scope,r=e.id;let i=this.sessions.get(n);for(i===void 0?(i=new Map,this.sessions.set(n,i)):this.refreshSession(n,i),i.delete(r),i.set(r,e);i.size>this.maxEntriesPerSession;)this.removeOldestEntry(i);for(;this.sessions.size>this.maxSessions;)this.removeOldestSession()}take(e){const n=e.scope,r=this.sessions.get(n);if(!r)return null;const i=e.id;this.refreshSession(n,r);const o=r.get(i);return o===void 0||o.locale!==e.locale||o.directory!==e.directory?null:(r.delete(i),r.size===0&&this.sessions.delete(n),o.fragment)}clear(){this.sessions.clear()}stats(){let e=0;for(const n of this.sessions.values())e+=n.size;return{sessions:this.sessions.size,entries:e}}refreshSession(e,n){this.sessions.delete(e),this.sessions.set(e,n)}removeOldestEntry(e){const n=e.keys().next().value;n!==void 0&&e.delete(n)}removeOldestSession(){const e=this.sessions.keys().next().value;e!==void 0&&this.sessions.delete(e)}}const nt=new wr,Nt=()=>{const t=ae.c(4),e=en();let n;t[0]===Symbol.for("react.memo_cache_sentinel")?(n=qe(!1),t[0]=n):n=t[0];const r=n;let i;t[1]===Symbol.for("react.memo_cache_sentinel")?(i=qe(!0),t[1]=i):i=t[1];const o=i;let s;return t[2]!==e?.currentTheme?(s=e?.currentTheme??(typeof window<"u"&&window.matchMedia("(prefers-color-scheme: dark)").matches?o:r),t[2]=e?.currentTheme,t[3]=s):s=t[3],s},Tt=t=>{const e=ae.c(4),{containerRef:n,enabled:r}=t;let i,o;e[0]!==n||e[1]!==r?(i=()=>{const s=n.current;if(s)return wn(s,{allowExternalHttp:r!==!1,openAppLink:Wr,openExternalHttp:qr})},o=[n,r],e[0]=n,e[1]=r,e[2]=i,e[3]=o):(i=e[2],o=e[3]),E.useEffect(i,o)},te={download:!0,copy:!0,showPanZoomControls:!0},Rt=!0,yr=t=>{const e=t.match(/^(?:\uFEFF)?(---|\+\+\+)[^\S\r\n]*\r?\n[\s\S]*?\r?\n\1[^\S\r\n]*(?:\r?\n|$)/);return e?t.slice(e[0].length):t},rt='[data-openchamber-file-link="true"]',_t="data-openchamber-block-path-token",xt=`[${_t}]`,J="data-openchamber-block-paths-scanned",Ar=2e5,vr=80,kr=40,ot=160,Er=()=>pt()?kr:vr,Cr=new Set(["dockerfile","makefile","readme","license",".env",".gitignore",".npmrc"]),Pt=t=>Lt(t),Sr=t=>cr(t),Lr=(t,e)=>on(t,e),Mr=t=>{const e=t.split("/").filter(Boolean).pop()??"";return!e||e.endsWith(".")?!1:/\.[A-Za-z0-9_-]{1,16}$/.test(e)},It=t=>{if(!t||t.startsWith("--")||t.includes("://")||/[<>]/.test(t)||/\s{2,}/.test(t))return!1;const e=Pt(t),n=e.split("/").filter(Boolean).pop()??e;if(!n||n==="."||n==="..")return!1;const r=n.toLowerCase();return Cr.has(r)||r.startsWith(".")&&r.length>1?!0:Mr(e)},Ft=t=>{const e=Mt(t);return e?It(e.path):!1},Nr=t=>{const e=t.querySelectorAll(xt);for(const r of Array.from(e))r.replaceWith(t.ownerDocument.createTextNode(r.textContent??""));const n=t.querySelectorAll(`code[${J}]`);for(const r of Array.from(n))r.removeAttribute(J),r.normalize()},_e=t=>{if(t.tagName.toLowerCase()==="a"){const e=t.getAttribute("href")?.trim(),n=e?dr(e):null;if(n)return n;if(e&&Ft(e))return e}return(t.textContent||"").trim()},Tr=t=>{const e=t.querySelectorAll("pre code");if(e.length===0)return;const n=t.ownerDocument;if(n)for(const r of Array.from(e)){if(r.getAttribute(J)==="true")continue;if((r.textContent??"").length>Ar){r.setAttribute(J,"true");continue}const i=n.createTreeWalker(r,NodeFilter.SHOW_TEXT),o=[];let s=i.nextNode();for(;s;){const u=s;u.parentElement?.closest("[data-md-code-line-number]")||o.push(u),s=i.nextNode()}const a=St(r);if(!a.includes(".")){r.setAttribute(J,"true");continue}Re.lastIndex=0;const l=[];let c=Re.exec(a);for(;c;){const u=c[0];u&&Ft(u)&&l.push({start:c.index,end:c.index+u.length,raw:u}),c=Re.exec(a)}for(const{start:u,end:f,raw:m}of l.reverse()){const g=Qe(o,u,"right"),y=Qe(o,f,"left");if(!g||!y)continue;const v=n.createRange();v.setStart(g.node,g.offset),v.setEnd(y.node,y.offset);const S=n.createElement("span");S.setAttribute(_t,"true"),S.textContent=m,v.deleteContents(),v.insertNode(S)}r.setAttribute(J,"true")}},xe=(t,e)=>{const n=Mt(t);if(!n||!It(n.path))return null;const r=Sr(n.path)?Pt(n.path):Lr(e,n.path);return r?{...n,resolvedPath:r}:null},Rr=(t,e)=>t||rn(t,e),Dt=({containerRef:t,effectiveDirectory:e,editor:n,preferRuntimeEditor:r,enabled:i})=>{const o=E.useRef(null);E.useEffect(()=>{const s=t.current;if(!s||i&&!e)return;let a=!1;const l=Er(),c=i&&!mn(),u=d=>{d.removeAttribute("data-openchamber-file-link"),d.removeAttribute("data-openchamber-file-ref"),d.removeAttribute("data-openchamber-file-path"),d.getAttribute("title")==="Open file"&&d.removeAttribute("title"),d.tagName.toLowerCase()!=="a"&&(d.removeAttribute("role"),d.removeAttribute("tabindex"))},f=()=>{const d=s.querySelectorAll(rt);for(const b of Array.from(d))u(b);Nr(s)};if(!c){f();return}const m=(d=0)=>{if(o.current!==null&&typeof window<"u"&&window.clearTimeout(o.current),typeof window>"u"){g();return}o.current=window.setTimeout(()=>{o.current=null,window.requestAnimationFrame(()=>{a||g()})},d)},g=()=>{h+=1;try{y()}finally{queueMicrotask(()=>{h-=1})}},y=()=>{c&&Tr(s);const d=s.querySelectorAll(`[data-markdown="inline-code"], a, ${xt}`);let b=0;for(const w of Array.from(d)){const A=_e(w),M=xe(A,e);if(u(w),!M||b>=l)continue;b+=1,(!nn(M.resolvedPath,e)?Promise.resolve(!0):gr(M.resolvedPath,e)).then(x=>{if(a||!x||!s.contains(w))return;const L=_e(w),T=xe(L,e);!T||T.resolvedPath!==M.resolvedPath||(w.setAttribute("data-openchamber-file-link","true"),w.setAttribute("data-openchamber-file-ref",L),w.setAttribute("data-openchamber-file-path",T.resolvedPath),w.setAttribute("title","Open file"),w.tagName.toLowerCase()!=="a"&&(w.setAttribute("role","button"),w.setAttribute("tabindex","0")))})}},v=async d=>{const b=d.getAttribute("data-openchamber-file-ref")||_e(d),w=xe(b,e);if(!w)return;const A=Rr(e,w.resolvedPath);if(r&&n){n.openFile(w.resolvedPath,Number.isFinite(w.line??Number.NaN)?Math.max(1,Math.trunc(w.line)):void 0,Number.isFinite(w.column??Number.NaN)?Math.max(1,Math.trunc(w.column)):void 0);return}const M=Y.getState();Number.isFinite(w.line??Number.NaN)?M.openContextFileAtLine(A,w.resolvedPath,Math.max(1,Math.trunc(w.line)),Number.isFinite(w.column??Number.NaN)?Math.max(1,Math.trunc(w.column)):1):M.openContextFile(A,w.resolvedPath)},S=d=>{const b=d.target;if(!(b instanceof Element))return;const w=b.closest(rt);w instanceof HTMLElement&&(d.preventDefault(),d.stopPropagation(),v(w))},p=d=>{if(d.key!=="Enter"&&d.key!==" ")return;const b=d.target;!(b instanceof HTMLElement)||b.getAttribute("data-openchamber-file-link")!=="true"||(d.preventDefault(),d.stopPropagation(),v(b))};m(ot);let h=0;const k=new MutationObserver(()=>{h>0||m(ot)});return k.observe(s,{childList:!0,subtree:!0}),s.addEventListener("click",S),s.addEventListener("keydown",p),()=>{a=!0,o.current!==null&&typeof window<"u"&&window.clearTimeout(o.current),o.current=null,k.disconnect(),s.removeEventListener("click",S),s.removeEventListener("keydown",p)}},[t,n,e,r,i])},Ot=t=>{const e=ae.c(7),{containerRef:n,onShowPopup:r,enableFullscreen:i,enablePanZoom:o,allowMermaidWheelEvents:s}=t;let a,l;e[0]!==s||e[1]!==n||e[2]!==i||e[3]!==o||e[4]!==r?(a=()=>{const c=n.current;if(!c)return;const u=m=>{if(!i||!r)return;const g=m.target;if(!(g instanceof Element)||g.closest('button, a, [role="button"]'))return;const y=g.closest(ie);if(!y)return;if(y instanceof HTMLElement&&y.hasAttribute("data-mermaid-suppress-click")){y.removeAttribute("data-mermaid-suppress-click");return}const S=Array.from(c.querySelectorAll(ie)).indexOf(y);if(S<0)return;const p=y instanceof HTMLElement?y.getAttribute("data-md-source"):null;if(!p||p.trim().length===0)return;const h=`Diagram ${S+1}`;r({open:!0,title:h,content:"",metadata:{tool:"mermaid-preview",filename:h},mermaid:{url:`data:text/plain;charset=utf-8,${encodeURIComponent(p)}`,source:p,filename:h}})},f=m=>{if(s||(m.ctrlKey||m.metaKey)&&o)return;const g=m.target;!(g instanceof Element)||!g.closest(ie)||m.stopPropagation()};return c.addEventListener("click",u),c.addEventListener("wheel",f,{capture:!0,passive:!0}),()=>{c.removeEventListener("click",u),c.removeEventListener("wheel",f,!0)}},l=[s,n,i,o,r],e[0]=s,e[1]=n,e[2]=i,e[3]=o,e[4]=r,e[5]=a,e[6]=l):(a=e[5],l=e[6]),E.useEffect(a,l)},H=new Map,_r=100,V="data-md-decoration-id",xr=(t,e,n)=>{const r=t.children;if(r.length!==e.length)return!1;for(let i=0;i<e.length;i+=1){const o=r[i];if(!o||o.getAttribute("data-md-id")!==e[i]?.id||o.getAttribute(V)!==n)return!1}return!0},it=new WeakMap;let st=0;const Pr=2e5,Pe=t=>{const e=it.get(t);if(e)return e;const n=`decoration-${st}`;return st+=1,it.set(t,n),n},Ir=(t,e)=>{const n=H.get(t);if(n)return H.delete(t),H.set(t,n),n;const r=e();if(H.set(t,r),H.size>_r){const i=H.keys().next().value;i&&H.delete(i)}return r},Fr=t=>({bg:t.colors.surface.elevated,fg:t.colors.surface.foreground,line:t.colors.interactive.border,accent:t.colors.primary.base,muted:t.colors.surface.mutedForeground,surface:t.colors.surface.muted,border:t.colors.interactive.border,transparent:!0,font:"system-ui, sans-serif"}),Wt=(t,e,n,r=te)=>{const{t:i}=ut(),o=E.useMemo(()=>({copy:i("markdownRenderer.code.actions.copyTitle"),copied:i("markdownRenderer.code.actions.copiedTitle"),enableCodeWrap:i("markdownRenderer.code.actions.enableWrapTitle"),disableCodeWrap:i("markdownRenderer.code.actions.disableWrapTitle"),copyTable:i("markdownRenderer.table.actions.copyTitle"),downloadTable:i("markdownRenderer.table.actions.downloadTitle"),copyDiagram:i("markdownRenderer.mermaid.actions.copySourceTitle"),downloadDiagram:i("markdownRenderer.mermaid.actions.downloadSvgTitle"),zoomInDiagram:i("markdownRenderer.mermaid.actions.zoomInTitle"),zoomOutDiagram:i("markdownRenderer.mermaid.actions.zoomOutTitle"),resetDiagramView:i("markdownRenderer.mermaid.actions.resetViewTitle"),previewLabel:i("terminalView.preview.open"),previewTitle:i("terminalView.preview.openTitle")}),[i]),s=Y(c=>c.codeBlockLineWrap),a=Y(c=>c.setCodeBlockLineWrap),l=E.useCallback(()=>{a(!Y.getState().codeBlockLineWrap)},[a]);return E.useMemo(()=>{const c=Fr(t),u=Y.getState().mermaidRenderingMode,f=t.metadata?.id??"theme";return{labels:o,mermaidControls:r,codeBlockLineWrap:s,deferCodeLineNumberSync:e,onToggleCodeBlockLineWrap:l,renderMermaid:g=>Ir(`${f}:${u}:${g}`,()=>{try{return u==="ascii"?{ascii:Ht(g)}:{svg:Vt(g,c)}}catch{return{}}}),onPreviewLoopback:n}},[t,o,r,s,e,l,n])},qt=({containerRef:t,text:e,streaming:n,imageMode:r="inline",syntaxVars:i,ctx:o,domCacheKey:s,tableLayoutSettled:a})=>{E.useEffect(()=>{vn()},[]);const l=E.useRef(null),c=E.useRef(0),u=E.useRef(null),f=E.useContext(tn),m=E.useRef(null),g=E.useCallback(()=>{m.current?.(),m.current=null},[]);E.useEffect(()=>g,[g]);const y=E.useRef(null),v=E.useCallback(()=>{const p=t.current;if(p){if(!l.current){if(!F(p))return;l.current=Kn(p);return}l.current.refresh()}},[t]),S=E.useCallback(()=>{if(!a)return;const p=u.current;p!==null&&window.cancelAnimationFrame(p);const h=c.current,k=window.requestAnimationFrame(()=>{if(u.current!==k||(u.current=null,c.current!==h))return;const d=t.current,b=d?.querySelector("[data-markdown-content]")??d;b&&nr(b)});u.current=k},[t,a]);E.useEffect(()=>()=>{const p=u.current;p!==null&&(window.cancelAnimationFrame(p),u.current=null)},[]),E.useLayoutEffect(()=>{c.current+=1,y.current=null},[o,r,n,e]),E.useLayoutEffect(()=>{if(!s)return;const p=t.current,h=p?.querySelector("[data-markdown-content]")??p;if(!h||h.childNodes.length>0)return;const k=nt.take(s);if(k){h.appendChild(k);const d=Pe(o);for(const b of Array.from(h.children))b.setAttribute(V,d);for(const[b,w]of Object.entries(i))h.style.setProperty(b,w);Ke(h,o.codeBlockLineWrap,o.labels),y.current={key:s,copiedLabel:o.labels.copied},oe("ui.markdown_renderer.dom_cache.hit")}},[t,o,s,i,e.length]),E.useLayoutEffect(()=>{const p=t.current,h=p?.querySelector("[data-markdown-content]")??p;if(h)return()=>{const k=y.current;if(!k||h.childNodes.length===0||F(h)||Array.from(h.children).some(M=>!M.hasAttribute("data-md-id"))||h.querySelector("[data-md-copy-pending]"))return;const d=window.getSelection();if(d?.rangeCount&&!d.isCollapsed&&d.getRangeAt(0).intersectsNode(h))return;const b=h.querySelector("[data-md-menu]:not(.hidden)"),w=Array.from(h.querySelectorAll("[data-md-action]")).some(M=>M.getAttribute("title")===k.copiedLabel);if(b||w)return;const A=document.createDocumentFragment();A.append(...Array.from(h.childNodes)),nt.store({...k.key,fragment:A}),oe("ui.markdown_renderer.dom_cache.capture")}},[t]),E.useLayoutEffect(()=>{const p=t.current,h=p?.querySelector("[data-markdown-content]")??p;if(!h)return;const k=Pe(o);if(e&&h.childNodes.length===0){const d=n?null:Be(e,r);if(d){let b=!1;for(const w of d){const A=document.createElement("div");A.setAttribute("data-md-block",""),A.style.display="contents",A.innerHTML=w.html,pe(A,o),A.setAttribute("data-md-id",w.id),A.setAttribute(V,k),b||=F(A),h.appendChild(A)}b&&v()}else{!n&&!m.current&&(m.current=f?.hold()??null);const b=document.createElement("div");b.setAttribute("data-md-block",""),b.style.display="contents",b.innerHTML=pn(e,r),pe(b,o),b.setAttribute(V,k),h.appendChild(b),F(b)&&v()}}else!l.current&&F(h)&&v()},[t,e,n,r,o,v,f]),E.useEffect(()=>()=>{l.current?.cleanup(),l.current=null},[]),E.useEffect(()=>{const p=t.current;if(!p)return;const h=p.querySelector("[data-markdown-content]")??p;let k=!0;const d=c.current,b=Pe(o);if(!n){const w=Be(e,r);if(w&&xr(h,w,b)){y.current=s?{key:s,copiedLabel:o.labels.copied}:null,oe("ui.markdown_renderer.settled_paint.reused"),S(),g();return}}return fn(e,n,r).then(w=>{if(!k||c.current!==d)return;const A=Array.from(h.children),M=Array.from(h.querySelectorAll("details[data-md-details]")).map(L=>({summary:L.querySelector("summary")?.textContent,open:L.open}));let D=0;w.forEach((L,T)=>{let C=A[T],P=!1;if(C||(C=document.createElement("div"),C.setAttribute("data-md-block",""),C.style.display="contents",h.appendChild(C),P=!0),C.getAttribute("data-md-id")===L.id){if(C.getAttribute(V)!==b){const I=F(C);I&&(l.current?.cleanup(),l.current=null);const N=document.createElement("div");N.setAttribute("data-md-block",""),N.style.display="contents",N.innerHTML=L.html,pe(N,o),N.setAttribute("data-md-id",L.id),N.setAttribute(V,b),C.replaceWith(N),(I||F(N))&&v()}!l.current&&F(C)&&v();return}const _=document.createElement("div");if(_.innerHTML=L.html,pe(_,o),P&&n&&T>0){const I=Math.min(D,4)*55;D+=1;for(const N of Array.from(_.children))N.classList.add("oc-md-block-enter"),I>0&&N instanceof HTMLElement&&N.style.setProperty("--oc-md-enter-delay",`${I}ms`)}const O=F(C),W=F(_);zt(C,_,{childrenOnly:!0,onBeforeElUpdated:(I,N)=>(I.matches("details[data-md-details]")&&N.matches("details[data-md-details]")&&I.querySelector("summary")?.textContent===N.querySelector("summary")?.textContent&&N.toggleAttribute("open",I.hasAttribute("open")),!I.isEqualNode(N))}),C.setAttribute("data-md-id",L.id),C.setAttribute(V,b),(O||W||F(C))&&v()});const $=F(h);let x=!1;for(let L=A.length-1;L>=w.length;L-=1){const T=A[L];T&&F(T)&&(x=!0),T?.remove()}(x||A.length>w.length&&$)&&v(),M.length>0&&h.querySelectorAll("details[data-md-details]").forEach((L,T)=>{const C=M[T];C&&C.summary===L.querySelector("summary")?.textContent&&(L.open=C.open)}),y.current=s?{key:s,copiedLabel:o.labels.copied}:null,S(),g()}),()=>{k=!1}},[t,o,s,r,v,g,S,n,e]),E.useEffect(()=>{const p=t.current;if(p)return ar(p,o)},[t,o]),E.useEffect(()=>{const p=t.current,h=p?.querySelector("[data-markdown-content]")??p;if(h)for(const[k,d]of Object.entries(i))h.style.setProperty(k,d)},[t,i]),E.useEffect(()=>{const p=t.current,h=p?.querySelector("[data-markdown-content]")??p;h&&(o.deferCodeLineNumberSync||Ke(h,o.codeBlockLineWrap,o.labels))},[t,o.codeBlockLineWrap,o.deferCodeLineNumberSync,o.labels])},Bt=t=>t==="tool"?"markdown-content markdown-tool":t==="reasoning"?"markdown-content markdown-reasoning":"markdown-content leading-relaxed",Dr=t=>{const e=ae.c(40),{content:n,part:r,messageId:i,isAnimated:o,skipFadeIn:s,className:a,isStreaming:l,disableStreamAnimation:c,variant:u,onShowPopup:f,enableFileReferences:m}=t,g=o===void 0?!0:o,y=s===void 0?!1:s,v=l===void 0?!1:l,S=c===void 0?!1:c,p=u===void 0?"assistant":u,h=m===void 0?!0:m;oe("ui.markdown_renderer.render"),v&&oe("ui.markdown_renderer.render.streaming"),dn("ui.markdown_renderer.content_len",n.length);const k=Nt(),{editor:d,runtime:b}=lt(),w=E.useRef(null),A=ct()??"",M=Y(Br);let D;e[0]!==A||e[1]!==M?(D=q=>{A&&M(A,q)},e[0]=A,e[1]=M,e[2]=D):D=e[2];const $=D,x=v&&!S;let L;e[3]!==f?(L={containerRef:w,onShowPopup:f,enableFullscreen:Rt,enablePanZoom:te.showPanZoomControls},e[3]=f,e[4]=L):L=e[4],Ot(L);const T=h&&!v;let C;e[5]!==d||e[6]!==A||e[7]!==b.isVSCode||e[8]!==T?(C={containerRef:w,effectiveDirectory:A,editor:d,preferRuntimeEditor:b.isVSCode,enabled:T},e[5]=d,e[6]=A,e[7]=b.isVSCode,e[8]=T,e[9]=C):C=e[9],Dt(C);let P;e[10]===Symbol.for("react.memo_cache_sentinel")?(P={containerRef:w},e[10]=P):P=e[10],Tt(P);let _;e[11]!==k?(_=dt(k),e[11]=k,e[12]=_):_=e[12];const O=_,W=Wt(k,x,A?$:void 0,te),{locale:I}=ut(),N=p==="assistant"?"label":"inline",ke=r&&(r.type==="text"||r.type==="reasoning")&&r.time?.end!==void 0?r:null;let le;e[13]===Symbol.for("react.memo_cache_sentinel")?(le=un(),e[13]=le):le=e[13];const $t=le,De=ke?.sessionID,Oe=ke?.messageID,We=ke?.id;let Ee;e:{if(v||!De||!Oe||!We||n.length===0||n.length>Pr){Ee=null;break e}const q=`${$t}\0${De}`,Me=`${Oe}\0${We}\0${N}\0${n.length}`;let me;e[14]!==A||e[15]!==I||e[16]!==q||e[17]!==Me?(me={scope:q,id:Me,locale:I,directory:A},e[14]=A,e[15]=I,e[16]=q,e[17]=Me,e[18]=me):me=e[18],Ee=me}const Ce=Ee,Se=`markdown-${r?.id?`part-${r.id}`:`message-${i}`}`,Le=!v;let ce;e[19]!==n||e[20]!==W||e[21]!==Ce||e[22]!==N||e[23]!==x||e[24]!==O||e[25]!==Le?(ce={containerRef:w,text:n,streaming:x,imageMode:N,syntaxVars:O,ctx:W,domCacheKey:Ce,tableLayoutSettled:Le},e[19]=n,e[20]=W,e[21]=Ce,e[22]=N,e[23]=x,e[24]=O,e[25]=Le,e[26]=ce):ce=e[26],qt(ce);let j;e[27]!==a?(j=mt("break-words w-full min-w-0",a),e[27]=a,e[28]=j):j=e[28];let X;e[29]!==p?(X=Bt(p),e[29]=p,e[30]=X):X=e[30];let Z;e[31]!==X?(Z=re.jsx("div",{className:X,"data-markdown-content":!0}),e[31]=X,e[32]=Z):Z=e[32];let de;e[33]!==j||e[34]!==Z?(de=re.jsx("div",{className:j,ref:w,children:Z}),e[33]=j,e[34]=Z,e[35]=de):de=e[35];const ue=de;if(g){let q;return e[36]!==Se||e[37]!==ue||e[38]!==y?(q=re.jsx(sn,{skipAnimation:y,children:ue},Se),e[36]=Se,e[37]=ue,e[38]=y,e[39]=q):q=e[39],q}return ue},Vi=E.memo(Dr,(t,e)=>t.content===e.content&&t.isStreaming===e.isStreaming&&t.disableStreamAnimation===e.disableStreamAnimation&&t.variant===e.variant&&t.isAnimated===e.isAnimated&&t.skipFadeIn===e.skipFadeIn&&t.className===e.className&&t.messageId===e.messageId&&t.onShowPopup===e.onShowPopup&&t.enableFileReferences===e.enableFileReferences&&t.part?.id===e.part?.id),Or=t=>{const e=ae.c(29),{content:n,className:r,variant:i,disableLinkSafety:o,stripFrontmatter:s,onShowPopup:a,mermaidControls:l,allowMermaidWheelEvents:c,enableFileReferences:u}=t,f=i===void 0?"assistant":i,m=s===void 0?!1:s,g=l===void 0?te:l,y=c===void 0?!1:c,v=u===void 0?!0:u,{editor:S,runtime:p}=lt(),h=Nt(),k=E.useRef(null),d=ct()??"";let b;e[0]!==n||e[1]!==m?(b=m?yr(n):n,e[0]=n,e[1]=m,e[2]=b):b=e[2];const w=b;let A;e[3]!==y||e[4]!==g.showPanZoomControls||e[5]!==a?(A={containerRef:k,onShowPopup:a,enableFullscreen:Rt,enablePanZoom:g.showPanZoomControls,allowMermaidWheelEvents:y},e[3]=y,e[4]=g.showPanZoomControls,e[5]=a,e[6]=A):A=e[6],Ot(A);let M;e[7]!==S||e[8]!==d||e[9]!==v||e[10]!==p.isVSCode?(M={containerRef:k,effectiveDirectory:d,editor:S,preferRuntimeEditor:p.isVSCode,enabled:v},e[7]=S,e[8]=d,e[9]=v,e[10]=p.isVSCode,e[11]=M):M=e[11],Dt(M);const D=!o;let $;e[12]!==D?($={containerRef:k,enabled:D},e[12]=D,e[13]=$):$=e[13],Tt($);let x;e[14]!==h?(x=dt(h),e[14]=h,e[15]=x):x=e[15];const L=x,T=Wt(h,!1,void 0,g);let C;e[16]!==T||e[17]!==w||e[18]!==L?(C={containerRef:k,text:w,streaming:!1,syntaxVars:L,ctx:T,tableLayoutSettled:!0},e[16]=T,e[17]=w,e[18]=L,e[19]=C):C=e[19],qt(C);let P;e[20]!==r?(P=mt("break-words w-full min-w-0",r),e[20]=r,e[21]=P):P=e[21];let _;e[22]!==f?(_=Bt(f),e[22]=f,e[23]=_):_=e[23];let O;e[24]!==_?(O=re.jsx("div",{className:_,"data-markdown-content":!0}),e[24]=_,e[25]=O):O=e[25];let W;return e[26]!==P||e[27]!==O?(W=re.jsx("div",{className:P,ref:k,children:O}),e[26]=P,e[27]=O,e[28]=W):W=e[28],W},Ki=E.memo(Or,(t,e)=>{const n=t.mermaidControls??te,r=e.mermaidControls??te;return t.content===e.content&&t.variant===e.variant&&t.className===e.className&&t.disableLinkSafety===e.disableLinkSafety&&t.stripFrontmatter===e.stripFrontmatter&&t.onShowPopup===e.onShowPopup&&n.download===r.download&&n.copy===r.copy&&n.showPanZoomControls===r.showPanZoomControls&&t.allowMermaidWheelEvents===e.allowMermaidWheelEvents&&t.enableFileReferences===e.enableFileReferences});function Wr(t){an(t)}function qr(t){ln(t)}function Br(t){return t.openContextPreview}export{Vi as MarkdownRenderer,Ki as SimpleMarkdownRenderer};
|