termdock 1.4.174 → 1.4.176
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/.desktop-dist/main.js +154 -7
- package/dist/client/assets/App-BXYZyI_k.js +150 -0
- package/dist/client/assets/App-BXYZyI_k.js.br +0 -0
- package/dist/client/assets/App-BXYZyI_k.js.gz +0 -0
- package/dist/client/assets/ChangeWalkthroughPanel-DeVtCf73.js +2 -0
- package/dist/client/assets/ChangeWalkthroughPanel-DeVtCf73.js.br +0 -0
- package/dist/client/assets/ChangeWalkthroughPanel-DeVtCf73.js.gz +0 -0
- package/dist/client/assets/DagPlayground-ZIqLZoMo.js +1 -0
- package/dist/client/assets/DagPlayground-ZIqLZoMo.js.br +0 -0
- package/dist/client/assets/DagPlayground-ZIqLZoMo.js.gz +0 -0
- package/dist/client/assets/{DiffLab-CdbPsjKS.js → DiffLab-CSMf8So2.js} +2 -2
- package/dist/client/assets/DiffLab-CSMf8So2.js.br +0 -0
- package/dist/client/assets/DiffLab-CSMf8So2.js.gz +0 -0
- package/dist/client/assets/DiffReview-CE5lW1zQ.js +1 -0
- package/dist/client/assets/DiffReview-CE5lW1zQ.js.br +0 -0
- package/dist/client/assets/DiffReview-CE5lW1zQ.js.gz +0 -0
- package/dist/client/assets/DiffReviewLab-CpUW75fZ.js +2 -0
- package/dist/client/assets/DiffReviewLab-CpUW75fZ.js.br +0 -0
- package/dist/client/assets/DiffReviewLab-CpUW75fZ.js.gz +0 -0
- package/dist/client/assets/{DiffViewer-hdxcM9yF.js → DiffViewer-BomvZ4kq.js} +5 -5
- package/dist/client/assets/DiffViewer-BomvZ4kq.js.br +0 -0
- package/dist/client/assets/DiffViewer-BomvZ4kq.js.gz +0 -0
- package/dist/client/assets/{ModelPreview-BZ454pgM.js → ModelPreview-BWdZFyhh.js} +3 -3
- package/dist/client/assets/ModelPreview-BWdZFyhh.js.br +0 -0
- package/dist/client/assets/ModelPreview-BWdZFyhh.js.gz +0 -0
- package/dist/client/assets/RightSidebar-CYVwFbOc.js +79 -0
- package/dist/client/assets/RightSidebar-CYVwFbOc.js.br +0 -0
- package/dist/client/assets/RightSidebar-CYVwFbOc.js.gz +0 -0
- package/dist/client/assets/{abnfDiagram-VCTEODGH-C185Omck.js → abnfDiagram-VCTEODGH-BIPsLStE.js} +1 -1
- package/dist/client/assets/abnfDiagram-VCTEODGH-BIPsLStE.js.br +0 -0
- package/dist/client/assets/abnfDiagram-VCTEODGH-BIPsLStE.js.gz +0 -0
- package/dist/client/assets/app-D6KzR8B3.js +34 -0
- package/dist/client/assets/app-D6KzR8B3.js.br +0 -0
- package/dist/client/assets/app-D6KzR8B3.js.gz +0 -0
- package/dist/client/assets/{arc-DNt-DTCl.js → arc-DzeT6hBj.js} +1 -1
- package/dist/client/assets/arc-DzeT6hBj.js.br +0 -0
- package/dist/client/assets/arc-DzeT6hBj.js.gz +0 -0
- package/dist/client/assets/{architectureDiagram-5GKGNRK7-C5Nwm_Qz.js → architectureDiagram-5GKGNRK7-B1qsxd_5.js} +1 -1
- package/dist/client/assets/architectureDiagram-5GKGNRK7-B1qsxd_5.js.br +0 -0
- package/dist/client/assets/architectureDiagram-5GKGNRK7-B1qsxd_5.js.gz +0 -0
- package/dist/client/assets/{blockDiagram-I7D4REHJ-C5aR_7V9.js → blockDiagram-I7D4REHJ-NLsa29Jp.js} +1 -1
- package/dist/client/assets/blockDiagram-I7D4REHJ-NLsa29Jp.js.br +0 -0
- package/dist/client/assets/blockDiagram-I7D4REHJ-NLsa29Jp.js.gz +0 -0
- package/dist/client/assets/{c4Diagram-7LVT6UL2-DjV6ZNwd.js → c4Diagram-7LVT6UL2-DBAUvou3.js} +1 -1
- package/dist/client/assets/c4Diagram-7LVT6UL2-DBAUvou3.js.br +0 -0
- package/dist/client/assets/c4Diagram-7LVT6UL2-DBAUvou3.js.gz +0 -0
- package/dist/client/assets/channel-BhwBAWhq.js +1 -0
- package/dist/client/assets/{chunk-2Q5K7J3B-Ct7nd4cL.js → chunk-2Q5K7J3B-BsVAXGLa.js} +1 -1
- package/dist/client/assets/{chunk-5VM5RSS4-CXem4UYP.js → chunk-5VM5RSS4-BKtILsst.js} +1 -1
- package/dist/client/assets/{chunk-F27PBJKO-DyMNEawE.js → chunk-F27PBJKO-Dn9zcQZG.js} +1 -1
- package/dist/client/assets/chunk-F27PBJKO-Dn9zcQZG.js.br +0 -0
- package/dist/client/assets/chunk-F27PBJKO-Dn9zcQZG.js.gz +0 -0
- package/dist/client/assets/{chunk-IMKFNOWR-BsW7iIrh.js → chunk-IMKFNOWR-MVtVQeTr.js} +1 -1
- package/dist/client/assets/chunk-IMKFNOWR-MVtVQeTr.js.br +0 -0
- package/dist/client/assets/{chunk-IMKFNOWR-BsW7iIrh.js.gz → chunk-IMKFNOWR-MVtVQeTr.js.gz} +0 -0
- package/dist/client/assets/{chunk-JWPE2WC7-EO8E1q1J.js → chunk-JWPE2WC7-DliIIMe7.js} +1 -1
- package/dist/client/assets/{chunk-POPQ4Y6H-0One8T9x.js → chunk-POPQ4Y6H-XBSus3IC.js} +1 -1
- package/dist/client/assets/{chunk-SVP7TREG-CDu41dkj.js → chunk-SVP7TREG-wleSQcJR.js} +1 -1
- package/dist/client/assets/chunk-SVP7TREG-wleSQcJR.js.br +0 -0
- package/dist/client/assets/chunk-SVP7TREG-wleSQcJR.js.gz +0 -0
- package/dist/client/assets/{chunk-TICWLB2K-BACjgX9v.js → chunk-TICWLB2K-Dq6LdswN.js} +1 -1
- package/dist/client/assets/chunk-TICWLB2K-Dq6LdswN.js.br +0 -0
- package/dist/client/assets/chunk-TICWLB2K-Dq6LdswN.js.gz +0 -0
- package/dist/client/assets/{chunk-XXDRQBXY-BJWowF6E.js → chunk-XXDRQBXY-xafyKlM-.js} +1 -1
- package/dist/client/assets/classDiagram-ZZMXUADV-slQB0ns2.js +1 -0
- package/dist/client/assets/classDiagram-v2-VYDZK3BY-slQB0ns2.js +1 -0
- package/dist/client/assets/{cose-bilkent-JH36ORCC-WTwHOCdm.js → cose-bilkent-JH36ORCC-BR7Ohnm_.js} +1 -1
- package/dist/client/assets/cose-bilkent-JH36ORCC-BR7Ohnm_.js.br +0 -0
- package/dist/client/assets/cose-bilkent-JH36ORCC-BR7Ohnm_.js.gz +0 -0
- package/dist/client/assets/{cynefin-OW5HDTMX-D4y8TkaO.js → cynefin-OW5HDTMX-CmPjQgER.js} +1 -1
- package/dist/client/assets/cynefin-OW5HDTMX-CmPjQgER.js.br +0 -0
- package/dist/client/assets/cynefin-OW5HDTMX-CmPjQgER.js.gz +0 -0
- package/dist/client/assets/{cynefinDiagram-5FMLGOSQ-BzN8Ggk_.js → cynefinDiagram-5FMLGOSQ-CFyR9RvM.js} +1 -1
- package/dist/client/assets/cynefinDiagram-5FMLGOSQ-CFyR9RvM.js.br +0 -0
- package/dist/client/assets/cynefinDiagram-5FMLGOSQ-CFyR9RvM.js.gz +0 -0
- package/dist/client/assets/{dagre-GXQ25YYZ-CwMYtt5E.js → dagre-GXQ25YYZ-D_RVMRO1.js} +1 -1
- package/dist/client/assets/dagre-GXQ25YYZ-D_RVMRO1.js.br +0 -0
- package/dist/client/assets/dagre-GXQ25YYZ-D_RVMRO1.js.gz +0 -0
- package/dist/client/assets/{diagram-S7CK7UJ4-BnTeHiAb.js → diagram-S7CK7UJ4-6fr-ZoPj.js} +1 -1
- package/dist/client/assets/diagram-S7CK7UJ4-6fr-ZoPj.js.br +0 -0
- package/dist/client/assets/diagram-S7CK7UJ4-6fr-ZoPj.js.gz +0 -0
- package/dist/client/assets/{diagram-UQ7AKVKN-BNlh251g.js → diagram-UQ7AKVKN-CgwiUtz0.js} +1 -1
- package/dist/client/assets/diagram-UQ7AKVKN-CgwiUtz0.js.br +0 -0
- package/dist/client/assets/diagram-UQ7AKVKN-CgwiUtz0.js.gz +0 -0
- package/dist/client/assets/{diagram-VSXAHHWV-B5FftXkQ.js → diagram-VSXAHHWV-CLxzTB9k.js} +1 -1
- package/dist/client/assets/diagram-VSXAHHWV-CLxzTB9k.js.br +0 -0
- package/dist/client/assets/diagram-VSXAHHWV-CLxzTB9k.js.gz +0 -0
- package/dist/client/assets/{diagram-VX7I27RA-C51ZNXR2.js → diagram-VX7I27RA-DjxDAvdZ.js} +1 -1
- package/dist/client/assets/diagram-VX7I27RA-DjxDAvdZ.js.br +0 -0
- package/dist/client/assets/diagram-VX7I27RA-DjxDAvdZ.js.gz +0 -0
- package/dist/client/assets/{diagram-Z3DM3KII-CXoZH2qf.js → diagram-Z3DM3KII-CDPOjiz4.js} +1 -1
- package/dist/client/assets/diagram-Z3DM3KII-CDPOjiz4.js.br +0 -0
- package/dist/client/assets/diagram-Z3DM3KII-CDPOjiz4.js.gz +0 -0
- package/dist/client/assets/{ebnfDiagram-PWID7BFC-C7YFLlx4.js → ebnfDiagram-PWID7BFC-BLbwyF1O.js} +1 -1
- package/dist/client/assets/ebnfDiagram-PWID7BFC-BLbwyF1O.js.br +0 -0
- package/dist/client/assets/ebnfDiagram-PWID7BFC-BLbwyF1O.js.gz +0 -0
- package/dist/client/assets/{erDiagram-RLTQ6QDP-BNQlS7-g.js → erDiagram-RLTQ6QDP-DbjtZnJx.js} +1 -1
- package/dist/client/assets/erDiagram-RLTQ6QDP-DbjtZnJx.js.br +0 -0
- package/dist/client/assets/erDiagram-RLTQ6QDP-DbjtZnJx.js.gz +0 -0
- package/dist/client/assets/{flowDiagram-HODETNUW-DIQXZ06I.js → flowDiagram-HODETNUW-BirJInAN.js} +1 -1
- package/dist/client/assets/flowDiagram-HODETNUW-BirJInAN.js.br +0 -0
- package/dist/client/assets/flowDiagram-HODETNUW-BirJInAN.js.gz +0 -0
- package/dist/client/assets/{ganttDiagram-EL5Y4UJY-BaJQfOqD.js → ganttDiagram-EL5Y4UJY-d6Q9vSbv.js} +1 -1
- package/dist/client/assets/ganttDiagram-EL5Y4UJY-d6Q9vSbv.js.br +0 -0
- package/dist/client/assets/ganttDiagram-EL5Y4UJY-d6Q9vSbv.js.gz +0 -0
- package/dist/client/assets/gestureArbiter-C2J0D0kV.css +1 -0
- package/dist/client/assets/gestureArbiter-C2J0D0kV.css.br +0 -0
- package/dist/client/assets/gestureArbiter-C2J0D0kV.css.gz +0 -0
- package/dist/client/assets/gestureArbiter-D1SNS_gK.js +1 -0
- package/dist/client/assets/gestureArbiter-D1SNS_gK.js.br +0 -0
- package/dist/client/assets/gestureArbiter-D1SNS_gK.js.gz +0 -0
- package/dist/client/assets/{gitGraphDiagram-WWUBYQGX-tQ4E6pwN.js → gitGraphDiagram-WWUBYQGX-BWBoIeS6.js} +1 -1
- package/dist/client/assets/gitGraphDiagram-WWUBYQGX-BWBoIeS6.js.br +0 -0
- package/dist/client/assets/gitGraphDiagram-WWUBYQGX-BWBoIeS6.js.gz +0 -0
- package/dist/client/assets/{index-DlxiaPv1.css → index-DUI8KRf6.css} +1 -1
- package/dist/client/assets/index-DUI8KRf6.css.br +0 -0
- package/dist/client/assets/index-DUI8KRf6.css.gz +0 -0
- package/dist/client/assets/{infoDiagram-27XIBGKW-DTOUeQrN.js → infoDiagram-27XIBGKW-BH4AynkM.js} +1 -1
- package/dist/client/assets/{ishikawaDiagram-5VMMS53U-8sBi-gla.js → ishikawaDiagram-5VMMS53U-BQw90AKR.js} +1 -1
- package/dist/client/assets/{ishikawaDiagram-5VMMS53U-8sBi-gla.js.br → ishikawaDiagram-5VMMS53U-BQw90AKR.js.br} +0 -0
- package/dist/client/assets/ishikawaDiagram-5VMMS53U-BQw90AKR.js.gz +0 -0
- package/dist/client/assets/{journeyDiagram-3NMN7TZE-ZwikziWh.js → journeyDiagram-3NMN7TZE-DISkQocf.js} +1 -1
- package/dist/client/assets/journeyDiagram-3NMN7TZE-DISkQocf.js.br +0 -0
- package/dist/client/assets/{journeyDiagram-3NMN7TZE-ZwikziWh.js.gz → journeyDiagram-3NMN7TZE-DISkQocf.js.gz} +0 -0
- package/dist/client/assets/{kanban-definition-UXKFOSKX-wjuw2jQ4.js → kanban-definition-UXKFOSKX-Qg2LyEVy.js} +1 -1
- package/dist/client/assets/kanban-definition-UXKFOSKX-Qg2LyEVy.js.br +0 -0
- package/dist/client/assets/kanban-definition-UXKFOSKX-Qg2LyEVy.js.gz +0 -0
- package/dist/client/assets/{layout-nASMIj-E.js → layout-Cd7-4_Vr.js} +1 -1
- package/dist/client/assets/layout-Cd7-4_Vr.js.br +0 -0
- package/dist/client/assets/layout-Cd7-4_Vr.js.gz +0 -0
- package/dist/client/assets/{linear-pGaQeqW5.js → linear-DFTi2fTn.js} +1 -1
- package/dist/client/assets/linear-DFTi2fTn.js.br +0 -0
- package/dist/client/assets/linear-DFTi2fTn.js.gz +0 -0
- package/dist/client/assets/{mermaid.core-CKEBWbQz.js → mermaid.core-2v726lUU.js} +5 -5
- package/dist/client/assets/mermaid.core-2v726lUU.js.br +0 -0
- package/dist/client/assets/mermaid.core-2v726lUU.js.gz +0 -0
- package/dist/client/assets/{mindmap-definition-YA3MSWOX-CBjYcnwd.js → mindmap-definition-YA3MSWOX-_FpwteCy.js} +4 -4
- package/dist/client/assets/mindmap-definition-YA3MSWOX-_FpwteCy.js.br +0 -0
- package/dist/client/assets/mindmap-definition-YA3MSWOX-_FpwteCy.js.gz +0 -0
- package/dist/client/assets/passwordBootstrap-D9Ffc7NY.js +2 -0
- package/dist/client/assets/passwordBootstrap-D9Ffc7NY.js.br +0 -0
- package/dist/client/assets/passwordBootstrap-D9Ffc7NY.js.gz +0 -0
- package/dist/client/assets/{pegDiagram-XKGWAZYB-DJqvclIp.js → pegDiagram-XKGWAZYB-DLFf-HmZ.js} +1 -1
- package/dist/client/assets/pegDiagram-XKGWAZYB-DLFf-HmZ.js.br +0 -0
- package/dist/client/assets/pegDiagram-XKGWAZYB-DLFf-HmZ.js.gz +0 -0
- package/dist/client/assets/{pieDiagram-E7YTZNPT-DLV4WPwc.js → pieDiagram-E7YTZNPT-DqTnfXHG.js} +1 -1
- package/dist/client/assets/pieDiagram-E7YTZNPT-DqTnfXHG.js.br +0 -0
- package/dist/client/assets/pieDiagram-E7YTZNPT-DqTnfXHG.js.gz +0 -0
- package/dist/client/assets/{quadrantDiagram-AXDQQJYC-BN7Zpsb9.js → quadrantDiagram-AXDQQJYC-B_oBH52Q.js} +1 -1
- package/dist/client/assets/quadrantDiagram-AXDQQJYC-B_oBH52Q.js.br +0 -0
- package/dist/client/assets/quadrantDiagram-AXDQQJYC-B_oBH52Q.js.gz +0 -0
- package/dist/client/assets/{railroadDiagram-O6MQD6OU-DfHX6MUm.js → railroadDiagram-O6MQD6OU-HxFQ7Pce.js} +1 -1
- package/dist/client/assets/railroadDiagram-O6MQD6OU-HxFQ7Pce.js.br +0 -0
- package/dist/client/assets/railroadDiagram-O6MQD6OU-HxFQ7Pce.js.gz +0 -0
- package/dist/client/assets/referenceLongPress-B3NGIjvv.js +1 -0
- package/dist/client/assets/referenceLongPress-B3NGIjvv.js.br +0 -0
- package/dist/client/assets/referenceLongPress-B3NGIjvv.js.gz +0 -0
- package/dist/client/assets/{requirementDiagram-BXWQKSXE-tQVSFg_k.js → requirementDiagram-BXWQKSXE-NZdfaZFk.js} +1 -1
- package/dist/client/assets/requirementDiagram-BXWQKSXE-NZdfaZFk.js.br +0 -0
- package/dist/client/assets/requirementDiagram-BXWQKSXE-NZdfaZFk.js.gz +0 -0
- package/dist/client/assets/{sankeyDiagram-P5KCCOFB-C7JW1-Wh.js → sankeyDiagram-P5KCCOFB-BgCctv6X.js} +1 -1
- package/dist/client/assets/sankeyDiagram-P5KCCOFB-BgCctv6X.js.br +0 -0
- package/dist/client/assets/sankeyDiagram-P5KCCOFB-BgCctv6X.js.gz +0 -0
- package/dist/client/assets/{sequenceDiagram-WJ2MYXX4-BVeDiFDI.js → sequenceDiagram-WJ2MYXX4-Br42Za1R.js} +1 -1
- package/dist/client/assets/sequenceDiagram-WJ2MYXX4-Br42Za1R.js.br +0 -0
- package/dist/client/assets/sequenceDiagram-WJ2MYXX4-Br42Za1R.js.gz +0 -0
- package/dist/client/assets/{sizeCapture-INFHLROL-CBRaCpeP.js → sizeCapture-INFHLROL-FT4z4S1b.js} +1 -1
- package/dist/client/assets/sizeCapture-INFHLROL-FT4z4S1b.js.br +0 -0
- package/dist/client/assets/sizeCapture-INFHLROL-FT4z4S1b.js.gz +0 -0
- package/dist/client/assets/sparkles-BaGaevME.js +1 -0
- package/dist/client/assets/{stateDiagram-D77RDMKH-CiLpGRuf.js → stateDiagram-D77RDMKH-DD0t9f84.js} +1 -1
- package/dist/client/assets/stateDiagram-D77RDMKH-DD0t9f84.js.br +0 -0
- package/dist/client/assets/stateDiagram-D77RDMKH-DD0t9f84.js.gz +0 -0
- package/dist/client/assets/stateDiagram-v2-MP3YSRHH-BhvVVB56.js +1 -0
- package/dist/client/assets/{swimlanes-42K2YHIH-BkzVtkVY.js → swimlanes-42K2YHIH-DcC8pGLx.js} +1 -1
- package/dist/client/assets/swimlanes-42K2YHIH-DcC8pGLx.js.br +0 -0
- package/dist/client/assets/swimlanes-42K2YHIH-DcC8pGLx.js.gz +0 -0
- package/dist/client/assets/swimlanesDiagram-VR7AAH4N-DSC5lz0i.js +8 -0
- package/dist/client/assets/{timeline-definition-24CTP7MA-DKyfGITP.js → timeline-definition-24CTP7MA-DnwO_Pxd.js} +1 -1
- package/dist/client/assets/timeline-definition-24CTP7MA-DnwO_Pxd.js.br +0 -0
- package/dist/client/assets/timeline-definition-24CTP7MA-DnwO_Pxd.js.gz +0 -0
- package/dist/client/assets/triangle-alert-BCQO9Ap9.js +1 -0
- package/dist/client/assets/{vennDiagram-4TSXK5OY-CRgkkrgx.js → vennDiagram-4TSXK5OY-IVNSrZDM.js} +1 -1
- package/dist/client/assets/vennDiagram-4TSXK5OY-IVNSrZDM.js.br +0 -0
- package/dist/client/assets/vennDiagram-4TSXK5OY-IVNSrZDM.js.gz +0 -0
- package/dist/client/assets/{wardleyDiagram-VM6X3IG4-Cr7yS4CZ.js → wardleyDiagram-VM6X3IG4-BnGetaQL.js} +1 -1
- package/dist/client/assets/wardleyDiagram-VM6X3IG4-BnGetaQL.js.br +0 -0
- package/dist/client/assets/wardleyDiagram-VM6X3IG4-BnGetaQL.js.gz +0 -0
- package/dist/client/assets/{xychartDiagram-S5SC5T6Z-DkPYl6E0.js → xychartDiagram-S5SC5T6Z-C01eBN-W.js} +1 -1
- package/dist/client/assets/xychartDiagram-S5SC5T6Z-C01eBN-W.js.br +0 -0
- package/dist/client/assets/xychartDiagram-S5SC5T6Z-C01eBN-W.js.gz +0 -0
- package/dist/client/index.html +2 -2
- package/dist/client/index.html.br +0 -0
- package/dist/client/index.html.gz +0 -0
- package/dist/client/preview-shell.html +1 -0
- package/dist/client/preview-shell.js +20 -0
- package/dist/client/preview-shell.js.br +0 -0
- package/dist/client/preview-shell.js.gz +0 -0
- package/dist/client/sw-secure-api.js +132 -0
- package/dist/client/sw-secure-api.js.br +0 -0
- package/dist/client/sw-secure-api.js.gz +0 -0
- package/dist/client/sw.js +1 -1
- package/dist/client/sw.js.br +0 -0
- package/dist/client/sw.js.gz +0 -0
- package/dist/server/agent/collaborationCli.js +298 -0
- package/dist/server/agent/collaborationPrompt.js +10 -2
- package/dist/server/agent/collaborationProtocol.js +50 -0
- package/dist/server/agent/collaborationRoutes.js +86 -0
- package/dist/server/agent/collaborationStore.js +249 -21
- package/dist/server/cli.js +28 -168
- package/dist/server/entry.js +114 -51
- package/dist/server/federation/accessPolicy.js +122 -0
- package/dist/server/federation/authorization.js +226 -0
- package/dist/server/federation/bootstrapCors.js +23 -0
- package/dist/server/federation/cli.js +185 -0
- package/dist/server/federation/deviceNames.js +29 -0
- package/dist/server/federation/directRoutes.js +72 -0
- package/dist/server/federation/invitations.js +123 -0
- package/dist/server/federation/openAccess.js +25 -0
- package/dist/server/federation/originPolicy.js +19 -0
- package/dist/server/federation/packets.js +116 -0
- package/dist/server/federation/passwordBootstrap.js +86 -0
- package/dist/server/federation/passwordLoginRoutes.js +98 -0
- package/dist/server/federation/relay.js +346 -0
- package/dist/server/federation/requestContext.js +4 -0
- package/dist/server/federation/routeAccess.js +124 -0
- package/dist/server/federation/routeInvitations.js +160 -0
- package/dist/server/federation/runtime.js +537 -0
- package/dist/server/federation/secureProtocol.js +223 -0
- package/dist/server/federation/socketDuplex.js +42 -0
- package/dist/server/federation/streamLimits.js +5 -0
- package/dist/server/routes/filesystem.js +2 -1
- package/dist/server/routes/terminal.js +40 -72
- package/dist/server/utils/authProtection.js +13 -0
- package/dist/server/utils/csrfProtection.js +3 -0
- package/dist/server/utils/publicSecurity.js +8 -3
- package/package.json +10 -3
- package/runtime-manifest.json +4 -4
- package/dist/client/assets/ChangeWalkthroughPanel-hj8I8Cwy.js +0 -2
- package/dist/client/assets/ChangeWalkthroughPanel-hj8I8Cwy.js.br +0 -0
- package/dist/client/assets/ChangeWalkthroughPanel-hj8I8Cwy.js.gz +0 -0
- package/dist/client/assets/DagPlayground-BRoB8JX5.js +0 -1
- package/dist/client/assets/DagPlayground-BRoB8JX5.js.br +0 -0
- package/dist/client/assets/DagPlayground-BRoB8JX5.js.gz +0 -0
- package/dist/client/assets/DiffLab-CdbPsjKS.js.br +0 -0
- package/dist/client/assets/DiffLab-CdbPsjKS.js.gz +0 -0
- package/dist/client/assets/DiffReview-MQXjrRsW.js +0 -1
- package/dist/client/assets/DiffReview-MQXjrRsW.js.br +0 -0
- package/dist/client/assets/DiffReview-MQXjrRsW.js.gz +0 -0
- package/dist/client/assets/DiffReviewLab-C47CNvDM.js +0 -2
- package/dist/client/assets/DiffReviewLab-C47CNvDM.js.br +0 -0
- package/dist/client/assets/DiffReviewLab-C47CNvDM.js.gz +0 -0
- package/dist/client/assets/DiffViewer-hdxcM9yF.js.br +0 -0
- package/dist/client/assets/DiffViewer-hdxcM9yF.js.gz +0 -0
- package/dist/client/assets/ModelPreview-BZ454pgM.js.br +0 -0
- package/dist/client/assets/ModelPreview-BZ454pgM.js.gz +0 -0
- package/dist/client/assets/RightSidebar-i0Oq68YI.js +0 -55
- package/dist/client/assets/RightSidebar-i0Oq68YI.js.br +0 -0
- package/dist/client/assets/RightSidebar-i0Oq68YI.js.gz +0 -0
- package/dist/client/assets/abnfDiagram-VCTEODGH-C185Omck.js.br +0 -0
- package/dist/client/assets/abnfDiagram-VCTEODGH-C185Omck.js.gz +0 -0
- package/dist/client/assets/app-DAp8rVMc.js +0 -175
- package/dist/client/assets/app-DAp8rVMc.js.br +0 -0
- package/dist/client/assets/app-DAp8rVMc.js.gz +0 -0
- package/dist/client/assets/arc-DNt-DTCl.js.br +0 -0
- package/dist/client/assets/arc-DNt-DTCl.js.gz +0 -0
- package/dist/client/assets/architectureDiagram-5GKGNRK7-C5Nwm_Qz.js.br +0 -0
- package/dist/client/assets/architectureDiagram-5GKGNRK7-C5Nwm_Qz.js.gz +0 -0
- package/dist/client/assets/blockDiagram-I7D4REHJ-C5aR_7V9.js.br +0 -0
- package/dist/client/assets/blockDiagram-I7D4REHJ-C5aR_7V9.js.gz +0 -0
- package/dist/client/assets/c4Diagram-7LVT6UL2-DjV6ZNwd.js.br +0 -0
- package/dist/client/assets/c4Diagram-7LVT6UL2-DjV6ZNwd.js.gz +0 -0
- package/dist/client/assets/channel-uhLrATdy.js +0 -1
- package/dist/client/assets/chunk-F27PBJKO-DyMNEawE.js.br +0 -0
- package/dist/client/assets/chunk-F27PBJKO-DyMNEawE.js.gz +0 -0
- package/dist/client/assets/chunk-IMKFNOWR-BsW7iIrh.js.br +0 -0
- package/dist/client/assets/chunk-SVP7TREG-CDu41dkj.js.br +0 -0
- package/dist/client/assets/chunk-SVP7TREG-CDu41dkj.js.gz +0 -0
- package/dist/client/assets/chunk-TICWLB2K-BACjgX9v.js.br +0 -0
- package/dist/client/assets/chunk-TICWLB2K-BACjgX9v.js.gz +0 -0
- package/dist/client/assets/classDiagram-ZZMXUADV-CnxFfzm9.js +0 -1
- package/dist/client/assets/classDiagram-v2-VYDZK3BY-CnxFfzm9.js +0 -1
- package/dist/client/assets/cose-bilkent-JH36ORCC-WTwHOCdm.js.br +0 -0
- package/dist/client/assets/cose-bilkent-JH36ORCC-WTwHOCdm.js.gz +0 -0
- package/dist/client/assets/cynefin-OW5HDTMX-D4y8TkaO.js.br +0 -0
- package/dist/client/assets/cynefin-OW5HDTMX-D4y8TkaO.js.gz +0 -0
- package/dist/client/assets/cynefinDiagram-5FMLGOSQ-BzN8Ggk_.js.br +0 -0
- package/dist/client/assets/cynefinDiagram-5FMLGOSQ-BzN8Ggk_.js.gz +0 -0
- package/dist/client/assets/dagre-GXQ25YYZ-CwMYtt5E.js.br +0 -0
- package/dist/client/assets/dagre-GXQ25YYZ-CwMYtt5E.js.gz +0 -0
- package/dist/client/assets/diagram-S7CK7UJ4-BnTeHiAb.js.br +0 -0
- package/dist/client/assets/diagram-S7CK7UJ4-BnTeHiAb.js.gz +0 -0
- package/dist/client/assets/diagram-UQ7AKVKN-BNlh251g.js.br +0 -0
- package/dist/client/assets/diagram-UQ7AKVKN-BNlh251g.js.gz +0 -0
- package/dist/client/assets/diagram-VSXAHHWV-B5FftXkQ.js.br +0 -0
- package/dist/client/assets/diagram-VSXAHHWV-B5FftXkQ.js.gz +0 -0
- package/dist/client/assets/diagram-VX7I27RA-C51ZNXR2.js.br +0 -0
- package/dist/client/assets/diagram-VX7I27RA-C51ZNXR2.js.gz +0 -0
- package/dist/client/assets/diagram-Z3DM3KII-CXoZH2qf.js.br +0 -0
- package/dist/client/assets/diagram-Z3DM3KII-CXoZH2qf.js.gz +0 -0
- package/dist/client/assets/ebnfDiagram-PWID7BFC-C7YFLlx4.js.br +0 -0
- package/dist/client/assets/ebnfDiagram-PWID7BFC-C7YFLlx4.js.gz +0 -0
- package/dist/client/assets/erDiagram-RLTQ6QDP-BNQlS7-g.js.br +0 -0
- package/dist/client/assets/erDiagram-RLTQ6QDP-BNQlS7-g.js.gz +0 -0
- package/dist/client/assets/flowDiagram-HODETNUW-DIQXZ06I.js.br +0 -0
- package/dist/client/assets/flowDiagram-HODETNUW-DIQXZ06I.js.gz +0 -0
- package/dist/client/assets/ganttDiagram-EL5Y4UJY-BaJQfOqD.js.br +0 -0
- package/dist/client/assets/ganttDiagram-EL5Y4UJY-BaJQfOqD.js.gz +0 -0
- package/dist/client/assets/gitGraphDiagram-WWUBYQGX-tQ4E6pwN.js.br +0 -0
- package/dist/client/assets/gitGraphDiagram-WWUBYQGX-tQ4E6pwN.js.gz +0 -0
- package/dist/client/assets/index-DlxiaPv1.css.br +0 -0
- package/dist/client/assets/index-DlxiaPv1.css.gz +0 -0
- package/dist/client/assets/ishikawaDiagram-5VMMS53U-8sBi-gla.js.gz +0 -0
- package/dist/client/assets/journeyDiagram-3NMN7TZE-ZwikziWh.js.br +0 -0
- package/dist/client/assets/kanban-definition-UXKFOSKX-wjuw2jQ4.js.br +0 -0
- package/dist/client/assets/kanban-definition-UXKFOSKX-wjuw2jQ4.js.gz +0 -0
- package/dist/client/assets/layout-nASMIj-E.js.br +0 -0
- package/dist/client/assets/layout-nASMIj-E.js.gz +0 -0
- package/dist/client/assets/linear-pGaQeqW5.js.br +0 -0
- package/dist/client/assets/linear-pGaQeqW5.js.gz +0 -0
- package/dist/client/assets/mermaid.core-CKEBWbQz.js.br +0 -0
- package/dist/client/assets/mermaid.core-CKEBWbQz.js.gz +0 -0
- package/dist/client/assets/mindmap-definition-YA3MSWOX-CBjYcnwd.js.br +0 -0
- package/dist/client/assets/mindmap-definition-YA3MSWOX-CBjYcnwd.js.gz +0 -0
- package/dist/client/assets/pegDiagram-XKGWAZYB-DJqvclIp.js.br +0 -0
- package/dist/client/assets/pegDiagram-XKGWAZYB-DJqvclIp.js.gz +0 -0
- package/dist/client/assets/pieDiagram-E7YTZNPT-DLV4WPwc.js.br +0 -0
- package/dist/client/assets/pieDiagram-E7YTZNPT-DLV4WPwc.js.gz +0 -0
- package/dist/client/assets/quadrantDiagram-AXDQQJYC-BN7Zpsb9.js.br +0 -0
- package/dist/client/assets/quadrantDiagram-AXDQQJYC-BN7Zpsb9.js.gz +0 -0
- package/dist/client/assets/railroadDiagram-O6MQD6OU-DfHX6MUm.js.br +0 -0
- package/dist/client/assets/railroadDiagram-O6MQD6OU-DfHX6MUm.js.gz +0 -0
- package/dist/client/assets/requirementDiagram-BXWQKSXE-tQVSFg_k.js.br +0 -0
- package/dist/client/assets/requirementDiagram-BXWQKSXE-tQVSFg_k.js.gz +0 -0
- package/dist/client/assets/sankeyDiagram-P5KCCOFB-C7JW1-Wh.js.br +0 -0
- package/dist/client/assets/sankeyDiagram-P5KCCOFB-C7JW1-Wh.js.gz +0 -0
- package/dist/client/assets/sequenceDiagram-WJ2MYXX4-BVeDiFDI.js.br +0 -0
- package/dist/client/assets/sequenceDiagram-WJ2MYXX4-BVeDiFDI.js.gz +0 -0
- package/dist/client/assets/sizeCapture-INFHLROL-CBRaCpeP.js.br +0 -0
- package/dist/client/assets/sizeCapture-INFHLROL-CBRaCpeP.js.gz +0 -0
- package/dist/client/assets/sparkles-D0cwIvB0.js +0 -1
- package/dist/client/assets/stateDiagram-D77RDMKH-CiLpGRuf.js.br +0 -0
- package/dist/client/assets/stateDiagram-D77RDMKH-CiLpGRuf.js.gz +0 -0
- package/dist/client/assets/stateDiagram-v2-MP3YSRHH-BRbS0rv2.js +0 -1
- package/dist/client/assets/swimlanes-42K2YHIH-BkzVtkVY.js.br +0 -0
- package/dist/client/assets/swimlanes-42K2YHIH-BkzVtkVY.js.gz +0 -0
- package/dist/client/assets/swimlanesDiagram-VR7AAH4N-CeWFezkt.js +0 -8
- package/dist/client/assets/timeline-definition-24CTP7MA-DKyfGITP.js.br +0 -0
- package/dist/client/assets/timeline-definition-24CTP7MA-DKyfGITP.js.gz +0 -0
- package/dist/client/assets/vennDiagram-4TSXK5OY-CRgkkrgx.js.br +0 -0
- package/dist/client/assets/vennDiagram-4TSXK5OY-CRgkkrgx.js.gz +0 -0
- package/dist/client/assets/wardleyDiagram-VM6X3IG4-Cr7yS4CZ.js.br +0 -0
- package/dist/client/assets/wardleyDiagram-VM6X3IG4-Cr7yS4CZ.js.gz +0 -0
- package/dist/client/assets/xychartDiagram-S5SC5T6Z-DkPYl6E0.js.br +0 -0
- package/dist/client/assets/xychartDiagram-S5SC5T6Z-DkPYl6E0.js.gz +0 -0
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{I as K,bF as ce,aD as s,d as le}from"./app-D6KzR8B3.js";import{b as D}from"./dnd-BCFAPC0L.js";import{S as de}from"./sparkles-BaGaevME.js";import{L as me,T as he,C as xe}from"./triangle-alert-BCQO9Ap9.js";const ue=[["path",{d:"m15 18-6-6 6-6",key:"1wnfg3"}]],fe=K("chevron-left",ue);const pe=[["path",{d:"M15 6a9 9 0 0 0-9 9V3",key:"1cii5b"}],["circle",{cx:"18",cy:"6",r:"3",key:"1h7g24"}],["circle",{cx:"6",cy:"18",r:"3",key:"fqmcym"}]],ye=K("git-branch",pe);const ge=[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"m21 3-7 7",key:"1l2asr"}],["path",{d:"m3 21 7-7",key:"tjx5ai"}],["path",{d:"M9 21H3v-6",key:"wtvkvv"}]],be=K("maximize-2",ge);const ke=[["path",{d:"m14 10 7-7",key:"oa77jy"}],["path",{d:"M20 10h-6V4",key:"mjg0md"}],["path",{d:"m3 21 7-7",key:"tjx5ai"}],["path",{d:"M4 14h6v6",key:"rmj7iw"}]],ve=K("minimize-2",ke);function Ne(t,d){return(d?t.filter(o=>o.repoRoot===d):t).slice().sort((o,r)=>r.injectedAt-o.injectedAt)[0]??null}function we(t){switch(t){case"entry":case"source":return"bg-sky-400";case"ui":return"bg-fuchsia-400";case"risk":return"bg-destructive";case"test":return"bg-emerald-400";default:return"bg-primary"}}function je(t){if(!t)return;const d=typeof t.sectionIndex=="number"?` section ${t.sectionIndex+1}`:"",i=typeof t.hunkIndex=="number"?` hunk ${t.hunkIndex+1}`:"";return`${t.filePath}${i}${d}`}function Q({anchor:t,children:d,onNavigate:i,className:o,style:r,elementRef:g,onActivate:l}){return!t&&!l?s.jsx("span",{ref:g,className:o,style:r,children:d}):s.jsx("button",{ref:g,type:"button",onClick:()=>{l?.(),t&&i(t)},title:je(t),className:`${o} text-left transition hover:border-primary/35 hover:bg-primary/15 active:scale-[0.99]`,style:r,children:d})}const R=190,U=92,J=132,Me=28,C=16,ee=18,X=54,te=24,ae=18,Ee=8,z=24,B=["rgb(var(--primary-rgb))","rgb(var(--accent-rgb))","rgb(var(--warning-rgb))","rgb(var(--success-rgb))","rgb(192 132 252)"];function ne(t){return B[t%B.length]}function _e(t,d){return`${t.from}->${t.to}:${d}`}function $e(t,d,i){const o=Math.max(d.get(t)?.length??0,i.get(t)?.length??0);return Math.max(U,36+Math.max(0,o-1)*ae)}function se(t,d,i){if(i<=1)return t.y+t.height/2;const o=Math.max(0,t.height-36),r=Math.min(o,(i-1)*ae);return t.y+t.height/2-r/2+r/(i-1)*d}function oe(t,d,i){return t.slice().sort((o,r)=>{const g=d[o],l=d[r],a=i==="from"?g.toNode:g.fromNode,h=i==="from"?l.toNode:l.fromNode;return a.y-h.y||a.index-h.index||g.index-l.index})}function De(t,d){const i=new Map;for(const o of t){if(Math.abs(o.toNode.layer-o.fromNode.layer)!==1)continue;const r=`${o.fromNode.layer}:${o.toNode.layer}`,g=i.get(r)??[];g.push(o),i.set(r,g)}for(const o of i.values()){o.sort((h,u)=>(h.fromY+h.toY)/2-(u.fromY+u.toY)/2||h.index-u.index);const r=[];o.forEach((h,u)=>{const N=(h.fromY+h.toY)/2,M=Math.max(z,d[h.key]??0)/2;if(u===0){r.push(N);return}const w=o[u-1],E=Math.max(z,d[w.key]??0)/2;r.push(Math.max(N,r[u-1]+E+M+Ee))});const g=r.reduce((h,u,N)=>h+u-(o[N].fromY+o[N].toY)/2,0)/Math.max(1,r.length),l=Math.min(...r.map((h,u)=>h-g-Math.max(z,d[o[u].key]??0)/2)),a=Math.max(0,C-l);o.forEach((h,u)=>{h.laneY=r[u]-g+a})}}function Ie(t,d,i={},o={}){const r=new Map(t.map((n,m)=>[n.id,{node:n,index:m}])),g=d.filter(n=>r.has(n.from)&&r.has(n.to)),l=new Map,a=new Map;for(const n of t)l.set(n.id,[]),a.set(n.id,[]);for(const n of g)l.get(n.to)?.push(n.from),a.get(n.from)?.push(n.to);const h=new Map,u=new Set,N=n=>{const m=h.get(n);if(m!==void 0)return m;if(u.has(n))return 0;u.add(n);const c=l.get(n)??[],x=c.length===0?0:Math.max(...c.map(N))+1;return u.delete(n),h.set(n,x),x};for(const n of t)N(n.id);const M=new Map;for(const n of t){const m=h.get(n.id)??0,c=M.get(m)??[],x=r.get(n.id);x&&c.push(x),M.set(m,c)}const w=[];for(const[n,m]of M.entries()){m.sort((x,f)=>x.index-f.index);let c=C+X;m.forEach(({node:x,index:f},j)=>{const I=Math.max($e(x.id,l,a),Math.ceil(i[x.id]??U));w.push({node:x,index:f,layer:n,row:j,x:C+n*(R+J),y:c,height:I}),c+=I+Me})}const E=new Map(w.map(n=>[n.node.id,n])),v=g.flatMap((n,m)=>{const c=E.get(n.from),x=E.get(n.to);return!c||!x?[]:[{...n,key:_e(n,m),index:m,fromNode:c,toNode:x,routeIndex:m,fromPortIndex:0,toPortIndex:0,fromY:c.y+c.height/2,toY:x.y+x.height/2,laneY:(c.y+c.height/2+x.y+x.height/2)/2}]}),_=new Map,G=new Map;v.forEach((n,m)=>{_.set(n.from,[..._.get(n.from)??[],m]),G.set(n.to,[...G.get(n.to)??[],m])});for(const[n,m]of _){const c=oe(m,v,"from");c.forEach((x,f)=>{const j=v[x];j.fromPortIndex=f,j.fromY=se(E.get(n),f,c.length)})}for(const[n,m]of G){const c=oe(m,v,"to");c.forEach((x,f)=>{const j=v[x];j.toPortIndex=f,j.toY=se(E.get(n),f,c.length)})}De(v,o);let Y=0;v.forEach(n=>{const m=Math.min(n.fromNode.layer,n.toNode.layer),c=Math.max(n.fromNode.layer,n.toNode.layer);if(c-m<=1)return;const f=Y;Y+=1,n.routeIndex=f;const j=w.filter(A=>A.layer>=m&&A.layer<=c),I=Math.min(...j.map(A=>A.y))-te-(Math.floor(f/2)+1)*ee,S=Math.max(...j.map(A=>A.y+A.height))+te+(Math.floor(f/2)+1)*ee;n.laneY=f%2===0?Math.max(C,I):S});const O=Math.max(0,...w.map(n=>n.layer)),W=Math.max(C+X+U,...w.map(n=>n.y+n.height),...v.map(n=>n.laneY+Math.max(z,o[n.key]??0)/2));return{nodes:w,edges:v,width:C*2+(O+1)*R+O*J,height:W+C+X}}function re(t,d=12){const i=t[0];if(!i)return"";const o=[`M ${i.x} ${i.y}`];for(let r=1;r<t.length;r+=1){const g=t[r-1],l=t[r],a=t[r+1];if(!a){o.push(`L ${l.x} ${l.y}`);continue}const h=l.x-g.x,u=l.y-g.y,N=a.x-l.x,M=a.y-l.y,w=Math.abs(h)+Math.abs(u),E=Math.abs(N)+Math.abs(M);if(w===0||E===0||h&&N||u&&M){o.push(`L ${l.x} ${l.y}`);continue}const v=Math.min(d,w/2,E/2),_={x:l.x-Math.sign(h)*v,y:l.y-Math.sign(u)*v},G={x:l.x+Math.sign(N)*v,y:l.y+Math.sign(M)*v};o.push(`L ${_.x} ${_.y}`),o.push(`Q ${l.x} ${l.y} ${G.x} ${G.y}`)}return o.join(" ")}function Ae(t){const d=t.fromNode.x+R+8,i=t.fromY,o=t.toNode.x-8,r=t.toY,g=Math.abs(t.toNode.layer-t.fromNode.layer),l=d+22+t.fromPortIndex*5,a=o-22-t.toPortIndex*5;return g<=1?re([{x:d,y:i},{x:l,y:i},{x:l,y:t.laneY},{x:a,y:t.laneY},{x:a,y:r},{x:o,y:r}]):re([{x:d,y:i},{x:l,y:i},{x:l,y:t.laneY},{x:a,y:t.laneY},{x:a,y:r},{x:o,y:r}])}function Ge(t){const d=t.fromNode.x+R+8,i=t.toNode.x-8,o=Math.abs(t.toNode.layer-t.fromNode.layer),r=Math.max(34,Math.abs(i-d));return o<=1?{x:(d+i)/2,y:t.laneY,maxWidth:Math.max(72,Math.min(108,r-34))}:{x:(d+i)/2,y:t.laneY,maxWidth:Math.max(84,Math.min(120,r*.3))}}function He({walkthroughs:t,repoRoot:d,onNavigate:i,fullscreen:o=!1,onToggleFullscreen:r}){const{t:g}=ce(),l=D.useId(),a=Ne(t,d),h=D.useRef(new Map),u=D.useRef(new Map),[N,M]=D.useState({}),[w,E]=D.useState({}),[v,_]=D.useState(null),[G,Y]=D.useState(null),[O,W]=D.useState(null),[n,m]=D.useState(null),c=D.useMemo(()=>a?Ie(a.nodes,a.edges,N,w):null,[N,w,a]);if(D.useLayoutEffect(()=>{if(!a)return;const e={};for(const p of a.nodes){const b=h.current.get(p.id);b&&(e[p.id]=b.offsetHeight)}M(p=>{const b=Object.keys(p),$=Object.keys(e);return b.length===$.length&&$.every(k=>p[k]===e[k])?p:e});const y={};for(const[p,b]of u.current)y[p]=b.offsetHeight;E(p=>{const b=Object.keys(p),$=Object.keys(y);return b.length===$.length&&$.every(k=>p[k]===y[k])?p:y})},[a]),!a||!c)return null;const x=`walkthrough-arrow-${l.replace(/[^a-zA-Z0-9_-]/g,"")||"default"}`,f=O??n,j=f?null:v??G,I=c.edges.some(e=>e.key===j)?j:null,S=c.edges.find(e=>e.key===I),A=f?c.edges.filter(e=>e.from===f||e.to===f):[],F=f?new Set(A.map(e=>e.key)):null,V=f?new Set([f,...A.flatMap(e=>[e.from,e.to])]):S?new Set([S.from,S.to]):null,T=new Map(a.sections.filter(e=>e.nodeId&&e.anchor).map(e=>[e.nodeId,e.anchor])),L=a.nodes.filter(e=>e.anchor??T.get(e.id)),H=L.findIndex(e=>e.id===n),q=e=>{if(L.length===0)return;const y=H<0?e<0?L.length-1:0:Math.min(L.length-1,Math.max(0,H+e)),p=L[y],b=p.anchor??T.get(p.id);b&&(m(p.id),Y(null),i(b))};return s.jsxs("section",{className:"mb-2 px-0 py-0",children:[s.jsxs("div",{className:"flex min-w-0 items-center gap-2",children:[s.jsx("span",{className:"flex h-7 w-7 shrink-0 items-center justify-center rounded-md bg-primary/12 text-primary",children:s.jsx(de,{size:14})}),s.jsxs("div",{className:"min-w-0 flex-1",children:[s.jsx("div",{className:"whitespace-normal break-words text-[12px] font-semibold leading-snug text-foreground",children:a.title}),a.summary&&s.jsx("div",{className:"mt-0.5 text-[10px] leading-snug text-muted-foreground",children:a.summary})]}),s.jsxs("div",{className:"flex shrink-0 items-center gap-1",children:[o&&L.length>0&&s.jsxs(s.Fragment,{children:[s.jsx("button",{type:"button",onClick:()=>q(-1),disabled:H===0,className:"inline-flex h-8 w-8 items-center justify-center rounded-md text-muted-foreground transition hover:bg-surface-2 hover:text-foreground active:scale-95 disabled:pointer-events-none disabled:opacity-30",title:"Previous change","aria-label":"Previous change",children:s.jsx(fe,{size:15})}),s.jsxs("span",{className:"min-w-8 text-center text-[10px] tabular-nums text-muted-foreground",children:[H<0?"—":H+1,"/",L.length]}),s.jsx("button",{type:"button",onClick:()=>q(1),disabled:H===L.length-1,className:"inline-flex h-8 w-8 items-center justify-center rounded-md text-muted-foreground transition hover:bg-surface-2 hover:text-foreground active:scale-95 disabled:pointer-events-none disabled:opacity-30",title:"Next change","aria-label":"Next change",children:s.jsx(le,{size:15})})]}),r&&s.jsx("button",{type:"button",onClick:r,className:"inline-flex h-8 w-8 items-center justify-center rounded-md text-muted-foreground transition hover:bg-surface-2 hover:text-foreground active:scale-95",title:o?"Exit full-screen DAG review":"Review from DAG in full screen","aria-label":o?"Exit full-screen DAG review":"Review from DAG in full screen",children:o?s.jsx(ve,{size:15}):s.jsx(be,{size:15})})]})]}),a.highlights.length>0&&s.jsx("div",{className:"mt-2 grid gap-1.5",children:a.highlights.slice(0,4).map((e,y)=>s.jsxs("div",{className:"rounded-md bg-surface-2 px-2 py-1.5",children:[s.jsxs("div",{className:"flex min-w-0 items-center gap-1.5",children:[e.tag&&s.jsx("span",{className:"shrink-0 rounded bg-surface-elevated px-1.5 py-0.5 text-[9px] font-semibold text-primary",children:e.tag}),s.jsx("span",{className:"min-w-0 flex-1 whitespace-normal break-words text-[11px] font-semibold leading-snug text-foreground",children:e.what})]}),s.jsx("div",{className:"mt-0.5 text-[10px] leading-snug text-muted-foreground",children:e.effect})]},`${e.what}-${y}`))}),a.nodes.length>0&&s.jsxs("div",{className:"mt-2",children:[s.jsxs("div",{className:"mb-1 flex items-center justify-between gap-2 text-[10px] text-muted-foreground",children:[s.jsxs("div",{className:"flex items-center gap-1.5 font-semibold uppercase tracking-[0.12em]",children:[s.jsx(ye,{size:11}),"DAG"]}),a.edges.some(e=>e.label?.trim())&&s.jsx("span",{className:"normal-case tracking-normal",children:g("diffViewer.focusPathHint")})]}),s.jsx("div",{className:"overflow-x-auto rounded-md border border-border/15 bg-surface-2 p-1.5",onWheel:e=>e.stopPropagation(),children:s.jsxs("div",{className:"relative",style:{width:c.width,height:c.height},children:[s.jsxs("svg",{className:"absolute inset-0",width:c.width,height:c.height,"aria-hidden":"true",children:[s.jsx("defs",{children:B.map((e,y)=>s.jsx("marker",{id:`${x}-${y}`,viewBox:"0 0 10 10",refX:"8.5",refY:"5",markerWidth:"5",markerHeight:"5",orient:"auto",markerUnits:"strokeWidth",children:s.jsx("path",{d:"M0,0 L10,5 L0,10 Z",fill:e})},e))}),c.edges.map(e=>{const y=Ae(e),p=ne(e.index),b=I===e.key||!!F?.has(e.key),$=!!((I||f)&&!b);return s.jsxs("g",{className:"transition-opacity duration-150",style:{opacity:$?.3:1},children:[s.jsx("path",{className:"pointer-events-none",d:y,fill:"none",stroke:"var(--surface-2)",strokeWidth:b?7:5,strokeLinecap:"round"}),s.jsx("path",{className:"pointer-events-none transition-[stroke-width,opacity] duration-150",d:y,fill:"none",stroke:p,strokeWidth:b?3:1.8,strokeLinecap:"round",markerEnd:`url(#${x}-${e.index%B.length})`}),s.jsx("path",{"data-dag-edge":e.key,d:y,fill:"none",stroke:"transparent",strokeWidth:"14",className:"cursor-pointer",onPointerEnter:()=>_(e.key),onPointerLeave:()=>_(k=>k===e.key?null:k),onClick:()=>{m(null),Y(k=>k===e.key?null:e.key)}}),s.jsx("circle",{className:"pointer-events-none",cx:e.fromNode.x+R+8,cy:e.fromY,r:b?4:3,fill:p,stroke:"var(--surface-2)",strokeWidth:"2"}),s.jsx("circle",{className:"pointer-events-none",cx:e.toNode.x-8,cy:e.toY,r:b?4:3,fill:p,stroke:"var(--surface-2)",strokeWidth:"2"})]},e.key)})]}),c.edges.map(e=>{const y=e.label?.trim();if(!y)return null;const{x:p,y:b,maxWidth:$}=Ge(e),k=ne(e.index),Z=I===e.key||!!F?.has(e.key),ie=!!((I||f)&&!Z);return s.jsxs("button",{ref:P=>{P?u.current.set(e.key,P):u.current.delete(e.key)},type:"button","data-dag-edge-label":e.key,className:"absolute -translate-x-1/2 -translate-y-1/2 whitespace-normal break-words rounded-md border bg-surface-elevated px-1.5 py-1 text-center text-[9px] leading-[11px] shadow-sm transition-[opacity,box-shadow,transform] duration-150 [overflow-wrap:anywhere] hover:shadow-md focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/60",style:{left:p,top:b,maxWidth:$,width:"max-content",borderColor:k,color:k,opacity:ie?.38:1,boxShadow:Z?`0 0 0 2px ${k}, 0 6px 18px rgb(0 0 0 / 0.24)`:void 0},title:`${e.fromNode.index+1} ${e.fromNode.node.title} → ${e.toNode.index+1} ${e.toNode.node.title}${e.desc?`
|
|
2
|
+
${e.desc}`:""}`,"aria-pressed":G===e.key,onPointerEnter:()=>_(e.key),onPointerLeave:()=>_(P=>P===e.key?null:P),onClick:()=>{m(null),Y(P=>P===e.key?null:e.key)},children:[s.jsxs("span",{className:"block font-bold tabular-nums",children:[e.fromNode.index+1," → ",e.toNode.index+1]}),s.jsx("span",{className:"block text-muted-foreground",children:y})]},`${e.key}-label`)}),c.nodes.map(({node:e,index:y,x:p,y:b,height:$})=>s.jsxs(Q,{elementRef:k=>{k?h.current.set(e.id,k):h.current.delete(e.id)},anchor:e.anchor??T.get(e.id),onActivate:()=>{m(e.id),Y(null)},onNavigate:i,className:`absolute overflow-hidden rounded-lg border bg-surface/95 px-2.5 py-2 text-foreground shadow-[0_10px_24px_rgba(0,0,0,0.18)] transition-[opacity,border-color,box-shadow] duration-150 ${V?.has(e.id)?"border-primary/60 shadow-[0_0_0_1px_rgb(var(--primary-rgb)/0.28),0_10px_24px_rgba(0,0,0,0.22)]":V?"border-border/15 opacity-40":"border-border/25"}`,style:{left:p,top:b,width:R,minHeight:$},children:[s.jsx("span",{className:"absolute inset-0",onPointerEnter:()=>W(e.id),onPointerLeave:()=>W(k=>k===e.id?null:k)}),s.jsx("span",{className:`pointer-events-none absolute bottom-2 left-0 top-2 w-[3px] rounded-r-full ${we(e.kind)}`}),s.jsxs("div",{className:"pointer-events-none relative flex min-w-0 items-center gap-1.5",children:[s.jsx("span",{className:"flex h-4 w-4 shrink-0 items-center justify-center rounded-full bg-primary/15 text-[9px] font-bold text-primary",children:y+1}),s.jsx("span",{className:"min-w-0 flex-1 whitespace-normal break-words text-[11px] font-semibold leading-snug text-foreground",children:e.title}),e.anchor&&s.jsx(me,{size:11,className:"shrink-0 opacity-70"})]}),e.kind&&s.jsx("div",{className:"pointer-events-none relative mt-0.5 truncate text-[9px] font-semibold uppercase tracking-[0.08em] text-muted-foreground/80",children:e.kind}),s.jsx("div",{className:"pointer-events-none relative mt-0.5 whitespace-normal break-words text-[10px] leading-snug text-muted-foreground",children:e.business})]},e.id))]})})]}),(a.risks.length>0||a.checks.length>0)&&s.jsxs("div",{className:"mt-2 grid gap-1.5",children:[a.risks.slice(0,3).map((e,y)=>s.jsxs(Q,{anchor:e.anchor,onNavigate:i,className:"flex w-full items-start gap-1.5 rounded-md border border-[rgb(var(--warning-rgb)_/_0.25)] bg-[rgb(var(--warning-rgb)_/_0.10)] px-2 py-1.5 text-[10px] text-muted-foreground",children:[s.jsx(he,{size:12,className:"mt-0.5 shrink-0 text-[color:var(--warning)]"}),s.jsx("span",{className:"min-w-0 whitespace-normal break-words leading-snug",children:e.title})]},`${e.title}-${y}`)),a.checks.slice(0,3).map((e,y)=>s.jsxs("div",{className:"flex items-start gap-1.5 rounded-md bg-surface-2 px-2 py-1.5 text-[10px] text-muted-foreground",children:[s.jsx(xe,{size:12,className:"mt-0.5 shrink-0 text-primary"}),s.jsx("span",{className:"min-w-0 whitespace-normal break-words leading-snug",children:e})]},`${e}-${y}`))]})]})}export{He as C,ye as G,be as M,ve as a};
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{aD as t}from"./app-D6KzR8B3.js";import{C as s}from"./ChangeWalkthroughPanel-DeVtCf73.js";import"./react-XDCjal2T.js";import"./dnd-BCFAPC0L.js";import"./terminal-C7X98Amf.js";import"./sparkles-BaGaevME.js";import"./triangle-alert-BCQO9Ap9.js";const e="/tmp/termdock-dag-playground",i={version:1,id:"dag-playground",repoRoot:e,workspaceRoot:e,title:"改动解释升级为可点击导览",summary:"这是一页免登录 playground,用真实 ChangeWalkthroughPanel 调 DAG 的节点、边、label 和密度。",generatedBy:"dag-playground",injectedAt:Date.now(),highlights:[{what:"先看总览,再看链路",effect:"读者不用先进入 diff,也能理解整批改动目的。",tag:"理解"},{what:"多条链路直接画出来",effect:"分支、汇合、验证路径不再靠 next 文本猜。",tag:"链路"},{what:"点击节点跳回证据",effect:"导览和真实 diff 之间形成闭环。",tag:"导航"}],nodes:[{id:"export",title:"导出 section 级 diff",kind:"source",business:"CLI 把 hunk 拆成多个连续改动 section,并为每个 section 生成稳定 fingerprint。这里故意写长一点,用来验证 DAG 节点是否会按照真实文本高度撑开,而不是被固定高度裁掉。",anchor:{repoRoot:e,filePath:"src/server/cli.ts",hunkIndex:0,sectionIndex:0}},{id:"prompt",title:"约束 AI 输出",kind:"process",business:"提示词要求先写总览,再逐 section 生成解释。",anchor:{repoRoot:e,filePath:"src/lib/components/sidebar/RightSidebar.tsx",hunkIndex:0}},{id:"schema",title:"校验导览结构",kind:"process",business:"检查节点、边和锚点字段是否完整。",anchor:{repoRoot:e,filePath:"src/server/utils/changeAuditStore.ts",hunkIndex:0}},{id:"fallback",title:"补齐兼容字段",kind:"process",business:"旧版结果缺字段时生成稳定回退值。",anchor:{repoRoot:e,filePath:"src/server/utils/changeAuditStore.ts",hunkIndex:1}},{id:"store",title:"保存整批导览结构",kind:"process",business:"服务端把 walkthrough 作为一等数据持久化。",anchor:{repoRoot:e,filePath:"src/server/utils/changeAuditStore.ts",hunkIndex:0}},{id:"api",title:"前端读取总览",kind:"api",business:"一次请求拿到 records 和 walkthroughs。",anchor:{repoRoot:e,filePath:"src/lib/terminal/api.ts",hunkIndex:0}},{id:"panel",title:"渲染 DAG 导览",kind:"ui",business:"用节点和边表达实现链路,节点可点击。节点内容可能是一两句话,也可能包含较长的业务解释;布局需要先测量 DOM 高度,再重新计算每一行节点的 y 坐标和连线端点。",anchor:{repoRoot:e,filePath:"src/lib/components/sidebar/ChangeWalkthroughPanel.tsx",hunkIndex:0}},{id:"jump",title:"跳回真实 diff",kind:"ui",business:"点击节点后定位到文件、hunk 或 section。",anchor:{repoRoot:e,filePath:"src/lib/components/sidebar/RightSidebar.tsx",hunkIndex:1}},{id:"section",title:"贴近改动展示解释",kind:"ui",business:"section 解释跟在对应 diff 块后面,而不是堆在 hunk 顶部。这个节点也故意写得更长,用来观察右侧分支和下方验证节点的连线是否会避让变高后的卡片。",anchor:{repoRoot:e,filePath:"src/lib/components/sidebar/DiffViewer.tsx",hunkIndex:0,sectionIndex:1}},{id:"verify",title:"验证导出和注入",kind:"test",business:"跑 lint、install、health、资源检查和注入自测。"}],edges:[{from:"export",to:"prompt",label:"提供输入",desc:"sectionFingerprint 让 AI 可以稳定引用。"},{from:"export",to:"schema",label:"结构校验",desc:"先确认输入可以稳定落库。"},{from:"export",to:"fallback",label:"兼容旧数据",desc:"为历史记录补齐必要字段。"},{from:"prompt",to:"store",label:"注入",desc:"AI payload 写回本地服务。"},{from:"schema",to:"store",label:"通过后保存",desc:"合法结构进入存储层。"},{from:"fallback",to:"store",label:"归一化后保存",desc:"兼容数据与新数据走同一链路。"},{from:"store",to:"api",label:"读取",desc:"浏览器从服务端拿到导览。"},{from:"api",to:"panel",label:"渲染",desc:"结构化数据变成导览图。"},{from:"panel",to:"jump",label:"点击",desc:"节点驱动 diff 定位。"},{from:"jump",to:"section",label:"定位",desc:"落到对应 section 解释。"},{from:"export",to:"verify",label:"验证",desc:"导出结构要覆盖 tracked/untracked。"},{from:"section",to:"verify",label:"回归",desc:"确认展示位置和交互。"}],sections:[],risks:[{title:"边和 label 不能遮住节点主体。"},{title:"窄侧栏下横向滚动要可控。"}],checks:["在 360px、560px、900px 宽度下截图检查。","确认边的箭头、label 背板和节点层级清楚。","确认节点点击区域和 hover 状态可感知。"]};function p(){return t.jsx("div",{className:"min-h-screen bg-background p-5 text-foreground","data-dag-playground":!0,children:t.jsxs("div",{className:"mx-auto max-w-[72rem]",children:[t.jsxs("div",{className:"mb-3",children:[t.jsx("h1",{className:"text-sm font-semibold",children:"DAG Playground"}),t.jsx("p",{className:"mt-1 text-xs text-muted-foreground",children:"Auth-free playground for tuning the real ChangeWalkthroughPanel."})]}),t.jsxs("div",{className:"grid gap-4 lg:grid-cols-[360px_minmax(0,1fr)]",children:[t.jsx("div",{className:"min-w-0",children:t.jsx(s,{walkthroughs:[i],repoRoot:e,onNavigate:o=>{console.info("[DagPlayground] navigate",o)}})}),t.jsx("div",{className:"min-w-0",children:t.jsx(s,{walkthroughs:[i],repoRoot:e,onNavigate:o=>{console.info("[DagPlayground] navigate",o)}})})]})]})})}export{p as DagPlayground};
|
|
Binary file
|
|
Binary file
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{aD as t}from"./app-D6KzR8B3.js";import{b as a}from"./dnd-BCFAPC0L.js";import{c as k,S as C,D as _}from"./DiffViewer-BomvZ4kq.js";import"./react-XDCjal2T.js";import"./terminal-C7X98Amf.js";import"./referenceLongPress-B3NGIjvv.js";const u={kotlin:{label:"Kotlin function signature + callback",path:"SearchHintIconHelper.kt",diff:`diff --git a/SearchHintIconHelper.kt b/SearchHintIconHelper.kt
|
|
2
2
|
--- a/SearchHintIconHelper.kt
|
|
3
3
|
+++ b/SearchHintIconHelper.kt
|
|
4
4
|
@@ -43,15 +43,20 @@ object SearchHintIconHelper {
|
|
@@ -367,4 +367,4 @@ new file mode 100644
|
|
|
367
367
|
+++ b/Second.ts
|
|
368
368
|
@@ -0,0 +1,2 @@
|
|
369
369
|
+export const second = true;
|
|
370
|
-
+announce(second);`}};function h(){if(typeof window>"u")return"kotlin";const o=new URLSearchParams(window.location.search).get("fixture");return o&&o in u?o:"kotlin"}function b(){return typeof window>"u"?"unified":new URLSearchParams(window.location.search).get("view")==="split"?"split":"unified"}function x(){if(typeof window>"u")return"words";const i=new URLSearchParams(window.location.search).get("inline");return i==="none"||i==="chars"||i==="words"?i:"words"}function w(){return typeof window>"u"?!0:new URLSearchParams(window.location.search).get("wrap")!=="off"}function
|
|
370
|
+
+announce(second);`}};function h(){if(typeof window>"u")return"kotlin";const o=new URLSearchParams(window.location.search).get("fixture");return o&&o in u?o:"kotlin"}function b(){return typeof window>"u"?"unified":new URLSearchParams(window.location.search).get("view")==="split"?"split":"unified"}function x(){if(typeof window>"u")return"words";const i=new URLSearchParams(window.location.search).get("inline");return i==="none"||i==="chars"||i==="words"?i:"words"}function w(){return typeof window>"u"?!0:new URLSearchParams(window.location.search).get("wrap")!=="off"}function D(){const[i,o]=a.useState(()=>h()),[d,c]=a.useState(()=>b()),[p,v]=a.useState(()=>k()),[f,m]=a.useState(()=>x()),[s,g]=a.useState(()=>w()),l=u[i],S=a.useMemo(()=>Object.entries(u),[]),r=d==="split"&&!p?"unified":d;return a.useEffect(()=>{if(typeof window>"u"||typeof window.matchMedia!="function")return;const e=window.matchMedia(C),n=()=>v(e.matches);return n(),e.addEventListener?.("change",n),()=>e.removeEventListener?.("change",n)},[]),a.useEffect(()=>{if(typeof window>"u")return;let e=window.location.search;const n=()=>{window.location.search!==e&&(e=window.location.search,o(h()),c(b()),m(x()),g(w()))};window.addEventListener("popstate",n),window.addEventListener("pageshow",n),window.addEventListener("focus",n);const y=window.setInterval(n,250);return()=>{window.removeEventListener("popstate",n),window.removeEventListener("pageshow",n),window.removeEventListener("focus",n),window.clearInterval(y)}},[]),t.jsx("div",{className:"min-h-screen bg-background-subtle text-foreground","data-diff-lab":!0,"data-diff-lab-fixture":i,"data-diff-lab-view":r,"data-diff-lab-requested-view":d,"data-diff-lab-inline":f,"data-diff-lab-wrap":s?"on":"off",children:t.jsxs("div",{className:"mx-auto flex min-h-screen max-w-[1180px] flex-col px-4 py-4",children:[t.jsxs("header",{className:"mb-3 flex flex-wrap items-center justify-between gap-3 border-b border-border/20 pb-3",children:[t.jsxs("div",{children:[t.jsx("div",{className:"text-sm font-semibold",children:"Diff Lab"}),t.jsx("div",{className:"mt-0.5 text-[11px] text-muted-foreground",children:"Fixed fixtures for iterating diff rendering without app auth, PWA state, or live Git data."})]}),t.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[t.jsx("select",{value:i,onChange:e=>o(e.target.value),"aria-label":"Fixture",className:"h-8 rounded-md border border-border/30 bg-surface px-2 text-xs text-foreground outline-none",children:S.map(([e,n])=>t.jsx("option",{value:e,children:n.label},e))}),t.jsxs("div",{className:"inline-flex h-8 overflow-hidden rounded-full bg-surface-2 p-0.5",children:[t.jsx("button",{type:"button",onClick:()=>c("unified"),"aria-pressed":r==="unified",className:`rounded-full px-3 text-xs font-semibold ${r==="unified"?"bg-surface-elevated text-foreground":"text-muted-foreground"}`,children:"Unified"}),t.jsx("button",{type:"button",onClick:()=>c("split"),disabled:!p,"aria-pressed":r==="split",className:`rounded-full px-3 text-xs font-semibold ${r==="split"?"bg-surface-elevated text-foreground":"text-muted-foreground"} disabled:cursor-not-allowed disabled:opacity-40`,children:"Split"})]}),t.jsx("div",{className:"inline-flex h-8 overflow-hidden rounded-full bg-surface-2 p-0.5",children:["none","words","chars"].map(e=>t.jsx("button",{type:"button",onClick:()=>m(e),className:`rounded-full px-3 text-xs font-semibold ${f===e?"bg-surface-elevated text-foreground":"text-muted-foreground"}`,children:e},e))}),t.jsxs("button",{type:"button",onClick:()=>g(e=>!e),className:`h-8 rounded-full px-3 text-xs font-semibold ${s?"bg-primary/15 text-primary":"bg-surface-2 text-muted-foreground"}`,children:["Wrap ",s?"on":"off"]})]})]}),t.jsx("main",{className:"min-h-0 flex-1 overflow-auto rounded-lg border border-border/20 bg-surface",children:t.jsx(_,{filePath:l.path,repoRoot:"/tmp/termdock-diff-lab",changedFile:{path:l.path,absolutePath:`/tmp/termdock-diff-lab/${l.path}`,repoRoot:"/tmp/termdock-diff-lab",status:"modified",staged:!1,unstaged:!0,untracked:!1,tracked:!0,canStage:!1,canUnstage:!1,canStash:!1,canRestoreWorktree:!1},diffOverride:l.diff,oldSourceOverride:l.oldSource,active:!0,wrap:s,showScrollHint:!s,viewType:r,inlineMode:f})})]})})}export{u as DIFF_FIXTURES,D as DiffLab};
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{I as et,aD as r,d as mt,c as pt,bF as xt,a as gt,X as vt}from"./app-D6KzR8B3.js";import{b as c,r as tt}from"./dnd-BCFAPC0L.js";import{h as rt,F as yt,b as bt,c as Ke}from"./gestureArbiter-D1SNS_gK.js";import{g as wt,f as kt,w as Rt,r as jt,e as Nt}from"./referenceLongPress-B3NGIjvv.js";import{S as nt}from"./sparkles-BaGaevME.js";import{D as Dt,p as Tt,i as Mt}from"./DiffViewer-BomvZ4kq.js";const St=[["path",{d:"M8 5h13",key:"1pao27"}],["path",{d:"M13 12h8",key:"h98zly"}],["path",{d:"M13 19h8",key:"c3s6r1"}],["path",{d:"M3 10a2 2 0 0 0 2 2h3",key:"1npucw"}],["path",{d:"M3 5v12a2 2 0 0 0 2 2h3",key:"x1gjn2"}]],It=et("list-tree",St);const Et=[["path",{d:"M3 5h.01",key:"18ugdj"}],["path",{d:"M3 12h.01",key:"nlz23k"}],["path",{d:"M3 19h.01",key:"noohij"}],["path",{d:"M8 5h13",key:"1pao27"}],["path",{d:"M8 12h13",key:"1za7za"}],["path",{d:"M8 19h13",key:"m83p4d"}]],Ct=et("list",Et);function st({selected:t,depth:o=0,title:i,leading:x,children:m,trailing:a,role:b,tabIndex:v,ariaExpanded:g,onClick:f,onKeyDown:y,onPointerDown:L,onPointerUp:M,onPointerCancel:E,dataAttributes:W}){return r.jsxs("div",{role:b,tabIndex:v,"aria-expanded":g,title:i,onClick:f,onKeyDown:y,onPointerDown:L,onPointerUp:M,onPointerCancel:E,...W,className:`group flex w-full cursor-pointer items-center gap-1 rounded px-2 py-1.5 text-left text-[13px] transition active:scale-[0.99] ${t?"bg-surface-elevated text-foreground":"text-muted-foreground hover:bg-surface-2 hover:text-foreground"}`,style:{paddingLeft:`${o*14+8}px`},children:[r.jsx("span",{className:"flex min-w-[14px] shrink-0 items-center justify-center text-muted-foreground/80",children:x}),r.jsx("span",{className:"min-w-0 flex-1",children:m}),a]})}function ot(t){return t.path.replace(/^\/+/,"")}function Ft(t){if(t.displayName!==void 0||t.displayDir!==void 0)return{name:t.displayName||t.path,dir:t.displayDir||""};const o=t.path.split("/").filter(Boolean);return{name:o.pop()||t.path,dir:o.join("/")}}function ct(t,o){const i=new Map,x=(a,b,v,g)=>{const f=a.get(b);if(f)return f;const y={path:v,name:b,childCount:0,directories:[],files:[]};return a.set(b,y),g?.directories.push(y),y};for(const a of t){const b=o(a).split("/").filter(Boolean);if(b.length<=1)continue;let v=i,g=null,f="";for(const y of b.slice(0,-1)){f=f?`${f}/${y}`:y;const L=x(v,y,f,g);g=L,v=new Map(L.directories.map(M=>[M.name,M]))}g?.files.push(a)}const m=a=>{const b=a.directories.map(m).sort((g,f)=>g.name.localeCompare(f.name)),v=a.files.sort((g,f)=>g.path.localeCompare(f.path));return{...a,directories:b,files:v,childCount:b.reduce((g,f)=>g+f.childCount,0)+v.length}};return Array.from(i.values()).map(m).sort((a,b)=>a.name.localeCompare(b.name))}function He(t,o,i=0){const x=o.selectedKey===t.key||o.selectedKey===t.path||o.selectedKey===t.absolutePath,m=Ft(t);return r.jsx(st,{selected:x,role:"button",tabIndex:0,title:t.title??t.absolutePath??t.path,onClick:()=>{rt()||o.onSelectFile(t)},onKeyDown:a=>{a.key!=="Enter"&&a.key!==" "||(a.preventDefault(),o.onSelectFile(t))},leading:o.renderLeading(t),depth:i,trailing:o.renderTrailing?.(t),dataAttributes:{"data-diff-selection-path":t.key,"data-diff-file-path":t.path,"data-diff-absolute-path":t.absolutePath??"","data-diff-status":t.status},children:r.jsxs("span",{className:"select-text","data-sidebar-selectable":!0,children:[r.jsx("span",{className:`block truncate leading-snug ${x?"font-medium":""}`,children:m.name}),o.mode!=="tree"&&m.dir&&r.jsx("span",{className:"block truncate text-[10px] text-muted-foreground/75",children:m.dir}),o.renderSubtitle?.(t)]})},t.key)}function at(t,o,i,x,m){let a=t;const b=[t.name];for(;a.files.length===0&&a.directories.length===1;)a=a.directories[0],b.push(a.name);const v=b.join("/"),g=`${o}:${a.path}`,f=i.collapsedDirectoryKeys.has(g);return r.jsxs("div",{className:"space-y-px",children:[r.jsx(st,{role:"button",tabIndex:0,onClick:()=>{rt()||i.onToggleDirectory(g)},onKeyDown:y=>{y.key!=="Enter"&&y.key!==" "||(y.preventDefault(),i.onToggleDirectory(g))},ariaExpanded:!f,depth:x,title:a.path,leading:f?r.jsx(mt,{size:13}):r.jsx(pt,{size:13}),trailing:r.jsxs("span",{className:"flex shrink-0 items-center gap-1",children:[r.jsx("span",{className:"shrink-0 rounded bg-surface-2 px-1.5 py-0.5 text-[10px] text-muted-foreground/60 transition group-hover:text-muted-foreground",children:a.childCount}),i.renderDirectoryTrailing?.(a.path,m)]}),children:r.jsxs("span",{className:"flex min-w-0 items-center gap-1",children:[r.jsx(yt,{size:14,className:"shrink-0 text-[color:var(--folder)]"}),r.jsx("span",{className:"min-w-0 flex-1 truncate leading-snug select-text","data-sidebar-selectable":!0,children:v})]})}),!f&&r.jsxs("div",{className:"space-y-px",children:[a.directories.map(y=>at(y,o,i,x+1,m)),a.files.length>0&&r.jsx("div",{className:"space-y-px",children:a.files.map(y=>He(y,i,x+1))})]})]},g)}function _t(t,o){const i=o.getFileTreePath??ot,x=t.files.filter(a=>i(a).split("/").filter(Boolean).length<=1),m=ct(t.files,i);return r.jsxs("div",{className:"space-y-px",children:[m.map(a=>at(a,t.key,o,0,t)),x.length>0&&r.jsx("div",{className:"space-y-px",children:x.map(a=>He(a,o))})]})}function At(t,o=ot){const i=[],x=a=>{for(const b of a.directories)x(b);i.push(...a.files)};for(const a of ct(t,o))x(a);const m=new Set(i.map(a=>a.key));return i.push(...t.filter(a=>!m.has(a.key))),i}function Pt(t){return r.jsx("div",{className:t.mode==="tree"?"space-y-px pt-1":"space-y-2",children:t.groups.map(o=>{const i=!!o.header,x=!!o.collapsed;return r.jsxs("section",{className:i?"overflow-hidden rounded-lg border border-border/15 bg-surface/60":"",children:[o.header,!x&&r.jsx("div",{className:t.mode==="tree"?i?"space-y-px bg-surface/60 p-1":"space-y-px":i?"space-y-px bg-surface/60 p-1.5":"space-y-px",children:t.mode==="tree"?_t(o,t):o.files.map(m=>He(m,t))})]},o.key)})})}const Ee="termdock:diff-review:list-width:v1",zt=120,Le=320,qe=220,Lt=560;function Ht(t){return typeof t=="number"&&Number.isFinite(t)}function Ue(t,o){const i=Math.max(qe,o-360),x=Math.min(Lt,i);return Math.min(x,Math.max(qe,t))}function Wt(){return jt(Ee,Ht)??Le}function Bt({list:t,detail:o,mobile:i,mobileListHeader:x,mobileDetailHeader:m,desktopListHeader:a,backLabel:b,onMobileSlideChange:v,externalSwiperRef:g,desktopLayout:f="split",onDetailScroll:y,desktopSidePanel:L,desktopListClassName:M,detailOwnsScroll:E=!1}){const{t:W}=xt(),B=c.useRef(null),$=c.useRef(null),C=c.useRef(null),[V,O]=c.useState(Wt);c.useEffect(()=>{if(i||f!=="split")return;const p=$.current;p&&O(N=>Ue(N,p.clientWidth))},[f,i]);const ne=c.useCallback(p=>{i||f!=="split"||(p.preventDefault(),C.current={startX:p.clientX,startWidth:V,pointerId:p.pointerId},p.currentTarget.setPointerCapture(p.pointerId))},[f,V,i]),ie=c.useCallback(p=>{const N=C.current;if(!N||N.pointerId!==p.pointerId)return;const P=$.current?.clientWidth??window.innerWidth,D=Ue(N.startWidth+p.clientX-N.startX,P);O(D),wt(Ee,D,zt)},[]),se=c.useCallback(p=>{const N=C.current;if(!(!N||N.pointerId!==p.pointerId)){C.current=null,kt(Ee);try{p.currentTarget.releasePointerCapture(p.pointerId)}catch{}}},[]);if(i){const p=()=>{const w=B.current;w&&w.slideTo(1)},N=()=>{const w=B.current;w&&w.slideTo(0)},P=typeof t=="function"?t({slideToDetail:p}):t,D=typeof m=="function"?m({slideToList:N,slideToDetail:p}):m;return r.jsxs(bt,{className:"h-full min-h-0 w-full",slidesPerView:1,resistanceRatio:.45,noSwiping:!0,noSwipingClass:"swiper-no-swiping",noSwipingSelector:".swiper-no-swiping",allowTouchMove:!1,touchAngle:75,touchStartPreventDefault:!1,onSwiper:w=>{B.current=w,g&&(g.current=w)},onSlideChange:w=>{v?.(w.activeIndex)},children:[r.jsx(Ke,{className:"h-full min-h-0",children:r.jsxs("div",{className:"flex h-full min-h-0 flex-col overflow-hidden",children:[x&&r.jsx("div",{className:"shrink-0 border-b border-border/15 px-3 py-2",children:x}),r.jsx("div",{className:"min-h-0 flex-1 overflow-y-auto overscroll-contain",children:P})]})}),r.jsx(Ke,{className:"h-full min-h-0",children:r.jsxs("div",{className:"flex h-full min-h-0 flex-col overflow-hidden bg-surface",children:[r.jsx("div",{className:"shrink-0 border-b border-border/15 px-3 py-2",children:D??r.jsxs("button",{type:"button",onClick:N,className:"inline-flex h-9 shrink-0 items-center gap-1.5 rounded-full bg-surface-2 px-3 text-xs font-semibold text-muted-foreground transition hover:bg-surface-elevated hover:text-foreground active:scale-95",children:[r.jsx(gt,{size:14}),b]})}),r.jsx("div",{className:E?"min-h-0 flex-1 overflow-hidden":"termdock-diff-stream-scroller min-h-0 flex-1 overflow-y-auto overscroll-contain",onScroll:E?void 0:w=>y?.(w.currentTarget),children:o})]})})]})}const G=typeof t=="function"?t({slideToDetail:()=>{}}):t;return f==="stacked"?E?r.jsxs("div",{className:"termdock-native-select min-h-0 flex-1 overflow-hidden px-2 pb-[calc(env(safe-area-inset-bottom)+4.5rem)]",children:[a&&r.jsx("div",{className:"sticky top-0 z-10 border-b border-border/15 bg-surface px-2 py-2",children:a}),G,r.jsx("div",{className:"mt-3 h-[calc(100%-3rem)] min-h-0 overflow-hidden rounded-xl border border-border/15 bg-surface",children:o})]}):r.jsxs("div",{className:"termdock-native-select termdock-diff-stream-scroller min-h-0 flex-1 overflow-y-auto overscroll-contain px-2 pb-[calc(env(safe-area-inset-bottom)+4.5rem)]",onScroll:p=>y?.(p.currentTarget),children:[a&&r.jsx("div",{className:"sticky top-0 z-10 border-b border-border/15 bg-surface px-2 py-2",children:a}),G,r.jsx("div",{className:"mt-3 overflow-hidden rounded-xl border border-border/15 bg-surface",children:o})]}):r.jsxs("div",{ref:$,className:"flex h-full min-h-0 overflow-hidden",children:[L,r.jsxs("div",{className:M??"shrink-0 overflow-y-auto overscroll-contain border-r border-border/15 bg-surface",style:{width:V},children:[a&&r.jsx("div",{className:"sticky top-0 z-10 border-b border-border/15 bg-surface px-2 py-2",children:a}),G]}),r.jsx("div",{role:"separator","aria-orientation":"vertical","aria-label":W("diffViewer.resizeNavigation"),title:W("diffViewer.resizeNavigation"),className:"group relative z-10 w-2 shrink-0 cursor-col-resize touch-none border-r border-border/15 bg-surface",onPointerDown:ne,onPointerMove:ie,onPointerUp:se,onPointerCancel:se,onDoubleClick:()=>{O(Le),Rt(Ee,Le)},children:r.jsx("span",{className:"pointer-events-none absolute inset-y-0 left-1/2 w-px -translate-x-1/2 bg-border/30 transition group-hover:bg-primary/60"})}),r.jsx("div",{className:E?"min-w-0 flex-1 overflow-hidden":"termdock-diff-stream-scroller min-w-0 flex-1 overflow-y-auto overscroll-contain",onScroll:E?void 0:p=>y?.(p.currentTarget),children:o})]})}function $t({mode:t,onModeChange:o,showAi:i=!1}){return r.jsxs("div",{className:"inline-flex h-7 shrink-0 overflow-hidden rounded-full bg-surface-2 p-0.5",children:[r.jsx("button",{type:"button",onClick:()=>o("list"),"aria-pressed":t==="list",className:`inline-flex h-6 w-7 items-center justify-center rounded-full transition active:scale-95 ${t==="list"?"bg-surface-elevated text-foreground shadow-sm":"text-muted-foreground hover:text-foreground"}`,children:r.jsx(Ct,{size:13})}),r.jsx("button",{type:"button",onClick:()=>o("tree"),"aria-pressed":t==="tree",className:`inline-flex h-6 w-7 items-center justify-center rounded-full transition active:scale-95 ${t==="tree"?"bg-surface-elevated text-foreground shadow-sm":"text-muted-foreground hover:text-foreground"}`,children:r.jsx(It,{size:13})}),i&&r.jsx("button",{type:"button",onClick:()=>o("ai"),"aria-pressed":t==="ai",className:`inline-flex h-6 w-7 items-center justify-center rounded-full transition active:scale-95 ${t==="ai"?"bg-surface-elevated text-foreground shadow-sm":"text-muted-foreground hover:text-foreground"}`,children:r.jsx(nt,{size:13})})]})}function Vt({groups:t,mode:o,onModeChange:i,selectedKey:x,collapsedDirectoryKeys:m,onToggleDirectory:a,onSelectFile:b,renderLeading:v,renderTrailing:g,renderDirectoryTrailing:f,renderSubtitle:y,detail:L,mobile:M,backLabel:E,compact:W=!1,emptyContent:B,listPrefix:$,aiContent:C,listContainerClassName:V="px-2 py-2",detailContainerClassName:O="termdock-native-select termdock-diff-stream-scroller min-h-0",renderListHeader:ne,renderMobileDetailHeader:ie,externalSwiperRef:se,onMobileSlideChange:G,slideToDetailOnMobile:p=!0,desktopLayout:N="split",onDetailScroll:P,desktopSidePanel:D,desktopListClassName:w,detailOwnsScroll:z}){const[X,oe]=c.useState(!1);c.useEffect(()=>{if(!X)return;const F=_=>{_.key==="Escape"&&oe(!1)};return document.addEventListener("keydown",F),()=>document.removeEventListener("keydown",F)},[X]);const le=r.jsx($t,{mode:o,onModeChange:i,showAi:!!C}),be=o==="tree"?"tree":"list",ue=ne?ne(le):r.jsx("div",{className:"flex justify-end",children:le}),de=t.some(F=>F.files.length>0),U=r.jsx(Bt,{mobile:X?!1:M,backLabel:E,externalSwiperRef:se,onMobileSlideChange:G,desktopLayout:X?"split":N,onDetailScroll:P,desktopSidePanel:D,desktopListClassName:w,detailOwnsScroll:z,mobileListHeader:M?ue:void 0,desktopListHeader:M?void 0:ue,mobileDetailHeader:ie,list:({slideToDetail:F})=>r.jsx("div",{className:V,children:o==="ai"?typeof C=="function"?C({slideToDetail:F,fullscreen:X,toggleFullscreen:()=>oe(_=>!_)}):C??B:r.jsxs(r.Fragment,{children:[$,de?r.jsx(Pt,{groups:t,selectedKey:x,mode:be,mobile:M,compact:W,collapsedDirectoryKeys:m,onToggleDirectory:a,onSelectFile:_=>{b(_),M&&p&&window.requestAnimationFrame(F)},renderLeading:v,renderTrailing:g,renderDirectoryTrailing:f,renderSubtitle:y}):B]})}),detail:r.jsx("div",{className:z?"h-full min-h-0":O,children:L})});return!X||typeof document>"u"?U:tt.createPortal(r.jsxs("div",{className:"fixed inset-0 z-modal-panel flex min-h-0 flex-col bg-surface text-foreground",children:[r.jsxs("div",{className:"flex h-12 shrink-0 items-center justify-between border-b border-border/15 bg-[var(--chrome-bg)] px-3",children:[r.jsxs("div",{className:"flex min-w-0 items-center gap-2",children:[r.jsx(nt,{size:15,className:"shrink-0 text-primary"}),r.jsx("span",{className:"truncate text-[12px] font-semibold",children:"DAG Review"}),r.jsx("span",{className:"hidden text-[10px] text-muted-foreground sm:inline",children:"Select a step to inspect its exact change"})]}),r.jsx("button",{type:"button",onClick:()=>oe(!1),className:"inline-flex h-8 w-8 shrink-0 items-center justify-center rounded-md text-muted-foreground transition hover:bg-surface-2 hover:text-foreground active:scale-95",title:"Exit full-screen DAG review (Esc)","aria-label":"Exit full-screen DAG review",children:r.jsx(vt,{size:16})})]}),r.jsx("div",{className:"min-h-0 flex-1",children:U})]}),document.body)}const Ot=96,Pe=44;function Gt({file:t,repoRoot:o,selectionPath:i,displayName:x,displayDir:m,selected:a,activePane:b,visible:v,reusableContent:g=!1,estimatedHeight:f,lightweight:y=!1,wrap:L,showScrollHint:M,viewType:E,inlineMode:W,diffOptions:B,reloadKey:$=0,auditRecords:C,diffOverride:V,preparedDiff:O,renderBadge:ne,onInsertDiffReference:ie,onHunkGitAction:se,onReferenceCopied:G,insertedReferenceKey:p,copiedReferenceKey:N,onClearAuditRecord:P,onContentReady:D,onHeightChange:w}){const z=c.useRef(null),X=c.useRef(null),oe=c.useRef(null),[le,be]=c.useState(null),ue=c.useRef(64),de=c.useRef(f??104),U=c.useRef(null),F=c.useRef(null),_=c.useRef(!1),ce=c.useRef(!1),A=c.useRef(null),[K,fe]=c.useState(!1),[we,Te]=c.useState(!1),ke=t.absolutePath||(o?`${o}/${t.path}`:t.path),J=c.useCallback(()=>{ce.current||(ce.current=!0,Te(!0),D?.(i))},[D,i]);c.useLayoutEffect(()=>(_.current=!1,ce.current=!1,U.current=null,F.current=null,A.current!==null&&(window.clearTimeout(A.current),A.current=null),fe(!1),Te(!1),()=>{A.current!==null&&(window.clearTimeout(A.current),A.current=null)}),[V,O,$,g,v]),c.useLayoutEffect(()=>{const k=U.current;!K||k===null||Math.abs((f??104)-k)>=1||(U.current=null,J())},[J,f,K]),c.useLayoutEffect(()=>{if(!v||!K)return;const k=oe.current;if(!k)return;const q=()=>{if(!_.current||ce.current)return;const ae=Math.ceil(Math.max(k.getBoundingClientRect().height,k.scrollHeight)),Me=ue.current;ae>0&&Me!==ae&&(ue.current=ae,be(ae));const Z=z.current;if(!Z)return;const he=X.current?.getBoundingClientRect().height??Pe,ee=Math.ceil(Math.max(Z.scrollHeight,he+ae+1));ee<=0||F.current===ee||(F.current=ee,A.current!==null&&window.clearTimeout(A.current),A.current=window.setTimeout(()=>{if(A.current=null,!_.current||ce.current)return;const I=F.current;if(I===null)return;const S=de.current;if(U.current=I,Math.abs(S-I)<1||!w){de.current=I,U.current=null,J();return}de.current=I,w(i,S,I)},Ot))};if(q(),typeof ResizeObserver>"u")return;const je=new ResizeObserver(q);return je.observe(k),()=>je.disconnect()},[J,w,i,K,v]);const Re=v&&!we;return r.jsxs("div",{ref:z,"data-diff-stream-item":i,"data-diff-selection-path":i,"data-diff-file-path":t.path,"data-diff-absolute-path":ke,className:`scroll-mt-3 border-b border-border/15 last:border-b-0 ${Re||!v?"overflow-hidden":""} ${a?"bg-surface-elevated/35":""}`,style:v?Re?{height:f??104}:void 0:{height:f??104},children:[r.jsxs("div",{ref:X,"data-diff-stream-header":!0,className:`sticky top-0 z-10 flex min-w-0 items-center gap-2 border-b border-border/15 px-3 py-2 backdrop-blur ${a?"bg-surface-elevated/95":"bg-surface/95"}`,children:[ne(t.status),r.jsxs("div",{className:"min-w-0 flex-1",title:ke,children:[r.jsx("div",{className:"truncate text-xs font-semibold text-foreground",children:x}),m&&r.jsx("div",{className:"truncate text-[10px] text-muted-foreground",children:m})]})]}),r.jsxs("div",{ref:oe,className:"relative","data-diff-stream-body":!0,style:v?{minHeight:we?64:Math.max(le??64,(f??104)-Pe)}:{height:Math.max(le??64,(f??104)-Pe)},children:[v?r.jsx(Dt,{active:b,repoRoot:o,filePath:t.path,referenceFilePath:ke,changedFile:t,wrap:L,showScrollHint:M,viewType:E,inlineMode:W,diffOptions:B,reloadKey:$,embedded:!0,lightweight:y,auditRecords:C,diffOverride:V,preparedDiff:O,onClearAuditRecord:P,onContentReady:()=>{if(g){_.current=!0,fe(!0),J();return}_.current||(_.current=!0,fe(!0))},onInsertDiffReference:ie,onHunkGitAction:se,onReferenceCopied:G,insertedReferenceKey:p,copiedReferenceKey:N}):r.jsx("div",{className:"flex h-full min-h-16 items-center justify-center bg-surface px-3 py-4 text-center text-xs text-muted-foreground",children:t.path}),v&&K&&!we&&r.jsx("div",{"data-diff-measuring-overlay":!0,className:"absolute inset-0 z-20 bg-surface"})]})]})}const Ye=8,Xt=3,Qe=2,ze=1600,Je=104,Kt=1e3,ye=new Map;function qt(t,o){for(ye.delete(t),ye.set(t,o);ye.size>Kt;){const i=ye.keys().next().value;if(i===void 0)break;ye.delete(i)}}function Ut(t,o){return!!(t&&t.diffOverride===o.diffOverride&&t.reloadKey===o.reloadKey&&t.wrap===o.wrap&&t.showScrollHint===o.showScrollHint&&t.viewType===o.viewType&&t.inlineMode===o.inlineMode&&t.algorithm===o.algorithm&&t.whitespace===o.whitespace&&t.context===o.context)}const Yt={added:{label:"A",className:"text-[color:var(--diff-insert-strong)]",title:"Added"},modified:{label:"M",className:"text-[color:var(--diff-hunk-accent)]",title:"Modified"},deleted:{label:"D",className:"text-[color:var(--diff-delete-strong)]",title:"Deleted"},renamed:{label:"R",className:"text-muted-foreground",title:"Renamed"},copied:{label:"C",className:"text-[color:var(--diff-insert-strong)]",title:"Copied"},untracked:{label:"U",className:"text-[color:var(--diff-insert-strong)]",title:"Untracked (new file)"},conflicted:{label:"!",className:"text-destructive",title:"Conflicted"},unknown:{label:"?",className:"text-muted-foreground",title:"Unknown"}};function sr({status:t}){const o=Yt[t]??{label:"?",className:"text-muted-foreground",title:t};return r.jsx("span",{className:`w-4 shrink-0 text-center text-[10px] font-mono font-bold ${o.className}`,title:o.title,children:o.label})}function or(t,o){return o?{key:o,nonce:t.nonce+1}:t}function cr({files:t,groups:o,selectedKey:i,onSelectFile:x,mode:m,onModeChange:a,collapsedDirectoryKeys:b,onToggleDirectory:v,renderLeading:g,renderTrailing:f,renderDirectoryTrailing:y,renderSubtitle:L,renderStreamBadge:M,onInsertDiffReference:E,onHunkGitAction:W,onReferenceCopied:B,insertedReferenceKey:$,copiedReferenceKey:C,onClearAuditRecord:V,mobile:O,backLabel:ne,compact:ie,desktopLayout:se,wrap:G,showScrollHint:p,diffViewType:N,inlineMode:P,diffOptions:D,activePane:w,reloadKey:z=0,renderListHeader:X,renderMobileDetailHeader:oe,emptyContent:le,listPrefix:be,aiContent:ue,listContainerClassName:de,detailContainerClassName:U,desktopSidePanel:F,desktopListClassName:_,onDetailScroll:ce,initialDetailScrollTop:A,scrollToKey:K,scrollToKeyNonce:fe=0,externalSwiperRef:we,onMobileSlideChange:Te,slideToDetailOnMobile:ke}){const J=Nt(e=>e.rootPath),Re=c.useMemo(()=>e=>i===e.key||i===e.path||i===e.absolutePath,[i]),k=c.useMemo(()=>{const e=new Map;for(const s of t)e.set(s.key,s),s.path&&e.set(s.path,s),s.absolutePath&&e.set(s.absolutePath,s);const n=[],l=new Set;for(const s of o){const d=m==="tree"?At(s.files):s.files;for(const h of d){const u=e.get(h.key);!u||l.has(u.key)||(n.push(u),l.add(u.key))}}for(const s of t)l.has(s.key)||n.push(s);return n},[t,o,m]),q=c.useRef(null),je=c.useRef(null),ae=c.useRef(null),Me=c.useRef(z),Z=c.useRef(0),he=c.useRef(null),ee=c.useRef(new Map(ye)),I=c.useRef({key:null,top:0}),S=c.useRef(new Set),Ne=c.useRef(new Map),Ce=c.useRef(new Map),H=c.useRef(null),We=c.useRef(()=>{}),De=c.useRef([]),pe=c.useRef(new Map),Be=c.useRef({tops:[],heights:[],bottom:0}),[$e,it]=c.useState(()=>new Set),[lt,ut]=c.useState(0),[te,xe]=c.useState({top:0,height:0}),Se=c.useMemo(()=>k.map(e=>e.key),[k]),Ie=Se.join("");Ce.current=new Map(k.map(e=>[e.key,{diffOverride:e.diffOverride,reloadKey:z,wrap:G,showScrollHint:p,viewType:N,inlineMode:P,algorithm:D?.algorithm,whitespace:D?.whitespace,context:D?.context}])),De.current=Se,pe.current=new Map(Se.map((e,n)=>[e,n]));const R=c.useMemo(()=>{const e=Se.map(s=>ee.current.get(s)??Je),n=new Array(e.length);for(let s=0;s<e.length;s+=1)n[s]=s===0?0:n[s-1]+e[s-1];const l=e.length>0?n[e.length-1]+e[e.length-1]:0;return{tops:n,heights:e,bottom:l}},[lt,Ie]);Be.current=R;const me=c.useMemo(()=>K?k.find(e=>K===e.key||K===e.path||K===e.absolutePath)?.key??null:null,[k,K]),Fe=c.useMemo(()=>i?k.find(e=>i===e.key||i===e.path||i===e.absolutePath)?.key??null:null,[k,i]),Y=c.useMemo(()=>{const e=R.tops.length;if(e===0)return-1;let n=0,l=e;for(;n<l;){const s=Math.floor((n+l)/2);R.tops[s]<=te.top+1?n=s+1:l=s}return Math.min(e-1,Math.max(0,n-1))},[R.tops,te.top]);c.useEffect(()=>{if(!w||Y<0)return;const e=[Y];for(let s=1;s<=Xt;s+=1)e.push(Y+s),e.push(Y-s);const n=e.filter((s,d)=>s>=0&&s<k.length&&e.indexOf(s)===d).map(s=>k[s]).filter(s=>s.diffOverride===void 0&&!!(s.repoRoot??J));let l=!1;return(async()=>{for(let s=0;s<n.length&&!l;s+=Qe){const d=n.slice(s,s+Qe);await Promise.all(d.map(h=>{const u=h.repoRoot??J,j=Ze(h.path,u);return Tt(j,u??void 0,P??"words",D).catch(()=>{})}))}})(),()=>{l=!0}},[w,k,D,P,J,Y]);const re=c.useCallback(e=>{S.current=e,it(e)},[]),Ve=c.useMemo(()=>{const e=te.top-ze,n=te.top+te.height+ze,l=new Set;let s=0,d=R.tops.length;for(;s<d;){const u=Math.floor((s+d)/2);R.tops[u]<=e?s=u+1:d=u}const h=Math.max(0,s-1);for(let u=h;u<R.tops.length;u+=1){const j=R.tops[u];if(j>n)break;j+R.heights[u]>=e&&j<=n&&l.add(u)}for(let u=Y-1;u<=Y+1;u+=1)u>=0&&u<R.tops.length&&l.add(u);return Array.from(l).sort((u,j)=>u-j)},[R,te,Y]),_e=c.useCallback(()=>{if(H.current)return;const e=De.current;if(e.length===0)return;const n=I.current.key,l=Math.min(e.length-1,(n!==null?pe.current.get(n):void 0)??Math.max(0,Y)),s=u=>Math.abs((pe.current.get(u)??0)-l),d=[];S.current.has(e[l])||d.push(e[l]);for(let u=1;u<=Ye;u+=1){const j=l+u,T=l-u;j<e.length&&!S.current.has(e[j])&&d.push(e[j]),T>=0&&!S.current.has(e[T])&&d.push(e[T])}const h=d[0];if(h){if(S.current.size>=Ye){const u=s(h),j=Array.from(S.current).filter(Q=>Q!==H.current).sort((Q,ve)=>s(ve)-s(Q))[0];if(!j||s(j)<=u)return;const T=new Set(S.current);T.delete(j),re(T)}H.current=h,re(new Set(S.current).add(h))}},[re,Y]);We.current=_e;const ge=c.useCallback(e=>{if(S.current.has(e))return;const n=H.current;if(n&&n!==e){const l=new Set(S.current);l.delete(n),re(l),H.current=null}H.current=e,re(new Set(S.current).add(e))},[re]),Oe=c.useCallback(e=>{if(!S.current.has(e))return;const n=Ce.current.get(e);n&&Ne.current.set(e,n),H.current===e&&(H.current=null),window.requestAnimationFrame(()=>We.current())},[]),Ge=c.useCallback((e,n,l)=>{if(Math.abs(l-n)<1)return;const s=ee.current.get(e);s!==void 0&&Math.abs(s-l)<1||(ee.current.set(e,l),qt(e,l),ut(d=>d+1))},[]);c.useLayoutEffect(()=>{if(Me.current!==z){Me.current=z;for(const e of k){if(e.diffOverride!==void 0)continue;const n=Ze(e.path,e.repoRoot);Mt(n,e.repoRoot??void 0,D)}}},[k,D,z]),c.useLayoutEffect(()=>{const e=q.current;if(!e)return;const n=()=>{const s=Math.max(0,Math.ceil(e.clientHeight));if(s===0)return;const d=e.scrollTop;xe(h=>h.height===s&&h.top===d?h:{top:d,height:s})};if(n(),typeof ResizeObserver>"u")return;const l=new ResizeObserver(n);return l.observe(e),()=>l.disconnect()},[O]),c.useEffect(()=>{Fe&&ge(Fe)},[ge,Fe]),c.useEffect(()=>{const e=new Set(De.current);for(const n of Array.from(ee.current.keys()))e.has(n)||ee.current.delete(n);for(const n of Array.from(S.current))if(!e.has(n)){const l=new Set(S.current);l.delete(n),re(l)}for(const n of Array.from(Ne.current.keys()))e.has(n)||Ne.current.delete(n);if(H.current&&!e.has(H.current)&&(H.current=null),k.length===0){H.current=null,Ne.current.clear(),re(new Set);return}_e()},[k.length,Ie,_e,Ve,re]);const Xe=c.useCallback(e=>{q.current=e;const n=Z.current,l=e.scrollTop;Z.current=l;const s=d=>{const h=Be.current,u=De.current;let j=0,T=h.tops.length;for(;j<T;){const Ae=Math.floor((j+T)/2);h.tops[Ae]<=d+1?j=Ae+1:T=Ae}const Q=Math.min(u.length-1,Math.max(0,j-1)),ve=u[Q]??null;I.current={key:ve,top:h.tops[Q]??0},ve&&ge(ve)};Math.abs(l-n)>=ze?(tt.flushSync(()=>{xe({top:l,height:e.clientHeight})}),s(l)):he.current===null&&(he.current=window.requestAnimationFrame(()=>{he.current=null;const d=q.current;if(d){const h=d.scrollTop;xe({top:h,height:d.clientHeight}),s(h)}})),ce?.(e)},[ce,ge]);c.useEffect(()=>()=>{he.current!==null&&window.cancelAnimationFrame(he.current)},[]),c.useLayoutEffect(()=>{const e=q.current;if(!e)return;const n=I.current;if(n.key===null)return;const l=pe.current.get(n.key);if(l===void 0)return;const s=(R.tops[l]??n.top)-n.top;if(Math.abs(s)<1)return;const d=e.scrollTop+s;Z.current=d,xe(h=>({top:d,height:h.height})),typeof e.scrollTo=="function"?e.scrollTo({top:d,behavior:"instant"}):e.scrollTop=d},[R]),c.useLayoutEffect(()=>{const e=De.current,n=R.tops;if(e.length===0){I.current={key:null,top:0};return}const l=Z.current,s=l+(q.current?.clientHeight??te.height),d=I.current;if(d.key!==null){const T=pe.current.get(d.key);if(T!==void 0){const Q=n[T]??0;if(Q+(R.heights[T]??Je)>l&&Q<s){I.current={key:d.key,top:Q};return}}}let h=0,u=n.length;for(;h<u;){const T=Math.floor((h+u)/2);n[T]<=l+1?h=T+1:u=T}const j=Math.min(n.length-1,Math.max(0,h-1));I.current={key:e[j]??null,top:n[j]??0}}),c.useLayoutEffect(()=>{if(!me||je.current===fe)return;const e=pe.current.get(me);if(e===void 0)return;ge(me),I.current={key:me,top:R.tops[e]??0};const n=q.current;if(!n)return;je.current=fe;const l=R.tops[e]??0;typeof n.scrollTo=="function"?n.scrollTo({top:l,behavior:"instant"}):n.scrollTop=l;const s=n.scrollTop;Z.current=s,xe({top:s,height:n.clientHeight})},[R,te.height,ge,me,fe]),c.useLayoutEffect(()=>{if(A===void 0||me)return;const e=Ie;if(ae.current===e)return;const n=q.current;if(!n)return;ae.current=e;const l=Math.max(0,R.bottom-n.clientHeight),s=Math.min(Math.max(0,A),l);typeof n.scrollTo=="function"?n.scrollTo({top:s,behavior:"instant"}):n.scrollTop=s;const d=n.scrollTop;Z.current=d,xe({top:d,height:n.clientHeight})},[R.bottom,A,Ie,me]);const dt=c.useCallback((e,n)=>{const l=Re(e),s=Ce.current.get(e.key),d=s!==void 0&&Ut(Ne.current.get(e.key),s);return r.jsx(Gt,{file:Qt(e),repoRoot:e.repoRoot,selectionPath:e.key,displayName:e.displayName,displayDir:e.displayDir,selected:l,activePane:w,visible:$e.has(e.key),reusableContent:d,estimatedHeight:n,lightweight:!1,wrap:G,showScrollHint:p,viewType:N,inlineMode:P,diffOptions:D,reloadKey:z,auditRecords:e.auditRecords,diffOverride:e.diffOverride,renderBadge:h=>M(h,e),onInsertDiffReference:e.onInsertDiffReference??E,onHunkGitAction:e.onHunkGitAction??W,onReferenceCopied:B,insertedReferenceKey:$,copiedReferenceKey:C,onClearAuditRecord:V,onContentReady:Oe,onHeightChange:Ge})},[w,C,D,N,Oe,Ge,P,$,Re,$e,V,W,E,B,z,M,p,G]),ft=r.jsx("div",{"data-diff-stream-content":!0,"data-diff-stream-canvas":!0,className:"termdock-diff-stream relative overflow-clip bg-surface will-change-transform",style:{height:Math.max(te.height,R.bottom)},children:Ve.map(e=>{const n=k[e];return n?r.jsx("div",{"data-diff-canvas-slot":n.key,className:"absolute inset-x-0",style:{top:R.tops[e]},children:dt(n,R.heights[e])},n.key):null})}),ht=r.jsx("div",{ref:q,className:"termdock-diff-stream termdock-diff-stream-scroller h-full max-h-full min-h-0 overflow-y-auto overscroll-contain bg-surface [overflow-anchor:none]",onScroll:e=>Xe(e.currentTarget),children:ft});return r.jsx(Vt,{groups:o,mode:m,onModeChange:a,selectedKey:i,collapsedDirectoryKeys:b,onToggleDirectory:v,onSelectFile:x,renderLeading:g,renderTrailing:f,renderDirectoryTrailing:y,renderSubtitle:L,detail:ht,mobile:O,backLabel:ne,compact:ie,emptyContent:le,listPrefix:be,aiContent:ue,listContainerClassName:de,detailContainerClassName:U,renderListHeader:X,renderMobileDetailHeader:oe,externalSwiperRef:we,onMobileSlideChange:Te,slideToDetailOnMobile:ke,desktopLayout:se,onDetailScroll:Xe,desktopSidePanel:F,desktopListClassName:_,detailOwnsScroll:!0})}function Qt(t){return{path:t.path,absolutePath:t.absolutePath,status:t.status}}function Ze(t,o){if(t)return o&&t.startsWith(`${o}/`)?t.slice(o.length+1):t}export{sr as C,cr as D,It as L,At as f,or as n};
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{aD as u}from"./app-D6KzR8B3.js";import{b as o}from"./dnd-BCFAPC0L.js";import{D}from"./DiffReview-CE5lW1zQ.js";import"./react-XDCjal2T.js";import"./terminal-C7X98Amf.js";import"./gestureArbiter-D1SNS_gK.js";import"./referenceLongPress-B3NGIjvv.js";import"./sparkles-BaGaevME.js";import"./DiffViewer-BomvZ4kq.js";const w=40,p="/tmp/termdock-diff-review-lab";function h(r,l){const i=[`diff --git a/${r} b/${r}`,`--- a/${r}`,`+++ b/${r}`,`@@ -1,${l} +1,${l} @@`];for(let t=0;t<l;t+=1)t%5===0&&i.push(`-const removed_${t} = ${t};`),t%3===0&&i.push(`+const added_${t} = ${t} * 2;`),i.push(` context line ${t} in ${r}`);return i.join(`
|
|
2
|
+
`)}function j(r,l){return Array.from({length:w},(i,t)=>{const n=6+t*7%60,d=`src/module${String(t).padStart(2,"0")}/File${t}.ts`,a=`${p}/${d}`,f=h(d,n),m=h(d,1);return{key:a,path:d,absolutePath:a,status:"modified",repoRoot:p,displayName:`File${t}.ts`,displayDir:`src/module${String(t).padStart(2,"0")} · ${n} lines`,diffOverride:!l||r.has(t)?f:m,auditRecords:[]}})}function F(){const r=o.useMemo(()=>{if(typeof window>"u")return 0;const e=new URLSearchParams(window.location.search).get("delay"),s=e===null?0:Number.parseInt(e,10);return Number.isInteger(s)&&s>0?s:0},[]),l=r>0,[i,t]=o.useState(()=>new Set);o.useEffect(()=>{if(!l)return;const e=Array.from({length:w},(s,c)=>window.setTimeout(()=>{t(R=>{const y=new Set(R);return y.add(c),y})},r+c*20));return()=>e.forEach(s=>window.clearTimeout(s))},[l,r]);const n=o.useMemo(()=>j(i,l),[i,l]),d=o.useMemo(()=>[{key:"mock-repo",root:p,label:"diff-review-lab",files:n.map(e=>({key:e.key,path:e.path,absolutePath:e.absolutePath,displayName:e.displayName,displayDir:e.displayDir,status:e.status}))}],[n]),a=o.useMemo(()=>{if(typeof window>"u")return null;const e=new URLSearchParams(window.location.search).get("select");if(e===null)return null;const s=Number.parseInt(e,10);return Number.isInteger(s)&&s>=0&&s<n.length?s:null},[n.length]),[f,m]=o.useState(()=>a!==null?n[a].key:null),[b,g]=o.useState(()=>({key:a!==null?n[a].key:null,nonce:a!==null?1:0})),[S,x]=o.useState("list"),[$,k]=o.useState(new Set),[v,N]=o.useState(a!==null?1:0);return u.jsxs("div",{className:"flex h-screen flex-col bg-background text-foreground","data-diff-review-lab":!0,children:[u.jsxs("div",{className:"shrink-0 border-b border-border/20 px-3 py-2 text-xs text-muted-foreground",children:["DiffReview Lab · ",n.length," mock files · selected: ",u.jsx("span",{"data-lab-selected":!0,children:f??"none"})," · slide ",v]}),u.jsx("div",{className:"min-h-0 flex-1",children:u.jsx(D,{mobile:!0,backLabel:"Back",files:n,groups:d,selectedKey:f,scrollToKey:b.key,scrollToKeyNonce:b.nonce,mode:S,onModeChange:e=>{e!=="ai"&&x(e)},collapsedDirectoryKeys:$,onToggleDirectory:e=>k(s=>{const c=new Set(s);return c.has(e)?c.delete(e):c.add(e),c}),onSelectFile:e=>{m(e.key),g(s=>({key:e.key,nonce:s.nonce+1}))},onMobileSlideChange:N,renderLeading:()=>null,renderStreamBadge:e=>u.jsx("span",{className:"text-[10px] text-muted-foreground",children:e}),wrap:!0,showScrollHint:!1,activePane:!0})})]})}export{F as DiffReviewLab};
|
|
Binary file
|
|
Binary file
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/index-UqXCGE5m.js","assets/react-XDCjal2T.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{
|
|
2
|
+
import{I as qr,aD as g,_ as ui,bF as es,ac as fi,aU as di,q as hi,L as _r,c as gi,aA as mi,aa as ns}from"./app-D6KzR8B3.js";import{b as S}from"./dnd-BCFAPC0L.js";import{w as $t,r as Pt,e as vi,u as pi,C as bi}from"./referenceLongPress-B3NGIjvv.js";const wi=[["circle",{cx:"18",cy:"18",r:"3",key:"1xkwt0"}],["circle",{cx:"6",cy:"6",r:"3",key:"1lh9wr"}],["path",{d:"M13 6h3a2 2 0 0 1 2 2v7",key:"1yeb86"}],["path",{d:"M11 18H8a2 2 0 0 1-2-2V9",key:"19pyzm"}]],Ct=qr("git-compare",wi);const yi=[["path",{d:"m18 8 4 4-4 4",key:"1ak13k"}],["path",{d:"M2 12h20",key:"9i4pu4"}],["path",{d:"m6 8-4 4 4 4",key:"15zrgr"}]],_i=qr("move-horizontal",yi);function Nr(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(s){return Object.getOwnPropertyDescriptor(e,s).enumerable}))),n.push.apply(n,r)}return n}function Z(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?Nr(Object(n),!0).forEach((function(r){Tt(e,r,n[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Nr(Object(n)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(n,r))}))}return e}function Tt(e,t,n){return(t=(function(r){var s=(function(i,o){if(typeof i!="object"||i===null)return i;var l=i[Symbol.toPrimitive];if(l!==void 0){var a=l.call(i,o);if(typeof a!="object")return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return(o==="string"?String:Number)(i)})(r,"string");return typeof s=="symbol"?s:String(s)})(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function fn(e,t){if(e==null)return{};var n,r,s=(function(o,l){if(o==null)return{};var a,c,u={},f=Object.keys(o);for(c=0;c<f.length;c++)a=f[c],l.indexOf(a)>=0||(u[a]=o[a]);return u})(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(s[n]=e[n])}return s}function xe(e,t){return ki(e)||(function(n,r){var s=n==null?null:typeof Symbol<"u"&&n[Symbol.iterator]||n["@@iterator"];if(s!=null){var i,o,l,a,c=[],u=!0,f=!1;try{if(l=(s=s.call(n)).next,r===0){if(Object(s)!==s)return;u=!1}else for(;!(u=(i=l.call(s)).done)&&(c.push(i.value),c.length!==r);u=!0);}catch(d){f=!0,o=d}finally{try{if(!u&&s.return!=null&&(a=s.return(),Object(a)!==a))return}finally{if(f)throw o}}return c}})(e,t)||Wt(e,t)||ji()}function Ni(e){return(function(t){if(Array.isArray(t))return Lt(t)})(e)||Si(e)||Wt(e)||(function(){throw new TypeError(`Invalid attempt to spread non-iterable instance.
|
|
3
3
|
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)})()}function ki(e){if(Array.isArray(e))return e}function Si(e){if(typeof Symbol<"u"&&e[Symbol.iterator]!=null||e["@@iterator"]!=null)return Array.from(e)}function Wt(e,t){if(e){if(typeof e=="string")return Lt(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return n==="Object"&&e.constructor&&(n=e.constructor.name),n==="Map"||n==="Set"?Array.from(e):n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Lt(e,t):void 0}}function Lt(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function ji(){throw new TypeError(`Invalid attempt to destructure non-iterable instance.
|
|
4
4
|
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function Ci(e,t){var n=typeof Symbol<"u"&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=Wt(e))||t){n&&(e=n);var r=0,s=function(){};return{s,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(a){throw a},f:s}}throw new TypeError(`Invalid attempt to iterate non-iterable instance.
|
|
5
5
|
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var i,o=!0,l=!1;return{s:function(){n=n.call(e)},n:function(){var a=n.next();return o=a.done,a},e:function(a){l=!0,i=a},f:function(){try{o||n.return==null||n.return()}finally{if(l)throw i}}}}var Un=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function Tn(e,t){return e(t={exports:{}},t.exports),t.exports}var le=Tn((function(e){(function(){var t={}.hasOwnProperty;function n(){for(var r=[],s=0;s<arguments.length;s++){var i=arguments[s];if(i){var o=typeof i;if(o==="string"||o==="number")r.push(i);else if(Array.isArray(i)){if(i.length){var l=n.apply(null,i);l&&r.push(l)}}else if(o==="object"){if(i.toString!==Object.prototype.toString&&!i.toString.toString().includes("[native code]")){r.push(i.toString());continue}for(var a in i)t.call(i,a)&&i[a]&&r.push(a)}}}return r.join(" ")}e.exports?(n.default=n,e.exports=n):window.classNames=n})()})),se={hunkClassName:"",lineClassName:"",gutterClassName:"",codeClassName:"",monotonous:!1,gutterType:"default",viewType:"split",widgets:{},hideGutter:!1,selectedChanges:[],generateAnchorID:function(){},generateLineClassName:function(){},renderGutter:function(e){var t=e.renderDefault;return(0,e.wrapInAnchor)(t())},codeEvents:{},gutterEvents:{}},ts=S.createContext(se),xi=ts.Provider,Mi=function(){return S.useContext(ts)};Tn((function(e,t){(function(n){function r(i){var o=i.slice(11),l=null,a=null;switch(o.indexOf('"')){case-1:l=(f=o.split(" "))[0].slice(2),a=f[1].slice(2);break;case 0:var c=o.indexOf('"',2);l=o.slice(3,c);var u=o.indexOf('"',c+1);a=u<0?o.slice(c+4):o.slice(u+3,-1);break;default:var f;l=(f=o.split(" "))[0].slice(2),a=f[1].slice(3,-1)}return{oldPath:l,newPath:a}}var s={parse:function(i){for(var o,l,a,c,u,f=[],d=2,h=i.split(`
|
|
@@ -9,9 +9,9 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho
|
|
|
9
9
|
`],s=0;s<this.diffs.length;s++){switch(this.diffs[s][0]){case 1:n="+";break;case-1:n="-";break;case 0:n=" "}r[s+1]=n+encodeURI(this.diffs[s][1])+`
|
|
10
10
|
`}return r.join("").replace(/%20/g," ")},e.exports=t,e.exports.diff_match_patch=t,e.exports.DIFF_DELETE=-1,e.exports.DIFF_INSERT=1,e.exports.DIFF_EQUAL=0}));nr.DIFF_EQUAL;nr.DIFF_DELETE;nr.DIFF_INSERT;function Xa(e){const t=[],n=/([A-Za-z_$][A-Za-z0-9_$]*|[0-9]+(?:\.[0-9]+)?|[\u4e00-\u9fff]+|\s+|.)/gu;let r;for(;(r=n.exec(e))!==null;){const s=r[0];t.push({start:r.index,value:s,significant:s.trim().length>0})}return t}function Ya(e){return e.trim()}function Za(e){return Xa(e).filter(t=>t.significant).map(t=>Ya(t.value)).filter(Boolean)}function Br(e){return Za(e).filter(t=>/[\p{L}\p{N}_$]/u.test(t))}function Vr(e,t){if(e.length===0&&t.length===0)return 1;if(e.length===0||t.length===0)return 0;const n=new Map;for(const s of e)n.set(s,(n.get(s)??0)+1);let r=0;for(const s of t){const i=n.get(s)??0;i<=0||(r+=1,n.set(s,i-1))}return 2*r/(e.length+t.length)}function Gr(e){const t=e.trim().replace(/\s+/gu," ");if(t.length<2)return t?[t]:[];const n=[];for(let r=0;r<t.length-1;r+=1)n.push(t.slice(r,r+2));return n}function Wr(e){const t=e.trim();return t?/^(?:\/\/|\/\*|\*|<!--|-->)/u.test(t)?"comment":"code":"blank"}function Ja(e,t){if(e.includes(`
|
|
11
11
|
`)||t.includes(`
|
|
12
|
-
`))return!0;const n=Wr(e),r=Wr(t);return n===r||n==="blank"||r==="blank"}function Ur(e){return e.trim().replace(/(['"`])(?:\\.|[^\\])*?\1/gu,(t,n)=>`${n}${n}`).replace(/\b\d+(?:\.\d+)?\b/gu,"0").replace(/\s+/gu," ")}function Kr(e){const t=e.match(/^\s*(?:([A-Za-z_$][A-Za-z0-9_$]*)|['"]([^'"]+)['"])\s*:/u);return t?.[1]??t?.[2]??null}function Bt(e,t){const n=e.trim(),r=t.trim();if(e===t)return n?/[\p{L}\p{N}_$]/u.test(n)?1:.3:.1;if(n===r)return n?/[\p{L}\p{N}_$]/u.test(n)?.99:.3:.1;if(!Ja(e,t))return 0;const s=Br(n),i=Br(r);if(s.length===0||i.length===0)return 0;const l=2*rl(s,i).length/(s.length+i.length),a=Vr(s,i),c=Vr(Gr(n),Gr(r)),u=l*.5+a*.2+c*.3,f=Ur(n),d=Ur(r);return f===d&&/[\p{L}\p{N}_$]/u.test(f)?Math.max(.72,u):u}function Qa(e,t,n=.42){if(e.length===0||t.length===0)return[];if(e.length*t.length>4e4){const m=e.map(p=>{const w=p.content.trim();return/[\p{L}\p{N}_$]/u.test(w)?w:""}),v=t.map(p=>{const w=p.content.trim();return/[\p{L}\p{N}_$]/u.test(w)?w:""});return js(m,v).filter(p=>m[p.left]!=="").map(p=>({oldLineNumber:e[p.left].lineNumber,newLineNumber:t[p.right].lineNumber,score:Bt(e[p.left].content,t[p.right].content)}))}const r=e.map(m=>Kr(m.content)),s=t.map(m=>Kr(m.content)),i=m=>{const v=new Map;for(const p of m)p&&v.set(p,(v.get(p)??0)+1);return v},o=i(r),l=i(s),a=e.map((m,v)=>t.map((p,w)=>{const k=Bt(m.content,p.content),b=r[v];return b&&b===s[w]&&o.get(b)===1&&l.get(b)===1?Math.max(.55,k):k})),c=a.map((m,v)=>m.map((p,w)=>{const k=e.length<=1?0:v/(e.length-1),b=t.length<=1?0:w/(t.length-1),D=(1-Math.abs(k-b))*1e-4;return p>=n?p+D:p})),u=Array.from({length:e.length+1},()=>Array(t.length+1).fill(0));for(let m=e.length-1;m>=0;m-=1)for(let v=t.length-1;v>=0;v-=1){const p=c[m][v],w=p>=n?p-n+.01+u[m+1][v+1]:Number.NEGATIVE_INFINITY;u[m][v]=Math.max(w,u[m+1][v],u[m][v+1])}const f=[];let d=0,h=0;for(;d<e.length&&h<t.length;){const m=c[d][h],v=m-n+.01;m>=n&&Math.abs(v+u[d+1][h+1]-u[d][h])<1e-6?(f.push({oldLineNumber:e[d].lineNumber,newLineNumber:t[h].lineNumber,score:a[d][h]}),d+=1,h+=1):u[d+1][h]>=u[d][h+1]?d+=1:h+=1}return f}function qa(e,t,n=.7){const r=[];if(e.length*t.length>5e4){const c=new Map;for(const[f,d]of t.entries()){const h=d.content.trim();if(!/[\p{L}\p{N}_$]/u.test(h))continue;const m=c.get(h);m?m.push(f):c.set(h,[f])}const u=new Map(e.map(f=>[f.content.trim(),0]));for(const f of e){const d=f.content.trim();u.set(d,(u.get(d)??0)+1)}for(const[f,d]of e.entries()){const h=d.content.trim(),m=c.get(h);if(u.get(h)!==1||m?.length!==1)continue;const v=m[0];r.push({oldLineNumber:d.lineNumber,newLineNumber:t[v].lineNumber,score:1,oldIndex:f,newIndex:v})}}else for(const[c,u]of e.entries())for(const[f,d]of t.entries()){const h=Bt(u.content,d.content);h<n||r.push({oldLineNumber:u.lineNumber,newLineNumber:d.lineNumber,score:h,oldIndex:c,newIndex:f})}r.sort((c,u)=>u.score-c.score||c.oldIndex-u.oldIndex||c.newIndex-u.newIndex);const s=new Set,i=new Set,o=r.filter(c=>s.has(c.oldIndex)||i.has(c.newIndex)?!1:(s.add(c.oldIndex),i.add(c.newIndex),!0)).sort((c,u)=>c.oldIndex-u.oldIndex),l=[];for(const c of o){const u=l[l.length-1],f=u?.[u.length-1];f&&c.oldIndex===f.oldIndex+1&&c.newIndex===f.newIndex+1?u.push(c):l.push([c])}return l.flatMap(c=>{if(c.length<2)return[];if(c.reduce((v,p)=>v+p.score,0)/c.length<.82||!c.some(v=>v.score>=.95))return[];const f=c[0].oldLineNumber,d=c[c.length-1].oldLineNumber,h=c[0].newLineNumber,m=c[c.length-1].newLineNumber;return h>d+1||f>m+1?c:[]}).map(({oldLineNumber:c,newLineNumber:u,score:f})=>({oldLineNumber:c,newLineNumber:u,score:f}))}function el(e,t){const n=Array.from({length:e.length+1},()=>Array(t.length+1).fill(0));for(let r=e.length-1;r>=0;r-=1)for(let s=t.length-1;s>=0;s-=1)n[r][s]=e[r]===t[s]?n[r+1][s+1]+1:Math.max(n[r+1][s],n[r][s+1]);return n}function nl(e){if(e.length===0)return[];const t=[],n=new Int32Array(e.length).fill(-1);for(let i=0;i<e.length;i+=1){let o=0,l=t.length;for(;o<l;){const a=o+l>>>1;e[t[a]].right<e[i].right?o=a+1:l=a}o>0&&(n[i]=t[o-1]),t[o]=i}const r=[];let s=t[t.length-1]??-1;for(;s>=0;)r.push(e[s]),s=n[s];return r.reverse()}function js(e,t){const n=new Map,r=new Map,s=(o,l,a)=>{const c=o.get(l);c?c.push(a):o.set(l,[a])};e.forEach((o,l)=>s(n,o,l)),t.forEach((o,l)=>s(r,o,l));const i=[];for(const[o,l]of n){const a=r.get(o);l.length===1&&a?.length===1&&i.push({left:l[0],right:a[0]})}return i.sort((o,l)=>o.left-l.left),nl(i)}function tl(e,t){const n=[];let r=0;for(;r<e.length&&r<t.length&&e[r]===t[r];)n.push({left:r,right:r}),r+=1;const s=[];let i=e.length-1,o=t.length-1;for(;i>=r&&o>=r&&e[i]===t[o];)s.push({left:i,right:o}),i-=1,o-=1;return[...n,...s.reverse()]}function rl(e,t){if(e.length===0||t.length===0)return[];if(e.length*t.length>12e5){const o=js(e,t);return o.length>0?o:tl(e,t)}const n=el(e,t),r=[];let s=0,i=0;for(;s<e.length&&i<t.length;)e[s]===t[i]?(r.push({left:s,right:i}),s+=1,i+=1):n[s+1][i]>=n[s][i+1]?s+=1:i+=1;return r}let Be=null,sl=0;const jn=new Map;function il(){return Be||(Be=new Worker(new URL("/assets/diffWorker-CAzvFFr7.js",import.meta.url),{type:"module"}),Be.onmessage=e=>{const t=e.data,n=jn.get(t.id);if(n){if(jn.delete(t.id),!t.ok){n.reject(new Error(t.error));return}n.resolve({files:t.files,tokens:new Map(t.tokens),parseMs:t.parseMs,tokenizeMs:t.tokenizeMs})}},Be.onerror=e=>{const t=new Error(e.message||"Diff worker failed");for(const n of jn.values())n.reject(t);jn.clear(),Be?.terminate(),Be=null}),Be}function ol(e,t,n,r){const s=++sl;return new Promise((i,o)=>{jn.set(s,{resolve:i,reject:o}),il().postMessage({id:s,diffContent:e,inlineMode:t,oldSource:n,language:r})})}const al=1024*1024,ll=2e4,Xr=2e3,Yr={js:"javascript",mjs:"javascript",cjs:"javascript",jsx:"jsx",ts:"typescript",mts:"typescript",cts:"typescript",tsx:"tsx",json:"json",json5:"json5",jsonc:"json",html:"markup",htm:"markup",xml:"markup",svg:"markup",vue:"markup",css:"css",scss:"scss",sass:"sass",less:"less",styl:"stylus",py:"python",pyw:"python",rb:"ruby",php:"php",go:"go",rs:"rust",java:"java",kt:"kotlin",kts:"kotlin",scala:"scala",groovy:"groovy",clj:"clojure",cljs:"clojure",c:"c",h:"c",cpp:"cpp",cc:"cpp",cxx:"cpp",hpp:"cpp",hxx:"cpp",cs:"csharp",fs:"fsharp",swift:"swift",m:"objectivec",mm:"objectivec",dart:"dart",lua:"lua",r:"r",jl:"julia",ex:"elixir",exs:"elixir",erl:"erlang",hrl:"erlang",hs:"haskell",ml:"ocaml",nim:"nim",pl:"perl",pm:"perl",d:"d",zig:"clike",v:"clike",sh:"bash",bash:"bash",zsh:"bash",fish:"bash",ksh:"bash",ps1:"powershell",psm1:"powershell",bat:"batch",cmd:"batch",yml:"yaml",yaml:"yaml",toml:"toml",ini:"ini",cfg:"ini",conf:"ini",properties:"properties",env:"bash",dockerfile:"docker",makefile:"makefile",mk:"makefile",cmake:"cmake",gradle:"groovy",sql:"sql",graphql:"graphql",gql:"graphql",md:"markdown",markdown:"markdown",tex:"latex",proto:"protobuf",diff:"diff",patch:"diff",vim:"vim",nginx:"nginx",apacheconf:"apacheconf",asm:"asm6502",tf:"hcl",hcl:"hcl",sol:"solidity",wasm:"wasm",wat:"wasm"},cl={dockerfile:"docker",makefile:"makefile",cmakelists:"cmake",".bashrc":"bash",".zshrc":"bash",".profile":"bash",".gitconfig":"ini",".npmrc":"ini"};function ul(e){return e.split(/[\\/]/).pop()??e}function nt(e){if(!e)return null;const t=ul(e).toLowerCase(),n=cl[t];if(n)return n;const r=t.lastIndexOf(".");if(r<=0)return Yr[t]??null;const s=t.slice(r+1);return Yr[s]??null}function
|
|
12
|
+
`))return!0;const n=Wr(e),r=Wr(t);return n===r||n==="blank"||r==="blank"}function Ur(e){return e.trim().replace(/(['"`])(?:\\.|[^\\])*?\1/gu,(t,n)=>`${n}${n}`).replace(/\b\d+(?:\.\d+)?\b/gu,"0").replace(/\s+/gu," ")}function Kr(e){const t=e.match(/^\s*(?:([A-Za-z_$][A-Za-z0-9_$]*)|['"]([^'"]+)['"])\s*:/u);return t?.[1]??t?.[2]??null}function Bt(e,t){const n=e.trim(),r=t.trim();if(e===t)return n?/[\p{L}\p{N}_$]/u.test(n)?1:.3:.1;if(n===r)return n?/[\p{L}\p{N}_$]/u.test(n)?.99:.3:.1;if(!Ja(e,t))return 0;const s=Br(n),i=Br(r);if(s.length===0||i.length===0)return 0;const l=2*rl(s,i).length/(s.length+i.length),a=Vr(s,i),c=Vr(Gr(n),Gr(r)),u=l*.5+a*.2+c*.3,f=Ur(n),d=Ur(r);return f===d&&/[\p{L}\p{N}_$]/u.test(f)?Math.max(.72,u):u}function Qa(e,t,n=.42){if(e.length===0||t.length===0)return[];if(e.length*t.length>4e4){const m=e.map(p=>{const w=p.content.trim();return/[\p{L}\p{N}_$]/u.test(w)?w:""}),v=t.map(p=>{const w=p.content.trim();return/[\p{L}\p{N}_$]/u.test(w)?w:""});return js(m,v).filter(p=>m[p.left]!=="").map(p=>({oldLineNumber:e[p.left].lineNumber,newLineNumber:t[p.right].lineNumber,score:Bt(e[p.left].content,t[p.right].content)}))}const r=e.map(m=>Kr(m.content)),s=t.map(m=>Kr(m.content)),i=m=>{const v=new Map;for(const p of m)p&&v.set(p,(v.get(p)??0)+1);return v},o=i(r),l=i(s),a=e.map((m,v)=>t.map((p,w)=>{const k=Bt(m.content,p.content),b=r[v];return b&&b===s[w]&&o.get(b)===1&&l.get(b)===1?Math.max(.55,k):k})),c=a.map((m,v)=>m.map((p,w)=>{const k=e.length<=1?0:v/(e.length-1),b=t.length<=1?0:w/(t.length-1),D=(1-Math.abs(k-b))*1e-4;return p>=n?p+D:p})),u=Array.from({length:e.length+1},()=>Array(t.length+1).fill(0));for(let m=e.length-1;m>=0;m-=1)for(let v=t.length-1;v>=0;v-=1){const p=c[m][v],w=p>=n?p-n+.01+u[m+1][v+1]:Number.NEGATIVE_INFINITY;u[m][v]=Math.max(w,u[m+1][v],u[m][v+1])}const f=[];let d=0,h=0;for(;d<e.length&&h<t.length;){const m=c[d][h],v=m-n+.01;m>=n&&Math.abs(v+u[d+1][h+1]-u[d][h])<1e-6?(f.push({oldLineNumber:e[d].lineNumber,newLineNumber:t[h].lineNumber,score:a[d][h]}),d+=1,h+=1):u[d+1][h]>=u[d][h+1]?d+=1:h+=1}return f}function qa(e,t,n=.7){const r=[];if(e.length*t.length>5e4){const c=new Map;for(const[f,d]of t.entries()){const h=d.content.trim();if(!/[\p{L}\p{N}_$]/u.test(h))continue;const m=c.get(h);m?m.push(f):c.set(h,[f])}const u=new Map(e.map(f=>[f.content.trim(),0]));for(const f of e){const d=f.content.trim();u.set(d,(u.get(d)??0)+1)}for(const[f,d]of e.entries()){const h=d.content.trim(),m=c.get(h);if(u.get(h)!==1||m?.length!==1)continue;const v=m[0];r.push({oldLineNumber:d.lineNumber,newLineNumber:t[v].lineNumber,score:1,oldIndex:f,newIndex:v})}}else for(const[c,u]of e.entries())for(const[f,d]of t.entries()){const h=Bt(u.content,d.content);h<n||r.push({oldLineNumber:u.lineNumber,newLineNumber:d.lineNumber,score:h,oldIndex:c,newIndex:f})}r.sort((c,u)=>u.score-c.score||c.oldIndex-u.oldIndex||c.newIndex-u.newIndex);const s=new Set,i=new Set,o=r.filter(c=>s.has(c.oldIndex)||i.has(c.newIndex)?!1:(s.add(c.oldIndex),i.add(c.newIndex),!0)).sort((c,u)=>c.oldIndex-u.oldIndex),l=[];for(const c of o){const u=l[l.length-1],f=u?.[u.length-1];f&&c.oldIndex===f.oldIndex+1&&c.newIndex===f.newIndex+1?u.push(c):l.push([c])}return l.flatMap(c=>{if(c.length<2)return[];if(c.reduce((v,p)=>v+p.score,0)/c.length<.82||!c.some(v=>v.score>=.95))return[];const f=c[0].oldLineNumber,d=c[c.length-1].oldLineNumber,h=c[0].newLineNumber,m=c[c.length-1].newLineNumber;return h>d+1||f>m+1?c:[]}).map(({oldLineNumber:c,newLineNumber:u,score:f})=>({oldLineNumber:c,newLineNumber:u,score:f}))}function el(e,t){const n=Array.from({length:e.length+1},()=>Array(t.length+1).fill(0));for(let r=e.length-1;r>=0;r-=1)for(let s=t.length-1;s>=0;s-=1)n[r][s]=e[r]===t[s]?n[r+1][s+1]+1:Math.max(n[r+1][s],n[r][s+1]);return n}function nl(e){if(e.length===0)return[];const t=[],n=new Int32Array(e.length).fill(-1);for(let i=0;i<e.length;i+=1){let o=0,l=t.length;for(;o<l;){const a=o+l>>>1;e[t[a]].right<e[i].right?o=a+1:l=a}o>0&&(n[i]=t[o-1]),t[o]=i}const r=[];let s=t[t.length-1]??-1;for(;s>=0;)r.push(e[s]),s=n[s];return r.reverse()}function js(e,t){const n=new Map,r=new Map,s=(o,l,a)=>{const c=o.get(l);c?c.push(a):o.set(l,[a])};e.forEach((o,l)=>s(n,o,l)),t.forEach((o,l)=>s(r,o,l));const i=[];for(const[o,l]of n){const a=r.get(o);l.length===1&&a?.length===1&&i.push({left:l[0],right:a[0]})}return i.sort((o,l)=>o.left-l.left),nl(i)}function tl(e,t){const n=[];let r=0;for(;r<e.length&&r<t.length&&e[r]===t[r];)n.push({left:r,right:r}),r+=1;const s=[];let i=e.length-1,o=t.length-1;for(;i>=r&&o>=r&&e[i]===t[o];)s.push({left:i,right:o}),i-=1,o-=1;return[...n,...s.reverse()]}function rl(e,t){if(e.length===0||t.length===0)return[];if(e.length*t.length>12e5){const o=js(e,t);return o.length>0?o:tl(e,t)}const n=el(e,t),r=[];let s=0,i=0;for(;s<e.length&&i<t.length;)e[s]===t[i]?(r.push({left:s,right:i}),s+=1,i+=1):n[s+1][i]>=n[s][i+1]?s+=1:i+=1;return r}let Be=null,sl=0;const jn=new Map;function il(){return Be||(Be=new Worker(new URL("/assets/diffWorker-CAzvFFr7.js",import.meta.url),{type:"module"}),Be.onmessage=e=>{const t=e.data,n=jn.get(t.id);if(n){if(jn.delete(t.id),!t.ok){n.reject(new Error(t.error));return}n.resolve({files:t.files,tokens:new Map(t.tokens),parseMs:t.parseMs,tokenizeMs:t.tokenizeMs})}},Be.onerror=e=>{const t=new Error(e.message||"Diff worker failed");for(const n of jn.values())n.reject(t);jn.clear(),Be?.terminate(),Be=null}),Be}function ol(e,t,n,r){const s=++sl;return new Promise((i,o)=>{jn.set(s,{resolve:i,reject:o}),il().postMessage({id:s,diffContent:e,inlineMode:t,oldSource:n,language:r})})}const al=1024*1024,ll=2e4,Xr=2e3,Yr={js:"javascript",mjs:"javascript",cjs:"javascript",jsx:"jsx",ts:"typescript",mts:"typescript",cts:"typescript",tsx:"tsx",json:"json",json5:"json5",jsonc:"json",html:"markup",htm:"markup",xml:"markup",svg:"markup",vue:"markup",css:"css",scss:"scss",sass:"sass",less:"less",styl:"stylus",py:"python",pyw:"python",rb:"ruby",php:"php",go:"go",rs:"rust",java:"java",kt:"kotlin",kts:"kotlin",scala:"scala",groovy:"groovy",clj:"clojure",cljs:"clojure",c:"c",h:"c",cpp:"cpp",cc:"cpp",cxx:"cpp",hpp:"cpp",hxx:"cpp",cs:"csharp",fs:"fsharp",swift:"swift",m:"objectivec",mm:"objectivec",dart:"dart",lua:"lua",r:"r",jl:"julia",ex:"elixir",exs:"elixir",erl:"erlang",hrl:"erlang",hs:"haskell",ml:"ocaml",nim:"nim",pl:"perl",pm:"perl",d:"d",zig:"clike",v:"clike",sh:"bash",bash:"bash",zsh:"bash",fish:"bash",ksh:"bash",ps1:"powershell",psm1:"powershell",bat:"batch",cmd:"batch",yml:"yaml",yaml:"yaml",toml:"toml",ini:"ini",cfg:"ini",conf:"ini",properties:"properties",env:"bash",dockerfile:"docker",makefile:"makefile",mk:"makefile",cmake:"cmake",gradle:"groovy",sql:"sql",graphql:"graphql",gql:"graphql",md:"markdown",markdown:"markdown",tex:"latex",proto:"protobuf",diff:"diff",patch:"diff",vim:"vim",nginx:"nginx",apacheconf:"apacheconf",asm:"asm6502",tf:"hcl",hcl:"hcl",sol:"solidity",wasm:"wasm",wat:"wasm"},cl={dockerfile:"docker",makefile:"makefile",cmakelists:"cmake",".bashrc":"bash",".zshrc":"bash",".profile":"bash",".gitconfig":"ini",".npmrc":"ini"};function ul(e){return e.split(/[\\/]/).pop()??e}function nt(e){if(!e)return null;const t=ul(e).toLowerCase(),n=cl[t];if(n)return n;const r=t.lastIndexOf(".");if(r<=0)return Yr[t]??null;const s=t.slice(r+1);return Yr[s]??null}function ic(e){if(e.length>al)return!1;let t=1,n=0;for(let r=0;r<e.length;r+=1)if(e.charCodeAt(r)===10){if(r-n>Xr||(t+=1,t>ll))return!1;n=r+1}return!(e.length-n>Xr)}let Zn=null;function oc(){return Zn||(Zn=ui(()=>import("./index-UqXCGE5m.js").then(e=>e.i),__vite__mapDeps([0,1])).then(e=>e.default??e).catch(e=>{throw Zn=null,e})),Zn}function ac(e,t,n){if(!e.registered(n))return t.split(`
|
|
13
13
|
`).map(u=>[u||" "]);const r=e.highlight(t,n),s=[];let i=[],o=0,l=0;const a=()=>{s.push(i.length>0?i:[" "]),i=[],o+=1},c=(u,f)=>{for(const d of u)if(d.type==="text"){const h=d.value.split(`
|
|
14
|
-
`);for(let m=0;m<h.length;m+=1){m>0&&a();const v=h[m];v.length!==0&&(f?(l+=1,i.push(S.createElement("span",{key:`t-${o}-${l}`,className:f},v))):i.push(v))}}else{const h=Array.isArray(d.properties?.className)?d.properties.className.join(" "):void 0,m=f?h?`${f} ${h}`:f:h;c(d.children,m)}};return c(r,void 0),a(),s}const Cs="termdock:diff-viewer:whitespace:v1",xs="termdock:diff-viewer:context:v1";function fl(e){return e==="default"||e==="trim"||e==="ignore"||e==="ignore-blank-lines"}function dl(e){return e==="all"||e===3||e===10||e===25}function hl(){return{whitespace:Pt(Cs,fl)??"default",context:Pt(xs,dl)??3}}let Cn=hl();const Vt=new Set;function gl(e){return Vt.add(e),()=>{Vt.delete(e)}}function ml(){return Cn}function Ms(e){const t={...Cn,...e};if(!(t.whitespace===Cn.whitespace&&t.context===Cn.context)){Cn=t,$t(Cs,t.whitespace),$t(xs,t.context);for(const n of Vt)n()}}function vl(e){Ms({whitespace:e})}function pl(e){Ms({context:e})}function bl(){return{...S.useSyncExternalStore(gl,ml),setWhitespace:vl,setContext:pl}}const wl=24,yl=32,_l=8e3,As="termdock:diff-viewer:view-type:v1",Es="(min-width: 900px)",Q=new Map,q=new Map,ue=new Map,We=new Map,ae=new Map,Ge=new Map;let Nl=0,kl=0,Sl=0;function K(e,t={}){if(typeof window>"u")return;const n=JSON.stringify({level:"info",message:`DIFF_VIEWER ${e}`,data:{seq:++Nl,ts:Date.now(),...t}});fetch("/api/client-log",{method:"POST",headers:{"Content-Type":"application/json"},body:n,keepalive:!0}).catch(()=>{})}function Jn(e,t={}){if(typeof window>"u")return;const n=JSON.stringify({level:e==="still_active"?"warn":"info",message:`DIFF_LOADING ${e}`,data:{ts:Date.now(),...t}});fetch("/api/client-log",{method:"POST",headers:{"Content-Type":"application/json"},body:n,keepalive:!0}).catch(()=>{})}function jl(e){const t=e?.context===void 0?"default":String(e.context);return`${e?.algorithm??"default"}:${e?.whitespace??"default"}:${t}`}function Xe(e,t,n){return`${t??""}\0${e??""}\0${jl(n)}`}function tt(e,t,n,r,s){return`${Xe(e,t,n)}\0${r}\0${s??""}`}function Cl(e,t){for(ae.delete(e),ae.set(e,t);ae.size>yl;){const n=ae.keys().next().value;if(n===void 0)break;ae.delete(n)}return t.result}function Ds(e,t,n,r,s,i,o){const l=tt(n,r,s,i,o),a=ae.get(l);if(a?.diffContent===e&&a.oldSource===t)return ae.delete(l),ae.set(l,a),Promise.resolve(a.result);const c=Ge.get(l);if(c?.diffContent===e&&c.oldSource===t)return c.promise;const u=ol(e,i,t,o).then(f=>Ge.get(l)?.promise===u?Cl(l,{diffContent:e,oldSource:t,result:f}):f).finally(()=>{Ge.get(l)?.promise===u&&Ge.delete(l)});return Ge.set(l,{diffContent:e,oldSource:t,promise:u}),u}function xl(e,t,n){const r=`${Xe(e,t,n)}\0`;for(const s of Array.from(ae.keys()))s.startsWith(r)&&ae.delete(s);for(const s of Array.from(Ge.keys()))s.startsWith(r)&&Ge.delete(s)}function $s(e,t){for(Q.has(e)&&Q.delete(e),Q.set(e,t);Q.size>wl;){const n=Q.keys().next().value;if(n===void 0)break;Q.delete(n)}return t}function Pn(e){const t=We.get(e);t&&(We.delete(e),t.abort())}function Ps(e,t,n,r,s,i){const o=q.get(e);if(o)return K("preload_reuse_pending",{traceId:s,key:e,filePath:t,cwd:n}),o;const l=new AbortController;We.set(e,l),K("preload_start",{traceId:s,key:e,filePath:t,cwd:n,version:r});const a=ns(t,void 0,n,l.signal,"preload_diff",s,void 0,void 0,i).then(c=>(K("preload_result",{traceId:s,key:e,filePath:t,cwd:n,bytes:c.diff?.length??0,error:c.error??null,tooLarge:!!c.tooLarge}),(ue.get(e)??0)===r?$s(e,c):c)).catch(c=>{throw K("preload_error",{traceId:s,key:e,filePath:t,cwd:n,error:c instanceof Error?c.message:String(c)}),c}).finally(()=>{q.get(e)===a&&q.delete(e),We.get(e)===l&&We.delete(e)});return q.set(e,a),a}function it(e,t,n){const r=Xe(e,t,n),s=Q.get(r);return s&&(Q.delete(r),Q.set(r,s)),s}function Ml(e,t,n=!1,r){const s=Xe(e,t,r);n&&(Pn(s),We.get(s)?.abort(),Q.delete(s),q.delete(s),ue.set(s,(ue.get(s)??0)+1));const i=ue.get(s)??0,o=it(e,t,r);return o?Promise.resolve(o):Ps(s,e,t,i,void 0,r)}function Al(e,t,n){const r=Xe(e,t,n);Pn(r),q.delete(r);const s=(ue.get(r)??0)+1;return ue.set(r,s),Ps(r,e,t,s,void 0,n)}function
|
|
14
|
+
`);for(let m=0;m<h.length;m+=1){m>0&&a();const v=h[m];v.length!==0&&(f?(l+=1,i.push(S.createElement("span",{key:`t-${o}-${l}`,className:f},v))):i.push(v))}}else{const h=Array.isArray(d.properties?.className)?d.properties.className.join(" "):void 0,m=f?h?`${f} ${h}`:f:h;c(d.children,m)}};return c(r,void 0),a(),s}const Cs="termdock:diff-viewer:whitespace:v1",xs="termdock:diff-viewer:context:v1";function fl(e){return e==="default"||e==="trim"||e==="ignore"||e==="ignore-blank-lines"}function dl(e){return e==="all"||e===3||e===10||e===25}function hl(){return{whitespace:Pt(Cs,fl)??"default",context:Pt(xs,dl)??3}}let Cn=hl();const Vt=new Set;function gl(e){return Vt.add(e),()=>{Vt.delete(e)}}function ml(){return Cn}function Ms(e){const t={...Cn,...e};if(!(t.whitespace===Cn.whitespace&&t.context===Cn.context)){Cn=t,$t(Cs,t.whitespace),$t(xs,t.context);for(const n of Vt)n()}}function vl(e){Ms({whitespace:e})}function pl(e){Ms({context:e})}function bl(){return{...S.useSyncExternalStore(gl,ml),setWhitespace:vl,setContext:pl}}const wl=24,yl=32,_l=8e3,As="termdock:diff-viewer:view-type:v1",Es="(min-width: 900px)",Q=new Map,q=new Map,ue=new Map,We=new Map,ae=new Map,Ge=new Map;let Nl=0,kl=0,Sl=0;function K(e,t={}){if(typeof window>"u")return;const n=JSON.stringify({level:"info",message:`DIFF_VIEWER ${e}`,data:{seq:++Nl,ts:Date.now(),...t}});fetch("/api/client-log",{method:"POST",headers:{"Content-Type":"application/json"},body:n,keepalive:!0}).catch(()=>{})}function Jn(e,t={}){if(typeof window>"u")return;const n=JSON.stringify({level:e==="still_active"?"warn":"info",message:`DIFF_LOADING ${e}`,data:{ts:Date.now(),...t}});fetch("/api/client-log",{method:"POST",headers:{"Content-Type":"application/json"},body:n,keepalive:!0}).catch(()=>{})}function jl(e){const t=e?.context===void 0?"default":String(e.context);return`${e?.algorithm??"default"}:${e?.whitespace??"default"}:${t}`}function Xe(e,t,n){return`${t??""}\0${e??""}\0${jl(n)}`}function tt(e,t,n,r,s){return`${Xe(e,t,n)}\0${r}\0${s??""}`}function Cl(e,t){for(ae.delete(e),ae.set(e,t);ae.size>yl;){const n=ae.keys().next().value;if(n===void 0)break;ae.delete(n)}return t.result}function Ds(e,t,n,r,s,i,o){const l=tt(n,r,s,i,o),a=ae.get(l);if(a?.diffContent===e&&a.oldSource===t)return ae.delete(l),ae.set(l,a),Promise.resolve(a.result);const c=Ge.get(l);if(c?.diffContent===e&&c.oldSource===t)return c.promise;const u=ol(e,i,t,o).then(f=>Ge.get(l)?.promise===u?Cl(l,{diffContent:e,oldSource:t,result:f}):f).finally(()=>{Ge.get(l)?.promise===u&&Ge.delete(l)});return Ge.set(l,{diffContent:e,oldSource:t,promise:u}),u}function xl(e,t,n){const r=`${Xe(e,t,n)}\0`;for(const s of Array.from(ae.keys()))s.startsWith(r)&&ae.delete(s);for(const s of Array.from(Ge.keys()))s.startsWith(r)&&Ge.delete(s)}function $s(e,t){for(Q.has(e)&&Q.delete(e),Q.set(e,t);Q.size>wl;){const n=Q.keys().next().value;if(n===void 0)break;Q.delete(n)}return t}function Pn(e){const t=We.get(e);t&&(We.delete(e),t.abort())}function Ps(e,t,n,r,s,i){const o=q.get(e);if(o)return K("preload_reuse_pending",{traceId:s,key:e,filePath:t,cwd:n}),o;const l=new AbortController;We.set(e,l),K("preload_start",{traceId:s,key:e,filePath:t,cwd:n,version:r});const a=ns(t,void 0,n,l.signal,"preload_diff",s,void 0,void 0,i).then(c=>(K("preload_result",{traceId:s,key:e,filePath:t,cwd:n,bytes:c.diff?.length??0,error:c.error??null,tooLarge:!!c.tooLarge}),(ue.get(e)??0)===r?$s(e,c):c)).catch(c=>{throw K("preload_error",{traceId:s,key:e,filePath:t,cwd:n,error:c instanceof Error?c.message:String(c)}),c}).finally(()=>{q.get(e)===a&&q.delete(e),We.get(e)===l&&We.delete(e)});return q.set(e,a),a}function it(e,t,n){const r=Xe(e,t,n),s=Q.get(r);return s&&(Q.delete(r),Q.set(r,s)),s}function Ml(e,t,n=!1,r){const s=Xe(e,t,r);n&&(Pn(s),We.get(s)?.abort(),Q.delete(s),q.delete(s),ue.set(s,(ue.get(s)??0)+1));const i=ue.get(s)??0,o=it(e,t,r);return o?Promise.resolve(o):Ps(s,e,t,i,void 0,r)}function Al(e,t,n){const r=Xe(e,t,n);Pn(r),q.delete(r);const s=(ue.get(r)??0)+1;return ue.set(r,s),Ps(r,e,t,s,void 0,n)}function lc(e,t,n){const r=Xe(e,t,n);Pn(r),Q.delete(r),q.delete(r),xl(e,t,n),ue.set(r,(ue.get(r)??0)+1)}function El(e,t,n,r=!1,s,i,o,l){const a=Xe(e,t,l);r&&(Pn(a),Q.delete(a),q.delete(a),ue.set(a,(ue.get(a)??0)+1));const c=it(e,t,l);if(c&&!r)return K("visible_cache_hit",{traceId:s,key:a,filePath:e,cwd:t,bytes:c.diff?.length??0,error:c.error??null}),Promise.resolve(c);const u=ue.get(a)??0,f=q.get(a);if(f&&!r)return K(We.has(a)?"visible_reuse_preload":"visible_reuse_pending",{traceId:s,key:a,filePath:e,cwd:t}),f;Pn(a),K("visible_start",{interactionId:i,requestSlotId:o,traceId:s,key:a,filePath:e,cwd:t,force:r,version:u,replacedPreload:!!f,pendingExists:!!f,cacheSize:Q.size,promiseSize:q.size});const d=ns(e,void 0,t,n,"view_diff",s,i??void 0,o??void 0,l).then(h=>(K("visible_result",{interactionId:i,requestSlotId:o,traceId:s,key:a,filePath:e,cwd:t,bytes:h.diff?.length??0,error:h.error??null,tooLarge:!!h.tooLarge,truncated:!!h.truncated}),(ue.get(a)??0)===u?$s(a,h):h)).catch(h=>{throw K("visible_error",{interactionId:i,requestSlotId:o,traceId:s,key:a,filePath:e,cwd:t,error:h instanceof Error?h.message:String(h),aborted:n.aborted,abortReason:n.aborted?String(n.reason??""):void 0}),h}).finally(()=>{q.get(a)===d&&q.delete(a)});return q.set(a,d),d}function Qn(e,t){if(e)return t&&e.startsWith(`${t}/`)?e.slice(t.length+1):e}async function cc(e,t,n,r){if(!e||!t)return;const s=await Ml(e,t,!1,r);s.error||s.tooLarge||!s.diff||Os(s.diff)||await Ds(s.diff,void 0,e,t,r,n,nt(e)??void 0)}function Dl(e,t){return!e||!mi(e)?!1:t?.status!=="deleted"&&t?.status!=="renamed"&&t?.status!=="copied"}function Zr(e,t){if(!e)return t;const n=e.split("/").filter(Boolean);return{name:n.pop()||e,dir:n.join("/")}}function fe(e){return e==="/dev/null"||e==="dev/null"}function Gt(e,t){return t?fe(t)||t.startsWith("/")?t:e?`${e}/${t}`:t:null}function be(e,t){return!e||fe(e)?"/dev/null":e.startsWith("/")?e:t.referenceFilePath&&e===t.selectedFilePath?t.referenceFilePath:Gt(t.repoRoot,e)??e}function Oe(e,t){return fe(t)?"/dev/null":t.startsWith("/")?t:`${e}/${t}`}function $l(e){if(e.length<2||!e.startsWith('"')||!e.endsWith('"'))return null;let t="";for(let n=1;n<e.length-1;n+=1){const r=e[n];if(r!=="\\"){t+=r;continue}if(n+=1,n>=e.length-1)return null;const s=e[n];if(s==="\\"||s==='"')t+=s;else if(s==="n")t+=`
|
|
15
15
|
`;else if(s==="t")t+=" ";else if(s==="r")t+="\r";else if(/[0-7]/.test(s)&&/^[0-7]{3}$/.test(e.slice(n,n+3)))t+=String.fromCharCode(parseInt(e.slice(n,n+3),8)),n+=2;else return null}return t}function Jr(e,t,n){if(!e||!n)return!1;let r=e.slice(4).trimEnd();const s=r.indexOf(" ");if(s>=0&&(r=r.slice(0,s)),fe(n))return r==="/dev/null";const i=`${t}/${n}`;return r===i?!0:r.startsWith('"')?$l(r)===i:!1}function Pl(e,t,n,r){if(!e)return null;const s=e.split(`
|
|
16
16
|
`),i=[];for(let w=0;w<s.length;w+=1)s[w].startsWith("diff --git ")&&i.push(w);if(n>=i.length)return null;const o=i[n],l=n+1<i.length?i[n+1]:s.length,a=[];for(let w=o;w<l;w+=1)s[w].startsWith("@@ ")&&a.push(w);if(a.length===0||r>=a.length)return null;const c=s.slice(o,a[0]),u=c.find(w=>w.startsWith("--- ")),f=c.find(w=>w.startsWith("+++ "));if(!u||!f)return null;const d=t.oldPath&&!fe(t.oldPath)?t.oldPath:"/dev/null",h=t.newPath&&!fe(t.newPath)?t.newPath:"/dev/null";if(!Jr(u,"a",d)||!Jr(f,"b",h))return null;const m=a[r],v=r+1<a.length?a[r+1]:l,p=[...c,...s.slice(m,v)].join(`
|
|
17
17
|
`);return p.endsWith(`
|
|
@@ -30,6 +30,6 @@ ${r.length>0?`${r.join(`
|
|
|
30
30
|
`),{hunks:[o]})}function Rl(e){const t=e.changes.filter(s=>s.type==="insert"||s.type==="delete").map(s=>`${s.type}:${s.content}`),n=t.length>0?t.join(`
|
|
31
31
|
`):e.changes.map(s=>s.content).join(`
|
|
32
32
|
`);let r=2166136261;for(let s=0;s<n.length;s+=1)r^=n.charCodeAt(s),r=Math.imul(r,16777619);return(r>>>0).toString(16).padStart(8,"0")}function Ts(e){const t=e.changes.filter(r=>r.type==="insert"||r.type==="delete").map(r=>`${r.type}:${r.content}`).join(`
|
|
33
|
-
`);let n=2166136261;for(let r=0;r<t.length;r+=1)n^=t.charCodeAt(r),n=Math.imul(n,16777619);return(n>>>0).toString(16).padStart(8,"0")}function un(e){return e&&"lineNumber"in e&&typeof e.lineNumber=="number"?e.lineNumber:null}function Hl(e){const t=Array.from(e.matchAll(/^diff --git /gmu),n=>n.index);return t.length===0?e?[e]:[]:t.map((n,r)=>e.slice(n,t[r+1]??e.length))}function zl(e){const t=e.trim();return t?/^(import|export\s+type|using|#include)\b/.test(t)||/^from\s+[\w.'"/-]+\s+import\b/.test(t)||/^package\s+[\w.]+;?$/.test(t):!0}function Bl(e){const t=e.changes.filter(r=>r.type==="insert"||r.type==="delete");if(t.length===0||!t.every(r=>zl(r.content)))return!1;const n=new Set;for(const r of t){const s=un(r);if(s!==null){if(n.has(s))return!1;n.add(s)}}return!0}function Vl(e){const t=[];let n=0;for(;n<e.changes.length;){const r=e.changes[n];if(r.type==="normal"){t.push(r),n+=1;continue}const s=[];for(;n<e.changes.length&&e.changes[n].type!=="normal";)s.push(e.changes[n]),n+=1;const i=s.filter(d=>d.type==="delete"),o=s.filter(d=>d.type==="insert"),l=Qa(i.map(d=>({content:d.content,lineNumber:un(d)??-1})),o.map(d=>({content:d.content,lineNumber:un(d)??-1}))),a=new Map(i.map((d,h)=>[un(d)??-1,h])),c=new Map(o.map((d,h)=>[un(d)??-1,h]));let u=0,f=0;for(const d of l){const h=a.get(d.oldLineNumber),m=c.get(d.newLineNumber);if(!(h===void 0||m===void 0)){for(;f<m;)t.push(o[f++]);for(;u<h;)t.push(i[u++]);t.push(i[h],o[m]),u=h+1,f=m+1}}for(;f<o.length;)t.push(o[f++]);for(;u<i.length;)t.push(i[u++])}return{...e,changes:t}}function ot(e,t){return`${e??""}\0${t}`}function Ls(e,t){return e===t||t.endsWith(`/${e}`)||e.endsWith(`/${t}`)}function Gl(e){return typeof e.sectionIndex=="number"||typeof e.sectionFingerprint=="string"&&e.sectionFingerprint.length>0}function Wl(e,t,n,r,s){if(!e||e.length===0)return{fingerprint:s};const i=ot(t,n);let o;for(const l of e){if(Gl(l))continue;const a=[l.filePath,l.newPath,l.oldPath].filter(d=>typeof d=="string"&&d.length>0),c=a.some(d=>ot(l.repoRoot,d)===i),u=a.some(d=>Ls(d,n));if(c||u){if(l.fingerprint===s)return{current:l,fingerprint:s};!o&&l.hunkHeader===r&&(o=l)}}return{stale:o,fingerprint:s}}function Ul(e,t,n,r,s,i,o){if(!e||e.length===0)return{fingerprint:o};const l=ot(t,n);let a;for(const c of e){const u=[c.filePath,c.newPath,c.oldPath].filter(d=>typeof d=="string"&&d.length>0);if(!(!(u.some(d=>ot(c.repoRoot,d)===l)||u.some(d=>Ls(d,n)))||c.hunkHeader!==r)){if(c.sectionFingerprint===o)return{current:c,fingerprint:o};!a&&c.fingerprint===s&&c.sectionIndex===i&&(a=c)}}return{stale:a,fingerprint:o}}function Kl(e){const t=e.changes[e.changes.length-1];return t?Ce(t):null}function Xl(e){let t=0;for(const n of e)t=Math.max(t,n.oldStart+Math.max(0,n.oldLines-1),n.newStart+Math.max(0,n.newLines-1));return Math.max(3,String(t).length+.5)}function Yl(e){return e instanceof DOMException&&e.name==="AbortError"}function Et(e){return typeof e!="number"||!Number.isFinite(e)?null:e>=1024*1024?`${(e/(1024*1024)).toFixed(1)} MB`:e>=1024?`${Math.ceil(e/1024)} KB`:`${e} bytes`}function Dt(e){if(e.tooLarge){const t=Et(e.size),n=Et(e.maxBytes);return`Diff is too large${t?` (${t}`:""}${n?`${t?", ":" ("}limit ${n}`:""}${t||n?")":""}.`}if(e.skippedFiles&&e.skippedFiles.length>0){const t=e.skippedFiles[0],n=Et(t.size),r=e.skippedFiles.length>1?` and ${e.skippedFiles.length-1} more file(s)`:"";return t.reason==="binary-file"?`Binary file changed: ${t.path}${n?` (${n})`:""}. Content was not loaded${r}.`:`Skipped large untracked file ${t.path}${n?` (${n})`:""}${r}.`}return null}function Os(e){if(!e)return!1;let t=1;for(let n=0;n<e.length;n+=1)if(e.charCodeAt(n)===10&&(t+=1,t>_l))return!0;return!1}function Zl(e){return e==="unified"||e==="split"}function Jl(){return Pt(As,Zl)??"unified"}function Ql(e,t){return typeof e!="number"||!Number.isFinite(e)||e<=0?null:new Intl.DateTimeFormat(t==="zh"?"zh-CN":"en",{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"}).format(new Date(e))}function ql(){return typeof window<"u"&&typeof window.matchMedia=="function"&&window.matchMedia(Es).matches}function ec(e){return typeof HTMLElement>"u"||!(e instanceof HTMLElement)?!1:e.tagName==="INPUT"||e.tagName==="TEXTAREA"||e.isContentEditable||!!e.closest(".xterm")}function nc(){const{t:e}=es(),[t,n]=S.useState(!1);return t?null:g.jsxs("button",{type:"button",onClick:()=>n(!0),className:"flex w-full items-center justify-center gap-1.5 border-b border-border/15 bg-surface-2/40 px-2 py-1 text-[10px] text-muted-foreground transition active:scale-[0.99] hover:bg-surface-2 hover:text-foreground",title:e("rightSidebar.horizontalScrollHint"),children:[g.jsx(_i,{size:11,className:"shrink-0"}),g.jsx("span",{className:"truncate",children:e("rightSidebar.horizontalScrollHint")})]})}function cc({filePath:e,repoRoot:t,referenceFilePath:n,interactionId:r,requestSlotId:s,changedFile:i,onInsertDiffReference:o,onHunkGitAction:l,onReferenceCopied:a,insertedReferenceKey:c,copiedReferenceKey:u,wrap:f=!1,showScrollHint:d=!1,reloadKey:h=0,embedded:m=!1,active:v=!0,lightweight:p=!1,auditRecords:w,diffOverride:k,preparedDiff:b,viewType:D,inlineMode:M="words",diffOptions:A,oldSourceOverride:E,onClearAuditRecord:$,onContentReady:T,onSummaryChange:F}){const{t:y,locale:de}=es(),I=fi(N=>N.rootPath),ne=S.useRef(null);if(ne.current===null){const N=i?.repoRoot??t??(e?.startsWith("/")?null:I),C=Qn(e,N),_=k===void 0&&b===void 0?it(C,N??void 0,A):void 0,j=k!==void 0?k:_?.diff??null,L=p?"none":M,O=nt(e)??void 0,P=tt(C,N??void 0,A,L,O),x=j?ae.get(P):void 0,V=x?.diffContent===j?x:void 0;V&&(ae.delete(P),ae.set(P,V)),ne.current={diffContent:j,diffNotice:_?Dt(_):null,diffError:_?.error??null,diffLoading:!!(v&&k===void 0&&b===void 0&&!_),parsedFiles:V?.result.files??[],workerTokens:V?.result.tokens??new Map,parsedDiffInput:V?{cacheKey:P,diffContent:j,oldSource:V.oldSource}:null,oldSourceContent:V?.oldSource??null,oldSourceResolvedFromCache:V?.oldSource!==void 0}}const W=ne.current,[Ee,De]=S.useState(()=>Jl()),[ye,gn]=S.useState(()=>ql()),[ie,te]=S.useState(W.diffContent),[Ie,$e]=S.useState(W.diffNotice),[ht,me]=S.useState(W.diffLoading),[Ln,he]=S.useState(W.diffError),[Ye,Ze]=S.useState(W.parsedFiles),[Je,Qe]=S.useState(W.workerTokens),[Pe,qe]=S.useState(W.parsedDiffInput),[_e,Te]=S.useState(W.oldSourceContent),[Ne,Fe]=S.useState(()=>!!(v&&b===void 0&&E===void 0&&k===void 0&&(i?.repoRoot??t??I)&&e&&!i?.untracked&&i?.status!=="added"&&!W.oldSourceResolvedFromCache)),Is=S.useRef(W.oldSourceResolvedFromCache?h:null),[Fs,Rs]=S.useState(()=>new Set),[ve,mn]=S.useState(null),tr=S.useRef(h),Le=di(a),pe=(D??Ee)==="split"&&ye?"split":"unified";S.useEffect(()=>{if(typeof window>"u"||typeof window.matchMedia!="function")return;const N=window.matchMedia(Es),C=()=>gn(N.matches);return C(),N.addEventListener?.("change",C),()=>N.removeEventListener?.("change",C)},[]);const rr=S.useCallback(N=>{De(N),$t(As,N)},[]),{whitespace:Hs,context:zs,setWhitespace:Bs,setContext:Vs}=bl(),sr=k!==void 0||b!==void 0,On=S.useRef(null),vn=S.useRef(!1),[Gs,ir]=S.useState(null),In=S.useCallback(N=>{const C=On.current;if(!C)return;const _=C.querySelectorAll("[data-diff-hunk-anchor]");_.length!==0&&ir(j=>{const O=((j!==null&&j>=0&&j<_.length?j:N===1?-1:0)+N+_.length)%_.length,P=_[O];return P instanceof HTMLElement&&P.scrollIntoView({behavior:"smooth",block:"start"}),O})},[]);S.useEffect(()=>{const N=C=>{if(C.key!=="F7")return;const _=On.current;if(!_)return;const j=document.activeElement,L=j instanceof Node&&_.contains(j);!vn.current&&!L||ec(j)||(C.preventDefault(),In(C.shiftKey?-1:1))};return window.addEventListener("keydown",N),()=>window.removeEventListener("keydown",N)},[In]);const ce=i?.repoRoot??null,pn=i?.status??null,or=ce??t??I,Fn=ce??t??I,gt=n??i?.absolutePath??Gt(Fn,e);S.useEffect(()=>{if(b!==void 0){Te(null),Fe(!1);return}if(E!==void 0){Te(E),Fe(!1);return}const N=ce??t??I;if(!v||k!==void 0||!N||!e||i?.untracked||pn==="added"){Te(null),Fe(!1);return}if(Is.current===h){Fe(!1);return}Te(null),Fe(!0);const C=new AbortController;return hi(e,N,"HEAD",C.signal,"ref").then(j=>{C.signal.aborted||(Te(j.truncated||j.error?null:j.content),Fe(!1))}).catch(()=>{C.signal.aborted||(Te(null),Fe(!1))}),()=>C.abort()},[v,i?.untracked,ce,pn,k,e,E,b,h,t,I]),S.useEffect(()=>{if(b!==void 0)return;if(k!==void 0){te(k),$e(null),he(null),me(!1),mn(null);return}if(!v){me(!1),K("effect_skip_inactive",{interactionId:r,requestSlotId:s,filePath:e,repoRoot:t,changedFileRepoRoot:ce,rootPath:I});return}let N=!1,C=null;const _=new AbortController,j=e,L=ce??t??(j?.startsWith("/")?null:I),O=++kl,P=`diff-${Date.now().toString(36)}-${(++Sl).toString(36)}`;let x=!1;const V=performance.now(),H=(R,Se={})=>{x||(x=!0,Jn("end",{loadingId:O,interactionId:r,requestSlotId:s,traceId:P,reason:R,durationMs:Math.round(performance.now()-V),filePath:j,gitRoot:L,...Se}))},re=Qn(j,L),He=j&&L&&!j.startsWith("/")?`${L}/${j}`:j,oe=tr.current!==h;if(tr.current=h,j&&!L){K("effect_wait_for_repo_root",{interactionId:r,requestSlotId:s,traceId:P,filePath:j,repoRoot:t,changedFileRepoRoot:ce,rootPath:I}),te(null),$e(null),he(null),mn(null),me(!1),H("waiting_for_repo_root");return}const U=it(re,L??void 0,A);Jn("start",{loadingId:O,interactionId:r,requestSlotId:s,traceId:P,filePath:j,requestPath:re,gitRoot:L,readablePath:He,forceReload:oe,hasCachedDiff:!!U,embedded:m,active:v});const pt=window.setTimeout(()=>{x||N||Jn("still_active",{loadingId:O,interactionId:r,requestSlotId:s,traceId:P,filePath:j,requestPath:re,gitRoot:L,durationMs:Math.round(performance.now()-V),hasCachedDiff:!!U,controllerAborted:_.signal.aborted,abortReason:_.signal.aborted?String(_.signal.reason??""):void 0,cacheSize:Q.size,promiseSize:q.size})},3e3),bt=window.setTimeout(()=>{x||N||(Jn("still_active_long",{loadingId:O,interactionId:r,requestSlotId:s,traceId:P,filePath:j,requestPath:re,gitRoot:L,durationMs:Math.round(performance.now()-V),hasCachedDiff:!!U,controllerAborted:_.signal.aborted,abortReason:_.signal.aborted?String(_.signal.reason??""):void 0,cacheSize:Q.size,promiseSize:q.size}),he("Diff response is taking too long to finish in the browser. Try selecting the file again."),me(!1),H("client_watchdog_timeout"))},1e4);K("effect_start",{interactionId:r,requestSlotId:s,traceId:P,loadingId:O,filePath:j,requestPath:re,gitRoot:L,readablePath:He,forceReload:oe,hasCachedDiff:!!U,cachedBytes:U?.diff?.length??0}),te(U?.diff??null),$e(U?Dt(U):null),me(!U),he(U?.error??null),mn(null);const en=()=>(oe&&U?Al(re,L??void 0,A):El(re,L??void 0,_.signal,oe,P,r,s,A)).then(R=>{if(N)return;const Se=Dt(R),Nn=Os(R.diff);$e(Nn?"Diff has too many lines to preview safely.":Se),te(R.tooLarge||Nn?"":R.diff),he(R.error??null),K("state_set_result",{interactionId:r,requestSlotId:s,traceId:P,loadingId:O,filePath:j,requestPath:re,gitRoot:L,bytes:R.diff?.length??0,tooLargeToRender:Nn,resultTooLarge:!!R.tooLarge,error:R.error??null})}).catch(R=>{if(N||Yl(R))return;const Se=R instanceof Error?R.message:"Failed to load diff";U?.diff?($e(Se),he(null)):(te(null),$e(null),he(Se)),K("state_set_error",{interactionId:r,requestSlotId:s,traceId:P,filePath:j,requestPath:re,gitRoot:L,error:Se,hadCachedDiff:!!U?.diff})}).finally(()=>{N||me(!1),H(N?"cancelled_finally":"finally"),K("load_text_finally",{interactionId:r,requestSlotId:s,traceId:P,loadingId:O,filePath:j,requestPath:re,gitRoot:L,cancelled:N})});return U&&!oe?(me(!1),H("cache_hit")):U&&oe?en():Dl(He,pn?{status:pn}:null)?gi(He,_.signal,"view_diff_image",s?`${s}:image`:void 0).then(R=>{N||(C=URL.createObjectURL(R.blob),mn({objectUrl:C,size:R.size,mimeType:R.mimeType}),H("image_preview_loaded",{bytes:R.size,mimeType:R.mimeType}))}).catch(()=>{if(!(N||_.signal.aborted))return en()}).finally(()=>{N||me(!1),N&&H("image_cancelled_finally")}):en(),()=>{N=!0,_.abort(),mi(s),window.clearTimeout(pt),window.clearTimeout(bt),C&&URL.revokeObjectURL(C),H("cleanup"),K("effect_cleanup",{interactionId:r,requestSlotId:s,traceId:P,loadingId:O,filePath:j,requestPath:re,gitRoot:L,loadingEnded:x,signalAborted:_.signal.aborted,abortReason:_.signal.aborted?String(_.signal.reason??""):void 0,cacheSize:Q.size,promiseSize:q.size})}},[v,ce,pn,A,k,e,r,b,h,t,s,I]),S.useEffect(()=>{if(b!==void 0)return;if(!ie||ie.trim()===""){Ze([]),Qe(new Map),qe(null);return}let N=!1;const C=performance.now(),_=ce??t??(e?.startsWith("/")?null:I),j=Qn(e,_),L=p?"none":M,O=nt(e)??void 0,P=tt(j,_??void 0,A,L,O);return Ds(ie,_e??void 0,j,_??void 0,A,L,O).then(x=>{N||(Ze(x.files),Qe(x.tokens),qe({cacheKey:P,diffContent:ie,oldSource:_e??void 0}),K("worker_parse_done",{filePath:e,bytes:ie.length,files:x.files.length,parseMs:x.parseMs,tokenizeMs:x.tokenizeMs,durationMs:Math.round(performance.now()-C)}))}).catch(x=>{N||(Ze([]),Qe(new Map),qe({cacheKey:P,diffContent:ie,oldSource:_e??void 0}),he(x instanceof Error?x.message:String(x)),K("worker_parse_error",{filePath:e,bytes:ie.length,durationMs:Math.round(performance.now()-C),error:x instanceof Error?x.message:String(x)}))}),()=>{N=!0}},[ce,ie,A,e,M,p,_e,b,t,I]);const ge=b!==void 0?b?.diffContent??null:ie,bn=b!==void 0?b?.diffNotice??null:Ie,ar=b!==void 0?b?.diffError??null:Ln,wn=ar?.toLowerCase().includes("signal is aborted")?null:ar,lr=ce??t??(e?.startsWith("/")?null:I),Ws=Qn(e,lr),Us=tt(Ws,lr??void 0,A,p?"none":M,nt(e)??void 0),Ks=!ie||Pe?.cacheKey===Us&&Pe.diffContent===ie&&Pe.oldSource===(_e??void 0),mt=b!==void 0?!1:ht||Ne||!Ks,cr=b!==void 0?b?.files??[]:Ye,B=S.useMemo(()=>cr.map(N=>N.type==="modify"&&N.oldPath!==N.newPath&&N.oldPath!=="/dev/null"&&N.newPath!=="/dev/null"?{...N,type:"rename"}:N),[cr]);S.useEffect(()=>{!v||mt||ge===null&&!wn&&!ve&&k===void 0&&b===void 0||T?.()},[v,ge,wn,mt,k,ve,T,b]);const ur=w??[],Xs=b!==void 0?b?.tokens??new Map:Je,Rn=S.useMemo(()=>{let N=0,C=0;for(const _ of B)for(const j of _.hunks)for(const L of j.changes)L.type==="insert"&&(N+=1),L.type==="delete"&&(C+=1);return{additions:N,deletions:C}},[B]);S.useEffect(()=>{F&&F(B.length>0?{files:B.length,...Rn}:null)},[B.length,F,Rn]);const Ys=S.useMemo(()=>{const N=new Map;for(const C of B){let _=0,j=0;for(const L of C.hunks)for(const O of L.changes)O.type==="insert"&&(_+=1),O.type==="delete"&&(j+=1);N.set(`${C.oldRevision}-${C.newRevision}-${C.newPath}`,{additions:_,deletions:j})}return N},[B]),ke=Zr(e,{name:y("diffViewer.workingTree"),dir:y("diffViewer.allUnstaged")}),Re=`diff:whole:${e??"all"}`,Hn=S.useMemo(()=>{if(!ge)return"";const N={repoRoot:Fn,selectedFilePath:e,referenceFilePath:gt},C=B.flatMap(_=>{const j=_.newPath&&!fe(_.newPath)?_.newPath:_.oldPath&&!fe(_.oldPath)?_.oldPath:"unknown file",L=be(j,N);return _.hunks.map((O,P)=>({filePath:L,hunkIndex:P,hunk:O}))});return rt(Tl(ge,B,N),{hunks:C})},[ge,e,B,Fn,gt]),Zs=S.useCallback(()=>{!Hn||!o||o(e?`${ke.name} diff`:y("diffViewer.allDiffLabel"),Hn,Re)},[e,o,y,ke.name,Re,Hn]),[vt,fr]=S.useState(null),[zn,Bn]=S.useState(null),[yn,Vn]=S.useState(null);S.useEffect(()=>{Bn(null),Vn(null)},[B]),S.useEffect(()=>{if(!yn)return;const N=window.setTimeout(()=>Vn(null),5e3);return()=>window.clearTimeout(N)},[yn]);const _n=ce??t??(e?.startsWith("/")?null:I),dr=!!(l&&_n&&k==null&&b==null),hr=S.useCallback(async(N,C,_,j,L,O)=>{if(!l||!_n)return;const P=ge?Pl(ge,_,j,L):null;if(!P){Bn({key:C,message:y("diffViewer.hunkActionUnavailable")});return}fr(C),Bn(null);try{await l({mode:N,patch:P,cwd:_n,path:Gt(_n,O)??O})}catch(x){Bn({key:C,message:x instanceof Error?x.message:String(x)})}finally{fr(x=>x===C?null:x),Vn(x=>x===C?null:x)}},[l,_n,ge,y]),Js=S.useMemo(()=>{const N=new Map;for(const C of B){const _=p?[]:C.hunks.flatMap(O=>O.changes.filter(P=>P.type==="delete").map(P=>({content:P.content,lineNumber:P.lineNumber}))),j=p?[]:C.hunks.flatMap(O=>O.changes.filter(P=>P.type==="insert").map(P=>({content:P.content,lineNumber:P.lineNumber}))),L=p?[]:qa(_,j);for(const O of C.hunks){const P=new Set(O.changes.filter(H=>H.type==="delete").map(H=>H.lineNumber)),x=new Set(O.changes.filter(H=>H.type==="insert").map(H=>H.lineNumber)),V=L.filter(H=>P.has(H.oldLineNumber)||x.has(H.newLineNumber));N.set(O,{hunkSections:p?[]:Il(O),movedCandidates:V,movedOldLines:new Set(V.map(H=>H.oldLineNumber)),movedNewLines:new Set(V.map(H=>H.newLineNumber)),importOnlyHunk:Bl(O),displayHunk:pe==="split"?Vl(O):O})}}return N},[B,p,pe]),gr=S.useMemo(()=>B.reduce((N,C)=>N+C.hunks.length,0),[B]),Qs=S.useMemo(()=>Hl(ge??""),[ge]);S.useEffect(()=>{ir(null)},[B]);const mr=N=>{let C=0;return g.jsx(g.Fragment,{children:B.map((_,j)=>{const L=`${_.oldRevision}-${_.newRevision}-${_.newPath}`,O=Qs[j]?.includes("\")??!1,P=Ys.get(L)??{additions:0,deletions:0},x=_.newPath&&!fe(_.newPath)?_.newPath:_.oldPath&&!fe(_.oldPath)?_.oldPath:"unknown file",V={repoRoot:Fn,selectedFilePath:e,referenceFilePath:gt},H=be(x,V),re=be(_.oldPath||x,V),He=be(_.newPath||x,V),oe=Zr(x,{name:"unknown file",dir:""}),U=_.type==="rename"&&_.oldPath&&_.newPath&&_.oldPath!==_.newPath?`${_.oldPath} → ${_.newPath}`:null,pt=!N||B.length>1,bt=[`diff --git ${Oe("a",re)} ${Oe("b",He)}`,..._.hunks.flatMap(X=>[X.content,...X.changes.map(xn)])].join(`
|
|
33
|
+
`);let n=2166136261;for(let r=0;r<t.length;r+=1)n^=t.charCodeAt(r),n=Math.imul(n,16777619);return(n>>>0).toString(16).padStart(8,"0")}function un(e){return e&&"lineNumber"in e&&typeof e.lineNumber=="number"?e.lineNumber:null}function Hl(e){const t=Array.from(e.matchAll(/^diff --git /gmu),n=>n.index);return t.length===0?e?[e]:[]:t.map((n,r)=>e.slice(n,t[r+1]??e.length))}function zl(e){const t=e.trim();return t?/^(import|export\s+type|using|#include)\b/.test(t)||/^from\s+[\w.'"/-]+\s+import\b/.test(t)||/^package\s+[\w.]+;?$/.test(t):!0}function Bl(e){const t=e.changes.filter(r=>r.type==="insert"||r.type==="delete");if(t.length===0||!t.every(r=>zl(r.content)))return!1;const n=new Set;for(const r of t){const s=un(r);if(s!==null){if(n.has(s))return!1;n.add(s)}}return!0}function Vl(e){const t=[];let n=0;for(;n<e.changes.length;){const r=e.changes[n];if(r.type==="normal"){t.push(r),n+=1;continue}const s=[];for(;n<e.changes.length&&e.changes[n].type!=="normal";)s.push(e.changes[n]),n+=1;const i=s.filter(d=>d.type==="delete"),o=s.filter(d=>d.type==="insert"),l=Qa(i.map(d=>({content:d.content,lineNumber:un(d)??-1})),o.map(d=>({content:d.content,lineNumber:un(d)??-1}))),a=new Map(i.map((d,h)=>[un(d)??-1,h])),c=new Map(o.map((d,h)=>[un(d)??-1,h]));let u=0,f=0;for(const d of l){const h=a.get(d.oldLineNumber),m=c.get(d.newLineNumber);if(!(h===void 0||m===void 0)){for(;f<m;)t.push(o[f++]);for(;u<h;)t.push(i[u++]);t.push(i[h],o[m]),u=h+1,f=m+1}}for(;f<o.length;)t.push(o[f++]);for(;u<i.length;)t.push(i[u++])}return{...e,changes:t}}function ot(e,t){return`${e??""}\0${t}`}function Ls(e,t){return e===t||t.endsWith(`/${e}`)||e.endsWith(`/${t}`)}function Gl(e){return typeof e.sectionIndex=="number"||typeof e.sectionFingerprint=="string"&&e.sectionFingerprint.length>0}function Wl(e,t,n,r,s){if(!e||e.length===0)return{fingerprint:s};const i=ot(t,n);let o;for(const l of e){if(Gl(l))continue;const a=[l.filePath,l.newPath,l.oldPath].filter(d=>typeof d=="string"&&d.length>0),c=a.some(d=>ot(l.repoRoot,d)===i),u=a.some(d=>Ls(d,n));if(c||u){if(l.fingerprint===s)return{current:l,fingerprint:s};!o&&l.hunkHeader===r&&(o=l)}}return{stale:o,fingerprint:s}}function Ul(e,t,n,r,s,i,o){if(!e||e.length===0)return{fingerprint:o};const l=ot(t,n);let a;for(const c of e){const u=[c.filePath,c.newPath,c.oldPath].filter(d=>typeof d=="string"&&d.length>0);if(!(!(u.some(d=>ot(c.repoRoot,d)===l)||u.some(d=>Ls(d,n)))||c.hunkHeader!==r)){if(c.sectionFingerprint===o)return{current:c,fingerprint:o};!a&&c.fingerprint===s&&c.sectionIndex===i&&(a=c)}}return{stale:a,fingerprint:o}}function Kl(e){const t=e.changes[e.changes.length-1];return t?Ce(t):null}function Xl(e){let t=0;for(const n of e)t=Math.max(t,n.oldStart+Math.max(0,n.oldLines-1),n.newStart+Math.max(0,n.newLines-1));return Math.max(3,String(t).length+.5)}function Yl(e){return e instanceof DOMException&&e.name==="AbortError"}function Et(e){return typeof e!="number"||!Number.isFinite(e)?null:e>=1024*1024?`${(e/(1024*1024)).toFixed(1)} MB`:e>=1024?`${Math.ceil(e/1024)} KB`:`${e} bytes`}function Dt(e){if(e.tooLarge){const t=Et(e.size),n=Et(e.maxBytes);return`Diff is too large${t?` (${t}`:""}${n?`${t?", ":" ("}limit ${n}`:""}${t||n?")":""}.`}if(e.skippedFiles&&e.skippedFiles.length>0){const t=e.skippedFiles[0],n=Et(t.size),r=e.skippedFiles.length>1?` and ${e.skippedFiles.length-1} more file(s)`:"";return t.reason==="binary-file"?`Binary file changed: ${t.path}${n?` (${n})`:""}. Content was not loaded${r}.`:`Skipped large untracked file ${t.path}${n?` (${n})`:""}${r}.`}return null}function Os(e){if(!e)return!1;let t=1;for(let n=0;n<e.length;n+=1)if(e.charCodeAt(n)===10&&(t+=1,t>_l))return!0;return!1}function Zl(e){return e==="unified"||e==="split"}function Jl(){return Pt(As,Zl)??"unified"}function Ql(e,t){return typeof e!="number"||!Number.isFinite(e)||e<=0?null:new Intl.DateTimeFormat(t==="zh"?"zh-CN":"en",{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"}).format(new Date(e))}function ql(){return typeof window<"u"&&typeof window.matchMedia=="function"&&window.matchMedia(Es).matches}function ec(e){return typeof HTMLElement>"u"||!(e instanceof HTMLElement)?!1:e.tagName==="INPUT"||e.tagName==="TEXTAREA"||e.isContentEditable||!!e.closest(".xterm")}function nc(){const{t:e}=es(),[t,n]=S.useState(!1);return t?null:g.jsxs("button",{type:"button",onClick:()=>n(!0),className:"flex w-full items-center justify-center gap-1.5 border-b border-border/15 bg-surface-2/40 px-2 py-1 text-[10px] text-muted-foreground transition active:scale-[0.99] hover:bg-surface-2 hover:text-foreground",title:e("rightSidebar.horizontalScrollHint"),children:[g.jsx(_i,{size:11,className:"shrink-0"}),g.jsx("span",{className:"truncate",children:e("rightSidebar.horizontalScrollHint")})]})}function uc({filePath:e,repoRoot:t,referenceFilePath:n,interactionId:r,requestSlotId:s,changedFile:i,onInsertDiffReference:o,onHunkGitAction:l,onReferenceCopied:a,insertedReferenceKey:c,copiedReferenceKey:u,wrap:f=!1,showScrollHint:d=!1,reloadKey:h=0,embedded:m=!1,active:v=!0,lightweight:p=!1,auditRecords:w,diffOverride:k,preparedDiff:b,viewType:D,inlineMode:M="words",diffOptions:A,oldSourceOverride:E,onClearAuditRecord:$,onContentReady:T,onSummaryChange:F}){const{t:y,locale:de}=es(),I=vi(N=>N.rootPath),ne=S.useRef(null);if(ne.current===null){const N=i?.repoRoot??t??(e?.startsWith("/")?null:I),C=Qn(e,N),_=k===void 0&&b===void 0?it(C,N??void 0,A):void 0,j=k!==void 0?k:_?.diff??null,L=p?"none":M,O=nt(e)??void 0,P=tt(C,N??void 0,A,L,O),x=j?ae.get(P):void 0,V=x?.diffContent===j?x:void 0;V&&(ae.delete(P),ae.set(P,V)),ne.current={diffContent:j,diffNotice:_?Dt(_):null,diffError:_?.error??null,diffLoading:!!(v&&k===void 0&&b===void 0&&!_),parsedFiles:V?.result.files??[],workerTokens:V?.result.tokens??new Map,parsedDiffInput:V?{cacheKey:P,diffContent:j,oldSource:V.oldSource}:null,oldSourceContent:V?.oldSource??null,oldSourceResolvedFromCache:V?.oldSource!==void 0}}const W=ne.current,[Ee,De]=S.useState(()=>Jl()),[ye,gn]=S.useState(()=>ql()),[ie,te]=S.useState(W.diffContent),[Ie,$e]=S.useState(W.diffNotice),[ht,me]=S.useState(W.diffLoading),[Ln,he]=S.useState(W.diffError),[Ye,Ze]=S.useState(W.parsedFiles),[Je,Qe]=S.useState(W.workerTokens),[Pe,qe]=S.useState(W.parsedDiffInput),[_e,Te]=S.useState(W.oldSourceContent),[Ne,Fe]=S.useState(()=>!!(v&&b===void 0&&E===void 0&&k===void 0&&(i?.repoRoot??t??I)&&e&&!i?.untracked&&i?.status!=="added"&&!W.oldSourceResolvedFromCache)),Is=S.useRef(W.oldSourceResolvedFromCache?h:null),[Fs,Rs]=S.useState(()=>new Set),[ve,mn]=S.useState(null),tr=S.useRef(h),Le=pi(a),pe=(D??Ee)==="split"&&ye?"split":"unified";S.useEffect(()=>{if(typeof window>"u"||typeof window.matchMedia!="function")return;const N=window.matchMedia(Es),C=()=>gn(N.matches);return C(),N.addEventListener?.("change",C),()=>N.removeEventListener?.("change",C)},[]);const rr=S.useCallback(N=>{De(N),$t(As,N)},[]),{whitespace:Hs,context:zs,setWhitespace:Bs,setContext:Vs}=bl(),sr=k!==void 0||b!==void 0,On=S.useRef(null),vn=S.useRef(!1),[Gs,ir]=S.useState(null),In=S.useCallback(N=>{const C=On.current;if(!C)return;const _=C.querySelectorAll("[data-diff-hunk-anchor]");_.length!==0&&ir(j=>{const O=((j!==null&&j>=0&&j<_.length?j:N===1?-1:0)+N+_.length)%_.length,P=_[O];return P instanceof HTMLElement&&P.scrollIntoView({behavior:"smooth",block:"start"}),O})},[]);S.useEffect(()=>{const N=C=>{if(C.key!=="F7")return;const _=On.current;if(!_)return;const j=document.activeElement,L=j instanceof Node&&_.contains(j);!vn.current&&!L||ec(j)||(C.preventDefault(),In(C.shiftKey?-1:1))};return window.addEventListener("keydown",N),()=>window.removeEventListener("keydown",N)},[In]);const ce=i?.repoRoot??null,pn=i?.status??null,or=ce??t??I,Fn=ce??t??I,gt=n??i?.absolutePath??Gt(Fn,e);S.useEffect(()=>{if(b!==void 0){Te(null),Fe(!1);return}if(E!==void 0){Te(E),Fe(!1);return}const N=ce??t??I;if(!v||k!==void 0||!N||!e||i?.untracked||pn==="added"){Te(null),Fe(!1);return}if(Is.current===h){Fe(!1);return}Te(null),Fe(!0);const C=new AbortController;return fi(e,N,"HEAD",C.signal,"ref").then(j=>{C.signal.aborted||(Te(j.truncated||j.error?null:j.content),Fe(!1))}).catch(()=>{C.signal.aborted||(Te(null),Fe(!1))}),()=>C.abort()},[v,i?.untracked,ce,pn,k,e,E,b,h,t,I]),S.useEffect(()=>{if(b!==void 0)return;if(k!==void 0){te(k),$e(null),he(null),me(!1),mn(null);return}if(!v){me(!1),K("effect_skip_inactive",{interactionId:r,requestSlotId:s,filePath:e,repoRoot:t,changedFileRepoRoot:ce,rootPath:I});return}let N=!1,C=null;const _=new AbortController,j=e,L=ce??t??(j?.startsWith("/")?null:I),O=++kl,P=`diff-${Date.now().toString(36)}-${(++Sl).toString(36)}`;let x=!1;const V=performance.now(),H=(R,Se={})=>{x||(x=!0,Jn("end",{loadingId:O,interactionId:r,requestSlotId:s,traceId:P,reason:R,durationMs:Math.round(performance.now()-V),filePath:j,gitRoot:L,...Se}))},re=Qn(j,L),He=j&&L&&!j.startsWith("/")?`${L}/${j}`:j,oe=tr.current!==h;if(tr.current=h,j&&!L){K("effect_wait_for_repo_root",{interactionId:r,requestSlotId:s,traceId:P,filePath:j,repoRoot:t,changedFileRepoRoot:ce,rootPath:I}),te(null),$e(null),he(null),mn(null),me(!1),H("waiting_for_repo_root");return}const U=it(re,L??void 0,A);Jn("start",{loadingId:O,interactionId:r,requestSlotId:s,traceId:P,filePath:j,requestPath:re,gitRoot:L,readablePath:He,forceReload:oe,hasCachedDiff:!!U,embedded:m,active:v});const pt=window.setTimeout(()=>{x||N||Jn("still_active",{loadingId:O,interactionId:r,requestSlotId:s,traceId:P,filePath:j,requestPath:re,gitRoot:L,durationMs:Math.round(performance.now()-V),hasCachedDiff:!!U,controllerAborted:_.signal.aborted,abortReason:_.signal.aborted?String(_.signal.reason??""):void 0,cacheSize:Q.size,promiseSize:q.size})},3e3),bt=window.setTimeout(()=>{x||N||(Jn("still_active_long",{loadingId:O,interactionId:r,requestSlotId:s,traceId:P,filePath:j,requestPath:re,gitRoot:L,durationMs:Math.round(performance.now()-V),hasCachedDiff:!!U,controllerAborted:_.signal.aborted,abortReason:_.signal.aborted?String(_.signal.reason??""):void 0,cacheSize:Q.size,promiseSize:q.size}),he("Diff response is taking too long to finish in the browser. Try selecting the file again."),me(!1),H("client_watchdog_timeout"))},1e4);K("effect_start",{interactionId:r,requestSlotId:s,traceId:P,loadingId:O,filePath:j,requestPath:re,gitRoot:L,readablePath:He,forceReload:oe,hasCachedDiff:!!U,cachedBytes:U?.diff?.length??0}),te(U?.diff??null),$e(U?Dt(U):null),me(!U),he(U?.error??null),mn(null);const en=()=>(oe&&U?Al(re,L??void 0,A):El(re,L??void 0,_.signal,oe,P,r,s,A)).then(R=>{if(N)return;const Se=Dt(R),Nn=Os(R.diff);$e(Nn?"Diff has too many lines to preview safely.":Se),te(R.tooLarge||Nn?"":R.diff),he(R.error??null),K("state_set_result",{interactionId:r,requestSlotId:s,traceId:P,loadingId:O,filePath:j,requestPath:re,gitRoot:L,bytes:R.diff?.length??0,tooLargeToRender:Nn,resultTooLarge:!!R.tooLarge,error:R.error??null})}).catch(R=>{if(N||Yl(R))return;const Se=R instanceof Error?R.message:"Failed to load diff";U?.diff?($e(Se),he(null)):(te(null),$e(null),he(Se)),K("state_set_error",{interactionId:r,requestSlotId:s,traceId:P,filePath:j,requestPath:re,gitRoot:L,error:Se,hadCachedDiff:!!U?.diff})}).finally(()=>{N||me(!1),H(N?"cancelled_finally":"finally"),K("load_text_finally",{interactionId:r,requestSlotId:s,traceId:P,loadingId:O,filePath:j,requestPath:re,gitRoot:L,cancelled:N})});return U&&!oe?(me(!1),H("cache_hit")):U&&oe?en():Dl(He,pn?{status:pn}:null)?di(He,_.signal,"view_diff_image",s?`${s}:image`:void 0).then(R=>{N||(C=URL.createObjectURL(R.blob),mn({objectUrl:C,size:R.size,mimeType:R.mimeType}),H("image_preview_loaded",{bytes:R.size,mimeType:R.mimeType}))}).catch(()=>{if(!(N||_.signal.aborted))return en()}).finally(()=>{N||me(!1),N&&H("image_cancelled_finally")}):en(),()=>{N=!0,_.abort(),hi(s),window.clearTimeout(pt),window.clearTimeout(bt),C&&URL.revokeObjectURL(C),H("cleanup"),K("effect_cleanup",{interactionId:r,requestSlotId:s,traceId:P,loadingId:O,filePath:j,requestPath:re,gitRoot:L,loadingEnded:x,signalAborted:_.signal.aborted,abortReason:_.signal.aborted?String(_.signal.reason??""):void 0,cacheSize:Q.size,promiseSize:q.size})}},[v,ce,pn,A,k,e,r,b,h,t,s,I]),S.useEffect(()=>{if(b!==void 0)return;if(!ie||ie.trim()===""){Ze([]),Qe(new Map),qe(null);return}let N=!1;const C=performance.now(),_=ce??t??(e?.startsWith("/")?null:I),j=Qn(e,_),L=p?"none":M,O=nt(e)??void 0,P=tt(j,_??void 0,A,L,O);return Ds(ie,_e??void 0,j,_??void 0,A,L,O).then(x=>{N||(Ze(x.files),Qe(x.tokens),qe({cacheKey:P,diffContent:ie,oldSource:_e??void 0}),K("worker_parse_done",{filePath:e,bytes:ie.length,files:x.files.length,parseMs:x.parseMs,tokenizeMs:x.tokenizeMs,durationMs:Math.round(performance.now()-C)}))}).catch(x=>{N||(Ze([]),Qe(new Map),qe({cacheKey:P,diffContent:ie,oldSource:_e??void 0}),he(x instanceof Error?x.message:String(x)),K("worker_parse_error",{filePath:e,bytes:ie.length,durationMs:Math.round(performance.now()-C),error:x instanceof Error?x.message:String(x)}))}),()=>{N=!0}},[ce,ie,A,e,M,p,_e,b,t,I]);const ge=b!==void 0?b?.diffContent??null:ie,bn=b!==void 0?b?.diffNotice??null:Ie,ar=b!==void 0?b?.diffError??null:Ln,wn=ar?.toLowerCase().includes("signal is aborted")?null:ar,lr=ce??t??(e?.startsWith("/")?null:I),Ws=Qn(e,lr),Us=tt(Ws,lr??void 0,A,p?"none":M,nt(e)??void 0),Ks=!ie||Pe?.cacheKey===Us&&Pe.diffContent===ie&&Pe.oldSource===(_e??void 0),mt=b!==void 0?!1:ht||Ne||!Ks,cr=b!==void 0?b?.files??[]:Ye,B=S.useMemo(()=>cr.map(N=>N.type==="modify"&&N.oldPath!==N.newPath&&N.oldPath!=="/dev/null"&&N.newPath!=="/dev/null"?{...N,type:"rename"}:N),[cr]);S.useEffect(()=>{!v||mt||ge===null&&!wn&&!ve&&k===void 0&&b===void 0||T?.()},[v,ge,wn,mt,k,ve,T,b]);const ur=w??[],Xs=b!==void 0?b?.tokens??new Map:Je,Rn=S.useMemo(()=>{let N=0,C=0;for(const _ of B)for(const j of _.hunks)for(const L of j.changes)L.type==="insert"&&(N+=1),L.type==="delete"&&(C+=1);return{additions:N,deletions:C}},[B]);S.useEffect(()=>{F&&F(B.length>0?{files:B.length,...Rn}:null)},[B.length,F,Rn]);const Ys=S.useMemo(()=>{const N=new Map;for(const C of B){let _=0,j=0;for(const L of C.hunks)for(const O of L.changes)O.type==="insert"&&(_+=1),O.type==="delete"&&(j+=1);N.set(`${C.oldRevision}-${C.newRevision}-${C.newPath}`,{additions:_,deletions:j})}return N},[B]),ke=Zr(e,{name:y("diffViewer.workingTree"),dir:y("diffViewer.allUnstaged")}),Re=`diff:whole:${e??"all"}`,Hn=S.useMemo(()=>{if(!ge)return"";const N={repoRoot:Fn,selectedFilePath:e,referenceFilePath:gt},C=B.flatMap(_=>{const j=_.newPath&&!fe(_.newPath)?_.newPath:_.oldPath&&!fe(_.oldPath)?_.oldPath:"unknown file",L=be(j,N);return _.hunks.map((O,P)=>({filePath:L,hunkIndex:P,hunk:O}))});return rt(Tl(ge,B,N),{hunks:C})},[ge,e,B,Fn,gt]),Zs=S.useCallback(()=>{!Hn||!o||o(e?`${ke.name} diff`:y("diffViewer.allDiffLabel"),Hn,Re)},[e,o,y,ke.name,Re,Hn]),[vt,fr]=S.useState(null),[zn,Bn]=S.useState(null),[yn,Vn]=S.useState(null);S.useEffect(()=>{Bn(null),Vn(null)},[B]),S.useEffect(()=>{if(!yn)return;const N=window.setTimeout(()=>Vn(null),5e3);return()=>window.clearTimeout(N)},[yn]);const _n=ce??t??(e?.startsWith("/")?null:I),dr=!!(l&&_n&&k==null&&b==null),hr=S.useCallback(async(N,C,_,j,L,O)=>{if(!l||!_n)return;const P=ge?Pl(ge,_,j,L):null;if(!P){Bn({key:C,message:y("diffViewer.hunkActionUnavailable")});return}fr(C),Bn(null);try{await l({mode:N,patch:P,cwd:_n,path:Gt(_n,O)??O})}catch(x){Bn({key:C,message:x instanceof Error?x.message:String(x)})}finally{fr(x=>x===C?null:x),Vn(x=>x===C?null:x)}},[l,_n,ge,y]),Js=S.useMemo(()=>{const N=new Map;for(const C of B){const _=p?[]:C.hunks.flatMap(O=>O.changes.filter(P=>P.type==="delete").map(P=>({content:P.content,lineNumber:P.lineNumber}))),j=p?[]:C.hunks.flatMap(O=>O.changes.filter(P=>P.type==="insert").map(P=>({content:P.content,lineNumber:P.lineNumber}))),L=p?[]:qa(_,j);for(const O of C.hunks){const P=new Set(O.changes.filter(H=>H.type==="delete").map(H=>H.lineNumber)),x=new Set(O.changes.filter(H=>H.type==="insert").map(H=>H.lineNumber)),V=L.filter(H=>P.has(H.oldLineNumber)||x.has(H.newLineNumber));N.set(O,{hunkSections:p?[]:Il(O),movedCandidates:V,movedOldLines:new Set(V.map(H=>H.oldLineNumber)),movedNewLines:new Set(V.map(H=>H.newLineNumber)),importOnlyHunk:Bl(O),displayHunk:pe==="split"?Vl(O):O})}}return N},[B,p,pe]),gr=S.useMemo(()=>B.reduce((N,C)=>N+C.hunks.length,0),[B]),Qs=S.useMemo(()=>Hl(ge??""),[ge]);S.useEffect(()=>{ir(null)},[B]);const mr=N=>{let C=0;return g.jsx(g.Fragment,{children:B.map((_,j)=>{const L=`${_.oldRevision}-${_.newRevision}-${_.newPath}`,O=Qs[j]?.includes("\")??!1,P=Ys.get(L)??{additions:0,deletions:0},x=_.newPath&&!fe(_.newPath)?_.newPath:_.oldPath&&!fe(_.oldPath)?_.oldPath:"unknown file",V={repoRoot:Fn,selectedFilePath:e,referenceFilePath:gt},H=be(x,V),re=be(_.oldPath||x,V),He=be(_.newPath||x,V),oe=Zr(x,{name:"unknown file",dir:""}),U=_.type==="rename"&&_.oldPath&&_.newPath&&_.oldPath!==_.newPath?`${_.oldPath} → ${_.newPath}`:null,pt=!N||B.length>1,bt=[`diff --git ${Oe("a",re)} ${Oe("b",He)}`,..._.hunks.flatMap(X=>[X.content,...X.changes.map(xn)])].join(`
|
|
34
34
|
`),en=rt(bt,{hunks:_.hunks.map((X,ee)=>({filePath:H,hunkIndex:ee,hunk:X}))}),R=`diff:file:${x}`,Se=c===R||u===R,Nn={"--termdock-diff-gutter-width":`${Xl(_.hunks)}ch`};return g.jsxs("div",{"data-diff-file-anchor":x,className:m?"overflow-hidden bg-surface":"mt-3 border border-border/20 bg-surface",style:Nn,children:[pt&&g.jsxs("div",{className:"sticky top-0 z-10 flex items-center justify-between gap-3 border-b border-border/15 bg-surface-2/95 px-2 py-1.5 backdrop-blur",children:[g.jsxs("div",{className:"min-w-0",title:U??(_.newPath||_.oldPath),children:[g.jsx("div",{className:"truncate font-mono text-[11px] text-foreground",children:U??oe.name}),!U&&oe.dir&&g.jsx("div",{className:"truncate font-mono text-[10px] text-muted-foreground/70",children:oe.dir})]}),g.jsxs("div",{className:"flex shrink-0 items-center gap-1.5",children:[g.jsxs("span",{className:"text-[10px] font-medium text-[color:var(--diff-insert-strong)]",children:["+",P.additions]}),g.jsxs("span",{className:"text-[10px] font-medium text-[color:var(--diff-delete-strong)]",children:["-",P.deletions]}),o&&B.length>1&&g.jsx("button",{type:"button",onClick:()=>o(`${oe.name} diff`,en,R),...Le(en,R),className:`rounded-full px-2 py-0.5 text-[10px] font-semibold active:scale-95 ${Se?"bg-surface-elevated text-foreground":"bg-primary/10 text-primary hover:bg-primary/20"}`,title:y("diffViewer.insertFileDiff"),children:y(u===R?"rightSidebar.copied":c===R?"rightSidebar.inserted":"diffViewer.insertFileShort")}),g.jsx("span",{className:"text-[10px] font-medium uppercase tracking-[0.12em] text-muted-foreground",children:_.type})]})]}),d&&!f&&_.hunks.length>0&&g.jsx(nc,{}),_.hunks.length===0?g.jsxs("div",{className:"bg-surface-2 px-3 py-5 text-center text-xs text-muted-foreground",children:[g.jsx(Ct,{size:18,className:"mx-auto mb-2 text-muted-foreground/80"}),y("diffViewer.binaryOrEmpty")]}):g.jsx("div",{className:`termdock-native-select overflow-x-auto termdock-diff-scroll ${pe==="split"?"diff-split":""} ${f?"termdock-diff-wrap":""}`,children:g.jsxs("div",{className:"min-w-full",children:[_.hunks.map((X,ee)=>{const ei=C;C+=1;const pr=`diff --git ${Oe("a",re)} ${Oe("b",He)}`,br=rt([pr,X.content,...X.changes.map(xn)].join(`
|
|
35
|
-
`),{hunks:[{filePath:H,hunkIndex:ee,hunk:X}]}),wt=Rl(X),je=Wl(ur,or,x,X.content,wt),nn=`diff:hunk:${x}:${ee}`,ni=c===nn||u===nn,yt=`stage:${x}:${ee}`,ze=`revert:${x}:${ee}`,wr=vt!==null,ti=dr&&(!i||i.unstaged||i.untracked),_t=zn&&(zn.key===yt||zn.key===ze)?zn.message:null,Gn=`${x}\0${ee}\0${X.content}`,tn=Js.get(X),ri=tn?.hunkSections??[],Nt=tn?.movedCandidates??[],kt=tn?.importOnlyHunk??!1,St=kt&&!Fs.has(Gn),si=tn?.movedOldLines??new Set,ii=tn?.movedNewLines??new Set,oi=tn?.displayHunk??X,ai=ri.reduce((Y,G)=>{const kn=Ts(G),Wn=Ul(ur,or,x,X.content,wt,G.index,kn),J=Wn.current??Wn.stale;if(!J&&!o)return Y;const rn=Kl(G);if(!rn)return Y;const sn=`diff:section:${x}:${ee}:${G.index}`,yr=o?Fl(H,ee,X,G,pr):"",ci=c===sn||u===sn,jt=o?g.jsx("button",{type:"button",onClick:()=>o(`${oe.name} hunk ${ee+1}.${G.index+1}`,yr,sn),...Le(yr,sn),className:`shrink-0 rounded px-1.5 py-0.5 text-[10px] font-medium transition active:scale-95 ${ci?"bg-surface-elevated text-foreground":J?"text-primary/80 hover:bg-primary/10 hover:text-primary":"text-muted-foreground/45 hover:bg-surface-2 hover:text-muted-foreground"}`,title:J?J.summary??J.explanation:"Insert this hunk section",children:y(u===sn?"rightSidebar.copied":c===sn?"rightSidebar.inserted":"diffViewer.insertHunkShort")}):null;return Y[rn]=g.jsx("div",{"data-diff-section-anchor":x,"data-diff-section-audit":x,"data-diff-hunk-index":ee,"data-diff-section-index":G.index,"data-diff-section-fingerprint":kn,className:J?`mx-2 my-1 min-w-0 rounded-md border px-2 py-1.5 text-[11px] leading-relaxed ${f?"max-w-full overflow-hidden":"w-max"} ${Wn.current?"border-primary/20 bg-primary/10 text-foreground":"border-[rgb(var(--warning-rgb)_/_0.26)] bg-[rgb(var(--warning-rgb)_/_0.12)] text-muted-foreground"}`:"mx-2 my-0.5 flex min-w-0 justify-end text-[10px] leading-none",children:J?g.jsxs(g.Fragment,{children:[(J.summary||jt||$)&&g.jsxs("div",{className:"mb-0.5 flex min-w-0 items-center gap-1.5",children:[J.summary?g.jsx("span",{className:"min-w-0 flex-1 truncate text-[10px] font-semibold text-foreground",children:J.summary}):g.jsx("span",{className:"min-w-0 flex-1"}),jt,$&&g.jsx("button",{type:"button",onClick:()=>$(J.id),className:"ml-auto shrink-0 rounded p-0.5 text-muted-foreground/60 transition hover:bg-surface-2 hover:text-foreground",title:y("diffViewer.auditClear"),children:g.jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",width:"10",height:"10",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round",children:[g.jsx("path",{d:"M18 6 6 18"}),g.jsx("path",{d:"m6 6 12 12"})]})})]}),g.jsx("div",{className:"termdock-diff-audit-explanation min-w-0",children:J.explanation})]}):jt}),Y},{}),li=({changes:Y,defaultGenerate:G})=>{const kn=G();return Y.some(J=>{const rn=un(J);return rn===null?!1:J?.type==="delete"?si.has(rn):J?.type==="insert"&&ii.has(rn)})?`${kn} diff-line-moved`:kn};return g.jsxs("div",{className:`diff-hunk scroll-mt-16 ${kt?"diff-hunk-imports":""} ${ei===Gs?"diff-hunk--jump-target":""}`,"data-diff-hunk-anchor":x,"data-diff-hunk-index":ee,"data-diff-hunk-fingerprint":wt,children:[g.jsxs("div",{className:"diff-decoration diff-hunk-meta-row bg-[rgba(var(--diff-accent-rgb),0.035)] px-2 py-1",children:[g.jsxs("div",{className:`diff-hunk-header flex min-w-0 items-center gap-2 ${f?"max-w-full flex-wrap overflow-hidden":"w-max whitespace-nowrap"}`,children:[o&&g.jsx("button",{type:"button",onClick:()=>o(`${oe.name} hunk ${ee+1}`,br,nn),...Le(br,nn),className:`inline-flex h-6 shrink-0 items-center rounded-full px-2 text-[10px] font-semibold active:scale-95 ${ni?"bg-surface-elevated text-foreground":"bg-primary/15 text-primary hover:bg-primary/25"}`,title:y("diffViewer.insertHunkDiff"),children:y(u===nn?"rightSidebar.copied":c===nn?"rightSidebar.inserted":"diffViewer.insertHunkShort")}),ti&&g.jsx("button",{type:"button",disabled:wr,onClick:()=>{hr("stage",yt,_,j,ee,x)},className:"inline-flex h-6 shrink-0 items-center rounded-full bg-accent/10 px-2 text-[10px] font-semibold text-accent transition hover:bg-accent/20 active:scale-95 disabled:opacity-50",title:y("diffViewer.stageHunkTitle"),children:y(vt===yt?"diffViewer.hunkActionApplying":"diffViewer.stageHunk")}),dr&&g.jsx("button",{type:"button",disabled:wr,onClick:()=>{if(yn!==ze){Vn(ze);return}hr("revert-worktree",ze,_,j,ee,x)},className:`inline-flex h-6 shrink-0 items-center rounded-full px-2 text-[10px] font-semibold transition active:scale-95 disabled:opacity-50 ${yn===ze?"bg-destructive/15 text-destructive hover:bg-destructive/25":"bg-surface-2 text-muted-foreground hover:bg-surface-elevated hover:text-foreground"}`,title:y("diffViewer.revertHunkTitle"),children:y(vt===ze?"diffViewer.hunkActionApplying":yn===ze?"diffViewer.revertHunkConfirm":"diffViewer.revertHunk")}),g.jsx("span",{className:"min-w-0 flex-1 truncate",children:X.content}),Nt.length>0&&g.jsxs("span",{className:"shrink-0 rounded bg-surface-2 px-1.5 py-0.5 text-[10px] font-semibold text-[color:var(--diff-hunk-accent)]",title:Nt.map(Y=>`-${Y.oldLineNumber} -> +${Y.newLineNumber}`).join(", "),children:["moved ",Nt.length]}),kt&&g.jsxs(g.Fragment,{children:[g.jsx("span",{className:"shrink-0 rounded bg-surface-2 px-1.5 py-0.5 text-[10px] font-semibold text-muted-foreground",children:"imports"}),g.jsx("button",{type:"button",onClick:()=>{Rs(Y=>{const G=new Set(Y);return G.has(Gn)?G.delete(Gn):G.add(Gn),G})},className:"shrink-0 rounded bg-surface-2 px-1.5 py-0.5 text-[10px] font-semibold text-muted-foreground transition hover:text-foreground",children:St?"show":"hide"})]})]}),_t&&g.jsx("div",{className:"mt-1 truncate text-[10px] text-destructive",title:_t,children:y("diffViewer.hunkActionFailed",{message:_t})}),St&&g.jsx("div",{className:"mt-1 rounded bg-surface-2 px-2 py-1 text-[10px] text-muted-foreground",children:"Import-only changes collapsed."}),(je.current||je.stale)&&(()=>{const Y=je.current??je.stale,G=Ql(Y?.injectedAt,de);return g.jsxs("div",{className:`mt-1 min-w-0 rounded-md border px-2 py-1.5 text-[11px] leading-relaxed ${f?"max-w-full overflow-hidden":"w-max"} ${je.current?"border-primary/20 bg-primary/10 text-foreground":"border-[rgb(var(--warning-rgb)_/_0.26)] bg-[rgb(var(--warning-rgb)_/_0.12)] text-muted-foreground"}`,children:[g.jsxs("div",{className:"mb-0.5 flex min-w-0 items-center gap-1.5",children:[g.jsx("span",{className:"font-semibold text-foreground",children:je.current?y("diffViewer.auditExplanation"):y("diffViewer.auditStale")}),g.jsx("span",{className:"font-mono text-[10px] text-muted-foreground",children:je.fingerprint}),G&&g.jsx("span",{className:"truncate text-[10px] text-muted-foreground/70",children:y("diffViewer.auditGeneratedAt",{time:G})}),$&&g.jsx("button",{type:"button",onClick:()=>Y&&$(Y.id),className:"ml-auto shrink-0 rounded p-0.5 text-muted-foreground/60 transition hover:bg-surface-2 hover:text-foreground",title:y("diffViewer.auditClear"),children:g.jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",width:"10",height:"10",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round",children:[g.jsx("path",{d:"M18 6 6 18"}),g.jsx("path",{d:"m6 6 12 12"})]})})]}),g.jsx("div",{className:"termdock-diff-audit-explanation min-w-0",children:je.current?.explanation??je.stale?.explanation})]})})()]}),!St&&g.jsx(Ka,{viewType:pe,diffType:_.type,hunks:[oi],tokens:Xs.get(L),generateLineClassName:li,widgets:ai,children:Y=>Y.map(G=>g.jsx(Ss,{hunk:G},G.content))})]},X.content)}),O&&g.jsx("div",{className:"diff-decoration bg-surface-2 px-3 py-1.5 text-[10px] text-muted-foreground",children:y("diffViewer.noFinalNewline")})]})})]},L)})})};if(mt)return m?g.jsxs("div",{className:"absolute inset-0 z-20 flex min-h-16 items-center justify-center gap-2 bg-surface-2 text-xs text-muted-foreground",children:[g.jsx(_r,{size:18,className:"animate-spin"}),g.jsx("span",{children:y("diffViewer.loading")})]}):g.jsxs("div",{className:"mx-3 mt-3 flex items-center justify-center gap-2 border border-border/15 bg-surface-2 py-8 text-sm text-muted-foreground",children:[g.jsx(_r,{size:20,className:"animate-spin"}),g.jsx("span",{children:y("diffViewer.loading")})]});if(wn)return m?g.jsx("div",{className:"bg-destructive/5 px-3 py-3 text-xs text-destructive",children:wn}):g.jsx("div",{className:"mx-3 mt-3 border border-destructive/20 bg-destructive/5 px-4 py-4 text-sm text-destructive",children:wn});if(bn&&!ge)return m?g.jsx("div",{className:"bg-[rgb(var(--warning-rgb)_/_0.12)] px-3 py-3 text-xs text-[color:var(--warning)]",children:bn}):g.jsx("div",{className:"mx-3 mt-3 border border-[rgb(var(--warning-rgb)_/_0.24)] bg-[rgb(var(--warning-rgb)_/_0.12)] px-4 py-4 text-sm text-[color:var(--warning)]",children:bn});if(ve){const N=g.jsxs("div",{className:"bg-surface p-3",children:[g.jsxs("div",{className:"mb-2 flex flex-wrap items-center gap-2 text-[10px] text-muted-foreground",children:[g.jsx("span",{children:y("rightSidebar.imagePreviewHint")}),ve.size!==null&&g.jsxs("span",{children:[ve.size.toLocaleString()," bytes"]}),g.jsx("span",{children:ve.mimeType}),ve.dimensions&&g.jsxs("span",{children:[ve.dimensions.width," × ",ve.dimensions.height]})]}),g.jsx("div",{className:"flex min-h-64 items-center justify-center",children:g.jsx("img",{src:ve.objectUrl,alt:ke.name,className:"max-h-[70vh] max-w-full rounded border border-border/15 bg-surface object-contain shadow-sm",onLoad:C=>{const _=C.currentTarget;mn(j=>j&&{...j,dimensions:{width:_.naturalWidth,height:_.naturalHeight}})},onError:()=>he(y("rightSidebar.imageLoadFailed"))})})]});return m?g.jsxs("div",{className:"termdock-native-select overflow-hidden bg-surface",children:[Le.popoverNode,N]}):g.jsxs("div",{className:"termdock-diff px-3 py-2",children:[Le.popoverNode,g.jsxs("div",{className:"border-b border-border/15 px-1 pb-2",children:[g.jsx("div",{className:"truncate text-sm font-medium text-foreground",title:e??void 0,children:ke.name}),g.jsx("div",{className:"mt-0.5 flex min-w-0 items-center gap-2 text-[11px] text-muted-foreground",children:ke.dir&&g.jsx("span",{className:"min-w-0 truncate",children:ke.dir})})]}),g.jsx("div",{className:"mt-3 overflow-hidden border border-border/20 bg-surface",children:N})]})}const vr=bn?g.jsx("div",{className:"mb-2 border border-[rgb(var(--warning-rgb)_/_0.24)] bg-[rgb(var(--warning-rgb)_/_0.12)] px-3 py-2 text-xs text-[color:var(--warning)]",children:bn}):null;if(B.length===0)return m?g.jsxs("div",{className:"bg-surface-2 px-3 py-5 text-center text-xs text-muted-foreground",children:[g.jsx(Ct,{size:20,className:"mx-auto mb-2 text-muted-foreground/80"}),y(e?"diffViewer.noFileChanges":"diffViewer.noUnstagedChanges")]}):g.jsxs("div",{className:"mx-3 mt-3 border border-border/15 bg-surface-2 px-4 py-8 text-center text-sm text-muted-foreground",children:[g.jsx(Ct,{size:24,className:"mx-auto mb-2 text-muted-foreground/80"}),y(e?"diffViewer.noFileChanges":"diffViewer.noUnstagedChanges")]});if(m)return g.jsxs("div",{ref:On,onMouseEnter:()=>{vn.current=!0},onMouseLeave:()=>{vn.current=!1},className:"termdock-diff termdock-native-select termdock-diff-card-mobile overflow-hidden rounded-b-xl","data-diff-viewer":!0,"data-diff-view-type":pe,"data-diff-inline-mode":M,children:[Le.popoverNode,vr,mr(!0)]});const qs=c===Re||u===Re;return g.jsxs("div",{ref:On,onMouseEnter:()=>{vn.current=!0},onMouseLeave:()=>{vn.current=!1},className:"termdock-diff termdock-native-select px-3 py-2","data-diff-viewer":!0,"data-diff-view-type":pe,"data-diff-inline-mode":M,children:[Le.popoverNode,g.jsx("div",{className:"sticky top-0 z-10 border-b border-border/15 bg-surface/95 px-1 pb-2 pt-0 backdrop-blur",children:g.jsxs("div",{className:"flex items-start justify-between gap-2",children:[g.jsxs("div",{className:"min-w-0",children:[g.jsx("div",{className:"truncate text-sm font-medium text-foreground",title:e??void 0,children:ke.name}),g.jsxs("div",{className:"mt-0.5 flex min-w-0 items-center gap-2 text-[11px] text-muted-foreground",children:[ke.dir&&g.jsx("span",{className:"min-w-0 truncate",children:ke.dir}),g.jsxs("span",{children:[B.length," file",B.length>1?"s":""]}),g.jsxs("span",{className:"text-[color:var(--diff-insert-strong)]",children:["+",Rn.additions]}),g.jsxs("span",{className:"text-[color:var(--diff-delete-strong)]",children:["-",Rn.deletions]})]})]}),g.jsxs("div",{className:"flex shrink-0 items-center gap-1.5",children:[g.jsxs("div",{className:"inline-flex h-7 shrink-0 items-center rounded-full bg-surface-2 p-0.5",children:[g.jsx("button",{type:"button",onClick:()=>In(-1),disabled:gr<2,"aria-label":y("diffViewer.prevHunk"),className:"inline-flex h-6 items-center rounded-full px-1.5 text-muted-foreground transition hover:text-foreground active:scale-95 disabled:cursor-not-allowed disabled:opacity-45",title:`${y("diffViewer.prevHunk")} (Shift+F7)`,children:g.jsx(vi,{size:13})}),g.jsx("button",{type:"button",onClick:()=>In(1),disabled:gr<2,"aria-label":y("diffViewer.nextHunk"),className:"inline-flex h-6 items-center rounded-full px-1.5 text-muted-foreground transition hover:text-foreground active:scale-95 disabled:cursor-not-allowed disabled:opacity-45",title:`${y("diffViewer.nextHunk")} (F7)`,children:g.jsx(pi,{size:13})})]}),g.jsxs("select",{value:Hs,disabled:sr,onChange:N=>Bs(N.target.value),"aria-label":y("diffViewer.whitespace"),className:"h-7 shrink-0 rounded-full border border-border/20 bg-surface-2 px-2 text-[10px] font-semibold text-muted-foreground outline-none transition hover:text-foreground disabled:cursor-not-allowed disabled:opacity-45",title:y("diffViewer.whitespace"),children:[g.jsx("option",{value:"default",children:y("diffViewer.whitespaceDefault")}),g.jsx("option",{value:"trim",children:y("diffViewer.whitespaceTrim")}),g.jsx("option",{value:"ignore",children:y("diffViewer.whitespaceIgnore")}),g.jsx("option",{value:"ignore-blank-lines",children:y("diffViewer.whitespaceIgnoreBlankLines")})]}),g.jsxs("select",{value:String(zs),disabled:sr,onChange:N=>Vs(N.target.value==="all"?"all":Number(N.target.value)),"aria-label":y("diffViewer.context"),className:"h-7 shrink-0 rounded-full border border-border/20 bg-surface-2 px-2 text-[10px] font-semibold text-muted-foreground outline-none transition hover:text-foreground disabled:cursor-not-allowed disabled:opacity-45",title:y("diffViewer.context"),children:[[3,10,25].map(N=>g.jsx("option",{value:String(N),children:y("diffViewer.contextLines",{count:N})},N)),g.jsx("option",{value:"all",children:y("diffViewer.contextAll")})]}),g.jsxs("div",{className:"inline-flex h-7 shrink-0 overflow-hidden rounded-full bg-surface-2 p-0.5","aria-label":y("diffViewer.view"),children:[g.jsx("button",{type:"button",onClick:()=>rr("unified"),"aria-pressed":pe==="unified",className:`inline-flex h-6 items-center rounded-full px-2 text-[10px] font-semibold transition active:scale-95 ${pe==="unified"?"bg-surface-elevated text-foreground shadow-sm":"text-muted-foreground hover:text-foreground"}`,title:y("diffViewer.unifiedMode"),children:y("diffViewer.unified")}),g.jsx("button",{type:"button",onClick:()=>rr("split"),disabled:!ye,"aria-pressed":pe==="split",className:`inline-flex h-6 items-center rounded-full px-2 text-[10px] font-semibold transition active:scale-95 disabled:cursor-not-allowed disabled:opacity-45 ${pe==="split"?"bg-surface-elevated text-foreground shadow-sm":"text-muted-foreground hover:text-foreground"}`,title:y(ye?"diffViewer.splitMode":"diffViewer.unifiedMode"),children:y("diffViewer.split")})]}),o&&g.jsx("button",{type:"button",onClick:Zs,...Le(Hn,Re),className:`inline-flex h-8 shrink-0 items-center rounded-full px-3 text-[11px] font-semibold transition active:scale-95 ${qs?"bg-surface-elevated text-foreground":"bg-primary/15 text-primary hover:bg-primary/25"}`,title:y("diffViewer.insertAllDiff"),children:y(u===Re?"rightSidebar.copied":c===Re?"rightSidebar.inserted":"diffViewer.insertAllShort")})]})]})}),vr,mr(!1)]})}export{cc as D,Ct as G,Es as S,ql as c,oc as h,ac as i,ic as l,lc as p,nt as r,sc as s,bl as u};
|
|
35
|
+
`),{hunks:[{filePath:H,hunkIndex:ee,hunk:X}]}),wt=Rl(X),je=Wl(ur,or,x,X.content,wt),nn=`diff:hunk:${x}:${ee}`,ni=c===nn||u===nn,yt=`stage:${x}:${ee}`,ze=`revert:${x}:${ee}`,wr=vt!==null,ti=dr&&(!i||i.unstaged||i.untracked),_t=zn&&(zn.key===yt||zn.key===ze)?zn.message:null,Gn=`${x}\0${ee}\0${X.content}`,tn=Js.get(X),ri=tn?.hunkSections??[],Nt=tn?.movedCandidates??[],kt=tn?.importOnlyHunk??!1,St=kt&&!Fs.has(Gn),si=tn?.movedOldLines??new Set,ii=tn?.movedNewLines??new Set,oi=tn?.displayHunk??X,ai=ri.reduce((Y,G)=>{const kn=Ts(G),Wn=Ul(ur,or,x,X.content,wt,G.index,kn),J=Wn.current??Wn.stale;if(!J&&!o)return Y;const rn=Kl(G);if(!rn)return Y;const sn=`diff:section:${x}:${ee}:${G.index}`,yr=o?Fl(H,ee,X,G,pr):"",ci=c===sn||u===sn,jt=o?g.jsx("button",{type:"button",onClick:()=>o(`${oe.name} hunk ${ee+1}.${G.index+1}`,yr,sn),...Le(yr,sn),className:`shrink-0 rounded px-1.5 py-0.5 text-[10px] font-medium transition active:scale-95 ${ci?"bg-surface-elevated text-foreground":J?"text-primary/80 hover:bg-primary/10 hover:text-primary":"text-muted-foreground/45 hover:bg-surface-2 hover:text-muted-foreground"}`,title:J?J.summary??J.explanation:"Insert this hunk section",children:y(u===sn?"rightSidebar.copied":c===sn?"rightSidebar.inserted":"diffViewer.insertHunkShort")}):null;return Y[rn]=g.jsx("div",{"data-diff-section-anchor":x,"data-diff-section-audit":x,"data-diff-hunk-index":ee,"data-diff-section-index":G.index,"data-diff-section-fingerprint":kn,className:J?`mx-2 my-1 min-w-0 rounded-md border px-2 py-1.5 text-[11px] leading-relaxed ${f?"max-w-full overflow-hidden":"w-max"} ${Wn.current?"border-primary/20 bg-primary/10 text-foreground":"border-[rgb(var(--warning-rgb)_/_0.26)] bg-[rgb(var(--warning-rgb)_/_0.12)] text-muted-foreground"}`:"mx-2 my-0.5 flex min-w-0 justify-end text-[10px] leading-none",children:J?g.jsxs(g.Fragment,{children:[(J.summary||jt||$)&&g.jsxs("div",{className:"mb-0.5 flex min-w-0 items-center gap-1.5",children:[J.summary?g.jsx("span",{className:"min-w-0 flex-1 truncate text-[10px] font-semibold text-foreground",children:J.summary}):g.jsx("span",{className:"min-w-0 flex-1"}),jt,$&&g.jsx("button",{type:"button",onClick:()=>$(J.id),className:"ml-auto shrink-0 rounded p-0.5 text-muted-foreground/60 transition hover:bg-surface-2 hover:text-foreground",title:y("diffViewer.auditClear"),children:g.jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",width:"10",height:"10",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round",children:[g.jsx("path",{d:"M18 6 6 18"}),g.jsx("path",{d:"m6 6 12 12"})]})})]}),g.jsx("div",{className:"termdock-diff-audit-explanation min-w-0",children:J.explanation})]}):jt}),Y},{}),li=({changes:Y,defaultGenerate:G})=>{const kn=G();return Y.some(J=>{const rn=un(J);return rn===null?!1:J?.type==="delete"?si.has(rn):J?.type==="insert"&&ii.has(rn)})?`${kn} diff-line-moved`:kn};return g.jsxs("div",{className:`diff-hunk scroll-mt-16 ${kt?"diff-hunk-imports":""} ${ei===Gs?"diff-hunk--jump-target":""}`,"data-diff-hunk-anchor":x,"data-diff-hunk-index":ee,"data-diff-hunk-fingerprint":wt,children:[g.jsxs("div",{className:"diff-decoration diff-hunk-meta-row bg-[rgba(var(--diff-accent-rgb),0.035)] px-2 py-1",children:[g.jsxs("div",{className:`diff-hunk-header flex min-w-0 items-center gap-2 ${f?"max-w-full flex-wrap overflow-hidden":"w-max whitespace-nowrap"}`,children:[o&&g.jsx("button",{type:"button",onClick:()=>o(`${oe.name} hunk ${ee+1}`,br,nn),...Le(br,nn),className:`inline-flex h-6 shrink-0 items-center rounded-full px-2 text-[10px] font-semibold active:scale-95 ${ni?"bg-surface-elevated text-foreground":"bg-primary/15 text-primary hover:bg-primary/25"}`,title:y("diffViewer.insertHunkDiff"),children:y(u===nn?"rightSidebar.copied":c===nn?"rightSidebar.inserted":"diffViewer.insertHunkShort")}),ti&&g.jsx("button",{type:"button",disabled:wr,onClick:()=>{hr("stage",yt,_,j,ee,x)},className:"inline-flex h-6 shrink-0 items-center rounded-full bg-accent/10 px-2 text-[10px] font-semibold text-accent transition hover:bg-accent/20 active:scale-95 disabled:opacity-50",title:y("diffViewer.stageHunkTitle"),children:y(vt===yt?"diffViewer.hunkActionApplying":"diffViewer.stageHunk")}),dr&&g.jsx("button",{type:"button",disabled:wr,onClick:()=>{if(yn!==ze){Vn(ze);return}hr("revert-worktree",ze,_,j,ee,x)},className:`inline-flex h-6 shrink-0 items-center rounded-full px-2 text-[10px] font-semibold transition active:scale-95 disabled:opacity-50 ${yn===ze?"bg-destructive/15 text-destructive hover:bg-destructive/25":"bg-surface-2 text-muted-foreground hover:bg-surface-elevated hover:text-foreground"}`,title:y("diffViewer.revertHunkTitle"),children:y(vt===ze?"diffViewer.hunkActionApplying":yn===ze?"diffViewer.revertHunkConfirm":"diffViewer.revertHunk")}),g.jsx("span",{className:"min-w-0 flex-1 truncate",children:X.content}),Nt.length>0&&g.jsxs("span",{className:"shrink-0 rounded bg-surface-2 px-1.5 py-0.5 text-[10px] font-semibold text-[color:var(--diff-hunk-accent)]",title:Nt.map(Y=>`-${Y.oldLineNumber} -> +${Y.newLineNumber}`).join(", "),children:["moved ",Nt.length]}),kt&&g.jsxs(g.Fragment,{children:[g.jsx("span",{className:"shrink-0 rounded bg-surface-2 px-1.5 py-0.5 text-[10px] font-semibold text-muted-foreground",children:"imports"}),g.jsx("button",{type:"button",onClick:()=>{Rs(Y=>{const G=new Set(Y);return G.has(Gn)?G.delete(Gn):G.add(Gn),G})},className:"shrink-0 rounded bg-surface-2 px-1.5 py-0.5 text-[10px] font-semibold text-muted-foreground transition hover:text-foreground",children:St?"show":"hide"})]})]}),_t&&g.jsx("div",{className:"mt-1 truncate text-[10px] text-destructive",title:_t,children:y("diffViewer.hunkActionFailed",{message:_t})}),St&&g.jsx("div",{className:"mt-1 rounded bg-surface-2 px-2 py-1 text-[10px] text-muted-foreground",children:"Import-only changes collapsed."}),(je.current||je.stale)&&(()=>{const Y=je.current??je.stale,G=Ql(Y?.injectedAt,de);return g.jsxs("div",{className:`mt-1 min-w-0 rounded-md border px-2 py-1.5 text-[11px] leading-relaxed ${f?"max-w-full overflow-hidden":"w-max"} ${je.current?"border-primary/20 bg-primary/10 text-foreground":"border-[rgb(var(--warning-rgb)_/_0.26)] bg-[rgb(var(--warning-rgb)_/_0.12)] text-muted-foreground"}`,children:[g.jsxs("div",{className:"mb-0.5 flex min-w-0 items-center gap-1.5",children:[g.jsx("span",{className:"font-semibold text-foreground",children:je.current?y("diffViewer.auditExplanation"):y("diffViewer.auditStale")}),g.jsx("span",{className:"font-mono text-[10px] text-muted-foreground",children:je.fingerprint}),G&&g.jsx("span",{className:"truncate text-[10px] text-muted-foreground/70",children:y("diffViewer.auditGeneratedAt",{time:G})}),$&&g.jsx("button",{type:"button",onClick:()=>Y&&$(Y.id),className:"ml-auto shrink-0 rounded p-0.5 text-muted-foreground/60 transition hover:bg-surface-2 hover:text-foreground",title:y("diffViewer.auditClear"),children:g.jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",width:"10",height:"10",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round",children:[g.jsx("path",{d:"M18 6 6 18"}),g.jsx("path",{d:"m6 6 12 12"})]})})]}),g.jsx("div",{className:"termdock-diff-audit-explanation min-w-0",children:je.current?.explanation??je.stale?.explanation})]})})()]}),!St&&g.jsx(Ka,{viewType:pe,diffType:_.type,hunks:[oi],tokens:Xs.get(L),generateLineClassName:li,widgets:ai,children:Y=>Y.map(G=>g.jsx(Ss,{hunk:G},G.content))})]},X.content)}),O&&g.jsx("div",{className:"diff-decoration bg-surface-2 px-3 py-1.5 text-[10px] text-muted-foreground",children:y("diffViewer.noFinalNewline")})]})})]},L)})})};if(mt)return m?g.jsxs("div",{className:"absolute inset-0 z-20 flex min-h-16 items-center justify-center gap-2 bg-surface-2 text-xs text-muted-foreground",children:[g.jsx(_r,{size:18,className:"animate-spin"}),g.jsx("span",{children:y("diffViewer.loading")})]}):g.jsxs("div",{className:"mx-3 mt-3 flex items-center justify-center gap-2 border border-border/15 bg-surface-2 py-8 text-sm text-muted-foreground",children:[g.jsx(_r,{size:20,className:"animate-spin"}),g.jsx("span",{children:y("diffViewer.loading")})]});if(wn)return m?g.jsx("div",{className:"bg-destructive/5 px-3 py-3 text-xs text-destructive",children:wn}):g.jsx("div",{className:"mx-3 mt-3 border border-destructive/20 bg-destructive/5 px-4 py-4 text-sm text-destructive",children:wn});if(bn&&!ge)return m?g.jsx("div",{className:"bg-[rgb(var(--warning-rgb)_/_0.12)] px-3 py-3 text-xs text-[color:var(--warning)]",children:bn}):g.jsx("div",{className:"mx-3 mt-3 border border-[rgb(var(--warning-rgb)_/_0.24)] bg-[rgb(var(--warning-rgb)_/_0.12)] px-4 py-4 text-sm text-[color:var(--warning)]",children:bn});if(ve){const N=g.jsxs("div",{className:"bg-surface p-3",children:[g.jsxs("div",{className:"mb-2 flex flex-wrap items-center gap-2 text-[10px] text-muted-foreground",children:[g.jsx("span",{children:y("rightSidebar.imagePreviewHint")}),ve.size!==null&&g.jsxs("span",{children:[ve.size.toLocaleString()," bytes"]}),g.jsx("span",{children:ve.mimeType}),ve.dimensions&&g.jsxs("span",{children:[ve.dimensions.width," × ",ve.dimensions.height]})]}),g.jsx("div",{className:"flex min-h-64 items-center justify-center",children:g.jsx("img",{src:ve.objectUrl,alt:ke.name,className:"max-h-[70vh] max-w-full rounded border border-border/15 bg-surface object-contain shadow-sm",onLoad:C=>{const _=C.currentTarget;mn(j=>j&&{...j,dimensions:{width:_.naturalWidth,height:_.naturalHeight}})},onError:()=>he(y("rightSidebar.imageLoadFailed"))})})]});return m?g.jsxs("div",{className:"termdock-native-select overflow-hidden bg-surface",children:[Le.popoverNode,N]}):g.jsxs("div",{className:"termdock-diff px-3 py-2",children:[Le.popoverNode,g.jsxs("div",{className:"border-b border-border/15 px-1 pb-2",children:[g.jsx("div",{className:"truncate text-sm font-medium text-foreground",title:e??void 0,children:ke.name}),g.jsx("div",{className:"mt-0.5 flex min-w-0 items-center gap-2 text-[11px] text-muted-foreground",children:ke.dir&&g.jsx("span",{className:"min-w-0 truncate",children:ke.dir})})]}),g.jsx("div",{className:"mt-3 overflow-hidden border border-border/20 bg-surface",children:N})]})}const vr=bn?g.jsx("div",{className:"mb-2 border border-[rgb(var(--warning-rgb)_/_0.24)] bg-[rgb(var(--warning-rgb)_/_0.12)] px-3 py-2 text-xs text-[color:var(--warning)]",children:bn}):null;if(B.length===0)return m?g.jsxs("div",{className:"bg-surface-2 px-3 py-5 text-center text-xs text-muted-foreground",children:[g.jsx(Ct,{size:20,className:"mx-auto mb-2 text-muted-foreground/80"}),y(e?"diffViewer.noFileChanges":"diffViewer.noUnstagedChanges")]}):g.jsxs("div",{className:"mx-3 mt-3 border border-border/15 bg-surface-2 px-4 py-8 text-center text-sm text-muted-foreground",children:[g.jsx(Ct,{size:24,className:"mx-auto mb-2 text-muted-foreground/80"}),y(e?"diffViewer.noFileChanges":"diffViewer.noUnstagedChanges")]});if(m)return g.jsxs("div",{ref:On,onMouseEnter:()=>{vn.current=!0},onMouseLeave:()=>{vn.current=!1},className:"termdock-diff termdock-native-select termdock-diff-card-mobile overflow-hidden rounded-b-xl","data-diff-viewer":!0,"data-diff-view-type":pe,"data-diff-inline-mode":M,children:[Le.popoverNode,vr,mr(!0)]});const qs=c===Re||u===Re;return g.jsxs("div",{ref:On,onMouseEnter:()=>{vn.current=!0},onMouseLeave:()=>{vn.current=!1},className:"termdock-diff termdock-native-select px-3 py-2","data-diff-viewer":!0,"data-diff-view-type":pe,"data-diff-inline-mode":M,children:[Le.popoverNode,g.jsx("div",{className:"sticky top-0 z-10 border-b border-border/15 bg-surface/95 px-1 pb-2 pt-0 backdrop-blur",children:g.jsxs("div",{className:"flex items-start justify-between gap-2",children:[g.jsxs("div",{className:"min-w-0",children:[g.jsx("div",{className:"truncate text-sm font-medium text-foreground",title:e??void 0,children:ke.name}),g.jsxs("div",{className:"mt-0.5 flex min-w-0 items-center gap-2 text-[11px] text-muted-foreground",children:[ke.dir&&g.jsx("span",{className:"min-w-0 truncate",children:ke.dir}),g.jsxs("span",{children:[B.length," file",B.length>1?"s":""]}),g.jsxs("span",{className:"text-[color:var(--diff-insert-strong)]",children:["+",Rn.additions]}),g.jsxs("span",{className:"text-[color:var(--diff-delete-strong)]",children:["-",Rn.deletions]})]})]}),g.jsxs("div",{className:"flex shrink-0 items-center gap-1.5",children:[g.jsxs("div",{className:"inline-flex h-7 shrink-0 items-center rounded-full bg-surface-2 p-0.5",children:[g.jsx("button",{type:"button",onClick:()=>In(-1),disabled:gr<2,"aria-label":y("diffViewer.prevHunk"),className:"inline-flex h-6 items-center rounded-full px-1.5 text-muted-foreground transition hover:text-foreground active:scale-95 disabled:cursor-not-allowed disabled:opacity-45",title:`${y("diffViewer.prevHunk")} (Shift+F7)`,children:g.jsx(bi,{size:13})}),g.jsx("button",{type:"button",onClick:()=>In(1),disabled:gr<2,"aria-label":y("diffViewer.nextHunk"),className:"inline-flex h-6 items-center rounded-full px-1.5 text-muted-foreground transition hover:text-foreground active:scale-95 disabled:cursor-not-allowed disabled:opacity-45",title:`${y("diffViewer.nextHunk")} (F7)`,children:g.jsx(gi,{size:13})})]}),g.jsxs("select",{value:Hs,disabled:sr,onChange:N=>Bs(N.target.value),"aria-label":y("diffViewer.whitespace"),className:"h-7 shrink-0 rounded-full border border-border/20 bg-surface-2 px-2 text-[10px] font-semibold text-muted-foreground outline-none transition hover:text-foreground disabled:cursor-not-allowed disabled:opacity-45",title:y("diffViewer.whitespace"),children:[g.jsx("option",{value:"default",children:y("diffViewer.whitespaceDefault")}),g.jsx("option",{value:"trim",children:y("diffViewer.whitespaceTrim")}),g.jsx("option",{value:"ignore",children:y("diffViewer.whitespaceIgnore")}),g.jsx("option",{value:"ignore-blank-lines",children:y("diffViewer.whitespaceIgnoreBlankLines")})]}),g.jsxs("select",{value:String(zs),disabled:sr,onChange:N=>Vs(N.target.value==="all"?"all":Number(N.target.value)),"aria-label":y("diffViewer.context"),className:"h-7 shrink-0 rounded-full border border-border/20 bg-surface-2 px-2 text-[10px] font-semibold text-muted-foreground outline-none transition hover:text-foreground disabled:cursor-not-allowed disabled:opacity-45",title:y("diffViewer.context"),children:[[3,10,25].map(N=>g.jsx("option",{value:String(N),children:y("diffViewer.contextLines",{count:N})},N)),g.jsx("option",{value:"all",children:y("diffViewer.contextAll")})]}),g.jsxs("div",{className:"inline-flex h-7 shrink-0 overflow-hidden rounded-full bg-surface-2 p-0.5","aria-label":y("diffViewer.view"),children:[g.jsx("button",{type:"button",onClick:()=>rr("unified"),"aria-pressed":pe==="unified",className:`inline-flex h-6 items-center rounded-full px-2 text-[10px] font-semibold transition active:scale-95 ${pe==="unified"?"bg-surface-elevated text-foreground shadow-sm":"text-muted-foreground hover:text-foreground"}`,title:y("diffViewer.unifiedMode"),children:y("diffViewer.unified")}),g.jsx("button",{type:"button",onClick:()=>rr("split"),disabled:!ye,"aria-pressed":pe==="split",className:`inline-flex h-6 items-center rounded-full px-2 text-[10px] font-semibold transition active:scale-95 disabled:cursor-not-allowed disabled:opacity-45 ${pe==="split"?"bg-surface-elevated text-foreground shadow-sm":"text-muted-foreground hover:text-foreground"}`,title:y(ye?"diffViewer.splitMode":"diffViewer.unifiedMode"),children:y("diffViewer.split")})]}),o&&g.jsx("button",{type:"button",onClick:Zs,...Le(Hn,Re),className:`inline-flex h-8 shrink-0 items-center rounded-full px-3 text-[11px] font-semibold transition active:scale-95 ${qs?"bg-surface-elevated text-foreground":"bg-primary/15 text-primary hover:bg-primary/25"}`,title:y("diffViewer.insertAllDiff"),children:y(u===Re?"rightSidebar.copied":c===Re?"rightSidebar.inserted":"diffViewer.insertAllShort")})]})]})}),vr,mr(!1)]})}export{uc as D,Ct as G,Es as S,ql as c,ac as h,lc as i,oc as l,cc as p,nt as r,ic as s,bl as u};
|
|
Binary file
|
|
Binary file
|