termdock 1.4.270 → 1.4.271

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.
Files changed (314) hide show
  1. package/dist/client/assets/{App-c7kz7Ubk.js → App-D3GMpftt.js} +3 -3
  2. package/dist/client/assets/App-D3GMpftt.js.br +0 -0
  3. package/dist/client/assets/App-D3GMpftt.js.gz +0 -0
  4. package/dist/client/assets/{ChangeWalkthroughPanel-Bydnbq0F.js → ChangeWalkthroughPanel-C218u7SN.js} +1 -1
  5. package/dist/client/assets/ChangeWalkthroughPanel-C218u7SN.js.br +0 -0
  6. package/dist/client/assets/ChangeWalkthroughPanel-C218u7SN.js.gz +0 -0
  7. package/dist/client/assets/{DagPlayground-BOhl81pI.js → DagPlayground-D0RdKW7B.js} +1 -1
  8. package/dist/client/assets/DagPlayground-D0RdKW7B.js.br +0 -0
  9. package/dist/client/assets/DagPlayground-D0RdKW7B.js.gz +0 -0
  10. package/dist/client/assets/{DiffLab-Frkr3MbV.js → DiffLab-B-64zTi5.js} +18 -1
  11. package/dist/client/assets/DiffLab-B-64zTi5.js.br +0 -0
  12. package/dist/client/assets/DiffLab-B-64zTi5.js.gz +0 -0
  13. package/dist/client/assets/{DiffReview-DxgTeEAU.js → DiffReview-C4WHbN50.js} +1 -1
  14. package/dist/client/assets/DiffReview-C4WHbN50.js.br +0 -0
  15. package/dist/client/assets/DiffReview-C4WHbN50.js.gz +0 -0
  16. package/dist/client/assets/{DiffReviewLab-BOc71Yev.js → DiffReviewLab-m2uqIPwo.js} +1 -1
  17. package/dist/client/assets/DiffReviewLab-m2uqIPwo.js.br +0 -0
  18. package/dist/client/assets/DiffReviewLab-m2uqIPwo.js.gz +0 -0
  19. package/dist/client/assets/{DiffViewer-BkIhdRra.js → DiffViewer-Crz6zQeB.js} +2 -2
  20. package/dist/client/assets/DiffViewer-Crz6zQeB.js.br +0 -0
  21. package/dist/client/assets/DiffViewer-Crz6zQeB.js.gz +0 -0
  22. package/dist/client/assets/{ModelPreview-CH2TQwG6.js → ModelPreview-DALNyVZi.js} +1 -1
  23. package/dist/client/assets/ModelPreview-DALNyVZi.js.br +0 -0
  24. package/dist/client/assets/ModelPreview-DALNyVZi.js.gz +0 -0
  25. package/dist/client/assets/{RightSidebar-BHWRnOpP.js → RightSidebar-Bp1M9e90.js} +4 -4
  26. package/dist/client/assets/RightSidebar-Bp1M9e90.js.br +0 -0
  27. package/dist/client/assets/RightSidebar-Bp1M9e90.js.gz +0 -0
  28. package/dist/client/assets/{abnfDiagram-VCTEODGH-Uf4zSEDT.js → abnfDiagram-VCTEODGH-Cwq9fJs5.js} +1 -1
  29. package/dist/client/assets/abnfDiagram-VCTEODGH-Cwq9fJs5.js.br +0 -0
  30. package/dist/client/assets/abnfDiagram-VCTEODGH-Cwq9fJs5.js.gz +0 -0
  31. package/dist/client/assets/{app-BB2wwQ0J.js → app-Cxpk5OKD.js} +3 -3
  32. package/dist/client/assets/app-Cxpk5OKD.js.br +0 -0
  33. package/dist/client/assets/app-Cxpk5OKD.js.gz +0 -0
  34. package/dist/client/assets/{arc-DRmqfmwm.js → arc-CDP5zS1s.js} +1 -1
  35. package/dist/client/assets/arc-CDP5zS1s.js.br +0 -0
  36. package/dist/client/assets/arc-CDP5zS1s.js.gz +0 -0
  37. package/dist/client/assets/{architectureDiagram-5GKGNRK7-B-2Al0rh.js → architectureDiagram-5GKGNRK7-DPOBmyO0.js} +1 -1
  38. package/dist/client/assets/architectureDiagram-5GKGNRK7-DPOBmyO0.js.br +0 -0
  39. package/dist/client/assets/architectureDiagram-5GKGNRK7-DPOBmyO0.js.gz +0 -0
  40. package/dist/client/assets/{blockDiagram-I7D4REHJ-CH5wQtui.js → blockDiagram-I7D4REHJ-DJSDUCYh.js} +1 -1
  41. package/dist/client/assets/blockDiagram-I7D4REHJ-DJSDUCYh.js.br +0 -0
  42. package/dist/client/assets/blockDiagram-I7D4REHJ-DJSDUCYh.js.gz +0 -0
  43. package/dist/client/assets/{c4Diagram-7LVT6UL2-BK-d-9zq.js → c4Diagram-7LVT6UL2-BJraDT50.js} +1 -1
  44. package/dist/client/assets/c4Diagram-7LVT6UL2-BJraDT50.js.br +0 -0
  45. package/dist/client/assets/c4Diagram-7LVT6UL2-BJraDT50.js.gz +0 -0
  46. package/dist/client/assets/channel-DJOgErEk.js +1 -0
  47. package/dist/client/assets/{chunk-2Q5K7J3B-C-ckf1lO.js → chunk-2Q5K7J3B-Dsfjvnie.js} +1 -1
  48. package/dist/client/assets/{chunk-5VM5RSS4-DyVtVLgG.js → chunk-5VM5RSS4-7sPpLhTo.js} +1 -1
  49. package/dist/client/assets/{chunk-F27PBJKO-C-CfcBwS.js → chunk-F27PBJKO-SNvNotCY.js} +1 -1
  50. package/dist/client/assets/chunk-F27PBJKO-SNvNotCY.js.br +0 -0
  51. package/dist/client/assets/chunk-F27PBJKO-SNvNotCY.js.gz +0 -0
  52. package/dist/client/assets/{chunk-IMKFNOWR-eabrbPYb.js → chunk-IMKFNOWR-D0tnPId8.js} +1 -1
  53. package/dist/client/assets/chunk-IMKFNOWR-D0tnPId8.js.br +0 -0
  54. package/dist/client/assets/chunk-IMKFNOWR-D0tnPId8.js.gz +0 -0
  55. package/dist/client/assets/{chunk-JWPE2WC7-py5DYe3e.js → chunk-JWPE2WC7-Bsz2BLyT.js} +1 -1
  56. package/dist/client/assets/{chunk-POPQ4Y6H-Bx2PbP9P.js → chunk-POPQ4Y6H-bvV2ZgHY.js} +1 -1
  57. package/dist/client/assets/{chunk-SVP7TREG-DdooqOrA.js → chunk-SVP7TREG-BkTNG0Wd.js} +1 -1
  58. package/dist/client/assets/chunk-SVP7TREG-BkTNG0Wd.js.br +0 -0
  59. package/dist/client/assets/chunk-SVP7TREG-BkTNG0Wd.js.gz +0 -0
  60. package/dist/client/assets/{chunk-TICWLB2K-Bfo-6Shk.js → chunk-TICWLB2K-C0e9ZY7l.js} +1 -1
  61. package/dist/client/assets/chunk-TICWLB2K-C0e9ZY7l.js.br +0 -0
  62. package/dist/client/assets/chunk-TICWLB2K-C0e9ZY7l.js.gz +0 -0
  63. package/dist/client/assets/{chunk-XXDRQBXY-C8WloQnN.js → chunk-XXDRQBXY-BVO2Skec.js} +1 -1
  64. package/dist/client/assets/classDiagram-ZZMXUADV-B-Ng01Jy.js +1 -0
  65. package/dist/client/assets/classDiagram-v2-VYDZK3BY-B-Ng01Jy.js +1 -0
  66. package/dist/client/assets/{cose-bilkent-JH36ORCC-Czk8_m7q.js → cose-bilkent-JH36ORCC-BYrj3pJD.js} +1 -1
  67. package/dist/client/assets/cose-bilkent-JH36ORCC-BYrj3pJD.js.br +0 -0
  68. package/dist/client/assets/cose-bilkent-JH36ORCC-BYrj3pJD.js.gz +0 -0
  69. package/dist/client/assets/{cynefin-OW5HDTMX-BISFEUwD.js → cynefin-OW5HDTMX-BLueY7LI.js} +1 -1
  70. package/dist/client/assets/cynefin-OW5HDTMX-BLueY7LI.js.br +0 -0
  71. package/dist/client/assets/cynefin-OW5HDTMX-BLueY7LI.js.gz +0 -0
  72. package/dist/client/assets/{cynefinDiagram-5FMLGOSQ-DI32_4sP.js → cynefinDiagram-5FMLGOSQ-BQe9GpHs.js} +1 -1
  73. package/dist/client/assets/cynefinDiagram-5FMLGOSQ-BQe9GpHs.js.br +0 -0
  74. package/dist/client/assets/cynefinDiagram-5FMLGOSQ-BQe9GpHs.js.gz +0 -0
  75. package/dist/client/assets/{dagre-GXQ25YYZ-TXkJuzc3.js → dagre-GXQ25YYZ-CRdRvnmM.js} +1 -1
  76. package/dist/client/assets/dagre-GXQ25YYZ-CRdRvnmM.js.br +0 -0
  77. package/dist/client/assets/dagre-GXQ25YYZ-CRdRvnmM.js.gz +0 -0
  78. package/dist/client/assets/{diagram-S7CK7UJ4-BzxAQEyH.js → diagram-S7CK7UJ4-CJU5cFBf.js} +1 -1
  79. package/dist/client/assets/diagram-S7CK7UJ4-CJU5cFBf.js.br +0 -0
  80. package/dist/client/assets/diagram-S7CK7UJ4-CJU5cFBf.js.gz +0 -0
  81. package/dist/client/assets/{diagram-UQ7AKVKN-CuMScMHK.js → diagram-UQ7AKVKN-MnZJQ2ws.js} +1 -1
  82. package/dist/client/assets/diagram-UQ7AKVKN-MnZJQ2ws.js.br +0 -0
  83. package/dist/client/assets/diagram-UQ7AKVKN-MnZJQ2ws.js.gz +0 -0
  84. package/dist/client/assets/{diagram-VSXAHHWV-NKI8trX3.js → diagram-VSXAHHWV-yrJNSRYG.js} +1 -1
  85. package/dist/client/assets/diagram-VSXAHHWV-yrJNSRYG.js.br +0 -0
  86. package/dist/client/assets/diagram-VSXAHHWV-yrJNSRYG.js.gz +0 -0
  87. package/dist/client/assets/{diagram-VX7I27RA-C99awHgN.js → diagram-VX7I27RA-BZfpCcvu.js} +1 -1
  88. package/dist/client/assets/diagram-VX7I27RA-BZfpCcvu.js.br +0 -0
  89. package/dist/client/assets/diagram-VX7I27RA-BZfpCcvu.js.gz +0 -0
  90. package/dist/client/assets/{diagram-Z3DM3KII-BsC3OPmH.js → diagram-Z3DM3KII-B_JF7UFB.js} +1 -1
  91. package/dist/client/assets/diagram-Z3DM3KII-B_JF7UFB.js.br +0 -0
  92. package/dist/client/assets/diagram-Z3DM3KII-B_JF7UFB.js.gz +0 -0
  93. package/dist/client/assets/{ebnfDiagram-PWID7BFC-C4en7LU4.js → ebnfDiagram-PWID7BFC-Bxy5fI3U.js} +1 -1
  94. package/dist/client/assets/ebnfDiagram-PWID7BFC-Bxy5fI3U.js.br +0 -0
  95. package/dist/client/assets/ebnfDiagram-PWID7BFC-Bxy5fI3U.js.gz +0 -0
  96. package/dist/client/assets/{erDiagram-RLTQ6QDP-DumCCiK7.js → erDiagram-RLTQ6QDP-BO1OLT5a.js} +1 -1
  97. package/dist/client/assets/erDiagram-RLTQ6QDP-BO1OLT5a.js.br +0 -0
  98. package/dist/client/assets/erDiagram-RLTQ6QDP-BO1OLT5a.js.gz +0 -0
  99. package/dist/client/assets/{flowDiagram-HODETNUW-DKT_aPyu.js → flowDiagram-HODETNUW-_ph0TMva.js} +1 -1
  100. package/dist/client/assets/flowDiagram-HODETNUW-_ph0TMva.js.br +0 -0
  101. package/dist/client/assets/flowDiagram-HODETNUW-_ph0TMva.js.gz +0 -0
  102. package/dist/client/assets/{ganttDiagram-EL5Y4UJY-CId-QB6P.js → ganttDiagram-EL5Y4UJY-BLfYobp9.js} +1 -1
  103. package/dist/client/assets/ganttDiagram-EL5Y4UJY-BLfYobp9.js.br +0 -0
  104. package/dist/client/assets/{ganttDiagram-EL5Y4UJY-CId-QB6P.js.gz → ganttDiagram-EL5Y4UJY-BLfYobp9.js.gz} +0 -0
  105. package/dist/client/assets/{gestureArbiter-D-hJxSpi.js → gestureArbiter-C5OWgbj5.js} +1 -1
  106. package/dist/client/assets/gestureArbiter-C5OWgbj5.js.br +0 -0
  107. package/dist/client/assets/gestureArbiter-C5OWgbj5.js.gz +0 -0
  108. package/dist/client/assets/{gitGraphDiagram-WWUBYQGX-CNyiA6xo.js → gitGraphDiagram-WWUBYQGX-BG2QJORF.js} +1 -1
  109. package/dist/client/assets/gitGraphDiagram-WWUBYQGX-BG2QJORF.js.br +0 -0
  110. package/dist/client/assets/gitGraphDiagram-WWUBYQGX-BG2QJORF.js.gz +0 -0
  111. package/dist/client/assets/{index-DSUyAohI.css → index-B8gcsZys.css} +1 -1
  112. package/dist/client/assets/index-B8gcsZys.css.br +0 -0
  113. package/dist/client/assets/{index-DSUyAohI.css.gz → index-B8gcsZys.css.gz} +0 -0
  114. package/dist/client/assets/{infoDiagram-27XIBGKW-BZ8TbGVw.js → infoDiagram-27XIBGKW-DlksX7PW.js} +1 -1
  115. package/dist/client/assets/{ishikawaDiagram-5VMMS53U-O1fthDSH.js → ishikawaDiagram-5VMMS53U-D9VUol19.js} +1 -1
  116. package/dist/client/assets/ishikawaDiagram-5VMMS53U-D9VUol19.js.br +0 -0
  117. package/dist/client/assets/ishikawaDiagram-5VMMS53U-D9VUol19.js.gz +0 -0
  118. package/dist/client/assets/{journeyDiagram-3NMN7TZE-WaGckv1S.js → journeyDiagram-3NMN7TZE-DLunjIVY.js} +1 -1
  119. package/dist/client/assets/journeyDiagram-3NMN7TZE-DLunjIVY.js.br +0 -0
  120. package/dist/client/assets/journeyDiagram-3NMN7TZE-DLunjIVY.js.gz +0 -0
  121. package/dist/client/assets/{kanban-definition-UXKFOSKX-DNQOxjx3.js → kanban-definition-UXKFOSKX-z6LdqA9k.js} +1 -1
  122. package/dist/client/assets/kanban-definition-UXKFOSKX-z6LdqA9k.js.br +0 -0
  123. package/dist/client/assets/kanban-definition-UXKFOSKX-z6LdqA9k.js.gz +0 -0
  124. package/dist/client/assets/{layout-9yDfVyqo.js → layout-5voc-0J-.js} +1 -1
  125. package/dist/client/assets/layout-5voc-0J-.js.br +0 -0
  126. package/dist/client/assets/layout-5voc-0J-.js.gz +0 -0
  127. package/dist/client/assets/{linear-B1BTva8R.js → linear-DXZmUAxS.js} +1 -1
  128. package/dist/client/assets/linear-DXZmUAxS.js.br +0 -0
  129. package/dist/client/assets/linear-DXZmUAxS.js.gz +0 -0
  130. package/dist/client/assets/{mermaid.core-8EsAUUxp.js → mermaid.core-BiuAc_1Z.js} +5 -5
  131. package/dist/client/assets/mermaid.core-BiuAc_1Z.js.br +0 -0
  132. package/dist/client/assets/mermaid.core-BiuAc_1Z.js.gz +0 -0
  133. package/dist/client/assets/{mindmap-definition-YA3MSWOX-Drh-G4UL.js → mindmap-definition-YA3MSWOX-Bo-sudh-.js} +1 -1
  134. package/dist/client/assets/mindmap-definition-YA3MSWOX-Bo-sudh-.js.br +0 -0
  135. package/dist/client/assets/mindmap-definition-YA3MSWOX-Bo-sudh-.js.gz +0 -0
  136. package/dist/client/assets/{passwordBootstrap-BB0eooUy.js → passwordBootstrap-B5ZngKXH.js} +1 -1
  137. package/dist/client/assets/passwordBootstrap-B5ZngKXH.js.br +0 -0
  138. package/dist/client/assets/passwordBootstrap-B5ZngKXH.js.gz +0 -0
  139. package/dist/client/assets/{pegDiagram-XKGWAZYB-CHTmFjna.js → pegDiagram-XKGWAZYB-BRRfOBil.js} +1 -1
  140. package/dist/client/assets/pegDiagram-XKGWAZYB-BRRfOBil.js.br +0 -0
  141. package/dist/client/assets/pegDiagram-XKGWAZYB-BRRfOBil.js.gz +0 -0
  142. package/dist/client/assets/{pieDiagram-E7YTZNPT-BoA5Wz2y.js → pieDiagram-E7YTZNPT-DPj6T7rJ.js} +1 -1
  143. package/dist/client/assets/pieDiagram-E7YTZNPT-DPj6T7rJ.js.br +0 -0
  144. package/dist/client/assets/pieDiagram-E7YTZNPT-DPj6T7rJ.js.gz +0 -0
  145. package/dist/client/assets/{quadrantDiagram-AXDQQJYC-DuhdCXKc.js → quadrantDiagram-AXDQQJYC-LIHObTPR.js} +1 -1
  146. package/dist/client/assets/quadrantDiagram-AXDQQJYC-LIHObTPR.js.br +0 -0
  147. package/dist/client/assets/quadrantDiagram-AXDQQJYC-LIHObTPR.js.gz +0 -0
  148. package/dist/client/assets/{railroadDiagram-O6MQD6OU-DyCp5vBV.js → railroadDiagram-O6MQD6OU-Ca-5xQW5.js} +1 -1
  149. package/dist/client/assets/railroadDiagram-O6MQD6OU-Ca-5xQW5.js.br +0 -0
  150. package/dist/client/assets/railroadDiagram-O6MQD6OU-Ca-5xQW5.js.gz +0 -0
  151. package/dist/client/assets/{referenceLongPress-B0KH2_WY.js → referenceLongPress-C9-wHXE8.js} +1 -1
  152. package/dist/client/assets/referenceLongPress-C9-wHXE8.js.br +0 -0
  153. package/dist/client/assets/referenceLongPress-C9-wHXE8.js.gz +0 -0
  154. package/dist/client/assets/{requirementDiagram-BXWQKSXE-CQ-bjC2d.js → requirementDiagram-BXWQKSXE-BSWKjnCS.js} +1 -1
  155. package/dist/client/assets/requirementDiagram-BXWQKSXE-BSWKjnCS.js.br +0 -0
  156. package/dist/client/assets/requirementDiagram-BXWQKSXE-BSWKjnCS.js.gz +0 -0
  157. package/dist/client/assets/{sankeyDiagram-P5KCCOFB-VxI-qQvZ.js → sankeyDiagram-P5KCCOFB-B_AI8Eyl.js} +1 -1
  158. package/dist/client/assets/sankeyDiagram-P5KCCOFB-B_AI8Eyl.js.br +0 -0
  159. package/dist/client/assets/sankeyDiagram-P5KCCOFB-B_AI8Eyl.js.gz +0 -0
  160. package/dist/client/assets/{sequenceDiagram-WJ2MYXX4-DbNFaelN.js → sequenceDiagram-WJ2MYXX4-DRRLVfAr.js} +1 -1
  161. package/dist/client/assets/sequenceDiagram-WJ2MYXX4-DRRLVfAr.js.br +0 -0
  162. package/dist/client/assets/sequenceDiagram-WJ2MYXX4-DRRLVfAr.js.gz +0 -0
  163. package/dist/client/assets/{sizeCapture-INFHLROL-Dz84Ksqq.js → sizeCapture-INFHLROL-DDbIEMNY.js} +1 -1
  164. package/dist/client/assets/sizeCapture-INFHLROL-DDbIEMNY.js.br +0 -0
  165. package/dist/client/assets/sizeCapture-INFHLROL-DDbIEMNY.js.gz +0 -0
  166. package/dist/client/assets/{sparkles-D2io1LdN.js → sparkles-DWhNuQTx.js} +1 -1
  167. package/dist/client/assets/{stateDiagram-D77RDMKH-CvEVfJld.js → stateDiagram-D77RDMKH-CYxjYwsm.js} +1 -1
  168. package/dist/client/assets/stateDiagram-D77RDMKH-CYxjYwsm.js.br +0 -0
  169. package/dist/client/assets/stateDiagram-D77RDMKH-CYxjYwsm.js.gz +0 -0
  170. package/dist/client/assets/stateDiagram-v2-MP3YSRHH-CbfR3Vd4.js +1 -0
  171. package/dist/client/assets/{swimlanes-42K2YHIH-AYjy2aQa.js → swimlanes-42K2YHIH-Cm-hHwV-.js} +1 -1
  172. package/dist/client/assets/swimlanes-42K2YHIH-Cm-hHwV-.js.br +0 -0
  173. package/dist/client/assets/swimlanes-42K2YHIH-Cm-hHwV-.js.gz +0 -0
  174. package/dist/client/assets/swimlanesDiagram-VR7AAH4N-CDrfZEW2.js +8 -0
  175. package/dist/client/assets/{timeline-definition-24CTP7MA-K9VDNPEb.js → timeline-definition-24CTP7MA-B8M6kRMB.js} +1 -1
  176. package/dist/client/assets/timeline-definition-24CTP7MA-B8M6kRMB.js.br +0 -0
  177. package/dist/client/assets/timeline-definition-24CTP7MA-B8M6kRMB.js.gz +0 -0
  178. package/dist/client/assets/{triangle-alert-kTNQj7PF.js → triangle-alert-Dg2aJQyG.js} +1 -1
  179. package/dist/client/assets/{vennDiagram-4TSXK5OY-DUf8BAt1.js → vennDiagram-4TSXK5OY-DQ0EhNEv.js} +1 -1
  180. package/dist/client/assets/vennDiagram-4TSXK5OY-DQ0EhNEv.js.br +0 -0
  181. package/dist/client/assets/vennDiagram-4TSXK5OY-DQ0EhNEv.js.gz +0 -0
  182. package/dist/client/assets/{wardleyDiagram-VM6X3IG4-Bp1I8Vy7.js → wardleyDiagram-VM6X3IG4-CYB1GjF2.js} +1 -1
  183. package/dist/client/assets/wardleyDiagram-VM6X3IG4-CYB1GjF2.js.br +0 -0
  184. package/dist/client/assets/wardleyDiagram-VM6X3IG4-CYB1GjF2.js.gz +0 -0
  185. package/dist/client/assets/{xychartDiagram-S5SC5T6Z-Dt0OvusF.js → xychartDiagram-S5SC5T6Z-DRT6UXmt.js} +1 -1
  186. package/dist/client/assets/xychartDiagram-S5SC5T6Z-DRT6UXmt.js.br +0 -0
  187. package/dist/client/assets/xychartDiagram-S5SC5T6Z-DRT6UXmt.js.gz +0 -0
  188. package/dist/client/index.html +2 -2
  189. package/dist/client/index.html.br +0 -0
  190. package/dist/client/index.html.gz +0 -0
  191. package/dist/client/sw.js +1 -1
  192. package/dist/client/sw.js.br +0 -0
  193. package/dist/client/sw.js.gz +0 -0
  194. package/package.json +1 -1
  195. package/runtime-manifest.json +2 -2
  196. package/dist/client/assets/App-c7kz7Ubk.js.br +0 -0
  197. package/dist/client/assets/App-c7kz7Ubk.js.gz +0 -0
  198. package/dist/client/assets/ChangeWalkthroughPanel-Bydnbq0F.js.br +0 -0
  199. package/dist/client/assets/ChangeWalkthroughPanel-Bydnbq0F.js.gz +0 -0
  200. package/dist/client/assets/DagPlayground-BOhl81pI.js.br +0 -0
  201. package/dist/client/assets/DagPlayground-BOhl81pI.js.gz +0 -0
  202. package/dist/client/assets/DiffLab-Frkr3MbV.js.br +0 -0
  203. package/dist/client/assets/DiffLab-Frkr3MbV.js.gz +0 -0
  204. package/dist/client/assets/DiffReview-DxgTeEAU.js.br +0 -0
  205. package/dist/client/assets/DiffReview-DxgTeEAU.js.gz +0 -0
  206. package/dist/client/assets/DiffReviewLab-BOc71Yev.js.br +0 -0
  207. package/dist/client/assets/DiffReviewLab-BOc71Yev.js.gz +0 -0
  208. package/dist/client/assets/DiffViewer-BkIhdRra.js.br +0 -0
  209. package/dist/client/assets/DiffViewer-BkIhdRra.js.gz +0 -0
  210. package/dist/client/assets/ModelPreview-CH2TQwG6.js.br +0 -0
  211. package/dist/client/assets/ModelPreview-CH2TQwG6.js.gz +0 -0
  212. package/dist/client/assets/RightSidebar-BHWRnOpP.js.br +0 -0
  213. package/dist/client/assets/RightSidebar-BHWRnOpP.js.gz +0 -0
  214. package/dist/client/assets/abnfDiagram-VCTEODGH-Uf4zSEDT.js.br +0 -0
  215. package/dist/client/assets/abnfDiagram-VCTEODGH-Uf4zSEDT.js.gz +0 -0
  216. package/dist/client/assets/app-BB2wwQ0J.js.br +0 -0
  217. package/dist/client/assets/app-BB2wwQ0J.js.gz +0 -0
  218. package/dist/client/assets/arc-DRmqfmwm.js.br +0 -0
  219. package/dist/client/assets/arc-DRmqfmwm.js.gz +0 -0
  220. package/dist/client/assets/architectureDiagram-5GKGNRK7-B-2Al0rh.js.br +0 -0
  221. package/dist/client/assets/architectureDiagram-5GKGNRK7-B-2Al0rh.js.gz +0 -0
  222. package/dist/client/assets/blockDiagram-I7D4REHJ-CH5wQtui.js.br +0 -0
  223. package/dist/client/assets/blockDiagram-I7D4REHJ-CH5wQtui.js.gz +0 -0
  224. package/dist/client/assets/c4Diagram-7LVT6UL2-BK-d-9zq.js.br +0 -0
  225. package/dist/client/assets/c4Diagram-7LVT6UL2-BK-d-9zq.js.gz +0 -0
  226. package/dist/client/assets/channel-L5SeZpt8.js +0 -1
  227. package/dist/client/assets/chunk-F27PBJKO-C-CfcBwS.js.br +0 -0
  228. package/dist/client/assets/chunk-F27PBJKO-C-CfcBwS.js.gz +0 -0
  229. package/dist/client/assets/chunk-IMKFNOWR-eabrbPYb.js.br +0 -0
  230. package/dist/client/assets/chunk-IMKFNOWR-eabrbPYb.js.gz +0 -0
  231. package/dist/client/assets/chunk-SVP7TREG-DdooqOrA.js.br +0 -0
  232. package/dist/client/assets/chunk-SVP7TREG-DdooqOrA.js.gz +0 -0
  233. package/dist/client/assets/chunk-TICWLB2K-Bfo-6Shk.js.br +0 -0
  234. package/dist/client/assets/chunk-TICWLB2K-Bfo-6Shk.js.gz +0 -0
  235. package/dist/client/assets/classDiagram-ZZMXUADV-Dli5JRtZ.js +0 -1
  236. package/dist/client/assets/classDiagram-v2-VYDZK3BY-Dli5JRtZ.js +0 -1
  237. package/dist/client/assets/cose-bilkent-JH36ORCC-Czk8_m7q.js.br +0 -0
  238. package/dist/client/assets/cose-bilkent-JH36ORCC-Czk8_m7q.js.gz +0 -0
  239. package/dist/client/assets/cynefin-OW5HDTMX-BISFEUwD.js.br +0 -0
  240. package/dist/client/assets/cynefin-OW5HDTMX-BISFEUwD.js.gz +0 -0
  241. package/dist/client/assets/cynefinDiagram-5FMLGOSQ-DI32_4sP.js.br +0 -0
  242. package/dist/client/assets/cynefinDiagram-5FMLGOSQ-DI32_4sP.js.gz +0 -0
  243. package/dist/client/assets/dagre-GXQ25YYZ-TXkJuzc3.js.br +0 -0
  244. package/dist/client/assets/dagre-GXQ25YYZ-TXkJuzc3.js.gz +0 -0
  245. package/dist/client/assets/diagram-S7CK7UJ4-BzxAQEyH.js.br +0 -0
  246. package/dist/client/assets/diagram-S7CK7UJ4-BzxAQEyH.js.gz +0 -0
  247. package/dist/client/assets/diagram-UQ7AKVKN-CuMScMHK.js.br +0 -0
  248. package/dist/client/assets/diagram-UQ7AKVKN-CuMScMHK.js.gz +0 -0
  249. package/dist/client/assets/diagram-VSXAHHWV-NKI8trX3.js.br +0 -0
  250. package/dist/client/assets/diagram-VSXAHHWV-NKI8trX3.js.gz +0 -0
  251. package/dist/client/assets/diagram-VX7I27RA-C99awHgN.js.br +0 -0
  252. package/dist/client/assets/diagram-VX7I27RA-C99awHgN.js.gz +0 -0
  253. package/dist/client/assets/diagram-Z3DM3KII-BsC3OPmH.js.br +0 -0
  254. package/dist/client/assets/diagram-Z3DM3KII-BsC3OPmH.js.gz +0 -0
  255. package/dist/client/assets/ebnfDiagram-PWID7BFC-C4en7LU4.js.br +0 -0
  256. package/dist/client/assets/ebnfDiagram-PWID7BFC-C4en7LU4.js.gz +0 -0
  257. package/dist/client/assets/erDiagram-RLTQ6QDP-DumCCiK7.js.br +0 -0
  258. package/dist/client/assets/erDiagram-RLTQ6QDP-DumCCiK7.js.gz +0 -0
  259. package/dist/client/assets/flowDiagram-HODETNUW-DKT_aPyu.js.br +0 -0
  260. package/dist/client/assets/flowDiagram-HODETNUW-DKT_aPyu.js.gz +0 -0
  261. package/dist/client/assets/ganttDiagram-EL5Y4UJY-CId-QB6P.js.br +0 -0
  262. package/dist/client/assets/gestureArbiter-D-hJxSpi.js.br +0 -0
  263. package/dist/client/assets/gestureArbiter-D-hJxSpi.js.gz +0 -0
  264. package/dist/client/assets/gitGraphDiagram-WWUBYQGX-CNyiA6xo.js.br +0 -0
  265. package/dist/client/assets/gitGraphDiagram-WWUBYQGX-CNyiA6xo.js.gz +0 -0
  266. package/dist/client/assets/index-DSUyAohI.css.br +0 -0
  267. package/dist/client/assets/ishikawaDiagram-5VMMS53U-O1fthDSH.js.br +0 -0
  268. package/dist/client/assets/ishikawaDiagram-5VMMS53U-O1fthDSH.js.gz +0 -0
  269. package/dist/client/assets/journeyDiagram-3NMN7TZE-WaGckv1S.js.br +0 -0
  270. package/dist/client/assets/journeyDiagram-3NMN7TZE-WaGckv1S.js.gz +0 -0
  271. package/dist/client/assets/kanban-definition-UXKFOSKX-DNQOxjx3.js.br +0 -0
  272. package/dist/client/assets/kanban-definition-UXKFOSKX-DNQOxjx3.js.gz +0 -0
  273. package/dist/client/assets/layout-9yDfVyqo.js.br +0 -0
  274. package/dist/client/assets/layout-9yDfVyqo.js.gz +0 -0
  275. package/dist/client/assets/linear-B1BTva8R.js.br +0 -0
  276. package/dist/client/assets/linear-B1BTva8R.js.gz +0 -0
  277. package/dist/client/assets/mermaid.core-8EsAUUxp.js.br +0 -0
  278. package/dist/client/assets/mermaid.core-8EsAUUxp.js.gz +0 -0
  279. package/dist/client/assets/mindmap-definition-YA3MSWOX-Drh-G4UL.js.br +0 -0
  280. package/dist/client/assets/mindmap-definition-YA3MSWOX-Drh-G4UL.js.gz +0 -0
  281. package/dist/client/assets/passwordBootstrap-BB0eooUy.js.br +0 -0
  282. package/dist/client/assets/passwordBootstrap-BB0eooUy.js.gz +0 -0
  283. package/dist/client/assets/pegDiagram-XKGWAZYB-CHTmFjna.js.br +0 -0
  284. package/dist/client/assets/pegDiagram-XKGWAZYB-CHTmFjna.js.gz +0 -0
  285. package/dist/client/assets/pieDiagram-E7YTZNPT-BoA5Wz2y.js.br +0 -0
  286. package/dist/client/assets/pieDiagram-E7YTZNPT-BoA5Wz2y.js.gz +0 -0
  287. package/dist/client/assets/quadrantDiagram-AXDQQJYC-DuhdCXKc.js.br +0 -0
  288. package/dist/client/assets/quadrantDiagram-AXDQQJYC-DuhdCXKc.js.gz +0 -0
  289. package/dist/client/assets/railroadDiagram-O6MQD6OU-DyCp5vBV.js.br +0 -0
  290. package/dist/client/assets/railroadDiagram-O6MQD6OU-DyCp5vBV.js.gz +0 -0
  291. package/dist/client/assets/referenceLongPress-B0KH2_WY.js.br +0 -0
  292. package/dist/client/assets/referenceLongPress-B0KH2_WY.js.gz +0 -0
  293. package/dist/client/assets/requirementDiagram-BXWQKSXE-CQ-bjC2d.js.br +0 -0
  294. package/dist/client/assets/requirementDiagram-BXWQKSXE-CQ-bjC2d.js.gz +0 -0
  295. package/dist/client/assets/sankeyDiagram-P5KCCOFB-VxI-qQvZ.js.br +0 -0
  296. package/dist/client/assets/sankeyDiagram-P5KCCOFB-VxI-qQvZ.js.gz +0 -0
  297. package/dist/client/assets/sequenceDiagram-WJ2MYXX4-DbNFaelN.js.br +0 -0
  298. package/dist/client/assets/sequenceDiagram-WJ2MYXX4-DbNFaelN.js.gz +0 -0
  299. package/dist/client/assets/sizeCapture-INFHLROL-Dz84Ksqq.js.br +0 -0
  300. package/dist/client/assets/sizeCapture-INFHLROL-Dz84Ksqq.js.gz +0 -0
  301. package/dist/client/assets/stateDiagram-D77RDMKH-CvEVfJld.js.br +0 -0
  302. package/dist/client/assets/stateDiagram-D77RDMKH-CvEVfJld.js.gz +0 -0
  303. package/dist/client/assets/stateDiagram-v2-MP3YSRHH-BAVTwS0M.js +0 -1
  304. package/dist/client/assets/swimlanes-42K2YHIH-AYjy2aQa.js.br +0 -0
  305. package/dist/client/assets/swimlanes-42K2YHIH-AYjy2aQa.js.gz +0 -0
  306. package/dist/client/assets/swimlanesDiagram-VR7AAH4N-CGSyaJW_.js +0 -8
  307. package/dist/client/assets/timeline-definition-24CTP7MA-K9VDNPEb.js.br +0 -0
  308. package/dist/client/assets/timeline-definition-24CTP7MA-K9VDNPEb.js.gz +0 -0
  309. package/dist/client/assets/vennDiagram-4TSXK5OY-DUf8BAt1.js.br +0 -0
  310. package/dist/client/assets/vennDiagram-4TSXK5OY-DUf8BAt1.js.gz +0 -0
  311. package/dist/client/assets/wardleyDiagram-VM6X3IG4-Bp1I8Vy7.js.br +0 -0
  312. package/dist/client/assets/wardleyDiagram-VM6X3IG4-Bp1I8Vy7.js.gz +0 -0
  313. package/dist/client/assets/xychartDiagram-S5SC5T6Z-Dt0OvusF.js.br +0 -0
  314. package/dist/client/assets/xychartDiagram-S5SC5T6Z-Dt0OvusF.js.gz +0 -0
