@pi-chamber/web 0.1.8
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 +43 -0
- package/bin/cli-entry.js +55 -0
- package/bin/cli-output.js +140 -0
- package/bin/cli-output.test.js +36 -0
- package/bin/cli.js +383 -0
- package/bin/cli.test.js +1065 -0
- package/bin/lib/DOCUMENTATION.md +31 -0
- package/bin/lib/cli-api-target.js +74 -0
- package/bin/lib/cli-args.js +846 -0
- package/bin/lib/cli-errors.js +18 -0
- package/bin/lib/cli-http.js +252 -0
- package/bin/lib/cli-lifecycle.js +421 -0
- package/bin/lib/cli-log-files.js +93 -0
- package/bin/lib/cli-network.js +186 -0
- package/bin/lib/cli-paths.js +128 -0
- package/bin/lib/cli-ports.js +51 -0
- package/bin/lib/cli-process.js +342 -0
- package/bin/lib/cli-startup.js +371 -0
- package/bin/lib/cli-tunnel-capabilities.js +9 -0
- package/bin/lib/cli-tunnel-profiles.js +366 -0
- package/bin/lib/cli-tunnel-utils.js +300 -0
- package/bin/lib/commands-connect-url.js +329 -0
- package/bin/lib/commands-lifecycle.js +396 -0
- package/bin/lib/commands-logs.js +110 -0
- package/bin/lib/commands-serve.js +419 -0
- package/bin/lib/commands-startup.js +64 -0
- package/bin/lib/commands-status.js +114 -0
- package/bin/lib/commands-tunnel.js +1761 -0
- package/bin/lib/commands-update.js +184 -0
- package/bin/lib/commands-update.test.js +98 -0
- package/dist/apple-touch-icon-120x120.png +0 -0
- package/dist/apple-touch-icon-152x152.png +0 -0
- package/dist/apple-touch-icon-167x167.png +0 -0
- package/dist/apple-touch-icon-180x180.png +0 -0
- package/dist/apple-touch-icon.png +0 -0
- package/dist/apple-touch-icon.svg +13 -0
- package/dist/assets/CommitSection-DGGArAb2.js +1 -0
- package/dist/assets/DiagramEditor-ig5nYV6t.js +1 -0
- package/dist/assets/DiagramView-8Qr6pwwI.js +1 -0
- package/dist/assets/DiffView-BHS4m_K7.js +18 -0
- package/dist/assets/FilesView-DmZcdwl-.js +14 -0
- package/dist/assets/GitView-gfHxmc66.js +6 -0
- package/dist/assets/JsonTreeView-DbFqka3P.js +1 -0
- package/dist/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
- package/dist/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
- package/dist/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
- package/dist/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
- package/dist/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
- package/dist/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
- package/dist/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
- package/dist/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
- package/dist/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
- package/dist/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
- package/dist/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
- package/dist/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
- package/dist/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
- package/dist/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
- package/dist/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
- package/dist/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
- package/dist/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
- package/dist/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
- package/dist/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
- package/dist/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
- package/dist/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
- package/dist/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
- package/dist/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
- package/dist/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
- package/dist/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
- package/dist/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
- package/dist/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
- package/dist/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
- package/dist/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
- package/dist/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
- package/dist/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
- package/dist/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
- package/dist/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
- package/dist/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
- package/dist/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
- package/dist/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
- package/dist/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
- package/dist/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
- package/dist/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
- package/dist/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
- package/dist/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
- package/dist/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
- package/dist/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
- package/dist/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
- package/dist/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
- package/dist/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
- package/dist/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
- package/dist/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
- package/dist/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
- package/dist/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
- package/dist/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
- package/dist/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
- package/dist/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
- package/dist/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
- package/dist/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
- package/dist/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
- package/dist/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
- package/dist/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
- package/dist/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
- package/dist/assets/MarkdownRendererImpl-B07lHhBl.js +12 -0
- package/dist/assets/PatchDiff-DD9pAs47.js +1 -0
- package/dist/assets/PierreDiffViewer-Bo0_BCT7.js +136 -0
- package/dist/assets/SessionSwitcherDropdown-t7WZX24f.js +1 -0
- package/dist/assets/SettingsView-CtsS4oDI.js +3 -0
- package/dist/assets/SettingsWindow-DIRGn3eQ.js +1 -0
- package/dist/assets/TerminalView-BV3KOtdA.css +1 -0
- package/dist/assets/TerminalView-DUwO1CCY.js +46 -0
- package/dist/assets/ToolOutputDialog-iZG2ey4T.js +15 -0
- package/dist/assets/ToolPartDiffPreview-FTexlZSz.js +8 -0
- package/dist/assets/VirtualizedFileDiff-DD5IznIe.js +10 -0
- package/dist/assets/Virtualizer-BxW2CJGB.js +1 -0
- package/dist/assets/abap-BdImnpbu.js +1 -0
- package/dist/assets/abap-Dg923wIy.js +1 -0
- package/dist/assets/actionscript-3-8WTK4YD2.js +1 -0
- package/dist/assets/actionscript-3-CoDkCxhg.js +1 -0
- package/dist/assets/ada-CTi7YQtL.js +1 -0
- package/dist/assets/ada-bCR0ucgS.js +1 -0
- package/dist/assets/andromeeda-C4gqWexZ.js +1 -0
- package/dist/assets/andromeeda-CT0vplkN.js +1 -0
- package/dist/assets/angular-html-CU67Zn6k.js +1 -0
- package/dist/assets/angular-html-D2R1pe45.js +1 -0
- package/dist/assets/angular-ts-BDmYQnhm.js +1 -0
- package/dist/assets/angular-ts-BwZT4LLn.js +1 -0
- package/dist/assets/apache-PcO-DBxQ.js +1 -0
- package/dist/assets/apache-Pmp26Uib.js +1 -0
- package/dist/assets/apex-CnCu5_gb.js +1 -0
- package/dist/assets/apex-D8_7TLub.js +1 -0
- package/dist/assets/apl-B4CMkyY2.js +1 -0
- package/dist/assets/apl-DkfyvC6M.js +1 -0
- package/dist/assets/apl-dKokRX4l.js +1 -0
- package/dist/assets/appThemeRegistry-BK0dHKa6.js +1 -0
- package/dist/assets/applescript-Co6uUVPk.js +1 -0
- package/dist/assets/applescript-Ds_W2jPS.js +1 -0
- package/dist/assets/ara-BRHolxvo.js +1 -0
- package/dist/assets/ara-C1--7J61.js +1 -0
- package/dist/assets/asciiarmor-Df11BRmG.js +1 -0
- package/dist/assets/asciidoc-Ve4PFQV2.js +1 -0
- package/dist/assets/asciidoc-nTfEFGxb.js +1 -0
- package/dist/assets/asm-CTFRnVOM.js +1 -0
- package/dist/assets/asm-D_Q5rh1f.js +1 -0
- package/dist/assets/asn1-EdZsLKOL.js +1 -0
- package/dist/assets/asterisk-B-8jnY81.js +1 -0
- package/dist/assets/astro-CbQHKStN.js +1 -0
- package/dist/assets/astro-DtPAdMss.js +1 -0
- package/dist/assets/aurora-x-C0VKFdlO.js +1 -0
- package/dist/assets/aurora-x-D-2ljcwZ.js +1 -0
- package/dist/assets/awk-CrWgQKhV.js +1 -0
- package/dist/assets/awk-DMzUqQB5.js +1 -0
- package/dist/assets/ayu-dark-DYE7WIF3.js +1 -0
- package/dist/assets/ayu-dark-wZ6ORhBL.js +1 -0
- package/dist/assets/ayu-light-BA47KaF1.js +1 -0
- package/dist/assets/ayu-light-xXLJ_Ch1.js +1 -0
- package/dist/assets/ayu-mirage-32ctXXKs.js +1 -0
- package/dist/assets/ayu-mirage-CQckA_sP.js +1 -0
- package/dist/assets/ballerina-BFfxhgS-.js +1 -0
- package/dist/assets/ballerina-a0yOSyc5.js +1 -0
- package/dist/assets/bat-B0cHNp6s.js +1 -0
- package/dist/assets/bat-BkioyH1T.js +1 -0
- package/dist/assets/beancount-dPJi_gci.js +1 -0
- package/dist/assets/beancount-k_qm7-4y.js +1 -0
- package/dist/assets/berry-CVKoklHx.js +1 -0
- package/dist/assets/berry-uYugtg8r.js +1 -0
- package/dist/assets/bibtex-CHM0blh-.js +1 -0
- package/dist/assets/bibtex-DRcCXNgM.js +1 -0
- package/dist/assets/bicep-Bmn6On1c.js +1 -0
- package/dist/assets/bicep-jWz-hQ8I.js +1 -0
- package/dist/assets/bird2-DPOp833l.js +1 -0
- package/dist/assets/bird2-DaGXIRGu.js +1 -0
- package/dist/assets/blade-D4QpJJKB.js +1 -0
- package/dist/assets/blade-QlWdzBxO.js +1 -0
- package/dist/assets/brainfuck-C4LP7Hcl.js +1 -0
- package/dist/assets/bsl-BO_Y6i37.js +1 -0
- package/dist/assets/bsl-jNujDQK2.js +1 -0
- package/dist/assets/c-BG-tZi7o.js +1 -0
- package/dist/assets/c-BIGW1oBm.js +1 -0
- package/dist/assets/c3-Fcb8_HKm.js +1 -0
- package/dist/assets/c3-eo99z4R2.js +1 -0
- package/dist/assets/cadence-BuaeHeSu.js +1 -0
- package/dist/assets/cadence-Bv_4Rxtq.js +1 -0
- package/dist/assets/cairo-BYiDgOF2.js +1 -0
- package/dist/assets/cairo-KRGpt6FW.js +1 -0
- package/dist/assets/catppuccin-frappe-CfssSZMA.js +1 -0
- package/dist/assets/catppuccin-frappe-DFWUc33u.js +1 -0
- package/dist/assets/catppuccin-latte-C9dUb6Cb.js +1 -0
- package/dist/assets/catppuccin-latte-DoBaWTGn.js +1 -0
- package/dist/assets/catppuccin-macchiato-BkAuvdZC.js +1 -0
- package/dist/assets/catppuccin-macchiato-DQyhUUbL.js +1 -0
- package/dist/assets/catppuccin-mocha-D87Tk5Gz.js +1 -0
- package/dist/assets/catppuccin-mocha-D9fcC0iT.js +1 -0
- package/dist/assets/clarity-CC_0IFDj.js +1 -0
- package/dist/assets/clarity-D53aC0YG.js +1 -0
- package/dist/assets/clike-B9uivgTg.js +1 -0
- package/dist/assets/clojure-BMjYHr_A.js +1 -0
- package/dist/assets/clojure-KnfDkB_V.js +1 -0
- package/dist/assets/clojure-P80f7IUj.js +1 -0
- package/dist/assets/cmake-BQqOBYOt.js +1 -0
- package/dist/assets/cmake-D1j8_8rp.js +1 -0
- package/dist/assets/cmake-bh2MLnkv.js +1 -0
- package/dist/assets/cobol-CWcv1MsR.js +1 -0
- package/dist/assets/cobol-dIXRVV9Y.js +1 -0
- package/dist/assets/cobol-nwyudZeR.js +1 -0
- package/dist/assets/codeowners-Bp6g37R7.js +1 -0
- package/dist/assets/codeowners-CtwIM3TN.js +1 -0
- package/dist/assets/codeql-D164juXQ.js +1 -0
- package/dist/assets/codeql-DsOJ9woJ.js +1 -0
- package/dist/assets/coffee-Bk-z6oI_.js +1 -0
- package/dist/assets/coffee-Ch7k5sss.js +1 -0
- package/dist/assets/coffeescript-S37ZYGWr.js +1 -0
- package/dist/assets/collapsible-ODWWxk4f.js +1 -0
- package/dist/assets/common-lisp-Cg-RD9OK.js +1 -0
- package/dist/assets/common-lisp-DXc9XcIM.js +1 -0
- package/dist/assets/commonlisp-DBKNyK5s.js +1 -0
- package/dist/assets/computeVirtualFileMetrics-DdXkLFAD.js +3 -0
- package/dist/assets/contextFileOpenGuard-uC4OerzL.js +1 -0
- package/dist/assets/coq-BBL5-mG4.js +1 -0
- package/dist/assets/coq-DkFqJrB1.js +1 -0
- package/dist/assets/cpp-C0lzDePx.js +1 -0
- package/dist/assets/cpp-CofmeUqb.js +1 -0
- package/dist/assets/crystal-Bhade0k2.js +1 -0
- package/dist/assets/crystal-SjHAIU92.js +1 -0
- package/dist/assets/crystal-tKQVLTB8.js +1 -0
- package/dist/assets/csharp-B7nLXyi8.js +1 -0
- package/dist/assets/csharp-COcwbKMJ.js +1 -0
- package/dist/assets/css-BnMrqG3P.js +1 -0
- package/dist/assets/css-DPfMkruS.js +1 -0
- package/dist/assets/css-PZBBrkI0.js +1 -0
- package/dist/assets/csv-D5aBhKLr.js +1 -0
- package/dist/assets/csv-fuZLfV_i.js +1 -0
- package/dist/assets/cue-D82EKSYY.js +1 -0
- package/dist/assets/cue-WCin6O4e.js +1 -0
- package/dist/assets/cypher-COkxafJQ.js +1 -0
- package/dist/assets/cypher-C_CwsFkJ.js +1 -0
- package/dist/assets/cypher-DYQk2G82.js +1 -0
- package/dist/assets/d-85-TOEBH.js +1 -0
- package/dist/assets/d-DVc-yF-l.js +1 -0
- package/dist/assets/d-pRatUO7H.js +1 -0
- package/dist/assets/dark-plus-C3mMm8J8.js +1 -0
- package/dist/assets/dark-plus-DLU5INA3.js +1 -0
- package/dist/assets/dart-CF10PKvl.js +1 -0
- package/dist/assets/dart-YLd5yyRs.js +1 -0
- package/dist/assets/dax-CEL-wOlO.js +1 -0
- package/dist/assets/dax-oldcCaJg.js +1 -0
- package/dist/assets/desktop-BmXAJ9_W.js +1 -0
- package/dist/assets/desktop-DZfyBMgF.js +1 -0
- package/dist/assets/diff-D97Zzqfu.js +1 -0
- package/dist/assets/diff-DbItnlRl.js +1 -0
- package/dist/assets/diff-jW5kmiru.js +1 -0
- package/dist/assets/docker-BcOcwvcX.js +1 -0
- package/dist/assets/docker-DG9neUKd.js +1 -0
- package/dist/assets/dockerfile-BKs6k2Af.js +1 -0
- package/dist/assets/document-attachments-BslE4Ns7.js +30 -0
- package/dist/assets/dotenv-Bea-FkXq.js +1 -0
- package/dist/assets/dotenv-Da5cRb03.js +1 -0
- package/dist/assets/dracula-BzJJZx-M.js +1 -0
- package/dist/assets/dracula-XcYHBZy6.js +1 -0
- package/dist/assets/dracula-soft-BPeX9gxW.js +1 -0
- package/dist/assets/dracula-soft-BXkSAIEj.js +1 -0
- package/dist/assets/dream-maker-BtqSS_iP.js +1 -0
- package/dist/assets/dream-maker-DAHQwpwp.js +1 -0
- package/dist/assets/dtd-DF_7sFjM.js +1 -0
- package/dist/assets/dylan-DwRh75JA.js +1 -0
- package/dist/assets/ebnf-CDyGwa7X.js +1 -0
- package/dist/assets/ecl-Cabwm37j.js +1 -0
- package/dist/assets/edge-BkV0erSs.js +1 -0
- package/dist/assets/edge-zt3dU95k.js +1 -0
- package/dist/assets/eiffel-CnydiIhH.js +1 -0
- package/dist/assets/elixir-CDX3lj18.js +1 -0
- package/dist/assets/elixir-JolcG37e.js +1 -0
- package/dist/assets/elm-BjIDgKzz.js +1 -0
- package/dist/assets/elm-DbKCFpqz.js +1 -0
- package/dist/assets/elm-vLlmbW-K.js +1 -0
- package/dist/assets/emacs-lisp-C9XAeP06.js +1 -0
- package/dist/assets/emacs-lisp-DMBh55R4.js +1 -0
- package/dist/assets/erb-B12qg9BL.js +1 -0
- package/dist/assets/erb-rsjdL4fB.js +1 -0
- package/dist/assets/erlang-BNw1qcRV.js +1 -0
- package/dist/assets/erlang-DNeY46SW.js +1 -0
- package/dist/assets/erlang-DsQrWhSR.js +1 -0
- package/dist/assets/everforest-dark-BgDCqdQA.js +1 -0
- package/dist/assets/everforest-dark-WOub3wle.js +1 -0
- package/dist/assets/everforest-light-C8M2exoo.js +1 -0
- package/dist/assets/everforest-light-DCUg8VH8.js +1 -0
- package/dist/assets/factor-kuTfRLto.js +1 -0
- package/dist/assets/fcl-Kvtd6kyn.js +1 -0
- package/dist/assets/fennel-BYunw83y.js +1 -0
- package/dist/assets/fennel-DBMsxtrh.js +1 -0
- package/dist/assets/fish-BvzEVeQv.js +1 -0
- package/dist/assets/fish-BxskpYPN.js +1 -0
- package/dist/assets/fluent-Bwo2XpEt.js +1 -0
- package/dist/assets/fluent-C4IJs8-o.js +1 -0
- package/dist/assets/forth-Ffai-XNe.js +1 -0
- package/dist/assets/fortran-DYz_wnZ1.js +1 -0
- package/dist/assets/fortran-fixed-form-CkoXwp7k.js +1 -0
- package/dist/assets/fortran-fixed-form-DFFnVrrY.js +1 -0
- package/dist/assets/fortran-free-form-BxgE0vQu.js +1 -0
- package/dist/assets/fortran-free-form-DB5N_DgY.js +1 -0
- package/dist/assets/fsharp-CXgrBDvD.js +1 -0
- package/dist/assets/fsharp-DRAF1jsN.js +1 -0
- package/dist/assets/gas-Bneqetm1.js +1 -0
- package/dist/assets/gdresource-BD-1uzY7.js +1 -0
- package/dist/assets/gdresource-BOOCDP_w.js +1 -0
- package/dist/assets/gdscript-C3mT4Uym.js +1 -0
- package/dist/assets/gdscript-C5YyOfLZ.js +1 -0
- package/dist/assets/gdshader-DkwncUOv.js +1 -0
- package/dist/assets/gdshader-G7X6ysY3.js +1 -0
- package/dist/assets/genie-D0YGMca9.js +1 -0
- package/dist/assets/genie-DSsjfZMX.js +1 -0
- package/dist/assets/gherkin-Cl2Fw-_0.js +1 -0
- package/dist/assets/gherkin-DyxjwDmM.js +1 -0
- package/dist/assets/gherkin-heZmZLOM.js +1 -0
- package/dist/assets/git-commit-CJPsQObV.js +1 -0
- package/dist/assets/git-commit-F4YmCXRG.js +1 -0
- package/dist/assets/git-rebase-DeZqv4fp.js +1 -0
- package/dist/assets/git-rebase-r7XF79zn.js +1 -0
- package/dist/assets/github-dark-BQV5ugrc.js +1 -0
- package/dist/assets/github-dark-DHJKELXO.js +1 -0
- package/dist/assets/github-dark-default-Cuk6v7N8.js +1 -0
- package/dist/assets/github-dark-default-DLWDM7FH.js +1 -0
- package/dist/assets/github-dark-dimmed-D1FmiR_p.js +1 -0
- package/dist/assets/github-dark-dimmed-DH5Ifo-i.js +1 -0
- package/dist/assets/github-dark-high-contrast-BilLoi0o.js +1 -0
- package/dist/assets/github-dark-high-contrast-E3gJ1_iC.js +1 -0
- package/dist/assets/github-light-DAi9KRSo.js +1 -0
- package/dist/assets/github-light-Rcb2q3L5.js +1 -0
- package/dist/assets/github-light-default-CQ75esMw.js +1 -0
- package/dist/assets/github-light-default-D7oLnXFd.js +1 -0
- package/dist/assets/github-light-high-contrast-BfjtVDDH.js +1 -0
- package/dist/assets/github-light-high-contrast-CRF1wyLy.js +1 -0
- package/dist/assets/gleam-BeBqoPwE.js +1 -0
- package/dist/assets/gleam-BspZqrRM.js +1 -0
- package/dist/assets/glimmer-js-BuyKUjfV.js +1 -0
- package/dist/assets/glimmer-js-Rg0-pVw9.js +1 -0
- package/dist/assets/glimmer-ts-D9iniPFN.js +1 -0
- package/dist/assets/glimmer-ts-U6CK756n.js +1 -0
- package/dist/assets/glsl-BOG9l2nV.js +1 -0
- package/dist/assets/glsl-DplSGwfg.js +1 -0
- package/dist/assets/gn-Dxr0sSUf.js +1 -0
- package/dist/assets/gn-n2N0HUVH.js +1 -0
- package/dist/assets/gnuplot-CtW3R_Hz.js +1 -0
- package/dist/assets/gnuplot-DdkO51Og.js +1 -0
- package/dist/assets/go-BBr2UQCn.js +1 -0
- package/dist/assets/go-CxLEBnE3.js +1 -0
- package/dist/assets/graphql-B6XHM4uj.js +1 -0
- package/dist/assets/graphql-ChdNCCLP.js +1 -0
- package/dist/assets/groovy-D9Dt4D0W.js +1 -0
- package/dist/assets/groovy-DFxE31Qs.js +1 -0
- package/dist/assets/groovy-gcz8RCvz.js +1 -0
- package/dist/assets/gruvbox-dark-hard-C37G1gbc.js +1 -0
- package/dist/assets/gruvbox-dark-hard-CFHQjOhq.js +1 -0
- package/dist/assets/gruvbox-dark-medium-C3G9m3TV.js +1 -0
- package/dist/assets/gruvbox-dark-medium-GsRaNv29.js +1 -0
- package/dist/assets/gruvbox-dark-soft-CVdnzihN.js +1 -0
- package/dist/assets/gruvbox-dark-soft-eZmcmZ9I.js +1 -0
- package/dist/assets/gruvbox-light-hard-BYj-vz_3.js +1 -0
- package/dist/assets/gruvbox-light-hard-CH1njM8p.js +1 -0
- package/dist/assets/gruvbox-light-medium-BdQlDiiF.js +1 -0
- package/dist/assets/gruvbox-light-medium-DRw_LuNl.js +1 -0
- package/dist/assets/gruvbox-light-soft-BGNwjiRh.js +1 -0
- package/dist/assets/gruvbox-light-soft-hJgmCMqR.js +1 -0
- package/dist/assets/hack-CaT9iCJl.js +1 -0
- package/dist/assets/hack-Cxa-FaZ4.js +1 -0
- package/dist/assets/haml-2e0EI6Is.js +1 -0
- package/dist/assets/haml-B8DHNrY2.js +1 -0
- package/dist/assets/handlebars-BL8al0AC.js +1 -0
- package/dist/assets/handlebars-CojHdNmS.js +1 -0
- package/dist/assets/haskell-BfdhR_WN.js +1 -0
- package/dist/assets/haskell-Cw1EW3IL.js +1 -0
- package/dist/assets/haskell-Df6bDoY_.js +1 -0
- package/dist/assets/haxe-CzTSHFRz.js +1 -0
- package/dist/assets/haxe-DVIybFAS.js +1 -0
- package/dist/assets/haxe-H-WmDvRZ.js +1 -0
- package/dist/assets/hcl-B6OePqme.js +1 -0
- package/dist/assets/hcl-BWvSN4gD.js +1 -0
- package/dist/assets/hjson-D2jn7IRw.js +1 -0
- package/dist/assets/hjson-D5-asLiD.js +1 -0
- package/dist/assets/hlsl-D3lLCCz7.js +1 -0
- package/dist/assets/hlsl-MKeth5V9.js +1 -0
- package/dist/assets/horizon-BUw7H-hv.js +1 -0
- package/dist/assets/horizon-bright-Cn-bp-IR.js +1 -0
- package/dist/assets/horizon-bright-CoQRYDvy.js +1 -0
- package/dist/assets/horizon-cslQss18.js +1 -0
- package/dist/assets/houston-DnULxvSX.js +1 -0
- package/dist/assets/houston-RHIKkNfR.js +1 -0
- package/dist/assets/html-DOf0XnR2.js +1 -0
- package/dist/assets/html-GMplVEZG.js +1 -0
- package/dist/assets/html-derivative-BFtXZ54Q.js +1 -0
- package/dist/assets/html-derivative-DfCZ6Hio.js +1 -0
- package/dist/assets/http-CG3jvXcS.js +1 -0
- package/dist/assets/http-DBlCnlav.js +1 -0
- package/dist/assets/http-jrhK8wxY.js +1 -0
- package/dist/assets/hurl-CxQrh4RI.js +1 -0
- package/dist/assets/hurl-irOxFIW8.js +1 -0
- package/dist/assets/hxml-Bvhsp5Yf.js +1 -0
- package/dist/assets/hxml-CkS3Eie7.js +1 -0
- package/dist/assets/hy-DFXneXwc.js +1 -0
- package/dist/assets/hy-DI6mCUnw.js +1 -0
- package/dist/assets/idl-BEugSyMb.js +1 -0
- package/dist/assets/imba-D-Pk5S0X.js +1 -0
- package/dist/assets/imba-DGztddWO.js +1 -0
- package/dist/assets/index-CRB7i1S2.js +8 -0
- package/dist/assets/index-C_Mo87uS.css +1 -0
- package/dist/assets/index-MSKFS67y.js +1 -0
- package/dist/assets/ini-BEwlwnbL.js +1 -0
- package/dist/assets/ini-Dix3pTmg.js +1 -0
- package/dist/assets/isDiffPlainText-CeCQwHA2.js +1 -0
- package/dist/assets/isFilePlainText-BcfhE9FH.js +1 -0
- package/dist/assets/java-BTDmaRNO.js +1 -0
- package/dist/assets/java-CylS5w8V.js +1 -0
- package/dist/assets/javascript-BO_2ioGC.js +1 -0
- package/dist/assets/javascript-WyGyM1wV.js +1 -0
- package/dist/assets/javascript-wDzz0qaB.js +1 -0
- package/dist/assets/jinja-4LBKfQ-Z.js +1 -0
- package/dist/assets/jinja-D0mZ3q2r.js +1 -0
- package/dist/assets/jison-B9XHrcYJ.js +1 -0
- package/dist/assets/jison-wvAkD_A8.js +1 -0
- package/dist/assets/json-B8JryHcM.js +1 -0
- package/dist/assets/json-Cp-IABpG.js +1 -0
- package/dist/assets/json5-C9tS-k6U.js +1 -0
- package/dist/assets/json5-Cdatmj9n.js +1 -0
- package/dist/assets/jsonc-CvUCa1o5.js +1 -0
- package/dist/assets/jsonc-Des-eS-w.js +1 -0
- package/dist/assets/jsonl-9I_GBd5L.js +1 -0
- package/dist/assets/jsonl-DcaNXYhu.js +1 -0
- package/dist/assets/jsonnet-DFQXde-d.js +1 -0
- package/dist/assets/jsonnet-XoenQ2oc.js +1 -0
- package/dist/assets/jssm-C2t-YnRu.js +1 -0
- package/dist/assets/jssm-CWE2S0Z5.js +1 -0
- package/dist/assets/jsx-8cLv2Six.js +1 -0
- package/dist/assets/jsx-g9-lgVsj.js +1 -0
- package/dist/assets/julia-C1oINnwa.js +1 -0
- package/dist/assets/julia-CxzCAyBv.js +1 -0
- package/dist/assets/julia-DuME0IfC.js +1 -0
- package/dist/assets/just-Bo3fV9RY.js +1 -0
- package/dist/assets/just-Cw27pwNe.js +1 -0
- package/dist/assets/kanagawa-dragon-BOvIHJVT.js +1 -0
- package/dist/assets/kanagawa-dragon-CkXjmgJE.js +1 -0
- package/dist/assets/kanagawa-lotus-Bwcd7Bvx.js +1 -0
- package/dist/assets/kanagawa-lotus-CfQXZHmo.js +1 -0
- package/dist/assets/kanagawa-wave-0SAlpf0s.js +1 -0
- package/dist/assets/kanagawa-wave-DWedfzmr.js +1 -0
- package/dist/assets/kdl-CMbyIXjQ.js +1 -0
- package/dist/assets/kdl-DV7GczEv.js +1 -0
- package/dist/assets/kimi-for-coding-eVEHug_h.svg +3 -0
- package/dist/assets/kotlin-BQy537ds.js +1 -0
- package/dist/assets/kotlin-BdnUsdx6.js +1 -0
- package/dist/assets/kusto-B_y0uMaZ.js +1 -0
- package/dist/assets/kusto-DZf3V79B.js +1 -0
- package/dist/assets/laserwave-DUszq2jm.js +1 -0
- package/dist/assets/laserwave-si7wuSrt.js +1 -0
- package/dist/assets/latex-CWtU0Tv5.js +1 -0
- package/dist/assets/latex-CZAhoKip.js +1 -0
- package/dist/assets/lean-BZvkOJ9d.js +1 -0
- package/dist/assets/lean-C4RHkN41.js +1 -0
- package/dist/assets/less-B1dDrJ26.js +1 -0
- package/dist/assets/less-XNfgnZC7.js +1 -0
- package/dist/assets/light-plus-B7mTdjB0.js +1 -0
- package/dist/assets/light-plus-g_Fi9vkG.js +1 -0
- package/dist/assets/liquid-DFlqVvG0.js +1 -0
- package/dist/assets/liquid-DYVedYrR.js +1 -0
- package/dist/assets/livescript-BwQOo05w.js +1 -0
- package/dist/assets/llmapi-detailed-Pup_107f.svg +28 -0
- package/dist/assets/llvm-BJRUtCev.js +1 -0
- package/dist/assets/llvm-DjAJT7YJ.js +1 -0
- package/dist/assets/log-2UxHyX5q.js +1 -0
- package/dist/assets/log-CcaF_xNv.js +1 -0
- package/dist/assets/logo-BtOb2qkB.js +1 -0
- package/dist/assets/logo-D9WQLoKQ.js +1 -0
- package/dist/assets/lua-8Av-h-ns.js +1 -0
- package/dist/assets/lua-BaeVxFsk.js +1 -0
- package/dist/assets/lua-BgMRiT3U.js +1 -0
- package/dist/assets/luau-BTSFCcFb.js +1 -0
- package/dist/assets/luau-C-HG3fhB.js +1 -0
- package/dist/assets/main-CPygRDd9.js +134 -0
- package/dist/assets/main-DZg4qzOe.js +2 -0
- package/dist/assets/make-CHLpvVh8.js +1 -0
- package/dist/assets/make-DXVx14cr.js +1 -0
- package/dist/assets/markdown-Cvjx9yec.js +1 -0
- package/dist/assets/markdown-DX-TNHnc.js +1 -0
- package/dist/assets/markdown-shiki.worker-DnvH1S1x.js +12 -0
- package/dist/assets/markdownCore-BULtt6Xa.js +2 -0
- package/dist/assets/marko-CnJfTvn9.js +1 -0
- package/dist/assets/marko-DiIoNBFw.js +1 -0
- package/dist/assets/material-theme-CIJ3cGaW.js +1 -0
- package/dist/assets/material-theme-D5KoaKCx.js +1 -0
- package/dist/assets/material-theme-darker-BWg3m1GB.js +1 -0
- package/dist/assets/material-theme-darker-BfHTSMKl.js +1 -0
- package/dist/assets/material-theme-lighter-B0m2ddpp.js +1 -0
- package/dist/assets/material-theme-lighter-DR8HWMN7.js +1 -0
- package/dist/assets/material-theme-ocean-CZf9pk28.js +1 -0
- package/dist/assets/material-theme-ocean-CyktbL80.js +1 -0
- package/dist/assets/material-theme-palenight-BF01YeZy.js +1 -0
- package/dist/assets/material-theme-palenight-Csfq5Kiy.js +1 -0
- package/dist/assets/mathematica-DTrFuWx2.js +1 -0
- package/dist/assets/matlab-D7o27uSR.js +1 -0
- package/dist/assets/matlab-DzreyMvm.js +1 -0
- package/dist/assets/mbox-CNhZ1qSd.js +1 -0
- package/dist/assets/mdc-BMNejdWA.js +1 -0
- package/dist/assets/mdc-D_DpLax5.js +1 -0
- package/dist/assets/mdx-C2fqO2XY.js +1 -0
- package/dist/assets/mdx-Cmh6b_Ma.js +1 -0
- package/dist/assets/mermaid-Cwy4Up_p.js +1 -0
- package/dist/assets/mermaid-mWjccvbQ.js +1 -0
- package/dist/assets/min-dark-CafNBF8u.js +1 -0
- package/dist/assets/min-dark-DhfaepVE.js +1 -0
- package/dist/assets/min-light-6xx0uMgm.js +1 -0
- package/dist/assets/min-light-CTRr51gU.js +1 -0
- package/dist/assets/miniChat-BFotDgpO.js +2 -0
- package/dist/assets/mipsasm-CKIfxQSi.js +1 -0
- package/dist/assets/mipsasm-yE_Aqo9y.js +1 -0
- package/dist/assets/mirc-CjQqDB4T.js +1 -0
- package/dist/assets/mllike-BO34x3tv.js +1 -0
- package/dist/assets/mobile-3LLzhN5Q.js +2 -0
- package/dist/assets/modelica-Dc1JOy9r.js +1 -0
- package/dist/assets/mojo-M6pJPbMk.js +1 -0
- package/dist/assets/mojo-rZm6bMo-.js +1 -0
- package/dist/assets/monokai-BodnsaDQ.js +1 -0
- package/dist/assets/monokai-D4h5O-jR.js +1 -0
- package/dist/assets/moonbit-CR8uFLGd.js +1 -0
- package/dist/assets/moonbit-_H4v1dQx.js +1 -0
- package/dist/assets/move-CyYMWVy5.js +1 -0
- package/dist/assets/move-IF9eRakj.js +1 -0
- package/dist/assets/mscgen-BA5vi2Kp.js +1 -0
- package/dist/assets/mumps-BT43cFF4.js +1 -0
- package/dist/assets/narrat-DRg8JJMk.js +1 -0
- package/dist/assets/narrat-DXUZ_ZkW.js +1 -0
- package/dist/assets/nextflow-BPolriEg.js +1 -0
- package/dist/assets/nextflow-Zz6hmt5N.js +1 -0
- package/dist/assets/nextflow-groovy-BeH2EWoN.js +1 -0
- package/dist/assets/nextflow-groovy-pQRwk_Jg.js +1 -0
- package/dist/assets/nginx-BpAMiNFr.js +1 -0
- package/dist/assets/nginx-DSXkacNc.js +1 -0
- package/dist/assets/nginx-DdIZxoE0.js +1 -0
- package/dist/assets/night-owl-C39BiMTA.js +1 -0
- package/dist/assets/night-owl-EdP2Hztp.js +1 -0
- package/dist/assets/night-owl-light-Bk-lYVyk.js +1 -0
- package/dist/assets/night-owl-light-CMTm3GFP.js +1 -0
- package/dist/assets/nim-CVrawwO9.js +1 -0
- package/dist/assets/nim-e2z2kCcq.js +1 -0
- package/dist/assets/nix-Ckjrpg0r.js +1 -0
- package/dist/assets/nix-CwoSXNpI.js +1 -0
- package/dist/assets/nord-BAu0wM6c.js +1 -0
- package/dist/assets/nord-Ddv68eIx.js +1 -0
- package/dist/assets/nsis-LdVXkNf5.js +1 -0
- package/dist/assets/ntriples-BfvgReVJ.js +1 -0
- package/dist/assets/nushell-Cz2AlsmD.js +1 -0
- package/dist/assets/nushell-DtHLcZf1.js +1 -0
- package/dist/assets/objective-c-BoaBTdtz.js +1 -0
- package/dist/assets/objective-c-DXmwc3jG.js +1 -0
- package/dist/assets/objective-cpp-CLxacb5B.js +1 -0
- package/dist/assets/objective-cpp-DstR8hNy.js +1 -0
- package/dist/assets/ocaml-C0hk2d4L.js +1 -0
- package/dist/assets/ocaml-DTbn2Hv7.js +1 -0
- package/dist/assets/octave-CWZ4xMHY.js +1 -0
- package/dist/assets/odin-BBf5iR-q.js +1 -0
- package/dist/assets/odin-Bxc4S6Xn.js +1 -0
- package/dist/assets/one-dark-pro-DVMEJ2y_.js +1 -0
- package/dist/assets/one-dark-pro-utPxbBbJ.js +1 -0
- package/dist/assets/one-light-BuCQ22aO.js +1 -0
- package/dist/assets/one-light-C3Wv6jpd.js +1 -0
- package/dist/assets/openscad-C4EeE6gA.js +1 -0
- package/dist/assets/openscad-CXHpNBsb.js +1 -0
- package/dist/assets/oz-BzwKVEFT.js +1 -0
- package/dist/assets/pascal--L3eBynH.js +1 -0
- package/dist/assets/pascal-D93ZcfNL.js +1 -0
- package/dist/assets/pascal-Sr-XLSE6.js +1 -0
- package/dist/assets/perl-C0TMdlhV.js +1 -0
- package/dist/assets/perl-C95KruZl.js +1 -0
- package/dist/assets/perl-CdXCOZ3F.js +1 -0
- package/dist/assets/permissionStore-BRcQ9Jgt.js +1 -0
- package/dist/assets/php-B4Kqya17.js +1 -0
- package/dist/assets/php-Dhbhpdrm.js +1 -0
- package/dist/assets/pig-CevX1Tat.js +1 -0
- package/dist/assets/pkl-CRusufhw.js +1 -0
- package/dist/assets/pkl-u5AG7uiY.js +1 -0
- package/dist/assets/plastic-3e1v2bzS.js +1 -0
- package/dist/assets/plastic-CXnNNlFZ.js +1 -0
- package/dist/assets/plsql-ChMvpjG-.js +1 -0
- package/dist/assets/plsql-Dbm3tV2N.js +1 -0
- package/dist/assets/po-BTJTHyun.js +1 -0
- package/dist/assets/po-LG0lFwH4.js +1 -0
- package/dist/assets/poimandres-BrOVMvuE.js +1 -0
- package/dist/assets/poimandres-CS3Unz2-.js +1 -0
- package/dist/assets/polar-C0HS_06l.js +1 -0
- package/dist/assets/polar-DjOs3GWb.js +1 -0
- package/dist/assets/postcss-CXtECtnM.js +1 -0
- package/dist/assets/postcss-GRRkWn2F.js +1 -0
- package/dist/assets/powerquery-CEu0bR-o.js +1 -0
- package/dist/assets/powerquery-DHf-dtTS.js +1 -0
- package/dist/assets/powershell-CFHJl5sT.js +1 -0
- package/dist/assets/powershell-DXrKVo3G.js +1 -0
- package/dist/assets/powershell-Dpen1YoG.js +1 -0
- package/dist/assets/prisma-Dd19v3D-.js +1 -0
- package/dist/assets/prisma-Dgf8IN_C.js +1 -0
- package/dist/assets/prolog-9JcfiY6I.js +1 -0
- package/dist/assets/prolog-CbFg5uaA.js +1 -0
- package/dist/assets/properties-C78fOPTZ.js +1 -0
- package/dist/assets/proto-C7zT0LnQ.js +1 -0
- package/dist/assets/proto-dqx_Sj2i.js +1 -0
- package/dist/assets/protobuf-ChK-085T.js +1 -0
- package/dist/assets/pug-CGlum2m_.js +1 -0
- package/dist/assets/pug-CIGw5rlb.js +1 -0
- package/dist/assets/pug-CoOVtr4u.js +1 -0
- package/dist/assets/puppet-BMWR74SV.js +1 -0
- package/dist/assets/puppet-DMA9R1ak.js +1 -0
- package/dist/assets/puppet-Di57VbSS.js +1 -0
- package/dist/assets/purescript-BgpM7rDH.js +1 -0
- package/dist/assets/purescript-CklMAg4u.js +1 -0
- package/dist/assets/python-B6Ihcp-E.js +1 -0
- package/dist/assets/python-B6aJPvgy.js +1 -0
- package/dist/assets/python-Cso5vRIg.js +1 -0
- package/dist/assets/q-pXgVlZs6.js +1 -0
- package/dist/assets/qml-3beO22l8.js +1 -0
- package/dist/assets/qml-DmGQGbca.js +1 -0
- package/dist/assets/qmldir-C8lEn-DE.js +1 -0
- package/dist/assets/qmldir-DXd9s5XC.js +1 -0
- package/dist/assets/qss-B7NnhfIi.js +1 -0
- package/dist/assets/qss-IeuSbFQv.js +1 -0
- package/dist/assets/r-1ts4xG1r.js +1 -0
- package/dist/assets/r-B6wPVr8A.js +1 -0
- package/dist/assets/r-Dspwwk_N.js +1 -0
- package/dist/assets/racket-BqYA7rlc.js +1 -0
- package/dist/assets/racket-CeDx7KO2.js +1 -0
- package/dist/assets/raku-BMJwmrCS.js +1 -0
- package/dist/assets/raku-DXvB9xmW.js +1 -0
- package/dist/assets/razor-BaMsy-R7.js +1 -0
- package/dist/assets/razor-Uh8Bk_45.js +1 -0
- package/dist/assets/red-DR6ZwibK.js +1 -0
- package/dist/assets/red-bN70gL4F.js +1 -0
- package/dist/assets/reg-C-SQnVFl.js +1 -0
- package/dist/assets/reg-Cvyu2Gnx.js +1 -0
- package/dist/assets/regexp-CDVJQ6XC.js +1 -0
- package/dist/assets/regexp-DK-WlHNu.js +1 -0
- package/dist/assets/registerCustomTheme-BBXUCRnG.js +1 -0
- package/dist/assets/rel-BlqNHz8k.js +1 -0
- package/dist/assets/rel-C3B-1QV4.js +1 -0
- package/dist/assets/renderElectronMiniChatApp-DGmmT9Wf.js +1 -0
- package/dist/assets/renderMobileApp-Dd8P9hvM.js +23 -0
- package/dist/assets/riscv-BM1_JUlF.js +1 -0
- package/dist/assets/riscv-C5dpdlr7.js +1 -0
- package/dist/assets/ron-D8l8udqQ.js +1 -0
- package/dist/assets/ron-j5NfrB3z.js +1 -0
- package/dist/assets/rose-pine-CN2F2lJl.js +1 -0
- package/dist/assets/rose-pine-dawn-0S8NEhsA.js +1 -0
- package/dist/assets/rose-pine-dawn-DHQR4-dF.js +1 -0
- package/dist/assets/rose-pine-moon-D4_iv3hh.js +1 -0
- package/dist/assets/rose-pine-moon-DzBDT4rc.js +1 -0
- package/dist/assets/rose-pine-qdsjHGoJ.js +1 -0
- package/dist/assets/rosmsg-BJDFO7_C.js +1 -0
- package/dist/assets/rosmsg-ZkSIzPhc.js +1 -0
- package/dist/assets/rpm-CTu-6PCP.js +1 -0
- package/dist/assets/rst-BrH8l1NY.js +1 -0
- package/dist/assets/rst-C371KPjr.js +1 -0
- package/dist/assets/ruby-B2Rjki9n.js +1 -0
- package/dist/assets/ruby-DusoydGj.js +1 -0
- package/dist/assets/ruby-Dw2BHqvy.js +1 -0
- package/dist/assets/runtimeSurface-Cnqjhb6Y.js +1 -0
- package/dist/assets/rust-B1yitclQ.js +1 -0
- package/dist/assets/rust-CxuBE0J8.js +1 -0
- package/dist/assets/sas-B4kiWyti.js +1 -0
- package/dist/assets/sas-DtSHuIwI.js +1 -0
- package/dist/assets/sas-cz2c8ADy.js +1 -0
- package/dist/assets/sass-Cj5Yp3dK.js +1 -0
- package/dist/assets/sass-bfEVHPJ8.js +1 -0
- package/dist/assets/scala-C151Ov-r.js +1 -0
- package/dist/assets/scala-Dtw19ca_.js +1 -0
- package/dist/assets/scheme-C41bIUwD.js +1 -0
- package/dist/assets/scheme-C98Dy4si.js +1 -0
- package/dist/assets/scheme-OJppFQF3.js +1 -0
- package/dist/assets/scss-DxBkwadj.js +1 -0
- package/dist/assets/scss-OYdSNvt2.js +1 -0
- package/dist/assets/sdbl-CvZs3G9c.js +1 -0
- package/dist/assets/sdbl-DVxCFoDh.js +1 -0
- package/dist/assets/shaderlab-CEJedz68.js +1 -0
- package/dist/assets/shaderlab-Dg9Lc6iA.js +1 -0
- package/dist/assets/shellscript-DgJyDXW6.js +1 -0
- package/dist/assets/shellscript-Yzrsuije.js +1 -0
- package/dist/assets/shellsession-BADoaaVG.js +1 -0
- package/dist/assets/shellsession-DSlzxnCM.js +1 -0
- package/dist/assets/sieve-C3Gn_uJK.js +1 -0
- package/dist/assets/simple-mode-GW_nhZxv.js +1 -0
- package/dist/assets/slack-dark-BthQWCQV.js +1 -0
- package/dist/assets/slack-dark-CWRQmTmo.js +1 -0
- package/dist/assets/slack-ochin-DO_ok7XK.js +1 -0
- package/dist/assets/slack-ochin-DqwNpetd.js +1 -0
- package/dist/assets/smalltalk-B9IHbYt7.js +1 -0
- package/dist/assets/smalltalk-BERRCDM3.js +1 -0
- package/dist/assets/smalltalk-CnHTOXQT.js +1 -0
- package/dist/assets/snazzy-light-B5llO_gK.js +1 -0
- package/dist/assets/snazzy-light-Bw305WKR.js +1 -0
- package/dist/assets/solarized-dark-DXbdFlpD.js +1 -0
- package/dist/assets/solarized-dark-G9yBjKj_.js +1 -0
- package/dist/assets/solarized-light-DeSzljQz.js +1 -0
- package/dist/assets/solarized-light-L9t79GZl.js +1 -0
- package/dist/assets/solidity-B3CjIuAd.js +1 -0
- package/dist/assets/solidity-rGO070M0.js +1 -0
- package/dist/assets/solr-DehyRSwq.js +1 -0
- package/dist/assets/soy-BSb8SaP0.js +1 -0
- package/dist/assets/soy-Brmx7dQM.js +1 -0
- package/dist/assets/sparql-BJh4JEw-.js +1 -0
- package/dist/assets/sparql-DkYu6x3z.js +1 -0
- package/dist/assets/sparql-rVzFXLq3.js +1 -0
- package/dist/assets/splunk-BtCnVYZw.js +1 -0
- package/dist/assets/splunk-h-bNAnbk.js +1 -0
- package/dist/assets/spreadsheet-BCZA_wO0.js +1 -0
- package/dist/assets/sql-BLtJtn59.js +1 -0
- package/dist/assets/sql-BbONfI8K.js +1 -0
- package/dist/assets/sql-D0XecflT.js +1 -0
- package/dist/assets/ssh-config-CywOjoXH.js +1 -0
- package/dist/assets/ssh-config-_ykCGR6B.js +1 -0
- package/dist/assets/stata-BH5u7GGu.js +1 -0
- package/dist/assets/stata-BKjsT8qe.js +1 -0
- package/dist/assets/stex-C3f8Ysf7.js +1 -0
- package/dist/assets/stylus-B533Al4x.js +1 -0
- package/dist/assets/stylus-BEDo0Tqx.js +1 -0
- package/dist/assets/stylus-CIg617SB.js +1 -0
- package/dist/assets/surrealql-2KNEnAt7.js +1 -0
- package/dist/assets/surrealql-Bq5Q-fJD.js +1 -0
- package/dist/assets/svelte-C_ipcX3V.js +1 -0
- package/dist/assets/svelte-xaxjcSSP.js +1 -0
- package/dist/assets/swift-BzpIVaGY.js +1 -0
- package/dist/assets/swift-D82vCrfD.js +1 -0
- package/dist/assets/swift-tEesUtni.js +1 -0
- package/dist/assets/synthwave-84-CbfX1IO0.js +1 -0
- package/dist/assets/synthwave-84-DRVv-_m_.js +1 -0
- package/dist/assets/system-verilog-CnnmHF94.js +1 -0
- package/dist/assets/system-verilog-Qdm_1g2q.js +1 -0
- package/dist/assets/systemd-4A_iFExJ.js +1 -0
- package/dist/assets/systemd-DKMPPZjB.js +1 -0
- package/dist/assets/talonscript-CkByrt1z.js +1 -0
- package/dist/assets/talonscript-eRuyeYHl.js +1 -0
- package/dist/assets/tasl-B9CVvjfG.js +1 -0
- package/dist/assets/tasl-QIJgUcNo.js +1 -0
- package/dist/assets/tcl-Bq9dbVAF.js +1 -0
- package/dist/assets/tcl-DVfN8rqt.js +1 -0
- package/dist/assets/tcl-dwOrl1Do.js +1 -0
- package/dist/assets/templ-BVTOctZ7.js +1 -0
- package/dist/assets/templ-P3uqSqPl.js +1 -0
- package/dist/assets/terraform-BETggiCN.js +1 -0
- package/dist/assets/terraform-CAp711iT.js +1 -0
- package/dist/assets/tex-BHxF5DMe.js +1 -0
- package/dist/assets/tex-idrVyKtj.js +1 -0
- package/dist/assets/textile-CnDTJFAw.js +1 -0
- package/dist/assets/themeResolver-BmJyTmjJ.js +1 -0
- package/dist/assets/tiddlywiki-DO-Gjzrf.js +1 -0
- package/dist/assets/tiki-DGYXhP31.js +1 -0
- package/dist/assets/tokyo-night-BvwC8l2v.js +1 -0
- package/dist/assets/tokyo-night-hegEt444.js +1 -0
- package/dist/assets/toml-Bm5Em-hy.js +1 -0
- package/dist/assets/toml-Ms459DBw.js +1 -0
- package/dist/assets/toml-vGWfd6FD.js +1 -0
- package/dist/assets/troff-wAsdV37c.js +1 -0
- package/dist/assets/ts-tags-C-gylFal.js +1 -0
- package/dist/assets/ts-tags-zn1MmPIZ.js +1 -0
- package/dist/assets/tsv-BFtm7NXx.js +1 -0
- package/dist/assets/tsv-B_m7g4N7.js +1 -0
- package/dist/assets/tsx-COt5Ahok.js +1 -0
- package/dist/assets/tsx-D6116Ycy.js +1 -0
- package/dist/assets/ttcn-CfJYG6tj.js +1 -0
- package/dist/assets/ttcn-cfg-B9xdYoR4.js +1 -0
- package/dist/assets/turtle-B1tBg_DP.js +1 -0
- package/dist/assets/turtle-BsS91CYL.js +1 -0
- package/dist/assets/turtle-DpRhbQZY.js +1 -0
- package/dist/assets/twig-DNn4PbVi.js +1 -0
- package/dist/assets/twig-DuP5mDZ4.js +1 -0
- package/dist/assets/typescript-BPQ3VLAy.js +1 -0
- package/dist/assets/typescript-BqvgUolh.js +1 -0
- package/dist/assets/typespec-BGHnOYBU.js +1 -0
- package/dist/assets/typespec-DhK7u29_.js +1 -0
- package/dist/assets/typst-DHCkPAjA.js +1 -0
- package/dist/assets/typst-Dfd71gQj.js +1 -0
- package/dist/assets/useAppFontEffects-DXASDavv.js +7043 -0
- package/dist/assets/useInlineCommentController-KJFe98HG.js +2 -0
- package/dist/assets/useOpenInAppsStore-DHAeT9zx.js +1 -0
- package/dist/assets/useWindowTitle-BcwmWC0M.js +10 -0
- package/dist/assets/v-BH76v7br.js +1 -0
- package/dist/assets/v-BcVCzyr7.js +1 -0
- package/dist/assets/vala-CsfeWuGM.js +1 -0
- package/dist/assets/vala-z59IxkFd.js +1 -0
- package/dist/assets/vb-4AxSLKIU.js +1 -0
- package/dist/assets/vb-CmGdzxic.js +1 -0
- package/dist/assets/vb-D17OF-Vu.js +1 -0
- package/dist/assets/vbscript-BuJXcnF6.js +1 -0
- package/dist/assets/velocity-D8B20fx6.js +1 -0
- package/dist/assets/vendor-aparajita-capacitor-secure-storage-5IShChL0.js +1 -0
- package/dist/assets/vendor-aria-hidden-DvXkyWUv.js +1 -0
- package/dist/assets/vendor-base-ui-DwfTg5wD.js +1 -0
- package/dist/assets/vendor-beautiful-mermaid-r4GK_usS.js +119 -0
- package/dist/assets/vendor-capacitor-app-BrDJj9I_.js +1 -0
- package/dist/assets/vendor-capacitor-core-B4EWRrHz.js +1 -0
- package/dist/assets/vendor-capacitor-keyboard-CYccoJjr.js +1 -0
- package/dist/assets/vendor-capacitor-push-notifications-KNe1zSBF.js +1 -0
- package/dist/assets/vendor-capacitor-status-bar-B-N0EOVk.js +1 -0
- package/dist/assets/vendor-ccount-c2V3InAJ.js +1 -0
- package/dist/assets/vendor-character-entities-html4-D7taRCQ7.js +1 -0
- package/dist/assets/vendor-character-entities-legacy-BpoLgcEt.js +1 -0
- package/dist/assets/vendor-class-variance-authority-5VPnzWs2.js +1 -0
- package/dist/assets/vendor-clsx-B-dksMZM.js +1 -0
- package/dist/assets/vendor-cmdk-BCEUzcHE.js +1 -0
- package/dist/assets/vendor-codemirror-autocomplete-3xMyV7a2.js +1 -0
- package/dist/assets/vendor-codemirror-commands-Bzf12ODH.js +1 -0
- package/dist/assets/vendor-codemirror-lang-angular-0K6s6cvb.js +1 -0
- package/dist/assets/vendor-codemirror-lang-cpp-B0aL03z-.js +1 -0
- package/dist/assets/vendor-codemirror-lang-css-C4jEScp7.js +1 -0
- package/dist/assets/vendor-codemirror-lang-go-CgrfVBPr.js +7 -0
- package/dist/assets/vendor-codemirror-lang-html-C1Svvdey.js +1 -0
- package/dist/assets/vendor-codemirror-lang-java-DNPz7_Bx.js +1 -0
- package/dist/assets/vendor-codemirror-lang-javascript-CrbeaEAU.js +13 -0
- package/dist/assets/vendor-codemirror-lang-jinja-DL8BR_RG.js +1 -0
- package/dist/assets/vendor-codemirror-lang-json-BTvAjwkJ.js +1 -0
- package/dist/assets/vendor-codemirror-lang-less-CPABt6NZ.js +1 -0
- package/dist/assets/vendor-codemirror-lang-liquid-BLOLOBMg.js +1 -0
- package/dist/assets/vendor-codemirror-lang-markdown-BloD9GN-.js +1 -0
- package/dist/assets/vendor-codemirror-lang-php-FIZMTuWM.js +1 -0
- package/dist/assets/vendor-codemirror-lang-python-CR2g6ukK.js +3 -0
- package/dist/assets/vendor-codemirror-lang-rust-lsPqn4k4.js +1 -0
- package/dist/assets/vendor-codemirror-lang-sass-CtECMwzH.js +1 -0
- package/dist/assets/vendor-codemirror-lang-sql-BtmZrrZH.js +2 -0
- package/dist/assets/vendor-codemirror-lang-vue-Br6DrntY.js +1 -0
- package/dist/assets/vendor-codemirror-lang-wast-DT7IlCnb.js +1 -0
- package/dist/assets/vendor-codemirror-lang-xml-wNr-LZOf.js +1 -0
- package/dist/assets/vendor-codemirror-lang-yaml-BTKFwfc2.js +1 -0
- package/dist/assets/vendor-codemirror-language-BuDklWi8.js +3 -0
- package/dist/assets/vendor-codemirror-language-data-CFVH0pe8.js +2 -0
- package/dist/assets/vendor-codemirror-search-BzyfPoRb.js +2 -0
- package/dist/assets/vendor-codemirror-state-Wdz6Qsow.js +5 -0
- package/dist/assets/vendor-codemirror-view-pXtfpqbT.js +4 -0
- package/dist/assets/vendor-comma-separated-tokens-D8TqSuIK.js +1 -0
- package/dist/assets/vendor-crelt-C8TCjufn.js +1 -0
- package/dist/assets/vendor-detect-node-es-l0sNRNKZ.js +1 -0
- package/dist/assets/vendor-diff-C3JhlQdm.js +13 -0
- package/dist/assets/vendor-dijkstrajs-COg3n3zL.js +1 -0
- package/dist/assets/vendor-dnd-kit-accessibility-Cv52zwWT.js +1 -0
- package/dist/assets/vendor-dnd-kit-core-GipZW2tY.js +5 -0
- package/dist/assets/vendor-dnd-kit-sortable-Ct2QxIHb.js +1 -0
- package/dist/assets/vendor-dnd-kit-utilities-CrOcp0Bp.js +1 -0
- package/dist/assets/vendor-dompurify-r8glNMJW.js +2 -0
- package/dist/assets/vendor-elkjs-CRCLNXjf.js +24 -0
- package/dist/assets/vendor-entities-C3BA0AJP.js +1 -0
- package/dist/assets/vendor-fflate-C7GOKjkv.js +1 -0
- package/dist/assets/vendor-floating-ui-core-CXmKXOXc.js +1 -0
- package/dist/assets/vendor-floating-ui-dom-Bkw82kL9.js +1 -0
- package/dist/assets/vendor-floating-ui-react-dom-sVFnuruh.js +1 -0
- package/dist/assets/vendor-floating-ui-utils-BzXdqYpP.js +1 -0
- package/dist/assets/vendor-framer-motion-DJASDzNt.js +1 -0
- package/dist/assets/vendor-fuse.js-Dw8P0qyA.js +1 -0
- package/dist/assets/vendor-get-nonce-C-Z93AgS.js +1 -0
- package/dist/assets/vendor-ghostty-web-CrxinGGH.js +13 -0
- package/dist/assets/vendor-hast-util-to-html-BKBhbTDb.js +9 -0
- package/dist/assets/vendor-hast-util-whitespace-D4Wp6AEg.js +1 -0
- package/dist/assets/vendor-heic2any-L8hyfc24.js +66 -0
- package/dist/assets/vendor-html-to-image-BeoRn2gJ.js +2 -0
- package/dist/assets/vendor-html-void-elements-CkdplsNl.js +1 -0
- package/dist/assets/vendor-katex-CHD9BdDO.js +257 -0
- package/dist/assets/vendor-katex-Cp579UoJ.css +1 -0
- package/dist/assets/vendor-lezer-common-B3-cUCR_.js +1 -0
- package/dist/assets/vendor-lezer-cpp-BleAU9o-.js +1 -0
- package/dist/assets/vendor-lezer-css-C5xB6jxd.js +1 -0
- package/dist/assets/vendor-lezer-go-CXK1UKk8.js +1 -0
- package/dist/assets/vendor-lezer-highlight-CDMHUZ74.js +1 -0
- package/dist/assets/vendor-lezer-html-C0I1p52t.js +1 -0
- package/dist/assets/vendor-lezer-java-D_zzj-NV.js +1 -0
- package/dist/assets/vendor-lezer-javascript-D7Tj24ot.js +1 -0
- package/dist/assets/vendor-lezer-json-Iaex0UN-.js +1 -0
- package/dist/assets/vendor-lezer-lr-bhwg1HMg.js +1 -0
- package/dist/assets/vendor-lezer-markdown-C6g-d6P3.js +6 -0
- package/dist/assets/vendor-lezer-php-_DHrbsZG.js +1 -0
- package/dist/assets/vendor-lezer-python-CvuFxeZl.js +1 -0
- package/dist/assets/vendor-lezer-rust-Lqgd5SAo.js +1 -0
- package/dist/assets/vendor-lezer-sass-Dnm2lY4t.js +1 -0
- package/dist/assets/vendor-lezer-xml-hUDuAyS5.js +1 -0
- package/dist/assets/vendor-lezer-yaml-BNIl6S_O.js +1 -0
- package/dist/assets/vendor-lru_map-B-cPXHXW.js +1 -0
- package/dist/assets/vendor-marijn-find-cluster-break-DXwl3gUT.js +1 -0
- package/dist/assets/vendor-marked-i_gIkIP3.js +59 -0
- package/dist/assets/vendor-morphdom-B7dS_VPB.js +1 -0
- package/dist/assets/vendor-motion-dom-DJLgZh4Q.js +1 -0
- package/dist/assets/vendor-motion-l0sNRNKZ.js +1 -0
- package/dist/assets/vendor-motion-utils-BGh8QBgx.js +1 -0
- package/dist/assets/vendor-oniguruma-parser-C0D4_9rT.js +33 -0
- package/dist/assets/vendor-oniguruma-to-es-DLBnFDCE.js +94 -0
- package/dist/assets/vendor-pierre-theme-Bp7SdUL6.js +1 -0
- package/dist/assets/vendor-pierre-theming-C6Z4M5_u.js +1 -0
- package/dist/assets/vendor-property-information-rJCbAzvX.js +1 -0
- package/dist/assets/vendor-qrcode-COsmt6jn.js +8 -0
- package/dist/assets/vendor-radix-ui-primitive-Dc_FVRD7.js +1 -0
- package/dist/assets/vendor-radix-ui-react-compose-refs-D1GnwnP9.js +1 -0
- package/dist/assets/vendor-radix-ui-react-context-CM4yFQ2I.js +1 -0
- package/dist/assets/vendor-radix-ui-react-dialog-jX3Dld8c.js +5 -0
- package/dist/assets/vendor-radix-ui-react-dismissable-layer-M7LsH3yL.js +1 -0
- package/dist/assets/vendor-radix-ui-react-focus-guards-D5MZ0nQs.js +1 -0
- package/dist/assets/vendor-radix-ui-react-focus-scope-C2K7lNPv.js +1 -0
- package/dist/assets/vendor-radix-ui-react-id-BcxRjnbX.js +1 -0
- package/dist/assets/vendor-radix-ui-react-portal-xlJWBfDg.js +1 -0
- package/dist/assets/vendor-radix-ui-react-presence-Btn-Dp7L.js +1 -0
- package/dist/assets/vendor-radix-ui-react-primitive-CfpW6_IT.js +1 -0
- package/dist/assets/vendor-radix-ui-react-slot-BxUc3Pvz.js +1 -0
- package/dist/assets/vendor-radix-ui-react-use-callback-ref-UKEWHtoP.js +1 -0
- package/dist/assets/vendor-radix-ui-react-use-controllable-state-C_ecoh35.js +1 -0
- package/dist/assets/vendor-radix-ui-react-use-effect-event-DkJl_Rn_.js +1 -0
- package/dist/assets/vendor-radix-ui-react-use-escape-keydown-Co13lHGj.js +1 -0
- package/dist/assets/vendor-radix-ui-react-use-layout-effect-0fyGwS2_.js +1 -0
- package/dist/assets/vendor-react-DYyjh7Q0.js +9 -0
- package/dist/assets/vendor-react-drawio-Boqanm0j.js +1 -0
- package/dist/assets/vendor-react-remove-scroll-CfeMe0DL.js +4 -0
- package/dist/assets/vendor-react-remove-scroll-bar-C9YRs2nU.js +38 -0
- package/dist/assets/vendor-react-style-singleton-B1H4bWSG.js +1 -0
- package/dist/assets/vendor-regex-BBWcyTkg.js +16 -0
- package/dist/assets/vendor-regex-recursion-JU4mF-dD.js +1 -0
- package/dist/assets/vendor-regex-utilities-2BQyy0xI.js +1 -0
- package/dist/assets/vendor-remend-BWYYytN3.js +22 -0
- package/dist/assets/vendor-remixicon-react-CzPq62YO.js +1 -0
- package/dist/assets/vendor-replit-codemirror-vim-BUqe2Slv.js +39 -0
- package/dist/assets/vendor-reselect-l0sNRNKZ.js +1 -0
- package/dist/assets/vendor-scheduler-7OC5HNn7.js +1 -0
- package/dist/assets/vendor-shiki-Bbf2GEcE.js +2 -0
- package/dist/assets/vendor-shikijs-core-CGM_jqPK.js +2 -0
- package/dist/assets/vendor-shikijs-engine-javascript-Cme4830A.js +1 -0
- package/dist/assets/vendor-shikijs-engine-oniguruma-DPWuIF1G.js +1 -0
- package/dist/assets/vendor-shikijs-transformers-CZWsLLKm.js +1 -0
- package/dist/assets/vendor-shikijs-types-CPSbSeK6.js +1 -0
- package/dist/assets/vendor-shikijs-vscode-textmate-BgLrS_2D.js +3 -0
- package/dist/assets/vendor-simplewebauthn-browser-VDA66rT_.js +2 -0
- package/dist/assets/vendor-sonner-dWA7qvjr.js +1 -0
- package/dist/assets/vendor-space-separated-tokens-DD3iYX1K.js +1 -0
- package/dist/assets/vendor-stringify-entities-CsH1VEn9.js +1 -0
- package/dist/assets/vendor-style-mod-NZ5MEPvj.js +3 -0
- package/dist/assets/vendor-tailwind-merge-CPcsbTWB.js +1 -0
- package/dist/assets/vendor-tanstack-react-virtual-IrbCBGJ4.js +1 -0
- package/dist/assets/vendor-tanstack-virtual-core-Dubg10g5.js +1 -0
- package/dist/assets/vendor-tslib-De9GV7Vy.js +1 -0
- package/dist/assets/vendor-use-callback-ref-CJB0R85I.js +1 -0
- package/dist/assets/vendor-use-sidecar-C-AuTczP.js +1 -0
- package/dist/assets/vendor-use-sync-external-store-B7OScDIw.js +1 -0
- package/dist/assets/vendor-vite-runtime-DD1OZmLC.js +1 -0
- package/dist/assets/vendor-w3c-keyname-Vcq4gwWv.js +1 -0
- package/dist/assets/vendor-workbox-window-BIl4cyR9.js +2 -0
- package/dist/assets/vendor-zumer-snapdom-Btyu_Xi2.js +8 -0
- package/dist/assets/vendor-zustand-CnsBKjP5.js +6 -0
- package/dist/assets/vendor-zwitch-C2o2j-tx.js +1 -0
- package/dist/assets/verilog-BQ8w6xss.js +1 -0
- package/dist/assets/verilog-C6RDOZhf.js +1 -0
- package/dist/assets/verilog-LfQUkHDc.js +1 -0
- package/dist/assets/vesper--t9w6MWz.js +1 -0
- package/dist/assets/vesper-DU1UobuO.js +1 -0
- package/dist/assets/vhdl-CeAyd5Ju.js +1 -0
- package/dist/assets/vhdl-DJCsFYgn.js +1 -0
- package/dist/assets/vhdl-lSbBsy5d.js +1 -0
- package/dist/assets/viml-CJc9bBzg.js +1 -0
- package/dist/assets/viml-pbKHW3Ia.js +1 -0
- package/dist/assets/vitesse-black-B_BYPdvp.js +1 -0
- package/dist/assets/vitesse-black-Bkuqu6BP.js +1 -0
- package/dist/assets/vitesse-dark-D0r3Knsf.js +1 -0
- package/dist/assets/vitesse-dark-DOSOf2Sz.js +1 -0
- package/dist/assets/vitesse-light-CVO1_9PV.js +1 -0
- package/dist/assets/vitesse-light-gUX51GpB.js +1 -0
- package/dist/assets/vue-D2k0BAl5.js +1 -0
- package/dist/assets/vue-DN_0RTcg.js +1 -0
- package/dist/assets/vue-html-AaS7Mt5G.js +1 -0
- package/dist/assets/vue-html-zEfNEgpj.js +1 -0
- package/dist/assets/vue-vine-CQOfvN7w.js +1 -0
- package/dist/assets/vue-vine-D9eCaTqi.js +1 -0
- package/dist/assets/vyper-CDx5xZoG.js +1 -0
- package/dist/assets/vyper-DpazWNpx.js +1 -0
- package/dist/assets/wasm-CFi-k9--.js +1 -0
- package/dist/assets/wasm-CG6Dc4jp.js +1 -0
- package/dist/assets/wasm-MzD3tlZU.js +1 -0
- package/dist/assets/web-components-CNPQSzpa.js +1390 -0
- package/dist/assets/webidl-ZXfAyPTL.js +1 -0
- package/dist/assets/wenyan-BV7otONQ.js +1 -0
- package/dist/assets/wenyan-CYFFG9DK.js +1 -0
- package/dist/assets/wgsl-CxjTZs-b.js +1 -0
- package/dist/assets/wgsl-Dx-B1_4e.js +1 -0
- package/dist/assets/wikitext-BhOHFoWU.js +1 -0
- package/dist/assets/wikitext-Bx2qct8O.js +1 -0
- package/dist/assets/wit-5i3qLPDT.js +1 -0
- package/dist/assets/wit-DDW3hD69.js +1 -0
- package/dist/assets/wolfram-lXgVvXCa.js +1 -0
- package/dist/assets/wolfram-pu21K997.js +1 -0
- package/dist/assets/worker-BBk7yuNN.js +153 -0
- package/dist/assets/workerFactory-tw7cIdmV.js +1 -0
- package/dist/assets/xml-BkAJuBCc.js +1 -0
- package/dist/assets/xml-sdJ4AIDG.js +1 -0
- package/dist/assets/xquery-DzFWVndE.js +1 -0
- package/dist/assets/xsl-C6UUWSil.js +1 -0
- package/dist/assets/xsl-CtQFsRM5.js +1 -0
- package/dist/assets/yacas-BJ4BC0dw.js +1 -0
- package/dist/assets/yaml-Bopit2L3.js +1 -0
- package/dist/assets/yaml-Buea-lGh.js +1 -0
- package/dist/assets/z80-Hz9HOZM7.js +1 -0
- package/dist/assets/zenscript-BIAKq-aR.js +1 -0
- package/dist/assets/zenscript-DVFEvuxE.js +1 -0
- package/dist/assets/zig-VOosw3JB.js +1 -0
- package/dist/assets/zig-bSFrHQ7n.js +1 -0
- package/dist/favicon-16.png +0 -0
- package/dist/favicon-32.png +0 -0
- package/dist/favicon.png +0 -0
- package/dist/favicon.svg +13 -0
- package/dist/index.html +658 -0
- package/dist/logo-dark-192x192.png +0 -0
- package/dist/logo-dark-512x512.svg +13 -0
- package/dist/logo-light-192x192.png +0 -0
- package/dist/logo-light-512x512.svg +13 -0
- package/dist/mini-chat.html +121 -0
- package/dist/mobile.html +79 -0
- package/dist/pwa-192.png +0 -0
- package/dist/pwa-512.png +0 -0
- package/dist/pwa-maskable-192.png +0 -0
- package/dist/pwa-maskable-512.png +0 -0
- package/dist/site.webmanifest +21 -0
- package/dist/sw.js +1 -0
- package/package.json +115 -0
- package/public/apple-touch-icon-120x120.png +0 -0
- package/public/apple-touch-icon-152x152.png +0 -0
- package/public/apple-touch-icon-167x167.png +0 -0
- package/public/apple-touch-icon-180x180.png +0 -0
- package/public/apple-touch-icon.png +0 -0
- package/public/apple-touch-icon.svg +13 -0
- package/public/favicon-16.png +0 -0
- package/public/favicon-32.png +0 -0
- package/public/favicon.png +0 -0
- package/public/favicon.svg +13 -0
- package/public/logo-dark-192x192.png +0 -0
- package/public/logo-dark-512x512.svg +13 -0
- package/public/logo-light-192x192.png +0 -0
- package/public/logo-light-512x512.svg +13 -0
- package/public/pwa-192.png +0 -0
- package/public/pwa-512.png +0 -0
- package/public/pwa-maskable-192.png +0 -0
- package/public/pwa-maskable-512.png +0 -0
- package/public/site.webmanifest +21 -0
- package/server/index.d.ts +35 -0
- package/server/index.js +206 -0
- package/server/lib/client-auth/pairing.js +308 -0
- package/server/lib/client-auth/pairing.test.js +142 -0
- package/server/lib/client-auth/remote-clients.js +280 -0
- package/server/lib/client-auth/remote-clients.test.js +158 -0
- package/server/lib/cloudflare-tunnel.js +606 -0
- package/server/lib/fs/DOCUMENTATION.md +39 -0
- package/server/lib/fs/pick-directory.js +236 -0
- package/server/lib/fs/pick-directory.test.js +134 -0
- package/server/lib/fs/routes.js +1543 -0
- package/server/lib/fs/routes.test.js +920 -0
- package/server/lib/fs/search.js +238 -0
- package/server/lib/git/DOCUMENTATION.md +180 -0
- package/server/lib/git/credentials.js +41 -0
- package/server/lib/git/identity-storage.js +113 -0
- package/server/lib/git/index.js +6 -0
- package/server/lib/git/issue-2746-longpaths.test.js +206 -0
- package/server/lib/git/routes.js +1089 -0
- package/server/lib/git/routes.test.js +210 -0
- package/server/lib/git/service.js +4927 -0
- package/server/lib/git/service.test.js +1216 -0
- package/server/lib/inherited-env.js +74 -0
- package/server/lib/inherited-env.test.js +65 -0
- package/server/lib/ngrok-tunnel.js +343 -0
- package/server/lib/ngrok-tunnel.test.js +50 -0
- package/server/lib/package-manager.js +850 -0
- package/server/lib/package-manager.test.js +370 -0
- package/server/lib/path-realpath-cache.js +85 -0
- package/server/lib/path-realpath-cache.test.js +75 -0
- package/server/lib/pi/archive-store.js +52 -0
- package/server/lib/pi/archive-store.test.js +32 -0
- package/server/lib/pi/attachment-store.js +98 -0
- package/server/lib/pi/attachment-store.test.js +40 -0
- package/server/lib/pi/custom-themes.js +33 -0
- package/server/lib/pi/custom-themes.test.js +21 -0
- package/server/lib/pi/legacy-ui-model-defaults.js +57 -0
- package/server/lib/pi/legacy-ui-model-defaults.test.js +65 -0
- package/server/lib/pi/model-config-store.js +173 -0
- package/server/lib/pi/model-config-store.test.js +42 -0
- package/server/lib/pi/routes.js +956 -0
- package/server/lib/pi/routes.test.js +733 -0
- package/server/lib/pi/session-daemon/DOCUMENTATION.md +41 -0
- package/server/lib/pi/session-daemon/daemon-process.js +113 -0
- package/server/lib/pi/session-daemon/ipc-client.js +144 -0
- package/server/lib/pi/session-daemon/runtime-registry.js +149 -0
- package/server/lib/pi/session-daemon/runtime-registry.test.js +109 -0
- package/server/lib/pi/session-daemon/session-daemon.js +1903 -0
- package/server/lib/pi/session-daemon/session-daemon.test.js +1306 -0
- package/server/lib/pi/session-daemon/session-jsonl.js +94 -0
- package/server/lib/pi/session-daemon/session-jsonl.test.js +73 -0
- package/server/lib/pi/session-daemon/supervisor.js +458 -0
- package/server/lib/pi/session-daemon/supervisor.test.js +212 -0
- package/server/lib/pi/session-folders-store.js +74 -0
- package/server/lib/pi/session-folders-store.test.js +45 -0
- package/server/lib/pi/session-lifecycle.integration.test.js +197 -0
- package/server/lib/pi/settings-store.js +133 -0
- package/server/lib/pi/settings-store.test.js +113 -0
- package/server/lib/pi/thinking-levels.js +39 -0
- package/server/lib/pi/thinking-levels.test.js +34 -0
- package/server/lib/pi/ui-settings-store.js +68 -0
- package/server/lib/pi/ui-settings-store.test.js +40 -0
- package/server/lib/pichamber-data-dir.js +78 -0
- package/server/lib/pichamber-data-dir.test.js +105 -0
- package/server/lib/pichamber-data-root-authority.test.js +81 -0
- package/server/lib/preview/proxy-runtime.js +1604 -0
- package/server/lib/preview/proxy-runtime.test.js +528 -0
- package/server/lib/pwa-keys-contract.test.ts +62 -0
- package/server/lib/relay/DOCUMENTATION.md +106 -0
- package/server/lib/relay/cross-compat.test.js +135 -0
- package/server/lib/relay/e2ee.js +341 -0
- package/server/lib/relay/e2ee.test.js +124 -0
- package/server/lib/relay/host-client.js +389 -0
- package/server/lib/relay/host-client.test.js +292 -0
- package/server/lib/relay/identity.js +93 -0
- package/server/lib/relay/identity.test.js +78 -0
- package/server/lib/relay/service.js +9 -0
- package/server/lib/relay/signing-key.js +73 -0
- package/server/lib/relay/tunnel-codec.js +373 -0
- package/server/lib/relay/tunnel-codec.test.js +58 -0
- package/server/lib/relay/tunnel-host.js +465 -0
- package/server/lib/security/bind-host.js +40 -0
- package/server/lib/security/bind-host.test.js +36 -0
- package/server/lib/security/packaged-client-origins.js +11 -0
- package/server/lib/security/request-security.js +122 -0
- package/server/lib/security/request-security.test.js +57 -0
- package/server/lib/server/cli-entry-runtime.js +44 -0
- package/server/lib/server/cli-options.js +132 -0
- package/server/lib/server/core-routes.js +1041 -0
- package/server/lib/server/cors.js +51 -0
- package/server/lib/server/cors.test.js +37 -0
- package/server/lib/server/lan-addresses.js +41 -0
- package/server/lib/server/lan-addresses.test.js +42 -0
- package/server/lib/server/path-utils.js +27 -0
- package/server/lib/server/tunnel-auth.js +586 -0
- package/server/lib/terminal/DOCUMENTATION.md +48 -0
- package/server/lib/terminal/history.js +83 -0
- package/server/lib/terminal/history.test.js +19 -0
- package/server/lib/terminal/runtime.js +391 -0
- package/server/lib/terminal/runtime.test.js +566 -0
- package/server/lib/terminal/shells.js +100 -0
- package/server/lib/terminal/shells.test.js +73 -0
- package/server/lib/terminal/terminal-ws-protocol.js +68 -0
- package/server/lib/terminal/terminal-ws-protocol.test.js +145 -0
- package/server/lib/terminal/theme-response.js +98 -0
- package/server/lib/terminal/theme-response.test.js +70 -0
- package/server/lib/tunnels/DOCUMENTATION.md +33 -0
- package/server/lib/tunnels/executable-search.js +140 -0
- package/server/lib/tunnels/executable-search.test.js +96 -0
- package/server/lib/tunnels/install-help.js +56 -0
- package/server/lib/tunnels/install-help.test.js +31 -0
- package/server/lib/tunnels/providers/cloudflare.js +54 -0
- package/server/lib/tunnels/providers/ngrok.js +32 -0
- package/server/lib/tunnels/types.js +16 -0
- package/server/lib/ui-auth/DOCUMENTATION.md +44 -0
- package/server/lib/ui-auth/ui-auth.js +972 -0
- package/server/lib/ui-auth/ui-auth.test.js +250 -0
- package/server/lib/ui-auth/ui-passkeys.js +543 -0
- package/server/lib/workspace/host.js +91 -0
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import{j as t,R as n,b as bo}from"./vendor-react-DYyjh7Q0.js";import{G as wo,H as yo,I as jo,l as No,R as Es,j as Ee,u as ue,bv as ko,x as Rs,J as Co,r as Ds,N as rn,d as So,bw as Fo,M as Eo,bx as Ro}from"./index-CRB7i1S2.js";import{f as $,a1 as vr,B as S,T as Ye,y as Xe,I as v,z as Ze,dy as Do,K as zo,aF as Po,aG as Mo,L as To,M as Lo,a_ as Oo,dz as zs,t as A,h as Ao,_ as nn,dv as fr,bm as Io,dA as sn,$ as Ps,dB as Ms,dw as Ts,dx as Bo,dC as $o,dD as Vo,aU as Wo,dE as Ls,D as da,C as fa,E as ma,G as pa,H as ha,J as ga,az as pn,aA as hn,F as hr,aB as gn,aC as gr,a$ as an,a0 as on,bC as Os,aX as _o,aY as qo,dF as _t,aE as br,aZ as Ho,aD as Ko}from"./useAppFontEffects-DXASDavv.js";import{m as Go,o as Uo,p as Jo,q as Yo,v as Xo}from"./TerminalView-DUwO1CCY.js";import{E as Zo,o as ut,k as xn,i as xa,a as Qo,S as ei}from"./vendor-codemirror-state-Wdz6Qsow.js";import{s as ti,d as ri,E as se,e as ni,f as As,k as cn,V as va,D as yr,W as si}from"./vendor-codemirror-view-pXtfpqbT.js";import{h as ai,k as oi,l as ii,j as ci}from"./vendor-codemirror-commands-Bzf12ODH.js";import{i as li,y as ui,H as Is,x as mr,z as di}from"./vendor-codemirror-language-BuDklWi8.js";import{a as Bs,g as wr,b as $s,c as Vs,o as fi,d as mi}from"./vendor-codemirror-search-BzyfPoRb.js";import{v as pi,g as hi}from"./vendor-replit-codemirror-vim-BUqe2Slv.js";import{F as gi,J as xi}from"./JsonTreeView-DbFqka3P.js";import{a as d,c as vi}from"./vendor-lezer-highlight-CDMHUZ74.js";import{ensurePierreThemeRegistered as Ws,getResolvedShikiTheme as bi}from"./appThemeRegistry-BK0dHKa6.js";import{D as wi}from"./DiagramEditor-ig5nYV6t.js";import{I as _s,a as yi,u as ji,n as Ni}from"./useInlineCommentController-KJFe98HG.js";import{u as pr}from"./useOpenInAppsStore-DHAeT9zx.js";import"./vendor-scheduler-7OC5HNn7.js";import"./vendor-zustand-CnsBKjP5.js";import"./vendor-simplewebauthn-browser-VDA66rT_.js";import"./vendor-vite-runtime-DD1OZmLC.js";import"./vendor-base-ui-DwfTg5wD.js";import"./vendor-floating-ui-utils-BzXdqYpP.js";import"./vendor-floating-ui-react-dom-sVFnuruh.js";import"./vendor-floating-ui-dom-Bkw82kL9.js";import"./vendor-floating-ui-core-CXmKXOXc.js";import"./vendor-use-sync-external-store-B7OScDIw.js";import"./runtimeSurface-Cnqjhb6Y.js";import"./vendor-dnd-kit-core-GipZW2tY.js";import"./vendor-dnd-kit-utilities-CrOcp0Bp.js";import"./vendor-dnd-kit-accessibility-Cv52zwWT.js";import"./vendor-dnd-kit-sortable-Ct2QxIHb.js";import"./vendor-cmdk-BCEUzcHE.js";import"./vendor-radix-ui-react-dialog-jX3Dld8c.js";import"./vendor-radix-ui-primitive-Dc_FVRD7.js";import"./vendor-radix-ui-react-compose-refs-D1GnwnP9.js";import"./vendor-radix-ui-react-context-CM4yFQ2I.js";import"./vendor-radix-ui-react-id-BcxRjnbX.js";import"./vendor-radix-ui-react-use-layout-effect-0fyGwS2_.js";import"./vendor-radix-ui-react-use-controllable-state-C_ecoh35.js";import"./vendor-radix-ui-react-dismissable-layer-M7LsH3yL.js";import"./vendor-radix-ui-react-primitive-CfpW6_IT.js";import"./vendor-radix-ui-react-slot-BxUc3Pvz.js";import"./vendor-radix-ui-react-use-callback-ref-UKEWHtoP.js";import"./vendor-radix-ui-react-use-escape-keydown-Co13lHGj.js";import"./vendor-radix-ui-react-focus-scope-C2K7lNPv.js";import"./vendor-radix-ui-react-portal-xlJWBfDg.js";import"./vendor-radix-ui-react-presence-Btn-Dp7L.js";import"./vendor-radix-ui-react-focus-guards-D5MZ0nQs.js";import"./vendor-react-remove-scroll-CfeMe0DL.js";import"./vendor-tslib-De9GV7Vy.js";import"./vendor-react-remove-scroll-bar-C9YRs2nU.js";import"./vendor-react-style-singleton-B1H4bWSG.js";import"./vendor-get-nonce-C-Z93AgS.js";import"./vendor-use-sidecar-C-AuTczP.js";import"./vendor-use-callback-ref-CJB0R85I.js";import"./vendor-aria-hidden-DvXkyWUv.js";import"./vendor-codemirror-lang-javascript-CrbeaEAU.js";import"./vendor-lezer-javascript-D7Tj24ot.js";import"./vendor-lezer-lr-bhwg1HMg.js";import"./vendor-lezer-common-B3-cUCR_.js";import"./vendor-codemirror-autocomplete-3xMyV7a2.js";import"./vendor-style-mod-NZ5MEPvj.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-BTvAjwkJ.js";import"./vendor-lezer-json-Iaex0UN-.js";import"./vendor-codemirror-lang-css-C4jEScp7.js";import"./vendor-lezer-css-C5xB6jxd.js";import"./vendor-codemirror-lang-html-C1Svvdey.js";import"./vendor-lezer-html-C0I1p52t.js";import"./vendor-codemirror-lang-markdown-BloD9GN-.js";import"./vendor-lezer-markdown-C6g-d6P3.js";import"./vendor-codemirror-language-data-CFVH0pe8.js";import"./vendor-codemirror-lang-python-CR2g6ukK.js";import"./vendor-lezer-python-CvuFxeZl.js";import"./vendor-class-variance-authority-5VPnzWs2.js";import"./vendor-clsx-B-dksMZM.js";import"./vendor-tanstack-react-virtual-IrbCBGJ4.js";import"./vendor-tanstack-virtual-core-Dubg10g5.js";import"./vendor-framer-motion-DJASDzNt.js";import"./vendor-motion-dom-DJLgZh4Q.js";import"./vendor-motion-utils-BGh8QBgx.js";import"./vendor-sonner-dWA7qvjr.js";import"./vendor-tailwind-merge-CPcsbTWB.js";import"./vendor-fuse.js-Dw8P0qyA.js";import"./web-components-CNPQSzpa.js";import"./computeVirtualFileMetrics-DdXkLFAD.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"./Virtualizer-BxW2CJGB.js";import"./isFilePlainText-BcfhE9FH.js";import"./registerCustomTheme-BBXUCRnG.js";import"./vendor-react-drawio-Boqanm0j.js";import"./collapsible-ODWWxk4f.js";function ki(r){const{drafts:a,editingDraftId:u,commentText:f,onTextChange:x,selection:p,isDragging:b,fileLabel:g,newWidgetId:y,mapDraftToRange:E,onSave:k,onCancel:L,onEdit:M,onDelete:R}=r,P=[];for(const o of a){const K=E(o);if(o.id===u){P.push({afterLine:K.end,id:`edit-${o.id}`,content:t.jsx(_s,{initialText:f,onTextChange:x,fileLabel:g,lineRange:K,isEditing:!0,onSave:k,onCancel:L},`edit-${o.id}`)});continue}P.push({afterLine:K.end,id:`card-${o.id}`,content:t.jsx(yi,{draft:o,onEdit:()=>M(o),onDelete:()=>R(o)},`card-${o.id}`)})}if(p&&!u&&!b){const o={...p,start:Math.min(p.start,p.end),end:Math.max(p.start,p.end)};P.push({afterLine:o.end,id:y,content:t.jsx(_s,{initialText:f,onTextChange:x,fileLabel:g,lineRange:o,isEditing:!1,onSave:k,onCancel:L},y)})}return P}const Ci=r=>r!==null&&typeof r=="object"&&"updateStatus"in r&&typeof r.updateStatus=="function",Si=r=>{const a=document.createElement("div");a.className="cm-vim-panel";const u=hi(r);if(!u)return{top:!1,dom:a};u.state.statusbar=a;const f=u.state.vimPlugin;return Ci(f)&&f.updateStatus(),{top:!1,dom:a,destroy(){u.state.statusbar===a&&(u.state.statusbar=null)}}};function qs(r){return r?[pi(),ti.of(Si),ri()]:[]}const Fi={next:"Next match",prev:"Previous match",select:"Select all matches",replace:"Replace",replaceAll:"Replace all",close:"Close"},Ei={case:"Match case",re:"Regular expression",word:"Match whole word"};function Ri(r){const a=r.querySelector(".cm-search");if(a){for(const[u,f]of Object.entries(Fi)){const x=a.querySelector(`button[name="${u}"]`);x&&!x.title&&(x.title=f)}for(const[u,f]of Object.entries(Ei)){const p=a.querySelector(`input[name="${u}"]`)?.parentElement;p&&!p.title&&(p.title=f)}}}const ln=new WeakMap;function Di(r,a){const u=wr(r.state);if(!u.valid)return ln.delete(r),0;const f=ln.get(r);if(!a&&f?.doc===r.state.doc&&f.query.eq(u))return f.total;const x=u.getCursor(r.state);let p=0;for(let b=x.next();!b.done;b=x.next())p+=1;return ln.set(r,{query:u,doc:r.state.doc,total:p}),p}function zi(r){const a=wr(r.state);if(!a.valid)return 0;const u=r.state.selection.main,f=a.getCursor(r.state);let x=0,p=0;for(let b=f.next();!b.done;b=f.next()){const g=b.value;if(x+=1,p===0&&(p=x),u.from===g.from&&u.to===g.to||u.from<g.to&&u.to>g.from||g.from>=u.head)return x}return p}function Hs(r,a,u=!1){const f=r.querySelector(".cm-search");if(!f)return;let x=f.querySelector(".cm-search-message");if(!x){x=document.createElement("span"),x.className="cm-search-message",x.setAttribute("aria-live","polite");const g=f.querySelector('button[name="next"]'),y=g?.parentNode===f?g:f.firstChild;f.insertBefore(x,y)}const p=Di(a,u),b=p===0?0:zi(a);x.textContent=p===0?"":`${b}/${p}`}const Ks=new ut,Gs=new ut,Us=new ut,Js=new ut,Ys=new ut,Xs=new ut,Zs=new ut,Qs=r=>r,un=ui,Pi=fi,Mi=mi;class Ti extends si{constructor(a,u){super(),this.id=a,this.containerMap=u}toDOM(){let a=this.containerMap.get(this.id);return a||(a=document.createElement("div"),a.className="oc-block-widget",a.dataset.widgetId=this.id,this.containerMap.set(this.id,a)),a}eq(a){return a.id===this.id}destroy(){}}const ea=(r,a)=>!r||r.length===0?[]:xa.define({create(u){const f=new xn,x=[...r].sort((p,b)=>p.afterLine-b.afterLine);for(const p of x){const b=u.doc.lines;if(p.afterLine>b)continue;const g=u.doc.line(p.afterLine);f.add(g.to,g.to,yr.widget({widget:new Ti(p.id,a),block:!0,side:1}))}return f.finish()},update(u,f){return u.map(f.changes)},provide:u=>se.decorations.from(u)}),ta=r=>{if(!r)return[];const a=Math.max(1,r.start),u=Math.max(a,r.end);return va.fromClass(class{decorations;constructor(f){this.decorations=this.build(f)}update(f){(f.docChanged||f.viewportChanged)&&(this.decorations=this.build(f.view))}build(f){const x=new xn;for(let p=a;p<=u&&p<=f.state.doc.lines;p+=1){const b=f.state.doc.line(p);x.add(b.from,b.from,yr.line({class:"oc-cm-selected-line"}))}return x.finish()}},{decorations:f=>f.decorations})};function ra({value:r,onChange:a,extensions:u,className:f,readOnly:x,lineNumbersConfig:p,highlightLines:b,onViewReady:g,onViewDestroy:y,blockWidgets:E,enableSearch:k,searchOpen:L,onSearchOpenChange:M,vimMode:R}){const P=n.useRef(null),o=n.useRef(null),K=n.useRef(r),xe=n.useRef(a),de=n.useRef(g),B=n.useRef(y),Ne=n.useRef(M),ae=n.useRef(E),Re=n.useRef(R),Oe=n.useRef(new Map),[dt,G]=n.useState([]),V=n.useCallback(w=>{const U=(w??[]).map(N=>{const T=Oe.current.get(N.id);return T?{id:N.id,content:N.content,container:T}:null}).filter(N=>N!==null);G(N=>N.length===U.length&&N.every((T,C)=>{const oe=U[C];return T.id===oe.id&&T.content===oe.content&&T.container===oe.container})?N:U)},[]),fe=n.useCallback(w=>{const U=P.current,N=w??o.current;if(!U||!N)return;const T=N.dom.querySelector(".cm-gutters"),C=T instanceof HTMLElement?T.getBoundingClientRect().width:0;U.style.setProperty("--oc-editor-gutter-width",`${C}px`)},[]);return n.useEffect(()=>{K.current=r},[r]),n.useEffect(()=>{xe.current=a},[a]),n.useEffect(()=>{de.current=g,B.current=y},[g,y]),n.useEffect(()=>{Ne.current=M},[M]),n.useEffect(()=>{ae.current=E,V(E)},[E,V]),n.useEffect(()=>{if(!P.current)return;const w=(()=>{if(typeof document>"u")return null;const N=document.querySelector('meta[name="csp-nonce"]')?.getAttribute("content");if(N)return N;const T=window.__PICHAMBER_CSP_NONCE__;return typeof T=="string"&&T.length>0?T:null})(),U=Zo.create({doc:K.current,extensions:[...w?[se.cspNonce.of(w)]:[],ni({fixed:!0}),Ks.of(As(p)),ai(),li.of(" "),Zs.of(qs(R)),cn.of([oi,...ii,...ci]),se.updateListener.of(N=>{fe(N.view),(N.viewportChanged||N.geometryChanged)&&V(ae.current);const T=Bs(N.startState),C=Bs(N.state);T!==C&&Ne.current?.(C);const oe=!wr(N.startState).eq(wr(N.state));if(C&&(T!==C||oe||N.docChanged||N.selectionSet)&&Hs(N.view.dom,N.view,T!==C||oe||N.docChanged),!N.docChanged)return;const O=N.state.doc.toString();K.current=O,xe.current(O),V(ae.current)}),Gs.of(se.editable.of(!x)),Us.of(u??[]),Js.of(ta(b)),Ys.of(ea(E,Oe.current)),Xs.of(k?[$s({top:!0}),cn.of(Qs(Vs))]:[])]});return o.current=new se({state:U,parent:P.current}),un(o.current,o.current.state.doc.length,200),o.current.requestMeasure(),requestAnimationFrame(()=>{fe(o.current),V(ae.current)}),o.current&&de.current?.(o.current),()=>{B.current?.(),o.current?.destroy(),o.current=null,G([])}},[ae,fe,V]),n.useEffect(()=>{const w=o.current;w&&(w.dispatch({effects:[Ks.reconfigure(As(p)),Gs.reconfigure(se.editable.of(!x)),Us.reconfigure(u??[]),Js.reconfigure(ta(b)),Ys.reconfigure(ea(E,Oe.current)),Xs.reconfigure(k?[$s({top:!0}),cn.of(Qs(Vs))]:[])]}),un(w,w.state.doc.length,200),w.requestMeasure(),requestAnimationFrame(()=>{fe(w),V(ae.current)}))},[u,b,p,x,E,k,fe,V]),n.useEffect(()=>{const w=o.current;if(!w){Re.current=R;return}Re.current!==R&&(Re.current=R,w.dispatch({effects:Zs.reconfigure(qs(R))}))},[R]),n.useEffect(()=>{const w=o.current;!w||k===!1||(L?(Pi(w),requestAnimationFrame(()=>{Ri(w.dom),Hs(w.dom,w,!0)})):Mi(w))},[L,k]),n.useEffect(()=>{const w=o.current;if(!w)return;const U=w.state.doc.toString();U!==r&&(w.dispatch({changes:{from:0,to:U.length,insert:r}}),un(w,w.state.doc.length,300),w.requestMeasure(),requestAnimationFrame(()=>fe(w)))},[r,fe]),t.jsxs(t.Fragment,{children:[t.jsx("div",{ref:P,className:$("h-full w-full","[&_.cm-editor]:h-full [&_.cm-editor]:w-full","[&_.cm-scroller]:font-mono [&_.cm-scroller]:text-[var(--text-code)] [&_.cm-scroller]:leading-6","[&_.cm-lineNumbers]:text-[var(--tools-edit-line-number)]",f)}),dt.map(w=>bo.createPortal(w.content,w.container,w.id))]})}const Li=(r,a)=>{if(!a)return null;const u=Number.parseInt(r.trim(),10);return!Number.isFinite(u)||u<1?null:Math.min(u,a.state.doc.lines)},na=(r,a)=>{const u=r.state.doc.lineAt(a.main.head);return{lineNumber:u.number,character:a.main.head-u.from+1,selection:a}},sa=(r,a,u)=>{const f=r.state.doc.line(a),x=Math.max(1,Math.min(u,f.length+1)),p=f.from+x-1;r.dispatch({selection:Qo.cursor(p),effects:se.scrollIntoView(p,{y:"center"})})};function Oi({open:r,onOpenChange:a,view:u,variant:f="overlay"}){const[x,p]=n.useState(""),b=n.useRef(null),g=n.useRef(!1),y=n.useRef(null),E=n.useRef(null),k=n.useMemo(()=>Li(x,u),[x,u]);n.useEffect(()=>{!r||!u||(g.current=!1,b.current=na(u,u.state.selection),p(""))},[r,u]),n.useEffect(()=>{r&&window.requestAnimationFrame(()=>{E.current?.focus(),E.current?.select()})},[r]),n.useEffect(()=>{if(!(!r||!u||!b.current)){if(k===null){const{selection:o}=b.current;u.dispatch({selection:o,effects:se.scrollIntoView(o.main.from,{y:"center"})});return}sa(u,k,b.current.character)}},[k,r,u]);const L=n.useCallback(()=>{if(!u||g.current||!b.current)return;const{selection:o}=b.current;u.dispatch({selection:o,effects:se.scrollIntoView(o.main.from,{y:"center"})})},[u]),M=n.useCallback(o=>{o||L(),a(o)},[a,L]),R=n.useCallback(()=>{!u||k===null||!b.current||(g.current=!0,sa(u,k,b.current.character),a(!1),u.focus())},[k,a,u]);n.useEffect(()=>{if(!r)return;const o=xe=>{const de=y.current,B=xe.target;!de||!(B instanceof Node)||de.contains(B)||M(!1)},K=xe=>{xe.key==="Escape"&&(xe.preventDefault(),M(!1))};return document.addEventListener("pointerdown",o,!0),document.addEventListener("keydown",K,!0),()=>{document.removeEventListener("pointerdown",o,!0),document.removeEventListener("keydown",K,!0)}},[M,r,f]);const P=n.useMemo(()=>u?k===null?`Current Line: ${(b.current??na(u,u.state.selection)).lineNumber}. Type a line number between 1 and ${u.state.doc.lines} to navigate to.`:`Go to line ${k}`:"Editor unavailable.",[k,u]);return f==="inline"?r?t.jsxs("div",{ref:y,className:"ml-1 flex h-6 items-center gap-1",children:[t.jsx(vr,{ref:E,type:"number",min:1,step:1,inputMode:"numeric",value:x,onChange:o=>p(o.target.value),onKeyDown:o=>{o.key==="Enter"&&(o.preventDefault(),R())},placeholder:"Line",className:"h-6 w-20 rounded-md border-border/70 bg-transparent px-2 typography-meta"}),t.jsx(S,{variant:"outline",size:"xs",onClick:R,disabled:!u||k===null,className:"h-6 px-2",children:"Go"})]}):null:t.jsx("div",{ref:y,className:$("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",r?"pointer-events-auto translate-y-0 opacity-100":"pointer-events-none -translate-y-1 opacity-0"),children:t.jsxs("div",{className:"min-w-0",children:[t.jsx(vr,{ref:E,type:"number",min:1,step:1,inputMode:"numeric",value:x,onChange:o=>p(o.target.value),onKeyDown:o=>{o.key==="Enter"&&(o.preventDefault(),R())},placeholder:"Line number",className:"h-8 w-full rounded-md border-border/70 bg-background/60 typography-ui-label"}),t.jsx("div",{className:"mt-2 rounded-md bg-primary/15 px-3 py-1.5 typography-ui-label text-foreground/95",children:P})]})})}const dn=({currentMode:r,onToggle:a})=>{const u=r==="preview",f=u?"Switch to edit mode":"Switch to preview mode",x=u?"Edit":"Preview";return t.jsxs(Ye,{children:[t.jsx(Xe,{asChild:!0,children:t.jsx(S,{variant:"ghost",size:"sm",onClick:a,"aria-label":f,className:"h-5 w-5 p-0",children:u?t.jsx(v,{name:"eye",className:"size-4","aria-hidden":"true"}):t.jsx(v,{name:"eye-off",className:"size-4","aria-hidden":"true"})})}),t.jsx(Ze,{sideOffset:8,children:x})]})};function aa(r,a){const u=r.metadata.variant==="dark",f=r.config?.fonts?.mono||"monospace",x=r.colors.syntax.highlights||{},p=r.colors.syntax.tokens||{},b=a?.fontSize?`${a.fontSize}px`:"var(--text-code)",g=se.theme({"&":{backgroundColor:"var(--background)",color:r.colors.syntax.base.foreground,fontSize:b,lineHeight:"1.5",position:"relative"},".cm-scroller":{fontFamily:f,backgroundColor:"var(--background)"},".cm-comment":{color:r.colors.syntax.base.comment},".cm-keyword":{color:r.colors.syntax.base.keyword},".cm-string":{color:r.colors.syntax.base.string},".cm-string-2":{color:p.stringEscape||r.colors.syntax.base.string},".cm-number":{color:r.colors.syntax.base.number},".cm-operator":{color:r.colors.syntax.base.operator},".cm-punctuation":{color:p.punctuation||r.colors.syntax.base.comment},".cm-atom":{color:p.boolean||r.colors.syntax.base.number},".cm-builtin":{color:p.functionCall||r.colors.syntax.base.function},".cm-def":{color:p.variableGlobal||r.colors.syntax.base.variable},".cm-attribute":{color:p.variableOther||p.variableProperty||r.colors.syntax.base.operator},".cm-meta":{color:r.colors.syntax.base.comment},".cm-property":{color:p.variableProperty||r.colors.syntax.base.keyword},".cm-variable":{color:r.colors.syntax.base.variable},".cm-variable-2":{color:p.variableOther||r.colors.syntax.base.function},".cm-variable-3":{color:p.variableGlobal||r.colors.syntax.base.type},".cm-tag":{color:p.tag||r.colors.syntax.base.keyword},".cm-link":{color:p.url||r.colors.syntax.base.keyword,textDecoration:"underline"},".cm-content":{caretColor:r.colors.interactive.cursor},".cm-cursor, .cm-dropCursor":{borderLeftColor:r.colors.interactive.cursor},"&.cm-focused .cm-selectionBackground, .cm-selectionBackground, ::selection":{backgroundColor:r.colors.interactive.selection},".cm-gutters":{backgroundColor:"var(--background)",color:x.lineNumber||r.colors.syntax.base.comment,borderRight:`1px solid ${r.colors.interactive.border}`,position:"sticky",paddingRight:"8px",left:0,zIndex:2,boxShadow:"0 0 0 var(--background)"},".cm-gutter":{backgroundColor:"var(--background)"},".cm-gutterElement":{backgroundColor:"var(--background)"},".cm-lineNumbers":{backgroundColor:"var(--background)"},".cm-lineNumbers .cm-gutterElement":{paddingLeft:"8px",paddingRight:"8px",minWidth:"42px"},".cm-activeLineGutter":{color:x.lineNumberActive||r.colors.syntax.base.foreground},".cm-activeLine":{backgroundColor:r.colors.surface.overlay},".cm-panels":{backgroundColor:"transparent",color:r.colors.surface.foreground,position:"absolute",top:"0",right:"0",left:"auto",width:"auto",zIndex:10,pointerEvents:"none"},".cm-panels-top":{borderBottom:"none",position:"absolute",top:"6px",right:"14px",left:"auto",width:"auto"},".cm-panels-bottom":{position:"static",width:"100%",pointerEvents:"auto"},".cm-panels-bottom .cm-vim-panel":{borderTop:`1px solid ${r.colors.interactive.border}`,backgroundColor:r.colors.surface.elevated,color:r.colors.surface.mutedForeground,fontFamily:"var(--font-mono)",fontSize:"12px",minHeight:"22px",padding:"2px 8px"},".cm-panel.cm-search":{pointerEvents:"auto",padding:"4px",backgroundColor:`color-mix(in srgb, ${r.colors.surface.elevated} 85%, transparent)`,border:`1px solid ${r.colors.interactive.border}`,borderRadius:"10px",boxShadow:`0 2px 8px color-mix(in srgb, ${r.colors.surface.background} 60%, transparent)`,width:"auto",minWidth:"360px",maxWidth:"480px"},".cm-search":{display:"flex",flexWrap:"wrap",alignItems:"center",gap:"0",width:"100%",color:r.colors.surface.foreground,fontFamily:"inherit",fontSize:"13px",lineHeight:"1"},".cm-search br":{display:"none"},".cm-search .cm-textfield":{appearance:"none",height:"26px",margin:0,padding:"0 8px",borderRadius:"6px !important",border:`1px solid ${r.colors.interactive.border}`,backgroundColor:r.colors.surface.background,color:r.colors.surface.foreground,fontFamily:"inherit",fontSize:"12px",lineHeight:"1",outline:"none",transition:"border-color 150ms ease"},".cm-search .cm-textfield::placeholder":{color:r.colors.surface.mutedForeground,opacity:1},".cm-search .cm-textfield:focus":{borderColor:r.colors.primary.base},'.cm-search .cm-textfield[name="search"]':{order:1,flex:"1 1 120px",maxWidth:"calc(100% - 142px)",minWidth:"100px"},".cm-search label":{order:2,display:"inline-flex",alignItems:"center",justifyContent:"center",width:"26px",height:"26px",minWidth:"26px",flexShrink:"0",margin:0,marginLeft:"1px",padding:0,borderRadius:"4px",border:"1px solid transparent",backgroundColor:"transparent",color:"transparent",cursor:"pointer",userSelect:"none",fontSize:"1px",lineHeight:"0",overflow:"hidden",position:"relative",transition:"background-color 120ms ease, border-color 120ms ease"},".cm-search label:hover":{backgroundColor:r.colors.interactive.hover},'.cm-search label:has(input[type="checkbox"]:checked)':{backgroundColor:r.colors.interactive.hover,borderColor:r.colors.interactive.border},'.cm-search [type="checkbox"]':{appearance:"none",WebkitAppearance:"none",width:"0",height:"0",margin:"0",padding:"0",border:"none",position:"absolute",opacity:"0",pointerEvents:"none"},".cm-search label::after":{position:"absolute",top:"50%",left:"50%",transform:"translate(-50%, -50%)",fontSize:"13px",fontWeight:"600",lineHeight:"1",fontFamily:"inherit",color:r.colors.surface.mutedForeground,pointerEvents:"none"},".cm-search label:hover::after":{color:r.colors.surface.foreground},'.cm-search label:has(input[type="checkbox"]:checked)::after':{color:r.colors.surface.foreground},'.cm-search label:has(input[name="case"])::after':{content:'"Aa"',fontSize:"12px",letterSpacing:"-0.5px"},'.cm-search label:has(input[name="re"])::after':{content:'".*"',fontSize:"13px",fontFamily:"monospace"},'.cm-search label:has(input[name="word"])::after':{content:'"ab"',fontSize:"12px",textDecoration:"underline",textUnderlineOffset:"2px"},".cm-search .cm-search-message":{order:3,color:r.colors.surface.mutedForeground,backgroundColor:"transparent",border:"none",borderRadius:"0",padding:"0 6px",fontSize:"11px",whiteSpace:"nowrap",lineHeight:"26px"},".cm-search .cm-button":{appearance:"none",WebkitAppearance:"none",display:"inline-flex",alignItems:"center",justifyContent:"center",width:"26px",height:"26px",minWidth:"26px",flexShrink:"0",margin:0,marginLeft:"1px",padding:0,borderRadius:"4px",border:"none",backgroundColor:"transparent",backgroundImage:"none",color:"transparent",cursor:"pointer",fontSize:"1px",fontWeight:"400",lineHeight:"0",overflow:"hidden",position:"relative",boxShadow:"none",transition:"background-color 120ms ease"},".cm-search .cm-button::after":{position:"absolute",top:"50%",left:"50%",transform:"translate(-50%, -50%)",fontSize:"15px",lineHeight:"1",color:r.colors.surface.mutedForeground,pointerEvents:"none"},".cm-search .cm-button:hover":{backgroundColor:r.colors.interactive.hover},".cm-search .cm-button:hover::after":{color:r.colors.surface.foreground},".cm-search .cm-button:active":{backgroundColor:r.colors.interactive.active},".cm-search .cm-button:focus-visible":{outline:"none",boxShadow:`0 0 0 1px ${r.colors.interactive.focusRing}`},".cm-search .cm-button:disabled":{opacity:.4,cursor:"default",pointerEvents:"none"},'.cm-search .cm-button[name="prev"]':{order:21,marginTop:"2px"},'.cm-search .cm-button[name="prev"]::after':{content:'"↑"'},'.cm-search .cm-button[name="next"]':{order:22,marginTop:"2px"},'.cm-search .cm-button[name="next"]::after':{content:'"↓"'},'.cm-search .cm-button[name="select"]':{order:23,marginTop:"2px"},'.cm-search .cm-button[name="select"]::after':{content:'"≡"',fontSize:"17px"},'.cm-panel.cm-search button[name="close"]':{order:5,appearance:"none",WebkitAppearance:"none",display:"inline-flex",alignItems:"center",justifyContent:"center",width:"26px",height:"26px",minWidth:"26px",flexShrink:"0",margin:"0 0 0 auto",padding:"0",borderRadius:"4px",border:"none",backgroundColor:"transparent",backgroundImage:"none",color:r.colors.surface.mutedForeground,cursor:"pointer",fontSize:"16px",lineHeight:"1",boxShadow:"none",position:"relative",overflow:"visible",transition:"background-color 120ms ease, color 120ms ease"},'.cm-panel.cm-search button[name="close"]:hover':{backgroundColor:r.colors.interactive.hover,color:r.colors.surface.foreground},'.cm-search .cm-button[name="replace"]':{order:24,marginTop:"2px"},'.cm-search .cm-button[name="replace"]::after':{content:'"⇄"'},'.cm-search .cm-button[name="replaceAll"], .cm-search .cm-button[name="replace-all"]':{order:25,marginTop:"2px"},'.cm-search .cm-button[name="replaceAll"]::after, .cm-search .cm-button[name="replace-all"]::after':{content:'"⇉"'},'.cm-search .cm-textfield[name="replace"]':{order:20,flex:"1 1 100%",maxWidth:"calc(100% - 142px)",minWidth:"80px",marginTop:"2px"},".cm-searchMatch":{backgroundColor:r.colors.status.infoBackground,boxShadow:`inset 0 0 0 1px ${r.colors.status.infoBorder}`,borderRadius:"2px"},".cm-searchMatch.cm-searchMatch-selected":{backgroundColor:r.colors.interactive.selection,color:r.colors.interactive.selectionForeground,boxShadow:`inset 0 0 0 1px ${r.colors.interactive.borderFocus}`},"&.cm-focused":{outline:"none"}},{dark:u}),y=Is.define([{tag:[d.comment,d.docComment,d.meta,d.documentMeta],class:"cm-comment"},{tag:[d.keyword,d.controlKeyword,d.moduleKeyword,d.definitionKeyword,d.modifier],class:"cm-keyword"},{tag:[d.operatorKeyword,d.operator,d.derefOperator,d.updateOperator,d.definitionOperator,d.typeOperator,d.controlOperator,d.logicOperator,d.bitwiseOperator,d.arithmeticOperator,d.compareOperator],class:"cm-operator"},{tag:[d.punctuation,d.separator,d.bracket,d.paren,d.brace,d.squareBracket,d.angleBracket],class:"cm-punctuation"},{tag:[d.string,d.regexp,d.attributeValue,d.special(d.string),d.monospace],class:"cm-string"},{tag:d.escape,class:"cm-string-2"},{tag:[d.number,d.bool,d.atom,d.null,d.self],class:"cm-number"},{tag:[d.function(d.variableName),d.function(d.definition(d.variableName)),d.function(d.propertyName),d.standard(d.variableName),d.special(d.variableName)],class:"cm-builtin"},{tag:d.definition(d.variableName),class:"cm-def"},{tag:[d.variableName,d.local(d.variableName),d.constant(d.variableName),d.literal],class:"cm-variable"},{tag:d.propertyName,class:"cm-property"},{tag:d.attributeName,class:"cm-attribute"},{tag:[d.className,d.typeName,d.namespace],class:"cm-variable-3"},{tag:[d.tagName,d.labelName,d.annotation,d.macroName],class:"cm-tag"},{tag:d.link,class:"cm-link"},{tag:[d.heading,d.heading1,d.heading2,d.heading3,d.heading4,d.heading5,d.heading6],class:"cm-keyword"}]),E=Is.define([{tag:[d.comment,d.docComment,d.meta,d.documentMeta],color:r.colors.syntax.base.comment},{tag:[d.keyword,d.controlKeyword,d.moduleKeyword,d.definitionKeyword,d.modifier],color:r.colors.syntax.base.keyword},{tag:[d.operatorKeyword,d.operator,d.derefOperator,d.updateOperator,d.definitionOperator,d.typeOperator,d.controlOperator,d.logicOperator,d.bitwiseOperator,d.arithmeticOperator,d.compareOperator],color:r.colors.syntax.base.operator},{tag:[d.string,d.regexp,d.attributeValue,d.special(d.string),d.monospace],color:r.colors.syntax.base.string},{tag:d.escape,color:p.stringEscape||r.colors.syntax.base.string},{tag:[d.number,d.bool,d.atom,d.null,d.self],color:r.colors.syntax.base.number},{tag:[d.function(d.variableName),d.function(d.definition(d.variableName)),d.function(d.propertyName),d.standard(d.variableName),d.special(d.variableName)],color:r.colors.syntax.base.function},{tag:d.definition(d.variableName),color:p.variableGlobal||r.colors.syntax.base.variable},{tag:[d.variableName,d.local(d.variableName),d.constant(d.variableName),d.literal],color:r.colors.syntax.base.variable},{tag:d.propertyName,color:p.variableProperty||r.colors.syntax.base.variable},{tag:d.attributeName,color:p.variableOther||r.colors.syntax.base.variable},{tag:[d.className,d.typeName,d.namespace],color:r.colors.syntax.base.type},{tag:[d.tagName,d.labelName,d.annotation,d.macroName],color:p.tag||r.colors.syntax.base.keyword},{tag:d.link,color:p.url||r.colors.syntax.base.function,textDecoration:"underline"},{tag:[d.punctuation,d.separator,d.bracket,d.paren,d.brace,d.squareBracket,d.angleBracket],color:p.punctuation||r.colors.syntax.base.comment}]);return a?.syntaxColors===!1?[g]:[g,mr(di,{fallback:!0}),mr(vi),mr(y),mr(E)]}const Ai=180,ba=ei.define(),Ii=1,Bi=2,$i=4,oa=new Map,Vi=(r,a)=>{const u=`${r}|${a}`,f=oa.get(u);if(f)return f;let x="";r&&(x+=`color:${r};`),a&Ii&&(x+="font-style:italic;"),a&Bi&&(x+="font-weight:bold;"),a&$i&&(x+="text-decoration:underline;");const p=yr.mark({attributes:{style:x}});return oa.set(u,p),p},Wi=(r,a)=>{const u=new xn,f=r.state.doc,x=Math.min(a.length,f.lines);for(let p=0;p<x;p+=1){const b=a[p];if(!b||b.length===0)continue;const g=f.line(p+1);let y=g.from;for(const[E,k,L]of b){if(E<=0)continue;const M=y,R=Math.min(y+E,g.to);y+=E,!(R<=M)&&(!k&&!L||u.add(M,R,Vi(k,L)))}}return u.finish()},_i=xa.define({create(){return yr.none},update(r,a){let u=r.map(a.changes);for(const f of a.effects)f.is(ba)&&(u=f.value);return u},provide:r=>se.decorations.from(r)}),qi=r=>va.fromClass(class{timer;generation=0;constructor(a){this.tokenize(a)}update(a){a.docChanged&&this.schedule(a.view)}schedule(a){this.timer&&clearTimeout(this.timer),this.timer=setTimeout(()=>{this.timer=void 0,this.tokenize(a)},Ai)}async tokenize(a){const u=++this.generation,f=a.state.doc.toString(),x=await Do(f,r.language,r.themeName,r.theme);x&&u===this.generation&&a.state.doc.length===f.length&&a.dispatch({effects:ba.of(Wi(a,x))})}destroy(){this.timer&&clearTimeout(this.timer)}}),Hi=r=>[_i,qi(r)];function Ki(r){return!(!r.autoSaveEnabled||!r.isDirty||!r.canWrite||r.isSaving||r.fileLoading||r.isNonEditableBinary||!r.selectedFilePath||r.loadedFilePath!==r.selectedFilePath)}function Gi(r){return r.selectedFilePath?r.isDirty?!(r.fileLoading||r.loadedFilePath!==r.selectedFilePath||r.isNonEditableBinary||r.draftContent===""&&r.fileContent!==""&&r.loadedFilePath!==r.selectedFilePath):!0:!1}const Ui=r=>{const a=I(r);if(!a)return"";if(a==="/"||/^[A-Za-z]:\/$/.test(a))return a;const u=a.lastIndexOf("/");if(u<0)return a;if(u===0)return"/";const f=a.slice(0,u);return/^[A-Za-z]:$/.test(f)?`${f}/`:f},Ji=({label:r,iconDataUrl:a})=>{const[u,f]=n.useState(!1),x=r.trim().slice(0,1).toUpperCase()||"?";return a&&!u?t.jsx("img",{src:a,alt:"",className:"size-4 rounded-sm",onError:()=>f(!0)}):t.jsx("span",{className:$("size-4 rounded-sm flex items-center justify-center","bg-[var(--surface-muted)] text-[9px] font-medium text-muted-foreground"),children:x})},Yi=r=>r.slice().sort((a,u)=>a.type!==u.type?a.type==="directory"?-1:1:a.name.localeCompare(u.name)),I=r=>{if(!r)return"";const a=r.replace(/\\/g,"/"),u=a.startsWith("//");let f=a.replace(/\/+/g,"/");u&&!f.startsWith("//")&&(f=`/${f}`);const x=f==="/",p=/^[A-Za-z]:\/$/.test(f);return!x&&!p&&(f=f.replace(/\/+$/,"")),f},Xi=r=>r.startsWith("/")||r.startsWith("//")||/^[A-Za-z]:\//.test(r),Et=r=>/^[A-Za-z]:\//.test(r)?r.toLowerCase():r,Ht=(r,a)=>{const u=I(a),f=I(r);if(!u||!f)return!1;const x=Et(u),p=Et(f);return p===x||p.startsWith(`${x}/`)},ia=(r,a)=>{const u=I(a),f=I(r);if(!Ht(f,u))return[];const p=f.slice(u.length).replace(/^\//,"").split("/"),b=[];let g=u;for(let y=0;y<p.length-1;y++)g=g?`${g}/${p[y]}`:p[y],b.push(g);return b},xr=(r,a)=>{if(!a)return"";const u=I(a);if(!r||!Ht(u,r))return u;const f=u.slice(r.length);return f.startsWith("/")?f.slice(1):f},Zi=new Set(["node_modules"]),Qi=({status:r})=>{const a={open:"var(--status-info)",modified:"var(--status-warning)","git-modified":"var(--status-warning)","git-added":"var(--status-success)","git-deleted":"var(--status-error)"}[r];return t.jsx("span",{className:"size-2 rounded-full",style:{backgroundColor:a}})},ca=({name:r})=>{const a=n.useRef(null),u=n.useRef(null),[f,x]=n.useState(!1);return n.useLayoutEffect(()=>{const p=a.current,b=u.current;if(!p||!b)return;const g=()=>{x(b.scrollWidth>p.clientWidth+1)};g();const y=new ResizeObserver(g);return y.observe(p),y.observe(b),()=>{y.disconnect()}},[r]),t.jsxs("span",{ref:a,className:"relative block min-w-0 flex-1 overflow-hidden whitespace-nowrap",children:[t.jsx("span",{ref:u,"aria-hidden":"true",className:"invisible absolute whitespace-nowrap",children:r}),f?t.jsxs("span",{className:"open-file-name-marquee-track",children:[t.jsx("span",{className:"open-file-name-marquee-item",children:r}),t.jsx("span",{className:"open-file-name-marquee-item","aria-hidden":"true",children:r})]}):t.jsx("span",{className:"block min-w-0 truncate",children:r})]})},ec=r=>Zi.has(r),tc=r=>{const a=I(r);return a==="node_modules"||a.endsWith("/node_modules")||a.includes("/node_modules/")},rc=r=>{const u=(r instanceof Error?r.message:String(r??"")).toLowerCase();return u.includes("is a directory")||u.includes("eisdir")},la=r=>{const u=(r instanceof Error?r.message:String(r??"")).toLowerCase();return u.includes("file not found")||u.includes("enoent")||u.includes("no such file")||u.includes("does not exist")},qt=2e5,nc=r=>{let a=0,u=0;for(let f=0;f<r.length;f+=1)r.charCodeAt(f)===10&&(f>0&&r.charCodeAt(f-1)===13?a+=1:u+=1);return a>u?`\r
|
|
2
|
+
`:`
|
|
3
|
+
`},wa=r=>r.replace(/\r\n/g,`
|
|
4
|
+
`).replace(/\r/g,`
|
|
5
|
+
`),sc=(r,a)=>{const u=wa(r);return a===`\r
|
|
6
|
+
`?u.replace(/\n/g,`\r
|
|
7
|
+
`):u},ya=(r,a)=>t.jsx(hr,{filePath:r,extension:a}),ua=r=>{if(!r)return!1;const a=r.toLowerCase().split(".").pop();return a==="md"||a==="markdown"},ac=r=>{if(!r)return!1;const a=r.toLowerCase().split(".").pop();return a==="json"||a==="jsonc"||a==="json5"||a==="geojson"},fn=r=>{if(!r)return!1;const a=r.toLowerCase().split(".").pop();return a==="html"||a==="htm"},oc=({node:r,root:a,isExpanded:u,isActive:f,isMobile:x,isBrowserClient:p,alwaysShowActions:b,status:g,badge:y,permissions:E,downloadFile:k,contextMenuPath:L,setContextMenuPath:M,rightClickMenuPath:R,setRightClickMenuPath:P,onSelect:o,onToggle:K,onRevealPath:xe,onOpenDialog:de})=>{const B=r.type==="directory",{canRename:Ne,canCreateFile:ae,canCreateFolder:Re,canDelete:Oe,canReveal:dt}=E,G=!B&&!!k,V=dt&&!p,fe=Ne||ae||Re||Oe||G||V,w=n.useCallback(C=>{fe&&(C?.preventDefault(),P(r.path))},[fe,r.path,P]),U=n.useCallback(()=>{B?K(r.path):o(r)},[B,r,o,K]),N=n.useCallback(C=>{C.stopPropagation(),P(null),M(r.path)},[r.path,M,P]),T=({Item:C,Separator:oe})=>t.jsxs(t.Fragment,{children:[Ne&&t.jsxs(C,{onClick:O=>{O.stopPropagation(),de("rename",r)},children:[t.jsx(v,{name:"edit",className:"mr-2 size-4"})," ","Rename"]}),t.jsxs(C,{onClick:O=>{O.stopPropagation(),br(r.path).then(De=>{if(De.ok){A.success("Path copied");return}A.error("Copy failed")})},children:[t.jsx(v,{name:"file-copy",className:"mr-2 size-4"})," ","Copy Path"]}),t.jsxs(C,{onClick:O=>{O.stopPropagation();const De=xr(a,r.path)||r.path;br(De).then(jr=>{if(jr.ok){A.success("Relative path copied");return}A.error("Copy failed")})},children:[t.jsx(v,{name:"file-copy-2",className:"mr-2 size-4"})," ","Copy Relative Path"]}),!B&&k&&t.jsxs(C,{onClick:O=>{O.stopPropagation(),k(r.path).catch(De=>{console.error("Download failed:",De),A.error("Operation failed")})},children:[t.jsx(v,{name:"download",className:"mr-2 size-4"})," ",p?"Download":"Save"]}),V&&t.jsxs(C,{onClick:O=>{O.stopPropagation(),xe(r.path)},children:[t.jsx(v,{name:"folder-received",className:"mr-2 size-4"})," ",Ho()]}),B&&(ae||Re)&&t.jsxs(t.Fragment,{children:[t.jsx(oe,{}),ae&&t.jsxs(C,{onClick:O=>{O.stopPropagation(),de("createFile",r)},children:[t.jsx(v,{name:"file-add",className:"mr-2 size-4"})," ","New File"]}),Re&&t.jsxs(C,{onClick:O=>{O.stopPropagation(),de("createFolder",r)},children:[t.jsx(v,{name:"folder-add",className:"mr-2 size-4"})," ","New Folder"]})]}),Oe&&t.jsxs(t.Fragment,{children:[t.jsx(oe,{}),t.jsxs(C,{onClick:O=>{O.stopPropagation(),de("delete",r)},className:"text-destructive focus:text-destructive",children:[t.jsx(v,{name:"delete-bin",className:"mr-2 size-4"})," ","Delete"]})]})]});return t.jsxs(Go,{open:R===r.path,onOpenChange:C=>P(C?r.path:null),children:[t.jsxs(Uo,{render:t.jsx("div",{className:"group relative flex items-center",onContextMenu:x?void 0:w}),children:[t.jsxs("button",{type:"button",onClick:U,onContextMenu:x?void 0:w,className:$("flex w-full items-center gap-1.5 rounded-md px-2 py-1 text-left text-foreground transition-colors pr-8 select-none",f?"bg-interactive-selection/70":"hover:bg-interactive-hover/40"),children:[B?u?t.jsx(v,{name:"folder-open",className:"size-4 flex-shrink-0 text-muted-foreground"}):t.jsx(v,{name:"folder-3",className:"size-4 flex-shrink-0 text-muted-foreground"}):ya(r.path,r.extension),t.jsx("span",{className:"min-w-0 flex-1 truncate typography-meta",title:r.path,children:r.name}),!B&&g&&t.jsx(Qi,{status:g}),B&&y&&t.jsxs("span",{className:"text-xs flex items-center gap-1 ml-auto mr-1",children:[y.modified>0&&t.jsxs("span",{className:"text-[var(--status-warning)]",children:["M",y.modified]}),y.added>0&&t.jsxs("span",{className:"text-[var(--status-success)]",children:["+",y.added]})]})]}),fe&&t.jsx("div",{className:$("absolute right-1 top-1/2 -translate-y-1/2",b?"opacity-100":"opacity-0 focus-within:opacity-100 group-hover:opacity-100"),children:t.jsxs(pn,{open:L===r.path,onOpenChange:C=>M(C?r.path:null),children:[t.jsx(hn,{asChild:!0,children:t.jsx(S,{variant:"ghost",size:"icon",className:"size-6",onClick:N,children:t.jsx(v,{name:"more-2-fill",className:"size-4"})})}),t.jsx(gn,{align:"end",side:"bottom",onCloseAutoFocus:()=>M(null),children:T({Item:gr,Separator:Ko})})]})})]}),t.jsx(Jo,{className:"min-w-[180px]",children:T({Item:Yo,Separator:Xo})})]})},ic=({activeDialog:r,dialogData:a,dialogInputValue:u,onDialogInputChange:f,isDialogSubmitting:x,onDialogSubmit:p,onClose:b,inputRef:g})=>t.jsx(da,{open:!!r,onOpenChange:y=>!y&&b(),children:t.jsxs(fa,{initialFocus:g,children:[t.jsxs(ma,{children:[t.jsxs(pa,{children:[r==="createFile"&&"Create File",r==="createFolder"&&"Create Folder",r==="rename"&&"Rename",r==="delete"&&"Delete"]}),t.jsxs(ha,{children:[r==="createFile"&&`Create a new file in ${a?.path??"root"}`,r==="createFolder"&&`Create a new folder in ${a?.path??"root"}`,r==="rename"&&`Rename ${a?.name??""}`,r==="delete"&&`Are you sure you want to delete ${a?.name??""}? This action cannot be undone.`]})]}),r!=="delete"&&t.jsx("div",{className:"py-4",children:t.jsx(vr,{value:u,onChange:y=>f(y.target.value),placeholder:r==="rename"?"New name":"Name",onKeyDown:y=>{y.key==="Enter"&&p()},ref:g})}),t.jsxs(ga,{children:[t.jsx(S,{variant:"outline",onClick:b,disabled:x,children:"Cancel"}),t.jsx(S,{variant:r==="delete"?"destructive":"default",onClick:()=>{p()},disabled:x||r!=="delete"&&!u.trim(),children:x?t.jsx(v,{name:"loader-4",className:"size-4 animate-spin"}):r==="delete"?"Delete":"Confirm"})]})]})}),mn=(r,a,u)=>{const[f,x]=n.useState(""),[p,b]=n.useState(0);return n.useEffect(()=>{if(!r){x("");return}let g=!1;x("");const y=So(),E=Fo(y);Eo(y).then(L=>{g||!L||(x(r),a(null))}).catch(L=>{g||(a(L instanceof Error?L.message:u),x(r))});const k=Ro(()=>{g||(x(r),b(L=>L+1),a(null))});return()=>{g=!0,E(),k()}},[r,a,u]),{readyKey:f,nonce:p}},yu=({mode:r="full"})=>{const{files:a,runtime:u}=zo(),{currentTheme:f,availableThemes:x,lightThemeId:p,darkThemeId:b}=Po(),{isMobile:g,isTablet:y,screenWidth:E}=Mo(),k=wo(u.platform),L=g||y,M=yo(),R=jo(),P=To()??"",o=I(P.trim()),K=r!=="editor-only",xe=r==="editor-only"&&!g,de=No(e=>e.searchFiles),B=Lo(P),[Ne,ae]=n.useState(""),Re=Oo(Ne,200),Oe=n.useRef(null),[dt,G]=n.useState(!1),[V,fe]=n.useState(!0),[w,U]=n.useState(!1),[N,T]=n.useState(!1),[C,oe]=n.useState(!1),O=n.useRef(null),De=n.useRef(0),jr=n.useCallback(e=>{De.current=Math.max(0,De.current+(e?1:-1))},[]),vn=n.useCallback(e=>e instanceof Element?e.closest('[data-slot="dropdown-menu-content"], [data-slot="dropdown-menu-item"]')!==null:!1,[]);n.useEffect(()=>{if(!C)return;const e=s=>{De.current>0||vn(s.target)||O.current&&!O.current.contains(s.target)&&oe(!1)};return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[vn,C]);const[ie,Rt]=n.useState("edit"),[Nr,kr]=n.useState("edit"),[ft,Cr]=n.useState("tree"),[mt,Sr]=n.useState("edit"),[Qe,Dt]=n.useState("preview"),[ja,Na]=n.useState(0),Fr=n.useRef({}),Er=n.useRef({}),Rr=n.useRef({}),Dr=n.useRef({}),Kt=n.useMemo(()=>x.find(e=>e.metadata.id===p)??Es(!1),[x,p]),Gt=n.useMemo(()=>x.find(e=>e.metadata.id===b)??Es(!0),[x,b]);n.useEffect(()=>{Ws(Kt),Ws(Gt)},[Kt,Gt]);const Ut=n.useMemo(()=>[],[]),Q=Ee(e=>o?e.byRoot[o]?.openPaths??Ut:Ut),et=Ee(e=>o?e.byRoot[o]?.selectedPath??null:null),tt=Ee(e=>o?e.byRoot[o]?.expandedPaths??Ut:Ut),pt=Ee(e=>e.removeOpenPath),qe=Ee(e=>e.removeOpenPathsByPrefix),bn=Ee(e=>e.removeExpandedPathsByPrefix),ee=Ee(e=>e.setSelectedPath),wn=Ee(e=>e.toggleExpandedPath),Jt=Ee(e=>e.expandPaths),ht=n.useCallback(e=>{const s=I(e),i=s.split("/"),c=i[i.length-1]||s,m=c.includes(".")?c.split(".").pop()?.toLowerCase():void 0;return{name:c,path:s,type:"file",extension:m}},[]),gt=n.useMemo(()=>Q.map(ht),[Q,ht]),zr=n.useMemo(()=>{if(et){const e=Et(et);if(Q.some(s=>Et(s)===e))return et}return Q[0]??null},[Q,et]),l=n.useMemo(()=>zr?ht(zr):null,[zr,ht]),ze=l?.path??"";n.useEffect(()=>{if(!o||!et)return;const e=Et(et);Q.some(i=>Et(i)===e)||ee(o,Q[0]??null)},[Q,o,et,ee]);const Yt=!!(o&&ze&&!Ht(ze,o)),yn=Yt?zs(ze):void 0,J=n.useMemo(()=>({allowOutsideWorkspace:r==="editor-only"&&Yt,outsideFileGrant:yn,directory:o||void 0}),[r,Yt,yn,o]),Pr=n.useRef(null),[jn,ka]=n.useState({left:!1,right:!1}),Nn=n.useCallback(()=>{const e=Pr.current;e&&ka({left:e.scrollLeft>2,right:e.scrollLeft+e.clientWidth<e.scrollWidth-2})},[]),kn=n.useRef(Nn);kn.current=Nn,n.useEffect(()=>{const e=Pr.current;if(!e)return;const s=()=>kn.current();s(),e.addEventListener("scroll",s,{passive:!0});const i=new ResizeObserver(s);return i.observe(e),()=>{e.removeEventListener("scroll",s),i.disconnect()}},[gt.length]);const[Cn,Mr]=n.useState({}),[Xt,zt]=n.useState({}),ve=n.useRef(new Set),be=n.useRef(new Set),Ae=n.useRef(new Map),Sn=n.useRef(0),[Fn,Zt]=n.useState([]),[Ca,Qt]=n.useState(!1),[D,q]=n.useState(""),[ke,Ie]=n.useState(!1),[Be,Y]=n.useState(null),[Sa,Ce]=n.useState(""),me=n.useRef(""),[pe,H]=n.useState(null),[W,X]=n.useState(""),[xt,Tr]=n.useState(!1),[En,Fa]=n.useState(`
|
|
8
|
+
`),Ea=n.useRef(null),Pe=n.useRef(null),he=n.useRef(null),He=n.useRef(""),Pt=n.useRef(""),$e=n.useRef(null),Rn=n.useRef(null),Ve=n.useRef(null),er=n.useRef(0),Mt=n.useRef(null),[Ra,vt]=n.useState("idle"),[Da,tr]=n.useState(!1),[Tt,Dn]=n.useState(!1),te=ue(e=>e.autoSaveEnabled),za=ue(e=>e.setAutoSaveEnabled),[Lr,bt]=n.useState(!1),wt=n.useRef(null),Lt=n.useRef(null),Ot=n.useRef(null),rt=n.useRef(!1),At=n.useRef(null),It=n.useRef(null),Se=n.useRef(null),Pa=n.useRef(null),[Ma,Or]=n.useState(0),yt=n.useRef(null),nt=n.useRef({key:"",attempts:0});n.useEffect(()=>()=>{yt.current!==null&&typeof window<"u"&&(window.cancelAnimationFrame(yt.current),yt.current=null)},[]);const[st,Ar]=n.useState(null),[at,Ta]=n.useState(null),[Ke,zn]=n.useState(""),[La,Ir]=n.useState(!1),[Oa,Aa]=n.useState(null),[Ia,Ba]=n.useState(null),[$a,Pn]=n.useState(!1),[Va,Mn]=n.useState(!1),[Wa,Br]=n.useState(!1),Tn=!!a.writeFile,Ln=!!a.createDirectory,On=!!a.rename,An=!!a.delete,In=!!a.revealPath,_a=pr(e=>e.availableApps),qa=pr(e=>e.isCacheStale),Bn=pr(e=>e.initialize),Ha=pr(e=>e.loadInstalledApps);n.useEffect(()=>{Bn()},[Bn]);const Ka=n.useCallback(e=>{a.revealPath&&a.revealPath(e).catch(()=>{A.error("Failed to reveal path")})},[a]),Ga=n.useCallback(async e=>{if(!l?.path||await ko(l.path,e.id,e.appName)||await Rs(l.path,e.appName))return;const c=Ui(l.path)||o;c&&await Rs(c,e.appName)||A.error(`Failed to open in ${e.appName}`)},[o,l?.path]),$r=n.useCallback((e,s)=>{Ar(e),Ta(s),zn(e==="rename"&&s.name||""),Ir(!1)},[]),[z,Fe]=n.useState(null),jt=n.useRef(!1),Ge=n.useRef(null),[$n,Nt]=n.useState(!1),Me=ue(e=>e.setMainTabGuard),Te=ue(e=>e.pendingFileNavigation),rr=ue(e=>e.setPendingFileNavigation),Vr=ue(e=>e.pendingFileFocusPath),Wr=ue(e=>e.setPendingFileFocusPath),Vn=ue(e=>e.shortcutOverrides),Wn=ue(e=>e.fileEditorKeymap),Bt=Ao(e=>e.settingsDefaultFileViewerPreview),_n=ue(e=>e.expandedEditorToolbar);n.useEffect(()=>{const e=()=>{jt.current=!1,Ge.current=null,Nt(!1)};return document.addEventListener("mouseup",e),()=>document.removeEventListener("mouseup",e)},[]),n.useEffect(()=>()=>{At.current!==null&&window.clearTimeout(At.current),It.current!==null&&window.clearTimeout(It.current)},[]);const Ua=n.useCallback((e,s)=>{const i=e.split(`
|
|
9
|
+
`),c=Math.max(1,s.start),m=Math.min(i.length,s.end);return c>m?"":i.slice(c-1,m).join(`
|
|
10
|
+
`)},[]),Ja=ji({source:"file",fileLabel:l?.path??null,language:l?.path&&nn(l.path)||"text",getCodeForRange:e=>Ua(D,Ni(e)),toStoreRange:e=>({startLine:e.start,endLine:e.end}),fromDraftRange:e=>({start:e.startLine,end:e.endLine})}),{drafts:qn,commentText:nr,setCommentText:Hn,editingDraftId:sr,setSelection:Kn,saveComment:Gn,cancel:$t,reset:Un,startEdit:Jn,deleteDraft:Yn}=Ja;n.useEffect(()=>{Fe(null),Un(),Me(null),X(""),Tr(!1)},[l?.path,Un,Me]),n.useEffect(()=>{Kn(z)},[z,Kn]),n.useEffect(()=>{if(!z&&!sr)return;const e=i=>{const c=i.target;c.closest('[data-comment-input="true"]')||c.closest('[data-comment-card="true"]')||c.closest(".cm-gutterElement")||c.closest("[data-sonner-toast]")||c.closest("[data-sonner-toaster]")||nr.trim()||(Fe(null),$t())},s=setTimeout(()=>{document.addEventListener("click",e)},100);return()=>{clearTimeout(s),document.removeEventListener("click",e)}},[$t,nr,sr,z]);const Xn=n.useCallback((e,s)=>{const i=s??z??void 0;s&&Fe(s),Gn(e,i),Fe(null)},[z,Gn]),Zn=n.useCallback((e,s)=>{const i=[];for(const c of s){if(!(c&&typeof c.name=="string"&&c.name.length>0)||!M&&c.name.startsWith(".")||!R&&ec(c.name))continue;const m=c.name,h=I(c.path||""),j=h?Xi(h)?h:I(`${e}/${h}`):I(`${e}/${m}`),F=c.isDirectory?"directory":"file",_=F==="file"&&m.includes(".")?m.split(".").pop()?.toLowerCase():void 0;i.push({name:m,path:j,type:F,extension:_})}return Yi(i)},[R,M]),we=n.useCallback(async e=>{const s=I(e.trim());if(!s||ve.current.has(s)||be.current.has(s))return;be.current=new Set(be.current),be.current.add(s);const i=Sn.current+1;Sn.current=i,Ae.current=new Map(Ae.current),Ae.current.set(s,i);const c=()=>Ae.current.get(s)===i;await(a.listDirectory?a.listDirectory(s).then(h=>h.entries.map(j=>({name:j.name,path:j.path,isDirectory:j.isDirectory}))):Co(s).then(h=>h.map(j=>({name:j.name,path:j.path,isDirectory:j.isDirectory})))).then(h=>{if(!c())return;const j=Zn(s,h);ve.current=new Set(ve.current),ve.current.add(s),zt(F=>{if(!F[s])return F;const _={...F};return delete _[s],_}),Mr(F=>({...F,[s]:j}))}).catch(h=>{if(!c())return;const j=h instanceof Error?h.message:String(h??"");if(j==="Directory not found"&&o&&s!==o){bn(o,s),zt(F=>{if(!F[s])return F;const _={...F};return delete _[s],_});return}console.error("Failed to load files directory:",h),zt(F=>({...F,[s]:j}))}).finally(()=>{c()&&(Ae.current=new Map(Ae.current),Ae.current.delete(s),be.current=new Set(be.current),be.current.delete(s))})},[a,Zn,bn,o]),ar=n.useCallback(async()=>{o&&(ve.current=new Set,be.current=new Set,Ae.current=new Map,zt({}),Mr(e=>Object.keys(e).length===0?e:{}),await we(o))},[we,o]),Le=n.useCallback(async e=>{if(!e){await ar();return}const s=I(e);ve.current=new Set(ve.current),ve.current.delete(s),be.current=new Set(be.current),be.current.delete(s),await we(s)},[we,ar]),Qn=n.useRef(""),es=n.useRef("");n.useEffect(()=>{if(!o)return;const e=`${o}|h${M?"1":"0"}|g${R?"1":"0"}`,s=Qn.current!==o,i=es.current!==e;!s&&!i||(s&&(Qn.current=o,q(""),Y(null),Ce(""),H(null),G(!1)),i&&(es.current=e,ve.current=new Set,be.current=new Set,Ae.current=new Map,zt({}),Mr(c=>Object.keys(c).length===0?c:{}),we(o)))},[we,o,R,M]),n.useEffect(()=>{if(!a.listDirectory)return;const e=()=>{if(!document.hidden&&tt.length>0)for(const s of tt)Le(s)};return document.addEventListener("visibilitychange",e),()=>document.removeEventListener("visibilitychange",e)},[tt,a.listDirectory,Le]),n.useEffect(()=>{if(!a.listDirectory||tt.length===0)return;const e=setInterval(()=>{if(!document.hidden)for(const s of tt)Le(s)},8e3);return()=>clearInterval(e)},[tt,a.listDirectory,Le]);const Ya=n.useCallback(async e=>{if(e?.preventDefault(),!at||!st)return;Ir(!0);const s=()=>{Ar(null)},i=m=>{A.error(m)},c=()=>{Ir(!1)};if(st==="createFile"){if(!Ke.trim()){i("Filename is required"),c();return}if(!a.writeFile){i("Write not supported"),c();return}const m=at.path,h=m?`${m}/`:"",j=I(`${h}${Ke.trim()}`);await a.writeFile(j,"").then(async F=>{F.success&&(A.success("File created"),await Le(m)),s()}).catch(()=>i("Operation failed")).finally(c);return}if(st==="createFolder"){if(!Ke.trim()){i("Folder name is required"),c();return}const m=at.path,h=m?`${m}/`:"",j=I(`${h}${Ke.trim()}`);await a.createDirectory(j).then(async F=>{F.success&&(A.success("Folder created"),await Le(m)),s()}).catch(()=>i("Operation failed")).finally(c);return}if(st==="rename"){if(!Ke.trim()){i("Name is required"),c();return}if(!a.rename){i("Rename not supported"),c();return}const m=at.path,h=m.split("/").slice(0,-1).join("/"),j=h?`${h}/`:"",F=I(`${j}${Ke.trim()}`);await a.rename(m,F).then(async _=>{_.success&&(A.success("Renamed successfully"),await Le(h),o&&qe(o,m),(l?.path===m||l?.path.startsWith(`${m}/`))&&(o&&ee(o,null),q(""),Y(null),Ce(""),H(null),g&&G(!1))),s()}).catch(()=>i("Operation failed")).finally(c);return}if(st==="delete"){if(!a.delete){i("Delete not supported"),c();return}const m=at.path,h=m.split("/").slice(0,-1).join("/");await a.delete(m).then(async j=>{j.success&&(A.success("Deleted successfully"),await Le(h),o&&qe(o,m),(l?.path===m||l?.path.startsWith(`${m}/`))&&(o&&ee(o,null),q(""),Y(null),Ce(""),H(null),g&&G(!1))),s()}).catch(()=>i("Operation failed")).finally(c);return}c()},[st,at,Ke,a,Le,g,qe,o,l?.path,ee]);n.useEffect(()=>{if(!P){Zt([]),Qt(!1);return}const e=Re.trim();if(!e){Zt([]),Qt(!1);return}let s=!1;return Qt(!0),de(P,e,150,{includeHidden:M,respectGitignore:!R,type:"file"}).then(i=>{if(s)return;const m=i.filter(h=>R||!tc(h.path)).map(h=>({name:h.name,path:I(h.path),type:"file",extension:h.extension,relativePath:h.relativePath}));Zt(m)}).catch(()=>{s||Zt([])}).finally(()=>{s||Qt(!1)}),()=>{s=!0}},[P,Re,de,M,R]);const ts=n.useCallback(async(e,s)=>{if(a.readFile)return(await a.readFile(e,{...s??{},directory:o||void 0})).content??"";const i=new URLSearchParams({path:e});s?.allowOutsideWorkspace&&i.set("allowOutsideWorkspace","true"),s?.outsideFileGrant&&i.set("outsideFileGrant",s.outsideFileGrant),s?.optional&&i.set("optional","true"),o&&i.set("directory",o);const c=await Ds(`/api/fs/read?${i.toString()}`,{cache:s?.optional?"no-store":"default"});if(!c.ok){const m=await c.json().catch(()=>({error:c.statusText}));throw new Error(m.error||"Failed to read file")}return c.text()},[a,o]),Ue=n.useCallback(async(e,s)=>{if(a.statFile){const i=await a.statFile(e,{...s??{},directory:o||void 0});return{path:i.path,size:i.size,mtimeMs:i.mtimeMs}}return null},[a,o]);n.useEffect(()=>{if(!o||!a.statFile||Q.length===0)return;let e=!1;const s=[...Q];return Promise.all(s.map(async i=>{try{const c=await a.statFile?.(i,{directory:o||void 0});!e&&c&&!c.isFile&&qe(o,i)}catch(c){!e&&la(c)&&qe(o,i)}})),()=>{e=!0}},[a,Q,qe,o]);const _r=n.useMemo(()=>D.length>qt?`${D.slice(0,qt)}
|
|
11
|
+
|
|
12
|
+
… truncated …`:D,[D]),re=W!==_r,ot=n.useCallback(async()=>{if(!l||!a.writeFile)return A.error("Saving not supported"),!1;const e=fr(l.path)||Tt;if(!Gi({selectedFilePath:l.path,loadedFilePath:pe,fileLoading:ke,isDirty:re,draftContent:W,fileContent:D,isNonEditableBinary:e}))return e?console.warn(`[saveDraft] refusing to save binary file "${l.path}".`):W===""&&D!==""&&pe!==l.path&&console.warn(`[saveDraft] refusing to save empty draft for "${l.path}" (${D.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(!re)return!0;Tr(!0);try{const s=sc(W,En);if(!(await a.writeFile(l.path,s))?.success)return A.error("Failed to write file"),!1;if(q(W),o&&Ht(l.path,o)){const c=xr(o,l.path);c&&Io.requestGitRefresh({directory:o,paths:[c]})}return l?.path&&sn(l.path)&&(He.current=W,Pt.current=W),Ue(l.path).then(c=>{c&&(Ve.current=c)}).catch(()=>{}),!0}catch(s){return A.error(s instanceof Error?s.message:"Save failed"),!1}finally{Tr(!1)}},[Tt,W,D,ke,a,re,En,pe,Ue,o,l]);n.useEffect(()=>{if(!re){Me(null);return}const e=s=>rt.current?(rt.current=!1,!0):(bt(!0),Lt.current=s,!1);return Me(e),()=>{ue.getState().mainTabGuard===e&&Me(null)}},[re,Me]),n.useEffect(()=>{te||(vt("idle"),Pe.current&&(clearTimeout(Pe.current),Pe.current=null))},[te]);const rs=1500;n.useEffect(()=>{const e=!!(l&&a.writeFile),s=!!(l?.path&&(fr(l.path)||Tt));if(Ki({autoSaveEnabled:te,isDirty:re,canWrite:e,isSaving:xt,fileLoading:ke,selectedFilePath:l?.path,loadedFilePath:pe,isNonEditableBinary:s}))return Pe.current=setTimeout(()=>{ot().then(i=>{i&&(vt("saved"),setTimeout(()=>vt("idle"),2e3))})},rs),()=>{Pe.current&&(clearTimeout(Pe.current),Pe.current=null)}},[te,Tt,W,ke,re,pe,l,a.writeFile,xt,ot]),n.useEffect(()=>{vt("idle")},[l?.path]),n.useEffect(()=>{const e=s=>{_o(s)&&(s.key.toLowerCase()==="s"?(s.preventDefault(),Pe.current&&(clearTimeout(Pe.current),Pe.current=null),xt||ot().then(i=>{i&&(vt("saved"),setTimeout(()=>vt("idle"),2e3))})):s.key.toLowerCase()==="f"&&(s.preventDefault(),T(!0)))};return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[xt,ot]);const ns=n.useCallback(async e=>{const s=er.current+1;er.current=s;const i=()=>{if(!o)return!1;const ge=Ee.getState().byRoot[o],ne=ge?.selectedPath??ge?.openPaths[0]??null;return er.current===s&&ne===e.path};Y(null),Ce(""),H(null),Dn(!1);const c=Ps(e.path),m=Ms(e.path),h=Ts(e.path),j=fr(e.path);if(g&&G(!0),u.isDesktop&&c&&!m){q(""),X(""),Ie(!0);return}if(!u.isDesktop&&c&&!m){q(""),X(""),H(e.path),Ie(!1);return}if(h){q(""),X(""),H(e.path),Ie(!1);return}if(j){q(""),X(""),H(e.path),Ie(!1);return}Ie(!0);const F=zs(e.path),_={allowOutsideWorkspace:r==="editor-only"&&!!o&&!Ht(e.path,o),outsideFileGrant:F};await ts(e.path,_).then(ge=>{if(!i())return;if(Bo(ge)){Dn(!0),q(""),X(""),H(e.path);return}const ne=wa(ge);Fa(nc(ge)),q(ne),He.current=ne,Pt.current=ne,X(ne.length>qt?`${ne.slice(0,qt)}
|
|
13
|
+
|
|
14
|
+
… truncated …`:ne),H(e.path),Ue(e.path,_).then(ct=>{ct&&i()&&(Ve.current=ct)}).catch(()=>{})}).catch(ge=>{if(i()){if(rc(ge)){if(Ie(!1),o&&ee(o,null),Y(null),q(""),X(""),H(null),Ve.current=null,Ne.trim().length>0&&ae(""),g&&G(!1),o){const ct=[...ia(e.path,o),e.path];ct.length>0&&Jt(o,ct);for(const en of ct)ve.current.has(en)||we(en)}return}if(la(ge)){o&&qe(o,e.path),q(""),X(""),Y(null),Ve.current=null,g&&G(!1);return}q(""),X(""),Y(ge instanceof Error?ge.message:"Failed to read file"),Ve.current=null}}).finally(()=>{i()&&Ie(!1)})},[Jt,g,we,r,ts,Ue,qe,o,u.isDesktop,Ne,ee]),or=n.useCallback(async(e,s)=>{if(!o)return;const i=ia(e,o),c=s?[...i,e]:i;c.length>0&&Jt(o,c);const m=c.map(h=>{if(!ve.current.has(h))return we(h)}).filter(Boolean);await Promise.all(m)},[Jt,we,o]),ss=n.useCallback((e,s)=>{const i=s.findIndex(c=>c.path===e);return i===-1||s.length<=1?null:s[i+1]??s[i-1]??null},[]),ce=n.useCallback(async e=>{if(rt.current)rt.current=!1;else if(re){bt(!0),wt.current=e;return}o&&(ee(o,e.path),or(e.path,!1)),Y(null),Ce(""),q(""),He.current="",Pt.current="",X(""),H(null),g&&G(!0)},[or,re,g,o,ee]);n.useEffect(()=>{l?.path&&or(l.path,!1)},[or,l?.path]),n.useEffect(()=>{if(!l){er.current+=1,Mt.current=null,Ie(!1);return}if(pe===l.path||Mt.current===l.path)return;const e=l.path;Mt.current=e,ns(l).finally(()=>{Mt.current===e&&(Mt.current=null)})},[ns,pe,l]);const as=n.useRef(re);as.current=re,n.useEffect(()=>{if(!l?.path||pe!==l.path)return;let e=!1;const s=window.setInterval(()=>{document.hidden||Ue(l.path,J).then(i=>{if(e||!i)return;const c=Ve.current;if(!c||c.path!==l.path){Ve.current=i;return}const m=i.mtimeMs!==void 0&&c.mtimeMs!==void 0&&i.mtimeMs!==c.mtimeMs,h=i.size!==c.size;!m&&!h||as.current||(Ve.current=i,H(null))}).catch(()=>{})},2e3);return()=>{e=!0,window.clearInterval(s)}},[pe,Ue,l?.path,J]);const Xa=n.useCallback(()=>{const e=wt.current,s=Lt.current,i=Ot.current;if(wt.current=null,Lt.current=null,Ot.current=null,rt.current=!0,bt(!1),X(_r),i){o&&pt(o,i),l?.path===i&&(e?ce(e):(o&&ee(o,null),q(""),Y(null),Ce(""),H(null),g&&G(!1)));return}if(e){ce(e);return}s&&(Me(null),ue.getState().setActiveMainTab(s))},[_r,ce,g,pt,o,l?.path,Me,ee]),Za=n.useCallback(async()=>{const e=wt.current,s=Lt.current,i=Ot.current;if(!await ot()){rt.current=!1;return}if(wt.current=null,Lt.current=null,Ot.current=null,rt.current=!0,bt(!1),i){o&&pt(o,i),l?.path===i&&(e?await ce(e):(o&&ee(o,null),q(""),Y(null),Ce(""),H(null),g&&G(!1)));return}if(e){await ce(e);return}s&&(Me(null),ue.getState().setActiveMainTab(s))},[ce,g,pt,o,ot,l?.path,Me,ee]),os=n.useCallback(e=>{const s=l?.path===e,i=ss(e,gt);if(s&&re){bt(!0),wt.current=i,Ot.current=e;return}if(o&&pt(o,e),!!s){if(i){ce(i);return}o&&ee(o,null),q(""),Y(null),Ce(""),H(null),g&&G(!1)}},[ss,ce,re,g,gt,pt,o,l?.path,ee]),Qa=n.useCallback(e=>{if(Q.includes(e))return"open";if(B?.files){const s=e.startsWith(o+"/")?e.slice(o.length+1):e,i=B.files.find(c=>c.path===s);if(i){if(i.index==="A"||i.working_dir==="?")return"git-added";if(i.index==="D")return"git-deleted";if(i.index==="M"||i.working_dir==="M")return"git-modified"}}return null},[Q,B,o]),eo=n.useCallback(e=>{if(!B?.files)return null;const s=e.startsWith(o+"/")?e.slice(o.length+1):e,i=s?`${s}/`:"";let c=0,m=0;for(const h of B.files)h.path.startsWith(i)&&((h.index==="M"||h.working_dir==="M")&&c++,(h.index==="A"||h.working_dir==="?")&&m++);return c+m>0?{modified:c,added:m}:null},[B,o]),to=n.useCallback(async e=>{const s=I(e);o&&(wn(o,s),ve.current.has(s)||await we(s))},[we,o,wn]),ro=n.useMemo(()=>({canRename:On,canCreateFile:Tn,canCreateFolder:Ln,canDelete:An,canReveal:In}),[On,Tn,Ln,An,In]);function is(e,s){const i=Cn[e]??[];return i.map((c,m)=>{const h=c.type==="directory",j=h&&tt.includes(c.path),F=l?.path===c.path,_=m===i.length-1;return t.jsxs("li",{className:"relative",children:[s>0&&t.jsxs(t.Fragment,{children:[t.jsx("span",{className:"absolute top-3.5 left-[-12px] w-3 h-px bg-border/40"}),_&&t.jsx("span",{className:"absolute top-3.5 bottom-0 left-[-13px] w-[2px] bg-background"})]}),t.jsx(oc,{node:c,root:o,isExpanded:j,isActive:F,isMobile:g,isBrowserClient:k,alwaysShowActions:L,status:h?void 0:Qa(c.path),badge:h?eo(c.path):void 0,permissions:ro,downloadFile:a.downloadFile,contextMenuPath:Oa,setContextMenuPath:Aa,rightClickMenuPath:Ia,setRightClickMenuPath:Ba,onSelect:ce,onToggle:to,onRevealPath:Ka,onOpenDialog:$r}),h&&j&&t.jsxs("ul",{className:"flex flex-col gap-1 ml-3 pl-3 border-l border-border/40 relative",children:[Xt[c.path]?t.jsxs("li",{className:"flex items-center gap-2 px-2 py-1 typography-meta text-muted-foreground",children:[t.jsx("span",{className:"min-w-0 flex-1 truncate text-[var(--status-error)]",title:Xt[c.path],children:Xt[c.path]}),t.jsxs(S,{variant:"ghost",size:"xs",className:"h-6 gap-1",onClick:()=>{Le(c.path)},children:[t.jsx(v,{name:"refresh",className:"size-3.5"}),"Refresh"]})]}):null,is(c.path,s+1)]})]},c.path)})}const Z=!!(l?.path&&Ps(l.path)),kt=!!(l?.path&&Ms(l.path)),ye=!!(l?.path&&Ts(l.path)),qr=!!(l?.path&&(fr(l.path)||Tt)),We=qr&&!Z&&!ye,cs=n.useMemo(()=>I(Te?.path??""),[Te?.path]),Ct=!!(Te&&cs&&ze&&ze===cs&&!ke&&!Be&&!Z&&!ye&&!We),Je=n.useMemo(()=>xr(o,ze),[ze,o]),no=!!(l&&(!Z||kt)&&!ye&&!We&&D.length>0),so=!!(l&&Je.length>0),je=!!(l&&!Yt&&!qr&&!Z&&a.writeFile&&D.length<=qt),it=!!(l?.path&&ua(l.path)),Vt=!!(l?.path&&ac(l.path)),St=!!(l?.path&&fn(l.path)),Wt=!!(l?.path&&sn(l.path)),Hr=!!(l&&!qr&&!Z)&&!it&&!Wt&&!(St&&mt==="preview"),ao=it&&Nr==="edit"||St&&mt==="edit"||Vt&&ft==="text"||!it&&!St&&!Vt&&ie==="edit",ir=n.useMemo(()=>ze?$o(ze):null,[ze]),[ls,Kr]=n.useState(null);n.useEffect(()=>{let e=!1;const s=l?.path;if(!s||ir){Kr(null);return}return Kr(null),Vo(s).then(i=>{e||Kr(i)}),()=>{e=!0}},[l?.path,ir]),n.useEffect(()=>{!je&&ie==="edit"&&Rt("view")},[je,ie]);const Gr="pichamber:files:md-viewer-mode",Ur="pichamber:files:html-viewer-mode",Jr="pichamber:files:json-viewer-mode";n.useEffect(()=>{const e=l?.path;if(!e)return;Rt(Fr.current[e]??"edit");let s=Bt?"preview":"edit";try{const m=localStorage.getItem(Gr);(m==="preview"||m==="edit")&&(s=m)}catch{}kr(Er.current[e]??s);let i=Bt?"preview":"edit";try{const m=localStorage.getItem(Ur);(m==="preview"||m==="edit")&&(i=m)}catch{}Sr(Rr.current[e]??i),Dt(Dr.current[e]??(Bt?"preview":"edit"));let c=Bt?"tree":"text";try{const m=localStorage.getItem(Jr);(m==="tree"||m==="text")&&(c=m)}catch{}Cr(c)},[l?.path,Bt]);const oo=n.useCallback(e=>{const s=l?.path;s&&(Fr.current[s]=e),Rt(e)},[l?.path]),us=n.useCallback(e=>{const s=l?.path;s&&(Er.current[s]=e),kr(e);try{localStorage.setItem(Gr,e)}catch{}},[l?.path]),le=n.useCallback(()=>Nr,[Nr]),io=n.useCallback(e=>{Cr(e);try{localStorage.setItem(Jr,e)}catch{}},[]),co=n.useCallback(e=>{const s=l?.path;s&&(Rr.current[s]=e),Sr(e);try{localStorage.setItem(Ur,e)}catch{}},[l?.path]),lo=n.useCallback(e=>{const s=l?.path;if(s&&(Dr.current[s]=e),he.current&&(clearTimeout(he.current),he.current=null),$e.current!==null&&(cancelAnimationFrame($e.current),$e.current=null),e==="edit")X(He.current||D),Dt(e);else{He.current=W;const i=s;Dt("edit"),$e.current=requestAnimationFrame(()=>{$e.current=requestAnimationFrame(()=>{$e.current=null,!(o&&i&&Ee.getState().byRoot[o]?.selectedPath!==i)&&(Na(c=>c+1),Dt("preview"))})});return}},[W,D,o,l?.path]),Yr=n.useCallback(async(e,s)=>{if(!a.writeFile||s===Pt.current)return!1;if(!(await a.writeFile(e,s))?.success)return A.error("Failed to write file"),!1;He.current=s,Pt.current=s,X(s);const c=await Ue(e,J).catch(()=>null);return c&&(Ve.current=c),!0},[a,Ue,J]);n.useEffect(()=>()=>{he.current&&(clearTimeout(he.current),he.current=null),$e.current!==null&&(cancelAnimationFrame($e.current),$e.current=null)},[Qe,l?.path]);const uo=n.useCallback(e=>{if(He.current=e,!te||!l?.path||Qe!=="preview"||!a.writeFile)return;he.current&&clearTimeout(he.current);const s=l.path;he.current=setTimeout(()=>{he.current=null,Yr(s,e).then(i=>{i&&(tr(!0),setTimeout(()=>tr(!1),1500))}).catch(i=>{A.error(i instanceof Error?i.message:"Save failed")})},rs)},[te,Qe,a.writeFile,Yr,l?.path]),fo=n.useMemo(()=>Wt&&(He.current||W)||D,[W,D,Wt]),ds=n.useCallback(()=>mt,[mt]);n.useEffect(()=>{const e=i=>{const c=i?"preview":"edit",m=i?"tree":"text";for(const h of Q)Fr.current[h]="edit",ua(h)&&(Er.current[h]=c),fn(h)&&(Rr.current[h]=c),sn(h)&&(Dr.current[h]=c);Rt("edit"),kr(c),Sr(c),Dt(c),Cr(m);try{localStorage.setItem(Gr,c),localStorage.setItem(Ur,c),localStorage.setItem(Jr,m)}catch{}},s=i=>{const c=!!i.detail?.enabled;e(c)};return window.addEventListener("pichamber:file-viewer-preview-mode-changed",s),()=>{window.removeEventListener("pichamber:file-viewer-preview-mode-changed",s)}},[Q]),n.useEffect(()=>{if(!Te||!o)return;const e=()=>{typeof window>"u"||yt.current===null&&(yt.current=window.requestAnimationFrame(()=>{yt.current=null,Or(_e=>_e+1)}))},s=(_e,lt)=>{if(_e.state.doc.length!==lt.length)return!1;if(lt.length===0)return!0;const tn=Math.min(128,lt.length);if(_e.state.sliceDoc(0,tn)!==lt.slice(0,tn))return!1;const Fs=Math.max(0,lt.length-tn);return _e.state.sliceDoc(Fs,lt.length)===lt.slice(Fs)},i=I(Te.path);if(!i){rr(null),nt.current={key:"",attempts:0};return}const c=`${i}:${Te.line}:${Te.column??1}`;if(nt.current.key!==c&&(nt.current={key:c,attempts:0}),l?.path!==i){if(Lr)return;ce(ht(i));return}if(ke||pe!==i)return;if(Be||Z||ye||We){rr(null),nt.current={key:"",attempts:0};return}if(!je)return;if(ie!=="edit"){Rt("edit");return}const m=Se.current;if(!m){e();return}if(!s(m,W)){e();return}const h=Math.max(1,Math.min(Te.line,m.state.doc.lines)),j=m.state.doc.line(h),F=Math.max(1,Te.column||1),_=Math.max(0,j.to-j.from),ge=Math.min(_,F-1),ne=j.from+ge;if(!(m.state.selection.main.head===ne)||nt.current.attempts===0){nt.current.attempts+=1,m.dispatch({selection:{anchor:ne},effects:se.scrollIntoView(ne,{y:"center"})}),m.focus(),e();return}typeof window<"u"&&window.requestAnimationFrame(()=>{const _e=Se.current;_e&&(_e.dispatch({selection:{anchor:ne},effects:se.scrollIntoView(ne,{y:"center"})}),_e.focus())}),rr(null),nt.current={key:"",attempts:0}},[je,Lr,W,Ma,Be,ke,Z,ye,We,pe,ce,Te,o,l?.path,rr,ie,ht]),n.useEffect(()=>{if(!Vr||!o)return;const e=I(Vr);if(!e){Wr(null);return}l?.path===e&&(ke||pe!==e||(!Be&&!Z&&!ye&&!We&&je&&ie==="edit"&&Se.current?.focus(),Wr(null)))},[je,Be,ke,Z,ye,We,pe,Vr,o,l?.path,Wr,ie]);const Ft=n.useCallback(e=>{if(!g||!e||!e.hasFocus||typeof window>"u")return;const s=window.visualViewport;if(!s)return;const i=document.documentElement.clientHeight||window.innerHeight;if(Math.max(0,i-(s.offsetTop+s.height))<=0)return;const m=e.state.selection.main.head,h=e.coordsAtPos(m);if(!h)return;const j=Math.round(s.offsetTop+s.height),_=h.bottom+20-j;_<=0||(e.scrollDOM.scrollTop+=_)},[g]);n.useEffect(()=>{if(!g||typeof window>"u")return;const e=()=>{window.requestAnimationFrame(()=>{Ft(Se.current)})},s=window.visualViewport;return s?.addEventListener("resize",e),s?.addEventListener("scroll",e,{passive:!0}),document.addEventListener("selectionchange",e),()=>{s?.removeEventListener("resize",e),s?.removeEventListener("scroll",e),document.removeEventListener("selectionchange",e)}},[g,Ft]),n.useEffect(()=>{if(!je||ie!=="edit"||g)return;const e=Wo("open_go_to_line",Vn),s=i=>{const c=i.target;if(c?.closest('[role="dialog"]'))return;const m=!!c?.closest(".cm-editor");c?.closest('input, textarea, [contenteditable="true"], [role="textbox"]')&&!m||!document.activeElement?.closest(".cm-editor")||qo(i,e)&&(i.preventDefault(),Br(!0))};return window.addEventListener("keydown",s),()=>window.removeEventListener("keydown",s)},[je,g,Vn,ie]);const cr=ue(e=>e.editorFontSize),fs=n.useMemo(()=>{if(!l?.path)return[aa(f,{fontSize:cr})];const e=nn(l.path),s=[aa(f,e?{syntaxColors:!1,fontSize:cr}:{fontSize:cr})],i=ir??ls;return i&&s.push(i),e&&s.push(Hi({language:e,themeName:f.metadata.id,theme:bi(f)})),V&&s.push(se.lineWrapping),g&&s.push(se.updateListener.of(c=>{c.view.hasFocus&&(c.selectionSet||c.focusChanged||c.viewportChanged||c.geometryChanged)&&window.requestAnimationFrame(()=>{Ft(c.view)})})),s},[f,l?.path,ir,ls,V,g,Ft,cr]),ms=n.useMemo(()=>({light:Kt.metadata.id,dark:Gt.metadata.id}),[Kt.metadata.id,Gt.metadata.id]),lr=l?.path&&Z&&!u.isDesktop&&!kt?`${l.path}|${J.allowOutsideWorkspace?"outside":"workspace"}|${J.outsideFileGrant??""}`:"",ur=l?.path&&ye?`${l.path}|${J.allowOutsideWorkspace?"outside":"workspace"}|${J.outsideFileGrant??""}`:"",dr=l?.path&&St&&mt==="preview"?l.path:"",Xr="Failed to read file",{readyKey:ps,nonce:hs}=mn(lr,Y,Xr),{readyKey:gs,nonce:mo}=mn(dr,Y,Xr),{readyKey:xs,nonce:vs}=mn(ur,Y,Xr),bs=!!(lr&&ps!==lr),po=!!(dr&&gs!==dr),ws=!!(ur&&xs!==ur),ys=l?.path&&Z?u.isDesktop?kt?`data:${Ls(l.path)};utf8,${encodeURIComponent(D)}`:Sa:kt?`data:${Ls(l.path)};utf8,${encodeURIComponent(D)}`:ps===lr?rn().authenticatedAsset("/api/fs/raw",{path:l.path,allowOutsideWorkspace:J.allowOutsideWorkspace?"true":void 0,outsideFileGrant:J.outsideFileGrant,directory:o||void 0}):"":"",js=l?.path&&ye&&xs===ur?rn().authenticatedAsset("/api/fs/raw",{path:l.path,allowOutsideWorkspace:J.allowOutsideWorkspace?"true":void 0,outsideFileGrant:J.outsideFileGrant,directory:o||void 0}):"",Ns=n.useCallback(e=>t.jsx("div",{className:"h-full overflow-hidden bg-[var(--surface-background)]",children:t.jsx("iframe",{src:js,className:"h-full w-full border-0",title:e.name},vs)}),[js,vs]);n.useEffect(()=>{let e=!1;return(async()=>{if(!u.isDesktop||!l?.path||!Z||kt){me.current&&(URL.revokeObjectURL(me.current),me.current=""),Ce("");return}Y(null),me.current&&(URL.revokeObjectURL(me.current),me.current=""),await(a.readFileBinary?a.readFileBinary(l.path,J).then(c=>c.dataUrl):(async()=>{const c=await Ds("/api/fs/raw",{query:{path:l.path,allowOutsideWorkspace:J.allowOutsideWorkspace?"true":void 0,outsideFileGrant:J.outsideFileGrant,directory:o||void 0}});if(!c.ok)throw new Error("Failed to read file");const m=await c.blob(),h=URL.createObjectURL(m);return e?(URL.revokeObjectURL(h),""):(me.current=h,h)})()).then(c=>{e||(Ce(c),H(l.path))}).catch(c=>{me.current&&(URL.revokeObjectURL(me.current),me.current=""),e||(Ce(""),Y(c instanceof Error?c.message:"Failed to read file"),H(null))}).finally(()=>{e||Ie(!1)})})(),()=>{e=!0}},[a,Z,kt,o,u.isDesktop,l?.path,J]),n.useEffect(()=>()=>{me.current&&(URL.revokeObjectURL(me.current),me.current="")},[]);const ho=n.useCallback(()=>Ar(null),[]),go=n.useMemo(()=>ki({drafts:qn,editingDraftId:sr,commentText:nr,onTextChange:Hn,selection:z,isDragging:$n,fileLabel:l?.path??"",newWidgetId:"files-new-comment-input",mapDraftToRange:e=>({start:e.startLine,end:e.endLine}),onSave:Xn,onCancel:()=>{Fe(null),$t()},onEdit:e=>{Jn(e),Fe({start:e.startLine,end:e.endLine})},onDelete:Yn}),[$t,nr,Yn,sr,qn,Xn,$n,z,l?.path,Hn,Jn]),ks=n.useCallback((e,s)=>t.jsx("div",{className:"h-full",children:t.jsx(gi,{file:{name:e.name,contents:s,lang:nn(e.path)||void 0},options:{disableFileHeader:!0,overflow:V?"wrap":"scroll",theme:ms,themeType:f.metadata.variant==="dark"?"dark":"light"},className:"block h-full w-full",style:{height:"100%"}})}),[f.metadata.variant,ms,V]),Zr=({exitFullscreenOnly:e=!1,layout:s="floating"}={})=>{if(!l)return null;const c=s==="docked"?"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",m=(h,j)=>t.jsxs(Ye,{children:[t.jsx(Xe,{asChild:!0,children:t.jsx("span",{className:"inline-flex",children:j})}),t.jsx(Ze,{side:"bottom",sideOffset:6,children:h})]});return t.jsxs("div",{className:c,children:[je&&ao&&t.jsxs(t.Fragment,{children:[xt?t.jsxs("span",{className:"flex items-center gap-1 px-1 text-muted-foreground typography-meta",children:[t.jsx(v,{name:"loader-4",className:"size-3.5 animate-spin"}),"Saving..."]}):te&&Ra==="saved"&&!re?t.jsxs("span",{className:"flex items-center gap-1 px-1 text-[color:var(--status-success)] typography-meta",children:[t.jsx(v,{name:"check",className:"size-3.5"}),"Saved"]}):re?m(te?`Save now (${_t()}+S) - auto-saves after 1.5s`:`Save now (${_t()}+S)`,t.jsx(S,{variant:"ghost",size:"sm",onClick:()=>{ot()},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:te?`Save now (${_t()}+S) - auto-saves after 1.5s`:`Save now (${_t()}+S)`,"aria-label":`Save (${_t()}+S)`,children:t.jsx(v,{name:"save-3",className:"size-4"})})):null,m(te?"Auto-save on":"Manual save",t.jsx(S,{variant:"ghost",size:"sm",onClick:()=>za(!te),className:$("size-6 p-0 transition-opacity hover:bg-transparent focus-visible:bg-transparent active:bg-transparent",te?"text-foreground opacity-100":"text-muted-foreground opacity-65 hover:opacity-100"),title:te?"Auto-save on":"Manual save","aria-label":te?"Auto-save on":"Manual save",children:te?t.jsx(v,{name:"file-check-fill",className:"size-4"}):t.jsx(v,{name:"file-check",className:"size-4"})}))]}),t.jsxs(pn,{onOpenChange:jr,children:[t.jsxs(Ye,{children:[t.jsx(Xe,{asChild:!0,children:t.jsx("span",{className:"inline-flex",children:t.jsx(hn,{asChild:!0,children:t.jsx(S,{variant:"ghost",size:"sm",className:"size-6 p-0 text-foreground opacity-100 hover:bg-transparent focus-visible:bg-transparent active:bg-transparent",title:"Open in desktop app","aria-label":"Open in desktop app",children:t.jsx(v,{name:"file-transfer",className:"size-4"})})})})}),t.jsx(Ze,{side:"bottom",sideOffset:6,children:"Open in desktop app"})]}),t.jsxs(gn,{align:"end",className:"w-56 max-h-[70vh] overflow-y-auto",children:[_a.map(h=>t.jsxs(gr,{className:"flex items-center gap-2",onClick:()=>{Ga(h)},children:[t.jsx(Ji,{label:h.label,iconDataUrl:h.iconDataUrl}),t.jsx("span",{className:"typography-ui-label text-foreground",children:h.label})]},h.id)),qa?t.jsxs(gr,{className:"flex items-center gap-2",onClick:()=>{Ha(!0)},children:[t.jsx(v,{name:"refresh",className:"size-4"}),t.jsx("span",{className:"typography-ui-label text-foreground",children:"Refresh Apps"})]}):null]})]}),!Z&&!ye&&!We&&t.jsxs(t.Fragment,{children:[m(V?"Disable line wrap":"Enable line wrap",t.jsx(S,{variant:"ghost",size:"sm",onClick:()=>fe(!V),className:$("size-6 p-0 transition-opacity hover:bg-transparent focus-visible:bg-transparent active:bg-transparent",V?"text-foreground opacity-100":"text-muted-foreground opacity-65 hover:opacity-100"),title:V?"Disable line wrap":"Enable line wrap",children:t.jsx(v,{name:"text-wrap",className:"size-4"})})),ie==="edit"&&t.jsxs(t.Fragment,{children:[m("Find in file",t.jsx(S,{variant:"ghost",size:"sm",onClick:h=>{T(!N),h.currentTarget.blur()},className:"size-6 p-0 text-foreground opacity-100 transition-opacity hover:bg-transparent focus-visible:bg-transparent active:bg-transparent",title:"Find in file",children:t.jsx(v,{name:"search",className:"size-4"})})),m("Go to line",t.jsx(S,{variant:"ghost",size:"sm",onClick:h=>{Br(j=>!j),h.currentTarget.blur()},className:"size-6 p-0 text-foreground opacity-100 transition-opacity hover:bg-transparent focus-visible:bg-transparent active:bg-transparent",title:"Go to line",children:t.jsx(v,{name:"menu-fold-2",className:"size-4"})})),t.jsx(Oi,{open:Wa,onOpenChange:Br,view:Se.current,variant:"inline"})]})]}),Hr&&je&&!Vt&&!St&&t.jsx(dn,{currentMode:ie==="view"?"preview":"edit",onToggle:()=>{oo(ie==="view"?"edit":"view")}}),it&&m(le()==="preview"?"Switch to edit mode":"Switch to preview mode",t.jsx(S,{variant:"ghost",size:"sm",onClick:()=>us(le()==="preview"?"edit":"preview"),className:$("size-6 p-0 transition-colors hover:bg-[var(--interactive-hover)] focus-visible:bg-[var(--interactive-hover)] active:bg-[var(--interactive-hover)]",le()==="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:le()==="preview"?"Switch to edit mode":"Switch to preview mode","aria-label":le()==="preview"?"Switch to edit mode":"Switch to preview mode",children:t.jsx(v,{name:le()==="preview"?"eye":"eye-off",className:"size-4"})})),fn(l?.path??"")&&t.jsx(dn,{currentMode:ds(),onToggle:()=>{co(ds()==="preview"?"edit":"preview")}}),Wt&&t.jsxs(t.Fragment,{children:[t.jsx(dn,{currentMode:Qe,onToggle:()=>lo(Qe==="preview"?"edit":"preview")}),Qe==="preview"&&t.jsx(S,{variant:"ghost",size:"sm",onClick:async()=>{const h=Rn.current?.getXml();if(he.current&&(clearTimeout(he.current),he.current=null),l?.path&&h){if(!await Yr(l.path,h))return;tr(!0),setTimeout(()=>tr(!1),1500)}},className:"size-6 p-0 text-foreground hover:bg-transparent focus-visible:bg-transparent active:bg-transparent",title:"Save diagram",children:Da?t.jsx(v,{name:"check",className:"size-4 text-[color:var(--status-success)]"}):t.jsx(v,{name:"save-3",className:"size-4"})})]}),Vt&&m(ft==="tree"?"Switch to Text View":"Switch to Tree View",t.jsx(S,{variant:"ghost",size:"sm",onClick:()=>io(ft==="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:ft==="tree"?"Switch to Text View":"Switch to Tree View",children:ft==="tree"?t.jsx(v,{name:"code-sslash",className:"size-4"}):t.jsx(v,{name:"node-tree",className:"size-4"})})),no&&m("Copy file contents",t.jsx(S,{variant:"ghost",size:"sm",onClick:async()=>{(await br(D)).ok?(Pn(!0),At.current!==null&&window.clearTimeout(At.current),At.current=window.setTimeout(()=>{Pn(!1)},1200)):A.error("Copy failed")},className:"size-6 p-0 hover:bg-transparent focus-visible:bg-transparent active:bg-transparent",title:"Copy file contents","aria-label":"Copy file contents",children:$a?t.jsx(v,{name:"check",className:"size-4 text-[color:var(--status-success)]"}):t.jsx(v,{name:"clipboard",className:"size-4"})})),so&&m(`Copy file path (${Je})`,t.jsx(S,{variant:"ghost",size:"sm",onClick:async()=>{(await br(Je)).ok?(Mn(!0),It.current!==null&&window.clearTimeout(It.current),It.current=window.setTimeout(()=>{Mn(!1)},1200)):A.error("Copy failed")},className:"size-6 p-0 hover:bg-transparent focus-visible:bg-transparent active:bg-transparent",title:`Copy file path (${Je})`,"aria-label":`Copy file path (${Je})`,children:Va?t.jsx(v,{name:"check",className:"size-4 text-[color:var(--status-success)]"}):t.jsx(v,{name:"file-copy-2",className:"size-4"})})),a.downloadFile&&m("Save file",t.jsx(S,{variant:"ghost",size:"sm",onClick:()=>{const h=a.downloadFile;h&&h(l.path).catch(j=>{console.error("Download failed:",j),A.error("Operation failed")})},className:"size-6 p-0 hover:bg-transparent focus-visible:bg-transparent active:bg-transparent",title:"Save file","aria-label":"Save file",children:t.jsx(v,{name:"download",className:"size-4"})})),e?m("Exit fullscreen",t.jsx(S,{variant:"ghost",size:"sm",onClick:()=>U(!1),className:"size-6 p-0 hover:bg-transparent focus-visible:bg-transparent active:bg-transparent",title:"Exit fullscreen","aria-label":"Exit fullscreen",children:t.jsx(v,{name:"fullscreen-exit",className:"size-4"})})):!g&&r==="full"&&m(w?"Exit fullscreen":"Fullscreen",t.jsx(S,{variant:"ghost",size:"sm",onClick:()=>U(!w),className:"size-6 p-0 hover:bg-transparent focus-visible:bg-transparent active:bg-transparent",title:w?"Exit fullscreen":"Fullscreen","aria-label":w?"Exit fullscreen":"Fullscreen",children:w?t.jsx(v,{name:"fullscreen-exit",className:"size-4"}):t.jsx(v,{name:"fullscreen",className:"size-4"})}))]})},Qr=t.jsxs("div",{className:"relative flex h-full min-h-0 min-w-0 w-full flex-col overflow-hidden",children:[t.jsx(da,{open:Lr,onOpenChange:e=>{e||bt(!0)},children:t.jsxs(fa,{showCloseButton:!1,className:"max-w-md",children:[t.jsxs(ma,{children:[t.jsx(pa,{children:"Unsaved changes"}),t.jsx(ha,{children:"Save your edits before continuing?"})]}),t.jsxs(ga,{children:[t.jsx(S,{variant:"outline",onClick:()=>{Za()},disabled:xt,className:"border-[var(--status-success-border)] bg-[var(--status-success-background)] text-[var(--status-success)] hover:bg-[rgb(var(--status-success)/0.2)]",children:"Save changes"}),t.jsx(S,{variant:"destructive",onClick:Xa,children:"Discard"})]})]})}),t.jsxs("div",{className:$("flex flex-col flex-shrink-0",K&&"border-b border-border/40"),children:[K?t.jsxs("div",{className:"flex min-w-0 items-center px-3 py-1.5",children:[g&&dt&&t.jsx("button",{type:"button",onClick:()=>G(!1),"aria-label":"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-primary",children:t.jsx(v,{name:"arrow-left-s",className:"size-5"})}),g?l?t.jsxs(pn,{children:[t.jsx(hn,{asChild:!0,children:t.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":"Open files",children:[t.jsx(hr,{filePath:l.path,extension:l.extension,className:"size-3.5 flex-shrink-0"}),t.jsx(ca,{name:l.name}),t.jsx(v,{name:"arrow-down-s",className:"size-4 flex-shrink-0 text-muted-foreground"})]})}),t.jsx(gn,{align:"start",className:"w-[min(24rem,calc(100vw-2rem))] max-w-[calc(100vw-2rem)]",children:gt.map(e=>{const s=l?.path===e.path;return t.jsxs(gr,{onSelect:i=>{if(i.target.closest("[data-close-open-file]")){i.preventDefault();return}s||ce(e)},className:$("flex min-w-0 items-center justify-between gap-2 overflow-hidden",s&&"bg-[var(--interactive-selection)] text-[var(--interactive-selection-foreground)]"),children:[t.jsxs("span",{className:"flex min-w-0 flex-1 items-center gap-2 overflow-hidden",children:[t.jsx(hr,{filePath:e.path,extension:e.extension,className:"size-3.5 flex-shrink-0"}),t.jsx(ca,{name:e.name})]}),t.jsx("button",{type:"button","data-close-open-file":!0,onPointerDown:i=>{i.preventDefault(),i.stopPropagation()},onClick:i=>{i.preventDefault(),i.stopPropagation(),os(e.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":`Close ${e.name}`,children:t.jsx(v,{name:"close",className:"size-3.5"})})]},e.path)})})]}):t.jsx("div",{className:"typography-ui-label font-medium truncate",children:"Select a file"}):gt.length>0?t.jsxs("div",{className:"relative min-w-0 flex-1",children:[jn.left&&t.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"}),jn.right&&t.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"}),t.jsx("div",{ref:Pr,className:"flex min-w-0 items-center gap-1 overflow-x-auto scrollbar-none",style:{scrollbarWidth:"none",msOverflowStyle:"none"},children:gt.map(e=>{const s=l?.path===e.path;return t.jsxs("div",{title:xr(o,e.path),className:$("group inline-flex items-center gap-1 rounded-md border px-2 py-1 typography-ui-label transition-colors whitespace-nowrap",s?"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:[t.jsx(hr,{filePath:e.path,extension:e.extension,className:"size-3.5 flex-shrink-0"}),t.jsx("button",{type:"button",onClick:()=>{s||ce(e)},className:"max-w-[12rem] truncate text-left",children:e.name}),t.jsx("button",{type:"button",onClick:i=>{i.stopPropagation(),os(e.path)},className:$("rounded-sm p-0.5 text-[var(--surface-muted-foreground)] hover:text-[var(--surface-foreground)]",!s&&!L&&"opacity-0 group-hover:opacity-100"),"aria-label":`Close ${e.name}`,children:t.jsx(v,{name:"close",className:"size-3.5"})})]},e.path)})})]}):t.jsx("div",{className:"typography-ui-label font-medium truncate",children:"Select a file"})]}):null,(_n||g)&&l?t.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:[Je&&!g?t.jsx("span",{className:"min-w-0 flex-1 truncate typography-meta text-muted-foreground",title:Je,children:Je}):null,t.jsx("div",{className:"ml-auto min-w-0 shrink-0 overflow-x-auto",children:Zr({layout:"docked"})})]}):null]}),t.jsxs("div",{className:"flex-1 min-h-0 min-w-0 relative",children:[l&&!N&&!(_n||g)&&t.jsx("div",{ref:O,className:"absolute right-3 top-3 z-30",onMouseLeave:()=>{De.current>0||oe(!1)},children:C?Zr():t.jsxs("div",{className:"flex items-center gap-1",children:[it?t.jsxs(Ye,{children:[t.jsx(Xe,{asChild:!0,children:t.jsx("span",{className:"inline-flex",children:t.jsx(S,{variant:"ghost",size:"sm",onClick:()=>us(le()==="preview"?"edit":"preview"),className:$("size-8 rounded-lg border border-[var(--interactive-border)] bg-[var(--surface-elevated)] p-0 shadow-sm transition-colors",le()==="preview"?"bg-[var(--interactive-selection)] text-[var(--interactive-selection-foreground)] hover:bg-[var(--interactive-selection)]":"text-muted-foreground hover:text-foreground"),"aria-label":le()==="preview"?"Switch to edit mode":"Switch to preview mode",title:le()==="preview"?"Switch to edit mode":"Switch to preview mode",children:t.jsx(v,{name:le()==="preview"?"eye":"eye-off",className:"size-4"})})})}),t.jsx(Ze,{side:"bottom",sideOffset:6,children:le()==="preview"?"Switch to edit mode":"Switch to preview mode"})]}):null,t.jsxs(Ye,{children:[t.jsx(Xe,{asChild:!0,children:t.jsx("span",{className:"inline-flex",onMouseEnter:()=>oe(!0),children:t.jsx(S,{variant:"ghost",size:"sm",onClick:()=>oe(!0),className:"size-8 rounded-lg border border-[var(--interactive-border)] bg-[var(--surface-elevated)] p-0 text-muted-foreground shadow-sm hover:text-foreground","aria-label":"Show editor controls",title:"Editor controls",children:t.jsx(v,{name:"more-2-fill",className:"size-4"})})})}),t.jsx(Ze,{side:"bottom",sideOffset:6,children:"Editor controls"})]})]})}),t.jsx(an,{outerClassName:"h-full min-w-0",className:"h-full min-w-0",children:l?ke||bs||ws?xe?t.jsx("div",{className:"p-3"}):t.jsxs("div",{className:"p-3 flex items-center gap-2 typography-ui text-muted-foreground",children:[t.jsx(v,{name:"loader-4",className:"size-4 animate-spin"}),"Loading..."]}):Be?t.jsx("div",{className:"p-3 typography-ui text-[color:var(--status-error)]",children:Be}):Z?t.jsx("div",{className:"flex h-full items-center justify-center p-3",children:t.jsx("img",{src:ys,alt:l?.name??"Image",className:"max-w-full max-h-[70vh] object-contain rounded-md border border-border/30 bg-primary/10"},hs)}):ye?Ns(l):We?t.jsxs("div",{className:"flex h-full flex-col items-center justify-center gap-3 p-6 text-center",children:[t.jsx("div",{className:"typography-ui-header text-foreground",children:"Cannot preview binary file"}),t.jsx("div",{className:"max-w-md typography-ui text-muted-foreground",children:"This file is binary and cannot be edited in PiChamber. Download it to open with another app."}),a.downloadFile?t.jsxs(S,{type:"button",variant:"outline",size:"sm",onClick:()=>{const e=a.downloadFile;!e||!l||e(l.path).catch(s=>{console.error("Download failed:",s),A.error("Operation failed")})},children:[t.jsx(v,{name:"download",className:"mr-2 size-4"}),"Save file"]}):null]}):l&&Wt&&Qe==="preview"?t.jsx("div",{className:"h-full overflow-hidden",style:{minHeight:"400px"},children:t.jsx(wi,{ref:Rn,xml:fo,onChange:uo},`${l.path}:${ja}`)}):l&&Vt&&ft==="tree"?t.jsx(on,{fallback:t.jsxs("div",{className:"rounded-md border border-destructive/20 bg-destructive/10 px-3 py-2",children:[t.jsx("div",{className:"mb-1 font-medium text-destructive",children:"JSON viewer unavailable"}),t.jsx("div",{className:"text-sm text-muted-foreground",children:"Switch to text mode to view raw content."})]}),children:t.jsx("div",{className:"h-full overflow-auto",children:t.jsx(xi,{jsonString:D,maxHeight:"100%",initiallyExpandedDepth:2})})}):l&&it&&le()==="preview"?t.jsxs("div",{className:"h-full overflow-auto p-3",children:[D.length>500*1024&&t.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:`This file is large (${Math.round(D.length/1024)}KB). Preview may be limited.`}),t.jsx(on,{fallback:t.jsxs("div",{className:"rounded-md border border-destructive/20 bg-destructive/10 px-3 py-2",children:[t.jsx("div",{className:"mb-1 font-medium text-destructive",children:"Preview unavailable"}),t.jsx("div",{className:"text-sm text-muted-foreground",children:"Switch to edit mode to fix the issue."})]}),children:t.jsx(Os,{content:D,className:"typography-markdown-body",stripFrontmatter:!0,enableFileReferences:!1})})]}):l&&St&&mt==="preview"?po?t.jsx("div",{className:"flex h-full items-center justify-center text-muted-foreground typography-ui-label",children:"Loading..."}):t.jsx("div",{className:"h-full overflow-hidden",children:t.jsx("iframe",{src:gs===dr?(()=>{const e=l.path.split("/").map(s=>encodeURIComponent(s)).join("/");return rn().authenticatedAsset(`/api/fs/serve${e.startsWith("/")?e:`/${e}`}`)})():void 0,className:"w-full h-full border-none",sandbox:"allow-scripts allow-same-origin allow-forms",title:"HTML Preview"},mo)}):l&&Hr&&ie==="view"?ks(l,W):t.jsxs("div",{className:$("relative h-full",Ct&&"overflow-hidden"),ref:Pa,children:[t.jsx("div",{className:$("h-full",Ct&&"invisible"),children:t.jsx(ra,{value:W,onChange:X,readOnly:!je,vimMode:Wn==="vim",extensions:fs,className:"h-full",blockWidgets:go,onViewReady:e=>{Se.current=e,Or(s=>s+1),window.requestAnimationFrame(()=>{Ft(e)})},onViewDestroy:()=>{Se.current&&(Se.current=null),Or(e=>e+1)},enableSearch:!0,searchOpen:N,onSearchOpenChange:T,highlightLines:z?{start:Math.min(z.start,z.end),end:Math.max(z.start,z.end)}:void 0,lineNumbersConfig:{domEventHandlers:{mousedown:(e,s,i)=>{if(!(i instanceof MouseEvent)||i.button!==0)return!1;i.preventDefault();const c=e.state.doc.lineAt(s.from).number;if(z&&!i.shiftKey&&Math.min(z.start,z.end)===c&&Math.max(z.start,z.end)===c)return Fe(null),$t(),jt.current=!1,Ge.current=null,Nt(!1),!0;if(g&&z&&!i.shiftKey){const m=Math.min(z.start,z.end,c),h=Math.max(z.start,z.end,c);return Fe({start:m,end:h}),jt.current=!1,Ge.current=null,Nt(!1),!0}if(jt.current=!0,Ge.current=c,Nt(!0),z&&i.shiftKey){const m=Math.min(z.start,c),h=Math.max(z.end,c);Fe({start:m,end:h})}else Fe({start:c,end:c});return!0},mouseover:(e,s,i)=>{if(!(i instanceof MouseEvent)||i.buttons!==1||!jt.current||Ge.current===null)return!1;const c=e.state.doc.lineAt(s.from).number,m=Math.min(Ge.current,c),h=Math.max(Ge.current,c);return Fe({start:m,end:h}),Nt(!0),!1},mouseup:()=>(jt.current=!1,Ge.current=null,Nt(!1),!1)}}})}),Ct&&t.jsx("div",{className:"pointer-events-none absolute inset-0 flex items-center justify-center bg-background",children:t.jsxs("div",{className:"flex items-center gap-2 typography-ui text-muted-foreground",children:[t.jsx(v,{name:"loader-4",className:"size-4 animate-spin"}),"Opening file at change..."]})})]}):t.jsx("div",{className:"p-3 typography-ui text-muted-foreground",children:"Pick a file from the tree."})})]})]}),xo=!!(o&&Cn[o]),Cs=o?Xt[o]:null,Ss=t.jsxs("section",{className:$("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:[t.jsx("div",{className:$("flex flex-col gap-2 py-2",g?"px-3":"px-2"),children:t.jsxs("div",{className:"flex items-center gap-2",children:[t.jsxs("div",{className:"relative flex-1 min-w-0",children:[t.jsx(v,{name:"search",className:"pointer-events-none absolute left-2 top-2 size-4 text-muted-foreground"}),t.jsx(vr,{ref:Oe,value:Ne,onChange:e=>ae(e.target.value),placeholder:"Search files...",className:"h-8 pl-8 pr-8 typography-meta"}),Ne.trim().length>0&&t.jsx("button",{type:"button","aria-label":"Clear search",className:"absolute right-2 top-2 inline-flex size-4 items-center justify-center text-muted-foreground hover:text-foreground",onClick:()=>{ae(""),Oe.current?.focus()},children:t.jsx(v,{name:"close",className:"size-4"})})]}),t.jsxs(Ye,{children:[t.jsx(Xe,{asChild:!0,children:t.jsx("span",{className:"inline-flex flex-shrink-0",children:t.jsx(S,{variant:"ghost",size:"sm",onClick:()=>$r("createFile",{path:P,type:"directory"}),className:"size-8 p-0 flex-shrink-0",title:"New File","aria-label":"New File",children:t.jsx(v,{name:"file-add",className:"size-4"})})})}),t.jsx(Ze,{side:"bottom",sideOffset:6,children:"New File"})]}),t.jsxs(Ye,{children:[t.jsx(Xe,{asChild:!0,children:t.jsx("span",{className:"inline-flex flex-shrink-0",children:t.jsx(S,{variant:"ghost",size:"sm",onClick:()=>$r("createFolder",{path:P,type:"directory"}),className:"size-8 p-0 flex-shrink-0",title:"New Folder","aria-label":"New Folder",children:t.jsx(v,{name:"folder-add",className:"size-4"})})})}),t.jsx(Ze,{side:"bottom",sideOffset:6,children:"New Folder"})]}),t.jsxs(Ye,{children:[t.jsx(Xe,{asChild:!0,children:t.jsx("span",{className:"inline-flex flex-shrink-0",children:t.jsx(S,{variant:"ghost",size:"sm",onClick:()=>{ar()},className:"size-8 p-0 flex-shrink-0",title:"Refresh","aria-label":"Refresh",children:t.jsx(v,{name:"refresh",className:"size-4"})})})}),t.jsx(Ze,{side:"bottom",sideOffset:6,children:"Refresh"})]})]})}),t.jsx(an,{outerClassName:"flex-1 min-h-0",className:$("py-2",g?"px-3":"px-2"),children:t.jsx("ul",{className:"flex flex-col",children:Ca?t.jsxs("li",{className:"flex items-center gap-1.5 px-2 py-1 typography-meta text-muted-foreground",children:[t.jsx(v,{name:"loader-4",className:"size-4 animate-spin"}),"Searching..."]}):Fn.length>0?Fn.map(e=>{const s=l?.path===e.path;return t.jsx("li",{children:t.jsxs("button",{type:"button",onClick:()=>{ce(e)},className:$("flex w-full items-center gap-1.5 rounded-md px-2 py-1 text-left text-foreground transition-colors",s?"bg-interactive-selection/70":"hover:bg-interactive-hover/40"),children:[ya(e.path,e.extension),t.jsx("span",{className:"min-w-0 flex-1 truncate typography-meta",style:{direction:"rtl",textAlign:"left"},title:e.path,children:e.relativePath??e.path})]})},e.path)}):Cs?t.jsxs("li",{className:"flex flex-col gap-2 px-2 py-1 typography-meta text-muted-foreground",children:[t.jsx("span",{className:"text-[var(--status-error)]",children:Cs}),t.jsxs(S,{variant:"outline",size:"xs",className:"w-fit gap-1.5",onClick:()=>{ar()},children:[t.jsx(v,{name:"refresh",className:"size-3.5"}),"Refresh"]})]}):xo?is(o,0):t.jsx("li",{className:"px-2 py-1 typography-meta text-muted-foreground",children:"Loading..."})})})]}),vo=r==="full"&&w&&l&&t.jsx("div",{className:"absolute inset-0 z-50 flex flex-col bg-background",children:t.jsxs("div",{className:"flex-1 min-h-0 min-w-0 relative",children:[t.jsx("div",{className:"absolute right-4 top-4 z-30",children:Zr({exitFullscreenOnly:!0})}),t.jsx(an,{outerClassName:"h-full min-w-0",className:"h-full min-w-0",children:ke||bs||ws?xe?t.jsx("div",{className:"p-4"}):t.jsxs("div",{className:"p-4 flex items-center gap-2 typography-ui text-muted-foreground",children:[t.jsx(v,{name:"loader-4",className:"size-4 animate-spin"}),"Loading…"]}):Be?t.jsx("div",{className:"p-4 typography-ui text-[color:var(--status-error)]",children:Be}):Z?t.jsx("div",{className:"flex h-full items-center justify-center p-4",children:t.jsx("img",{src:ys,alt:l.name,className:"max-w-full max-h-full object-contain rounded-md border border-border/30 bg-primary/10"},hs)}):ye?Ns(l):We?t.jsxs("div",{className:"flex h-full flex-col items-center justify-center gap-3 p-6 text-center",children:[t.jsx("div",{className:"typography-ui-header text-foreground",children:"Cannot preview binary file"}),t.jsx("div",{className:"max-w-md typography-ui text-muted-foreground",children:"This file is binary and cannot be edited in PiChamber. Download it to open with another app."}),a.downloadFile?t.jsxs(S,{type:"button",variant:"outline",size:"sm",onClick:()=>{const e=a.downloadFile;!e||!l||e(l.path).catch(s=>{console.error("Download failed:",s),A.error("Operation failed")})},children:[t.jsx(v,{name:"download",className:"mr-2 size-4"}),"Save file"]}):null]}):it&&le()==="preview"?t.jsxs("div",{className:"h-full overflow-auto p-4",children:[D.length>500*1024&&t.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:`This file is large (${Math.round(D.length/1024)}KB). Preview may be limited.`}),t.jsx(on,{fallback:t.jsxs("div",{className:"rounded-md border border-destructive/20 bg-destructive/10 px-3 py-2",children:[t.jsx("div",{className:"mb-1 font-medium text-destructive",children:"Preview unavailable"}),t.jsx("div",{className:"text-sm text-muted-foreground",children:"Switch to edit mode to fix the issue."})]}),children:t.jsx(Os,{content:D,className:"typography-markdown-body",stripFrontmatter:!0,enableFileReferences:!1})})]}):Hr&&ie==="view"?ks(l,W):t.jsxs("div",{className:$("relative h-full",Ct&&"overflow-hidden"),children:[t.jsx("div",{className:$("h-full",Ct&&"invisible"),children:t.jsx(ra,{value:W,onChange:X,readOnly:!je,vimMode:Wn==="vim",extensions:fs,className:"h-full",onViewReady:e=>{Se.current=e,window.requestAnimationFrame(()=>{Ft(e)})},onViewDestroy:()=>{Se.current&&(Se.current=null)}})}),Ct&&t.jsx("div",{className:"pointer-events-none absolute inset-0 flex items-center justify-center bg-background",children:t.jsxs("div",{className:"flex items-center gap-2 typography-ui text-muted-foreground",children:[t.jsx(v,{name:"loader-4",className:"size-4 animate-spin"}),"Opening file at change..."]})})]})})]})});return t.jsxs("div",{className:"flex h-full min-h-0 overflow-hidden bg-background relative",children:[t.jsx(ic,{activeDialog:st,dialogData:at,dialogInputValue:Ke,onDialogInputChange:zn,isDialogSubmitting:La,onDialogSubmit:Ya,onClose:ho,inputRef:Ea}),vo,g?dt?Qr:Ss:r==="editor-only"?t.jsx("div",{className:"flex flex-1 min-h-0 min-w-0 overflow-hidden",children:t.jsx("div",{className:"flex-1 min-h-0 min-w-0 overflow-hidden bg-background",children:Qr})}):t.jsxs("div",{className:"flex flex-1 min-h-0 min-w-0 gap-3 px-3 pb-3 pt-2",children:[E>=700&&t.jsx("div",{className:"w-72 flex-shrink-0 min-h-0 overflow-hidden",children:Ss}),t.jsx("div",{className:"flex-1 min-h-0 min-w-0 overflow-hidden rounded-xl border border-border/60 bg-background",children:Qr})]})]})};export{yu as FilesView};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/DiffView-BHS4m_K7.js","assets/vendor-react-DYyjh7Q0.js","assets/vendor-scheduler-7OC5HNn7.js","assets/index-CRB7i1S2.js","assets/vendor-zustand-CnsBKjP5.js","assets/index-C_Mo87uS.css","assets/useAppFontEffects-DXASDavv.js","assets/vendor-simplewebauthn-browser-VDA66rT_.js","assets/vendor-vite-runtime-DD1OZmLC.js","assets/vendor-base-ui-DwfTg5wD.js","assets/vendor-floating-ui-utils-BzXdqYpP.js","assets/vendor-floating-ui-react-dom-sVFnuruh.js","assets/vendor-floating-ui-dom-Bkw82kL9.js","assets/vendor-floating-ui-core-CXmKXOXc.js","assets/vendor-use-sync-external-store-B7OScDIw.js","assets/runtimeSurface-Cnqjhb6Y.js","assets/vendor-dnd-kit-core-GipZW2tY.js","assets/vendor-dnd-kit-utilities-CrOcp0Bp.js","assets/vendor-dnd-kit-accessibility-Cv52zwWT.js","assets/vendor-dnd-kit-sortable-Ct2QxIHb.js","assets/vendor-cmdk-BCEUzcHE.js","assets/vendor-radix-ui-react-dialog-jX3Dld8c.js","assets/vendor-radix-ui-primitive-Dc_FVRD7.js","assets/vendor-radix-ui-react-compose-refs-D1GnwnP9.js","assets/vendor-radix-ui-react-context-CM4yFQ2I.js","assets/vendor-radix-ui-react-id-BcxRjnbX.js","assets/vendor-radix-ui-react-use-layout-effect-0fyGwS2_.js","assets/vendor-radix-ui-react-use-controllable-state-C_ecoh35.js","assets/vendor-radix-ui-react-dismissable-layer-M7LsH3yL.js","assets/vendor-radix-ui-react-primitive-CfpW6_IT.js","assets/vendor-radix-ui-react-slot-BxUc3Pvz.js","assets/vendor-radix-ui-react-use-callback-ref-UKEWHtoP.js","assets/vendor-radix-ui-react-use-escape-keydown-Co13lHGj.js","assets/vendor-radix-ui-react-focus-scope-C2K7lNPv.js","assets/vendor-radix-ui-react-portal-xlJWBfDg.js","assets/vendor-radix-ui-react-presence-Btn-Dp7L.js","assets/vendor-radix-ui-react-focus-guards-D5MZ0nQs.js","assets/vendor-react-remove-scroll-CfeMe0DL.js","assets/vendor-tslib-De9GV7Vy.js","assets/vendor-react-remove-scroll-bar-C9YRs2nU.js","assets/vendor-react-style-singleton-B1H4bWSG.js","assets/vendor-get-nonce-C-Z93AgS.js","assets/vendor-use-sidecar-C-AuTczP.js","assets/vendor-use-callback-ref-CJB0R85I.js","assets/vendor-aria-hidden-DvXkyWUv.js","assets/vendor-codemirror-language-BuDklWi8.js","assets/vendor-lezer-common-B3-cUCR_.js","assets/vendor-codemirror-state-Wdz6Qsow.js","assets/vendor-marijn-find-cluster-break-DXwl3gUT.js","assets/vendor-codemirror-view-pXtfpqbT.js","assets/vendor-style-mod-NZ5MEPvj.js","assets/vendor-w3c-keyname-Vcq4gwWv.js","assets/vendor-crelt-C8TCjufn.js","assets/vendor-lezer-highlight-CDMHUZ74.js","assets/vendor-codemirror-lang-javascript-CrbeaEAU.js","assets/vendor-lezer-javascript-D7Tj24ot.js","assets/vendor-lezer-lr-bhwg1HMg.js","assets/vendor-codemirror-autocomplete-3xMyV7a2.js","assets/vendor-codemirror-lang-json-BTvAjwkJ.js","assets/vendor-lezer-json-Iaex0UN-.js","assets/vendor-codemirror-lang-css-C4jEScp7.js","assets/vendor-lezer-css-C5xB6jxd.js","assets/vendor-codemirror-lang-html-C1Svvdey.js","assets/vendor-lezer-html-C0I1p52t.js","assets/vendor-codemirror-lang-markdown-BloD9GN-.js","assets/vendor-lezer-markdown-C6g-d6P3.js","assets/vendor-codemirror-language-data-CFVH0pe8.js","assets/vendor-codemirror-lang-python-CR2g6ukK.js","assets/vendor-lezer-python-CvuFxeZl.js","assets/vendor-codemirror-commands-Bzf12ODH.js","assets/vendor-class-variance-authority-5VPnzWs2.js","assets/vendor-clsx-B-dksMZM.js","assets/vendor-tanstack-react-virtual-IrbCBGJ4.js","assets/vendor-tanstack-virtual-core-Dubg10g5.js","assets/vendor-framer-motion-DJASDzNt.js","assets/vendor-motion-dom-DJLgZh4Q.js","assets/vendor-motion-utils-BGh8QBgx.js","assets/vendor-sonner-dWA7qvjr.js","assets/vendor-tailwind-merge-CPcsbTWB.js","assets/vendor-fuse.js-Dw8P0qyA.js","assets/PierreDiffViewer-Bo0_BCT7.js","assets/web-components-CNPQSzpa.js","assets/computeVirtualFileMetrics-DdXkLFAD.js","assets/vendor-shiki-Bbf2GEcE.js","assets/vendor-shikijs-core-CGM_jqPK.js","assets/vendor-shikijs-types-CPSbSeK6.js","assets/vendor-shikijs-vscode-textmate-BgLrS_2D.js","assets/vendor-hast-util-to-html-BKBhbTDb.js","assets/vendor-html-void-elements-CkdplsNl.js","assets/vendor-property-information-rJCbAzvX.js","assets/vendor-zwitch-C2o2j-tx.js","assets/vendor-stringify-entities-CsH1VEn9.js","assets/vendor-character-entities-legacy-BpoLgcEt.js","assets/vendor-character-entities-html4-D7taRCQ7.js","assets/vendor-ccount-c2V3InAJ.js","assets/vendor-comma-separated-tokens-D8TqSuIK.js","assets/vendor-space-separated-tokens-DD3iYX1K.js","assets/vendor-hast-util-whitespace-D4Wp6AEg.js","assets/vendor-shikijs-engine-oniguruma-DPWuIF1G.js","assets/themeResolver-BmJyTmjJ.js","assets/vendor-pierre-theming-C6Z4M5_u.js","assets/vendor-shikijs-engine-javascript-Cme4830A.js","assets/vendor-oniguruma-to-es-DLBnFDCE.js","assets/vendor-oniguruma-parser-C0D4_9rT.js","assets/vendor-regex-BBWcyTkg.js","assets/vendor-regex-utilities-2BQyy0xI.js","assets/vendor-regex-recursion-JU4mF-dD.js","assets/vendor-shikijs-transformers-CZWsLLKm.js","assets/VirtualizedFileDiff-DD5IznIe.js","assets/isDiffPlainText-CeCQwHA2.js","assets/vendor-diff-C3JhlQdm.js","assets/TerminalView-DUwO1CCY.js","assets/TerminalView-BV3KOtdA.css","assets/useInlineCommentController-KJFe98HG.js","assets/collapsible-ODWWxk4f.js","assets/appThemeRegistry-BK0dHKa6.js","assets/registerCustomTheme-BBXUCRnG.js","assets/contextFileOpenGuard-uC4OerzL.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{_ as Rr}from"./vendor-vite-runtime-DD1OZmLC.js";import{R as n,j as e}from"./vendor-react-DYyjh7Q0.js";import{eG as Ir,t as g,eH as Er,D as ke,C as Re,E as Ie,G as Ee,I as R,H as $e,a1 as ss,B as D,T as st,y as rt,z as at,eI as Fr,f as ee,eJ as Mr,eK as Pr,eL as Lr,eM as $r,az as ys,aA as js,aB as ws,aC as Br,_ as Ar,b4 as Dr,eN as zr,eO as Gr,eP as Tr,eQ as Or,eR as _r,eS as Hr,eT as Ur,a$ as Wr,bS as Vr,bT as qr,bU as Yr,bV as Jr,bW as Kr,m as kt,bc as rs,eU as Qr,cU as as,bD as Xr,J as Rt,b_ as Zr,bp as vs,bq as Cs,br as Ns,bs as Ss,bt as It,bu as Et,cc as ea,K as ta,L as sa,N as ra,M as aa,eV as na,eW as oa,eX as ia,Q as la,eY as ca,R as da,h as ua,aE as ma,bm as ha,Y as fa,Z as ga}from"./useAppFontEffects-DXASDavv.js";import{a3 as pa,ah as xa,ai as ba}from"./TerminalView-DUwO1CCY.js";import{u as ns}from"./vendor-zustand-CnsBKjP5.js";import{C as ya}from"./CommitSection-DGGArAb2.js";import{C as ja,a as wa,b as va}from"./collapsible-ODWWxk4f.js";import{P as Ca}from"./PierreDiffViewer-Bo0_BCT7.js";import{u as ks}from"./index-CRB7i1S2.js";import"./vendor-scheduler-7OC5HNn7.js";import"./vendor-simplewebauthn-browser-VDA66rT_.js";import"./vendor-base-ui-DwfTg5wD.js";import"./vendor-floating-ui-utils-BzXdqYpP.js";import"./vendor-floating-ui-react-dom-sVFnuruh.js";import"./vendor-floating-ui-dom-Bkw82kL9.js";import"./vendor-floating-ui-core-CXmKXOXc.js";import"./vendor-use-sync-external-store-B7OScDIw.js";import"./runtimeSurface-Cnqjhb6Y.js";import"./vendor-dnd-kit-core-GipZW2tY.js";import"./vendor-dnd-kit-utilities-CrOcp0Bp.js";import"./vendor-dnd-kit-accessibility-Cv52zwWT.js";import"./vendor-dnd-kit-sortable-Ct2QxIHb.js";import"./vendor-cmdk-BCEUzcHE.js";import"./vendor-radix-ui-react-dialog-jX3Dld8c.js";import"./vendor-radix-ui-primitive-Dc_FVRD7.js";import"./vendor-radix-ui-react-compose-refs-D1GnwnP9.js";import"./vendor-radix-ui-react-context-CM4yFQ2I.js";import"./vendor-radix-ui-react-id-BcxRjnbX.js";import"./vendor-radix-ui-react-use-layout-effect-0fyGwS2_.js";import"./vendor-radix-ui-react-use-controllable-state-C_ecoh35.js";import"./vendor-radix-ui-react-dismissable-layer-M7LsH3yL.js";import"./vendor-radix-ui-react-primitive-CfpW6_IT.js";import"./vendor-radix-ui-react-slot-BxUc3Pvz.js";import"./vendor-radix-ui-react-use-callback-ref-UKEWHtoP.js";import"./vendor-radix-ui-react-use-escape-keydown-Co13lHGj.js";import"./vendor-radix-ui-react-focus-scope-C2K7lNPv.js";import"./vendor-radix-ui-react-portal-xlJWBfDg.js";import"./vendor-radix-ui-react-presence-Btn-Dp7L.js";import"./vendor-radix-ui-react-focus-guards-D5MZ0nQs.js";import"./vendor-react-remove-scroll-CfeMe0DL.js";import"./vendor-tslib-De9GV7Vy.js";import"./vendor-react-remove-scroll-bar-C9YRs2nU.js";import"./vendor-react-style-singleton-B1H4bWSG.js";import"./vendor-get-nonce-C-Z93AgS.js";import"./vendor-use-sidecar-C-AuTczP.js";import"./vendor-use-callback-ref-CJB0R85I.js";import"./vendor-aria-hidden-DvXkyWUv.js";import"./vendor-codemirror-language-BuDklWi8.js";import"./vendor-lezer-common-B3-cUCR_.js";import"./vendor-codemirror-state-Wdz6Qsow.js";import"./vendor-marijn-find-cluster-break-DXwl3gUT.js";import"./vendor-codemirror-view-pXtfpqbT.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-CrbeaEAU.js";import"./vendor-lezer-javascript-D7Tj24ot.js";import"./vendor-lezer-lr-bhwg1HMg.js";import"./vendor-codemirror-autocomplete-3xMyV7a2.js";import"./vendor-codemirror-lang-json-BTvAjwkJ.js";import"./vendor-lezer-json-Iaex0UN-.js";import"./vendor-codemirror-lang-css-C4jEScp7.js";import"./vendor-lezer-css-C5xB6jxd.js";import"./vendor-codemirror-lang-html-C1Svvdey.js";import"./vendor-lezer-html-C0I1p52t.js";import"./vendor-codemirror-lang-markdown-BloD9GN-.js";import"./vendor-lezer-markdown-C6g-d6P3.js";import"./vendor-codemirror-language-data-CFVH0pe8.js";import"./vendor-codemirror-lang-python-CR2g6ukK.js";import"./vendor-lezer-python-CvuFxeZl.js";import"./vendor-codemirror-commands-Bzf12ODH.js";import"./vendor-class-variance-authority-5VPnzWs2.js";import"./vendor-clsx-B-dksMZM.js";import"./vendor-tanstack-react-virtual-IrbCBGJ4.js";import"./vendor-tanstack-virtual-core-Dubg10g5.js";import"./vendor-framer-motion-DJASDzNt.js";import"./vendor-motion-dom-DJLgZh4Q.js";import"./vendor-motion-utils-BGh8QBgx.js";import"./vendor-sonner-dWA7qvjr.js";import"./vendor-tailwind-merge-CPcsbTWB.js";import"./vendor-fuse.js-Dw8P0qyA.js";import"./web-components-CNPQSzpa.js";import"./computeVirtualFileMetrics-DdXkLFAD.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"./VirtualizedFileDiff-DD5IznIe.js";import"./isDiffPlainText-CeCQwHA2.js";import"./vendor-diff-C3JhlQdm.js";import"./useInlineCommentController-KJFe98HG.js";import"./appThemeRegistry-BK0dHKa6.js";import"./registerCustomTheme-BBXUCRnG.js";const Rs="gitmojiCache",Na=1e3*60*60*24*7,Is="1",Sa="https://raw.githubusercontent.com/carloscuesta/gitmoji/master/packages/gitmojis/src/gitmojis.json",Es=l=>{if(!l||typeof l!="object")return!1;const r=l;return typeof r.emoji=="string"&&typeof r.code=="string"&&typeof r.description=="string"},Nt=()=>{if(typeof window>"u")return null;try{const l=window.localStorage.getItem(Rs);if(!l)return null;const r=JSON.parse(l);return!r||r.version!==Is||typeof r.fetchedAt!="number"||!Array.isArray(r.gitmojis)?null:{gitmojis:r.gitmojis.filter(Es),fetchedAt:r.fetchedAt,version:r.version}}catch{return null}},ka=l=>{if(!(typeof window>"u"))try{const r={gitmojis:l,fetchedAt:Date.now(),version:Is};window.localStorage.setItem(Rs,JSON.stringify(r))}catch{return}},os=l=>Date.now()-l.fetchedAt<Na;let Ze=null;const ze=new Set,is=async()=>{if(Ze)return Ze;const l=(async()=>{try{const r=await fetch(Sa);if(!r.ok)throw new Error(`Failed to load gitmojis: ${r.statusText}`);const t=await r.json(),j=Array.isArray(t.gitmojis)?t.gitmojis.filter(Es):[];return ka(j),ze.forEach(b=>b(j)),j}catch(r){console.warn("Failed to load gitmoji list:",r);const t=[];return ze.forEach(j=>j(t)),t}finally{Ze=null}})();return Ze=l,l},Ra=l=>{const[r,t]=n.useState(()=>l?Nt()?.gitmojis??[]:[]),[j,b]=n.useState(!1),p=n.useRef(l);p.current=l,n.useEffect(()=>{if(!l){ze.delete(t),t([]),b(!1);return}const w=Nt();if(w&&(t(w.gitmojis),os(w)))return;ze.add(t),b(!0);let S=!1;return is().finally(()=>{!S&&p.current&&b(!1)}),()=>{S=!0,ze.delete(t)}},[l]);const x=n.useCallback(async()=>{if(!p.current)return[];if(r.length>0)return r;const w=Nt();return w&&os(w)?w.gitmojis:is()},[r]);return{gitmojis:r,isLoading:j,ensureLoaded:x}},Ia=({open:l,onOpenChange:r,directory:t,hasUncommittedChanges:j,hasStagedChanges:b=!1,uncommittedFileCount:p,onChanged:x})=>{const[w,S]=n.useState([]),[y,F]=n.useState(!1),[m,v]=n.useState(""),[h,d]=n.useState(""),[N,C]=n.useState(null),[k,q]=n.useState({}),G=n.useCallback(async()=>{if(t){F(!0);try{const u=await Ir(t);S(u.stashes),q({})}catch(u){g.error(u instanceof Error?u.message:"Failed to load stashes")}finally{F(!1)}}},[t]);n.useEffect(()=>{l&&G()},[G,l]),n.useEffect(()=>{if(!l||!t||w.length===0)return;let u=!1;const I=w.map(H=>H.ref);return Er(t,I).then(H=>{u||q(H.counts)}).catch(()=>{}),()=>{u=!0}},[t,l,w]);const z=n.useMemo(()=>{const u=m.trim().toLowerCase();return u?w.filter(I=>`${I.ref} ${I.message} ${I.relativeTime}`.toLowerCase().includes(u)):w},[m,w]),W=n.useCallback(async u=>{await G(),await x?.(u)},[G,x]),M=async()=>{if(!(!t||N)){C("create");try{const u=await Fr(t,{message:h.trim()||void 0});u.created?(g.success("Changes stashed"),d("")):g.info("No local changes to stash"),await W({affectsIndex:!!(u.created&&b)})}catch(u){g.error(u instanceof Error?u.message:"Failed to stash changes")}finally{C(null)}}},L=async(u,I)=>{if(!(!t||N)&&!(I==="drop"&&!window.confirm(`Drop ${u.ref}?`))){C(`${I}:${u.ref}`);try{I==="apply"&&await Mr(t,{ref:u.ref}),I==="pop"&&await Pr(t,{ref:u.ref}),I==="drop"&&await Lr(t,{ref:u.ref});const H=I==="apply"?"Stash applied":I==="pop"?"Stash popped":"Stash dropped";g.success(H),await W({affectsIndex:I!=="drop"})}catch(H){const J=I==="apply"?"Failed to apply stash":I==="pop"?"Failed to pop stash":"Failed to drop stash";g.error(H instanceof Error?H.message:J),await W({affectsIndex:I!=="drop"})}finally{C(null)}}},A=N!==null;return e.jsx(ke,{open:l,onOpenChange:r,children:e.jsxs(Re,{className:"max-w-2xl max-h-[70vh] flex flex-col",children:[e.jsxs(Ie,{children:[e.jsxs(Ee,{className:"flex items-center gap-2",children:[e.jsx(R,{name:"archive-stack",className:"h-5 w-5"}),"Stashes"]}),e.jsx($e,{children:"Save, restore, and clean up Git stashes for this repository."})]}),e.jsxs("div",{className:"mt-2 rounded-lg border border-border/60 bg-[var(--surface-elevated)] p-3",children:[e.jsxs("div",{className:"flex flex-col gap-2 sm:flex-row",children:[e.jsx(ss,{value:h,onChange:u=>d(u.target.value),placeholder:"Stash name",disabled:A||!j,className:"flex-1"}),e.jsxs(D,{onClick:M,disabled:!j||A||!t,children:[N==="create"?e.jsx(R,{name:"loader-4",className:"size-4 animate-spin"}):e.jsx(R,{name:"inbox-archive",className:"size-4"}),`Stash ${p} files`]})]}),e.jsx("p",{className:"typography-meta mt-2 text-muted-foreground",children:"Untracked files are included automatically."})]}),e.jsxs("div",{className:"relative mt-2",children:[e.jsx(R,{name:"search",className:"absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground"}),e.jsx(ss,{value:m,onChange:u=>v(u.target.value),placeholder:"Search stashes",className:"pl-9"})]}),e.jsx("div",{className:"flex-1 overflow-y-auto",children:y?e.jsx("div",{className:"flex items-center justify-center py-10 text-muted-foreground",children:e.jsx(R,{name:"loader-4",className:"size-5 animate-spin"})}):z.length===0?e.jsx("div",{className:"py-8 text-center text-muted-foreground",children:m?"No matching stashes.":"No stashes yet."}):z.map((u,I)=>e.jsxs("div",{className:"group flex items-center gap-2 rounded py-1.5 transition-colors hover:bg-interactive-hover/30",children:[e.jsxs("div",{className:"min-w-0 flex-1 pl-2",children:[e.jsx("p",{className:"typography-small truncate text-foreground",children:u.message||"Untitled stash"}),e.jsxs("p",{className:"typography-meta truncate text-muted-foreground",children:[e.jsxs(st,{children:[e.jsx(rt,{asChild:!0,children:e.jsx("span",{children:I===0&&!m.trim()?"Latest":`#${I+1}`})}),e.jsx(at,{sideOffset:6,children:u.ref})]})," · ",u.relativeTime," · ",typeof k[u.ref]=="number"?`${k[u.ref]} files`:"counting files..."]})]}),e.jsxs("div",{className:"mr-2 flex shrink-0 items-center gap-1 opacity-100 sm:opacity-0 sm:group-hover:opacity-100",children:[e.jsx(St,{label:"Apply",loading:N===`apply:${u.ref}`,onClick:()=>L(u,"apply"),disabled:A,children:e.jsx(R,{name:"inbox-unarchive",className:"size-4"})}),e.jsx(St,{label:"Pop",loading:N===`pop:${u.ref}`,onClick:()=>L(u,"pop"),disabled:A,children:e.jsx(R,{name:"inbox-unarchive-fill",className:"size-4"})}),e.jsx(St,{label:"Drop",loading:N===`drop:${u.ref}`,onClick:()=>L(u,"drop"),disabled:A,destructive:!0,children:e.jsx(R,{name:"delete-bin",className:"size-4"})})]})]},u.ref))})]})})},St=({label:l,loading:r,disabled:t,destructive:j,onClick:b,children:p})=>e.jsxs(st,{children:[e.jsx(rt,{asChild:!0,children:e.jsx("button",{type:"button","aria-label":l,"aria-busy":r||void 0,className:ee("flex h-6 w-6 items-center justify-center transition-colors disabled:opacity-50",j?"text-[var(--status-error)] hover:text-[var(--status-error)]":"text-muted-foreground hover:text-foreground"),onClick:b,disabled:t,children:r?e.jsx(R,{name:"loader-4",className:"size-4 animate-spin"}):p})}),e.jsx(at,{sideOffset:6,children:l})]}),Ea=({onOpenStashes:l})=>e.jsxs("div",{className:"flex flex-col items-center justify-center py-10 px-4 text-center",children:[e.jsx(R,{name:"git-commit",className:"size-10 text-muted-foreground/70 mb-4"}),e.jsx("p",{className:"typography-ui-label font-semibold text-foreground mb-1",children:"Working tree clean"}),e.jsx("p",{className:"typography-meta text-muted-foreground mb-4",children:"All changes have been committed"}),l?e.jsxs(D,{type:"button",variant:"outline",size:"sm",onClick:l,className:"gap-1.5",children:[e.jsx(R,{name:"archive-stack",className:"size-4"}),"Stashes"]}):null]}),Ne=8,Fa=({laned:l,totalLanes:r,isExpanded:t})=>{const{lane:j,color:b,connectors:p}=l,w=Math.max(r,j+1)*Ne+Ne/2,S=n.useRef(null),y=n.useRef(null);return n.useLayoutEffect(()=>{const F=S.current,m=y.current;if(!F||!m)return;const v=F.offsetHeight;if(v===0)return;const h=window.devicePixelRatio||1;m.width=w*h,m.height=v*h;const d=m.getContext("2d");if(!d)return;d.scale(h,h),d.clearRect(0,0,w,v);const N=v/2,C=j*Ne+Ne/2,k=getComputedStyle(m),q=k.getPropertyValue("--surface-muted-foreground").trim()||k.color,G=M=>{if(!M.startsWith("var("))return M;const L=M.slice(4,-1).trim();return k.getPropertyValue(L).trim()||q},z=[...p].sort((M,L)=>{const A=u=>u==="branch-out"||u==="merge-in";return(A(M.type)?1:0)-(A(L.type)?1:0)});for(const M of z){const L=M.fromLane*Ne+Ne/2,A=M.toLane*Ne+Ne/2,u=M.type==="passing"?.72:M.type==="branch-out"||M.type==="merge-in"?.95:1;switch(d.beginPath(),d.strokeStyle=G(M.color),d.globalAlpha=u,d.lineWidth=1.25,d.lineCap="round",M.type){case"passing":case"commit-lane":d.moveTo(L,0),d.lineTo(L,v);break;case"top-stub":d.moveTo(L,0),d.lineTo(L,N);break;case"bottom-stub":d.moveTo(L,N),d.lineTo(L,v);break;case"branch-out":{const I=(N+v)/2;d.moveTo(C,N),d.bezierCurveTo(C,I,A,I,A,v);break}case"merge-in":{const I=N/2;d.moveTo(L,0),d.bezierCurveTo(L,I,C,I,C,N);break}default:continue}d.stroke(),d.globalAlpha=1}const W=k.getPropertyValue("--background").trim()||k.getPropertyValue("--surface-background").trim();d.beginPath(),d.arc(C,N,4,0,Math.PI*2),d.fillStyle=G(b),d.fill(),d.beginPath(),d.arc(C,N,5,0,Math.PI*2),d.strokeStyle=W||q,d.lineWidth=2,d.stroke()},[l,j,b,p,r,t,w]),e.jsx("div",{ref:S,style:{width:w,height:"100%",position:"relative",flexShrink:0,overflow:"hidden"},children:e.jsx("canvas",{ref:y,style:{position:"absolute",inset:0,width:"100%",height:"100%",display:"block"}})})},ls=15e3,cs=500,ds=12,us=8*1024*1024,ms=l=>typeof l=="string"?0:(l.original?.length??0)+(l.modified?.length??0),hs=l=>{if(l.size<=ds){let b=0;for(const p of l.values())b+=ms(p);if(b<=us)return l}const r=Array.from(l.entries()).reverse(),t=new Map;let j=0;for(const[b,p]of r){if(t.size>=ds)continue;const x=ms(p);j+x>us&&t.size>0||(t.set(b,p),j+=x)}return new Map(Array.from(t.entries()).reverse())};function fs(l,r){const t=new Date(l);return Number.isNaN(t.getTime())?l:Dr(t,r,{year:"numeric",month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"})}function Ma(l){switch(l){case"A":return"text-[var(--status-success)]";case"D":return"text-[var(--status-error)]";case"M":return"text-[var(--status-warning)]";case"R":return"text-[var(--status-info)]";default:return"text-muted-foreground"}}function Pa(l){return l?l.split(",").map(r=>r.trim()).filter(Boolean).map(r=>{const t=r.startsWith("HEAD ->");return{label:t?r.replace("HEAD -> ",""):r.replace("tag: ",""),isHead:t,isTag:r.startsWith("tag: ")}}):[]}const La=n.memo(({entry:l,mode:r="history",laned:t,totalLanes:j,isExpanded:b,onToggle:p,files:x,isLoadingFiles:w,onCopyHash:S,directory:y,onConflict:F,onActionSuccess:m})=>{const v=ks(c=>c.timeFormatPreference),h=r==="graph",d={checkout:"Check out this commit as detached HEAD?",cherryPick:"Cherry-pick this commit onto the current branch?",revert:"Stage a revert of this commit?",merge:"Merge this commit into the current branch?",rebase:"Rebase current branch onto this commit?",resetSoft:"Soft reset — HEAD moves, staged changes preserved.",resetMixed:"Mixed reset — HEAD moves, changes unstaged.",resetHard:"Hard reset — HEAD moves, all uncommitted changes permanently discarded."},N={soft:"Soft — keep staged",mixed:"Mixed — unstage changes",hard:"Hard — discard all changes"},[C,k]=n.useState(null),[q,G]=n.useState(!1),[z,W]=n.useState(""),[M,L]=n.useState(null),[A,u]=n.useState(new Set),[I,H]=n.useState(new Map),[J,V]=n.useState(new Set),te=async()=>{if(y){k("checkout");try{await Ur(y,l.hash),g.success("Checked out (detached HEAD)"),m?.()}catch(c){g.error(String(c.message))}finally{k(null)}}},T=async()=>{if(!(!y||!z.trim())){k("createBranch");try{await zr(y,z.trim(),l.hash),G(!1),W(""),m?.()}catch(c){g.error(String(c.message))}finally{k(null)}}},Q=async()=>{if(y){k("cherryPick");try{const c=await Hr(y,l.hash);c.conflict?F?.({conflict:!0,conflictFiles:c.conflictFiles,operation:"cherry-pick"}):m?.()}catch(c){g.error(String(c.message))}finally{k(null)}}},ue=async()=>{if(y){k("revert");try{const c=await _r(y,l.hash);c.conflict?F?.({conflict:!0,conflictFiles:c.conflictFiles,operation:"revert"}):m?.()}catch(c){g.error(String(c.message))}finally{k(null)}}},ne=async(c,$=!1)=>{if(!(!y||C!==null)){k("reset");try{await Gr(y,l.hash,c,$),m?.()}catch(_){g.error(String(_.message))}finally{k(null)}}},Fe=async()=>{if(!M)return;const c=M;switch(L(null),c){case"checkout":return te();case"cherryPick":return Q();case"revert":return ue();case"merge":return Be();case"rebase":return me();case"resetSoft":return ne("soft");case"resetMixed":return ne("mixed");case"resetHard":return ne("hard",!0)}},Be=async()=>{if(y){k("merge");try{const c=await Or(y,{branch:l.hash});c.conflict?F?.({conflict:!0,conflictFiles:c.conflictFiles,operation:"merge"}):m?.()}catch(c){g.error(String(c.message))}finally{k(null)}}},me=async()=>{if(y){k("rebase");try{const c=await Tr(y,{onto:l.hash});c.conflict?F?.({conflict:!0,conflictFiles:c.conflictFiles,operation:"rebase"}):m?.()}catch(c){g.error(String(c.message))}finally{k(null)}}},P=n.useCallback(async c=>{const $=c.path;if(!y){H(_=>new Map(_).set($,"error"));return}H(_=>hs(new Map(_).set($,"loading")));try{const _=$r(y,l.hash,c.path,!1),he=new Promise((fe,X)=>{setTimeout(()=>X(new Error(`Timed out after ${ls}ms`)),ls)}),we=await Promise.race([_,he]);H(fe=>hs(new Map(fe).set($,we)))}catch{H(_=>new Map(_).set($,"error"))}},[y,l.hash]),K=n.useCallback(async c=>{const $=c.path;if(c.changeType==="R"||c.isBinary){u(fe=>{const X=new Set(fe);return X.has($)?X.delete($):X.add($),X});return}const _=I.get($);if(A.has($)&&_&&_!=="error"){u(fe=>{const X=new Set(fe);return X.delete($),X});return}u(fe=>{const X=new Set(fe);return X.add($),X}),!(_&&_!=="error"||c.insertions+c.deletions>cs&&!J.has($))&&await P(c)},[I,J,P,A]);return e.jsxs("li",{children:[e.jsxs("div",{role:"button",tabIndex:0,"aria-expanded":b,onClick:p,onKeyDown:c=>{(c.key==="Enter"||c.key===" ")&&(c.preventDefault(),p())},className:ee("w-full flex items-start gap-3 px-3 py-2 text-left transition-colors",h?"hover:bg-[var(--interactive-hover)]/40":b?"bg-sidebar/90":"hover:bg-sidebar/40"),children:[h&&t&&j!==void 0?e.jsx("div",{className:"-my-2 shrink-0 self-stretch",children:e.jsx(Fa,{laned:t,totalLanes:j,isExpanded:b})}):e.jsx("div",{className:"h-2 w-2 translate-y-2 rounded-full shrink-0",style:{backgroundColor:"var(--status-success)"},"aria-hidden":!0}),e.jsxs("div",{className:"min-w-0 flex-1",children:[h?(()=>{const c=Pa(l.refs);return c.length>0?e.jsx("div",{className:"flex flex-wrap gap-1 mb-0.5",children:c.map($=>e.jsx("span",{className:ee("inline-flex items-center px-1.5 py-0 typography-micro rounded font-medium",$.isHead?"bg-[var(--chart-1)] text-[var(--primary-foreground)]":$.isTag?"bg-[var(--chart-5)] text-[var(--primary-foreground)]":"bg-[var(--interactive-hover)] text-[var(--foreground)]"),children:$.label},$.label))}):null})():null,e.jsx("p",{className:"typography-ui-label font-medium text-foreground line-clamp-1",children:l.message}),e.jsxs("div",{className:"flex items-center gap-1 typography-meta text-muted-foreground",children:[e.jsxs("div",{className:"flex items-center gap-1 min-w-0 truncate",children:[e.jsx("span",{className:"truncate min-w-[3ch]",title:l.author_name,children:l.author_name}),e.jsx("span",{className:"shrink-0",children:"·"}),e.jsx("span",{className:"truncate min-w-0",title:fs(l.date,v),children:fs(l.date,v)})]}),e.jsx("span",{className:"shrink-0",children:"·"}),e.jsx("code",{className:"shrink-0 font-mono",children:l.hash.slice(0,8)}),e.jsxs(st,{children:[e.jsx(rt,{asChild:!0,children:e.jsx(D,{variant:"ghost",size:"sm",className:"h-5 px-1 shrink-0",onClick:c=>{c.stopPropagation(),S(l.hash)},children:e.jsx(R,{name:"file-copy",className:"size-3"})})}),e.jsx(at,{sideOffset:8,children:"Copy SHA"})]})]})]})]}),b&&e.jsxs("div",{className:"px-3 pb-2 pl-8 border-t border-border/40",children:[h&&M?e.jsxs("div",{className:"flex items-center gap-2 py-2 border-b border-border/30 mb-2",children:[e.jsx("span",{className:"typography-micro text-muted-foreground flex-1 min-w-0",children:d[M]}),e.jsxs(D,{variant:"destructive",size:"xs",className:"h-6 shrink-0",disabled:C!==null,onClick:c=>{c.stopPropagation(),Fe()},children:[C!==null?e.jsx(R,{name:"loader-4",className:"size-3 animate-spin mr-1"}):null,"Confirm"]}),e.jsx(D,{variant:"ghost",size:"xs",className:"h-6 shrink-0",disabled:C!==null,onClick:c=>{c.stopPropagation(),L(null)},children:"Cancel"})]}):h?e.jsxs("div",{className:"flex flex-wrap items-center gap-1.5 py-2 border-b border-border/30 mb-2",children:[e.jsx(D,{variant:"outline",size:"xs",className:"h-6",disabled:C!==null,onClick:c=>{c.stopPropagation(),L("checkout")},children:"Checkout"}),q?e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx("input",{autoFocus:!0,value:z,onChange:c=>W(c.target.value),onKeyDown:c=>{c.key==="Enter"&&T(),c.key==="Escape"&&(G(!1),W(""))},placeholder:"Branch name",className:"h-6 text-xs px-2 rounded border border-border/60 bg-background min-w-0 w-32"}),e.jsxs(D,{variant:"outline",size:"xs",className:"h-6",disabled:!z.trim()||C!==null,onClick:c=>{c.stopPropagation(),T()},children:[C==="createBranch"?e.jsx(R,{name:"loader-4",className:"size-3 animate-spin mr-1"}):null,"Create"]})]}):e.jsx(D,{variant:"outline",size:"xs",className:"h-6",onClick:c=>{c.stopPropagation(),G(!0)},children:"Create branch here"}),e.jsx(D,{variant:"outline",size:"xs",className:"h-6",disabled:C!==null,onClick:c=>{c.stopPropagation(),L("cherryPick")},children:"Cherry-pick"}),e.jsx(D,{variant:"outline",size:"xs",className:"h-6",disabled:C!==null,onClick:c=>{c.stopPropagation(),L("revert")},children:"Revert"}),e.jsxs(ys,{children:[e.jsx(js,{asChild:!0,children:e.jsxs(D,{variant:"outline",size:"xs",className:"h-6",disabled:C!==null,onClick:c=>c.stopPropagation(),children:[C==="reset"?e.jsx(R,{name:"loader-4",className:"size-3 animate-spin mr-1"}):null,"Reset..."]})}),e.jsx(ws,{align:"start",className:"min-w-max",children:["soft","mixed","hard"].map(c=>e.jsx(Br,{disabled:C!==null,onSelect:$=>{$.stopPropagation(),L(`reset${c.charAt(0).toUpperCase()+c.slice(1)}`)},children:N[c]},c))})]}),e.jsx(D,{variant:"outline",size:"xs",className:"h-6",disabled:C!==null,onClick:c=>{c.stopPropagation(),L("merge")},children:"Merge into current"}),e.jsx(D,{variant:"outline",size:"xs",className:"h-6",disabled:C!==null,onClick:c=>{c.stopPropagation(),L("rebase")},children:"Rebase onto this"})]}):null,w?e.jsxs("div",{className:"flex items-center gap-2 py-2",children:[e.jsx(R,{name:"loader-4",className:"size-4 animate-spin text-muted-foreground"}),e.jsx("span",{className:"typography-micro text-muted-foreground",children:"Loading files..."})]}):x.length===0?e.jsx("p",{className:"typography-micro text-muted-foreground py-2",children:"No files"}):e.jsx("ul",{className:"space-y-0.5 py-2",children:x.map(c=>e.jsxs("li",{children:[e.jsxs("button",{type:"button",onClick:()=>K(c),className:ee("w-full flex items-center gap-2 typography-micro text-left cursor-pointer transition-colors rounded px-1",A.has(c.path)?"bg-sidebar/90":"hover:bg-sidebar/40"),children:[e.jsx("span",{className:ee("font-semibold w-3 text-center shrink-0",Ma(c.changeType)),children:c.changeType}),e.jsx("span",{className:"truncate text-foreground min-w-0",title:c.path,children:c.path}),!c.isBinary&&e.jsxs("span",{className:"shrink-0",children:[e.jsxs("span",{style:{color:"var(--status-success)"},children:["+",c.insertions]}),e.jsx("span",{className:"text-muted-foreground mx-0.5",children:"/"}),e.jsxs("span",{style:{color:"var(--status-error)"},children:["-",c.deletions]})]}),c.isBinary&&e.jsx("span",{className:"typography-micro text-muted-foreground shrink-0",children:"Binary"}),e.jsx(R,{name:A.has(c.path)?"arrow-down-s":"arrow-right-s",className:"size-3 shrink-0 text-muted-foreground"})]}),A.has(c.path)&&e.jsx("div",{className:"max-h-[400px] overflow-y-auto rounded border border-border/40 mx-2 mb-1","data-diff-virtual-root":!0,"data-diff-virtual-content":!0,children:c.changeType==="R"?e.jsx("div",{className:"px-3 py-2 text-sm text-muted-foreground",children:"Renamed file — diff not supported"}):c.isBinary?e.jsx("div",{className:"px-3 py-2 text-sm text-muted-foreground",children:"Binary file — no diff available"}):(()=>{const $=c.insertions+c.deletions;if(!J.has(c.path)&&$>cs)return e.jsxs("div",{className:"flex flex-col items-start gap-1 px-3 py-2 text-sm text-muted-foreground",children:[e.jsx("div",{className:"typography-ui-label font-semibold text-foreground",children:`Large diff (${$} changed lines)`}),e.jsx("div",{className:"typography-meta text-muted-foreground",children:"Rendering may be slow. You can still view the diff by clicking below."}),e.jsx(D,{type:"button",variant:"ghost",size:"xs",className:"h-6 px-0 text-primary hover:bg-transparent hover:underline",onClick:()=>{V(he=>new Set(he).add(c.path)),P(c)},children:"Render anyway"})]});const _=I.get(c.path);return _==="loading"||_===void 0?e.jsx("div",{className:"px-3 py-2 text-sm text-muted-foreground",children:"Loading diff..."}):_==="error"?e.jsx("button",{type:"button",onClick:()=>K(c),className:"w-full text-left px-3 py-2 text-sm text-muted-foreground hover:bg-[var(--interactive-hover)] transition-colors",children:"Failed to load diff. Click to retry."}):e.jsx(Ca,{original:_.original,modified:_.modified,language:Ar(c.path)||"",fileName:c.path,renderSideBySide:!1,layout:"inline",enableComments:!1})})()})]},c.path))})]})]})}),gs=["var(--chart-1)","var(--chart-2)","var(--chart-3)","var(--chart-4)","var(--chart-5)","var(--syntax-keyword)","var(--syntax-string)","var(--status-info)"];function et(l){return gs[l%gs.length]}function $a(l){if(l.length===0)return[];const r=[],t=[];for(let j=0;j<l.length;j++){const b=l[j],p=[];for(let h=0;h<r.length;h++)r[h]===b.hash&&p.push(h);let x=p.length>0?p[0]:-1;if(x===-1){const h=r.indexOf(null);h!==-1?x=h:(x=r.length,r.push(null))}const w=p.slice(1),S=et(x),y=r[x]===b.hash,F=b.parents.length>0;F?r[x]=b.parents[0]:r[x]=null;const m=[];for(let h=1;h<b.parents.length;h++){const d=b.parents[h],N=r.indexOf(d);if(N!==-1)m.push(N);else{const C=r.indexOf(null),k=C!==-1?C:r.length;r[k]=d,k===r.length&&r.push(d),m.push(k)}}const v=[];y&&F?v.push({fromLane:x,toLane:x,color:S,type:"commit-lane"}):y&&!F?v.push({fromLane:x,toLane:x,color:S,type:"top-stub"}):!y&&F&&v.push({fromLane:x,toLane:x,color:S,type:"bottom-stub"});for(const h of w)v.push({fromLane:h,toLane:x,color:et(h),type:"merge-in"}),r[h]=null;for(const h of m)v.push({fromLane:x,toLane:h,color:et(h),type:"branch-out"});for(let h=0;h<r.length;h++)r[h]!==null&&h!==x&&(m.includes(h)||v.push({fromLane:h,toLane:h,color:et(h),type:"passing"}));t.push({commit:b,lane:x,color:S,connectors:v})}return t}const Ba=[{label:"25 commits",value:25},{label:"50 commits",value:50},{label:"100 commits",value:100}],Aa=({mode:l="history",log:r,isLogLoading:t,logMaxCount:j,onLogMaxCountChange:b,expandedCommitHashes:p,onToggleCommit:x,commitFilesMap:w,loadingCommitHashes:S,onCopyHash:y,directory:F,showHeader:m=!0,contentMaxHeightClassName:v="max-h-[50vh]",branchDivider:h=null,onConflict:d,onActionSuccess:N})=>{const[C,k]=n.useState(!0),q=l==="graph",G=n.useMemo(()=>q&&r?$a(r.all):[],[q,r]),z=n.useMemo(()=>Math.max(1,...G.map(T=>T.lane+1)),[G]),W=n.useMemo(()=>new Map(G.map(T=>[T.commit.hash,T])),[G]);if(!r)return null;const M=h!==null&&h.insertBeforeIndex>0&&h.insertBeforeIndex<r.all.length,L=h!==null&&h.insertBeforeIndex===r.all.length,A=M||L,u=M?r.all.slice(0,h.insertBeforeIndex):L?r.all:[],I=M?r.all.slice(h.insertBeforeIndex):[],H=h?.direction==="down"?e.jsx(R,{name:"arrow-down-s",className:"size-3.5"}):e.jsx(R,{name:"arrow-up",className:"size-3.5"}),J=T=>e.jsx("ul",{className:"divide-y divide-border/60",children:T.map(Q=>e.jsx(La,{entry:Q,mode:l,laned:q?W.get(Q.hash):void 0,totalLanes:q?z:void 0,isExpanded:p.has(Q.hash),onToggle:()=>x(Q.hash),files:w.get(Q.hash)??[],isLoadingFiles:S.has(Q.hash),onCopyHash:y,directory:F,onConflict:d,onActionSuccess:N},Q.hash))}),V=r.all.length>=j?e.jsx("div",{className:"flex justify-center py-2 border-t border-border/40",children:e.jsx(D,{type:"button",variant:"ghost",size:"xs",onClick:()=>b(j+25),disabled:t,className:"px-3 text-muted-foreground hover:text-foreground",children:t?e.jsxs("span",{className:"flex items-center gap-1",children:[e.jsx(R,{name:"loader-4",className:"size-3 animate-spin"}),"Loading..."]}):"Load more"})}):null,te=e.jsx(Wr,{outerClassName:`min-h-0 ${v}`,className:"h-full w-full",children:r.all.length===0?e.jsx("div",{className:"flex h-full items-center justify-center p-4",children:e.jsx("p",{className:"typography-ui-label text-muted-foreground",children:"No commits found"})}):A&&h?e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"flex flex-col gap-0",children:[u.length>0?e.jsx("div",{className:"rounded-xl border border-border/60 bg-background/70 overflow-hidden",children:J(u)}):null,e.jsxs("div",{className:"flex items-center gap-2 px-3 py-1.5","aria-hidden":!0,children:[e.jsx("span",{className:"h-px flex-1 bg-border/60"}),e.jsxs("span",{className:"inline-flex max-w-[80%] items-center gap-1 typography-micro text-muted-foreground",children:[e.jsx("span",{className:"truncate",title:h.branchName,children:h.branchName}),H]}),e.jsx("span",{className:"h-px flex-1 bg-border/60"})]}),I.length>0?e.jsx("div",{className:"rounded-xl border border-border/60 bg-background/70 overflow-hidden",children:J(I)}):null]}),V]}):e.jsxs(e.Fragment,{children:[J(r.all),V]})});return m?e.jsxs(ja,{open:C,onOpenChange:k,className:"rounded-xl border border-border/60 bg-background/70 overflow-hidden",children:[e.jsxs(wa,{className:"flex w-full items-center justify-between px-3 h-10 hover:bg-transparent",children:[e.jsx("h3",{className:"typography-ui-header font-semibold text-foreground",children:"History"}),e.jsxs("div",{className:"flex items-center gap-2",children:[C&&e.jsx("div",{onClick:T=>T.stopPropagation(),onPointerDown:T=>T.stopPropagation(),children:e.jsxs(Vr,{value:String(j),onValueChange:T=>b(Number(T)),disabled:t,children:[e.jsx(qr,{size:"sm",className:"w-auto",disabled:t,children:e.jsx(Yr,{placeholder:"Commits"})}),e.jsx(Jr,{children:Ba.map(T=>e.jsx(Kr,{value:String(T.value),children:T.label},T.value))})]})}),C?e.jsx(R,{name:"arrow-up-s",className:"size-4 text-muted-foreground"}):e.jsx(R,{name:"arrow-down-s",className:"size-4 text-muted-foreground"})]})]}),e.jsx(va,{children:te})]}):A?e.jsx("section",{className:"h-full min-h-0",children:te}):e.jsx("section",{className:"h-full min-h-0 rounded-xl border border-border/60 bg-background/70 overflow-hidden",children:te})},Da=({open:l,onOpenChange:r,conflictFiles:t=[],directory:j,operation:b,onAbort:p,onClearState:x})=>{const w=kt(u=>u.openNewSessionDraft),S=kt(u=>u.currentSessionId),y=rs(u=>u.setPendingInputText),F=rs(u=>u.setPendingSyntheticParts),m=ks(u=>u.setActiveMainTab),[v,h]=n.useState(!1),[d,N]=n.useState(null),[C,k]=n.useState(null);n.useEffect(()=>{!l||!j||(h(!0),k(null),N(null),Qr(j).then(u=>{N(u)}).catch(u=>{const I=u instanceof Error?u.message:"Failed to load conflict details";k(I)}).finally(()=>{h(!1)}))},[l,j]);const q=n.useCallback(async()=>{if(!d)return null;const u=b==="merge"?"merge":"rebase",I=d.headInfo||(b==="merge"?"MERGE_HEAD":"REBASE_HEAD"),H=b==="merge"?"git commit --no-edit":"git rebase --continue",J=await as("git.conflict.resolve.visible",{operation_label:u,head_ref:I}),V=await as("git.conflict.resolve.instructions",{operation_label:u,directory:j,operation:b,head_info:d.headInfo||"N/A",continue_cmd:H}),te=`${u} conflict context (JSON)
|
|
3
|
+
${JSON.stringify({directory:j,operation:d.operation,headInfo:d.headInfo,statusPorcelain:d.statusPorcelain,unmergedFiles:d.unmergedFiles,diff:d.diff},null,2)}`;return{visibleText:J,instructionsText:V,payloadText:te}},[d,j,b]),G=()=>{p(),r(!1)},z=()=>{x?.(),r(!1)},W=async()=>{const u=await q();if(!u){g.error("No conflict details available");return}if(!S){g.error("No active session",{description:"Open or create a session to resolve conflicts."});return}y(u.visibleText,"replace"),F([{text:u.instructionsText,synthetic:!0},{text:u.payloadText,synthetic:!0}]),m("chat"),x?.(),r(!1)},M=async()=>{const u=await q();if(!u){g.error("No conflict details available");return}w({directoryOverride:j,initialPrompt:u.visibleText,syntheticParts:[{text:u.instructionsText,synthetic:!0},{text:u.payloadText,synthetic:!0}]}),m("chat"),x?.(),r(!1)},L=b==="merge"?"Merge":"Rebase",A=d?.unmergedFiles||t;return e.jsx(ke,{open:l,onOpenChange:r,children:e.jsx(Re,{className:"max-w-md w-[calc(100vw-2rem)]",children:e.jsxs("div",{className:"flex flex-col gap-4 overflow-hidden",children:[e.jsxs(Ie,{children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(R,{name:"alert",className:"size-5 shrink-0 text-[var(--status-warning)]"}),e.jsx(Ee,{children:`${L} conflicts detected`})]}),e.jsx($e,{children:`Resolve the ${b} conflicts to continue.`})]}),v&&e.jsxs("div",{className:"flex items-center justify-center gap-2 py-4 text-muted-foreground",children:[e.jsx(R,{name:"loader-4",className:"size-4 animate-spin"}),e.jsx("span",{className:"typography-meta",children:"Loading conflict details..."})]}),C&&e.jsx("div",{className:"rounded-lg bg-[var(--status-error-bg)] p-3 text-[var(--status-error)] typography-meta break-words",children:`Failed to load conflict details: ${C}`}),A.length>0&&e.jsxs("div",{className:"space-y-2 overflow-hidden",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx("p",{className:"typography-meta text-muted-foreground",children:"Conflicted files:"}),e.jsx("span",{className:"typography-micro px-1.5 py-0.5 rounded bg-[var(--surface-elevated)] text-muted-foreground",children:A.length})]}),e.jsx("div",{className:"bg-[var(--surface-elevated)] rounded-lg p-3 max-h-40 overflow-y-auto overflow-x-hidden",children:e.jsx("ul",{className:"space-y-1",children:A.map(u=>e.jsx("li",{className:"typography-micro text-foreground font-mono truncate block",title:u,children:u},u))})})]}),d?.headInfo&&e.jsxs("div",{className:"space-y-1 overflow-hidden",children:[e.jsx("p",{className:"typography-meta text-muted-foreground",children:"HEAD information:"}),e.jsx("div",{className:"typography-micro text-foreground font-mono bg-[var(--surface-elevated)] rounded-lg p-3 max-h-24 overflow-y-auto break-words whitespace-pre-wrap",children:d.headInfo})]}),e.jsxs("div",{className:"flex flex-col gap-2 pt-2",children:[e.jsxs(D,{variant:"default",onClick:()=>{M()},disabled:v||!d,className:"w-full gap-2",children:[v?e.jsx(R,{name:"loader-4",className:"size-4 animate-spin"}):e.jsx(R,{name:"add",className:"size-4"}),"Resolve in new session"]}),e.jsxs(D,{variant:"outline",onClick:()=>{W()},disabled:v||!d||!S,className:"w-full gap-2",children:[v?e.jsx(R,{name:"loader-4",className:"size-4 animate-spin"}):e.jsx(R,{name:"chat-1",className:"size-4"}),"Resolve in current session"]}),e.jsxs("div",{className:"flex gap-2 pt-1",children:[e.jsx(D,{variant:"ghost",size:"sm",onClick:z,className:"flex-1",children:"Continue later"}),e.jsx(D,{variant:"destructive",size:"sm",onClick:G,className:"flex-1",children:`Abort ${L}`})]})]})]})})})},za=({open:l,onOpenChange:r,operation:t,targetBranch:j,onConfirm:b})=>{const[p,x]=n.useState(!0),[w,S]=n.useState(!1),y=t==="merge"?"Merge":"Rebase",F=async()=>{S(!0);try{await b(p),r(!1)}catch(v){const h=v instanceof Error?v.message:`Failed to ${t}`;g.error(h)}finally{S(!1)}},m=()=>{w||r(!1)};return e.jsx(ke,{open:l,onOpenChange:w?void 0:r,children:e.jsxs(Re,{className:"max-w-md",children:[e.jsxs(Ie,{children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(R,{name:"alert",className:"size-5 text-[var(--status-warning)]"}),e.jsx(Ee,{children:"Uncommitted Changes"})]}),e.jsx($e,{children:`Stash your local changes before starting the ${t}.`})]}),e.jsxs("div",{className:"py-2",children:[e.jsx("p",{className:"typography-meta text-muted-foreground mb-3",children:"This will:"}),e.jsxs("ol",{className:"list-decimal list-inside space-y-1 typography-meta text-foreground",children:[e.jsx("li",{children:"Stash your uncommitted changes"}),e.jsxs("li",{children:[t==="merge"?"Merge":"Rebase"," ",t==="merge"?"with":"onto"," ",e.jsx("span",{className:"font-mono text-primary",children:j})]}),p&&e.jsx("li",{children:"Restore your stashed changes"})]})]}),e.jsxs("div",{className:"flex items-center gap-2 py-2",children:[e.jsx(Xr,{checked:p,onChange:x,disabled:w,ariaLabel:"Restore stashed changes after operation"}),e.jsx("span",{className:"typography-ui-label text-foreground cursor-pointer select-none",onClick:()=>!w&&x(!p),children:`Restore stashed changes after ${t}`})]}),e.jsxs(Rt,{className:"gap-2",children:[e.jsx(D,{variant:"ghost",size:"sm",onClick:m,disabled:w,children:"Cancel"}),e.jsx(D,{variant:"default",size:"sm",onClick:F,disabled:w,className:"gap-1.5",children:w?e.jsxs(e.Fragment,{children:[e.jsx(R,{name:"loader-4",className:"size-4 animate-spin"}),"Processing..."]}):`${y}`})]})]})})},Ga=({mergeInProgress:l,rebaseInProgress:r,onContinue:t,onAbort:j,onResolveWithAI:b,conflictCount:p=0,isLoading:x=!1})=>{const[w,S]=n.useState(null),y=l&&l.head,F=r&&(r.headName||r.onto),m=y?"merge":F?"rebase":null;if(!m)return null;const v=async()=>{S("continue");try{await t()}finally{S(null)}},h=async()=>{S("abort");try{await j()}finally{S(null)}},d=w!==null,N=p>0,C=m==="merge"?"Merge":"Rebase";let k="";l?k=l.message?`Merging: ${l.message}`:`Merging ${l.head}`:r&&(k=r.headName?`Rebasing ${r.headName} onto ${r.onto||""}`:"Rebase in progress");const q=N?p===1?`${C} in progress: ${p} conflict`:`${C} in progress: ${p} conflicts`:`${C} in progress`,G=N?"Resolve conflicts, then continue the operation.":"All conflicts resolved. Continue to finish the operation.";return e.jsx("div",{className:"mx-4 mt-3 overflow-hidden rounded-lg border border-[var(--status-warning-border)]",children:e.jsxs("div",{className:"flex flex-col gap-3 p-3",children:[e.jsxs("div",{className:"min-w-0",children:[e.jsx("p",{className:"typography-label text-[var(--status-warning)]",children:q}),k&&e.jsx("p",{className:"typography-micro break-words text-muted-foreground",children:k})]}),e.jsxs("div",{className:"flex flex-wrap items-center justify-between gap-2",children:[e.jsx("p",{className:"typography-micro min-w-0 flex-1 text-muted-foreground",children:G}),e.jsxs("div",{className:"flex shrink-0 items-center gap-1.5",children:[e.jsxs(D,{variant:"ghost",size:"sm",onClick:h,disabled:d||x,className:"gap-1.5",children:[w==="abort"?e.jsx(R,{name:"loader-4",className:"size-4 animate-spin"}):e.jsx(R,{name:"close",className:"size-4"}),"Abort"]}),N?b&&e.jsx(D,{variant:"default",size:"sm",onClick:b,disabled:d||x,children:"Resolve with AI"}):e.jsxs(D,{variant:"default",size:"sm",onClick:v,disabled:d||x,className:"gap-1.5",children:[w==="continue"?e.jsx(R,{name:"loader-4",className:"size-4 animate-spin"}):e.jsx(R,{name:"check",className:"size-4"}),"Continue"]})]})]})]})})},Ta=({currentBranch:l,localBranches:r,remoteBranches:t,onMerge:j,onRebase:b,disabled:p=!1,isOperating:x=!1,operationLogs:w=[],onOperationComplete:S,mode:y="dialog",defaultTargetBranch:F})=>{const[m,v]=n.useState(!1),[h,d]=n.useState("merge"),[N,C]=n.useState(null),[k,q]=n.useState(!1),[G,z]=n.useState(""),W=n.useRef(null),M=n.useRef(null),L=p||x,A=l||"current branch",u=w.length>0&&w.every(P=>P.status==="done"||P.status==="error"),I=w.some(P=>P.status==="error");n.useEffect(()=>{M.current&&(M.current.scrollTop=M.current.scrollHeight)},[w]);const H=n.useMemo(()=>{const P=G.toLowerCase(),K=new Set(t.map($=>$.slice($.indexOf("/")+1)).filter(Boolean)),c=r.filter($=>$!==l&&!K.has($));return P?c.filter($=>$.toLowerCase().includes(P)):c},[G,r,l,t]),J=n.useMemo(()=>{const P=G.toLowerCase();return P?t.filter(K=>K.toLowerCase().includes(P)):t},[G,t]),V=n.useCallback(()=>F&&(t.includes(F)||r.includes(F))?F:null,[F,r,t]),te=()=>{v(!0),C(V()),d("merge"),z("")},T=P=>{C(P),q(!1),z("")},Q=()=>{N&&(h==="merge"?j(N):b(N))},ue=()=>{x||(C(null),d("merge"),z(""),v(!1))},ne=()=>{x&&!u||(u&&S?.(),C(null),d("merge"),z(""),v(!1))};n.useEffect(()=>{k||z("")},[k]),n.useEffect(()=>{y==="dialog"||N||C(V())},[y,V,N]);const me=x?e.jsxs("div",{className:"space-y-3",children:[e.jsx("div",{ref:M,className:"rounded-lg border border-border bg-muted/30 p-3 max-h-48 overflow-y-auto",children:e.jsx("div",{className:"space-y-2",children:w.map((P,K)=>e.jsxs("div",{className:"flex items-start gap-2",children:[e.jsxs("div",{className:"mt-0.5 shrink-0",children:[P.status==="running"&&e.jsx(R,{name:"loader-4",className:"size-3.5 animate-spin text-primary"}),P.status==="done"&&e.jsx(R,{name:"check",className:"size-3.5 text-success"}),P.status==="error"&&e.jsx(R,{name:"close",className:"size-3.5 text-destructive"}),P.status==="pending"&&e.jsx("div",{className:"size-3.5 rounded-full border border-muted-foreground/30"})]}),e.jsx("span",{className:ee("typography-micro",P.status==="error"&&"text-destructive",P.status==="done"&&"text-muted-foreground",P.status==="running"&&"text-foreground",P.status==="pending"&&"text-muted-foreground/60"),children:P.message})]},K))})}),u?y==="dialog"?e.jsx(Rt,{children:e.jsx(D,{variant:"default",size:"sm",onClick:ne,children:I?"Close":"Done"})}):e.jsx("div",{className:"flex justify-end",children:e.jsx(D,{variant:"default",size:"sm",onClick:ne,children:I?"Close":"Done"})}):null]}):e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"space-y-3",children:[e.jsx("p",{className:"typography-meta text-muted-foreground",children:"Operation"}),e.jsxs("div",{className:"grid grid-cols-2 gap-3",children:[e.jsxs("button",{type:"button",onClick:()=>d("merge"),className:ee("flex flex-col items-start gap-1 rounded-lg border p-3 text-left transition-colors",h==="merge"?"border-primary bg-primary/5":"border-border hover:border-border/80 hover:bg-muted/50"),children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(R,{name:"git-merge",className:ee("size-4",h==="merge"?"text-primary":"text-muted-foreground")}),e.jsx("span",{className:ee("typography-ui-label",h==="merge"?"text-foreground":"text-muted-foreground"),children:"Merge"})]}),e.jsx("p",{className:"typography-micro text-muted-foreground",children:"Create a merge commit and preserve branch history."})]}),e.jsxs("button",{type:"button",onClick:()=>d("rebase"),className:ee("flex flex-col items-start gap-1 rounded-lg border p-3 text-left transition-colors",h==="rebase"?"border-primary bg-primary/5":"border-border hover:border-border/80 hover:bg-muted/50"),children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(R,{name:"git-branch",className:ee("size-4",h==="rebase"?"text-primary":"text-muted-foreground")}),e.jsx("span",{className:ee("typography-ui-label",h==="rebase"?"text-foreground":"text-muted-foreground"),children:"Rebase"})]}),e.jsx("p",{className:"typography-micro text-muted-foreground",children:"Replay your commits on top of the selected branch."})]})]})]}),e.jsxs("div",{className:"flex flex-col gap-3",children:[e.jsx("p",{className:"typography-meta text-muted-foreground",children:h==="merge"?`Branch to merge into ${A}`:"Branch to rebase onto"}),e.jsxs(ys,{open:k,onOpenChange:q,modal:!1,children:[e.jsx(js,{asChild:!0,children:e.jsxs("button",{type:"button",className:ee(Zr({size:"default"}),"w-full"),children:[e.jsx("span",{className:ee("truncate",!N&&"text-muted-foreground"),children:N||"Select Branch"}),e.jsx(R,{name:"arrow-down-s",className:"size-4 opacity-60 shrink-0"})]})}),e.jsx(ws,{align:"start",sideOffset:6,className:"w-[var(--anchor-width)] p-0 max-h-[min(var(--available-height),24rem)] flex flex-col overflow-hidden",children:e.jsxs(vs,{className:"h-full min-h-0",children:[e.jsx(Cs,{ref:W,placeholder:"Search branches...",value:G,onValueChange:z,onKeyDown:P=>P.stopPropagation()}),e.jsxs(Ns,{className:"h-full min-h-0",disableHorizontal:!0,children:[e.jsx(Ss,{children:"No branches found."}),H.length>0&&e.jsx(It,{heading:"Local branches",children:H.map(P=>e.jsx(Et,{onSelect:()=>T(P),children:e.jsx("span",{className:"typography-ui-label text-foreground truncate",children:P})},`local-${P}`))}),H.length>0&&J.length>0?e.jsx(ea,{}):null,J.length>0&&e.jsx(It,{heading:"Remote branches",children:J.map(P=>e.jsx(Et,{onSelect:()=>T(P),children:e.jsx("span",{className:"typography-ui-label text-foreground truncate",children:P})},`remote-${P}`))})]})]})})]})]}),N?e.jsx("div",{className:"rounded-lg bg-muted/50 p-3",children:e.jsx("p",{className:"typography-meta text-muted-foreground",children:h==="merge"?e.jsxs(e.Fragment,{children:["This will merge"," ",e.jsx("span",{className:"font-mono text-foreground",children:N})," ","into"," ",e.jsx("span",{className:"font-mono text-foreground",children:A})]}):e.jsxs(e.Fragment,{children:["This will rebase"," ",e.jsx("span",{className:"font-mono text-foreground",children:A})," ","onto"," ",e.jsx("span",{className:"font-mono text-foreground",children:N})]})})}):null,y==="dialog"?e.jsxs(Rt,{className:"gap-2 pt-1",children:[e.jsx(D,{variant:"ghost",size:"sm",onClick:ue,children:"Cancel"}),e.jsx(D,{variant:"default",size:"sm",onClick:Q,disabled:!N,className:"gap-1.5",children:h==="merge"?e.jsxs(e.Fragment,{children:[e.jsx(R,{name:"git-merge",className:"size-4"}),"Merge"]}):e.jsxs(e.Fragment,{children:[e.jsx(R,{name:"git-branch",className:"size-4"}),"Rebase"]})})]}):e.jsxs("div",{className:"flex items-center gap-2 pt-1",children:[e.jsx(D,{variant:"destructive",size:"sm",onClick:ue,disabled:L,children:"Reset"}),e.jsx("div",{className:"flex-1"}),e.jsx(D,{variant:"default",size:"sm",onClick:Q,disabled:L||!N,children:h==="merge"?"Merge":"Rebase"})]})]});return y==="bare"?me:y==="inline"?e.jsxs("section",{className:"border-0 bg-transparent rounded-none",children:[e.jsx("header",{className:"border-b border-border/40 px-0 py-3",children:e.jsxs("div",{className:"space-y-1",children:[e.jsx("div",{className:"typography-ui-header font-semibold text-foreground",children:"Update branch"}),e.jsxs("div",{className:"typography-micro text-muted-foreground",children:["Bring the latest changes into"," ",e.jsx("span",{className:"font-mono text-foreground",children:A}),"."]})]})}),e.jsx("div",{className:"pt-3",children:me})]}):e.jsxs(e.Fragment,{children:[e.jsxs(st,{children:[e.jsx(rt,{asChild:!0,children:e.jsxs(D,{variant:"outline",size:"sm",className:"gap-1.5",onClick:te,disabled:L,children:[x?e.jsx(R,{name:"loader-4",className:"size-4 animate-spin"}):e.jsx(R,{name:"git-merge",className:"size-4"}),e.jsx("span",{children:"Merge/Rebase"})]})}),e.jsx(at,{sideOffset:8,children:"Update this branch from another branch."})]}),e.jsx(ke,{open:m,onOpenChange:P=>{P?v(!0):ne()},children:e.jsxs(Re,{className:"max-w-md",children:[e.jsxs(Ie,{children:[e.jsx(Ee,{children:"Update branch"}),e.jsx($e,{children:x?u?I?"Operation Failed":"Operation Completed":h==="merge"?"Merging In Progress":"Rebasing In Progress":e.jsxs(e.Fragment,{children:["Choose how to bring another branch into"," ",e.jsx("span",{className:"font-mono text-foreground",children:A}),"."]})})]}),me]})})]})},Oa=l=>{const{remoteNames:r,localBranches:t,worktreeCreatedFromBranch:j,rootBranchHint:b,defaultBranch:p,headBranch:x}=l,w=typeof x=="string"?x.trim():"",S=h=>{if(!h)return"";let d=h.trim();if(!d||d==="HEAD")return"";if(t.includes(d))return d;d.startsWith("refs/heads/")&&(d=d.slice(11)),d.startsWith("heads/")&&(d=d.slice(6)),d.startsWith("remotes/")&&(d=d.slice(8));const N=d.indexOf("/");if(N>0){const C=d.slice(0,N);if(r.has(C)){const k=d.slice(N+1).trim();k&&(d=k)}}return d},y=h=>{const d=S(typeof h=="string"?h:"");return d&&d!==w?d:""},F=y(j);if(F)return F;const m=y(b);if(m)return m;const v=y(p);return v||(t.includes("main")?"main":t.includes("master")?"master":t.includes("develop")?"develop":"main")},_a=l=>{const{baseBranch:r,localBranches:t,remoteBranches:j}=l;return t.includes(r)?!0:j.some(b=>{const p=b.indexOf("/");return p>0&&b.slice(p+1)===r})},Ha=({runMutation:l,onMutationComplete:r,onMutationError:t,onPathsComplete:j,scheduleFlush:b})=>{const p=[];let x=!1;return{enqueue:S=>{const y=p[p.length-1];if(y?.directory===S.directory&&y.direction===S.direction){S.paths.forEach(F=>y.paths.add(F));return}p.push(S)},flush:()=>{if(x)return;const S=p.shift();if(!S)return;x=!0;const y={directory:S.directory,direction:S.direction,paths:Array.from(S.paths),rollback:S.rollback};(async()=>{try{await l(y),r(y)}catch(F){t(y,F)}finally{j(y.paths),x=!1,p.length>0&&b()}})()},clear:()=>{p.length=0},size:()=>p.length,isRunning:()=>x}},ps=ga(()=>Rr(()=>import("./DiffView-BHS4m_K7.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117])).then(l=>({default:l.DiffView}))),Ua=15e3,Wa=40,Va=20,xs={feat:":sparkles:",feature:":sparkles:",fix:":bug:",bug:":bug:",hotfix:":ambulance:",docs:":memo:",documentation:":memo:",style:":lipstick:",refactor:":recycle:",perf:":zap:",performance:":zap:",test:":white_check_mark:",tests:":white_check_mark:",build:":construction_worker:",ci:":green_heart:",chore:":wrench:",revert:":rewind:",wip:":construction:",security:":lock:",release:":bookmark:",merge:":twisted_rightwards_arrows:",mv:":truck:",move:":truck:",rename:":truck:",remove:":fire:",delete:":fire:",add:":sparkles:",create:":sparkles:",implement:":sparkles:",update:":recycle:",improve:":zap:",optimize:":zap:",upgrade:":arrow_up:",downgrade:":arrow_down:",deploy:":rocket:",init:":tada:",initial:":tada:"},qa=(l,r)=>{const t=l.toLowerCase(),j=/^([a-z]+)(?:\(.*\))?!?:/,b=t.match(j);if(b){const w=b[1],S=xs[w];if(S)return r.find(y=>y.code===S)||null}const p=t.split(" ")[0],x=xs[p];return x&&r.find(w=>w.code===x)||null},Ya=20,Le=new Map,Ja=(l,r)=>{if(Le.delete(l),Le.set(l,r),Le.size>Ya){const t=Le.keys().next().value;t!==void 0&&Le.delete(t)}},tt=l=>(l||"").replace(/\\/g,"/").replace(/\/+$/,""),bs=l=>{const r=l.index?.trim();return!!(r&&r!=="?")},oi=({isActive:l})=>{const{git:r}=ta(),t=sa(),j=kt(s=>s.currentSessionId),{profiles:b,globalIdentity:p,defaultGitIdentityId:x,loadProfiles:w,loadGlobalIdentity:S,loadDefaultGitIdentityId:y}=pa(ns(s=>({profiles:s.profiles,globalIdentity:s.globalIdentity,defaultGitIdentityId:s.defaultGitIdentityId,loadProfiles:s.loadProfiles,loadGlobalIdentity:s.loadGlobalIdentity,loadDefaultGitIdentityId:s.loadDefaultGitIdentityId}))),F=ra(t??null),m=aa(t??null),v=na(t??null),h=oa(t??null),d=ia(t??null),N=la(t??null),C=ca(t??null),{setActiveDirectory:k,fetchAll:q,ensureAll:G,fetchStatus:z,fetchBranches:W,fetchLog:M,setLogMaxCount:L,fetchIdentity:A,prefetchDiffs:u,clearDiffCache:I,moveStatusPathsOptimistically:H,restoreStatus:J,bumpIndexRevision:V}=da(ns(s=>({setActiveDirectory:s.setActiveDirectory,fetchAll:s.fetchAll,ensureAll:s.ensureAll,fetchStatus:s.fetchStatus,fetchBranches:s.fetchBranches,fetchLog:s.fetchLog,setLogMaxCount:s.setLogMaxCount,fetchIdentity:s.fetchIdentity,prefetchDiffs:s.prefetchDiffs,clearDiffCache:s.clearDiffCache,moveStatusPathsOptimistically:s.moveStatusPathsOptimistically,restoreStatus:s.restoreStatus,bumpIndexRevision:s.bumpIndexRevision})));n.useRef(null);const te=n.useRef(null),T=n.useRef(null),Q=n.useRef(null),ue=n.useRef(!0);n.useEffect(()=>()=>{ue.current=!1},[]);const ne=n.useCallback(()=>{te.current!==null&&(window.clearTimeout(te.current),te.current=null)},[]),Fe=n.useCallback(s=>{ne(),te.current=window.setTimeout(()=>{te.current=null,tt(s)===tt(t)&&z(s,r,{silent:!0})},Ua)},[ne,t,z,r]);n.useEffect(()=>ne,[ne]);const Be=n.useCallback(()=>{T.current!==null&&(window.clearTimeout(T.current),T.current=null)},[]),me=n.useCallback(()=>{T.current===null&&(T.current=window.setTimeout(()=>{T.current=null,Q.current?.()},0))},[]),P=n.useCallback(async(s,o,a)=>{if(o==="stage"){if(r.stageGitFiles){await r.stageGitFiles(s,a);return}await Promise.all(a.map(i=>r.stageGitFile(s,i)));return}if(r.unstageGitFiles){await r.unstageGitFiles(s,a);return}await Promise.all(a.map(i=>r.unstageGitFile(s,i)))},[r]),K=n.useMemo(()=>Ha({runMutation:({directory:s,direction:o,paths:a})=>P(s,o,a),onMutationComplete:({directory:s})=>{V(s),Fe(s)},onMutationError:({directory:s,direction:o,rollback:a},i)=>{a?.(),V(s),Fe(s);const f=o==="stage"?"Failed to stage changes":"Failed to unstage changes";g.error(i instanceof Error?i.message:f)},onPathsComplete:s=>{Dt(o=>{const a=new Set(o);return s.forEach(i=>a.delete(i)),a})},scheduleFlush:me}),[V,P,me,Fe]);n.useEffect(()=>(Q.current=K.flush,()=>{Q.current=null}),[K]),n.useEffect(()=>()=>K.clear(),[K]),n.useEffect(()=>Be,[Be]);const c=n.useMemo(()=>t?Le.get(t)??null:null,[t]),$=ua(s=>s.settingsGitmojiEnabled),{gitmojis:_}=Ra($),[he,we]=n.useState(c?.commitMessage??""),[fe,X]=n.useState(!1),Ft=n.useRef(null),[Mt,Ge]=n.useState(null),[Fs,nt]=n.useState(!1),[Pt,Lt]=n.useState(null),[ge,Ms]=n.useState(25),[Ps,$t]=n.useState(!1),{triggerFireworks:Ls}=xa(),Bt=n.useRef(new Map),Te=n.useRef(0),ot=n.useCallback(()=>{Te.current+=1,ue.current&&$t(!0)},[]),it=n.useCallback(()=>{Te.current=Math.max(0,Te.current-1),ue.current&&Te.current===0&&$t(!1)},[]),[At,Oe]=n.useState(new Set),[$s,Dt]=n.useState(new Set),[zt,Gt]=n.useState(!1),[Ka,Bs]=n.useState(0),[As,Tt]=n.useState(!1),[lt,Ot]=n.useState(c?.generatedHighlights??[]),_e=n.useCallback(()=>Ot([]),[]),[Ds,_t]=n.useState(!1),zs=$s.size>0||K.size()>0||K.isRunning(),Ht=n.useCallback(()=>{const s=Ft.current;s&&requestAnimationFrame(()=>{requestAnimationFrame(()=>{s.scrollTo({top:s.scrollHeight,behavior:"smooth"})})})},[]),[ct,Gs]=n.useState(new Set),[He,Ts]=n.useState(new Map),[Ue,dt]=n.useState(new Set),ut=n.useRef(He),Ae=n.useRef(Ue),[mt,ht]=n.useState([]),[Se,ft]=n.useState(null),[Os,Ut]=n.useState(null),[Wt,gt]=n.useState(null),[_s,We]=n.useState([]),[Hs,ie]=n.useState(!1),[Us,pe]=n.useState([]),[Ve,xe]=n.useState("merge"),[Ws,pt]=n.useState(null),[xt,Vt]=n.useState(!1),[bt,Vs]=n.useState(100),[qs,Ys]=n.useState(0),[Z,qe]=n.useState(null),[Js,Me]=n.useState(null),[qt,Yt]=n.useState(""),le=n.useMemo(()=>j?`pichamber.conflict:${j}`:null,[j]),be=n.useCallback((s,o,a)=>{if(!le||typeof window>"u")return;const i={directory:s,conflictFiles:o,operation:a};window.localStorage.setItem(le,JSON.stringify(i))},[le]),oe=n.useCallback(()=>{!le||typeof window>"u"||window.localStorage.removeItem(le)},[le]);n.useEffect(()=>{if(!le||typeof window>"u"||!t)return;const s=window.localStorage.getItem(le);if(s)try{const o=JSON.parse(s);if(o.directory!==t){window.localStorage.removeItem(le);return}pe(o.conflictFiles??[]),xe(o.operation??"merge"),ie(!0)}catch{window.localStorage.removeItem(le)}},[le,t]);const[Ks,yt]=n.useState(!1),[jt,Jt]=n.useState("merge"),[wt,Kt]=n.useState(""),Qs=n.useCallback(s=>{ma(s).then(o=>{if(o.ok){g.success("Commit hash copied");return}g.error("Failed to copy")})},[]),Xs=n.useCallback(s=>{Gs(o=>{const a=new Set(o);return a.has(s)?a.delete(s):a.add(s),a})},[]);n.useEffect(()=>{ut.current=He},[He]),n.useEffect(()=>{Ae.current=Ue},[Ue]),n.useEffect(()=>{if(!t||!r)return;const s=Array.from(ct).filter(a=>!ut.current.has(a)&&!Ae.current.has(a));if(s.length===0)return;let o=!1;return dt(a=>{const i=new Set(a);for(const f of s)i.add(f);return Ae.current=i,i}),Promise.all(s.map(a=>r.getCommitFiles(t,a).then(i=>({hash:a,files:i.files})).catch(i=>(console.error("Failed to fetch commit files:",i),{hash:a,files:[]})))).then(a=>{o||(Ts(i=>{const f=new Map(i);for(const{hash:E,files:U}of a)f.set(E,U);return ut.current=f,f}),dt(i=>{const f=new Set(i);for(const{hash:E}of a)f.delete(E);return Ae.current=f,f}))}),()=>{o=!0,dt(a=>{let i=!1;const f=new Set(a);for(const E of s)f.delete(E)&&(i=!0);return i?(Ae.current=f,f):a})}},[ct,t,r]),n.useEffect(()=>{t&&Ja(t,{directory:t,commitMessage:he,generatedHighlights:lt})},[he,t,lt]),n.useEffect(()=>{l&&(w(),S(),y())},[l,w,S,y]),n.useEffect(()=>{if(!l)return;if(!t||!r?.getRemoteUrl){ft(null);return}let s=!1;return r.getRemoteUrl(t).then(o=>{s||ft(o)}).catch(()=>{s||ft(null)}),()=>{s=!0}},[l,t,r]);const Ye=n.useCallback(async()=>{if(!t||!r?.getRemotes){ht([]);return}try{const s=await r.getRemotes(t);ue.current&&ht(s)}catch{ue.current&&ht([])}},[t,r]);n.useEffect(()=>{l&&Ye()},[l,Ye]),n.useEffect(()=>{l&&t&&(k(t),G(t,r))},[l,t,k,G,r]),n.useEffect(()=>{if(l&&t)return ha.onGitRefreshHint(s=>{tt(s.directory)===tt(t)&&(s.paths?.length&&I(t,s.paths),z(t,r,{silent:!0}))})},[l,I,t,z,r]);const O=n.useCallback(async(s=!0)=>{if(t)try{await Promise.all([z(t,r),W(t,r)])}catch(o){if(s){const a=o instanceof Error?o.message:"Failed to refresh repository";g.error(a)}}},[t,r,z,W]),Y=n.useCallback(async()=>{t&&await M(t,r,ge)},[t,r,M,ge]),vt=n.useCallback(async()=>{t&&await A(t,r)},[t,r,A]);n.useEffect(()=>{if(!l||!t||!r?.hasLocalIdentity||F!==!0)return;const s=typeof x=="string"?x.trim():"";if(!s||s==="global"||Bt.current.get(t)===s)return;let a=!1;return(async()=>{try{const f=await r.hasLocalIdentity?.(t);if(a||f===!0)return;ot(),await r.setGitIdentity(t,s),Bt.current.set(t,s),await vt()}catch(f){console.warn("Failed to auto-apply default git identity:",f)}finally{a||it()}})(),()=>{a=!0}},[l,ot,t,x,it,r,F,vt]);const ve=n.useMemo(()=>m?[...m.files??[]].sort((o,a)=>o.path.localeCompare(a.path)):[],[m]),ye=n.useMemo(()=>ve.filter(bs),[ve]);n.useEffect(()=>{if(!t||ve.length===0)return;const s=[],o=new Set,a=f=>{!f||o.has(f)||(o.add(f),s.push(f))};if(ye.forEach(f=>a(f.path)),ve.slice(0,Va).forEach(f=>a(f.path)),s.length===0)return;const i=window.setTimeout(()=>{u(t,r,s,{maxFiles:Wa})},120);return()=>{window.clearTimeout(i)}},[ve,t,r,u,ye]);const Qt=s=>s?.pushed[0]?.remote||m?.tracking?.split("/")[0]||ae.find(o=>o.name==="origin")?.name||ae[0]?.name||"origin",Xt=async(s,o)=>{if(t){Ge(s);try{const a=i=>{const f=`${i.name}/`,E=m?.tracking?.startsWith(f)?m.tracking.slice(f.length):void 0;return{remote:i.name,branch:E,rebase:!0}};if(s==="fetch"){if(!o)throw new Error("No remote available for fetch");await r.gitFetch(t,{remote:o.name}),g.success(`Fetched from ${o.name}`)}else if(s==="pull"){if(!o)throw new Error("No remote available for pull");const i=await r.gitPull(t,a(o));g.success(i.files.length===1?`Pulled ${i.files.length} file from ${o.name}`:`Pulled ${i.files.length} files from ${o.name}`)}else if(s==="push"){const i=await r.gitPush(t);g.success(`Pushed to ${Qt(i)}`)}else if(s==="sync"){if(!o)throw new Error("No remote available for sync");let i=0,f=!1;await r.gitFetch(t,{remote:o.name});const E=await r.getGitStatus(t);if((E.behind??0)>0){if((E.files?.length??0)>0){g.error("Commit or stash your changes before syncing");return}i=(await r.gitPull(t,a(o))).files.length}((await r.getGitStatus(t)).ahead??0)>0&&(await r.gitPush(t),f=!0),i>0&&f?g.success(i===1?`Pulled ${i} file from ${o.name} and pushed to upstream`:`Pulled ${i} files from ${o.name} and pushed to upstream`):i>0?g.success(i===1?`Pulled ${i} file from ${o.name}`:`Pulled ${i} files from ${o.name}`):f?g.success(`Pushed to ${o.name}`):g.success("Already up to date")}await O(!1),await Y()}catch(a){const i=a instanceof Error?a.message:`${s==="sync"?"Sync Changes":s==="pull"?"Pull":s} failed`;g.error(i)}finally{Ge(null)}}},Zs=n.useCallback(async s=>{if(!t)return;const o=s.name.trim();if(!o){g.error("Remote name is required");return}if(o==="origin"){g.error("Cannot remove the origin remote");return}Ut(o);try{await r.removeRemote(t,{remote:o}),g.success(`Removed remote ${o}`),await Promise.all([O(!1),Ye()])}catch(a){const i=a instanceof Error?a.message:`Failed to remove ${o}`;g.error(i)}finally{Ut(null)}},[t,r,Ye,O]),Zt=async(s={})=>{if(!t)return;if(!he.trim()){g.error("Enter a commit message");return}const o=ye.map(i=>i.path).sort();if(o.length===0){g.error("Stage at least one file to commit");return}const a=s.pushAfter?"commitAndPush":"commit";Lt(a);try{if(await r.createGitCommit(t,he.trim(),{files:o,stageFiles:[]}),V(t),g.success("Commit created"),we(""),_e(),await O(),s.pushAfter){const i=m?.tracking?.split("/")[0],f=ae.find(kr=>kr.name===i)??ae[0];if(!f)throw new Error("No remote available");Ge("sync");const E=`${f.name}/`,U=m?.tracking?.startsWith(E)?m.tracking.slice(E.length):void 0;await r.gitFetch(t,{remote:f.name});const B=await r.getGitStatus(t);if((B.behind??0)>0){if((B.files?.length??0)>0){g.error("Commit or stash your changes before syncing"),await O(!1);return}await r.gitPull(t,{remote:f.name,branch:U,rebase:!0})}const re=await r.getGitStatus(t);let Pe;(re.ahead??0)>0&&(Pe=await r.gitPush(t)),g.success(`Pushed to ${Qt(Pe)}`),Ls(),await O(!1)}else await O(!1);await Y(),Bs(i=>i+1)}catch(i){const f=i instanceof Error?i.message:"Failed to create commit";g.error(f)}finally{Lt(null),s.pushAfter&&Ge(null)}},er=n.useCallback(async()=>{if(!t)return;const s=ye.map(o=>o.path).sort();if(s.length===0){g.error("Stage at least one file to describe");return}console.error("[git-generation][browser] generate button clicked",{directory:t,selectedFiles:s.length}),Tt(!0);try{const{message:o}=await fa(t,s),a=o.subject?.trim()??"",i=Array.isArray(o.highlights)?o.highlights:[];if(a){let f=a;if($&&_.length>0){const E=qa(a,_);if(E){const{code:U,emoji:B}=E;!a.startsWith(U)&&!a.startsWith(B)&&(f=`${U} ${a}`)}}we(f)}Ot(i),Ht()}catch(o){console.error("[git-generation][browser] GitView generate handler failed",{message:o instanceof Error?o.message:String(o),error:o});const a=o instanceof Error?o.message:"Failed to generate commit message";g.error(a)}finally{Tt(!1)}},[t,ye,$,_,Ht]),tr=async(s,o)=>{if(!t||!m)return;const a=m.current??null,i=o?.name??"origin";try{await r.createBranch(t,s,a??"HEAD"),g.success(`Created branch ${s}`),await r.checkoutBranch(t,s);let f=!1;try{await r.gitPush(t,{remote:i,branch:s,options:["--set-upstream"]}),f=!0}catch(E){const U=E instanceof Error?E.message:`Unable to push new branch to ${i}.`;g.warning("Branch created locally, but failed to set upstream.",{description:e.jsxs("span",{className:"text-foreground/80 dark:text-foreground/70",children:["Upstream setup failed: ",U]})})}await O(),await Y(),f&&g.success(`Set upstream for ${s} to ${i}`)}catch(f){const E=f instanceof Error?f.message:"Failed to create branch";throw g.error(E),f}},sr=async(s,o)=>{if(t)try{await r.renameBranch(t,s,o),g.success(`Renamed ${s} to ${o}`),await O(),await Y()}catch(a){const i=a instanceof Error?a.message:`Failed to rename ${s} to ${o}`;g.error(i)}},rr=async s=>{if(!t)return;const o=s.replace(/^remotes\//,"");if(m?.current!==o)try{await r.checkoutBranch(t,o),g.success(`Checked out ${o}`),await O(),await Y()}catch(a){const i=a instanceof Error?a.message:`Failed to checkout ${o}`;g.error(i)}},ar=async s=>{if(t){ot();try{await r.setGitIdentity(t,s.id),g.success(`Applied identity: ${s.name}`),await vt()}catch(o){const a=o instanceof Error?o.message:"Failed to apply identity";g.error(a)}finally{it()}}},De=n.useMemo(()=>v?.all?v.all.filter(s=>!s.startsWith("remotes/")).sort():[],[v]),je=n.useMemo(()=>v?.all?v.all.filter(s=>s.startsWith("remotes/")).map(s=>s.replace(/^remotes\//,"")).sort():[],[v]),ae=n.useMemo(()=>{if(mt.length>0)return mt;const s=new Set,o=m?.tracking?.trim();o&&o.includes("/")&&s.add(o.split("/")[0]);for(const a of je){const i=a.indexOf("/");i>0&&s.add(a.slice(0,i))}return s.size===0&&Se&&s.add("origin"),Array.from(s).map(a=>({name:a,fetchUrl:Se??"",pushUrl:Se??""}))},[mt,je,Se,m?.tracking]),ce=m?.current??null,es=n.useMemo(()=>{const s=m?.tracking?.trim().split("/")[0];return(s&&v?.defaultBranches?.[s])??v?.defaultBranches?.origin},[v,m?.tracking]),de=n.useMemo(()=>Oa({remoteNames:new Set(ae.map(s=>s.name)),localBranches:De,defaultBranch:es,headBranch:ce}),[ce,es,ae,De]),Ct=!!(ce&&de&&ce!==de&&(m?.tracking||ae.length>0)&&typeof r.getGitRangeDiff=="function"&&_a({baseBranch:de,localBranches:De,remoteBranches:je})),nr=n.useMemo(()=>ae.map(a=>a.name).map(a=>`${a}/${de}`).find(a=>je.includes(a))??de,[de,ae,je]),or=n.useMemo(()=>{const s=new Map;p&&s.set(p.id,p);let o=null;if(Se)try{let a=Se.trim();a.startsWith("git@")&&(a=`https://${a.slice(4).replace(":","/")}`),a.endsWith(".git")&&(a=a.slice(0,-4));const i=new URL(a);o=i.hostname+i.pathname}catch{}for(const a of b){if(a.authType!=="token"){s.set(a.id,a);continue}const i=a.host;if(!i){s.set(a.id,a);continue}if(!i.includes("/")){s.set(a.id,a);continue}o&&o===i&&s.set(a.id,a)}return Array.from(s.values())},[b,p,Se]),ir=n.useMemo(()=>{if(d?.userName&&d?.userEmail){const s=b.find(o=>o.userName===d.userName&&o.userEmail===d.userEmail);return s||(p&&p.userName===d.userName&&p.userEmail===d.userEmail?p:{id:"local-config",name:d.userName,userName:d.userName,userEmail:d.userEmail,sshKey:d.sshCommand?.replace("ssh -i ","")??null,color:"info",icon:"user"})}return p??null},[d,b,p]),lr=ye.length,cr=N||Mt!==null||Pt!==null,ts=!!ce;n.useEffect(()=>{if(!t||!r||!h?.all?.length||!ce||!de||ce===de){Me(null);return}let s=!1;return(async()=>{try{const a=await r.getGitLog(t,{from:de,to:"HEAD",maxCount:ge});if(s)return;const i=new Set((a?.all??[]).map(E=>E.hash).filter(E=>typeof E=="string"&&E.length>0));if(i.size===0){Me(null);return}const f=h.all.findIndex(E=>!i.has(E.hash));if(f===0){Me(null);return}if(f===-1){Me({insertBeforeIndex:h.all.length,branchName:ce,direction:"up"});return}Me({insertBeforeIndex:f,branchName:ce,direction:"up"})}catch{s||Me(null)}})(),()=>{s=!0}},[de,ce,t,r,h,ge]),n.useEffect(()=>{pt(null)},[t]),n.useEffect(()=>{if(Z!=="graph"||!t){Z!=="graph"&&pt(null);return}let s=!1;return Vt(!0),r.getGitLog(t,{maxCount:bt,all:!0}).then(o=>{s||pt(o)}).catch(o=>{console.error("Failed to fetch graph log:",o)}).finally(()=>{s||Vt(!1)}),()=>{s=!0}},[Z,t,bt,qs,r]),n.useCallback((s,o)=>{if(!t||s.length===0)return;const a=Array.from(new Set(s));Dt(f=>{const E=new Set(f);return a.forEach(U=>E.add(U)),E});const i=H(t,a,o);K.enqueue({directory:t,direction:o,paths:new Set(a),rollback:()=>J(t,i)}),me()},[t,K,H,J,me]),n.useCallback(async s=>{if(t){Oe(o=>{const a=new Set(o);return a.add(s),a});try{await r.revertGitFile(t,s,{scope:"working"}),g.success(`Reverted ${s}`),await O(!1)}catch(o){const a=o instanceof Error?o.message:"Failed to revert changes";g.error(a)}finally{Oe(o=>{const a=new Set(o);return a.delete(s),a})}}},[t,O,r]);const Je=n.useCallback(async(s,o,a="all")=>{if(!t||s.length===0)return;const i=Array.from(new Set(s));if(zt||i.some(B=>At.has(B)))return;const f=new Set(ye.map(B=>B.path)),E=a==="all"&&i.some(B=>f.has(B));o&&Gt(!0),Oe(B=>{const re=new Set(B);return i.forEach(Pe=>re.add(Pe)),re});const U=[];try{if(await Promise.all(i.map(async B=>{try{await r.revertGitFile(t,B,{scope:a})}catch(re){U.push({path:B,message:re instanceof Error?re.message:"Failed to revert changes"})}})),E&&U.length<i.length&&V(t),await O(!1),U.length===0)g.success(i.length===1?`Reverted ${i.length} file`:`Reverted ${i.length} files`);else if(U.length===i.length)g.error(U[0]?.message||"Failed to revert changes");else{const B=i.length-U.length;g.warning(B===1?`Reverted ${B} file, ${U.length} failed`:`Reverted ${B} files, ${U.length} failed`)}}finally{Oe(B=>{const re=new Set(B);return i.forEach(Pe=>re.delete(Pe)),re}),o&&Gt(!1)}},[V,t,r,zt,O,At,ye]);n.useCallback(async s=>{await Je(s,!0)},[Je]),n.useCallback(async s=>{await Je(s,!1,"working")},[Je]);const dr=n.useCallback(()=>nt(!0),[]),ur=n.useCallback(s=>{if(s.length===0)return;const o=s.map(a=>a.trim()).filter(Boolean);if(o.length===0){_e();return}we(a=>{const i=a.trim(),f=i.length>0?`
|
|
4
|
+
|
|
5
|
+
`:"";return`${i}${f}${o.join(`
|
|
6
|
+
`)}`.trim()}),_e()},[_e]),mr=n.useCallback((s,o)=>{const a=o||s;we(i=>{const f=i.trimStart();return f.startsWith(s)||o&&f.startsWith(o)?i:`${a.endsWith(" ")?a:`${a} `}${i}`.trimStart()}),Yt(""),X(!1)},[]),Ke=n.useCallback(s=>{const o=s instanceof Error?s.message.toLowerCase():"";return o.includes("uncommitted changes")||o.includes("local changes")||o.includes("your local changes would be overwritten")||o.includes("please commit your changes or stash them")||o.includes("cannot rebase: you have unstaged changes")||o.includes("error: cannot pull with rebase")},[]),Ce=n.useCallback((s,o)=>{We(a=>[...a,{message:s,status:o,timestamp:Date.now()}])},[]),se=n.useCallback((s,o)=>{We(a=>{if(a.length===0)return a;const i=[...a];return i[i.length-1]={...i[i.length-1],status:s,...o?{message:o}:{}},i})},[]),Qe=n.useCallback(()=>{We([])},[]),hr=n.useCallback(()=>{We([]),gt(null)},[]),Xe=n.useCallback(s=>{const o=s.trim(),a=new Set(ae.map(f=>f.name)),i=o.indexOf("/");if(i>0){const f=o.slice(0,i),E=o.slice(i+1);if(a.has(f)&&E)return{branch:o,remote:f,remoteBranch:E}}for(const f of ae){const E=`${f.name}/${o}`;if(je.includes(E))return{branch:E,remote:f.name,remoteBranch:o}}return{branch:o,remote:null,remoteBranch:null}},[ae,je]),fr=n.useCallback(async s=>{if(!t)return;gt("merge"),Qe();const o=m?.current,a=Xe(s);try{a.remote&&a.remoteBranch&&(Ce(`Fetching ${a.remote}/${a.remoteBranch}...`,"running"),await r.gitFetch(t,{remote:a.remote,branch:a.remoteBranch}),se("done",`Fetched ${a.remote}/${a.remoteBranch}`)),Ce(`Merging ${a.branch} into ${o}...`,"running");const i=await r.merge(t,{branch:a.branch});i.conflict?(se("error","Merge conflicts detected"),pe(i.conflictFiles??[]),xe("merge"),ie(!0),be(t,i.conflictFiles??[],"merge")):(se("done",`Merged ${a.branch} into ${o}`),oe(),Ce("Refreshing repository status...","running"),await O(),await Y(),se("done","Repository status updated"))}catch(i){if(Ke(i))se("error","Uncommitted changes detected"),Jt("merge"),Kt(a.branch),yt(!0);else{const f=i instanceof Error?i.message:`Failed to merge ${a.branch}`;se("error",f)}}},[t,r,m,Xe,O,Y,Ke,be,oe,Ce,se,Qe]),gr=n.useCallback(async s=>{if(!t)return;gt("rebase"),Qe();const o=m?.current,a=Xe(s);try{a.remote&&a.remoteBranch&&(Ce(`Fetching ${a.remote}/${a.remoteBranch}...`,"running"),await r.gitFetch(t,{remote:a.remote,branch:a.remoteBranch}),se("done",`Fetched ${a.remote}/${a.remoteBranch}`)),Ce(`Rebasing ${o} onto ${a.branch}...`,"running");const i=await r.rebase(t,{onto:a.branch});i.conflict?(se("error","Rebase conflicts detected"),pe(i.conflictFiles??[]),xe("rebase"),ie(!0),be(t,i.conflictFiles??[],"rebase")):(se("done",`Rebased ${o} onto ${a.branch}`),oe(),Ce("Refreshing repository status...","running"),await O(),await Y(),se("done","Repository status updated"))}catch(i){if(Ke(i))se("error","Uncommitted changes detected"),Jt("rebase"),Kt(a.branch),yt(!0);else{const f=i instanceof Error?i.message:`Failed to rebase onto ${a.branch}`;se("error",f)}}},[t,r,m,Xe,O,Y,Ke,be,oe,Ce,se,Qe]),pr=n.useCallback(async()=>{if(t)try{Ve==="merge"?(await r.abortMerge(t),g.success("Merge aborted")):(await r.abortRebase(t),g.success("Rebase aborted")),oe(),await O(),await Y()}catch(s){const o=s instanceof Error?s.message:`Failed to abort ${Ve}`;g.error(o)}},[t,r,Ve,O,Y,oe]),xr=n.useMemo(()=>m?.files?m.files.filter(s=>s.index==="U"||s.working_dir==="U"||s.index==="A"&&s.working_dir==="A"||s.index==="D"&&s.working_dir==="D").length:0,[m?.files]),br=n.useCallback(async()=>{if(t)try{const s=!!m?.mergeInProgress?.head,o=!!(m?.rebaseInProgress?.headName||m?.rebaseInProgress?.onto);if(s){const a=await r.continueMerge(t);a.conflict?(pe(a.conflictFiles??[]),xe("merge"),ie(!0),be(t,a.conflictFiles??[],"merge"),g.error("Merge conflicts detected")):(oe(),g.success("Merge completed"),await O(),await Y())}else if(o){const a=await r.continueRebase(t);a.conflict?(pe(a.conflictFiles??[]),xe("rebase"),ie(!0),be(t,a.conflictFiles??[],"rebase"),g.error("Rebase conflicts detected")):(oe(),g.success("Rebase step completed"),await O(),await Y())}}catch(s){const o=s instanceof Error?s.message:"Failed to continue operation";g.error(o)}},[t,r,m,O,Y,be,oe]),yr=n.useCallback(async()=>{if(t)try{!!m?.mergeInProgress?.head?(await r.abortMerge(t),g.success("Merge aborted")):(await r.abortRebase(t),g.success("Rebase aborted")),oe(),await O(),await Y()}catch(s){const o=s instanceof Error?s.message:"Failed to abort operation";g.error(o)}},[t,r,m,O,Y,oe]),jr=n.useCallback(()=>{if(!t)return;const o=!!m?.mergeInProgress?.head?"merge":"rebase",a=m?.files?.filter(i=>i.index==="U"||i.working_dir==="U").map(i=>i.path)??[];a.length>0&&pe(a),xe(o),ie(!0)},[t,m]),wr=n.useCallback(async s=>{if(!t)return;const o=m?.current,a=jt,i=wt,f=(m?.files??[]).some(bs);try{await r.stash(t,{message:`Auto-stash before ${a} with ${i}`,includeUntracked:!0}),f&&V(t)}catch(B){const re=B instanceof Error?B.message:"Failed to stash changes";g.error(re);return}let E=!1,U=!1;try{if(a==="merge"){const B=await r.merge(t,{branch:i});B.conflict?(U=!0,pe(B.conflictFiles??[]),xe("merge"),ie(!0)):(E=!0,g.success(`Merged ${i} into ${o||""}`))}else{const B=await r.rebase(t,{onto:i});B.conflict?(U=!0,pe(B.conflictFiles??[]),xe("rebase"),ie(!0)):(E=!0,g.success(`Rebased ${o||""} onto ${i}`))}if(s&&E)try{await r.stashPop(t),V(t),g.success("Stashed changes restored")}catch(B){const re=B instanceof Error?B.message:"Failed to restore stash";g.error(re)}else s&&U&&g.info("Stash restored manually required");await O(),await Y()}catch(B){if(s)try{await r.stashPop(t),V(t)}catch{}throw B}},[V,t,r,m,jt,wt,O,Y]),vr=n.useCallback(s=>{Ms(s),t&&(L(t,s),M(t,r,s))},[t,M,r,L]),Cr=n.useCallback(s=>{Vs(s)},[]),Nr=n.useCallback(()=>{qe(null),t&&(z(t,r),W(t,r),M(t,r,ge))},[t,z,W,M,ge,r]),Sr=n.useCallback(s=>{if(s.conflict){if(s.operation==="cherry-pick"||s.operation==="revert"){g.error("Conflict",{description:`Conflicts in: ${s.conflictFiles?.join(", ")??"unknown files"}. Resolve manually and commit, or abort with git cherry-pick/revert --abort.`}),t&&(z(t,r),W(t,r),M(t,r,ge));return}pe(s.conflictFiles??[]),xe(s.operation),ie(!0),t&&be(t,s.conflictFiles??[],s.operation)}},[pe,xe,ie,be,t,z,W,M,ge,r]);return t?F===null||F===!0&&!m?e.jsx("div",{className:"flex h-full items-center justify-center",children:e.jsxs("div",{className:"flex items-center gap-2 text-muted-foreground",children:[e.jsx(R,{name:"loader-4",className:"size-4 animate-spin"}),e.jsx("span",{className:"typography-ui-label",children:"Checking repository..."})]})}):F===!1?e.jsx("div",{className:"flex h-full min-h-0 flex-col overflow-hidden",children:e.jsx(n.Suspense,{fallback:null,children:e.jsx(ps,{diffScope:"turn",hideStackedFileSidebar:!0,stackedDefaultCollapsedAll:!0,flushContent:!0})})}):e.jsxs("div",{className:ee("flex h-full flex-col overflow-hidden"),children:[e.jsx(ba,{status:m,localBranches:De,remoteBranches:je,branchInfo:v?.branches,syncAction:Mt,remotes:ae,onFetch:s=>Xt("fetch",s),onSync:s=>Xt("sync",s),onRemoveRemote:Zs,removingRemoteName:Os,onCheckoutBranch:rr,onCreateBranch:tr,onRenameBranch:sr,activeIdentityProfile:ir,availableIdentities:or,onSelectIdentity:ar,isApplyingIdentity:Ps,isWorktreeMode:!1,onOpenHistory:()=>qe("history"),onOpenGraph:()=>qe("graph"),onOpenStashes:dr,onOpenUpdateBranch:ts?()=>_t(!0):void 0,pullRequest:null,prChecks:null}),t&&(m?.mergeInProgress?.head||m?.rebaseInProgress?.headName||m?.rebaseInProgress?.onto)&&e.jsx(Ga,{mergeInProgress:m?.mergeInProgress,rebaseInProgress:m?.rebaseInProgress,onContinue:br,onAbort:yr,onResolveWithAI:jr,conflictCount:xr,isLoading:N}),e.jsx("div",{className:"flex-1 min-h-0 overflow-hidden",children:e.jsx("div",{className:"flex h-full min-h-0 flex-col",children:(ve?.length??0)>0||Ct?e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"min-h-0 flex-1 overflow-hidden",children:e.jsx(n.Suspense,{fallback:null,children:e.jsx(ps,{diffScope:ve.length>0?"all":"branch",branchBase:Ct?de:null,branchHead:Ct?ce:null,showOpenInEditorAction:!0,hideStackedFileSidebar:!0,stackedDefaultCollapsedAll:!0,flushContent:!0})})}),ve.length>0?e.jsx("div",{ref:Ft,className:"shrink-0 px-4 pb-4 pt-2",children:e.jsx(ya,{stagedCount:lr,commitMessage:he,onCommitMessageChange:we,generatedHighlights:lt,onInsertHighlights:ur,onGenerateMessage:er,isGeneratingMessage:As,onCommit:()=>Zt({pushAfter:!1}),onCommitAndPush:()=>Zt({pushAfter:!0}),commitAction:Pt,hasPendingIndexMutation:zs,gitmojiEnabled:$,onOpenGitmojiPicker:()=>X(!0)})}):null]}):e.jsx(Ea,{onOpenStashes:()=>nt(!0)})})}),e.jsx(ke,{open:Ds,onOpenChange:s=>{!s&&Wt!==null||_t(s)},children:e.jsxs(Re,{className:"max-w-2xl min-h-[26rem]",children:[e.jsxs(Ie,{children:[e.jsx(Ee,{children:"Update branch"}),e.jsxs($e,{children:["Bring the latest changes into"," ",e.jsx("span",{className:"font-mono text-foreground",children:m?.current??""}),"."]})]}),ts?e.jsx(Ta,{mode:"bare",currentBranch:m?.current,localBranches:De,remoteBranches:je,defaultTargetBranch:nr,onMerge:fr,onRebase:gr,disabled:cr,isOperating:Wt!==null,operationLogs:_s,onOperationComplete:hr}):e.jsx("p",{className:"typography-meta text-muted-foreground",children:"Branch actions unavailable in this repository state"})]})}),e.jsx(ke,{open:Z!==null,onOpenChange:s=>{s||qe(null)},children:e.jsxs(Re,{className:"max-w-5xl h-[90vh] max-h-[90vh] flex flex-col overflow-hidden",children:[e.jsxs(Ie,{children:[e.jsxs("div",{className:"flex items-center justify-between gap-2",children:[e.jsx(Ee,{children:Z==="graph"?"Graph":"History"}),e.jsxs(D,{type:"button",variant:"ghost",size:"sm",className:"mr-6 h-7 shrink-0 gap-1.5 px-2",onClick:()=>{if(Z==="graph"){Ys(s=>s+1);return}t&&M(t,r,ge)},disabled:Z==="graph"?xt:C,title:"Refresh","aria-label":"Refresh",children:[e.jsx(R,{name:"refresh",className:ee("size-4",(Z==="graph"?xt:C)&&"animate-spin")}),"Refresh"]})]}),e.jsx($e,{children:"Browse recent commits and inspect changed files."})]}),e.jsx("div",{className:"flex-1 min-h-0",children:e.jsx(Aa,{mode:Z==="graph"?"graph":"history",log:Z==="graph"?Ws??h:h,isLogLoading:Z==="graph"&&xt||C,logMaxCount:Z==="graph"?bt:ge,onLogMaxCountChange:Z==="graph"?Cr:vr,expandedCommitHashes:ct,onToggleCommit:Xs,commitFilesMap:He,loadingCommitHashes:Ue,onCopyHash:Qs,directory:t??void 0,showHeader:!1,contentMaxHeightClassName:"h-full max-h-none",branchDivider:Z==="graph"?null:Js,onConflict:Z==="graph"?Sr:void 0,onActionSuccess:Z==="graph"?Nr:void 0})})]})}),e.jsx(Ia,{open:Fs,onOpenChange:nt,directory:t,hasUncommittedChanges:(m?.files?.length??0)>0,hasStagedChanges:ye.length>0,uncommittedFileCount:m?.files?.length??0,onChanged:async s=>{t&&s?.affectsIndex&&V(t),await O(!1),await Y()}}),e.jsx(ke,{open:fe,onOpenChange:X,children:e.jsxs(Re,{className:"max-w-md p-0 overflow-hidden",children:[e.jsx(Ie,{className:"px-4 pt-4",children:e.jsx(Ee,{children:"Insert gitmoji"})}),e.jsxs(vs,{className:"h-[420px]",children:[e.jsx(Cs,{placeholder:"Search gitmoji...",value:qt,onValueChange:Yt}),e.jsxs(Ns,{children:[e.jsx(Ss,{children:"No gitmoji found"}),e.jsx(It,{children:(_.length===0?[]:_.filter(s=>{const o=qt.trim().toLowerCase();return o?s.emoji.includes(o)||s.code.toLowerCase().includes(o)||s.description.toLowerCase().includes(o):!0})).map(s=>e.jsxs(Et,{onSelect:()=>mr(s.emoji,s.code),children:[e.jsx("span",{className:"text-lg",children:s.emoji}),e.jsx("span",{className:"typography-ui-label text-foreground",children:s.code}),e.jsx("span",{className:"typography-meta text-muted-foreground",children:s.description})]},s.code))})]})]})]})}),t&&e.jsx(Da,{open:Hs,onOpenChange:ie,conflictFiles:Us,directory:t,operation:Ve,onAbort:pr,onClearState:oe}),e.jsx(za,{open:Ks,onOpenChange:yt,operation:jt,targetBranch:wt,onConfirm:wr})]}):e.jsx("div",{className:"flex h-full items-center justify-center px-4 text-center",children:e.jsx("p",{className:"typography-ui-label text-muted-foreground",children:"Select a session or directory to view Git status"})})};export{oi as GitView};
|