@@ -1,2 +1,2 @@
1
- import{a5 as re,cL as ce,bh as s,d as le}from"./app-BB2wwQ0J.js";import{b as D}from"./dnd-BCFAPC0L.js";import{S as de}from"./sparkles-D2io1LdN.js";import{M as me,G as he,L as ue,T as xe,C as fe}from"./triangle-alert-kTNQj7PF.js";const pe=[["path",{d:"m15 18-6-6 6-6",key:"1wnfg3"}]],ye=re("chevron-left",pe);const ge=[["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"}]],be=re("minimize-2",ge);function ke(t,d){return(d?t.filter(o=>o.repoRoot===d):t).slice().sort((o,r)=>r.injectedAt-o.injectedAt)[0]??null}function ve(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 Ne(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:Ne(t),className:`${o} text-left transition hover:border-primary/35 hover:bg-primary/15 active:scale-[0.99]`,style:r,children:d})}const H=190,X=92,q=132,we=28,C=16,J=18,T=54,ee=24,ae=18,je=8,B=24,z=["rgb(var(--primary-rgb))","rgb(var(--accent-rgb))","rgb(var(--warning-rgb))","rgb(var(--success-rgb))","rgb(192 132 252)"];function te(t){return z[t%z.length]}function Me(t,d){return`${t.from}->${t.to}:${d}`}function Ee(t,d,i){const o=Math.max(d.get(t)?.length??0,i.get(t)?.length??0);return Math.max(X,36+Math.max(0,o-1)*ae)}function ne(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 se(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 $e(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,x)=>(h.fromY+h.toY)/2-(x.fromY+x.toY)/2||h.index-x.index);const r=[];o.forEach((h,x)=>{const N=(h.fromY+h.toY)/2,M=Math.max(B,d[h.key]??0)/2;if(x===0){r.push(N);return}const w=o[x-1],E=Math.max(B,d[w.key]??0)/2;r.push(Math.max(N,r[x-1]+E+M+je))});const g=r.reduce((h,x,N)=>h+x-(o[N].fromY+o[N].toY)/2,0)/Math.max(1,r.length),l=Math.min(...r.map((h,x)=>h-g-Math.max(B,d[o[x].key]??0)/2)),a=Math.max(0,C-l);o.forEach((h,x)=>{h.laneY=r[x]-g+a})}}function _e(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,x=new Set,N=n=>{const m=h.get(n);if(m!==void 0)return m;if(x.has(n))return 0;x.add(n);const c=l.get(n)??[],u=c.length===0?0:Math.max(...c.map(N))+1;return x.delete(n),h.set(n,u),u};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)??[],u=r.get(n.id);u&&c.push(u),M.set(m,c)}const w=[];for(const[n,m]of M.entries()){m.sort((u,f)=>u.index-f.index);let c=C+T;m.forEach(({node:u,index:f},j)=>{const I=Math.max(Ee(u.id,l,a),Math.ceil(i[u.id]??X));w.push({node:u,index:f,layer:n,row:j,x:C+n*(H+q),y:c,height:I}),c+=I+we})}const E=new Map(w.map(n=>[n.node.id,n])),v=g.flatMap((n,m)=>{const c=E.get(n.from),u=E.get(n.to);return!c||!u?[]:[{...n,key:Me(n,m),index:m,fromNode:c,toNode:u,routeIndex:m,fromPortIndex:0,toPortIndex:0,fromY:c.y+c.height/2,toY:u.y+u.height/2,laneY:(c.y+c.height/2+u.y+u.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=se(m,v,"from");c.forEach((u,f)=>{const j=v[u];j.fromPortIndex=f,j.fromY=ne(E.get(n),f,c.length)})}for(const[n,m]of G){const c=se(m,v,"to");c.forEach((u,f)=>{const j=v[u];j.toPortIndex=f,j.toY=ne(E.get(n),f,c.length)})}$e(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))-ee-(Math.floor(f/2)+1)*J,S=Math.max(...j.map(A=>A.y+A.height))+ee+(Math.floor(f/2)+1)*J;n.laneY=f%2===0?Math.max(C,I):S});const O=Math.max(0,...w.map(n=>n.layer)),W=Math.max(C+T+X,...w.map(n=>n.y+n.height),...v.map(n=>n.laneY+Math.max(B,o[n.key]??0)/2));return{nodes:w,edges:v,width:C*2+(O+1)*H+O*q,height:W+C+T}}function oe(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,x=l.y-g.y,N=a.x-l.x,M=a.y-l.y,w=Math.abs(h)+Math.abs(x),E=Math.abs(N)+Math.abs(M);if(w===0||E===0||h&&N||x&&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(x)*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 De(t){const d=t.fromNode.x+H+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?oe([{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}]):oe([{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 Ie(t){const d=t.fromNode.x+H+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 Pe({walkthroughs:t,repoRoot:d,onNavigate:i,fullscreen:o=!1,onToggleFullscreen:r}){const{t:g}=ce(),l=D.useId(),a=ke(t,d),h=D.useRef(new Map),x=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?_e(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 x.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 u=`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):[],U=f?new Set(A.map(e=>e.key)):null,F=f?new Set([f,...A.flatMap(e=>[e.from,e.to])]):S?new Set([S.from,S.to]):null,K=new Map(a.sections.filter(e=>e.nodeId&&e.anchor).map(e=>[e.nodeId,e.anchor])),L=a.nodes.filter(e=>e.anchor??K.get(e.id)),R=L.findIndex(e=>e.id===n),V=e=>{if(L.length===0)return;const y=R<0?e<0?L.length-1:0:Math.min(L.length-1,Math.max(0,R+e)),p=L[y],b=p.anchor??K.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:()=>V(-1),disabled:R===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(ye,{size:15})}),s.jsxs("span",{className:"min-w-8 text-center text-[10px] tabular-nums text-muted-foreground",children:[R<0?"—":R+1,"/",L.length]}),s.jsx("button",{type:"button",onClick:()=>V(1),disabled:R===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(be,{size:15}):s.jsx(me,{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(he,{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:z.map((e,y)=>s.jsx("marker",{id:`${u}-${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=De(e),p=te(e.index),b=I===e.key||!!U?.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(#${u}-${e.index%z.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+H+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:_}=Ie(e),k=te(e.index),Z=I===e.key||!!U?.has(e.key),ie=!!((I||f)&&!Z);return s.jsxs("button",{ref:P=>{P?x.current.set(e.key,P):x.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?`
1
+ import{a5 as re,cL as ce,bh as s,d as le}from"./app-Cxpk5OKD.js";import{b as D}from"./dnd-BCFAPC0L.js";import{S as de}from"./sparkles-DWhNuQTx.js";import{M as me,G as he,L as ue,T as xe,C as fe}from"./triangle-alert-Dg2aJQyG.js";const pe=[["path",{d:"m15 18-6-6 6-6",key:"1wnfg3"}]],ye=re("chevron-left",pe);const ge=[["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"}]],be=re("minimize-2",ge);function ke(t,d){return(d?t.filter(o=>o.repoRoot===d):t).slice().sort((o,r)=>r.injectedAt-o.injectedAt)[0]??null}function ve(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 Ne(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:Ne(t),className:`${o} text-left transition hover:border-primary/35 hover:bg-primary/15 active:scale-[0.99]`,style:r,children:d})}const H=190,X=92,q=132,we=28,C=16,J=18,T=54,ee=24,ae=18,je=8,B=24,z=["rgb(var(--primary-rgb))","rgb(var(--accent-rgb))","rgb(var(--warning-rgb))","rgb(var(--success-rgb))","rgb(192 132 252)"];function te(t){return z[t%z.length]}function Me(t,d){return`${t.from}->${t.to}:${d}`}function Ee(t,d,i){const o=Math.max(d.get(t)?.length??0,i.get(t)?.length??0);return Math.max(X,36+Math.max(0,o-1)*ae)}function ne(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 se(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 $e(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,x)=>(h.fromY+h.toY)/2-(x.fromY+x.toY)/2||h.index-x.index);const r=[];o.forEach((h,x)=>{const N=(h.fromY+h.toY)/2,M=Math.max(B,d[h.key]??0)/2;if(x===0){r.push(N);return}const w=o[x-1],E=Math.max(B,d[w.key]??0)/2;r.push(Math.max(N,r[x-1]+E+M+je))});const g=r.reduce((h,x,N)=>h+x-(o[N].fromY+o[N].toY)/2,0)/Math.max(1,r.length),l=Math.min(...r.map((h,x)=>h-g-Math.max(B,d[o[x].key]??0)/2)),a=Math.max(0,C-l);o.forEach((h,x)=>{h.laneY=r[x]-g+a})}}function _e(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,x=new Set,N=n=>{const m=h.get(n);if(m!==void 0)return m;if(x.has(n))return 0;x.add(n);const c=l.get(n)??[],u=c.length===0?0:Math.max(...c.map(N))+1;return x.delete(n),h.set(n,u),u};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)??[],u=r.get(n.id);u&&c.push(u),M.set(m,c)}const w=[];for(const[n,m]of M.entries()){m.sort((u,f)=>u.index-f.index);let c=C+T;m.forEach(({node:u,index:f},j)=>{const I=Math.max(Ee(u.id,l,a),Math.ceil(i[u.id]??X));w.push({node:u,index:f,layer:n,row:j,x:C+n*(H+q),y:c,height:I}),c+=I+we})}const E=new Map(w.map(n=>[n.node.id,n])),v=g.flatMap((n,m)=>{const c=E.get(n.from),u=E.get(n.to);return!c||!u?[]:[{...n,key:Me(n,m),index:m,fromNode:c,toNode:u,routeIndex:m,fromPortIndex:0,toPortIndex:0,fromY:c.y+c.height/2,toY:u.y+u.height/2,laneY:(c.y+c.height/2+u.y+u.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=se(m,v,"from");c.forEach((u,f)=>{const j=v[u];j.fromPortIndex=f,j.fromY=ne(E.get(n),f,c.length)})}for(const[n,m]of G){const c=se(m,v,"to");c.forEach((u,f)=>{const j=v[u];j.toPortIndex=f,j.toY=ne(E.get(n),f,c.length)})}$e(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))-ee-(Math.floor(f/2)+1)*J,S=Math.max(...j.map(A=>A.y+A.height))+ee+(Math.floor(f/2)+1)*J;n.laneY=f%2===0?Math.max(C,I):S});const O=Math.max(0,...w.map(n=>n.layer)),W=Math.max(C+T+X,...w.map(n=>n.y+n.height),...v.map(n=>n.laneY+Math.max(B,o[n.key]??0)/2));return{nodes:w,edges:v,width:C*2+(O+1)*H+O*q,height:W+C+T}}function oe(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,x=l.y-g.y,N=a.x-l.x,M=a.y-l.y,w=Math.abs(h)+Math.abs(x),E=Math.abs(N)+Math.abs(M);if(w===0||E===0||h&&N||x&&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(x)*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 De(t){const d=t.fromNode.x+H+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?oe([{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}]):oe([{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 Ie(t){const d=t.fromNode.x+H+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 Pe({walkthroughs:t,repoRoot:d,onNavigate:i,fullscreen:o=!1,onToggleFullscreen:r}){const{t:g}=ce(),l=D.useId(),a=ke(t,d),h=D.useRef(new Map),x=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?_e(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 x.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 u=`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):[],U=f?new Set(A.map(e=>e.key)):null,F=f?new Set([f,...A.flatMap(e=>[e.from,e.to])]):S?new Set([S.from,S.to]):null,K=new Map(a.sections.filter(e=>e.nodeId&&e.anchor).map(e=>[e.nodeId,e.anchor])),L=a.nodes.filter(e=>e.anchor??K.get(e.id)),R=L.findIndex(e=>e.id===n),V=e=>{if(L.length===0)return;const y=R<0?e<0?L.length-1:0:Math.min(L.length-1,Math.max(0,R+e)),p=L[y],b=p.anchor??K.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:()=>V(-1),disabled:R===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(ye,{size:15})}),s.jsxs("span",{className:"min-w-8 text-center text-[10px] tabular-nums text-muted-foreground",children:[R<0?"—":R+1,"/",L.length]}),s.jsx("button",{type:"button",onClick:()=>V(1),disabled:R===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(be,{size:15}):s.jsx(me,{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(he,{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:z.map((e,y)=>s.jsx("marker",{id:`${u}-${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=De(e),p=te(e.index),b=I===e.key||!!U?.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(#${u}-${e.index%z.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+H+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:_}=Ie(e),k=te(e.index),Z=I===e.key||!!U?.has(e.key),ie=!!((I||f)&&!Z);return s.jsxs("button",{ref:P=>{P?x.current.set(e.key,P):x.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
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??K.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 ${F?.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)]":F?"border-border/15 opacity-40":"border-border/25"}`,style:{left:p,top:b,width:H,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 ${ve(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(ue,{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(xe,{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(fe,{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{Pe as C,be as M};
@@ -1 +1 @@
1
- import{bh as t}from"./app-BB2wwQ0J.js";import{C as s}from"./ChangeWalkthroughPanel-Bydnbq0F.js";import"./react-XDCjal2T.js";import"./dnd-BCFAPC0L.js";import"./terminal-C7X98Amf.js";import"./sparkles-D2io1LdN.js";import"./triangle-alert-kTNQj7PF.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};
1
+ import{bh as t}from"./app-Cxpk5OKD.js";import{C as s}from"./ChangeWalkthroughPanel-C218u7SN.js";import"./react-XDCjal2T.js";import"./dnd-BCFAPC0L.js";import"./terminal-C7X98Amf.js";import"./sparkles-DWhNuQTx.js";import"./triangle-alert-Dg2aJQyG.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};
@@ -1,4 +1,4 @@
1
- import{bh as e}from"./app-BB2wwQ0J.js";import{b as a}from"./dnd-BCFAPC0L.js";import{c as L,S as M,D as _}from"./DiffViewer-BkIhdRra.js";import"./react-XDCjal2T.js";import"./terminal-C7X98Amf.js";import"./referenceLongPress-B0KH2_WY.js";const p={chineseParagraphExpansion:{label:"Chinese paragraph expansion (AGENTS.md)",path:"AGENTS.md",diff:"diff --git a/AGENTS.md b/AGENTS.md\n--- a/AGENTS.md\n+++ b/AGENTS.md\n@@ -51,3 +51,3 @@\n 5. 编辑任务不自动授权提交或发布。\n-6. 查看字节内部平台链接或页面时优先查找并使用 `bytedcli` 对应子命令获取结构化信息;仅在确认 `bytedcli` 不支持、受鉴权或能力限制,或无法取得具体信息后,才使用 AI Chrome / `agent-browser` 等浏览器方式补充,禁止一开始直接使用浏览器。\n+6. 查看或读取字节内部平台的数据、链接或页面时,先使用对应的结构化 CLI:飞书群聊、文档、Base、Minutes 等优先使用 `lark-cli`,其他内部平台先查找并使用 `bytedcli` 对应子命令。只有确认 CLI 不支持、受鉴权或能力限制,或无法取得具体信息后,才允许用 AI Chrome、`agent-browser`、Computer Use 或其他桌面 GUI 方式补充。用户说“读一下群消息”“看一下页面内容”等,默认是数据读取请求,不因为目标应用已经打开或登录就视为桌面操作请求;只有用户明确要求点击、输入、拖拽等可见界面操作时,才可直接使用 Computer Use。\n 7. 值班机 / DevBox 共享运维仓库例外。"},multilineRewrite:{label:"Multi-line alignment function rewrite",path:"DiffViewer.tsx",diff:`diff --git a/DiffViewer.tsx b/DiffViewer.tsx
1
+ import{bh as e}from"./app-Cxpk5OKD.js";import{b as a}from"./dnd-BCFAPC0L.js";import{c as L,S as M,D as _}from"./DiffViewer-Crz6zQeB.js";import"./react-XDCjal2T.js";import"./terminal-C7X98Amf.js";import"./referenceLongPress-C9-wHXE8.js";const p={chineseParagraphExpansion:{label:"Chinese paragraph expansion (AGENTS.md)",path:"AGENTS.md",diff:"diff --git a/AGENTS.md b/AGENTS.md\n--- a/AGENTS.md\n+++ b/AGENTS.md\n@@ -51,3 +51,3 @@\n 5. 编辑任务不自动授权提交或发布。\n-6. 查看字节内部平台链接或页面时优先查找并使用 `bytedcli` 对应子命令获取结构化信息;仅在确认 `bytedcli` 不支持、受鉴权或能力限制,或无法取得具体信息后,才使用 AI Chrome / `agent-browser` 等浏览器方式补充,禁止一开始直接使用浏览器。\n+6. 查看或读取字节内部平台的数据、链接或页面时,先使用对应的结构化 CLI:飞书群聊、文档、Base、Minutes 等优先使用 `lark-cli`,其他内部平台先查找并使用 `bytedcli` 对应子命令。只有确认 CLI 不支持、受鉴权或能力限制,或无法取得具体信息后,才允许用 AI Chrome、`agent-browser`、Computer Use 或其他桌面 GUI 方式补充。用户说“读一下群消息”“看一下页面内容”等,默认是数据读取请求,不因为目标应用已经打开或登录就视为桌面操作请求;只有用户明确要求点击、输入、拖拽等可见界面操作时,才可直接使用 Computer Use。\n 7. 值班机 / DevBox 共享运维仓库例外。"},multilineRewrite:{label:"Multi-line alignment function rewrite",path:"DiffViewer.tsx",diff:`diff --git a/DiffViewer.tsx b/DiffViewer.tsx
2
2
  --- a/DiffViewer.tsx
3
3
  +++ b/DiffViewer.tsx
4
4
  @@ -714,28 +714,14 @@
@@ -390,6 +390,23 @@ Binary files a/preview.png and b/preview.png differ`},blankAndTabs:{label:"Blank
390
390
  + logger.info('retry request after backoff');
391
391
  + // request failed permanently
392
392
  capture(error);
393
+ }`},multiHunkWidths:{label:"Multiple hunks with unequal line widths",path:"UnequalWidths.ts",diff:`diff --git a/UnequalWidths.ts b/UnequalWidths.ts
394
+ --- a/UnequalWidths.ts
395
+ +++ b/UnequalWidths.ts
396
+ @@ -1,3 +1,3 @@
397
+ export function longLine() {
398
+ - return "${"long-segment-".repeat(18)}before";
399
+ + return "${"long-segment-".repeat(18)}after";
400
+ }
401
+ @@ -20,3 +20,3 @@
402
+ export function mediumLine() {
403
+ - return "${"medium-segment-".repeat(5)}before";
404
+ + return "${"medium-segment-".repeat(5)}after";
405
+ }
406
+ @@ -40,3 +40,3 @@
407
+ export function shortLine() {
408
+ - return false;
409
+ + return true;
393
410
  }`},multiHunkMixed:{label:"Multiple hunks with mixed change types",path:"MixedChanges.ts",diff:`diff --git a/MixedChanges.ts b/MixedChanges.ts
394
411
  --- a/MixedChanges.ts
395
412
  +++ b/MixedChanges.ts
@@ -1 +1 @@
1
- import{a5 as Qe,bh as r,d as ut,c as dt,cL as ft,cW as ht,ak as mt,a as pt,cV as xt,bz as gt,X as vt}from"./app-BB2wwQ0J.js";import{b as o,r as Ye}from"./dnd-BCFAPC0L.js";import{h as Je,F as bt,b as yt,c as Xe}from"./gestureArbiter-D-hJxSpi.js";import{S as Ze}from"./sparkles-D2io1LdN.js";import{D as wt,i as kt}from"./DiffViewer-BkIhdRra.js";const Rt=[["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"}]],jt=Qe("list-tree",Rt);const Nt=[["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"}]],Mt=Qe("list",Nt);function et({selected:t,depth:n=0,title:c,leading:m,children:h,trailing:i,role:b,tabIndex:g,ariaExpanded:x,onClick:f,onKeyDown:v,onPointerDown:L,onPointerUp:T,onPointerCancel:F,dataAttributes:V}){return r.jsxs("div",{role:b,tabIndex:g,"aria-expanded":x,title:c,onClick:f,onKeyDown:v,onPointerDown:L,onPointerUp:T,onPointerCancel:F,...V,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:`${n*14+8}px`},children:[r.jsx("span",{className:"flex min-w-[14px] shrink-0 items-center justify-center text-muted-foreground/80",children:m}),r.jsx("span",{className:"min-w-0 flex-1",children:h}),i]})}function tt(t){return t.path.replace(/^\/+/,"")}function Tt(t){if(t.displayName!==void 0||t.displayDir!==void 0)return{name:t.displayName||t.path,dir:t.displayDir||""};const n=t.path.split("/").filter(Boolean);return{name:n.pop()||t.path,dir:n.join("/")}}function rt(t,n){const c=new Map,m=(i,b,g,x)=>{const f=i.get(b);if(f)return f;const v={path:g,name:b,childCount:0,directories:[],files:[]};return i.set(b,v),x?.directories.push(v),v};for(const i of t){const b=n(i).split("/").filter(Boolean);if(b.length<=1)continue;let g=c,x=null,f="";for(const v of b.slice(0,-1)){f=f?`${f}/${v}`:v;const L=m(g,v,f,x);x=L,g=new Map(L.directories.map(T=>[T.name,T]))}x?.files.push(i)}const h=i=>{const b=i.directories.map(h).sort((x,f)=>x.name.localeCompare(f.name)),g=i.files.sort((x,f)=>x.path.localeCompare(f.path));return{...i,directories:b,files:g,childCount:b.reduce((x,f)=>x+f.childCount,0)+g.length}};return Array.from(c.values()).map(h).sort((i,b)=>i.name.localeCompare(b.name))}function He(t,n,c=0){const m=n.selectedKey===t.key||n.selectedKey===t.path||n.selectedKey===t.absolutePath,h=Tt(t);return r.jsx(et,{selected:m,role:"button",tabIndex:0,title:t.title??t.absolutePath??t.path,onClick:()=>{Je()||n.onSelectFile(t)},onKeyDown:i=>{i.key!=="Enter"&&i.key!==" "||(i.preventDefault(),n.onSelectFile(t))},leading:n.renderLeading(t),depth:c,trailing:n.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 ${m?"font-medium":""}`,children:h.name}),n.mode!=="tree"&&h.dir&&r.jsx("span",{className:"block truncate text-[10px] text-muted-foreground/75",children:h.dir}),n.renderSubtitle?.(t)]})},t.key)}function nt(t,n,c,m,h){let i=t;const b=[t.name];for(;i.files.length===0&&i.directories.length===1;)i=i.directories[0],b.push(i.name);const g=b.join("/"),x=`${n}:${i.path}`,f=c.collapsedDirectoryKeys.has(x);return r.jsxs("div",{className:"space-y-px",children:[r.jsx(et,{role:"button",tabIndex:0,onClick:()=>{Je()||c.onToggleDirectory(x)},onKeyDown:v=>{v.key!=="Enter"&&v.key!==" "||(v.preventDefault(),c.onToggleDirectory(x))},ariaExpanded:!f,depth:m,title:i.path,leading:f?r.jsx(ut,{size:13}):r.jsx(dt,{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:i.childCount}),c.renderDirectoryTrailing?.(i.path,h)]}),children:r.jsxs("span",{className:"flex min-w-0 items-center gap-1",children:[r.jsx(bt,{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:g})]})}),!f&&r.jsxs("div",{className:"space-y-px",children:[i.directories.map(v=>nt(v,n,c,m+1,h)),i.files.length>0&&r.jsx("div",{className:"space-y-px",children:i.files.map(v=>He(v,c,m+1))})]})]},x)}function Dt(t,n){const c=n.getFileTreePath??tt,m=t.files.filter(i=>c(i).split("/").filter(Boolean).length<=1),h=rt(t.files,c);return r.jsxs("div",{className:"space-y-px",children:[h.map(i=>nt(i,t.key,n,0,t)),m.length>0&&r.jsx("div",{className:"space-y-px",children:m.map(i=>He(i,n))})]})}function St(t,n=tt){const c=[],m=i=>{for(const b of i.directories)m(b);c.push(...i.files)};for(const i of rt(t,n))m(i);const h=new Set(c.map(i=>i.key));return c.push(...t.filter(i=>!h.has(i.key))),c}function It(t){return r.jsx("div",{className:t.mode==="tree"?"space-y-px pt-1":"space-y-2",children:t.groups.map(n=>{const c=!!n.header,m=!!n.collapsed;return r.jsxs("section",{className:c?"overflow-hidden rounded-lg border border-border/15 bg-surface/60":"",children:[n.header,!m&&r.jsx("div",{className:t.mode==="tree"?c?"space-y-px bg-surface/60 p-1":"space-y-px":c?"space-y-px bg-surface/60 p-1.5":"space-y-px",children:t.mode==="tree"?Dt(n,t):n.files.map(h=>He(h,t))})]},n.key)})})}const Ee="termdock:diff-review:list-width:v1",Et=120,Le=320,Ke=220,Ct=560;function Ft(t){return typeof t=="number"&&Number.isFinite(t)}function qe(t,n){const c=Math.max(Ke,n-360),m=Math.min(Ct,c);return Math.min(m,Math.max(Ke,t))}function _t(){return gt(Ee,Ft)??Le}function At({list:t,detail:n,mobile:c,mobileListHeader:m,mobileDetailHeader:h,desktopListHeader:i,backLabel:b,onMobileSlideChange:g,externalSwiperRef:x,desktopLayout:f="split",onDetailScroll:v,desktopSidePanel:L,desktopListClassName:T,detailOwnsScroll:F=!1}){const{t:V}=ft(),P=o.useRef(null),q=o.useRef(null),_=o.useRef(null),[G,O]=o.useState(_t);o.useEffect(()=>{if(c||f!=="split")return;const p=q.current;p&&O(j=>qe(j,p.clientWidth))},[f,c]);const se=o.useCallback(p=>{c||f!=="split"||(p.preventDefault(),_.current={startX:p.clientX,startWidth:G,pointerId:p.pointerId},p.currentTarget.setPointerCapture(p.pointerId))},[f,G,c]),le=o.useCallback(p=>{const j=_.current;if(!j||j.pointerId!==p.pointerId)return;const N=q.current?.clientWidth??window.innerWidth,D=qe(j.startWidth+p.clientX-j.startX,N);O(D),ht(Ee,D,Et)},[]),oe=o.useCallback(p=>{const j=_.current;if(!(!j||j.pointerId!==p.pointerId)){_.current=null,mt(Ee);try{p.currentTarget.releasePointerCapture(p.pointerId)}catch{}}},[]);if(c){const p=()=>{const y=P.current;y&&y.slideTo(1)},j=()=>{const y=P.current;y&&y.slideTo(0)},N=typeof t=="function"?t({slideToDetail:p}):t,D=typeof h=="function"?h({slideToList:j,slideToDetail:p}):h;return r.jsxs(yt,{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:y=>{P.current=y,x&&(x.current=y)},onSlideChange:y=>{g?.(y.activeIndex)},children:[r.jsx(Xe,{className:"h-full min-h-0",children:r.jsxs("div",{className:"flex h-full min-h-0 flex-col overflow-hidden",children:[m&&r.jsx("div",{className:"shrink-0 border-b border-border/15 px-3 py-2",children:m}),r.jsx("div",{className:"min-h-0 flex-1 overflow-y-auto overscroll-contain",children:N})]})}),r.jsx(Xe,{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:j,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(pt,{size:14}),b]})}),r.jsx("div",{className:F?"min-h-0 flex-1 overflow-hidden":"termdock-diff-stream-scroller min-h-0 flex-1 overflow-y-auto overscroll-contain",onScroll:F?void 0:y=>v?.(y.currentTarget),children:n})]})})]})}const W=typeof t=="function"?t({slideToDetail:()=>{}}):t;return f==="stacked"?F?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:[i&&r.jsx("div",{className:"sticky top-0 z-10 border-b border-border/15 bg-surface px-2 py-2",children:i}),W,r.jsx("div",{className:"mt-3 h-[calc(100%-3rem)] min-h-0 overflow-hidden rounded-xl border border-border/15 bg-surface",children:n})]}):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=>v?.(p.currentTarget),children:[i&&r.jsx("div",{className:"sticky top-0 z-10 border-b border-border/15 bg-surface px-2 py-2",children:i}),W,r.jsx("div",{className:"mt-3 overflow-hidden rounded-xl border border-border/15 bg-surface",children:n})]}):r.jsxs("div",{ref:q,className:"flex h-full min-h-0 overflow-hidden",children:[L,r.jsxs("div",{className:T??"shrink-0 overflow-y-auto overscroll-contain border-r border-border/15 bg-surface",style:{width:G},children:[i&&r.jsx("div",{className:"sticky top-0 z-10 border-b border-border/15 bg-surface px-2 py-2",children:i}),W]}),r.jsx("div",{role:"separator","aria-orientation":"vertical","aria-label":V("diffViewer.resizeNavigation"),title:V("diffViewer.resizeNavigation"),className:"group relative z-10 w-2 shrink-0 cursor-col-resize touch-none border-r border-border/15 bg-surface",onPointerDown:se,onPointerMove:le,onPointerUp:oe,onPointerCancel:oe,onDoubleClick:()=>{O(Le),xt(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:F?"min-w-0 flex-1 overflow-hidden":"termdock-diff-stream-scroller min-w-0 flex-1 overflow-y-auto overscroll-contain",onScroll:F?void 0:p=>v?.(p.currentTarget),children:n})]})}function zt({mode:t,onModeChange:n,showAi:c=!1}){return r.jsxs("div",{className:"inline-flex h-7 shrink-0 overflow-hidden rounded-md bg-surface-2 p-0.5",children:[r.jsx("button",{type:"button",onClick:()=>n("list"),"aria-pressed":t==="list",className:`inline-flex h-6 w-7 items-center justify-center rounded-md transition active:scale-95 ${t==="list"?"bg-surface-elevated text-foreground shadow-sm":"text-muted-foreground hover:text-foreground"}`,children:r.jsx(Mt,{size:13})}),r.jsx("button",{type:"button",onClick:()=>n("tree"),"aria-pressed":t==="tree",className:`inline-flex h-6 w-7 items-center justify-center rounded-md transition active:scale-95 ${t==="tree"?"bg-surface-elevated text-foreground shadow-sm":"text-muted-foreground hover:text-foreground"}`,children:r.jsx(jt,{size:13})}),c&&r.jsx("button",{type:"button",onClick:()=>n("ai"),"aria-pressed":t==="ai",className:`inline-flex h-6 w-7 items-center justify-center rounded-md transition active:scale-95 ${t==="ai"?"bg-surface-elevated text-foreground shadow-sm":"text-muted-foreground hover:text-foreground"}`,children:r.jsx(Ze,{size:13})})]})}function Lt({groups:t,mode:n,onModeChange:c,selectedKey:m,collapsedDirectoryKeys:h,onToggleDirectory:i,onSelectFile:b,renderLeading:g,renderTrailing:x,renderDirectoryTrailing:f,renderSubtitle:v,detail:L,mobile:T,backLabel:F,compact:V=!1,emptyContent:P,listPrefix:q,aiContent:_,listContainerClassName:G="px-2 py-2",detailContainerClassName:O="termdock-native-select termdock-diff-stream-scroller min-h-0",renderListHeader:se,renderMobileDetailHeader:le,externalSwiperRef:oe,onMobileSlideChange:W,slideToDetailOnMobile:p=!0,desktopLayout:j="split",onDetailScroll:N,desktopSidePanel:D,desktopListClassName:y,detailOwnsScroll:J}){const[X,ce]=o.useState(!1);o.useEffect(()=>{if(!X)return;const E=H=>{H.key==="Escape"&&ce(!1)};return document.addEventListener("keydown",E),()=>document.removeEventListener("keydown",E)},[X]);const me=r.jsx(zt,{mode:n,onModeChange:c,showAi:!!_}),pe=n==="tree"?"tree":"list",Z=se?se(me):r.jsx("div",{className:"flex justify-end",children:me}),ee=t.some(E=>E.files.length>0),te=r.jsx(At,{mobile:X?!1:T,backLabel:F,externalSwiperRef:oe,onMobileSlideChange:W,desktopLayout:X?"split":j,onDetailScroll:N,desktopSidePanel:D,desktopListClassName:y,detailOwnsScroll:J,mobileListHeader:T?Z:void 0,desktopListHeader:T?void 0:Z,mobileDetailHeader:le,list:({slideToDetail:E})=>r.jsx("div",{className:G,children:n==="ai"?typeof _=="function"?_({slideToDetail:E,fullscreen:X,toggleFullscreen:()=>ce(H=>!H)}):_??P:r.jsxs(r.Fragment,{children:[q,ee?r.jsx(It,{groups:t,selectedKey:m,mode:pe,mobile:T,compact:V,collapsedDirectoryKeys:h,onToggleDirectory:i,onSelectFile:H=>{b(H),T&&p&&window.requestAnimationFrame(E)},renderLeading:g,renderTrailing:x,renderDirectoryTrailing:f,renderSubtitle:v}):P]})}),detail:r.jsx("div",{className:J?"h-full min-h-0":O,children:L})});return!X||typeof document>"u"?te:Ye.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(Ze,{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:()=>ce(!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:te})]}),document.body)}const Ht=96,Ae=44;function Pt({file:t,repoRoot:n,selectionPath:c,displayName:m,displayDir:h,selected:i,activePane:b,visible:g,reusableContent:x=!1,estimatedHeight:f,lightweight:v=!1,wrap:L,viewType:T,inlineMode:F,diffOptions:V,reloadKey:P=0,auditRecords:q,diffOverride:_,preparedDiff:G,renderBadge:O,onInsertDiffReference:se,onHunkGitAction:le,onReferenceCopied:oe,insertedReferenceKey:W,copiedReferenceKey:p,onClearAuditRecord:j,onContentReady:N,onHeightChange:D}){const y=o.useRef(null),J=o.useRef(null),X=o.useRef(null),[ce,me]=o.useState(null),pe=o.useRef(64),Z=o.useRef(f??104),ee=o.useRef(null),te=o.useRef(null),E=o.useRef(!1),H=o.useRef(!1),z=o.useRef(null),[K,ue]=o.useState(!1),[ke,De]=o.useState(!1),Re=t.absolutePath||(n?`${n}/${t.path}`:t.path),ae=o.useCallback(()=>{H.current||(H.current=!0,De(!0),N?.(c))},[N,c]);o.useLayoutEffect(()=>(E.current=!1,H.current=!1,ee.current=null,te.current=null,z.current!==null&&(window.clearTimeout(z.current),z.current=null),ue(!1),De(!1),()=>{z.current!==null&&(window.clearTimeout(z.current),z.current=null)}),[_,G,P,x,g]),o.useLayoutEffect(()=>{const I=ee.current;!K||I===null||Math.abs((f??104)-I)>=1||(ee.current=null,ae())},[ae,f,K]),o.useLayoutEffect(()=>{if(!g||!K)return;const I=X.current;if(!I)return;const je=()=>{if(!E.current)return;const xe=I.firstElementChild;if(!xe)return;const B=Math.ceil(Math.max(xe.getBoundingClientRect().height,xe.scrollHeight,64)),fe=pe.current;if(B>0&&fe!==B&&(pe.current=B,me(B)),!y.current)return;const U=J.current?.getBoundingClientRect().height??Ae,S=Math.ceil(U+B+1);S<=0||te.current===S||(te.current=S,z.current!==null&&window.clearTimeout(z.current),z.current=window.setTimeout(()=>{if(z.current=null,!E.current)return;const A=te.current;if(A===null)return;const ie=Z.current;if(H.current){Z.current=A,Math.abs(ie-A)>=1&&D?.(c,ie,A),N?.(c);return}if(ee.current=A,Math.abs(ie-A)<1||!D){Z.current=A,ee.current=null,ae();return}Z.current=A,D(c,ie,A)},Ht))};if(je(),typeof ResizeObserver>"u")return;const de=new ResizeObserver(je);return de.observe(I),I.firstElementChild&&de.observe(I.firstElementChild),J.current&&de.observe(J.current),()=>de.disconnect()},[ae,N,D,c,K,g,L,T,F]);const C=g&&!ke;return r.jsxs("div",{ref:y,"data-diff-stream-item":c,"data-diff-selection-path":c,"data-diff-file-path":t.path,"data-diff-absolute-path":Re,className:`scroll-mt-3 border-b border-border/15 last:border-b-0 ${C||!g?"overflow-hidden":""} ${i?"bg-surface-elevated/35":""}`,style:g?C?{height:f??104}:void 0:{height:f??104},children:[r.jsxs("div",{ref:J,"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 ${i?"bg-surface-elevated":"bg-surface"}`,children:[O(t.status),r.jsxs("div",{className:"min-w-0 flex-1",title:Re,children:[r.jsx("div",{className:"truncate text-xs font-semibold text-foreground",children:m}),h&&r.jsx("div",{className:"truncate text-[10px] text-muted-foreground",children:h})]})]}),r.jsxs("div",{ref:X,className:"relative","data-diff-stream-body":!0,style:g?{minHeight:ke?64:Math.max(ce??64,(f??104)-Ae)}:{height:Math.max(ce??64,(f??104)-Ae)},children:[g?r.jsx(wt,{active:b,repoRoot:n,filePath:t.path,referenceFilePath:Re,changedFile:t,wrap:L,viewType:T,inlineMode:F,diffOptions:V,reloadKey:P,embedded:!0,lightweight:v,auditRecords:q,diffOverride:_,preparedDiff:G,onClearAuditRecord:j,onContentReady:()=>{if(x){E.current=!0,ue(!0),ae();return}E.current||(E.current=!0,ue(!0))},onInsertDiffReference:se,onHunkGitAction:le,onReferenceCopied:oe,insertedReferenceKey:W,copiedReferenceKey:p}):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}),g&&K&&!ke&&r.jsx("div",{"data-diff-measuring-overlay":!0,className:"absolute inset-0 z-20 bg-surface"})]})]})}const Oe=8,ze=1600,Ue=104,Wt=1e3,we=new Map;function Bt(t,n){for(we.delete(t),we.set(t,n);we.size>Wt;){const c=we.keys().next().value;if(c===void 0)break;we.delete(c)}}function $t(t,n){return!!(t&&t.diffOverride===n.diffOverride&&t.reloadKey===n.reloadKey&&t.wrap===n.wrap&&t.viewType===n.viewType&&t.inlineMode===n.inlineMode&&t.algorithm===n.algorithm&&t.whitespace===n.whitespace&&t.context===n.context)}const Vt={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 Jt({status:t}){const n=Vt[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 ${n.className}`,title:n.title,children:n.label})}function Zt(t,n){return n?{key:n,nonce:t.nonce+1}:t}function er({files:t,groups:n,selectedKey:c,onSelectFile:m,mode:h,onModeChange:i,collapsedDirectoryKeys:b,onToggleDirectory:g,renderLeading:x,renderTrailing:f,renderDirectoryTrailing:v,renderSubtitle:L,renderStreamBadge:T,onInsertDiffReference:F,onHunkGitAction:V,onReferenceCopied:P,insertedReferenceKey:q,copiedReferenceKey:_,onClearAuditRecord:G,mobile:O,backLabel:se,compact:le,desktopLayout:oe,wrap:W,diffViewType:p,inlineMode:j,diffOptions:N,activePane:D,reloadKey:y=0,renderListHeader:J,renderMobileDetailHeader:X,emptyContent:ce,listPrefix:me,aiContent:pe,listContainerClassName:Z,detailContainerClassName:ee,desktopSidePanel:te,desktopListClassName:E,onDetailScroll:H,initialDetailScrollTop:z,scrollToKey:K,scrollToKeyNonce:ue=0,externalSwiperRef:ke,onMobileSlideChange:De,slideToDetailOnMobile:Re}){const ae=o.useMemo(()=>e=>c===e.key||c===e.path||c===e.absolutePath,[c]),C=o.useMemo(()=>{const e=new Map;for(const a of t)e.set(a.key,a),a.path&&e.set(a.path,a),a.absolutePath&&e.set(a.absolutePath,a);const s=[],l=new Set;for(const a of n){const d=h==="tree"?St(a.files):a.files;for(const w of d){const u=e.get(w.key);!u||l.has(u.key)||(s.push(u),l.add(u.key))}}for(const a of t)l.has(a.key)||s.push(a);return s},[t,n,h]),I=o.useRef(null),je=o.useRef(null),de=o.useRef(null),xe=o.useRef(y),B=o.useRef(0),fe=o.useRef(null),ge=o.useRef(new Map(we)),U=o.useRef({key:null,top:0}),S=o.useRef(new Set),A=o.useRef(new Map),ie=o.useRef(new Map),$=o.useRef(null),Pe=o.useRef(()=>{}),Ne=o.useRef([]),he=o.useRef(new Map),We=o.useRef({tops:[],heights:[],bottom:0}),[Se,st]=o.useState(()=>new Set),[ot,ct]=o.useState(0),[Q,ve]=o.useState({top:0,height:0}),Me=o.useMemo(()=>C.map(e=>e.key),[C]),Ie=Me.join("");ie.current=o.useMemo(()=>new Map(C.map(e=>[e.key,{diffOverride:e.diffOverride,reloadKey:y,wrap:W,viewType:p,inlineMode:j,algorithm:N?.algorithm,whitespace:N?.whitespace,context:N?.context}])),[C,y,W,p,j,N?.algorithm,N?.whitespace,N?.context]),Ne.current=Me,he.current=o.useMemo(()=>new Map(Me.map((e,s)=>[e,s])),[Me]);const k=o.useMemo(()=>{const e=Me.map(a=>ge.current.get(a)??Ue),s=new Array(e.length);for(let a=0;a<e.length;a+=1)s[a]=a===0?0:s[a-1]+e[a-1];const l=e.length>0?s[e.length-1]+e[e.length-1]:0;return{tops:s,heights:e,bottom:l}},[ot,Ie]);We.current=k;const re=o.useMemo(()=>K?C.find(e=>K===e.key||K===e.path||K===e.absolutePath)?.key??null:null,[C,K]),Ce=o.useMemo(()=>c?C.find(e=>c===e.key||c===e.path||c===e.absolutePath)?.key??null:null,[C,c]),Te=o.useMemo(()=>{const e=k.tops.length;if(e===0)return-1;let s=0,l=e;for(;s<l;){const a=Math.floor((s+l)/2);k.tops[a]<=Q.top+1?s=a+1:l=a}return Math.min(e-1,Math.max(0,s-1))},[k.tops,Q.top]),ne=o.useCallback(e=>{S.current=e,st(e)},[]),Be=o.useMemo(()=>{const e=Q.top-ze,s=Q.top+Q.height+ze,l=new Set;let a=0,d=k.tops.length;for(;a<d;){const u=Math.floor((a+d)/2);k.tops[u]<=e?a=u+1:d=u}const w=Math.max(0,a-1);for(let u=w;u<k.tops.length;u+=1){const R=k.tops[u];if(R>s)break;R+k.heights[u]>=e&&R<=s&&l.add(u)}for(let u=Te-1;u<=Te+1;u+=1)u>=0&&u<k.tops.length&&l.add(u);for(const u of Se){const R=he.current.get(u);R!==void 0&&l.add(R)}return Array.from(l).sort((u,R)=>u-R)},[k,Q,Se,Te]),Fe=o.useCallback(()=>{if(!D||$.current)return;const e=Ne.current;if(e.length===0)return;const s=U.current.key,l=Math.min(e.length-1,(s!==null?he.current.get(s):void 0)??Math.max(0,Te)),a=u=>Math.abs((he.current.get(u)??0)-l),d=[];S.current.has(e[l])||d.push(e[l]);for(let u=1;u<=Oe;u+=1){const R=l+u,M=l-u;R<e.length&&!S.current.has(e[R])&&d.push(e[R]),M>=0&&!S.current.has(e[M])&&d.push(e[M])}const w=d[0];if(w){if(S.current.size>=Oe){const u=a(w),R=Array.from(S.current).filter(Y=>Y!==$.current).sort((Y,ye)=>a(ye)-a(Y))[0];if(!R||a(R)<=u)return;const M=new Set(S.current);M.delete(R),ne(M)}$.current=w,ne(new Set(S.current).add(w))}},[D,ne,Te]);Pe.current=Fe;const be=o.useCallback(e=>{if(S.current.has(e))return;const s=$.current;if(s&&s!==e){const l=new Set(S.current);l.delete(s),ne(l),$.current=null}$.current=e,ne(new Set(S.current).add(e))},[ne]),$e=o.useCallback(e=>{if(!S.current.has(e))return;const s=ie.current.get(e);s&&A.current.set(e,s),$.current===e&&($.current=null),window.requestAnimationFrame(()=>Pe.current())},[]),Ve=o.useCallback((e,s,l)=>{if(Math.abs(l-s)<1)return;const a=ge.current.get(e);a!==void 0&&Math.abs(a-l)<1||(ge.current.set(e,l),Bt(e,l),ct(d=>d+1))},[]);o.useLayoutEffect(()=>{if(xe.current!==y){xe.current=y;for(const e of C){if(e.diffOverride!==void 0)continue;const s=Kt(e.path,e.repoRoot);kt(s,e.repoRoot??void 0,N)}}},[C,N,y]),o.useLayoutEffect(()=>{const e=I.current;if(!e)return;const s=()=>{const a=Math.max(0,Math.ceil(e.clientHeight));if(a===0)return;const d=e.scrollTop;ve(w=>w.height===a&&w.top===d?w:{top:d,height:a})};if(s(),typeof ResizeObserver>"u")return;const l=new ResizeObserver(s);return l.observe(e),()=>l.disconnect()},[O]),o.useEffect(()=>{D&&Ce&&be(Ce)},[D,be,Ce]),o.useEffect(()=>{const e=new Set(Ne.current);for(const s of Array.from(ge.current.keys()))e.has(s)||ge.current.delete(s);for(const s of Array.from(S.current))if(!e.has(s)){const l=new Set(S.current);l.delete(s),ne(l)}for(const s of Array.from(A.current.keys()))e.has(s)||A.current.delete(s);if($.current&&!e.has($.current)&&($.current=null),C.length===0){$.current=null,A.current.clear(),ne(new Set);return}Fe()},[C.length,Ie,Fe,Be,ne]);const Ge=o.useCallback(e=>{I.current=e;const s=B.current,l=e.scrollTop;B.current=l;const a=d=>{const w=We.current,u=Ne.current;let R=0,M=w.tops.length;for(;R<M;){const _e=Math.floor((R+M)/2);w.tops[_e]<=d+1?R=_e+1:M=_e}const Y=Math.min(u.length-1,Math.max(0,R-1)),ye=u[Y]??null;U.current={key:ye,top:w.tops[Y]??0},ye&&be(ye)};Math.abs(l-s)>=ze?(Ye.flushSync(()=>{ve({top:l,height:e.clientHeight})}),a(l)):fe.current===null&&(fe.current=window.requestAnimationFrame(()=>{fe.current=null;const d=I.current;if(d){const w=d.scrollTop;ve({top:w,height:d.clientHeight}),a(w)}})),H?.(e)},[H,be]);o.useEffect(()=>()=>{fe.current!==null&&window.cancelAnimationFrame(fe.current)},[]),o.useLayoutEffect(()=>{const e=I.current;if(!e)return;const s=U.current;if(s.key===null)return;const l=he.current.get(s.key);if(l===void 0)return;const a=(k.tops[l]??s.top)-s.top;if(Math.abs(a)<1)return;const d=e.scrollTop+a;B.current=d,ve(w=>({top:d,height:w.height})),typeof e.scrollTo=="function"?e.scrollTo({top:d,behavior:"instant"}):e.scrollTop=d},[k]),o.useLayoutEffect(()=>{const e=Ne.current,s=k.tops;if(e.length===0){U.current={key:null,top:0};return}const l=B.current,a=l+(I.current?.clientHeight??Q.height),d=U.current;if(d.key!==null){const M=he.current.get(d.key);if(M!==void 0){const Y=s[M]??0;if(Y+(k.heights[M]??Ue)>l&&Y<a){U.current={key:d.key,top:Y};return}}}let w=0,u=s.length;for(;w<u;){const M=Math.floor((w+u)/2);s[M]<=l+1?w=M+1:u=M}const R=Math.min(s.length-1,Math.max(0,w-1));U.current={key:e[R]??null,top:s[R]??0}}),o.useLayoutEffect(()=>{if(!re)return;const e=je.current;if(e?.key===re&&e.nonce===ue)return;const s=he.current.get(re);if(s===void 0)return;be(re),U.current={key:re,top:k.tops[s]??0};const l=I.current;if(!l||l.clientHeight===0||Q.height!==l.clientHeight)return;je.current={key:re,nonce:ue};const a=k.tops[s]??0;typeof l.scrollTo=="function"?l.scrollTo({top:a,behavior:"instant"}):l.scrollTop=a;const d=l.scrollTop;B.current=d,ve({top:d,height:l.clientHeight})},[k,Q.height,be,re,ue]),o.useLayoutEffect(()=>{if(z===void 0||re)return;const e=Ie;if(de.current===e)return;const s=I.current;if(!s)return;de.current=e;const l=Math.max(0,k.bottom-s.clientHeight),a=Math.min(Math.max(0,z),l);typeof s.scrollTo=="function"?s.scrollTo({top:a,behavior:"instant"}):s.scrollTop=a;const d=s.scrollTop;B.current=d,ve({top:d,height:s.clientHeight})},[k.bottom,z,Ie,re]);const at=o.useCallback((e,s)=>{const l=ae(e),a=ie.current.get(e.key),d=a!==void 0&&$t(A.current.get(e.key),a);return r.jsx(Gt,{item:e,repoRoot:e.repoRoot,selectionPath:e.key,displayName:e.displayName,displayDir:e.displayDir,selected:l,activePane:D,visible:Se.has(e.key),reusableContent:d,estimatedHeight:s,lightweight:!1,wrap:W,viewType:p,inlineMode:j,diffOptions:N,reloadKey:y,auditRecords:e.auditRecords,diffOverride:e.diffOverride,renderStreamBadge:T,onInsertDiffReference:e.onInsertDiffReference??F,onHunkGitAction:e.onHunkGitAction??V,onReferenceCopied:P,insertedReferenceKey:q,copiedReferenceKey:_,onClearAuditRecord:G,onContentReady:$e,onHeightChange:Ve})},[D,_,N,p,$e,Ve,j,q,ae,Se,G,V,F,P,y,T,W]),it=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(k.bottom,(k.tops.at(-1)??0)+Q.height)},children:Be.map(e=>{const s=C[e];return s?r.jsx("div",{"data-diff-canvas-slot":s.key,className:"absolute inset-x-0",style:{top:k.tops[e]},children:at(s,k.heights[e])},s.key):null})}),lt=r.jsx("div",{ref:I,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=>Ge(e.currentTarget),children:it});return r.jsx(Lt,{groups:n,mode:h,onModeChange:i,selectedKey:c,collapsedDirectoryKeys:b,onToggleDirectory:g,onSelectFile:m,renderLeading:x,renderTrailing:f,renderDirectoryTrailing:v,renderSubtitle:L,detail:lt,mobile:O,backLabel:se,compact:le,emptyContent:ce,listPrefix:me,aiContent:pe,listContainerClassName:Z,detailContainerClassName:ee,renderListHeader:J,renderMobileDetailHeader:X,externalSwiperRef:ke,onMobileSlideChange:De,slideToDetailOnMobile:Re,desktopLayout:oe,onDetailScroll:Ge,desktopSidePanel:te,desktopListClassName:E,detailOwnsScroll:!0})}const Gt=o.memo(function({item:n,renderStreamBadge:c,...m}){return r.jsx(Pt,{...m,file:Xt(n),renderBadge:h=>c(h,n)})});function Xt(t){return{path:t.path,absolutePath:t.absolutePath,status:t.status}}function Kt(t,n){if(t)return n&&t.startsWith(`${n}/`)?t.slice(n.length+1):t}export{Jt as C,er as D,jt as L,St as f,Zt as n};
1
+ import{a5 as Qe,bh as r,d as ut,c as dt,cL as ft,cW as ht,ak as mt,a as pt,cV as xt,bz as gt,X as vt}from"./app-Cxpk5OKD.js";import{b as o,r as Ye}from"./dnd-BCFAPC0L.js";import{h as Je,F as bt,b as yt,c as Xe}from"./gestureArbiter-C5OWgbj5.js";import{S as Ze}from"./sparkles-DWhNuQTx.js";import{D as wt,i as kt}from"./DiffViewer-Crz6zQeB.js";const Rt=[["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"}]],jt=Qe("list-tree",Rt);const Nt=[["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"}]],Mt=Qe("list",Nt);function et({selected:t,depth:n=0,title:c,leading:m,children:h,trailing:i,role:b,tabIndex:g,ariaExpanded:x,onClick:f,onKeyDown:v,onPointerDown:L,onPointerUp:T,onPointerCancel:F,dataAttributes:V}){return r.jsxs("div",{role:b,tabIndex:g,"aria-expanded":x,title:c,onClick:f,onKeyDown:v,onPointerDown:L,onPointerUp:T,onPointerCancel:F,...V,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:`${n*14+8}px`},children:[r.jsx("span",{className:"flex min-w-[14px] shrink-0 items-center justify-center text-muted-foreground/80",children:m}),r.jsx("span",{className:"min-w-0 flex-1",children:h}),i]})}function tt(t){return t.path.replace(/^\/+/,"")}function Tt(t){if(t.displayName!==void 0||t.displayDir!==void 0)return{name:t.displayName||t.path,dir:t.displayDir||""};const n=t.path.split("/").filter(Boolean);return{name:n.pop()||t.path,dir:n.join("/")}}function rt(t,n){const c=new Map,m=(i,b,g,x)=>{const f=i.get(b);if(f)return f;const v={path:g,name:b,childCount:0,directories:[],files:[]};return i.set(b,v),x?.directories.push(v),v};for(const i of t){const b=n(i).split("/").filter(Boolean);if(b.length<=1)continue;let g=c,x=null,f="";for(const v of b.slice(0,-1)){f=f?`${f}/${v}`:v;const L=m(g,v,f,x);x=L,g=new Map(L.directories.map(T=>[T.name,T]))}x?.files.push(i)}const h=i=>{const b=i.directories.map(h).sort((x,f)=>x.name.localeCompare(f.name)),g=i.files.sort((x,f)=>x.path.localeCompare(f.path));return{...i,directories:b,files:g,childCount:b.reduce((x,f)=>x+f.childCount,0)+g.length}};return Array.from(c.values()).map(h).sort((i,b)=>i.name.localeCompare(b.name))}function He(t,n,c=0){const m=n.selectedKey===t.key||n.selectedKey===t.path||n.selectedKey===t.absolutePath,h=Tt(t);return r.jsx(et,{selected:m,role:"button",tabIndex:0,title:t.title??t.absolutePath??t.path,onClick:()=>{Je()||n.onSelectFile(t)},onKeyDown:i=>{i.key!=="Enter"&&i.key!==" "||(i.preventDefault(),n.onSelectFile(t))},leading:n.renderLeading(t),depth:c,trailing:n.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 ${m?"font-medium":""}`,children:h.name}),n.mode!=="tree"&&h.dir&&r.jsx("span",{className:"block truncate text-[10px] text-muted-foreground/75",children:h.dir}),n.renderSubtitle?.(t)]})},t.key)}function nt(t,n,c,m,h){let i=t;const b=[t.name];for(;i.files.length===0&&i.directories.length===1;)i=i.directories[0],b.push(i.name);const g=b.join("/"),x=`${n}:${i.path}`,f=c.collapsedDirectoryKeys.has(x);return r.jsxs("div",{className:"space-y-px",children:[r.jsx(et,{role:"button",tabIndex:0,onClick:()=>{Je()||c.onToggleDirectory(x)},onKeyDown:v=>{v.key!=="Enter"&&v.key!==" "||(v.preventDefault(),c.onToggleDirectory(x))},ariaExpanded:!f,depth:m,title:i.path,leading:f?r.jsx(ut,{size:13}):r.jsx(dt,{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:i.childCount}),c.renderDirectoryTrailing?.(i.path,h)]}),children:r.jsxs("span",{className:"flex min-w-0 items-center gap-1",children:[r.jsx(bt,{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:g})]})}),!f&&r.jsxs("div",{className:"space-y-px",children:[i.directories.map(v=>nt(v,n,c,m+1,h)),i.files.length>0&&r.jsx("div",{className:"space-y-px",children:i.files.map(v=>He(v,c,m+1))})]})]},x)}function Dt(t,n){const c=n.getFileTreePath??tt,m=t.files.filter(i=>c(i).split("/").filter(Boolean).length<=1),h=rt(t.files,c);return r.jsxs("div",{className:"space-y-px",children:[h.map(i=>nt(i,t.key,n,0,t)),m.length>0&&r.jsx("div",{className:"space-y-px",children:m.map(i=>He(i,n))})]})}function St(t,n=tt){const c=[],m=i=>{for(const b of i.directories)m(b);c.push(...i.files)};for(const i of rt(t,n))m(i);const h=new Set(c.map(i=>i.key));return c.push(...t.filter(i=>!h.has(i.key))),c}function It(t){return r.jsx("div",{className:t.mode==="tree"?"space-y-px pt-1":"space-y-2",children:t.groups.map(n=>{const c=!!n.header,m=!!n.collapsed;return r.jsxs("section",{className:c?"overflow-hidden rounded-lg border border-border/15 bg-surface/60":"",children:[n.header,!m&&r.jsx("div",{className:t.mode==="tree"?c?"space-y-px bg-surface/60 p-1":"space-y-px":c?"space-y-px bg-surface/60 p-1.5":"space-y-px",children:t.mode==="tree"?Dt(n,t):n.files.map(h=>He(h,t))})]},n.key)})})}const Ee="termdock:diff-review:list-width:v1",Et=120,Le=320,Ke=220,Ct=560;function Ft(t){return typeof t=="number"&&Number.isFinite(t)}function qe(t,n){const c=Math.max(Ke,n-360),m=Math.min(Ct,c);return Math.min(m,Math.max(Ke,t))}function _t(){return gt(Ee,Ft)??Le}function At({list:t,detail:n,mobile:c,mobileListHeader:m,mobileDetailHeader:h,desktopListHeader:i,backLabel:b,onMobileSlideChange:g,externalSwiperRef:x,desktopLayout:f="split",onDetailScroll:v,desktopSidePanel:L,desktopListClassName:T,detailOwnsScroll:F=!1}){const{t:V}=ft(),P=o.useRef(null),q=o.useRef(null),_=o.useRef(null),[G,O]=o.useState(_t);o.useEffect(()=>{if(c||f!=="split")return;const p=q.current;p&&O(j=>qe(j,p.clientWidth))},[f,c]);const se=o.useCallback(p=>{c||f!=="split"||(p.preventDefault(),_.current={startX:p.clientX,startWidth:G,pointerId:p.pointerId},p.currentTarget.setPointerCapture(p.pointerId))},[f,G,c]),le=o.useCallback(p=>{const j=_.current;if(!j||j.pointerId!==p.pointerId)return;const N=q.current?.clientWidth??window.innerWidth,D=qe(j.startWidth+p.clientX-j.startX,N);O(D),ht(Ee,D,Et)},[]),oe=o.useCallback(p=>{const j=_.current;if(!(!j||j.pointerId!==p.pointerId)){_.current=null,mt(Ee);try{p.currentTarget.releasePointerCapture(p.pointerId)}catch{}}},[]);if(c){const p=()=>{const y=P.current;y&&y.slideTo(1)},j=()=>{const y=P.current;y&&y.slideTo(0)},N=typeof t=="function"?t({slideToDetail:p}):t,D=typeof h=="function"?h({slideToList:j,slideToDetail:p}):h;return r.jsxs(yt,{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:y=>{P.current=y,x&&(x.current=y)},onSlideChange:y=>{g?.(y.activeIndex)},children:[r.jsx(Xe,{className:"h-full min-h-0",children:r.jsxs("div",{className:"flex h-full min-h-0 flex-col overflow-hidden",children:[m&&r.jsx("div",{className:"shrink-0 border-b border-border/15 px-3 py-2",children:m}),r.jsx("div",{className:"min-h-0 flex-1 overflow-y-auto overscroll-contain",children:N})]})}),r.jsx(Xe,{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:j,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(pt,{size:14}),b]})}),r.jsx("div",{className:F?"min-h-0 flex-1 overflow-hidden":"termdock-diff-stream-scroller min-h-0 flex-1 overflow-y-auto overscroll-contain",onScroll:F?void 0:y=>v?.(y.currentTarget),children:n})]})})]})}const W=typeof t=="function"?t({slideToDetail:()=>{}}):t;return f==="stacked"?F?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:[i&&r.jsx("div",{className:"sticky top-0 z-10 border-b border-border/15 bg-surface px-2 py-2",children:i}),W,r.jsx("div",{className:"mt-3 h-[calc(100%-3rem)] min-h-0 overflow-hidden rounded-xl border border-border/15 bg-surface",children:n})]}):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=>v?.(p.currentTarget),children:[i&&r.jsx("div",{className:"sticky top-0 z-10 border-b border-border/15 bg-surface px-2 py-2",children:i}),W,r.jsx("div",{className:"mt-3 overflow-hidden rounded-xl border border-border/15 bg-surface",children:n})]}):r.jsxs("div",{ref:q,className:"flex h-full min-h-0 overflow-hidden",children:[L,r.jsxs("div",{className:T??"shrink-0 overflow-y-auto overscroll-contain border-r border-border/15 bg-surface",style:{width:G},children:[i&&r.jsx("div",{className:"sticky top-0 z-10 border-b border-border/15 bg-surface px-2 py-2",children:i}),W]}),r.jsx("div",{role:"separator","aria-orientation":"vertical","aria-label":V("diffViewer.resizeNavigation"),title:V("diffViewer.resizeNavigation"),className:"group relative z-10 w-2 shrink-0 cursor-col-resize touch-none border-r border-border/15 bg-surface",onPointerDown:se,onPointerMove:le,onPointerUp:oe,onPointerCancel:oe,onDoubleClick:()=>{O(Le),xt(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:F?"min-w-0 flex-1 overflow-hidden":"termdock-diff-stream-scroller min-w-0 flex-1 overflow-y-auto overscroll-contain",onScroll:F?void 0:p=>v?.(p.currentTarget),children:n})]})}function zt({mode:t,onModeChange:n,showAi:c=!1}){return r.jsxs("div",{className:"inline-flex h-7 shrink-0 overflow-hidden rounded-md bg-surface-2 p-0.5",children:[r.jsx("button",{type:"button",onClick:()=>n("list"),"aria-pressed":t==="list",className:`inline-flex h-6 w-7 items-center justify-center rounded-md transition active:scale-95 ${t==="list"?"bg-surface-elevated text-foreground shadow-sm":"text-muted-foreground hover:text-foreground"}`,children:r.jsx(Mt,{size:13})}),r.jsx("button",{type:"button",onClick:()=>n("tree"),"aria-pressed":t==="tree",className:`inline-flex h-6 w-7 items-center justify-center rounded-md transition active:scale-95 ${t==="tree"?"bg-surface-elevated text-foreground shadow-sm":"text-muted-foreground hover:text-foreground"}`,children:r.jsx(jt,{size:13})}),c&&r.jsx("button",{type:"button",onClick:()=>n("ai"),"aria-pressed":t==="ai",className:`inline-flex h-6 w-7 items-center justify-center rounded-md transition active:scale-95 ${t==="ai"?"bg-surface-elevated text-foreground shadow-sm":"text-muted-foreground hover:text-foreground"}`,children:r.jsx(Ze,{size:13})})]})}function Lt({groups:t,mode:n,onModeChange:c,selectedKey:m,collapsedDirectoryKeys:h,onToggleDirectory:i,onSelectFile:b,renderLeading:g,renderTrailing:x,renderDirectoryTrailing:f,renderSubtitle:v,detail:L,mobile:T,backLabel:F,compact:V=!1,emptyContent:P,listPrefix:q,aiContent:_,listContainerClassName:G="px-2 py-2",detailContainerClassName:O="termdock-native-select termdock-diff-stream-scroller min-h-0",renderListHeader:se,renderMobileDetailHeader:le,externalSwiperRef:oe,onMobileSlideChange:W,slideToDetailOnMobile:p=!0,desktopLayout:j="split",onDetailScroll:N,desktopSidePanel:D,desktopListClassName:y,detailOwnsScroll:J}){const[X,ce]=o.useState(!1);o.useEffect(()=>{if(!X)return;const E=H=>{H.key==="Escape"&&ce(!1)};return document.addEventListener("keydown",E),()=>document.removeEventListener("keydown",E)},[X]);const me=r.jsx(zt,{mode:n,onModeChange:c,showAi:!!_}),pe=n==="tree"?"tree":"list",Z=se?se(me):r.jsx("div",{className:"flex justify-end",children:me}),ee=t.some(E=>E.files.length>0),te=r.jsx(At,{mobile:X?!1:T,backLabel:F,externalSwiperRef:oe,onMobileSlideChange:W,desktopLayout:X?"split":j,onDetailScroll:N,desktopSidePanel:D,desktopListClassName:y,detailOwnsScroll:J,mobileListHeader:T?Z:void 0,desktopListHeader:T?void 0:Z,mobileDetailHeader:le,list:({slideToDetail:E})=>r.jsx("div",{className:G,children:n==="ai"?typeof _=="function"?_({slideToDetail:E,fullscreen:X,toggleFullscreen:()=>ce(H=>!H)}):_??P:r.jsxs(r.Fragment,{children:[q,ee?r.jsx(It,{groups:t,selectedKey:m,mode:pe,mobile:T,compact:V,collapsedDirectoryKeys:h,onToggleDirectory:i,onSelectFile:H=>{b(H),T&&p&&window.requestAnimationFrame(E)},renderLeading:g,renderTrailing:x,renderDirectoryTrailing:f,renderSubtitle:v}):P]})}),detail:r.jsx("div",{className:J?"h-full min-h-0":O,children:L})});return!X||typeof document>"u"?te:Ye.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(Ze,{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:()=>ce(!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:te})]}),document.body)}const Ht=96,Ae=44;function Pt({file:t,repoRoot:n,selectionPath:c,displayName:m,displayDir:h,selected:i,activePane:b,visible:g,reusableContent:x=!1,estimatedHeight:f,lightweight:v=!1,wrap:L,viewType:T,inlineMode:F,diffOptions:V,reloadKey:P=0,auditRecords:q,diffOverride:_,preparedDiff:G,renderBadge:O,onInsertDiffReference:se,onHunkGitAction:le,onReferenceCopied:oe,insertedReferenceKey:W,copiedReferenceKey:p,onClearAuditRecord:j,onContentReady:N,onHeightChange:D}){const y=o.useRef(null),J=o.useRef(null),X=o.useRef(null),[ce,me]=o.useState(null),pe=o.useRef(64),Z=o.useRef(f??104),ee=o.useRef(null),te=o.useRef(null),E=o.useRef(!1),H=o.useRef(!1),z=o.useRef(null),[K,ue]=o.useState(!1),[ke,De]=o.useState(!1),Re=t.absolutePath||(n?`${n}/${t.path}`:t.path),ae=o.useCallback(()=>{H.current||(H.current=!0,De(!0),N?.(c))},[N,c]);o.useLayoutEffect(()=>(E.current=!1,H.current=!1,ee.current=null,te.current=null,z.current!==null&&(window.clearTimeout(z.current),z.current=null),ue(!1),De(!1),()=>{z.current!==null&&(window.clearTimeout(z.current),z.current=null)}),[_,G,P,x,g]),o.useLayoutEffect(()=>{const I=ee.current;!K||I===null||Math.abs((f??104)-I)>=1||(ee.current=null,ae())},[ae,f,K]),o.useLayoutEffect(()=>{if(!g||!K)return;const I=X.current;if(!I)return;const je=()=>{if(!E.current)return;const xe=I.firstElementChild;if(!xe)return;const B=Math.ceil(Math.max(xe.getBoundingClientRect().height,xe.scrollHeight,64)),fe=pe.current;if(B>0&&fe!==B&&(pe.current=B,me(B)),!y.current)return;const U=J.current?.getBoundingClientRect().height??Ae,S=Math.ceil(U+B+1);S<=0||te.current===S||(te.current=S,z.current!==null&&window.clearTimeout(z.current),z.current=window.setTimeout(()=>{if(z.current=null,!E.current)return;const A=te.current;if(A===null)return;const ie=Z.current;if(H.current){Z.current=A,Math.abs(ie-A)>=1&&D?.(c,ie,A),N?.(c);return}if(ee.current=A,Math.abs(ie-A)<1||!D){Z.current=A,ee.current=null,ae();return}Z.current=A,D(c,ie,A)},Ht))};if(je(),typeof ResizeObserver>"u")return;const de=new ResizeObserver(je);return de.observe(I),I.firstElementChild&&de.observe(I.firstElementChild),J.current&&de.observe(J.current),()=>de.disconnect()},[ae,N,D,c,K,g,L,T,F]);const C=g&&!ke;return r.jsxs("div",{ref:y,"data-diff-stream-item":c,"data-diff-selection-path":c,"data-diff-file-path":t.path,"data-diff-absolute-path":Re,className:`scroll-mt-3 border-b border-border/15 last:border-b-0 ${C||!g?"overflow-hidden":""} ${i?"bg-surface-elevated/35":""}`,style:g?C?{height:f??104}:void 0:{height:f??104},children:[r.jsxs("div",{ref:J,"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 ${i?"bg-surface-elevated":"bg-surface"}`,children:[O(t.status),r.jsxs("div",{className:"min-w-0 flex-1",title:Re,children:[r.jsx("div",{className:"truncate text-xs font-semibold text-foreground",children:m}),h&&r.jsx("div",{className:"truncate text-[10px] text-muted-foreground",children:h})]})]}),r.jsxs("div",{ref:X,className:"relative","data-diff-stream-body":!0,style:g?{minHeight:ke?64:Math.max(ce??64,(f??104)-Ae)}:{height:Math.max(ce??64,(f??104)-Ae)},children:[g?r.jsx(wt,{active:b,repoRoot:n,filePath:t.path,referenceFilePath:Re,changedFile:t,wrap:L,viewType:T,inlineMode:F,diffOptions:V,reloadKey:P,embedded:!0,lightweight:v,auditRecords:q,diffOverride:_,preparedDiff:G,onClearAuditRecord:j,onContentReady:()=>{if(x){E.current=!0,ue(!0),ae();return}E.current||(E.current=!0,ue(!0))},onInsertDiffReference:se,onHunkGitAction:le,onReferenceCopied:oe,insertedReferenceKey:W,copiedReferenceKey:p}):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}),g&&K&&!ke&&r.jsx("div",{"data-diff-measuring-overlay":!0,className:"absolute inset-0 z-20 bg-surface"})]})]})}const Oe=8,ze=1600,Ue=104,Wt=1e3,we=new Map;function Bt(t,n){for(we.delete(t),we.set(t,n);we.size>Wt;){const c=we.keys().next().value;if(c===void 0)break;we.delete(c)}}function $t(t,n){return!!(t&&t.diffOverride===n.diffOverride&&t.reloadKey===n.reloadKey&&t.wrap===n.wrap&&t.viewType===n.viewType&&t.inlineMode===n.inlineMode&&t.algorithm===n.algorithm&&t.whitespace===n.whitespace&&t.context===n.context)}const Vt={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 Jt({status:t}){const n=Vt[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 ${n.className}`,title:n.title,children:n.label})}function Zt(t,n){return n?{key:n,nonce:t.nonce+1}:t}function er({files:t,groups:n,selectedKey:c,onSelectFile:m,mode:h,onModeChange:i,collapsedDirectoryKeys:b,onToggleDirectory:g,renderLeading:x,renderTrailing:f,renderDirectoryTrailing:v,renderSubtitle:L,renderStreamBadge:T,onInsertDiffReference:F,onHunkGitAction:V,onReferenceCopied:P,insertedReferenceKey:q,copiedReferenceKey:_,onClearAuditRecord:G,mobile:O,backLabel:se,compact:le,desktopLayout:oe,wrap:W,diffViewType:p,inlineMode:j,diffOptions:N,activePane:D,reloadKey:y=0,renderListHeader:J,renderMobileDetailHeader:X,emptyContent:ce,listPrefix:me,aiContent:pe,listContainerClassName:Z,detailContainerClassName:ee,desktopSidePanel:te,desktopListClassName:E,onDetailScroll:H,initialDetailScrollTop:z,scrollToKey:K,scrollToKeyNonce:ue=0,externalSwiperRef:ke,onMobileSlideChange:De,slideToDetailOnMobile:Re}){const ae=o.useMemo(()=>e=>c===e.key||c===e.path||c===e.absolutePath,[c]),C=o.useMemo(()=>{const e=new Map;for(const a of t)e.set(a.key,a),a.path&&e.set(a.path,a),a.absolutePath&&e.set(a.absolutePath,a);const s=[],l=new Set;for(const a of n){const d=h==="tree"?St(a.files):a.files;for(const w of d){const u=e.get(w.key);!u||l.has(u.key)||(s.push(u),l.add(u.key))}}for(const a of t)l.has(a.key)||s.push(a);return s},[t,n,h]),I=o.useRef(null),je=o.useRef(null),de=o.useRef(null),xe=o.useRef(y),B=o.useRef(0),fe=o.useRef(null),ge=o.useRef(new Map(we)),U=o.useRef({key:null,top:0}),S=o.useRef(new Set),A=o.useRef(new Map),ie=o.useRef(new Map),$=o.useRef(null),Pe=o.useRef(()=>{}),Ne=o.useRef([]),he=o.useRef(new Map),We=o.useRef({tops:[],heights:[],bottom:0}),[Se,st]=o.useState(()=>new Set),[ot,ct]=o.useState(0),[Q,ve]=o.useState({top:0,height:0}),Me=o.useMemo(()=>C.map(e=>e.key),[C]),Ie=Me.join("");ie.current=o.useMemo(()=>new Map(C.map(e=>[e.key,{diffOverride:e.diffOverride,reloadKey:y,wrap:W,viewType:p,inlineMode:j,algorithm:N?.algorithm,whitespace:N?.whitespace,context:N?.context}])),[C,y,W,p,j,N?.algorithm,N?.whitespace,N?.context]),Ne.current=Me,he.current=o.useMemo(()=>new Map(Me.map((e,s)=>[e,s])),[Me]);const k=o.useMemo(()=>{const e=Me.map(a=>ge.current.get(a)??Ue),s=new Array(e.length);for(let a=0;a<e.length;a+=1)s[a]=a===0?0:s[a-1]+e[a-1];const l=e.length>0?s[e.length-1]+e[e.length-1]:0;return{tops:s,heights:e,bottom:l}},[ot,Ie]);We.current=k;const re=o.useMemo(()=>K?C.find(e=>K===e.key||K===e.path||K===e.absolutePath)?.key??null:null,[C,K]),Ce=o.useMemo(()=>c?C.find(e=>c===e.key||c===e.path||c===e.absolutePath)?.key??null:null,[C,c]),Te=o.useMemo(()=>{const e=k.tops.length;if(e===0)return-1;let s=0,l=e;for(;s<l;){const a=Math.floor((s+l)/2);k.tops[a]<=Q.top+1?s=a+1:l=a}return Math.min(e-1,Math.max(0,s-1))},[k.tops,Q.top]),ne=o.useCallback(e=>{S.current=e,st(e)},[]),Be=o.useMemo(()=>{const e=Q.top-ze,s=Q.top+Q.height+ze,l=new Set;let a=0,d=k.tops.length;for(;a<d;){const u=Math.floor((a+d)/2);k.tops[u]<=e?a=u+1:d=u}const w=Math.max(0,a-1);for(let u=w;u<k.tops.length;u+=1){const R=k.tops[u];if(R>s)break;R+k.heights[u]>=e&&R<=s&&l.add(u)}for(let u=Te-1;u<=Te+1;u+=1)u>=0&&u<k.tops.length&&l.add(u);for(const u of Se){const R=he.current.get(u);R!==void 0&&l.add(R)}return Array.from(l).sort((u,R)=>u-R)},[k,Q,Se,Te]),Fe=o.useCallback(()=>{if(!D||$.current)return;const e=Ne.current;if(e.length===0)return;const s=U.current.key,l=Math.min(e.length-1,(s!==null?he.current.get(s):void 0)??Math.max(0,Te)),a=u=>Math.abs((he.current.get(u)??0)-l),d=[];S.current.has(e[l])||d.push(e[l]);for(let u=1;u<=Oe;u+=1){const R=l+u,M=l-u;R<e.length&&!S.current.has(e[R])&&d.push(e[R]),M>=0&&!S.current.has(e[M])&&d.push(e[M])}const w=d[0];if(w){if(S.current.size>=Oe){const u=a(w),R=Array.from(S.current).filter(Y=>Y!==$.current).sort((Y,ye)=>a(ye)-a(Y))[0];if(!R||a(R)<=u)return;const M=new Set(S.current);M.delete(R),ne(M)}$.current=w,ne(new Set(S.current).add(w))}},[D,ne,Te]);Pe.current=Fe;const be=o.useCallback(e=>{if(S.current.has(e))return;const s=$.current;if(s&&s!==e){const l=new Set(S.current);l.delete(s),ne(l),$.current=null}$.current=e,ne(new Set(S.current).add(e))},[ne]),$e=o.useCallback(e=>{if(!S.current.has(e))return;const s=ie.current.get(e);s&&A.current.set(e,s),$.current===e&&($.current=null),window.requestAnimationFrame(()=>Pe.current())},[]),Ve=o.useCallback((e,s,l)=>{if(Math.abs(l-s)<1)return;const a=ge.current.get(e);a!==void 0&&Math.abs(a-l)<1||(ge.current.set(e,l),Bt(e,l),ct(d=>d+1))},[]);o.useLayoutEffect(()=>{if(xe.current!==y){xe.current=y;for(const e of C){if(e.diffOverride!==void 0)continue;const s=Kt(e.path,e.repoRoot);kt(s,e.repoRoot??void 0,N)}}},[C,N,y]),o.useLayoutEffect(()=>{const e=I.current;if(!e)return;const s=()=>{const a=Math.max(0,Math.ceil(e.clientHeight));if(a===0)return;const d=e.scrollTop;ve(w=>w.height===a&&w.top===d?w:{top:d,height:a})};if(s(),typeof ResizeObserver>"u")return;const l=new ResizeObserver(s);return l.observe(e),()=>l.disconnect()},[O]),o.useEffect(()=>{D&&Ce&&be(Ce)},[D,be,Ce]),o.useEffect(()=>{const e=new Set(Ne.current);for(const s of Array.from(ge.current.keys()))e.has(s)||ge.current.delete(s);for(const s of Array.from(S.current))if(!e.has(s)){const l=new Set(S.current);l.delete(s),ne(l)}for(const s of Array.from(A.current.keys()))e.has(s)||A.current.delete(s);if($.current&&!e.has($.current)&&($.current=null),C.length===0){$.current=null,A.current.clear(),ne(new Set);return}Fe()},[C.length,Ie,Fe,Be,ne]);const Ge=o.useCallback(e=>{I.current=e;const s=B.current,l=e.scrollTop;B.current=l;const a=d=>{const w=We.current,u=Ne.current;let R=0,M=w.tops.length;for(;R<M;){const _e=Math.floor((R+M)/2);w.tops[_e]<=d+1?R=_e+1:M=_e}const Y=Math.min(u.length-1,Math.max(0,R-1)),ye=u[Y]??null;U.current={key:ye,top:w.tops[Y]??0},ye&&be(ye)};Math.abs(l-s)>=ze?(Ye.flushSync(()=>{ve({top:l,height:e.clientHeight})}),a(l)):fe.current===null&&(fe.current=window.requestAnimationFrame(()=>{fe.current=null;const d=I.current;if(d){const w=d.scrollTop;ve({top:w,height:d.clientHeight}),a(w)}})),H?.(e)},[H,be]);o.useEffect(()=>()=>{fe.current!==null&&window.cancelAnimationFrame(fe.current)},[]),o.useLayoutEffect(()=>{const e=I.current;if(!e)return;const s=U.current;if(s.key===null)return;const l=he.current.get(s.key);if(l===void 0)return;const a=(k.tops[l]??s.top)-s.top;if(Math.abs(a)<1)return;const d=e.scrollTop+a;B.current=d,ve(w=>({top:d,height:w.height})),typeof e.scrollTo=="function"?e.scrollTo({top:d,behavior:"instant"}):e.scrollTop=d},[k]),o.useLayoutEffect(()=>{const e=Ne.current,s=k.tops;if(e.length===0){U.current={key:null,top:0};return}const l=B.current,a=l+(I.current?.clientHeight??Q.height),d=U.current;if(d.key!==null){const M=he.current.get(d.key);if(M!==void 0){const Y=s[M]??0;if(Y+(k.heights[M]??Ue)>l&&Y<a){U.current={key:d.key,top:Y};return}}}let w=0,u=s.length;for(;w<u;){const M=Math.floor((w+u)/2);s[M]<=l+1?w=M+1:u=M}const R=Math.min(s.length-1,Math.max(0,w-1));U.current={key:e[R]??null,top:s[R]??0}}),o.useLayoutEffect(()=>{if(!re)return;const e=je.current;if(e?.key===re&&e.nonce===ue)return;const s=he.current.get(re);if(s===void 0)return;be(re),U.current={key:re,top:k.tops[s]??0};const l=I.current;if(!l||l.clientHeight===0||Q.height!==l.clientHeight)return;je.current={key:re,nonce:ue};const a=k.tops[s]??0;typeof l.scrollTo=="function"?l.scrollTo({top:a,behavior:"instant"}):l.scrollTop=a;const d=l.scrollTop;B.current=d,ve({top:d,height:l.clientHeight})},[k,Q.height,be,re,ue]),o.useLayoutEffect(()=>{if(z===void 0||re)return;const e=Ie;if(de.current===e)return;const s=I.current;if(!s)return;de.current=e;const l=Math.max(0,k.bottom-s.clientHeight),a=Math.min(Math.max(0,z),l);typeof s.scrollTo=="function"?s.scrollTo({top:a,behavior:"instant"}):s.scrollTop=a;const d=s.scrollTop;B.current=d,ve({top:d,height:s.clientHeight})},[k.bottom,z,Ie,re]);const at=o.useCallback((e,s)=>{const l=ae(e),a=ie.current.get(e.key),d=a!==void 0&&$t(A.current.get(e.key),a);return r.jsx(Gt,{item:e,repoRoot:e.repoRoot,selectionPath:e.key,displayName:e.displayName,displayDir:e.displayDir,selected:l,activePane:D,visible:Se.has(e.key),reusableContent:d,estimatedHeight:s,lightweight:!1,wrap:W,viewType:p,inlineMode:j,diffOptions:N,reloadKey:y,auditRecords:e.auditRecords,diffOverride:e.diffOverride,renderStreamBadge:T,onInsertDiffReference:e.onInsertDiffReference??F,onHunkGitAction:e.onHunkGitAction??V,onReferenceCopied:P,insertedReferenceKey:q,copiedReferenceKey:_,onClearAuditRecord:G,onContentReady:$e,onHeightChange:Ve})},[D,_,N,p,$e,Ve,j,q,ae,Se,G,V,F,P,y,T,W]),it=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(k.bottom,(k.tops.at(-1)??0)+Q.height)},children:Be.map(e=>{const s=C[e];return s?r.jsx("div",{"data-diff-canvas-slot":s.key,className:"absolute inset-x-0",style:{top:k.tops[e]},children:at(s,k.heights[e])},s.key):null})}),lt=r.jsx("div",{ref:I,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=>Ge(e.currentTarget),children:it});return r.jsx(Lt,{groups:n,mode:h,onModeChange:i,selectedKey:c,collapsedDirectoryKeys:b,onToggleDirectory:g,onSelectFile:m,renderLeading:x,renderTrailing:f,renderDirectoryTrailing:v,renderSubtitle:L,detail:lt,mobile:O,backLabel:se,compact:le,emptyContent:ce,listPrefix:me,aiContent:pe,listContainerClassName:Z,detailContainerClassName:ee,renderListHeader:J,renderMobileDetailHeader:X,externalSwiperRef:ke,onMobileSlideChange:De,slideToDetailOnMobile:Re,desktopLayout:oe,onDetailScroll:Ge,desktopSidePanel:te,desktopListClassName:E,detailOwnsScroll:!0})}const Gt=o.memo(function({item:n,renderStreamBadge:c,...m}){return r.jsx(Pt,{...m,file:Xt(n),renderBadge:h=>c(h,n)})});function Xt(t){return{path:t.path,absolutePath:t.absolutePath,status:t.status}}function Kt(t,n){if(t)return n&&t.startsWith(`${n}/`)?t.slice(n.length+1):t}export{Jt as C,er as D,jt as L,St as f,Zt as n};
@@ -1,2 +1,2 @@
1
- import{bh as i}from"./app-BB2wwQ0J.js";import{b as n}from"./dnd-BCFAPC0L.js";import{D as I}from"./DiffReview-DxgTeEAU.js";import"./react-XDCjal2T.js";import"./terminal-C7X98Amf.js";import"./gestureArbiter-D-hJxSpi.js";import"./sparkles-D2io1LdN.js";import"./DiffViewer-BkIhdRra.js";import"./referenceLongPress-B0KH2_WY.js";const x=40,b="/tmp/termdock-diff-review-lab";function S(r,c,l=!1){const d=[`diff --git a/${r} b/${r}`,`--- a/${r}`,`+++ b/${r}`,`@@ -1,${c} +1,${c} @@`];for(let t=0;t<c;t+=1)t%5===0&&d.push(`-const removed_${t} = ${t};`),t%3===0&&d.push(`+const added_${t} = ${t} * 2;`),d.push(` context line ${t} in ${r}${l?" long content for repeated wrap and resize checks".repeat(10):""}`);return d.join(`
1
+ import{bh as i}from"./app-Cxpk5OKD.js";import{b as n}from"./dnd-BCFAPC0L.js";import{D as I}from"./DiffReview-C4WHbN50.js";import"./react-XDCjal2T.js";import"./terminal-C7X98Amf.js";import"./gestureArbiter-C5OWgbj5.js";import"./sparkles-DWhNuQTx.js";import"./DiffViewer-Crz6zQeB.js";import"./referenceLongPress-C9-wHXE8.js";const x=40,b="/tmp/termdock-diff-review-lab";function S(r,c,l=!1){const d=[`diff --git a/${r} b/${r}`,`--- a/${r}`,`+++ b/${r}`,`@@ -1,${c} +1,${c} @@`];for(let t=0;t<c;t+=1)t%5===0&&d.push(`-const removed_${t} = ${t};`),t%3===0&&d.push(`+const added_${t} = ${t} * 2;`),d.push(` context line ${t} in ${r}${l?" long content for repeated wrap and resize checks".repeat(10):""}`);return d.join(`
2
2
  `)}function T(r,c,l){return Array.from({length:x},(d,t)=>{const f=6+t*7%60,a=`src/module${String(t).padStart(2,"0")}/File${t}.ts`,m=`${b}/${a}`,w=S(a,f,l),o=S(a,1,l);return{key:m,path:a,absolutePath:m,status:"modified",repoRoot:b,displayName:`File${t}.ts`,displayDir:`src/module${String(t).padStart(2,"0")} · ${f} lines`,diffOverride:!c||r.has(t)?w:o,auditRecords:[]}})}function B(){const[r,c]=n.useState(()=>new URLSearchParams(window.location.search).get("wrap")!=="off"),[l,d]=n.useState(()=>new URLSearchParams(window.location.search).get("view")==="split"),t=n.useMemo(()=>new URLSearchParams(window.location.search).get("long")==="1",[]),f=n.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},[]),a=f>0,[m,w]=n.useState(()=>new Set);n.useEffect(()=>{if(!a)return;const e=Array.from({length:x},(s,u)=>window.setTimeout(()=>{w(M=>{const g=new Set(M);return g.add(u),g})},f+u*20));return()=>e.forEach(s=>window.clearTimeout(s))},[a,f]);const o=n.useMemo(()=>T(m,a,t),[m,a,t]),k=n.useMemo(()=>[{key:"mock-repo",root:b,label:"diff-review-lab",files:o.map(e=>({key:e.key,path:e.path,absolutePath:e.absolutePath,displayName:e.displayName,displayDir:e.displayDir,status:e.status}))}],[o]),p=n.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<o.length?s:null},[o.length]),[h,$]=n.useState(()=>p!==null?o[p].key:null),[y,R]=n.useState(()=>({key:p!==null?o[p].key:null,nonce:p!==null?1:0})),[N,v]=n.useState("list"),[D,j]=n.useState(new Set),[L,P]=n.useState(p!==null?1:0);return i.jsxs("div",{className:"flex h-screen flex-col bg-background text-foreground","data-diff-review-lab":!0,children:[i.jsxs("div",{className:"shrink-0 border-b border-border/20 px-3 py-2 text-xs text-muted-foreground",children:[i.jsxs("button",{type:"button",className:"mr-2 rounded bg-surface-2 px-2 py-1",onClick:()=>c(e=>!e),"aria-pressed":r,children:["Wrap ",r?"on":"off"]}),i.jsx("button",{type:"button",className:"mr-2 rounded bg-surface-2 px-2 py-1",onClick:()=>d(e=>!e),"aria-pressed":l,children:l?"Split":"Unified"}),"DiffReview Lab · ",o.length," mock files · selected: ",i.jsx("span",{"data-lab-selected":!0,children:h??"none"})," · slide ",L]}),i.jsx("div",{className:"min-h-0 flex-1",children:i.jsx(I,{mobile:!0,backLabel:"Back",files:o,groups:k,selectedKey:h,scrollToKey:y.key,scrollToKeyNonce:y.nonce,mode:N,onModeChange:e=>{e!=="ai"&&v(e)},collapsedDirectoryKeys:D,onToggleDirectory:e=>j(s=>{const u=new Set(s);return u.has(e)?u.delete(e):u.add(e),u}),onSelectFile:e=>{$(e.key),R(s=>({key:e.key,nonce:s.nonce+1}))},onMobileSlideChange:P,renderLeading:()=>null,renderStreamBadge:e=>i.jsx("span",{className:"text-[10px] text-muted-foreground",children:e}),wrap:r,diffViewType:l?"split":"unified",activePane:!0})})]})}export{B as DiffReviewLab};
@@ -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{a5 as $i,bh as h,_ as Di,cV as Vt,bz as Gt,cL as Pi,cP as Ti,aE as Li,bD as Ri,z as Oi,L as zr,e as Vr,c as Gr,bb as Ii,aC as Ss}from"./app-BB2wwQ0J.js";import{b as S}from"./dnd-BCFAPC0L.js";import{u as Fi,G as Lt}from"./referenceLongPress-B0KH2_WY.js";const Hi=[["path",{d:"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71",key:"1cjeqo"}],["path",{d:"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71",key:"19qd67"}]],Bi=$i("link",Hi);function Wr(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 ne(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?Wr(Object(n),!0).forEach((function(r){Wt(e,r,n[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Wr(Object(n)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(n,r))}))}return e}function Wt(e,t,n){return(t=(function(r){var s=(function(i,o){if(typeof i!="object"||i===null)return i;var a=i[Symbol.toPrimitive];if(a!==void 0){var l=a.call(i,o);if(typeof l!="object")return l;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 mn(e,t){if(e==null)return{};var n,r,s=(function(o,a){if(o==null)return{};var l,c,u={},f=Object.keys(o);for(c=0;c<f.length;c++)l=f[c],a.indexOf(l)>=0||(u[l]=o[l]);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 Le(e,t){return Vi(e)||(function(n,r){var s=n==null?null:typeof Symbol<"u"&&n[Symbol.iterator]||n["@@iterator"];if(s!=null){var i,o,a,l,c=[],u=!0,f=!1;try{if(a=(s=s.call(n)).next,r===0){if(Object(s)!==s)return;u=!1}else for(;!(u=(i=a.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&&(l=s.return(),Object(l)!==l))return}finally{if(f)throw o}}return c}})(e,t)||tr(e,t)||Wi()}function zi(e){return(function(t){if(Array.isArray(t))return Kt(t)})(e)||Gi(e)||tr(e)||(function(){throw new TypeError(`Invalid attempt to spread non-iterable instance.
2
+ import{a5 as $i,bh as h,_ as Di,cV as Vt,bz as Gt,cL as Pi,cP as Ti,aE as Li,bD as Ri,z as Oi,L as zr,e as Vr,c as Gr,bb as Ii,aC as Ss}from"./app-Cxpk5OKD.js";import{b as S}from"./dnd-BCFAPC0L.js";import{u as Fi,G as Lt}from"./referenceLongPress-C9-wHXE8.js";const Hi=[["path",{d:"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71",key:"1cjeqo"}],["path",{d:"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71",key:"19qd67"}]],Bi=$i("link",Hi);function Wr(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 ne(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?Wr(Object(n),!0).forEach((function(r){Wt(e,r,n[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Wr(Object(n)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(n,r))}))}return e}function Wt(e,t,n){return(t=(function(r){var s=(function(i,o){if(typeof i!="object"||i===null)return i;var a=i[Symbol.toPrimitive];if(a!==void 0){var l=a.call(i,o);if(typeof l!="object")return l;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 mn(e,t){if(e==null)return{};var n,r,s=(function(o,a){if(o==null)return{};var l,c,u={},f=Object.keys(o);for(c=0;c<f.length;c++)l=f[c],a.indexOf(l)>=0||(u[l]=o[l]);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 Le(e,t){return Vi(e)||(function(n,r){var s=n==null?null:typeof Symbol<"u"&&n[Symbol.iterator]||n["@@iterator"];if(s!=null){var i,o,a,l,c=[],u=!0,f=!1;try{if(a=(s=s.call(n)).next,r===0){if(Object(s)!==s)return;u=!1}else for(;!(u=(i=a.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&&(l=s.return(),Object(l)!==l))return}finally{if(f)throw o}}return c}})(e,t)||tr(e,t)||Wi()}function zi(e){return(function(t){if(Array.isArray(t))return Kt(t)})(e)||Gi(e)||tr(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 Vi(e){if(Array.isArray(e))return e}function Gi(e){if(typeof Symbol<"u"&&e[Symbol.iterator]!=null||e["@@iterator"]!=null)return Array.from(e)}function tr(e,t){if(e){if(typeof e=="string")return Kt(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)?Kt(e,t):void 0}}function Kt(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 Wi(){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 Ki(e,t){var n=typeof Symbol<"u"&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=tr(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(l){throw l},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,a=!1;return{s:function(){n=n.call(e)},n:function(){var l=n.next();return o=l.done,l},e:function(l){a=!0,i=l},f:function(){try{o||n.return==null||n.return()}finally{if(a)throw i}}}}var st=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function Wn(e,t){return e(t={exports:{}},t.exports),t.exports}var he=Wn((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 a=n.apply(null,i);a&&r.push(a)}}else if(o==="object"){if(i.toString!==Object.prototype.toString&&!i.toString.toString().includes("[native code]")){r.push(i.toString());continue}for(var l in i)t.call(i,l)&&i[l]&&r.push(l)}}}return r.join(" ")}e.exports?(n.default=n,e.exports=n):window.classNames=n})()})),ce={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:{}},ks=S.createContext(ce),Ui=ks.Provider,Xi=function(){return S.useContext(ks)};Wn((function(e,t){(function(n){function r(i){var o=i.slice(11),a=null,l=null;switch(o.indexOf('"')){case-1:a=(f=o.split(" "))[0].slice(2),l=f[1].slice(2);break;case 0:var c=o.indexOf('"',2);a=o.slice(3,c);var u=o.indexOf('"',c+1);l=u<0?o.slice(c+4):o.slice(u+3,-1);break;default:var f;a=(f=o.split(" "))[0].slice(2),l=f[1].slice(3,-1)}return{oldPath:a,newPath:l}}var s={parse:function(i){for(var o,a,l,c,u,f=[],d=2,g=i.split(`
@@ -33,5 +33,5 @@ ${r.length>0?`${r.join(`
33
33
  `):e.changes.map(s=>s.content).join(`
34
34
  `);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 ni(e){const t=e.changes.filter(r=>r.type==="insert"||r.type==="delete").map(r=>`${r.type}:${r.content}`).join(`
35
35
  `);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 Nc(e){return e&&"lineNumber"in e&&typeof e.lineNumber=="number"?e.lineNumber:null}function Sc(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 kc(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;for(const{deletes:i,inserts:o}of Sl(s))for(let a=0;a<Math.max(i.length,o.length);a+=1)i[a]&&t.push(i[a]),o[a]&&t.push(o[a])}return{...e,changes:t}}function Ht(e,t){return`${e}\0${t}`}function vt(e,t){return`${e??""}\0${t}`}function ti(e,t){return e===t||t.endsWith(`/${e}`)||e.endsWith(`/${t}`)}function Cc(e){return typeof e.sectionIndex=="number"||typeof e.sectionFingerprint=="string"&&e.sectionFingerprint.length>0}function jc(e,t,n,r,s){if(!e||e.length===0)return{fingerprint:s};const i=vt(t,n);let o;for(const a of e){if(Cc(a))continue;const l=[a.filePath,a.newPath,a.oldPath].filter(d=>typeof d=="string"&&d.length>0),c=l.some(d=>vt(a.repoRoot,d)===i),u=l.some(d=>ti(d,n));if(c||u){if(a.fingerprint===s)return{current:a,fingerprint:s};!o&&a.hunkHeader===r&&(o=a)}}return{stale:o,fingerprint:s}}function xc(e,t,n,r,s,i,o){if(!e||e.length===0)return{fingerprint:o};const a=vt(t,n);let l;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=>vt(c.repoRoot,d)===a)||u.some(d=>ti(d,n)))||c.hunkHeader!==r)){if(c.sectionFingerprint===o)return{current:c,fingerprint:o};!l&&c.fingerprint===s&&c.sectionIndex===i&&(l=c)}}return{stale:l,fingerprint:o}}function Mc(e){const t=e.changes[e.changes.length-1];return t?ge(t):null}function Ac(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 Ec(e){return e instanceof DOMException&&e.name==="AbortError"}function Bt(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 zt(e){if(e.tooLarge){const t=Bt(e.size),n=Bt(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=Bt(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 $c(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>sc))return!0;return!1}function Dc(e){return e==="unified"||e==="split"}function Pc(){return Gt(Qs,Dc)??"unified"}function Tc(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 Lc(){return typeof window<"u"&&typeof window.matchMedia=="function"&&window.matchMedia(qs).matches}function Rc(e){return typeof HTMLElement>"u"||!(e instanceof HTMLElement)?!1:e.tagName==="INPUT"||e.tagName==="TEXTAREA"||e.isContentEditable||!!e.closest(".xterm")}function Wc({filePath:e,repoRoot:t,referenceFilePath:n,interactionId:r,requestSlotId:s,changedFile:i,onInsertDiffReference:o,onHunkGitAction:a,onReferenceCopied:l,insertedReferenceKey:c,copiedReferenceKey:u,wrap:f=!1,reloadKey:d=0,embedded:g=!1,active:m=!0,lightweight:y=!1,auditRecords:b,diffOverride:w,preparedDiff:_,viewType:k,inlineMode:A="words",diffOptions:j,oldSourceOverride:$,onClearAuditRecord:E,onContentReady:P,onSummaryChange:T}){const{t:p,locale:O}=Pi(),G=Ti(N=>N.rootPath),z=S.useRef(null);if(z.current===null){const N=i?.repoRoot??t??(e?.startsWith("/")?null:G),x=ut(e,N),v=w===void 0&&_===void 0?er(x,N??void 0,j):void 0,C=w!==void 0?w:v?.diff??null,D=y?"none":A,R=Ft(e)??void 0,L=ht(x,N??void 0,j,D,R),M=C?de.get(L):void 0,H=M?.diffContent===C?M:void 0;H&&(de.delete(L),de.set(L,H)),z.current={diffContent:C,diffNotice:v?zt(v):null,diffError:v?.error??null,diffLoading:!!(m&&w===void 0&&_===void 0&&!v),parsedFiles:H?.result.files??[],workerTokens:H?.result.tokens??new Map,parsedDiffInput:H?{cacheKey:L,diffContent:C,oldSource:H.oldSource}:null,oldSourceContent:H?.oldSource??null,oldSourceResolvedFromCache:H?.oldSource!==void 0}}const U=z.current,[pe,Ie]=S.useState(()=>Pc()),[ye,Ue]=S.useState(()=>Lc()),[te,Xe]=S.useState(U.diffContent),[_e,me]=S.useState(U.diffNotice),[St,Ne]=S.useState(U.diffLoading),[kt,ve]=S.useState(U.diffError),[Ct,Fe]=S.useState(U.parsedFiles),[Kn,He]=S.useState(U.workerTokens),[sn,Be]=S.useState(U.parsedDiffInput),[Ae,Se]=S.useState(U.oldSourceContent),[jt,re]=S.useState(()=>!!(m&&_===void 0&&$===void 0&&w===void 0&&(i?.repoRoot??t??G)&&e&&!i?.untracked&&i?.status!=="added"&&!U.oldSourceResolvedFromCache)),ri=S.useRef(U.oldSourceResolvedFromCache?d:null),[ke,pn]=S.useState(null),gr=S.useRef(d),Ee=Fi(l),le=(k??pe)==="split"&&ye?"split":"unified";S.useEffect(()=>{if(typeof window>"u"||typeof window.matchMedia!="function")return;const N=window.matchMedia(qs),x=()=>Ue(N.matches);return x(),N.addEventListener?.("change",x),()=>N.removeEventListener?.("change",x)},[]);const mr=S.useCallback(N=>{Ie(N),Vt(Qs,N)},[]),{whitespace:si,context:ii,setWhitespace:oi,setContext:ai}=nc(),vr=w!==void 0||_!==void 0,yn=S.useRef(null),_n=S.useRef(!1),[li,br]=S.useState(null),Un=S.useCallback(N=>{const x=yn.current;if(!x)return;const v=x.querySelectorAll("[data-diff-hunk-anchor]");v.length!==0&&br(C=>{const R=((C!==null&&C>=0&&C<v.length?C:N===1?-1:0)+N+v.length)%v.length,L=v[R];return L instanceof HTMLElement&&L.scrollIntoView({behavior:"smooth",block:"start"}),R})},[]);S.useEffect(()=>{const N=x=>{if(x.key!=="F7")return;const v=yn.current;if(!v)return;const C=document.activeElement,D=C instanceof Node&&v.contains(C);!_n.current&&!D||Rc(C)||(x.preventDefault(),Un(x.shiftKey?-1:1))};return window.addEventListener("keydown",N),()=>window.removeEventListener("keydown",N)},[Un]);const be=i?.repoRoot??null,Nn=i?.status??null,wr=be??t??G,Xn=be??t??G,xt=n??i?.absolutePath??nr(Xn,e);S.useEffect(()=>{if(_!==void 0){Se(null),re(!1);return}if($!==void 0){Se($),re(!1);return}const N=be??t??G;if(!m||w!==void 0||!N||!e||i?.untracked||Nn==="added"){Se(null),re(!1);return}if(ri.current===d){re(!1);return}Se(null),re(!0);const x=new AbortController;return Li(e,N,"HEAD",x.signal,"ref").then(C=>{x.signal.aborted||(Se(C.truncated||C.error?null:C.content),re(!1))}).catch(()=>{x.signal.aborted||(Se(null),re(!1))}),()=>x.abort()},[m,i?.untracked,be,Nn,w,e,$,_,d,t,G]),S.useEffect(()=>{if(_!==void 0)return;if(w!==void 0){Xe(w),me(null),ve(null),Ne(!1),pn(null);return}if(!m){Ne(!1),ee("effect_skip_inactive",{interactionId:r,requestSlotId:s,filePath:e,repoRoot:t,changedFileRepoRoot:be,rootPath:G});return}let N=!1,x=null;const v=new AbortController,C=e,D=be??t??(C?.startsWith("/")?null:G),R=++oc,L=`diff-${Date.now().toString(36)}-${(++ac).toString(36)}`;let M=!1;const H=performance.now(),F=(B,De={})=>{M||(M=!0,ct("end",{loadingId:R,interactionId:r,requestSlotId:s,traceId:L,reason:B,durationMs:Math.round(performance.now()-H),filePath:C,gitRoot:D,...De}))},J=ut(C,D),Ce=C&&D&&!C.startsWith("/")?`${D}/${C}`:C,Q=gr.current!==d;if(gr.current=d,C&&!D){ee("effect_wait_for_repo_root",{interactionId:r,requestSlotId:s,traceId:L,filePath:C,repoRoot:t,changedFileRepoRoot:be,rootPath:G}),Xe(null),me(null),ve(null),pn(null),Ne(!1),F("waiting_for_repo_root");return}const W=er(J,D??void 0,j);ct("start",{loadingId:R,interactionId:r,requestSlotId:s,traceId:L,filePath:C,requestPath:J,gitRoot:D,readablePath:Ce,forceReload:Q,hasCachedDiff:!!W,embedded:g,active:m});const on=window.setTimeout(()=>{M||N||ct("still_active",{loadingId:R,interactionId:r,requestSlotId:s,traceId:L,filePath:C,requestPath:J,gitRoot:D,durationMs:Math.round(performance.now()-H),hasCachedDiff:!!W,controllerAborted:v.signal.aborted,abortReason:v.signal.aborted?String(v.signal.reason??""):void 0,cacheSize:oe.size,promiseSize:ae.size})},3e3),an=window.setTimeout(()=>{M||N||(ct("still_active_long",{loadingId:R,interactionId:r,requestSlotId:s,traceId:L,filePath:C,requestPath:J,gitRoot:D,durationMs:Math.round(performance.now()-H),hasCachedDiff:!!W,controllerAborted:v.signal.aborted,abortReason:v.signal.aborted?String(v.signal.reason??""):void 0,cacheSize:oe.size,promiseSize:ae.size}),ve("Diff response is taking too long to finish in the browser. Try selecting the file again."),Ne(!1),F("client_watchdog_timeout"))},1e4);ee("effect_start",{interactionId:r,requestSlotId:s,traceId:L,loadingId:R,filePath:C,requestPath:J,gitRoot:D,readablePath:Ce,forceReload:Q,hasCachedDiff:!!W,cachedBytes:W?.diff?.length??0}),Xe(W?.diff??null),me(W?zt(W):null),Ne(!W),ve(W?.error??null),pn(null);const X=()=>(Q&&W?hc(J,D??void 0,j):gc(J,D??void 0,v.signal,Q,L,r,s,j)).then(B=>{if(N)return;const De=zt(B),se=$c(B.diff);me(se?"Diff has too many lines to preview safely.":De),Xe(B.tooLarge||se?"":B.diff),ve(B.error??null),ee("state_set_result",{interactionId:r,requestSlotId:s,traceId:L,loadingId:R,filePath:C,requestPath:J,gitRoot:D,bytes:B.diff?.length??0,tooLargeToRender:se,resultTooLarge:!!B.tooLarge,error:B.error??null})}).catch(B=>{if(N||Ec(B))return;const De=B instanceof Error?B.message:"Failed to load diff";W?.diff?(me(De),ve(null)):(Xe(null),me(null),ve(De)),ee("state_set_error",{interactionId:r,requestSlotId:s,traceId:L,filePath:C,requestPath:J,gitRoot:D,error:De,hadCachedDiff:!!W?.diff})}).finally(()=>{N||Ne(!1),F(N?"cancelled_finally":"finally"),ee("load_text_finally",{interactionId:r,requestSlotId:s,traceId:L,loadingId:R,filePath:C,requestPath:J,gitRoot:D,cancelled:N})});return W&&!Q?(Ne(!1),F("cache_hit")):W&&Q?X():mc(Ce,Nn?{status:Nn}:null)?Ri(Ce,v.signal,"view_diff_image",s?`${s}:image`:void 0).then(B=>{N||(x=URL.createObjectURL(B.blob),pn({objectUrl:x,size:B.size,mimeType:B.mimeType}),F("image_preview_loaded",{bytes:B.size,mimeType:B.mimeType}))}).catch(()=>{if(!(N||v.signal.aborted))return X()}).finally(()=>{N||Ne(!1),N&&F("image_cancelled_finally")}):X(),()=>{N=!0,v.abort(),Oi(s),window.clearTimeout(on),window.clearTimeout(an),x&&URL.revokeObjectURL(x),F("cleanup"),ee("effect_cleanup",{interactionId:r,requestSlotId:s,traceId:L,loadingId:R,filePath:C,requestPath:J,gitRoot:D,loadingEnded:M,signalAborted:v.signal.aborted,abortReason:v.signal.aborted?String(v.signal.reason??""):void 0,cacheSize:oe.size,promiseSize:ae.size})}},[m,be,Nn,j,w,e,r,_,d,t,s,G]),S.useEffect(()=>{if(_!==void 0)return;if(!te||te.trim()===""){Fe([]),He(new Map),Be(null);return}let N=!1;const x=performance.now(),v=be??t??(e?.startsWith("/")?null:G),C=ut(e,v),D=y?"none":A,R=Ft(e)??void 0,L=ht(C,v??void 0,j,D,R);return uc(te,Ae??void 0,C,v??void 0,j,D,R).then(M=>{N||(Fe(M.files),He(M.tokens),Be({cacheKey:L,diffContent:te,oldSource:Ae??void 0}),ee("worker_parse_done",{filePath:e,bytes:te.length,files:M.files.length,parseMs:M.parseMs,tokenizeMs:M.tokenizeMs,durationMs:Math.round(performance.now()-x)}))}).catch(M=>{N||(Fe([]),He(new Map),Be({cacheKey:L,diffContent:te,oldSource:Ae??void 0}),ve(M instanceof Error?M.message:String(M)),ee("worker_parse_error",{filePath:e,bytes:te.length,durationMs:Math.round(performance.now()-x),error:M instanceof Error?M.message:String(M)}))}),()=>{N=!0}},[be,te,j,e,A,y,Ae,_,t,G]);const fe=_!==void 0?_?.diffContent??null:te,Sn=_!==void 0?_?.diffNotice??null:_e,pr=_!==void 0?_?.diffError??null:kt,kn=pr?.toLowerCase().includes("signal is aborted")?null:pr,yr=be??t??(e?.startsWith("/")?null:G),ci=ut(e,yr),ui=ht(ci,yr??void 0,j,y?"none":A,Ft(e)??void 0),fi=!te||sn?.cacheKey===ui&&sn.diffContent===te&&sn.oldSource===(Ae??void 0),Mt=_!==void 0?!1:St||jt||!fi,_r=_!==void 0?_?.files??[]:Ct,I=S.useMemo(()=>_r.map(N=>N.type==="modify"&&N.oldPath!==N.newPath&&N.oldPath!=="/dev/null"&&N.newPath!=="/dev/null"?{...N,type:"rename"}:N),[_r]);S.useEffect(()=>{!m||Mt||fe===null&&!kn&&!ke&&w===void 0&&_===void 0||P?.()},[m,fe,kn,Mt,w,ke,P,_]);const Ye=$??Ae,ze=S.useMemo(()=>Ye==null?null:zl(Ye),[Ye]),[Yn,di]=S.useState(null),Je=S.useMemo(()=>{if(I.length!==1||!ze)return null;const N=Yn?.files===I&&Yn.source===Ye?Yn.values:{};return I[0].hunks.map((x,v)=>ws(x,ze,N[v]))},[I,ze,Ye,Yn]),hi=(N,x)=>{ze&&di(v=>{const C=v?.files===I&&v.source===Ye?v.values:{},D=I[0].hunks.map((M,H)=>ws(M,ze,C[H])),R=Math.min(vs,bs(D,N,x,ze.length)),L=C[N]??{before:0,after:0};return{files:I,source:Ye,values:{...C,[N]:{...L,[x]:L[x]+R}}}})},Nr=b??[],gi=_!==void 0?_?.tokens??new Map:Kn,Jn=S.useMemo(()=>{let N=0,x=0;for(const v of I)for(const C of v.hunks)for(const D of C.changes)D.type==="insert"&&(N+=1),D.type==="delete"&&(x+=1);return{additions:N,deletions:x}},[I]);S.useEffect(()=>{T&&T(I.length>0?{files:I.length,...Jn}:null)},[I.length,T,Jn]);const mi=S.useMemo(()=>{const N=new Map;for(const x of I){let v=0,C=0;for(const D of x.hunks)for(const R of D.changes)R.type==="insert"&&(v+=1),R.type==="delete"&&(C+=1);N.set(`${x.oldRevision}-${x.newRevision}-${x.newPath}`,{additions:v,deletions:C})}return N},[I]),$e=_s(e,{name:p("diffViewer.workingTree"),dir:p("diffViewer.allUnstaged")}),Ze=`diff:whole:${e??"all"}`,Zn=S.useMemo(()=>{if(!fe)return"";const N={repoRoot:Xn,selectedFilePath:e,referenceFilePath:xt},x=I.flatMap(v=>{const C=v.newPath&&!ue(v.newPath)?v.newPath:v.oldPath&&!ue(v.oldPath)?v.oldPath:"unknown file",D=je(C,N);return v.hunks.map((R,L)=>({filePath:D,hunkIndex:L,hunk:R}))});return In(wc(fe,I,N),{hunks:x})},[fe,e,I,Xn,xt]),vi=S.useCallback(()=>{!Zn||!o||o(e?`${$e.name} diff`:p("diffViewer.allDiffLabel"),Zn,Ze)},[e,o,p,$e.name,Ze,Zn]),[At,Sr]=S.useState(null),[Qn,qn]=S.useState(null),[Cn,bi]=S.useState(null),Et=S.useRef(!1),[jn,et]=S.useState(null);S.useEffect(()=>{qn(null),et(null)},[I]),S.useEffect(()=>{if(!jn)return;const N=window.setTimeout(()=>et(null),5e3);return()=>window.clearTimeout(N)},[jn]);const xn=be??t??(e?.startsWith("/")?null:G),kr=!!(a&&xn&&w==null&&_==null),Cr=S.useCallback(async(N,x,v,C,D,R)=>{if(!a||!xn||Et.current)return;const L=fe?bc(fe,v,C,D):null;if(!L){qn({key:x,message:p("diffViewer.hunkActionUnavailable")});return}Et.current=!0,Sr(x),qn(null);try{await a({mode:N,patch:L,cwd:xn,path:nr(xn,R)??R}),bi({key:x,mode:N,diff:fe})}catch(M){qn({key:x,message:M instanceof Error?M.message:String(M)})}finally{Et.current=!1,Sr(M=>M===x?null:M),et(M=>M===x?null:M)}},[a,xn,fe,p]),$t=S.useMemo(()=>{const N=new Map,x=new Map;for(const v of I){const C=`${v.oldRevision}-${v.newRevision}-${v.newPath}`,D=v.newPath&&!ue(v.newPath)?v.newPath:v.oldPath&&!ue(v.oldPath)?v.oldPath:"unknown file",R=y?[]:v.hunks.flatMap(H=>H.changes.filter(F=>F.type==="delete").map(F=>({content:F.content,lineNumber:F.lineNumber}))),L=y?[]:v.hunks.flatMap(H=>H.changes.filter(F=>F.type==="insert").map(F=>({content:F.content,lineNumber:F.lineNumber}))),M=y?[]:kl(R,L);for(const[H,F]of v.hunks.entries()){const J=new Set(F.changes.filter(X=>X.type==="delete").map(X=>X.lineNumber)),Ce=new Set(F.changes.filter(X=>X.type==="insert").map(X=>X.lineNumber)),Q=M.filter(X=>J.has(X.oldLineNumber)||Ce.has(X.newLineNumber)),W=Je?.[H]??F,on=le==="split"?kc(W):W,an=$l(on,le);N.set(F,{hunkSections:y?[]:pc(F),movedCandidates:Q,movedOldLines:new Set(Q.map(X=>X.oldLineNumber)),movedNewLines:new Set(Q.map(X=>X.newLineNumber)),displayHunk:on,rowModel:an}),x.set(Ht(D,H),{fileKey:C,hunkIndex:H,rowModel:an})}}return{byHunk:N,byHunkId:x}},[I,y,le,Je]),jr=$t.byHunkId,xr=S.useMemo(()=>I.reduce((N,x)=>N+x.hunks.length,0),[I]),wi=S.useMemo(()=>Sc(fe??""),[fe]);S.useEffect(()=>{br(null)},[I]);const Mn=!!o,[we,Mr]=S.useState(null),[Ar,nt]=S.useState(null),Er=typeof window<"u"&&typeof window.matchMedia=="function"&&window.matchMedia("(max-width: 767px)").matches;S.useEffect(()=>{Mr(null)},[I,le,d,Mn,Je]),S.useLayoutEffect(()=>{if(!we){nt(null);return}const N=yn.current?.querySelector(".diff-line-ref-selected"),x=N?.closest("[data-diff-file-anchor]");if(!N||!x){nt(null);return}const v=N.getBoundingClientRect(),C=typeof window>"u"?0:window.innerHeight;if(C>0&&(v.bottom<0||v.top>C)){nt(null);return}nt(v.top-x.getBoundingClientRect().top+v.height/2)},[we,I,le,f]);const $r=S.useCallback((N,x)=>{if(!Mn||x.button!==0||ml())return;const v=x.currentTarget,C=v.closest("[data-diff-file-anchor]")?.dataset.diffFileAnchor,D=Number(v.closest("[data-diff-hunk-index]")?.dataset.diffHunkIndex);if(!C||!Number.isInteger(D))return;const R=Ht(C,D),L=jr.get(R);if(!L)return;const M=v.dataset.changeKey??v.parentElement?.querySelector("[data-change-key]")?.dataset.changeKey,H=M?L.rowModel.rowIndexByChangeKey.get(M):void 0;H!==void 0&&Mr(F=>{const J=Dl(F,R,H);return J?{...J,fileKey:L.fileKey,hunkIndex:D}:null})},[jr,Mn]),Dr=S.useMemo(()=>Mn?{onClick:$r}:void 0,[$r,Mn]),Pr=N=>{let x=0;return h.jsx(h.Fragment,{children:I.map((v,C)=>{const D=`${v.oldRevision}-${v.newRevision}-${v.newPath}`,R=wi[C]?.includes("\")??!1,L=mi.get(D)??{additions:0,deletions:0},M=v.newPath&&!ue(v.newPath)?v.newPath:v.oldPath&&!ue(v.oldPath)?v.oldPath:"unknown file",H={repoRoot:Xn,selectedFilePath:e,referenceFilePath:xt},F=je(M,H),J=je(v.oldPath||M,H),Ce=je(v.newPath||M,H),Q=_s(M,{name:"unknown file",dir:""}),W=v.type==="rename"&&v.oldPath&&v.newPath&&v.oldPath!==v.newPath?`${v.oldPath} → ${v.newPath}`:null,on=!N||I.length>1,an=[`diff --git ${xe("a",J)} ${xe("b",Ce)}`,...v.hunks.flatMap(K=>[K.content,...K.changes.map(gn)])].join(`
36
- `),X=In(an,{hunks:v.hunks.map((K,Z)=>({filePath:F,hunkIndex:Z,hunk:K}))}),B=`diff:file:${M}`,De=c===B||u===B,se=(()=>{if(!we||we.fileKey!==D)return null;const K=v.hunks[we.hunkIndex],Z=K?$t.byHunk.get(K)?.rowModel:void 0;if(!K||!Z)return null;const An=Tl(Je?.[we.hunkIndex]??K,Z,we),En=Ol(An);if(An.length===0||!En)return null;const tt=Il(M,we.hunkIndex,we);return{lineLabel:En,referenceKey:tt,text:Rl(F,we.hunkIndex,K.content,`diff --git ${xe("a",J)} ${xe("b",Ce)}`,An)}})(),Lr=!!(se&&c===se.referenceKey),Rr=!!(se&&u===se.referenceKey),yi={"--termdock-diff-gutter-width":`${Ac(Je??v.hunks)}ch`};return h.jsxs("div",{"data-diff-file-anchor":M,className:g?"relative overflow-hidden bg-surface":"relative mt-3 border border-border/20 bg-surface",style:yi,children:[on&&h.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:[h.jsxs("div",{className:"min-w-0",title:W??(v.newPath||v.oldPath),children:[h.jsx("div",{className:"truncate font-mono text-[11px] text-foreground",children:W??Q.name}),!W&&Q.dir&&h.jsx("div",{className:"truncate font-mono text-[10px] text-muted-foreground/70",children:Q.dir})]}),h.jsxs("div",{className:"flex shrink-0 items-center gap-1.5",children:[h.jsxs("span",{className:"text-[10px] font-medium text-[color:var(--diff-insert-strong)]",children:["+",L.additions]}),h.jsxs("span",{className:"text-[10px] font-medium text-[color:var(--diff-delete-strong)]",children:["-",L.deletions]}),o&&I.length>1&&h.jsx("button",{type:"button",onClick:()=>o(`${Q.name} diff`,X,B),...Ee(X,B),className:`rounded-full px-2 py-0.5 text-[10px] font-semibold active:scale-95 ${De?"bg-surface-elevated text-foreground":"bg-primary/10 text-primary hover:bg-primary/20"}`,title:p("diffViewer.insertFileDiff"),children:p(u===B?"rightSidebar.copied":c===B?"rightSidebar.inserted":"diffViewer.insertFileShort")}),h.jsx("span",{className:"text-[10px] font-medium uppercase tracking-[0.12em] text-muted-foreground",children:v.type})]})]}),v.hunks.length===0?h.jsxs("div",{className:"bg-surface-2 px-3 py-5 text-center text-xs text-muted-foreground",children:[h.jsx(Lt,{size:18,className:"mx-auto mb-2 text-muted-foreground/80"}),p("diffViewer.binaryOrEmpty")]}):h.jsx(Vl,{enabled:le==="split"&&!f,label:p("rightSidebar.horizontalScrollHint"),className:`termdock-native-select overflow-x-auto termdock-diff-scroll ${le==="split"?"diff-split":""} ${f?"termdock-diff-wrap":""}`,children:h.jsxs("div",{className:"min-w-full",children:[v.hunks.map((K,Z)=>{const An=x;x+=1;const En=`diff --git ${xe("a",J)} ${xe("b",Ce)}`,tt=In([En,K.content,...K.changes.map(gn)].join(`
36
+ `),X=In(an,{hunks:v.hunks.map((K,Z)=>({filePath:F,hunkIndex:Z,hunk:K}))}),B=`diff:file:${M}`,De=c===B||u===B,se=(()=>{if(!we||we.fileKey!==D)return null;const K=v.hunks[we.hunkIndex],Z=K?$t.byHunk.get(K)?.rowModel:void 0;if(!K||!Z)return null;const An=Tl(Je?.[we.hunkIndex]??K,Z,we),En=Ol(An);if(An.length===0||!En)return null;const tt=Il(M,we.hunkIndex,we);return{lineLabel:En,referenceKey:tt,text:Rl(F,we.hunkIndex,K.content,`diff --git ${xe("a",J)} ${xe("b",Ce)}`,An)}})(),Lr=!!(se&&c===se.referenceKey),Rr=!!(se&&u===se.referenceKey),yi={"--termdock-diff-gutter-width":`${Ac(Je??v.hunks)}ch`};return h.jsxs("div",{"data-diff-file-anchor":M,className:g?"relative overflow-hidden bg-surface":"relative mt-3 border border-border/20 bg-surface",style:yi,children:[on&&h.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:[h.jsxs("div",{className:"min-w-0",title:W??(v.newPath||v.oldPath),children:[h.jsx("div",{className:"truncate font-mono text-[11px] text-foreground",children:W??Q.name}),!W&&Q.dir&&h.jsx("div",{className:"truncate font-mono text-[10px] text-muted-foreground/70",children:Q.dir})]}),h.jsxs("div",{className:"flex shrink-0 items-center gap-1.5",children:[h.jsxs("span",{className:"text-[10px] font-medium text-[color:var(--diff-insert-strong)]",children:["+",L.additions]}),h.jsxs("span",{className:"text-[10px] font-medium text-[color:var(--diff-delete-strong)]",children:["-",L.deletions]}),o&&I.length>1&&h.jsx("button",{type:"button",onClick:()=>o(`${Q.name} diff`,X,B),...Ee(X,B),className:`rounded-full px-2 py-0.5 text-[10px] font-semibold active:scale-95 ${De?"bg-surface-elevated text-foreground":"bg-primary/10 text-primary hover:bg-primary/20"}`,title:p("diffViewer.insertFileDiff"),children:p(u===B?"rightSidebar.copied":c===B?"rightSidebar.inserted":"diffViewer.insertFileShort")}),h.jsx("span",{className:"text-[10px] font-medium uppercase tracking-[0.12em] text-muted-foreground",children:v.type})]})]}),v.hunks.length===0?h.jsxs("div",{className:"bg-surface-2 px-3 py-5 text-center text-xs text-muted-foreground",children:[h.jsx(Lt,{size:18,className:"mx-auto mb-2 text-muted-foreground/80"}),p("diffViewer.binaryOrEmpty")]}):h.jsx(Vl,{enabled:le==="split"&&!f,label:p("rightSidebar.horizontalScrollHint"),className:`termdock-native-select overflow-x-auto termdock-diff-scroll ${le==="split"?"diff-split":""} ${f?"termdock-diff-wrap":""}`,children:h.jsxs("div",{className:"termdock-diff-canvas min-w-full",children:[v.hunks.map((K,Z)=>{const An=x;x+=1;const En=`diff --git ${xe("a",J)} ${xe("b",Ce)}`,tt=In([En,K.content,...K.changes.map(gn)].join(`
37
37
  `),{hunks:[{filePath:F,hunkIndex:Z,hunk:K}]}),Dt=_c(K),Pe=jc(Nr,wr,M,K.content,Dt),ln=`diff:hunk:${M}:${Z}`,_i=c===ln||u===ln,rt=`stage:${M}:${Z}`,Ve=`revert:${M}:${Z}`,Or=Cn?.diff===fe,Ir=At!==null||Or,Fr=Or&&(Cn?.key===rt||Cn?.key===Ve),Ni=kr&&(!i||i.unstaged||i.untracked),Pt=Qn&&(Qn.key===rt||Qn.key===Ve)?Qn.message:null,cn=$t.byHunk.get(K),Si=Ht(M,Z),ki=cn?.hunkSections??[],Tt=cn?.movedCandidates??[],Ci=cn?.movedOldLines??new Set,ji=cn?.movedNewLines??new Set,xi=cn?.displayHunk??K,Mi=cn?.rowModel,Hr=Y=>{const q=Je&&ze?bs(Je,Z,Y,ze.length):0;if(!q)return null;const Qe=p(Y==="before"?"diffViewer.expandAbove":"diffViewer.expandBelow",{count:Math.min(vs,q)});return h.jsxs("button",{type:"button",onClick:()=>hi(Z,Y),className:"flex w-full items-center justify-center gap-1 bg-surface-2 px-2 py-1 text-[11px] text-muted-foreground transition hover:bg-surface-elevated hover:text-foreground","aria-label":Qe,children:[Y==="before"?h.jsx(Vr,{size:13}):h.jsx(Gr,{size:13}),Qe]})},Ai=ki.reduce((Y,q)=>{const Qe=ni(q),$n=xc(Nr,wr,M,K.content,Dt,q.index,Qe),ie=$n.current??$n.stale;if(!ie&&!o)return Y;const Dn=Mc(q);if(!Dn)return Y;const Ge=`diff:section:${M}:${Z}:${q.index}`,We=o?yc(F,Z,K,q,En):"",Pn=c===Ge||u===Ge,Br=o?h.jsx("button",{type:"button",onClick:()=>o(`${Q.name} hunk ${Z+1}.${q.index+1}`,We,Ge),...Ee(We,Ge),className:`shrink-0 rounded px-1.5 py-0.5 text-[10px] font-medium transition active:scale-95 ${Pn?"bg-surface-elevated text-foreground":ie?"text-primary/80 hover:bg-primary/10 hover:text-primary":"text-muted-foreground/45 hover:bg-surface-2 hover:text-muted-foreground"}`,title:ie?ie.summary??ie.explanation:"Insert this hunk section",children:p(u===Ge?"rightSidebar.copied":c===Ge?"rightSidebar.inserted":"diffViewer.insertHunkShort")}):null;return Y[Dn]=h.jsx("div",{"data-diff-section-anchor":M,"data-diff-section-audit":M,"data-diff-hunk-index":Z,"data-diff-section-index":q.index,"data-diff-section-fingerprint":Qe,className:ie?`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"} ${$n.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 flex min-w-0 justify-end text-[10px] leading-none",children:ie?h.jsxs(h.Fragment,{children:[(ie.summary||Br||E)&&h.jsxs("div",{className:"mb-0.5 flex min-w-0 items-center gap-1.5",children:[ie.summary?h.jsx("span",{className:"min-w-0 flex-1 truncate text-[10px] font-semibold text-foreground",children:ie.summary}):h.jsx("span",{className:"min-w-0 flex-1"}),Br,E&&h.jsx("button",{type:"button",onClick:()=>E(ie.id),className:"ml-auto shrink-0 rounded p-0.5 text-muted-foreground/60 transition hover:bg-surface-2 hover:text-foreground",title:p("diffViewer.auditClear"),children:h.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:[h.jsx("path",{d:"M18 6 6 18"}),h.jsx("path",{d:"m6 6 12 12"})]})})]}),h.jsx("div",{className:"termdock-diff-audit-explanation min-w-0",children:ie.explanation})]}):null}),Y},{}),Ei=({changes:Y,defaultGenerate:q})=>{const Qe=q(),$n=Y.some(We=>{const Pn=Nc(We);return Pn===null?!1:We?.type==="delete"?Ci.has(Pn):We?.type==="insert"&&ji.has(Pn)}),ie=Y.find(We=>!!We),Dn=ie===void 0?void 0:Mi?.rowIndexByChangeKey.get(ge(ie)),Ge=Dn!==void 0&&Pl(we,Si,Dn);return`${Qe}${$n?" diff-line-moved":""}${Ge?" diff-line-ref-selected":""}`};return h.jsxs("div",{className:`diff-hunk scroll-mt-16 ${An===li?"diff-hunk--jump-target":""}`,"data-diff-hunk-anchor":M,"data-diff-hunk-index":Z,"data-diff-hunk-fingerprint":Dt,children:[h.jsxs("div",{className:"diff-decoration diff-hunk-meta-row bg-[rgba(var(--diff-accent-rgb),0.035)] px-2 py-1",children:[h.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&&h.jsx("button",{type:"button",onClick:()=>o(`${Q.name} hunk ${Z+1}`,tt,ln),...Ee(tt,ln),className:`inline-flex h-6 shrink-0 items-center rounded-full px-2 text-[10px] font-semibold active:scale-95 ${_i?"bg-surface-elevated text-foreground":"bg-primary/15 text-primary hover:bg-primary/25"}`,title:p("diffViewer.insertHunkDiff"),children:p(u===ln?"rightSidebar.copied":c===ln?"rightSidebar.inserted":"diffViewer.insertHunkShort")}),Ni&&h.jsx("button",{type:"button",disabled:Ir,onClick:()=>{Cr("stage",rt,v,C,Z,M)},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:p("diffViewer.stageHunkTitle"),children:At===rt?p("diffViewer.hunkActionApplying"):Fr&&Cn?.mode==="stage"?p("diffViewer.hunkActionStaged"):p("diffViewer.stageHunk")}),kr&&h.jsx("button",{type:"button",disabled:Ir,onClick:()=>{if(jn!==Ve){et(Ve);return}Cr("revert-worktree",Ve,v,C,Z,M)},className:`inline-flex h-6 shrink-0 items-center rounded-full px-2 text-[10px] font-semibold transition active:scale-95 disabled:opacity-50 ${jn===Ve?"bg-destructive/15 text-destructive hover:bg-destructive/25":"bg-surface-2 text-muted-foreground hover:bg-surface-elevated hover:text-foreground"}`,title:p("diffViewer.revertHunkTitle"),children:At===Ve?p("diffViewer.hunkActionApplying"):Fr&&Cn?.mode==="revert-worktree"?p("diffViewer.hunkActionReverted"):p(jn===Ve?"diffViewer.revertHunkConfirm":"diffViewer.revertHunk")}),h.jsx("span",{className:"min-w-0 flex-1 truncate",children:K.content}),Tt.length>0&&h.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:Tt.map(Y=>`-${Y.oldLineNumber} -> +${Y.newLineNumber}`).join(", "),children:["moved ",Tt.length]})]}),Pt&&h.jsx("div",{className:"mt-1 truncate text-[10px] text-destructive",title:Pt,children:p("diffViewer.hunkActionFailed",{message:Pt})}),(Pe.current||Pe.stale)&&(()=>{const Y=Pe.current??Pe.stale,q=Tc(Y?.injectedAt,O);return h.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"} ${Pe.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:[h.jsxs("div",{className:"mb-0.5 flex min-w-0 items-center gap-1.5",children:[h.jsx("span",{className:"font-semibold text-foreground",children:Pe.current?p("diffViewer.auditExplanation"):p("diffViewer.auditStale")}),h.jsx("span",{className:"font-mono text-[10px] text-muted-foreground",children:Pe.fingerprint}),q&&h.jsx("span",{className:"truncate text-[10px] text-muted-foreground/70",children:p("diffViewer.auditGeneratedAt",{time:q})}),E&&h.jsx("button",{type:"button",onClick:()=>Y&&E(Y.id),className:"ml-auto shrink-0 rounded p-0.5 text-muted-foreground/60 transition hover:bg-surface-2 hover:text-foreground",title:p("diffViewer.auditClear"),children:h.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:[h.jsx("path",{d:"M18 6 6 18"}),h.jsx("path",{d:"m6 6 12 12"})]})})]}),h.jsx("div",{className:"termdock-diff-audit-explanation min-w-0",children:Pe.current?.explanation??Pe.stale?.explanation})]})})()]}),Hr("before"),h.jsx(hl,{viewType:le,diffType:v.type,hunks:[xi],tokens:gi.get(D),generateLineClassName:Ei,widgets:Ai,codeEvents:Dr,gutterEvents:Dr,children:Y=>Y.map(q=>h.jsx(Ks,{hunk:q},q.content))}),Hr("after")]},K.content)}),R&&h.jsx("div",{className:"diff-decoration bg-surface-2 px-3 py-1.5 text-[10px] text-muted-foreground",children:p("diffViewer.noFinalNewline")})]})}),se&&Ar!==null&&o&&h.jsxs("button",{type:"button",onClick:()=>o(`${Q.name} ${se.lineLabel}`,se.text,se.referenceKey),...Ee(se.text,se.referenceKey),style:{top:Ar},className:`${gl(Er,Lr||Rr)} right-2`,title:p("diffViewer.insertLineDiff"),children:[h.jsx(Bi,{size:Er?13:11}),Rr?p("rightSidebar.copied"):Lr?p("rightSidebar.inserted"):p("rightSidebar.insertLineRef",{lineLabel:se.lineLabel})]})]},D)})})};if(Mt)return g?h.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:[h.jsx(zr,{size:18,className:"animate-spin"}),h.jsx("span",{children:p("diffViewer.loading")})]}):h.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:[h.jsx(zr,{size:20,className:"animate-spin"}),h.jsx("span",{children:p("diffViewer.loading")})]});if(kn)return g?h.jsx("div",{className:"bg-destructive/5 px-3 py-3 text-xs text-destructive",children:kn}):h.jsx("div",{className:"mx-3 mt-3 border border-destructive/20 bg-destructive/5 px-4 py-4 text-sm text-destructive",children:kn});if(Sn&&!fe)return g?h.jsx("div",{className:"bg-[rgb(var(--warning-rgb)_/_0.12)] px-3 py-3 text-xs text-[color:var(--warning)]",children:Sn}):h.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:Sn});if(ke){const N=h.jsxs("div",{className:"bg-surface p-3",children:[h.jsxs("div",{className:"mb-2 flex flex-wrap items-center gap-2 text-[10px] text-muted-foreground",children:[h.jsx("span",{children:p("rightSidebar.imagePreviewHint")}),ke.size!==null&&h.jsxs("span",{children:[ke.size.toLocaleString()," bytes"]}),h.jsx("span",{children:ke.mimeType}),ke.dimensions&&h.jsxs("span",{children:[ke.dimensions.width," × ",ke.dimensions.height]})]}),h.jsx("div",{className:"flex min-h-64 items-center justify-center",children:h.jsx("img",{src:ke.objectUrl,alt:$e.name,className:"max-h-[70vh] max-w-full rounded border border-border/15 bg-surface object-contain shadow-sm",onLoad:x=>{const v=x.currentTarget;pn(C=>C&&{...C,dimensions:{width:v.naturalWidth,height:v.naturalHeight}})},onError:()=>ve(p("rightSidebar.imageLoadFailed"))})})]});return g?h.jsxs("div",{className:"termdock-native-select overflow-hidden bg-surface",children:[Ee.popoverNode,N]}):h.jsxs("div",{className:"termdock-diff px-3 py-2",children:[Ee.popoverNode,h.jsxs("div",{className:"border-b border-border/15 px-1 pb-2",children:[h.jsx("div",{className:"truncate text-sm font-medium text-foreground",title:e??void 0,children:$e.name}),h.jsx("div",{className:"mt-0.5 flex min-w-0 items-center gap-2 text-[11px] text-muted-foreground",children:$e.dir&&h.jsx("span",{className:"min-w-0 truncate",children:$e.dir})})]}),h.jsx("div",{className:"mt-3 overflow-hidden border border-border/20 bg-surface",children:N})]})}const Tr=Sn?h.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:Sn}):null;if(I.length===0)return g?h.jsxs("div",{className:"bg-surface-2 px-3 py-5 text-center text-xs text-muted-foreground",children:[h.jsx(Lt,{size:20,className:"mx-auto mb-2 text-muted-foreground/80"}),p(e?"diffViewer.noFileChanges":"diffViewer.noUnstagedChanges")]}):h.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:[h.jsx(Lt,{size:24,className:"mx-auto mb-2 text-muted-foreground/80"}),p(e?"diffViewer.noFileChanges":"diffViewer.noUnstagedChanges")]});if(g)return h.jsxs("div",{ref:yn,onMouseEnter:()=>{_n.current=!0},onMouseLeave:()=>{_n.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":le,"data-diff-inline-mode":A,children:[Ee.popoverNode,Tr,Pr(!0)]});const pi=c===Ze||u===Ze;return h.jsxs("div",{ref:yn,onMouseEnter:()=>{_n.current=!0},onMouseLeave:()=>{_n.current=!1},className:"termdock-diff termdock-native-select px-3 py-2","data-diff-viewer":!0,"data-diff-view-type":le,"data-diff-inline-mode":A,children:[Ee.popoverNode,h.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:h.jsxs("div",{className:"flex items-start justify-between gap-2",children:[h.jsxs("div",{className:"min-w-0",children:[h.jsx("div",{className:"truncate text-sm font-medium text-foreground",title:e??void 0,children:$e.name}),h.jsxs("div",{className:"mt-0.5 flex min-w-0 items-center gap-2 text-[11px] text-muted-foreground",children:[$e.dir&&h.jsx("span",{className:"min-w-0 truncate",children:$e.dir}),h.jsxs("span",{children:[I.length," file",I.length>1?"s":""]}),h.jsxs("span",{className:"text-[color:var(--diff-insert-strong)]",children:["+",Jn.additions]}),h.jsxs("span",{className:"text-[color:var(--diff-delete-strong)]",children:["-",Jn.deletions]})]})]}),h.jsxs("div",{className:"flex shrink-0 items-center gap-1.5",children:[h.jsxs("div",{className:"inline-flex h-7 shrink-0 items-center rounded-full bg-surface-2 p-0.5",children:[h.jsx("button",{type:"button",onClick:()=>Un(-1),disabled:xr<2,"aria-label":p("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:`${p("diffViewer.prevHunk")} (Shift+F7)`,children:h.jsx(Vr,{size:13})}),h.jsx("button",{type:"button",onClick:()=>Un(1),disabled:xr<2,"aria-label":p("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:`${p("diffViewer.nextHunk")} (F7)`,children:h.jsx(Gr,{size:13})})]}),h.jsxs("select",{value:si,disabled:vr,onChange:N=>oi(N.target.value),"aria-label":p("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:p("diffViewer.whitespace"),children:[h.jsx("option",{value:"default",children:p("diffViewer.whitespaceDefault")}),h.jsx("option",{value:"trim",children:p("diffViewer.whitespaceTrim")}),h.jsx("option",{value:"ignore",children:p("diffViewer.whitespaceIgnore")}),h.jsx("option",{value:"ignore-blank-lines",children:p("diffViewer.whitespaceIgnoreBlankLines")})]}),h.jsxs("select",{value:String(ii),disabled:vr,onChange:N=>ai(N.target.value==="all"?"all":Number(N.target.value)),"aria-label":p("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:p("diffViewer.context"),children:[[3,10,25].map(N=>h.jsx("option",{value:String(N),children:p("diffViewer.contextLines",{count:N})},N)),h.jsx("option",{value:"all",children:p("diffViewer.contextAll")})]}),h.jsxs("div",{className:"inline-flex h-7 shrink-0 overflow-hidden rounded-full bg-surface-2 p-0.5","aria-label":p("diffViewer.view"),children:[h.jsx("button",{type:"button",onClick:()=>mr("unified"),"aria-pressed":le==="unified",className:`inline-flex h-6 items-center rounded-full px-2 text-[10px] font-semibold transition active:scale-95 ${le==="unified"?"bg-surface-elevated text-foreground shadow-sm":"text-muted-foreground hover:text-foreground"}`,title:p("diffViewer.unifiedMode"),children:p("diffViewer.unified")}),h.jsx("button",{type:"button",onClick:()=>mr("split"),disabled:!ye,"aria-pressed":le==="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 ${le==="split"?"bg-surface-elevated text-foreground shadow-sm":"text-muted-foreground hover:text-foreground"}`,title:p(ye?"diffViewer.splitMode":"diffViewer.unifiedMode"),children:p("diffViewer.split")})]}),o&&h.jsx("button",{type:"button",onClick:vi,...Ee(Zn,Ze),className:`inline-flex h-8 shrink-0 items-center rounded-full px-3 text-[11px] font-semibold transition active:scale-95 ${pi?"bg-surface-elevated text-foreground":"bg-primary/15 text-primary hover:bg-primary/25"}`,title:p("diffViewer.insertAllDiff"),children:p(u===Ze?"rightSidebar.copied":c===Ze?"rightSidebar.inserted":"diffViewer.insertAllShort")})]})]})}),Tr,Pr(!1)]})}export{Wc as D,qs as S,gl as a,Vc as b,Lc as c,Hc as g,ml as h,Gc as i,zc as l,Ft as r,Bc as s,nc as u};