termdock 1.4.281 → 1.4.282

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 (336) hide show
  1. package/dist/client/assets/App-KjvxjYWp.js +157 -0
  2. package/dist/client/assets/App-KjvxjYWp.js.br +0 -0
  3. package/dist/client/assets/App-KjvxjYWp.js.gz +0 -0
  4. package/dist/client/assets/{ChangeWalkthroughPanel-CpJIxJoa.js → ChangeWalkthroughPanel-D0dLmuqS.js} +1 -1
  5. package/dist/client/assets/ChangeWalkthroughPanel-D0dLmuqS.js.br +0 -0
  6. package/dist/client/assets/ChangeWalkthroughPanel-D0dLmuqS.js.gz +0 -0
  7. package/dist/client/assets/{DagPlayground-DsZ_TzMA.js → DagPlayground-BnxrVoa1.js} +1 -1
  8. package/dist/client/assets/DagPlayground-BnxrVoa1.js.br +0 -0
  9. package/dist/client/assets/DagPlayground-BnxrVoa1.js.gz +0 -0
  10. package/dist/client/assets/{DiffLab-DVzd5Djx.js → DiffLab-CEJHH47s.js} +1 -1
  11. package/dist/client/assets/DiffLab-CEJHH47s.js.br +0 -0
  12. package/dist/client/assets/DiffLab-CEJHH47s.js.gz +0 -0
  13. package/dist/client/assets/{DiffReview-5MLGwl3s.js → DiffReview-B4MgHev_.js} +1 -1
  14. package/dist/client/assets/DiffReview-B4MgHev_.js.br +0 -0
  15. package/dist/client/assets/DiffReview-B4MgHev_.js.gz +0 -0
  16. package/dist/client/assets/{DiffReviewLab-B53N-9cX.js → DiffReviewLab-CwxhCK9D.js} +1 -1
  17. package/dist/client/assets/DiffReviewLab-CwxhCK9D.js.br +0 -0
  18. package/dist/client/assets/DiffReviewLab-CwxhCK9D.js.gz +0 -0
  19. package/dist/client/assets/{DiffViewer-PrcRXQq0.js → DiffViewer-B5Fj1S7h.js} +2 -2
  20. package/dist/client/assets/DiffViewer-B5Fj1S7h.js.br +0 -0
  21. package/dist/client/assets/DiffViewer-B5Fj1S7h.js.gz +0 -0
  22. package/dist/client/assets/{ModelPreview-C98dbuUF.js → ModelPreview-BgzcGTC4.js} +161 -161
  23. package/dist/client/assets/ModelPreview-BgzcGTC4.js.br +0 -0
  24. package/dist/client/assets/ModelPreview-BgzcGTC4.js.gz +0 -0
  25. package/dist/client/assets/{RightSidebar-B52JGGs9.js → RightSidebar-BZfXFW1d.js} +39 -39
  26. package/dist/client/assets/RightSidebar-BZfXFW1d.js.br +0 -0
  27. package/dist/client/assets/RightSidebar-BZfXFW1d.js.gz +0 -0
  28. package/dist/client/assets/{abnfDiagram-VCTEODGH-B5gA9_Ty.js → abnfDiagram-VCTEODGH-DrqWxUpF.js} +1 -1
  29. package/dist/client/assets/abnfDiagram-VCTEODGH-DrqWxUpF.js.br +0 -0
  30. package/dist/client/assets/abnfDiagram-VCTEODGH-DrqWxUpF.js.gz +0 -0
  31. package/dist/client/assets/app-Cx1S0NEn.js +35 -0
  32. package/dist/client/assets/app-Cx1S0NEn.js.br +0 -0
  33. package/dist/client/assets/app-Cx1S0NEn.js.gz +0 -0
  34. package/dist/client/assets/{arc-Bq6Y_399.js → arc-D-c2BO48.js} +1 -1
  35. package/dist/client/assets/arc-D-c2BO48.js.br +0 -0
  36. package/dist/client/assets/arc-D-c2BO48.js.gz +0 -0
  37. package/dist/client/assets/{architectureDiagram-5GKGNRK7-D7bXmRrP.js → architectureDiagram-5GKGNRK7-Dw3s7taT.js} +1 -1
  38. package/dist/client/assets/architectureDiagram-5GKGNRK7-Dw3s7taT.js.br +0 -0
  39. package/dist/client/assets/architectureDiagram-5GKGNRK7-Dw3s7taT.js.gz +0 -0
  40. package/dist/client/assets/{blockDiagram-I7D4REHJ-vmiTllrb.js → blockDiagram-I7D4REHJ-BJb1cd3h.js} +1 -1
  41. package/dist/client/assets/blockDiagram-I7D4REHJ-BJb1cd3h.js.br +0 -0
  42. package/dist/client/assets/blockDiagram-I7D4REHJ-BJb1cd3h.js.gz +0 -0
  43. package/dist/client/assets/{c4Diagram-7LVT6UL2-C6ThUVSU.js → c4Diagram-7LVT6UL2-BeS1pCi3.js} +1 -1
  44. package/dist/client/assets/{c4Diagram-7LVT6UL2-C6ThUVSU.js.br → c4Diagram-7LVT6UL2-BeS1pCi3.js.br} +0 -0
  45. package/dist/client/assets/c4Diagram-7LVT6UL2-BeS1pCi3.js.gz +0 -0
  46. package/dist/client/assets/channel-DhhM4ZRP.js +1 -0
  47. package/dist/client/assets/{chunk-2Q5K7J3B-DR-yB9IL.js → chunk-2Q5K7J3B-Bbs_OKMp.js} +1 -1
  48. package/dist/client/assets/{chunk-5VM5RSS4-B1nK9YvE.js → chunk-5VM5RSS4-Cb5qWSQ9.js} +1 -1
  49. package/dist/client/assets/{chunk-F27PBJKO-C7W0s-qY.js → chunk-F27PBJKO-DuSEgqou.js} +1 -1
  50. package/dist/client/assets/chunk-F27PBJKO-DuSEgqou.js.br +0 -0
  51. package/dist/client/assets/chunk-F27PBJKO-DuSEgqou.js.gz +0 -0
  52. package/dist/client/assets/{chunk-IMKFNOWR-CTjPfIKT.js → chunk-IMKFNOWR-DJ_KSg28.js} +1 -1
  53. package/dist/client/assets/chunk-IMKFNOWR-DJ_KSg28.js.br +0 -0
  54. package/dist/client/assets/chunk-IMKFNOWR-DJ_KSg28.js.gz +0 -0
  55. package/dist/client/assets/{chunk-JWPE2WC7-DdFiULME.js → chunk-JWPE2WC7-G6gJR-qb.js} +1 -1
  56. package/dist/client/assets/{chunk-POPQ4Y6H-7D3Xkf9O.js → chunk-POPQ4Y6H-4nUthGI-.js} +1 -1
  57. package/dist/client/assets/{chunk-SVP7TREG-CCuDpBKr.js → chunk-SVP7TREG-Bjz61A31.js} +1 -1
  58. package/dist/client/assets/chunk-SVP7TREG-Bjz61A31.js.br +0 -0
  59. package/dist/client/assets/chunk-SVP7TREG-Bjz61A31.js.gz +0 -0
  60. package/dist/client/assets/{chunk-TICWLB2K-DtYX2TNH.js → chunk-TICWLB2K-DibS9hjO.js} +1 -1
  61. package/dist/client/assets/chunk-TICWLB2K-DibS9hjO.js.br +0 -0
  62. package/dist/client/assets/chunk-TICWLB2K-DibS9hjO.js.gz +0 -0
  63. package/dist/client/assets/{chunk-XXDRQBXY-DhzCdSBY.js → chunk-XXDRQBXY-Pd9xo63D.js} +1 -1
  64. package/dist/client/assets/classDiagram-ZZMXUADV-CNhLKXhv.js +1 -0
  65. package/dist/client/assets/classDiagram-v2-VYDZK3BY-CNhLKXhv.js +1 -0
  66. package/dist/client/assets/{cose-bilkent-JH36ORCC-CyoiG3NB.js → cose-bilkent-JH36ORCC-C9juqAQ3.js} +1 -1
  67. package/dist/client/assets/cose-bilkent-JH36ORCC-C9juqAQ3.js.br +0 -0
  68. package/dist/client/assets/cose-bilkent-JH36ORCC-C9juqAQ3.js.gz +0 -0
  69. package/dist/client/assets/{cynefin-OW5HDTMX-SeWSNPvK.js → cynefin-OW5HDTMX-DVk5dNlQ.js} +1 -1
  70. package/dist/client/assets/cynefin-OW5HDTMX-DVk5dNlQ.js.br +0 -0
  71. package/dist/client/assets/cynefin-OW5HDTMX-DVk5dNlQ.js.gz +0 -0
  72. package/dist/client/assets/{cynefinDiagram-5FMLGOSQ-C6Z9w461.js → cynefinDiagram-5FMLGOSQ-CUy-CI0N.js} +1 -1
  73. package/dist/client/assets/cynefinDiagram-5FMLGOSQ-CUy-CI0N.js.br +0 -0
  74. package/dist/client/assets/cynefinDiagram-5FMLGOSQ-CUy-CI0N.js.gz +0 -0
  75. package/dist/client/assets/{dagre-GXQ25YYZ-DgQ7oSI3.js → dagre-GXQ25YYZ-BF9uZc8K.js} +1 -1
  76. package/dist/client/assets/dagre-GXQ25YYZ-BF9uZc8K.js.br +0 -0
  77. package/dist/client/assets/dagre-GXQ25YYZ-BF9uZc8K.js.gz +0 -0
  78. package/dist/client/assets/{diagram-S7CK7UJ4-BrFJNnZh.js → diagram-S7CK7UJ4-CaYJASCw.js} +1 -1
  79. package/dist/client/assets/diagram-S7CK7UJ4-CaYJASCw.js.br +0 -0
  80. package/dist/client/assets/diagram-S7CK7UJ4-CaYJASCw.js.gz +0 -0
  81. package/dist/client/assets/{diagram-UQ7AKVKN-DW2EFMOu.js → diagram-UQ7AKVKN-0-M4q-QN.js} +1 -1
  82. package/dist/client/assets/diagram-UQ7AKVKN-0-M4q-QN.js.br +0 -0
  83. package/dist/client/assets/diagram-UQ7AKVKN-0-M4q-QN.js.gz +0 -0
  84. package/dist/client/assets/{diagram-VSXAHHWV-C5lTJcKk.js → diagram-VSXAHHWV-4ggjBQOj.js} +1 -1
  85. package/dist/client/assets/diagram-VSXAHHWV-4ggjBQOj.js.br +0 -0
  86. package/dist/client/assets/diagram-VSXAHHWV-4ggjBQOj.js.gz +0 -0
  87. package/dist/client/assets/{diagram-VX7I27RA-CObqcJqB.js → diagram-VX7I27RA-awKrOIYn.js} +1 -1
  88. package/dist/client/assets/diagram-VX7I27RA-awKrOIYn.js.br +0 -0
  89. package/dist/client/assets/diagram-VX7I27RA-awKrOIYn.js.gz +0 -0
  90. package/dist/client/assets/{diagram-Z3DM3KII-br3lGnhW.js → diagram-Z3DM3KII-CvmtkYW3.js} +1 -1
  91. package/dist/client/assets/diagram-Z3DM3KII-CvmtkYW3.js.br +0 -0
  92. package/dist/client/assets/diagram-Z3DM3KII-CvmtkYW3.js.gz +0 -0
  93. package/dist/client/assets/{ebnfDiagram-PWID7BFC-CkXxS9Pq.js → ebnfDiagram-PWID7BFC-ZS9U0Fk-.js} +1 -1
  94. package/dist/client/assets/ebnfDiagram-PWID7BFC-ZS9U0Fk-.js.br +0 -0
  95. package/dist/client/assets/ebnfDiagram-PWID7BFC-ZS9U0Fk-.js.gz +0 -0
  96. package/dist/client/assets/{erDiagram-RLTQ6QDP-CMBJEKp-.js → erDiagram-RLTQ6QDP-CcWwxLbE.js} +1 -1
  97. package/dist/client/assets/erDiagram-RLTQ6QDP-CcWwxLbE.js.br +0 -0
  98. package/dist/client/assets/erDiagram-RLTQ6QDP-CcWwxLbE.js.gz +0 -0
  99. package/dist/client/assets/{flowDiagram-HODETNUW-CuO0cLki.js → flowDiagram-HODETNUW-BvYM0Nn3.js} +1 -1
  100. package/dist/client/assets/flowDiagram-HODETNUW-BvYM0Nn3.js.br +0 -0
  101. package/dist/client/assets/flowDiagram-HODETNUW-BvYM0Nn3.js.gz +0 -0
  102. package/dist/client/assets/{ganttDiagram-EL5Y4UJY-BIt0Y40Q.js → ganttDiagram-EL5Y4UJY-DEr4hj6W.js} +1 -1
  103. package/dist/client/assets/ganttDiagram-EL5Y4UJY-DEr4hj6W.js.br +0 -0
  104. package/dist/client/assets/{ganttDiagram-EL5Y4UJY-BIt0Y40Q.js.gz → ganttDiagram-EL5Y4UJY-DEr4hj6W.js.gz} +0 -0
  105. package/dist/client/assets/{gestureArbiter--6cZMOnD.js → gestureArbiter-CDxeAcBI.js} +1 -1
  106. package/dist/client/assets/gestureArbiter-CDxeAcBI.js.br +0 -0
  107. package/dist/client/assets/gestureArbiter-CDxeAcBI.js.gz +0 -0
  108. package/dist/client/assets/{gitGraphDiagram-WWUBYQGX-C1ljbYw7.js → gitGraphDiagram-WWUBYQGX-DJXcqbTp.js} +1 -1
  109. package/dist/client/assets/gitGraphDiagram-WWUBYQGX-DJXcqbTp.js.br +0 -0
  110. package/dist/client/assets/gitGraphDiagram-WWUBYQGX-DJXcqbTp.js.gz +0 -0
  111. package/dist/client/assets/imageCompression-DaUBNTq-.js +1 -0
  112. package/dist/client/assets/index-607UPNXL.js +1 -0
  113. package/dist/client/assets/index-607UPNXL.js.br +0 -0
  114. package/dist/client/assets/index-607UPNXL.js.gz +0 -0
  115. package/dist/client/assets/index-CUxsIblL.js +1 -0
  116. package/dist/client/assets/index-CUxsIblL.js.br +0 -0
  117. package/dist/client/assets/index-CUxsIblL.js.gz +0 -0
  118. package/dist/client/assets/{index-DeTcW7aT.css → index-IknuJMxJ.css} +1 -1
  119. package/dist/client/assets/index-IknuJMxJ.css.br +0 -0
  120. package/dist/client/assets/index-IknuJMxJ.css.gz +0 -0
  121. package/dist/client/assets/{infoDiagram-27XIBGKW-CrOPvG9H.js → infoDiagram-27XIBGKW-u_tuWUg-.js} +1 -1
  122. package/dist/client/assets/{ishikawaDiagram-5VMMS53U-Ch5ze9LB.js → ishikawaDiagram-5VMMS53U-BFYZSOqo.js} +1 -1
  123. package/dist/client/assets/ishikawaDiagram-5VMMS53U-BFYZSOqo.js.br +0 -0
  124. package/dist/client/assets/ishikawaDiagram-5VMMS53U-BFYZSOqo.js.gz +0 -0
  125. package/dist/client/assets/{journeyDiagram-3NMN7TZE-C3vqa0wB.js → journeyDiagram-3NMN7TZE-BCCDGuPm.js} +1 -1
  126. package/dist/client/assets/journeyDiagram-3NMN7TZE-BCCDGuPm.js.br +0 -0
  127. package/dist/client/assets/journeyDiagram-3NMN7TZE-BCCDGuPm.js.gz +0 -0
  128. package/dist/client/assets/{kanban-definition-UXKFOSKX-rEL2pKx0.js → kanban-definition-UXKFOSKX-BL414bhZ.js} +1 -1
  129. package/dist/client/assets/kanban-definition-UXKFOSKX-BL414bhZ.js.br +0 -0
  130. package/dist/client/assets/kanban-definition-UXKFOSKX-BL414bhZ.js.gz +0 -0
  131. package/dist/client/assets/{layout-CeDdQRYz.js → layout-BLj6qqUe.js} +1 -1
  132. package/dist/client/assets/layout-BLj6qqUe.js.br +0 -0
  133. package/dist/client/assets/layout-BLj6qqUe.js.gz +0 -0
  134. package/dist/client/assets/{linear-C9xkTlXu.js → linear-9XUUJjvf.js} +1 -1
  135. package/dist/client/assets/linear-9XUUJjvf.js.br +0 -0
  136. package/dist/client/assets/linear-9XUUJjvf.js.gz +0 -0
  137. package/dist/client/assets/{mermaid.core-CIW1IDpX.js → mermaid.core-BMjyQhe0.js} +5 -5
  138. package/dist/client/assets/mermaid.core-BMjyQhe0.js.br +0 -0
  139. package/dist/client/assets/mermaid.core-BMjyQhe0.js.gz +0 -0
  140. package/dist/client/assets/{mindmap-definition-YA3MSWOX-CT9M_dpw.js → mindmap-definition-YA3MSWOX-B5hQdEJ0.js} +1 -1
  141. package/dist/client/assets/mindmap-definition-YA3MSWOX-B5hQdEJ0.js.br +0 -0
  142. package/dist/client/assets/mindmap-definition-YA3MSWOX-B5hQdEJ0.js.gz +0 -0
  143. package/dist/client/assets/{passwordBootstrap-B8awl9Cz.js → passwordBootstrap-D7lxBxbp.js} +1 -1
  144. package/dist/client/assets/passwordBootstrap-D7lxBxbp.js.br +0 -0
  145. package/dist/client/assets/passwordBootstrap-D7lxBxbp.js.gz +0 -0
  146. package/dist/client/assets/{pegDiagram-XKGWAZYB-BkaUHxk6.js → pegDiagram-XKGWAZYB-CJQClA-K.js} +1 -1
  147. package/dist/client/assets/pegDiagram-XKGWAZYB-CJQClA-K.js.br +0 -0
  148. package/dist/client/assets/pegDiagram-XKGWAZYB-CJQClA-K.js.gz +0 -0
  149. package/dist/client/assets/{pieDiagram-E7YTZNPT-Di_VEsZA.js → pieDiagram-E7YTZNPT-D2ARaSkf.js} +1 -1
  150. package/dist/client/assets/pieDiagram-E7YTZNPT-D2ARaSkf.js.br +0 -0
  151. package/dist/client/assets/pieDiagram-E7YTZNPT-D2ARaSkf.js.gz +0 -0
  152. package/dist/client/assets/{quadrantDiagram-AXDQQJYC-B--Y1EgY.js → quadrantDiagram-AXDQQJYC-B2Rs8gQh.js} +1 -1
  153. package/dist/client/assets/{quadrantDiagram-AXDQQJYC-B--Y1EgY.js.br → quadrantDiagram-AXDQQJYC-B2Rs8gQh.js.br} +0 -0
  154. package/dist/client/assets/quadrantDiagram-AXDQQJYC-B2Rs8gQh.js.gz +0 -0
  155. package/dist/client/assets/{railroadDiagram-O6MQD6OU-CTTF__yz.js → railroadDiagram-O6MQD6OU-7zaEGVqP.js} +1 -1
  156. package/dist/client/assets/railroadDiagram-O6MQD6OU-7zaEGVqP.js.br +0 -0
  157. package/dist/client/assets/railroadDiagram-O6MQD6OU-7zaEGVqP.js.gz +0 -0
  158. package/dist/client/assets/{referenceLongPress-jOxtSE5l.js → referenceLongPress-1MdQQqBu.js} +1 -1
  159. package/dist/client/assets/referenceLongPress-1MdQQqBu.js.br +0 -0
  160. package/dist/client/assets/referenceLongPress-1MdQQqBu.js.gz +0 -0
  161. package/dist/client/assets/{requirementDiagram-BXWQKSXE-DI0C2RWw.js → requirementDiagram-BXWQKSXE-B7YLqxNi.js} +1 -1
  162. package/dist/client/assets/requirementDiagram-BXWQKSXE-B7YLqxNi.js.br +0 -0
  163. package/dist/client/assets/requirementDiagram-BXWQKSXE-B7YLqxNi.js.gz +0 -0
  164. package/dist/client/assets/{sankeyDiagram-P5KCCOFB-W5HRSQpx.js → sankeyDiagram-P5KCCOFB-BQqZ501N.js} +1 -1
  165. package/dist/client/assets/sankeyDiagram-P5KCCOFB-BQqZ501N.js.br +0 -0
  166. package/dist/client/assets/sankeyDiagram-P5KCCOFB-BQqZ501N.js.gz +0 -0
  167. package/dist/client/assets/{sequenceDiagram-WJ2MYXX4-BKkAIBat.js → sequenceDiagram-WJ2MYXX4-CI5zNczi.js} +1 -1
  168. package/dist/client/assets/{sequenceDiagram-WJ2MYXX4-BKkAIBat.js.br → sequenceDiagram-WJ2MYXX4-CI5zNczi.js.br} +0 -0
  169. package/dist/client/assets/sequenceDiagram-WJ2MYXX4-CI5zNczi.js.gz +0 -0
  170. package/dist/client/assets/{sizeCapture-INFHLROL-DXBwqyIS.js → sizeCapture-INFHLROL-_g6rD1KV.js} +1 -1
  171. package/dist/client/assets/sizeCapture-INFHLROL-_g6rD1KV.js.br +0 -0
  172. package/dist/client/assets/sizeCapture-INFHLROL-_g6rD1KV.js.gz +0 -0
  173. package/dist/client/assets/{sparkles-DceTfvKw.js → sparkles-DZP-rTUQ.js} +1 -1
  174. package/dist/client/assets/{stateDiagram-D77RDMKH-BBVi-dyW.js → stateDiagram-D77RDMKH-Cu8lQyFr.js} +1 -1
  175. package/dist/client/assets/stateDiagram-D77RDMKH-Cu8lQyFr.js.br +0 -0
  176. package/dist/client/assets/stateDiagram-D77RDMKH-Cu8lQyFr.js.gz +0 -0
  177. package/dist/client/assets/stateDiagram-v2-MP3YSRHH-CieARAQ3.js +1 -0
  178. package/dist/client/assets/{swimlanes-42K2YHIH-DwJjgXte.js → swimlanes-42K2YHIH-DyoG1kjH.js} +1 -1
  179. package/dist/client/assets/swimlanes-42K2YHIH-DyoG1kjH.js.br +0 -0
  180. package/dist/client/assets/swimlanes-42K2YHIH-DyoG1kjH.js.gz +0 -0
  181. package/dist/client/assets/swimlanesDiagram-VR7AAH4N-D9qBVMDu.js +8 -0
  182. package/dist/client/assets/{timeline-definition-24CTP7MA-COX39iJ6.js → timeline-definition-24CTP7MA-MgVnEDIt.js} +1 -1
  183. package/dist/client/assets/timeline-definition-24CTP7MA-MgVnEDIt.js.br +0 -0
  184. package/dist/client/assets/timeline-definition-24CTP7MA-MgVnEDIt.js.gz +0 -0
  185. package/dist/client/assets/{triangle-alert-DjtUXw4T.js → triangle-alert-6HTQse_h.js} +1 -1
  186. package/dist/client/assets/{vennDiagram-4TSXK5OY-46HA9L0l.js → vennDiagram-4TSXK5OY-DIA3-8fT.js} +1 -1
  187. package/dist/client/assets/vennDiagram-4TSXK5OY-DIA3-8fT.js.br +0 -0
  188. package/dist/client/assets/vennDiagram-4TSXK5OY-DIA3-8fT.js.gz +0 -0
  189. package/dist/client/assets/videoCompression-BiLlPFCU.js +3 -0
  190. package/dist/client/assets/videoCompression-BiLlPFCU.js.br +0 -0
  191. package/dist/client/assets/videoCompression-BiLlPFCU.js.gz +0 -0
  192. package/dist/client/assets/{wardleyDiagram-VM6X3IG4-DfkGMObP.js → wardleyDiagram-VM6X3IG4-BrgRWH1G.js} +1 -1
  193. package/dist/client/assets/wardleyDiagram-VM6X3IG4-BrgRWH1G.js.br +0 -0
  194. package/dist/client/assets/wardleyDiagram-VM6X3IG4-BrgRWH1G.js.gz +0 -0
  195. package/dist/client/assets/worker-BAOIWoxA.js +1 -0
  196. package/dist/client/assets/worker-BAOIWoxA.js.br +0 -0
  197. package/dist/client/assets/worker-BAOIWoxA.js.gz +0 -0
  198. package/dist/client/assets/{xychartDiagram-S5SC5T6Z-vlKat3e7.js → xychartDiagram-S5SC5T6Z-DbVR2OUc.js} +1 -1
  199. package/dist/client/assets/xychartDiagram-S5SC5T6Z-DbVR2OUc.js.br +0 -0
  200. package/dist/client/assets/xychartDiagram-S5SC5T6Z-DbVR2OUc.js.gz +0 -0
  201. package/dist/client/index.html +44 -4
  202. package/dist/client/index.html.br +0 -0
  203. package/dist/client/index.html.gz +0 -0
  204. package/dist/client/licenses/loading-dev.txt +21 -0
  205. package/dist/client/licenses/loading-dev.txt.br +0 -0
  206. package/dist/client/licenses/loading-dev.txt.gz +0 -0
  207. package/dist/client/sw-encrypted-background.js +1 -1
  208. package/dist/client/sw-encrypted-background.js.br +0 -0
  209. package/dist/client/sw-encrypted-background.js.gz +0 -0
  210. package/dist/client/sw.js +1 -1
  211. package/dist/client/sw.js.br +0 -0
  212. package/dist/client/sw.js.gz +0 -0
  213. package/dist/server/entry.js +38 -1
  214. package/dist/server/routes/terminal.js +2 -1
  215. package/dist/server/utils/runtimeClient.js +34 -0
  216. package/package.json +4 -1
  217. package/runtime-manifest.json +4 -4
  218. package/dist/client/assets/App-VGKzpPWO.js +0 -156
  219. package/dist/client/assets/App-VGKzpPWO.js.br +0 -0
  220. package/dist/client/assets/App-VGKzpPWO.js.gz +0 -0
  221. package/dist/client/assets/ChangeWalkthroughPanel-CpJIxJoa.js.br +0 -0
  222. package/dist/client/assets/ChangeWalkthroughPanel-CpJIxJoa.js.gz +0 -0
  223. package/dist/client/assets/DagPlayground-DsZ_TzMA.js.br +0 -0
  224. package/dist/client/assets/DagPlayground-DsZ_TzMA.js.gz +0 -0
  225. package/dist/client/assets/DiffLab-DVzd5Djx.js.br +0 -0
  226. package/dist/client/assets/DiffLab-DVzd5Djx.js.gz +0 -0
  227. package/dist/client/assets/DiffReview-5MLGwl3s.js.br +0 -0
  228. package/dist/client/assets/DiffReview-5MLGwl3s.js.gz +0 -0
  229. package/dist/client/assets/DiffReviewLab-B53N-9cX.js.br +0 -0
  230. package/dist/client/assets/DiffReviewLab-B53N-9cX.js.gz +0 -0
  231. package/dist/client/assets/DiffViewer-PrcRXQq0.js.br +0 -0
  232. package/dist/client/assets/DiffViewer-PrcRXQq0.js.gz +0 -0
  233. package/dist/client/assets/ModelPreview-C98dbuUF.js.br +0 -0
  234. package/dist/client/assets/ModelPreview-C98dbuUF.js.gz +0 -0
  235. package/dist/client/assets/RightSidebar-B52JGGs9.js.br +0 -0
  236. package/dist/client/assets/RightSidebar-B52JGGs9.js.gz +0 -0
  237. package/dist/client/assets/abnfDiagram-VCTEODGH-B5gA9_Ty.js.br +0 -0
  238. package/dist/client/assets/abnfDiagram-VCTEODGH-B5gA9_Ty.js.gz +0 -0
  239. package/dist/client/assets/app-DnjpR35Q.js +0 -35
  240. package/dist/client/assets/app-DnjpR35Q.js.br +0 -0
  241. package/dist/client/assets/app-DnjpR35Q.js.gz +0 -0
  242. package/dist/client/assets/arc-Bq6Y_399.js.br +0 -0
  243. package/dist/client/assets/arc-Bq6Y_399.js.gz +0 -0
  244. package/dist/client/assets/architectureDiagram-5GKGNRK7-D7bXmRrP.js.br +0 -0
  245. package/dist/client/assets/architectureDiagram-5GKGNRK7-D7bXmRrP.js.gz +0 -0
  246. package/dist/client/assets/blockDiagram-I7D4REHJ-vmiTllrb.js.br +0 -0
  247. package/dist/client/assets/blockDiagram-I7D4REHJ-vmiTllrb.js.gz +0 -0
  248. package/dist/client/assets/c4Diagram-7LVT6UL2-C6ThUVSU.js.gz +0 -0
  249. package/dist/client/assets/channel-DLM_eD7J.js +0 -1
  250. package/dist/client/assets/chunk-F27PBJKO-C7W0s-qY.js.br +0 -0
  251. package/dist/client/assets/chunk-F27PBJKO-C7W0s-qY.js.gz +0 -0
  252. package/dist/client/assets/chunk-IMKFNOWR-CTjPfIKT.js.br +0 -0
  253. package/dist/client/assets/chunk-IMKFNOWR-CTjPfIKT.js.gz +0 -0
  254. package/dist/client/assets/chunk-SVP7TREG-CCuDpBKr.js.br +0 -0
  255. package/dist/client/assets/chunk-SVP7TREG-CCuDpBKr.js.gz +0 -0
  256. package/dist/client/assets/chunk-TICWLB2K-DtYX2TNH.js.br +0 -0
  257. package/dist/client/assets/chunk-TICWLB2K-DtYX2TNH.js.gz +0 -0
  258. package/dist/client/assets/classDiagram-ZZMXUADV-C1zXUzCS.js +0 -1
  259. package/dist/client/assets/classDiagram-v2-VYDZK3BY-C1zXUzCS.js +0 -1
  260. package/dist/client/assets/cose-bilkent-JH36ORCC-CyoiG3NB.js.br +0 -0
  261. package/dist/client/assets/cose-bilkent-JH36ORCC-CyoiG3NB.js.gz +0 -0
  262. package/dist/client/assets/cynefin-OW5HDTMX-SeWSNPvK.js.br +0 -0
  263. package/dist/client/assets/cynefin-OW5HDTMX-SeWSNPvK.js.gz +0 -0
  264. package/dist/client/assets/cynefinDiagram-5FMLGOSQ-C6Z9w461.js.br +0 -0
  265. package/dist/client/assets/cynefinDiagram-5FMLGOSQ-C6Z9w461.js.gz +0 -0
  266. package/dist/client/assets/dagre-GXQ25YYZ-DgQ7oSI3.js.br +0 -0
  267. package/dist/client/assets/dagre-GXQ25YYZ-DgQ7oSI3.js.gz +0 -0
  268. package/dist/client/assets/diagram-S7CK7UJ4-BrFJNnZh.js.br +0 -0
  269. package/dist/client/assets/diagram-S7CK7UJ4-BrFJNnZh.js.gz +0 -0
  270. package/dist/client/assets/diagram-UQ7AKVKN-DW2EFMOu.js.br +0 -0
  271. package/dist/client/assets/diagram-UQ7AKVKN-DW2EFMOu.js.gz +0 -0
  272. package/dist/client/assets/diagram-VSXAHHWV-C5lTJcKk.js.br +0 -0
  273. package/dist/client/assets/diagram-VSXAHHWV-C5lTJcKk.js.gz +0 -0
  274. package/dist/client/assets/diagram-VX7I27RA-CObqcJqB.js.br +0 -0
  275. package/dist/client/assets/diagram-VX7I27RA-CObqcJqB.js.gz +0 -0
  276. package/dist/client/assets/diagram-Z3DM3KII-br3lGnhW.js.br +0 -0
  277. package/dist/client/assets/diagram-Z3DM3KII-br3lGnhW.js.gz +0 -0
  278. package/dist/client/assets/ebnfDiagram-PWID7BFC-CkXxS9Pq.js.br +0 -0
  279. package/dist/client/assets/ebnfDiagram-PWID7BFC-CkXxS9Pq.js.gz +0 -0
  280. package/dist/client/assets/erDiagram-RLTQ6QDP-CMBJEKp-.js.br +0 -0
  281. package/dist/client/assets/erDiagram-RLTQ6QDP-CMBJEKp-.js.gz +0 -0
  282. package/dist/client/assets/flowDiagram-HODETNUW-CuO0cLki.js.br +0 -0
  283. package/dist/client/assets/flowDiagram-HODETNUW-CuO0cLki.js.gz +0 -0
  284. package/dist/client/assets/ganttDiagram-EL5Y4UJY-BIt0Y40Q.js.br +0 -0
  285. package/dist/client/assets/gestureArbiter--6cZMOnD.js.br +0 -0
  286. package/dist/client/assets/gestureArbiter--6cZMOnD.js.gz +0 -0
  287. package/dist/client/assets/gitGraphDiagram-WWUBYQGX-C1ljbYw7.js.br +0 -0
  288. package/dist/client/assets/gitGraphDiagram-WWUBYQGX-C1ljbYw7.js.gz +0 -0
  289. package/dist/client/assets/index-DeTcW7aT.css.br +0 -0
  290. package/dist/client/assets/index-DeTcW7aT.css.gz +0 -0
  291. package/dist/client/assets/ishikawaDiagram-5VMMS53U-Ch5ze9LB.js.br +0 -0
  292. package/dist/client/assets/ishikawaDiagram-5VMMS53U-Ch5ze9LB.js.gz +0 -0
  293. package/dist/client/assets/journeyDiagram-3NMN7TZE-C3vqa0wB.js.br +0 -0
  294. package/dist/client/assets/journeyDiagram-3NMN7TZE-C3vqa0wB.js.gz +0 -0
  295. package/dist/client/assets/kanban-definition-UXKFOSKX-rEL2pKx0.js.br +0 -0
  296. package/dist/client/assets/kanban-definition-UXKFOSKX-rEL2pKx0.js.gz +0 -0
  297. package/dist/client/assets/layout-CeDdQRYz.js.br +0 -0
  298. package/dist/client/assets/layout-CeDdQRYz.js.gz +0 -0
  299. package/dist/client/assets/linear-C9xkTlXu.js.br +0 -0
  300. package/dist/client/assets/linear-C9xkTlXu.js.gz +0 -0
  301. package/dist/client/assets/mermaid.core-CIW1IDpX.js.br +0 -0
  302. package/dist/client/assets/mermaid.core-CIW1IDpX.js.gz +0 -0
  303. package/dist/client/assets/mindmap-definition-YA3MSWOX-CT9M_dpw.js.br +0 -0
  304. package/dist/client/assets/mindmap-definition-YA3MSWOX-CT9M_dpw.js.gz +0 -0
  305. package/dist/client/assets/passwordBootstrap-B8awl9Cz.js.br +0 -0
  306. package/dist/client/assets/passwordBootstrap-B8awl9Cz.js.gz +0 -0
  307. package/dist/client/assets/pegDiagram-XKGWAZYB-BkaUHxk6.js.br +0 -0
  308. package/dist/client/assets/pegDiagram-XKGWAZYB-BkaUHxk6.js.gz +0 -0
  309. package/dist/client/assets/pieDiagram-E7YTZNPT-Di_VEsZA.js.br +0 -0
  310. package/dist/client/assets/pieDiagram-E7YTZNPT-Di_VEsZA.js.gz +0 -0
  311. package/dist/client/assets/quadrantDiagram-AXDQQJYC-B--Y1EgY.js.gz +0 -0
  312. package/dist/client/assets/railroadDiagram-O6MQD6OU-CTTF__yz.js.br +0 -0
  313. package/dist/client/assets/railroadDiagram-O6MQD6OU-CTTF__yz.js.gz +0 -0
  314. package/dist/client/assets/referenceLongPress-jOxtSE5l.js.br +0 -0
  315. package/dist/client/assets/referenceLongPress-jOxtSE5l.js.gz +0 -0
  316. package/dist/client/assets/requirementDiagram-BXWQKSXE-DI0C2RWw.js.br +0 -0
  317. package/dist/client/assets/requirementDiagram-BXWQKSXE-DI0C2RWw.js.gz +0 -0
  318. package/dist/client/assets/sankeyDiagram-P5KCCOFB-W5HRSQpx.js.br +0 -0
  319. package/dist/client/assets/sankeyDiagram-P5KCCOFB-W5HRSQpx.js.gz +0 -0
  320. package/dist/client/assets/sequenceDiagram-WJ2MYXX4-BKkAIBat.js.gz +0 -0
  321. package/dist/client/assets/sizeCapture-INFHLROL-DXBwqyIS.js.br +0 -0
  322. package/dist/client/assets/sizeCapture-INFHLROL-DXBwqyIS.js.gz +0 -0
  323. package/dist/client/assets/stateDiagram-D77RDMKH-BBVi-dyW.js.br +0 -0
  324. package/dist/client/assets/stateDiagram-D77RDMKH-BBVi-dyW.js.gz +0 -0
  325. package/dist/client/assets/stateDiagram-v2-MP3YSRHH-DjAtlfPn.js +0 -1
  326. package/dist/client/assets/swimlanes-42K2YHIH-DwJjgXte.js.br +0 -0
  327. package/dist/client/assets/swimlanes-42K2YHIH-DwJjgXte.js.gz +0 -0
  328. package/dist/client/assets/swimlanesDiagram-VR7AAH4N-BRWkDBH5.js +0 -8
  329. package/dist/client/assets/timeline-definition-24CTP7MA-COX39iJ6.js.br +0 -0
  330. package/dist/client/assets/timeline-definition-24CTP7MA-COX39iJ6.js.gz +0 -0
  331. package/dist/client/assets/vennDiagram-4TSXK5OY-46HA9L0l.js.br +0 -0
  332. package/dist/client/assets/vennDiagram-4TSXK5OY-46HA9L0l.js.gz +0 -0
  333. package/dist/client/assets/wardleyDiagram-VM6X3IG4-DfkGMObP.js.br +0 -0
  334. package/dist/client/assets/wardleyDiagram-VM6X3IG4-DfkGMObP.js.gz +0 -0
  335. package/dist/client/assets/xychartDiagram-S5SC5T6Z-vlKat3e7.js.br +0 -0
  336. package/dist/client/assets/xychartDiagram-S5SC5T6Z-vlKat3e7.js.gz +0 -0
@@ -1,2 +1,2 @@
1
- import{a6 as re,cM as ce,bi as s,d as le}from"./app-DnjpR35Q.js";import{b as D}from"./dnd-BCFAPC0L.js";import{S as de}from"./sparkles-DceTfvKw.js";import{M as me,G as he,L as ue,T as xe,C as fe}from"./triangle-alert-DjtUXw4T.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{a7 as re,cO as ce,bk as s,d as le}from"./app-Cx1S0NEn.js";import{b as D}from"./dnd-BCFAPC0L.js";import{S as de}from"./sparkles-DZP-rTUQ.js";import{M as me,G as he,L as ue,T as xe,C as fe}from"./triangle-alert-6HTQse_h.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,O=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):O});const S=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+(S+1)*H+S*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),[S,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=S??n,j=f?null:v??G,I=c.edges.some(e=>e.key===j)?j:null,O=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])]):O?new Set([O.from,O.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{bi as t}from"./app-DnjpR35Q.js";import{C as s}from"./ChangeWalkthroughPanel-CpJIxJoa.js";import"./react-XDCjal2T.js";import"./dnd-BCFAPC0L.js";import"./terminal-C7X98Amf.js";import"./sparkles-DceTfvKw.js";import"./triangle-alert-DjtUXw4T.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{bk as t}from"./app-Cx1S0NEn.js";import{C as s}from"./ChangeWalkthroughPanel-D0dLmuqS.js";import"./react-XDCjal2T.js";import"./dnd-BCFAPC0L.js";import"./terminal-C7X98Amf.js";import"./sparkles-DZP-rTUQ.js";import"./triangle-alert-6HTQse_h.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{bi as e}from"./app-DnjpR35Q.js";import{b as a}from"./dnd-BCFAPC0L.js";import{c as M,S as _,D as T}from"./DiffViewer-PrcRXQq0.js";import"./react-XDCjal2T.js";import"./terminal-C7X98Amf.js";import"./referenceLongPress-jOxtSE5l.js";const w=`diff --git a/CommentGap.kt b/CommentGap.kt
1
+ import{bk as e}from"./app-Cx1S0NEn.js";import{b as a}from"./dnd-BCFAPC0L.js";import{c as M,S as _,D as T}from"./DiffViewer-B5Fj1S7h.js";import"./react-XDCjal2T.js";import"./terminal-C7X98Amf.js";import"./referenceLongPress-1MdQQqBu.js";const w=`diff --git a/CommentGap.kt b/CommentGap.kt
2
2
  --- a/CommentGap.kt
3
3
  +++ b/CommentGap.kt
4
4
  @@ -1,4 +1,4 @@
@@ -1 +1 @@
1
- import{a6 as Ye,bi as r,d as dt,c as ft,cM as ht,cX as mt,al as pt,a as xt,cW as gt,bA as vt,X as bt}from"./app-DnjpR35Q.js";import{b as o,r as Je}from"./dnd-BCFAPC0L.js";import{h as Ze,F as yt,b as wt,c as Ke}from"./gestureArbiter--6cZMOnD.js";import{S as et}from"./sparkles-DceTfvKw.js";import{D as kt,i as Rt}from"./DiffViewer-PrcRXQq0.js";const jt=[["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"}]],Nt=Ye("list-tree",jt);const Mt=[["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"}]],Tt=Ye("list",Mt);function tt({selected:t,depth:n=0,title:c,leading:m,children:h,trailing:i,role:y,tabIndex:x,ariaExpanded:g,onClick:f,onKeyDown:b,onPointerDown:z,onPointerUp:T,onPointerCancel:F,dataAttributes:B}){return r.jsxs("div",{role:y,tabIndex:x,"aria-expanded":g,title:c,onClick:f,onKeyDown:b,onPointerDown:z,onPointerUp:T,onPointerCancel:F,...B,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 rt(t){return t.path.replace(/^\/+/,"")}function Dt(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 nt(t,n){const c=new Map,m=(i,y,x,g)=>{const f=i.get(y);if(f)return f;const b={path:x,name:y,childCount:0,directories:[],files:[]};return i.set(y,b),g?.directories.push(b),b};for(const i of t){const y=n(i).split("/").filter(Boolean);if(y.length<=1)continue;let x=c,g=null,f="";for(const b of y.slice(0,-1)){f=f?`${f}/${b}`:b;const z=m(x,b,f,g);g=z,x=new Map(z.directories.map(T=>[T.name,T]))}g?.files.push(i)}const h=i=>{const y=i.directories.map(h).sort((g,f)=>g.name.localeCompare(f.name)),x=i.files.sort((g,f)=>g.path.localeCompare(f.path));return{...i,directories:y,files:x,childCount:y.reduce((g,f)=>g+f.childCount,0)+x.length}};return Array.from(c.values()).map(h).sort((i,y)=>i.name.localeCompare(y.name))}function Pe(t,n,c=0){const m=n.selectedKey===t.key||n.selectedKey===t.path||n.selectedKey===t.absolutePath,h=Dt(t);return r.jsx(tt,{selected:m,role:"button",tabIndex:0,title:t.title??t.absolutePath??t.path,onClick:()=>{Ze()||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 st(t,n,c,m,h){let i=t;const y=[t.name];for(;i.files.length===0&&i.directories.length===1;)i=i.directories[0],y.push(i.name);const x=y.join("/"),g=`${n}:${i.path}`,f=c.collapsedDirectoryKeys.has(g);return r.jsxs("div",{className:"space-y-px",children:[r.jsx(tt,{role:"button",tabIndex:0,onClick:()=>{Ze()||c.onToggleDirectory(g)},onKeyDown:b=>{b.key!=="Enter"&&b.key!==" "||(b.preventDefault(),c.onToggleDirectory(g))},ariaExpanded:!f,depth:m,title:i.path,leading:f?r.jsx(dt,{size:13}):r.jsx(ft,{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(yt,{size:14,className:"shrink-0 text-[color:var(--folder)]"}),r.jsx("span",{className:"min-w-0 flex-1 truncate leading-snug select-text","data-sidebar-selectable":!0,children:x})]})}),!f&&r.jsxs("div",{className:"space-y-px",children:[i.directories.map(b=>st(b,n,c,m+1,h)),i.files.length>0&&r.jsx("div",{className:"space-y-px",children:i.files.map(b=>Pe(b,c,m+1))})]})]},g)}function St(t,n){const c=n.getFileTreePath??rt,m=t.files.filter(i=>c(i).split("/").filter(Boolean).length<=1),h=nt(t.files,c);return r.jsxs("div",{className:"space-y-px",children:[h.map(i=>st(i,t.key,n,0,t)),m.length>0&&r.jsx("div",{className:"space-y-px",children:m.map(i=>Pe(i,n))})]})}function It(t,n=rt){const c=[],m=i=>{for(const y of i.directories)m(y);c.push(...i.files)};for(const i of nt(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 Et(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"?St(n,t):n.files.map(h=>Pe(h,t))})]},n.key)})})}const Ce="termdock:diff-review:list-width:v1",Ct=120,He=320,qe=220,Ft=560;function _t(t){return typeof t=="number"&&Number.isFinite(t)}function Ue(t,n){const c=Math.max(qe,n-360),m=Math.min(Ft,c);return Math.min(m,Math.max(qe,t))}function At(){return vt(Ce,_t)??He}function zt({list:t,detail:n,mobile:c,mobileListHeader:m,mobileDetailHeader:h,desktopListHeader:i,backLabel:y,onMobileSlideChange:x,externalSwiperRef:g,desktopLayout:f="split",onDetailScroll:b,desktopSidePanel:z,desktopListClassName:T,detailOwnsScroll:F=!1}){const{t:B}=ht(),P=o.useRef(null),q=o.useRef(null),I=o.useRef(null),[U,$]=o.useState(At);o.useEffect(()=>{if(c||f!=="split")return;const p=q.current;p&&$(j=>Ue(j,p.clientWidth))},[f,c]);const ae=o.useCallback(p=>{c||f!=="split"||(p.preventDefault(),I.current={startX:p.clientX,startWidth:U,pointerId:p.pointerId},p.currentTarget.setPointerCapture(p.pointerId))},[f,U,c]),ue=o.useCallback(p=>{const j=I.current;if(!j||j.pointerId!==p.pointerId)return;const D=q.current?.clientWidth??window.innerWidth,_=Ue(j.startWidth+p.clientX-j.startX,D);$(_),mt(Ce,_,Ct)},[]),ie=o.useCallback(p=>{const j=I.current;if(!(!j||j.pointerId!==p.pointerId)){I.current=null,pt(Ce);try{p.currentTarget.releasePointerCapture(p.pointerId)}catch{}}},[]);if(c){const p=()=>{const v=P.current;v&&v.slideTo(1)},j=()=>{const v=P.current;v&&v.slideTo(0)},D=typeof t=="function"?t({slideToDetail:p}):t,_=typeof h=="function"?h({slideToList:j,slideToDetail:p}):h;return r.jsxs(wt,{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:v=>{P.current=v,g&&(g.current=v)},onSlideChange:v=>{x?.(v.activeIndex)},children:[r.jsx(Ke,{className:"h-full min-h-0",children:r.jsxs("div",{className:"flex h-full min-h-0 flex-col overflow-hidden",children:[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:D})]})}),r.jsx(Ke,{className:"h-full min-h-0",children:r.jsxs("div",{className:"flex h-full min-h-0 flex-col overflow-hidden bg-surface",children:[r.jsx("div",{className:"shrink-0 border-b border-border/15 px-3 py-2",children:_??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(xt,{size:14}),y]})}),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:v=>b?.(v.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=>b?.(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:[z,r.jsxs("div",{className:T??"shrink-0 overflow-y-auto overscroll-contain border-r border-border/15 bg-surface",style:{width:U},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":B("diffViewer.resizeNavigation"),title:B("diffViewer.resizeNavigation"),className:"group relative z-10 w-2 shrink-0 cursor-col-resize touch-none border-r border-border/15 bg-surface",onPointerDown:ae,onPointerMove:ue,onPointerUp:ie,onPointerCancel:ie,onDoubleClick:()=>{$(He),gt(Ce,He)},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=>b?.(p.currentTarget),children:n})]})}function Lt({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(Tt,{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(Nt,{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(et,{size:13})})]})}function Ht({groups:t,mode:n,onModeChange:c,selectedKey:m,collapsedDirectoryKeys:h,onToggleDirectory:i,onSelectFile:y,renderLeading:x,renderTrailing:g,renderDirectoryTrailing:f,renderSubtitle:b,detail:z,mobile:T,backLabel:F,compact:B=!1,emptyContent:P,listPrefix:q,aiContent:I,listContainerClassName:U="px-2 py-2",detailContainerClassName:$="termdock-native-select termdock-diff-stream-scroller min-h-0",renderListHeader:ae,renderMobileDetailHeader:ue,externalSwiperRef:ie,onMobileSlideChange:W,slideToDetailOnMobile:p=!0,desktopLayout:j="split",onDetailScroll:D,desktopSidePanel:_,desktopListClassName:v,detailOwnsScroll:ee}){const[V,O]=o.useState(!1);o.useEffect(()=>{if(!V)return;const A=L=>{L.key==="Escape"&&O(!1)};return document.addEventListener("keydown",A),()=>document.removeEventListener("keydown",A)},[V]);const de=r.jsx(Lt,{mode:n,onModeChange:c,showAi:!!I}),pe=n==="tree"?"tree":"list",xe=ae?ae(de):r.jsx("div",{className:"flex justify-end",children:de}),ge=t.some(A=>A.files.length>0),te=r.jsx(zt,{mobile:V?!1:T,backLabel:F,externalSwiperRef:ie,onMobileSlideChange:W,desktopLayout:V?"split":j,onDetailScroll:D,desktopSidePanel:_,desktopListClassName:v,detailOwnsScroll:ee,mobileListHeader:T?xe:void 0,desktopListHeader:T?void 0:xe,mobileDetailHeader:ue,list:({slideToDetail:A})=>r.jsx("div",{className:U,children:n==="ai"?typeof I=="function"?I({slideToDetail:A,fullscreen:V,toggleFullscreen:()=>O(L=>!L)}):I??P:r.jsxs(r.Fragment,{children:[q,ge?r.jsx(Et,{groups:t,selectedKey:m,mode:pe,mobile:T,compact:B,collapsedDirectoryKeys:h,onToggleDirectory:i,onSelectFile:L=>{y(L),T&&p&&window.requestAnimationFrame(A)},renderLeading:x,renderTrailing:g,renderDirectoryTrailing:f,renderSubtitle:b}):P]})}),detail:r.jsx("div",{className:ee?"h-full min-h-0":$,children:z})});return!V||typeof document>"u"?te:Je.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(et,{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:()=>O(!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(bt,{size:16})})]}),r.jsx("div",{className:"min-h-0 flex-1",children:te})]}),document.body)}const Pt=96,ze=44;function Wt({file:t,repoRoot:n,selectionPath:c,displayName:m,displayDir:h,selected:i,activePane:y,visible:x,reusableContent:g=!1,estimatedHeight:f,lightweight:b=!1,wrap:z,viewType:T,inlineMode:F,diffOptions:B,reloadKey:P=0,auditRecords:q,diffOverride:I,oldSourceRef:U,preparedDiff:$,renderBadge:ae,onInsertDiffReference:ue,onHunkGitAction:ie,previewReverts:W,onReferenceCopied:p,insertedReferenceKey:j,copiedReferenceKey:D,onClearAuditRecord:_,onContentReady:v,onHeightChange:ee}){const V=o.useRef(null),O=o.useRef(null),de=o.useRef(null),[pe,xe]=o.useState(null),ge=o.useRef(64),te=o.useRef(f??104),A=o.useRef(null),L=o.useRef(null),Q=o.useRef(!1),le=o.useRef(!1),E=o.useRef(null),[re,je]=o.useState(!1),[Ne,Se]=o.useState(!1),ve=t.absolutePath||(n?`${n}/${t.path}`:t.path),N=o.useCallback(()=>{le.current||(le.current=!0,Se(!0),v?.(c))},[v,c]);o.useLayoutEffect(()=>{if(!(I!==void 0&&x&&le.current))return Q.current=!1,le.current=!1,A.current=null,L.current=null,E.current!==null&&(window.clearTimeout(E.current),E.current=null),je(!1),Se(!1),()=>{E.current!==null&&(window.clearTimeout(E.current),E.current=null)}},[I,$,P,g,x]),o.useLayoutEffect(()=>{const G=A.current;!re||G===null||Math.abs((f??104)-G)>=1||(A.current=null,N())},[N,f,re]),o.useLayoutEffect(()=>{if(!x||!re)return;const G=de.current;if(!G)return;const be=()=>{if(!Q.current)return;const Y=G.firstElementChild;if(!Y)return;const K=Math.ceil(Math.max(Y.getBoundingClientRect().height,Y.scrollHeight,64)),he=ge.current;if(K>0&&he!==K&&(ge.current=K,xe(K)),!V.current)return;const C=O.current?.getBoundingClientRect().height??ze,se=Math.ceil(C+K+1);se<=0||L.current===se||(L.current=se,E.current!==null&&window.clearTimeout(E.current),E.current=window.setTimeout(()=>{if(E.current=null,!Q.current)return;const H=L.current;if(H===null)return;const S=te.current;if(le.current){te.current=H,Math.abs(S-H)>=1&&ee?.(c,S,H),v?.(c);return}if(A.current=H,Math.abs(S-H)<1||!ee){te.current=H,A.current=null,N();return}te.current=H,ee(c,S,H)},Pt))};if(be(),typeof ResizeObserver>"u")return;const fe=new ResizeObserver(be);return fe.observe(G),G.firstElementChild&&fe.observe(G.firstElementChild),O.current&&fe.observe(O.current),()=>fe.disconnect()},[N,v,ee,c,re,x,z,T,F]);const X=x&&!Ne;return r.jsxs("div",{ref:V,"data-diff-stream-item":c,"data-diff-selection-path":c,"data-diff-file-path":t.path,"data-diff-absolute-path":ve,className:`scroll-mt-3 border-b border-border/15 last:border-b-0 ${X||!x?"overflow-hidden":""} ${i?"bg-surface-elevated/35":""}`,style:x?X?{height:f??104}:void 0:{height:f??104},children:[r.jsxs("div",{ref:O,"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:[ae(t.status),r.jsxs("div",{className:"min-w-0 flex-1",title:ve,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:de,className:"relative","data-diff-stream-body":!0,style:x?{minHeight:Ne?64:Math.max(pe??64,(f??104)-ze)}:{height:Math.max(pe??64,(f??104)-ze)},children:[x?r.jsx(kt,{active:y,repoRoot:n,filePath:t.path,referenceFilePath:ve,changedFile:t,wrap:z,viewType:T,inlineMode:F,diffOptions:B,reloadKey:P,embedded:!0,lightweight:b,auditRecords:q,diffOverride:I,oldSourceRef:U,preparedDiff:$,onClearAuditRecord:_,onContentReady:()=>{if(g){Q.current=!0,je(!0),N();return}Q.current||(Q.current=!0,je(!0))},onInsertDiffReference:ue,onHunkGitAction:ie,previewReverts:W,onReferenceCopied:p,insertedReferenceKey:j,copiedReferenceKey:D}):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}),x&&re&&!Ne&&r.jsx("div",{"data-diff-measuring-overlay":!0,className:"absolute inset-0 z-20 bg-surface"})]})]})}const Oe=8,Le=1600,Qe=104,Bt=1e3,Re=new Map;function $t(t,n){for(Re.delete(t),Re.set(t,n);Re.size>Bt;){const c=Re.keys().next().value;if(c===void 0)break;Re.delete(c)}}function Vt(t,n){return!!(t&&t.diffOverride===n.diffOverride&&t.oldSourceRef===n.oldSourceRef&&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 Xt={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 Zt({status:t}){const n=Xt[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 er(t,n){return n?{key:n,nonce:t.nonce+1}:t}function tr({files:t,groups:n,selectedKey:c,onSelectFile:m,mode:h,onModeChange:i,collapsedDirectoryKeys:y,onToggleDirectory:x,renderLeading:g,renderTrailing:f,renderDirectoryTrailing:b,renderSubtitle:z,renderStreamBadge:T,onInsertDiffReference:F,onHunkGitAction:B,onReferenceCopied:P,insertedReferenceKey:q,copiedReferenceKey:I,onClearAuditRecord:U,mobile:$,backLabel:ae,compact:ue,desktopLayout:ie,wrap:W,diffViewType:p,inlineMode:j,diffOptions:D,activePane:_,reloadKey:v=0,renderListHeader:ee,renderMobileDetailHeader:V,emptyContent:O,listPrefix:de,aiContent:pe,listContainerClassName:xe,detailContainerClassName:ge,desktopSidePanel:te,desktopListClassName:A,onDetailScroll:L,initialDetailScrollTop:Q,preserveScrollOnUpdate:le=!1,scrollToKey:E,scrollToKeyNonce:re=0,externalSwiperRef:je,onMobileSlideChange:Ne,slideToDetailOnMobile:Se}){const ve=o.useMemo(()=>e=>c===e.key||c===e.path||c===e.absolutePath,[c]),N=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"?It(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]),X=o.useRef(null),G=o.useRef(null),be=o.useRef(null),fe=o.useRef(v),Y=o.useRef(0),K=o.useRef(null),he=o.useRef(new Map(Re)),ne=o.useRef({key:null,top:0}),C=o.useRef(new Set),se=o.useRef(new Map),H=o.useRef(new Map),S=o.useRef(null),We=o.useRef(()=>{}),Me=o.useRef([]),me=o.useRef(new Map),Be=o.useRef({tops:[],heights:[],bottom:0}),[Ie,ot]=o.useState(()=>new Set),[ct,at]=o.useState(0),[J,ye]=o.useState({top:0,height:0}),Te=o.useMemo(()=>N.map(e=>e.key),[N]),Ee=Te.join("");H.current=o.useMemo(()=>new Map(N.map(e=>[e.key,{diffOverride:e.diffOverride,oldSourceRef:e.oldSourceRef,reloadKey:v,wrap:W,viewType:p,inlineMode:j,algorithm:D?.algorithm,whitespace:D?.whitespace,context:D?.context}])),[N,v,W,p,j,D?.algorithm,D?.whitespace,D?.context]),Me.current=Te,me.current=o.useMemo(()=>new Map(Te.map((e,s)=>[e,s])),[Te]);const k=o.useMemo(()=>{const e=Te.map(a=>he.current.get(a)??Qe),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}},[ct,Ee]);Be.current=k;const oe=o.useMemo(()=>E?N.find(e=>E===e.key||E===e.path||E===e.absolutePath)?.key??null:null,[N,E]),Fe=o.useMemo(()=>c?N.find(e=>c===e.key||c===e.path||c===e.absolutePath)?.key??null:null,[N,c]),De=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]<=J.top+1?s=a+1:l=a}return Math.min(e-1,Math.max(0,s-1))},[k.tops,J.top]),ce=o.useCallback(e=>{C.current=e,ot(e)},[]),$e=o.useMemo(()=>{const e=J.top-Le,s=J.top+J.height+Le,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=De-1;u<=De+1;u+=1)u>=0&&u<k.tops.length&&l.add(u);for(const u of Ie){const R=me.current.get(u);R!==void 0&&l.add(R)}return Array.from(l).sort((u,R)=>u-R)},[k,J,Ie,De]),_e=o.useCallback(()=>{if(!_||S.current)return;const e=Me.current;if(e.length===0)return;const s=ne.current.key,l=Math.min(e.length-1,(s!==null?me.current.get(s):void 0)??Math.max(0,De)),a=u=>Math.abs((me.current.get(u)??0)-l),d=[];C.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&&!C.current.has(e[R])&&d.push(e[R]),M>=0&&!C.current.has(e[M])&&d.push(e[M])}const w=d[0];if(w){if(C.current.size>=Oe){const u=a(w),R=Array.from(C.current).filter(Z=>Z!==S.current).sort((Z,ke)=>a(ke)-a(Z))[0];if(!R||a(R)<=u)return;const M=new Set(C.current);M.delete(R),ce(M)}S.current=w,ce(new Set(C.current).add(w))}},[_,ce,De]);We.current=_e;const we=o.useCallback(e=>{if(C.current.has(e))return;const s=S.current;if(s&&s!==e){const l=new Set(C.current);l.delete(s),ce(l),S.current=null}S.current=e,ce(new Set(C.current).add(e))},[ce]),Ve=o.useCallback(e=>{if(!C.current.has(e))return;const s=H.current.get(e);s&&se.current.set(e,s),S.current===e&&(S.current=null),window.requestAnimationFrame(()=>We.current())},[]),Xe=o.useCallback((e,s,l)=>{if(Math.abs(l-s)<1)return;const a=he.current.get(e);a!==void 0&&Math.abs(a-l)<1||(he.current.set(e,l),$t(e,l),at(d=>d+1))},[]);o.useLayoutEffect(()=>{if(fe.current!==v){fe.current=v;for(const e of N){if(e.diffOverride!==void 0)continue;const s=qt(e.path,e.repoRoot);Rt(s,e.repoRoot??void 0,D)}}},[N,D,v]),o.useLayoutEffect(()=>{const e=X.current;if(!e)return;const s=()=>{const a=Math.max(0,Math.ceil(e.clientHeight));if(a===0)return;const d=e.scrollTop;ye(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.useEffect(()=>{_&&Fe&&we(Fe)},[_,we,Fe]),o.useEffect(()=>{const e=new Set(Me.current);for(const s of Array.from(he.current.keys()))e.has(s)||he.current.delete(s);for(const s of Array.from(C.current))if(!e.has(s)){const l=new Set(C.current);l.delete(s),ce(l)}for(const s of Array.from(se.current.keys()))e.has(s)||se.current.delete(s);if(S.current&&!e.has(S.current)&&(S.current=null),N.length===0){S.current=null,se.current.clear(),ce(new Set);return}_e()},[N.length,Ee,_e,$e,ce]);const Ge=o.useCallback(e=>{X.current=e;const s=Y.current,l=e.scrollTop;Y.current=l;const a=d=>{const w=Be.current,u=Me.current;let R=0,M=w.tops.length;for(;R<M;){const Ae=Math.floor((R+M)/2);w.tops[Ae]<=d+1?R=Ae+1:M=Ae}const Z=Math.min(u.length-1,Math.max(0,R-1)),ke=u[Z]??null;ne.current={key:ke,top:w.tops[Z]??0},ke&&we(ke)};Math.abs(l-s)>=Le?(Je.flushSync(()=>{ye({top:l,height:e.clientHeight})}),a(l)):K.current===null&&(K.current=window.requestAnimationFrame(()=>{K.current=null;const d=X.current;if(d){const w=d.scrollTop;ye({top:w,height:d.clientHeight}),a(w)}})),L?.(e)},[L,we]);o.useEffect(()=>()=>{K.current!==null&&window.cancelAnimationFrame(K.current)},[]),o.useLayoutEffect(()=>{const e=X.current;if(!e)return;const s=ne.current;if(s.key===null)return;const l=me.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;Y.current=d,ye(w=>({top:d,height:w.height})),typeof e.scrollTo=="function"?e.scrollTo({top:d,behavior:"instant"}):e.scrollTop=d},[k]),o.useLayoutEffect(()=>{const e=Me.current,s=k.tops;if(e.length===0){ne.current={key:null,top:0};return}const l=Y.current,a=l+(X.current?.clientHeight??J.height),d=ne.current;if(d.key!==null){const M=me.current.get(d.key);if(M!==void 0){const Z=s[M]??0;if(Z+(k.heights[M]??Qe)>l&&Z<a){ne.current={key:d.key,top:Z};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));ne.current={key:e[R]??null,top:s[R]??0}}),o.useLayoutEffect(()=>{if(!oe)return;const e=G.current;if(e?.key===oe&&e.nonce===re)return;const s=me.current.get(oe);if(s===void 0)return;we(oe),ne.current={key:oe,top:k.tops[s]??0};const l=X.current;if(!l||l.clientHeight===0||J.height!==l.clientHeight)return;G.current={key:oe,nonce:re};const a=k.tops[s]??0;typeof l.scrollTo=="function"?l.scrollTo({top:a,behavior:"instant"}):l.scrollTop=a;const d=l.scrollTop;Y.current=d,ye({top:d,height:l.clientHeight})},[k,J.height,we,oe,re]),o.useLayoutEffect(()=>{if(Q===void 0||oe)return;const e=Ee;if(be.current===e||le&&be.current!==null)return;const s=X.current;if(!s)return;be.current=e;const l=Math.max(0,k.bottom-s.clientHeight),a=Math.min(Math.max(0,Q),l);typeof s.scrollTo=="function"?s.scrollTo({top:a,behavior:"instant"}):s.scrollTop=a;const d=s.scrollTop;Y.current=d,ye({top:d,height:s.clientHeight})},[k.bottom,Q,Ee,le,oe]);const it=o.useCallback((e,s)=>{const l=ve(e),a=H.current.get(e.key),d=a!==void 0&&Vt(se.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:_,visible:Ie.has(e.key),reusableContent:d,estimatedHeight:s,lightweight:!1,wrap:W,viewType:p,inlineMode:j,diffOptions:D,reloadKey:v,auditRecords:e.auditRecords,diffOverride:e.diffOverride,oldSourceRef:e.oldSourceRef,renderStreamBadge:T,onInsertDiffReference:e.onInsertDiffReference??F,onHunkGitAction:e.onHunkGitAction??B,previewReverts:e.previewReverts,onReferenceCopied:P,insertedReferenceKey:q,copiedReferenceKey:I,onClearAuditRecord:U,onContentReady:Ve,onHeightChange:Xe})},[_,I,D,p,Ve,Xe,j,q,ve,Ie,U,B,F,P,v,T,W]),lt=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)+J.height)},children:$e.map(e=>{const s=N[e];return s?r.jsx("div",{"data-diff-canvas-slot":s.key,className:"absolute inset-x-0",style:{top:k.tops[e]},children:it(s,k.heights[e])},s.key):null})}),ut=r.jsx("div",{ref:X,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:lt});return r.jsx(Ht,{groups:n,mode:h,onModeChange:i,selectedKey:c,collapsedDirectoryKeys:y,onToggleDirectory:x,onSelectFile:m,renderLeading:g,renderTrailing:f,renderDirectoryTrailing:b,renderSubtitle:z,detail:ut,mobile:$,backLabel:ae,compact:ue,emptyContent:O,listPrefix:de,aiContent:pe,listContainerClassName:xe,detailContainerClassName:ge,renderListHeader:ee,renderMobileDetailHeader:V,externalSwiperRef:je,onMobileSlideChange:Ne,slideToDetailOnMobile:Se,desktopLayout:ie,onDetailScroll:Ge,desktopSidePanel:te,desktopListClassName:A,detailOwnsScroll:!0})}const Gt=o.memo(function({item:n,renderStreamBadge:c,...m}){return r.jsx(Wt,{...m,file:Kt(n),renderBadge:h=>c(h,n)})});function Kt(t){return{path:t.path,oldPath:t.oldPath,absolutePath:t.absolutePath,status:t.status}}function qt(t,n){if(t)return n&&t.startsWith(`${n}/`)?t.slice(n.length+1):t}export{Zt as C,tr as D,Nt as L,It as f,er as n};
1
+ import{a7 as Qe,bk as r,d as dt,c as ft,cO as ht,cZ as mt,am as pt,a as xt,cY as gt,bC as vt,X as bt}from"./app-Cx1S0NEn.js";import{b as o,r as Ze}from"./dnd-BCFAPC0L.js";import{h as Je,F as yt,b as wt,c as Ke}from"./gestureArbiter-CDxeAcBI.js";import{S as et}from"./sparkles-DZP-rTUQ.js";import{D as kt,i as Rt}from"./DiffViewer-B5Fj1S7h.js";const jt=[["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"}]],Nt=Qe("list-tree",jt);const Mt=[["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"}]],Tt=Qe("list",Mt);function tt({selected:t,depth:n=0,title:c,leading:m,children:h,trailing:i,role:y,tabIndex:x,ariaExpanded:g,onClick:f,onKeyDown:b,onPointerDown:z,onPointerUp:T,onPointerCancel:F,dataAttributes:B}){return r.jsxs("div",{role:y,tabIndex:x,"aria-expanded":g,title:c,onClick:f,onKeyDown:b,onPointerDown:z,onPointerUp:T,onPointerCancel:F,...B,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 rt(t){return t.path.replace(/^\/+/,"")}function Dt(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 nt(t,n){const c=new Map,m=(i,y,x,g)=>{const f=i.get(y);if(f)return f;const b={path:x,name:y,childCount:0,directories:[],files:[]};return i.set(y,b),g?.directories.push(b),b};for(const i of t){const y=n(i).split("/").filter(Boolean);if(y.length<=1)continue;let x=c,g=null,f="";for(const b of y.slice(0,-1)){f=f?`${f}/${b}`:b;const z=m(x,b,f,g);g=z,x=new Map(z.directories.map(T=>[T.name,T]))}g?.files.push(i)}const h=i=>{const y=i.directories.map(h).sort((g,f)=>g.name.localeCompare(f.name)),x=i.files.sort((g,f)=>g.path.localeCompare(f.path));return{...i,directories:y,files:x,childCount:y.reduce((g,f)=>g+f.childCount,0)+x.length}};return Array.from(c.values()).map(h).sort((i,y)=>i.name.localeCompare(y.name))}function Pe(t,n,c=0){const m=n.selectedKey===t.key||n.selectedKey===t.path||n.selectedKey===t.absolutePath,h=Dt(t);return r.jsx(tt,{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 st(t,n,c,m,h){let i=t;const y=[t.name];for(;i.files.length===0&&i.directories.length===1;)i=i.directories[0],y.push(i.name);const x=y.join("/"),g=`${n}:${i.path}`,f=c.collapsedDirectoryKeys.has(g);return r.jsxs("div",{className:"space-y-px",children:[r.jsx(tt,{role:"button",tabIndex:0,onClick:()=>{Je()||c.onToggleDirectory(g)},onKeyDown:b=>{b.key!=="Enter"&&b.key!==" "||(b.preventDefault(),c.onToggleDirectory(g))},ariaExpanded:!f,depth:m,title:i.path,leading:f?r.jsx(dt,{size:13}):r.jsx(ft,{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(yt,{size:14,className:"shrink-0 text-[color:var(--folder)]"}),r.jsx("span",{className:"min-w-0 flex-1 truncate leading-snug select-text","data-sidebar-selectable":!0,children:x})]})}),!f&&r.jsxs("div",{className:"space-y-px",children:[i.directories.map(b=>st(b,n,c,m+1,h)),i.files.length>0&&r.jsx("div",{className:"space-y-px",children:i.files.map(b=>Pe(b,c,m+1))})]})]},g)}function St(t,n){const c=n.getFileTreePath??rt,m=t.files.filter(i=>c(i).split("/").filter(Boolean).length<=1),h=nt(t.files,c);return r.jsxs("div",{className:"space-y-px",children:[h.map(i=>st(i,t.key,n,0,t)),m.length>0&&r.jsx("div",{className:"space-y-px",children:m.map(i=>Pe(i,n))})]})}function It(t,n=rt){const c=[],m=i=>{for(const y of i.directories)m(y);c.push(...i.files)};for(const i of nt(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 Et(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"?St(n,t):n.files.map(h=>Pe(h,t))})]},n.key)})})}const Ce="termdock:diff-review:list-width:v1",Ct=120,He=320,qe=220,Ft=560;function _t(t){return typeof t=="number"&&Number.isFinite(t)}function Oe(t,n){const c=Math.max(qe,n-360),m=Math.min(Ft,c);return Math.min(m,Math.max(qe,t))}function At(){return vt(Ce,_t)??He}function zt({list:t,detail:n,mobile:c,mobileListHeader:m,mobileDetailHeader:h,desktopListHeader:i,backLabel:y,onMobileSlideChange:x,externalSwiperRef:g,desktopLayout:f="split",onDetailScroll:b,desktopSidePanel:z,desktopListClassName:T,detailOwnsScroll:F=!1}){const{t:B}=ht(),P=o.useRef(null),q=o.useRef(null),I=o.useRef(null),[O,$]=o.useState(At);o.useEffect(()=>{if(c||f!=="split")return;const p=q.current;p&&$(j=>Oe(j,p.clientWidth))},[f,c]);const ae=o.useCallback(p=>{c||f!=="split"||(p.preventDefault(),I.current={startX:p.clientX,startWidth:O,pointerId:p.pointerId},p.currentTarget.setPointerCapture(p.pointerId))},[f,O,c]),ue=o.useCallback(p=>{const j=I.current;if(!j||j.pointerId!==p.pointerId)return;const D=q.current?.clientWidth??window.innerWidth,_=Oe(j.startWidth+p.clientX-j.startX,D);$(_),mt(Ce,_,Ct)},[]),ie=o.useCallback(p=>{const j=I.current;if(!(!j||j.pointerId!==p.pointerId)){I.current=null,pt(Ce);try{p.currentTarget.releasePointerCapture(p.pointerId)}catch{}}},[]);if(c){const p=()=>{const v=P.current;v&&v.slideTo(1)},j=()=>{const v=P.current;v&&v.slideTo(0)},D=typeof t=="function"?t({slideToDetail:p}):t,_=typeof h=="function"?h({slideToList:j,slideToDetail:p}):h;return r.jsxs(wt,{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:v=>{P.current=v,g&&(g.current=v)},onSlideChange:v=>{x?.(v.activeIndex)},children:[r.jsx(Ke,{className:"h-full min-h-0",children:r.jsxs("div",{className:"flex h-full min-h-0 flex-col overflow-hidden",children:[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:D})]})}),r.jsx(Ke,{className:"h-full min-h-0",children:r.jsxs("div",{className:"flex h-full min-h-0 flex-col overflow-hidden bg-surface",children:[r.jsx("div",{className:"shrink-0 border-b border-border/15 px-3 py-2",children:_??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(xt,{size:14}),y]})}),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:v=>b?.(v.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=>b?.(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:[z,r.jsxs("div",{className:T??"shrink-0 overflow-y-auto overscroll-contain border-r border-border/15 bg-surface",style:{width:O},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":B("diffViewer.resizeNavigation"),title:B("diffViewer.resizeNavigation"),className:"group relative z-10 w-2 shrink-0 cursor-col-resize touch-none border-r border-border/15 bg-surface",onPointerDown:ae,onPointerMove:ue,onPointerUp:ie,onPointerCancel:ie,onDoubleClick:()=>{$(He),gt(Ce,He)},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=>b?.(p.currentTarget),children:n})]})}function Lt({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(Tt,{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(Nt,{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(et,{size:13})})]})}function Ht({groups:t,mode:n,onModeChange:c,selectedKey:m,collapsedDirectoryKeys:h,onToggleDirectory:i,onSelectFile:y,renderLeading:x,renderTrailing:g,renderDirectoryTrailing:f,renderSubtitle:b,detail:z,mobile:T,backLabel:F,compact:B=!1,emptyContent:P,listPrefix:q,aiContent:I,listContainerClassName:O="px-2 py-2",detailContainerClassName:$="termdock-native-select termdock-diff-stream-scroller min-h-0",renderListHeader:ae,renderMobileDetailHeader:ue,externalSwiperRef:ie,onMobileSlideChange:W,slideToDetailOnMobile:p=!0,desktopLayout:j="split",onDetailScroll:D,desktopSidePanel:_,desktopListClassName:v,detailOwnsScroll:ee}){const[V,U]=o.useState(!1);o.useEffect(()=>{if(!V)return;const A=L=>{L.key==="Escape"&&U(!1)};return document.addEventListener("keydown",A),()=>document.removeEventListener("keydown",A)},[V]);const de=r.jsx(Lt,{mode:n,onModeChange:c,showAi:!!I}),pe=n==="tree"?"tree":"list",xe=ae?ae(de):r.jsx("div",{className:"flex justify-end",children:de}),ge=t.some(A=>A.files.length>0),te=r.jsx(zt,{mobile:V?!1:T,backLabel:F,externalSwiperRef:ie,onMobileSlideChange:W,desktopLayout:V?"split":j,onDetailScroll:D,desktopSidePanel:_,desktopListClassName:v,detailOwnsScroll:ee,mobileListHeader:T?xe:void 0,desktopListHeader:T?void 0:xe,mobileDetailHeader:ue,list:({slideToDetail:A})=>r.jsx("div",{className:O,children:n==="ai"?typeof I=="function"?I({slideToDetail:A,fullscreen:V,toggleFullscreen:()=>U(L=>!L)}):I??P:r.jsxs(r.Fragment,{children:[q,ge?r.jsx(Et,{groups:t,selectedKey:m,mode:pe,mobile:T,compact:B,collapsedDirectoryKeys:h,onToggleDirectory:i,onSelectFile:L=>{y(L),T&&p&&window.requestAnimationFrame(A)},renderLeading:x,renderTrailing:g,renderDirectoryTrailing:f,renderSubtitle:b}):P]})}),detail:r.jsx("div",{className:ee?"h-full min-h-0":$,children:z})});return!V||typeof document>"u"?te:Ze.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(et,{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:()=>U(!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(bt,{size:16})})]}),r.jsx("div",{className:"min-h-0 flex-1",children:te})]}),document.body)}const Pt=96,ze=44;function Wt({file:t,repoRoot:n,selectionPath:c,displayName:m,displayDir:h,selected:i,activePane:y,visible:x,reusableContent:g=!1,estimatedHeight:f,lightweight:b=!1,wrap:z,viewType:T,inlineMode:F,diffOptions:B,reloadKey:P=0,auditRecords:q,diffOverride:I,oldSourceRef:O,preparedDiff:$,renderBadge:ae,onInsertDiffReference:ue,onHunkGitAction:ie,previewReverts:W,onReferenceCopied:p,insertedReferenceKey:j,copiedReferenceKey:D,onClearAuditRecord:_,onContentReady:v,onHeightChange:ee}){const V=o.useRef(null),U=o.useRef(null),de=o.useRef(null),[pe,xe]=o.useState(null),ge=o.useRef(64),te=o.useRef(f??104),A=o.useRef(null),L=o.useRef(null),Y=o.useRef(!1),le=o.useRef(!1),E=o.useRef(null),[re,je]=o.useState(!1),[Ne,Se]=o.useState(!1),ve=t.absolutePath||(n?`${n}/${t.path}`:t.path),N=o.useCallback(()=>{le.current||(le.current=!0,Se(!0),v?.(c))},[v,c]);o.useLayoutEffect(()=>{if(!(I!==void 0&&x&&le.current))return Y.current=!1,le.current=!1,A.current=null,L.current=null,E.current!==null&&(window.clearTimeout(E.current),E.current=null),je(!1),Se(!1),()=>{E.current!==null&&(window.clearTimeout(E.current),E.current=null)}},[I,$,P,g,x]),o.useLayoutEffect(()=>{const X=A.current;!re||X===null||Math.abs((f??104)-X)>=1||(A.current=null,N())},[N,f,re]),o.useLayoutEffect(()=>{if(!x||!re)return;const X=de.current;if(!X)return;const be=()=>{if(!Y.current)return;const Q=X.firstElementChild;if(!Q)return;const K=Math.ceil(Math.max(Q.getBoundingClientRect().height,Q.scrollHeight,64)),he=ge.current;if(K>0&&he!==K&&(ge.current=K,xe(K)),!V.current)return;const C=U.current?.getBoundingClientRect().height??ze,se=Math.ceil(C+K+1);se<=0||L.current===se||(L.current=se,E.current!==null&&window.clearTimeout(E.current),E.current=window.setTimeout(()=>{if(E.current=null,!Y.current)return;const H=L.current;if(H===null)return;const S=te.current;if(le.current){te.current=H,Math.abs(S-H)>=1&&ee?.(c,S,H),v?.(c);return}if(A.current=H,Math.abs(S-H)<1||!ee){te.current=H,A.current=null,N();return}te.current=H,ee(c,S,H)},Pt))};if(be(),typeof ResizeObserver>"u")return;const fe=new ResizeObserver(be);return fe.observe(X),X.firstElementChild&&fe.observe(X.firstElementChild),U.current&&fe.observe(U.current),()=>fe.disconnect()},[N,v,ee,c,re,x,z,T,F]);const G=x&&!Ne;return r.jsxs("div",{ref:V,"data-diff-stream-item":c,"data-diff-selection-path":c,"data-diff-file-path":t.path,"data-diff-absolute-path":ve,className:`scroll-mt-3 border-b border-border/15 last:border-b-0 ${G||!x?"overflow-hidden":""} ${i?"bg-surface-elevated/35":""}`,style:x?G?{height:f??104}:void 0:{height:f??104},children:[r.jsxs("div",{ref:U,"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:[ae(t.status),r.jsxs("div",{className:"min-w-0 flex-1",title:ve,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:de,className:"relative","data-diff-stream-body":!0,style:x?{minHeight:Ne?64:Math.max(pe??64,(f??104)-ze)}:{height:Math.max(pe??64,(f??104)-ze)},children:[x?r.jsx(kt,{active:y,repoRoot:n,filePath:t.path,referenceFilePath:ve,changedFile:t,wrap:z,viewType:T,inlineMode:F,diffOptions:B,reloadKey:P,embedded:!0,lightweight:b,auditRecords:q,diffOverride:I,oldSourceRef:O,preparedDiff:$,onClearAuditRecord:_,onContentReady:()=>{if(g){Y.current=!0,je(!0),N();return}Y.current||(Y.current=!0,je(!0))},onInsertDiffReference:ue,onHunkGitAction:ie,previewReverts:W,onReferenceCopied:p,insertedReferenceKey:j,copiedReferenceKey:D}):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}),x&&re&&!Ne&&r.jsx("div",{"data-diff-measuring-overlay":!0,className:"absolute inset-0 z-20 bg-surface"})]})]})}const Ue=8,Le=1600,Ye=104,Bt=1e3,Re=new Map;function $t(t,n){for(Re.delete(t),Re.set(t,n);Re.size>Bt;){const c=Re.keys().next().value;if(c===void 0)break;Re.delete(c)}}function Vt(t,n){return!!(t&&t.diffOverride===n.diffOverride&&t.oldSourceRef===n.oldSourceRef&&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 Gt={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=Gt[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 er(t,n){return n?{key:n,nonce:t.nonce+1}:t}function tr({files:t,groups:n,selectedKey:c,onSelectFile:m,mode:h,onModeChange:i,collapsedDirectoryKeys:y,onToggleDirectory:x,renderLeading:g,renderTrailing:f,renderDirectoryTrailing:b,renderSubtitle:z,renderStreamBadge:T,onInsertDiffReference:F,onHunkGitAction:B,onReferenceCopied:P,insertedReferenceKey:q,copiedReferenceKey:I,onClearAuditRecord:O,mobile:$,backLabel:ae,compact:ue,desktopLayout:ie,wrap:W,diffViewType:p,inlineMode:j,diffOptions:D,activePane:_,reloadKey:v=0,renderListHeader:ee,renderMobileDetailHeader:V,emptyContent:U,listPrefix:de,aiContent:pe,listContainerClassName:xe,detailContainerClassName:ge,desktopSidePanel:te,desktopListClassName:A,onDetailScroll:L,initialDetailScrollTop:Y,preserveScrollOnUpdate:le=!1,scrollToKey:E,scrollToKeyNonce:re=0,externalSwiperRef:je,onMobileSlideChange:Ne,slideToDetailOnMobile:Se}){const ve=o.useMemo(()=>e=>c===e.key||c===e.path||c===e.absolutePath,[c]),N=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"?It(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]),G=o.useRef(null),X=o.useRef(null),be=o.useRef(null),fe=o.useRef(v),Q=o.useRef(0),K=o.useRef(null),he=o.useRef(new Map(Re)),ne=o.useRef({key:null,top:0}),C=o.useRef(new Set),se=o.useRef(new Map),H=o.useRef(new Map),S=o.useRef(null),We=o.useRef(()=>{}),Me=o.useRef([]),me=o.useRef(new Map),Be=o.useRef({tops:[],heights:[],bottom:0}),[Ie,ot]=o.useState(()=>new Set),[ct,at]=o.useState(0),[Z,ye]=o.useState({top:0,height:0}),Te=o.useMemo(()=>N.map(e=>e.key),[N]),Ee=Te.join("");H.current=o.useMemo(()=>new Map(N.map(e=>[e.key,{diffOverride:e.diffOverride,oldSourceRef:e.oldSourceRef,reloadKey:v,wrap:W,viewType:p,inlineMode:j,algorithm:D?.algorithm,whitespace:D?.whitespace,context:D?.context}])),[N,v,W,p,j,D?.algorithm,D?.whitespace,D?.context]),Me.current=Te,me.current=o.useMemo(()=>new Map(Te.map((e,s)=>[e,s])),[Te]);const k=o.useMemo(()=>{const e=Te.map(a=>he.current.get(a)??Ye),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}},[ct,Ee]);Be.current=k;const oe=o.useMemo(()=>E?N.find(e=>E===e.key||E===e.path||E===e.absolutePath)?.key??null:null,[N,E]),Fe=o.useMemo(()=>c?N.find(e=>c===e.key||c===e.path||c===e.absolutePath)?.key??null:null,[N,c]),De=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]<=Z.top+1?s=a+1:l=a}return Math.min(e-1,Math.max(0,s-1))},[k.tops,Z.top]),ce=o.useCallback(e=>{C.current=e,ot(e)},[]),$e=o.useMemo(()=>{const e=Z.top-Le,s=Z.top+Z.height+Le,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=De-1;u<=De+1;u+=1)u>=0&&u<k.tops.length&&l.add(u);for(const u of Ie){const R=me.current.get(u);R!==void 0&&l.add(R)}return Array.from(l).sort((u,R)=>u-R)},[k,Z,Ie,De]),_e=o.useCallback(()=>{if(!_||S.current)return;const e=Me.current;if(e.length===0)return;const s=ne.current.key,l=Math.min(e.length-1,(s!==null?me.current.get(s):void 0)??Math.max(0,De)),a=u=>Math.abs((me.current.get(u)??0)-l),d=[];C.current.has(e[l])||d.push(e[l]);for(let u=1;u<=Ue;u+=1){const R=l+u,M=l-u;R<e.length&&!C.current.has(e[R])&&d.push(e[R]),M>=0&&!C.current.has(e[M])&&d.push(e[M])}const w=d[0];if(w){if(C.current.size>=Ue){const u=a(w),R=Array.from(C.current).filter(J=>J!==S.current).sort((J,ke)=>a(ke)-a(J))[0];if(!R||a(R)<=u)return;const M=new Set(C.current);M.delete(R),ce(M)}S.current=w,ce(new Set(C.current).add(w))}},[_,ce,De]);We.current=_e;const we=o.useCallback(e=>{if(C.current.has(e))return;const s=S.current;if(s&&s!==e){const l=new Set(C.current);l.delete(s),ce(l),S.current=null}S.current=e,ce(new Set(C.current).add(e))},[ce]),Ve=o.useCallback(e=>{if(!C.current.has(e))return;const s=H.current.get(e);s&&se.current.set(e,s),S.current===e&&(S.current=null),window.requestAnimationFrame(()=>We.current())},[]),Ge=o.useCallback((e,s,l)=>{if(Math.abs(l-s)<1)return;const a=he.current.get(e);a!==void 0&&Math.abs(a-l)<1||(he.current.set(e,l),$t(e,l),at(d=>d+1))},[]);o.useLayoutEffect(()=>{if(fe.current!==v){fe.current=v;for(const e of N){if(e.diffOverride!==void 0)continue;const s=qt(e.path,e.repoRoot);Rt(s,e.repoRoot??void 0,D)}}},[N,D,v]),o.useLayoutEffect(()=>{const e=G.current;if(!e)return;const s=()=>{const a=Math.max(0,Math.ceil(e.clientHeight));if(a===0)return;const d=e.scrollTop;ye(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.useEffect(()=>{_&&Fe&&we(Fe)},[_,we,Fe]),o.useEffect(()=>{const e=new Set(Me.current);for(const s of Array.from(he.current.keys()))e.has(s)||he.current.delete(s);for(const s of Array.from(C.current))if(!e.has(s)){const l=new Set(C.current);l.delete(s),ce(l)}for(const s of Array.from(se.current.keys()))e.has(s)||se.current.delete(s);if(S.current&&!e.has(S.current)&&(S.current=null),N.length===0){S.current=null,se.current.clear(),ce(new Set);return}_e()},[N.length,Ee,_e,$e,ce]);const Xe=o.useCallback(e=>{G.current=e;const s=Q.current,l=e.scrollTop;Q.current=l;const a=d=>{const w=Be.current,u=Me.current;let R=0,M=w.tops.length;for(;R<M;){const Ae=Math.floor((R+M)/2);w.tops[Ae]<=d+1?R=Ae+1:M=Ae}const J=Math.min(u.length-1,Math.max(0,R-1)),ke=u[J]??null;ne.current={key:ke,top:w.tops[J]??0},ke&&we(ke)};Math.abs(l-s)>=Le?(Ze.flushSync(()=>{ye({top:l,height:e.clientHeight})}),a(l)):K.current===null&&(K.current=window.requestAnimationFrame(()=>{K.current=null;const d=G.current;if(d){const w=d.scrollTop;ye({top:w,height:d.clientHeight}),a(w)}})),L?.(e)},[L,we]);o.useEffect(()=>()=>{K.current!==null&&window.cancelAnimationFrame(K.current)},[]),o.useLayoutEffect(()=>{const e=G.current;if(!e)return;const s=ne.current;if(s.key===null)return;const l=me.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;Q.current=d,ye(w=>({top:d,height:w.height})),typeof e.scrollTo=="function"?e.scrollTo({top:d,behavior:"instant"}):e.scrollTop=d},[k]),o.useLayoutEffect(()=>{const e=Me.current,s=k.tops;if(e.length===0){ne.current={key:null,top:0};return}const l=Q.current,a=l+(G.current?.clientHeight??Z.height),d=ne.current;if(d.key!==null){const M=me.current.get(d.key);if(M!==void 0){const J=s[M]??0;if(J+(k.heights[M]??Ye)>l&&J<a){ne.current={key:d.key,top:J};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));ne.current={key:e[R]??null,top:s[R]??0}}),o.useLayoutEffect(()=>{if(!oe)return;const e=X.current;if(e?.key===oe&&e.nonce===re)return;const s=me.current.get(oe);if(s===void 0)return;we(oe),ne.current={key:oe,top:k.tops[s]??0};const l=G.current;if(!l||l.clientHeight===0||Z.height!==l.clientHeight)return;X.current={key:oe,nonce:re};const a=k.tops[s]??0;typeof l.scrollTo=="function"?l.scrollTo({top:a,behavior:"instant"}):l.scrollTop=a;const d=l.scrollTop;Q.current=d,ye({top:d,height:l.clientHeight})},[k,Z.height,we,oe,re]),o.useLayoutEffect(()=>{if(Y===void 0||oe)return;const e=Ee;if(be.current===e||le&&be.current!==null)return;const s=G.current;if(!s)return;be.current=e;const l=Math.max(0,k.bottom-s.clientHeight),a=Math.min(Math.max(0,Y),l);typeof s.scrollTo=="function"?s.scrollTo({top:a,behavior:"instant"}):s.scrollTop=a;const d=s.scrollTop;Q.current=d,ye({top:d,height:s.clientHeight})},[k.bottom,Y,Ee,le,oe]);const it=o.useCallback((e,s)=>{const l=ve(e),a=H.current.get(e.key),d=a!==void 0&&Vt(se.current.get(e.key),a);return r.jsx(Xt,{item:e,repoRoot:e.repoRoot,selectionPath:e.key,displayName:e.displayName,displayDir:e.displayDir,selected:l,activePane:_,visible:Ie.has(e.key),reusableContent:d,estimatedHeight:s,lightweight:!1,wrap:W,viewType:p,inlineMode:j,diffOptions:D,reloadKey:v,auditRecords:e.auditRecords,diffOverride:e.diffOverride,oldSourceRef:e.oldSourceRef,renderStreamBadge:T,onInsertDiffReference:e.onInsertDiffReference??F,onHunkGitAction:e.onHunkGitAction??B,previewReverts:e.previewReverts,onReferenceCopied:P,insertedReferenceKey:q,copiedReferenceKey:I,onClearAuditRecord:O,onContentReady:Ve,onHeightChange:Ge})},[_,I,D,p,Ve,Ge,j,q,ve,Ie,O,B,F,P,v,T,W]),lt=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)+Z.height)},children:$e.map(e=>{const s=N[e];return s?r.jsx("div",{"data-diff-canvas-slot":s.key,className:"absolute inset-x-0",style:{top:k.tops[e]},children:it(s,k.heights[e])},s.key):null})}),ut=r.jsx("div",{ref:G,className:"termdock-diff-stream termdock-diff-stream-scroller h-full max-h-full min-h-0 overflow-y-auto overscroll-contain bg-surface [overflow-anchor:none]",onScroll:e=>Xe(e.currentTarget),children:lt});return r.jsx(Ht,{groups:n,mode:h,onModeChange:i,selectedKey:c,collapsedDirectoryKeys:y,onToggleDirectory:x,onSelectFile:m,renderLeading:g,renderTrailing:f,renderDirectoryTrailing:b,renderSubtitle:z,detail:ut,mobile:$,backLabel:ae,compact:ue,emptyContent:U,listPrefix:de,aiContent:pe,listContainerClassName:xe,detailContainerClassName:ge,renderListHeader:ee,renderMobileDetailHeader:V,externalSwiperRef:je,onMobileSlideChange:Ne,slideToDetailOnMobile:Se,desktopLayout:ie,onDetailScroll:Xe,desktopSidePanel:te,desktopListClassName:A,detailOwnsScroll:!0})}const Xt=o.memo(function({item:n,renderStreamBadge:c,...m}){return r.jsx(Wt,{...m,file:Kt(n),renderBadge:h=>c(h,n)})});function Kt(t){return{path:t.path,oldPath:t.oldPath,absolutePath:t.absolutePath,status:t.status}}function qt(t,n){if(t)return n&&t.startsWith(`${n}/`)?t.slice(n.length+1):t}export{Jt as C,tr as D,Nt as L,It as f,er as n};
@@ -1,2 +1,2 @@
1
- import{bi as i}from"./app-DnjpR35Q.js";import{b as n}from"./dnd-BCFAPC0L.js";import{D as I}from"./DiffReview-5MLGwl3s.js";import"./react-XDCjal2T.js";import"./terminal-C7X98Amf.js";import"./gestureArbiter--6cZMOnD.js";import"./sparkles-DceTfvKw.js";import"./DiffViewer-PrcRXQq0.js";import"./referenceLongPress-jOxtSE5l.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{bk as i}from"./app-Cx1S0NEn.js";import{b as n}from"./dnd-BCFAPC0L.js";import{D as I}from"./DiffReview-B4MgHev_.js";import"./react-XDCjal2T.js";import"./terminal-C7X98Amf.js";import"./gestureArbiter-CDxeAcBI.js";import"./sparkles-DZP-rTUQ.js";import"./DiffViewer-B5Fj1S7h.js";import"./referenceLongPress-1MdQQqBu.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{a6 as Oi,bi as h,_ as Ii,cW as Un,bA as Xn,cM as Fi,cQ as Hi,aF as Bi,bE as zi,F as Vi,L as Ur,e as Xr,c as Yr,bc as Gi,aD as Ms}from"./app-DnjpR35Q.js";import{b as S}from"./dnd-BCFAPC0L.js";import{u as Wi,G as Fn}from"./referenceLongPress-jOxtSE5l.js";const Ki=[["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"}]],Ui=Oi("link",Ki);function Jr(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(s){return Object.getOwnPropertyDescriptor(e,s).enumerable}))),t.push.apply(t,r)}return t}function re(e){for(var n=1;n<arguments.length;n++){var t=arguments[n]!=null?arguments[n]:{};n%2?Jr(Object(t),!0).forEach((function(r){Yn(e,r,t[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):Jr(Object(t)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}))}return e}function Yn(e,n,t){return(n=(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)})(n))in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function mt(e,n){if(e==null)return{};var t,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,n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)t=i[r],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(s[t]=e[t])}return s}function De(e,n){return Yi(e)||(function(t,r){var s=t==null?null:typeof Symbol<"u"&&t[Symbol.iterator]||t["@@iterator"];if(s!=null){var i,o,a,l,c=[],u=!0,f=!1;try{if(a=(s=s.call(t)).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,n)||or(e,n)||Zi()}function Xi(e){return(function(n){if(Array.isArray(n))return Jn(n)})(e)||Ji(e)||or(e)||(function(){throw new TypeError(`Invalid attempt to spread non-iterable instance.
2
+ import{a7 as Oi,bk as h,_ as Ii,cY as Un,bC as Xn,cO as Fi,cS as Hi,aG as Bi,bG as zi,G as Vi,L as Ur,e as Xr,c as Yr,be as Gi,aE as Ms}from"./app-Cx1S0NEn.js";import{b as S}from"./dnd-BCFAPC0L.js";import{u as Wi,G as Fn}from"./referenceLongPress-1MdQQqBu.js";const Ki=[["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"}]],Ui=Oi("link",Ki);function Jr(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(s){return Object.getOwnPropertyDescriptor(e,s).enumerable}))),t.push.apply(t,r)}return t}function re(e){for(var n=1;n<arguments.length;n++){var t=arguments[n]!=null?arguments[n]:{};n%2?Jr(Object(t),!0).forEach((function(r){Yn(e,r,t[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):Jr(Object(t)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}))}return e}function Yn(e,n,t){return(n=(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)})(n))in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function mt(e,n){if(e==null)return{};var t,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,n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)t=i[r],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(s[t]=e[t])}return s}function De(e,n){return Yi(e)||(function(t,r){var s=t==null?null:typeof Symbol<"u"&&t[Symbol.iterator]||t["@@iterator"];if(s!=null){var i,o,a,l,c=[],u=!0,f=!1;try{if(a=(s=s.call(t)).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,n)||or(e,n)||Zi()}function Xi(e){return(function(n){if(Array.isArray(n))return Jn(n)})(e)||Ji(e)||or(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 Yi(e){if(Array.isArray(e))return e}function Ji(e){if(typeof Symbol<"u"&&e[Symbol.iterator]!=null||e["@@iterator"]!=null)return Array.from(e)}function or(e,n){if(e){if(typeof e=="string")return Jn(e,n);var t=Object.prototype.toString.call(e).slice(8,-1);return t==="Object"&&e.constructor&&(t=e.constructor.name),t==="Map"||t==="Set"?Array.from(e):t==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?Jn(e,n):void 0}}function Jn(e,n){(n==null||n>e.length)&&(n=e.length);for(var t=0,r=new Array(n);t<n;t++)r[t]=e[t];return r}function Zi(){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 Qi(e,n){var t=typeof Symbol<"u"&&e[Symbol.iterator]||e["@@iterator"];if(!t){if(Array.isArray(e)||(t=or(e))||n){t&&(e=t);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(){t=t.call(e)},n:function(){var l=t.next();return o=l.done,l},e:function(l){a=!0,i=l},f:function(){try{o||t.return==null||t.return()}finally{if(a)throw i}}}}var ln=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function Xt(e,n){return e(n={exports:{}},n.exports),n.exports}var ge=Xt((function(e){(function(){var n={}.hasOwnProperty;function t(){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=t.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)n.call(i,l)&&i[l]&&r.push(l)}}}return r.join(" ")}e.exports?(t.default=t,e.exports=t):window.classNames=t})()})),ue={hunkClassName:"",lineClassName:"",gutterClassName:"",codeClassName:"",monotonous:!1,gutterType:"default",viewType:"split",widgets:{},hideGutter:!1,selectedChanges:[],generateAnchorID:function(){},generateLineClassName:function(){},renderGutter:function(e){var n=e.renderDefault;return(0,e.wrapInAnchor)(n())},codeEvents:{},gutterEvents:{}},As=S.createContext(ue),qi=As.Provider,eo=function(){return S.useContext(As)};Xt((function(e,n){(function(t){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(`
@@ -34,4 +34,4 @@ ${r.length>0?`${r.join(`
34
34
  `);let r=2166136261;for(let s=0;s<t.length;s+=1)r^=t.charCodeAt(s),r=Math.imul(r,16777619);return(r>>>0).toString(16).padStart(8,"0")}function oi(e){const n=e.changes.filter(r=>r.type==="insert"||r.type==="delete").map(r=>`${r.type}:${r.content}`).join(`
35
35
  `);let t=2166136261;for(let r=0;r<n.length;r+=1)t^=n.charCodeAt(r),t=Math.imul(t,16777619);return(t>>>0).toString(16).padStart(8,"0")}function Mc(e){return e&&"lineNumber"in e&&typeof e.lineNumber=="number"?e.lineNumber:null}function Ac(e){const n=Array.from(e.matchAll(/^diff --git /gmu),t=>t.index);return n.length===0?e?[e]:[]:n.map((t,r)=>e.slice(t,n[r+1]??e.length))}function Ec(e){const n=[];let t=0;for(;t<e.changes.length;){const r=e.changes[t];if(r.type==="normal"){n.push(r),t+=1;continue}const s=[];for(;t<e.changes.length&&e.changes[t].type!=="normal";)s.push(e.changes[t]),t+=1;for(const{deletes:i,inserts:o}of Al(s))for(let a=0;a<Math.max(i.length,o.length);a+=1)i[a]&&n.push(i[a]),o[a]&&n.push(o[a])}return{...e,changes:n}}function Gn(e,n){return`${e}\0${n}`}function yn(e,n){return`${e??""}\0${n}`}function ai(e,n){return e===n||n.endsWith(`/${e}`)||e.endsWith(`/${n}`)}function $c(e){return typeof e.sectionIndex=="number"||typeof e.sectionFingerprint=="string"&&e.sectionFingerprint.length>0}function Dc(e,n,t,r,s){if(!e||e.length===0)return{fingerprint:s};const i=yn(n,t);let o;for(const a of e){if($c(a))continue;const l=[a.filePath,a.newPath,a.oldPath].filter(d=>typeof d=="string"&&d.length>0),c=l.some(d=>yn(a.repoRoot,d)===i),u=l.some(d=>ai(d,t));if(c||u){if(a.fingerprint===s)return{current:a,fingerprint:s};!o&&a.hunkHeader===r&&(o=a)}}return{stale:o,fingerprint:s}}function Pc(e,n,t,r,s,i,o){if(!e||e.length===0)return{fingerprint:o};const a=yn(n,t);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=>yn(c.repoRoot,d)===a)||u.some(d=>ai(d,t)))||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 Tc(e){const n=e.changes[e.changes.length-1];return n?me(n):null}function Lc(e){let n=0;for(const t of e)n=Math.max(n,t.oldStart+Math.max(0,t.oldLines-1),t.newStart+Math.max(0,t.newLines-1));return Math.max(3,String(n).length+.5)}function Rc(e){return e instanceof DOMException&&e.name==="AbortError"}function Wn(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 Kn(e){if(e.tooLarge){const n=Wn(e.size),t=Wn(e.maxBytes);return`Diff is too large${n?` (${n}`:""}${t?`${n?", ":" ("}limit ${t}`:""}${n||t?")":""}.`}if(e.skippedFiles&&e.skippedFiles.length>0){const n=e.skippedFiles[0],t=Wn(n.size),r=e.skippedFiles.length>1?` and ${e.skippedFiles.length-1} more file(s)`:"";return n.reason==="binary-file"?`Binary file changed: ${n.path}${t?` (${t})`:""}. Content was not loaded${r}.`:`Skipped large untracked file ${n.path}${t?` (${t})`:""}${r}.`}return null}function Oc(e){if(!e)return!1;let n=1;for(let t=0;t<e.length;t+=1)if(e.charCodeAt(t)===10&&(n+=1,n>uc))return!0;return!1}function Ic(e){return e==="unified"||e==="split"}function Fc(){return Xn(ri,Ic)??"unified"}function Hc(e,n){return typeof e!="number"||!Number.isFinite(e)||e<=0?null:new Intl.DateTimeFormat(n==="zh"?"zh-CN":"en",{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"}).format(new Date(e))}function Bc(){return typeof window<"u"&&typeof window.matchMedia=="function"&&window.matchMedia(si).matches}function zc(e){return typeof HTMLElement>"u"||!(e instanceof HTMLElement)?!1:e.tagName==="INPUT"||e.tagName==="TEXTAREA"||e.isContentEditable||!!e.closest(".xterm")}function Zc({filePath:e,repoRoot:n,referenceFilePath:t,interactionId:r,requestSlotId:s,changedFile:i,onInsertDiffReference:o,onHunkGitAction:a,previewReverts:l,onReferenceCopied:c,insertedReferenceKey:u,copiedReferenceKey:f,wrap:d=!1,reloadKey:g=0,embedded:m=!1,active:w=!0,lightweight:v=!1,auditRecords:y,diffOverride:_,preparedDiff:p,viewType:M,inlineMode:x="words",diffOptions:A,oldSourceOverride:D,oldSourceRef:P,onClearAuditRecord:T,onContentReady:O,onSummaryChange:F}){const{t:k,locale:W}=Fi(),V=Hi(N=>N.rootPath),ve=S.useRef(null);if(ve.current===null){const N=i?.repoRoot??n??(e?.startsWith("/")?null:V),j=gn(e,N),b=_===void 0&&p===void 0?sr(j,N??void 0,A):void 0,C=_!==void 0?_:b?.diff??null,E=v?"none":x,H=Vn(e)??void 0,L=bn(j,N??void 0,A,E,H),$=C?he.get(L):void 0,R=$?.diffContent===C?$:void 0;R&&(he.delete(L),he.set(L,R)),ve.current={diffContent:C,diffNotice:b?Kn(b):null,diffError:b?.error??null,diffLoading:!!(w&&_===void 0&&p===void 0&&!b),parsedFiles:R?.result.files??[],workerTokens:R?.result.tokens??new Map,parsedDiffInput:R?{cacheKey:L,diffContent:C,oldSource:R.oldSource}:null,oldSourceContent:R?.oldSource??null,oldSourceResolvedFromCache:R?.oldSource!==void 0}}const ne=ve.current,[Le,Ve]=S.useState(()=>Fc()),[Ge,xn]=S.useState(()=>Bc()),[J,pe]=S.useState(ne.diffContent),[Mn,Re]=S.useState(ne.diffNotice),[An,ye]=S.useState(ne.diffLoading),[En,le]=S.useState(ne.diffError),[We,nt]=S.useState(0),pt=S.useRef(We),[Oe,rt]=S.useState(ne.parsedFiles),[yt,_t]=S.useState(ne.workerTokens),[be,$n]=S.useState(ne.parsedDiffInput),[st,it]=S.useState(ne.oldSourceContent),[li,Ke]=S.useState(()=>!!(w&&p===void 0&&D===void 0&&_===void 0&&(i?.repoRoot??n??V)&&e&&!i?.untracked&&i?.status!=="added"&&!ne.oldSourceResolvedFromCache)),ci=S.useRef(ne.oldSourceResolvedFromCache?g:null),[Ne,Nt]=S.useState(null),wr=S.useRef(g),xe=Wi(c),ce=(M??Le)==="split"&&Ge?"split":"unified";S.useEffect(()=>{if(typeof window>"u"||typeof window.matchMedia!="function")return;const N=window.matchMedia(si),j=()=>xn(N.matches);return j(),N.addEventListener?.("change",j),()=>N.removeEventListener?.("change",j)},[]);const pr=S.useCallback(N=>{Ve(N),Un(ri,N)},[]),{whitespace:ui,context:fi,setWhitespace:di,setContext:hi}=ac(),yr=_!==void 0||p!==void 0,St=S.useRef(null),kt=S.useRef(!1),[gi,_r]=S.useState(null),Yt=S.useCallback(N=>{const j=St.current;if(!j)return;const b=j.querySelectorAll("[data-diff-hunk-anchor]");b.length!==0&&_r(C=>{const H=((C!==null&&C>=0&&C<b.length?C:N===1?-1:0)+N+b.length)%b.length,L=b[H];return L instanceof HTMLElement&&L.scrollIntoView({behavior:"smooth",block:"start"}),H})},[]);S.useEffect(()=>{const N=j=>{if(j.key!=="F7")return;const b=St.current;if(!b)return;const C=document.activeElement,E=C instanceof Node&&b.contains(C);!kt.current&&!E||zc(C)||(j.preventDefault(),Yt(j.shiftKey?-1:1))};return window.addEventListener("keydown",N),()=>window.removeEventListener("keydown",N)},[Yt]);const we=i?.repoRoot??null,Ct=i?.status??null,Nr=we??n??V,Jt=we??n??V,Dn=t??i?.absolutePath??ir(Jt,e);S.useEffect(()=>{if(p!==void 0){it(null),Ke(!1);return}if(D!==void 0){it(D),Ke(!1);return}const N=we??n??V,j=_?.match(/^index ([a-f0-9]{7,64})\.\.[a-f0-9]+/im)?.[1];if(!w||_!==void 0&&(!j&&!P||j&&/^0+$/.test(j))||!N||!e||_===void 0&&(i?.untracked||Ct==="added")){it(null),Ke(!1);return}if(_===void 0&&ci.current===g){Ke(!1);return}it(null),Ke(!0);const b=new AbortController,C=j?"blob":P?"merge-base":"ref";return Bi(i?.oldPath??e,N,j??P??"HEAD",b.signal,C).then(E=>{b.signal.aborted||(it(E.truncated||E.error?null:E.content),Ke(!1))}).catch(()=>{b.signal.aborted||(it(null),Ke(!1))}),()=>b.abort()},[w,i?.untracked,i?.oldPath,we,Ct,_,e,D,P,p,g,n,V]),S.useEffect(()=>{if(p!==void 0)return;if(_!==void 0){pe(_),Re(null),le(null),ye(!1),Nt(null);return}if(!w){ye(!1),te("effect_skip_inactive",{interactionId:r,requestSlotId:s,filePath:e,repoRoot:n,changedFileRepoRoot:we,rootPath:V});return}let N=!1,j=null;const b=new AbortController,C=e,E=we??n??(C?.startsWith("/")?null:V),H=++dc,L=`diff-${Date.now().toString(36)}-${(++hc).toString(36)}`;let $=!1;const R=performance.now(),B=(z,Ae={})=>{$||($=!0,hn("end",{loadingId:H,interactionId:r,requestSlotId:s,traceId:L,reason:z,durationMs:Math.round(performance.now()-R),filePath:C,gitRoot:E,...Ae}))},Z=gn(C,E),Se=C&&E&&!C.startsWith("/")?`${E}/${C}`:C,q=wr.current!==g||pt.current!==We;if(wr.current=g,pt.current=We,C&&!E){te("effect_wait_for_repo_root",{interactionId:r,requestSlotId:s,traceId:L,filePath:C,repoRoot:n,changedFileRepoRoot:we,rootPath:V}),pe(null),Re(null),le(null),Nt(null),ye(!1),B("waiting_for_repo_root");return}const U=sr(Z,E??void 0,A);hn("start",{loadingId:H,interactionId:r,requestSlotId:s,traceId:L,filePath:C,requestPath:Z,gitRoot:E,readablePath:Se,forceReload:q,hasCachedDiff:!!U,embedded:m,active:w});const ot=window.setTimeout(()=>{$||N||hn("still_active",{loadingId:H,interactionId:r,requestSlotId:s,traceId:L,filePath:C,requestPath:Z,gitRoot:E,durationMs:Math.round(performance.now()-R),hasCachedDiff:!!U,controllerAborted:b.signal.aborted,abortReason:b.signal.aborted?String(b.signal.reason??""):void 0,cacheSize:oe.size,promiseSize:ae.size})},3e3),at=window.setTimeout(()=>{$||N||(hn("still_active_long",{loadingId:H,interactionId:r,requestSlotId:s,traceId:L,filePath:C,requestPath:Z,gitRoot:E,durationMs:Math.round(performance.now()-R),hasCachedDiff:!!U,controllerAborted:b.signal.aborted,abortReason:b.signal.aborted?String(b.signal.reason??""):void 0,cacheSize:oe.size,promiseSize:ae.size}),le("Diff response is taking too long to finish in the browser. Try selecting the file again."),ye(!1),B("client_watchdog_timeout"))},1e4);te("effect_start",{interactionId:r,requestSlotId:s,traceId:L,loadingId:H,filePath:C,requestPath:Z,gitRoot:E,readablePath:Se,forceReload:q,hasCachedDiff:!!U,cachedBytes:U?.diff?.length??0}),pe(U?.diff??null),Re(U?Kn(U):null),ye(!U),le(U?.error??null),Nt(null);const X=()=>(q&&U?pc(Z,E??void 0,A):yc(Z,E??void 0,b.signal,q,L,r,s,A)).then(z=>{if(N)return;const Ae=Kn(z),se=Oc(z.diff);Re(se?"Diff has too many lines to preview safely.":Ae),pe(z.tooLarge||se?"":z.diff),le(z.error??null),te("state_set_result",{interactionId:r,requestSlotId:s,traceId:L,loadingId:H,filePath:C,requestPath:Z,gitRoot:E,bytes:z.diff?.length??0,tooLargeToRender:se,resultTooLarge:!!z.tooLarge,error:z.error??null})}).catch(z=>{if(N||Rc(z))return;const Ae=z instanceof Error?z.message:"Failed to load diff";U?.diff?(Re(Ae),le(null)):(pe(null),Re(null),le(Ae)),te("state_set_error",{interactionId:r,requestSlotId:s,traceId:L,filePath:C,requestPath:Z,gitRoot:E,error:Ae,hadCachedDiff:!!U?.diff})}).finally(()=>{N||ye(!1),B(N?"cancelled_finally":"finally"),te("load_text_finally",{interactionId:r,requestSlotId:s,traceId:L,loadingId:H,filePath:C,requestPath:Z,gitRoot:E,cancelled:N})});return U&&!q?(ye(!1),B("cache_hit")):U&&q?X():_c(Se,Ct?{status:Ct}:null)?zi(Se,b.signal,"view_diff_image",s?`${s}:image`:void 0).then(z=>{N||(j=URL.createObjectURL(z.blob),Nt({objectUrl:j,size:z.size,mimeType:z.mimeType}),B("image_preview_loaded",{bytes:z.size,mimeType:z.mimeType}))}).catch(()=>{if(!(N||b.signal.aborted))return X()}).finally(()=>{N||ye(!1),N&&B("image_cancelled_finally")}):X(),()=>{N=!0,b.abort(),Vi(s),window.clearTimeout(ot),window.clearTimeout(at),j&&URL.revokeObjectURL(j),B("cleanup"),te("effect_cleanup",{interactionId:r,requestSlotId:s,traceId:L,loadingId:H,filePath:C,requestPath:Z,gitRoot:E,loadingEnded:$,signalAborted:b.signal.aborted,abortReason:b.signal.aborted?String(b.signal.reason??""):void 0,cacheSize:oe.size,promiseSize:ae.size})}},[w,we,Ct,A,_,e,We,r,p,g,n,s,V]),S.useEffect(()=>{if(p!==void 0)return;if(!J||J.trim()===""){rt([]),_t(new Map),$n(null);return}let N=!1;const j=performance.now(),b=we??n??(e?.startsWith("/")?null:V),C=gn(e,b),E=v?"none":x,H=Vn(e)??void 0,L=bn(C,b??void 0,A,E,H);return vc(J,st??void 0,C,b??void 0,A,E,H).then($=>{N||(rt($.files),_t($.tokens),$n({cacheKey:L,diffContent:J,oldSource:st??void 0}),te("worker_parse_done",{filePath:e,bytes:J.length,files:$.files.length,parseMs:$.parseMs,tokenizeMs:$.tokenizeMs,durationMs:Math.round(performance.now()-j)}))}).catch($=>{N||(rt([]),_t(new Map),$n({cacheKey:L,diffContent:J,oldSource:st??void 0}),le($ instanceof Error?$.message:String($)),te("worker_parse_error",{filePath:e,bytes:J.length,durationMs:Math.round(performance.now()-j),error:$ instanceof Error?$.message:String($)}))}),()=>{N=!0}},[we,J,A,e,x,v,st,p,n,V]);const de=p!==void 0?p?.diffContent??null:J,jt=p!==void 0?p?.diffNotice??null:Mn,Sr=p!==void 0?p?.diffError??null:En,xt=Sr?.toLowerCase().includes("signal is aborted")?null:Sr,kr=we??n??(e?.startsWith("/")?null:V),mi=gn(e,kr),Cr=bn(mi,kr??void 0,A,v?"none":x,Vn(e)??void 0),vi=!J||be?.cacheKey===Cr&&be.diffContent===J&&be.oldSource===(st??void 0),Zt=p!==void 0?!1:An||li||!vi,jr=p!==void 0?p?.files??[]:Oe,I=S.useMemo(()=>jr.map(N=>N.type==="modify"&&N.oldPath!==N.newPath&&N.oldPath!=="/dev/null"&&N.newPath!=="/dev/null"?{...N,type:"rename"}:N),[jr]);S.useEffect(()=>{!w||Zt||de===null&&!xt&&!Ne&&_===void 0&&p===void 0||O?.()},[w,de,xt,Zt,_,Ne,O,p]);const Ue=D??st,Ie=S.useMemo(()=>{if(Ue==null||I.length!==1)return null;const N=Xl(Ue);return I[0].hunks.every(b=>b.changes.every(C=>C.type==="insert"||N[(C.type==="delete"?C.lineNumber:C.oldLineNumber)-1]===C.content))?N:null},[Ue,I]),[Qt,bi]=S.useState(null),Xe=S.useMemo(()=>{if(I.length!==1||!Ie)return null;const N=Qt?.files===I&&Qt.source===Ue?Qt.values:{};return I[0].hunks.map((j,b)=>Ss(j,Ie,N[b]))},[I,Ie,Ue,Qt]),wi=(N,j)=>{Ie&&bi(b=>{const C=b?.files===I&&b.source===Ue?b.values:{},E=I[0].hunks.map(($,R)=>Ss($,Ie,C[R])),H=Math.min(_s,Ns(E,N,j,Ie.length)),L=C[N]??{before:0,after:0};return{files:I,source:Ue,values:{...C,[N]:{...L,[j]:L[j]+H}}}})},xr=y??[],pi=p!==void 0?p?.tokens??new Map:yt,qt=S.useMemo(()=>{let N=0,j=0;for(const b of I)for(const C of b.hunks)for(const E of C.changes)E.type==="insert"&&(N+=1),E.type==="delete"&&(j+=1);return{additions:N,deletions:j}},[I]);S.useEffect(()=>{F&&F(I.length>0?{files:I.length,...qt}:null)},[I.length,F,qt]);const yi=S.useMemo(()=>{const N=new Map;for(const j of I){let b=0,C=0;for(const E of j.hunks)for(const H of E.changes)H.type==="insert"&&(b+=1),H.type==="delete"&&(C+=1);N.set(`${j.oldRevision}-${j.newRevision}-${j.newPath}`,{additions:b,deletions:C})}return N},[I]),Me=js(e,{name:k("diffViewer.workingTree"),dir:k("diffViewer.allUnstaged")}),Ye=`diff:whole:${e??"all"}`,en=S.useMemo(()=>{if(!de)return"";const N={repoRoot:Jt,selectedFilePath:e,referenceFilePath:Dn},j=I.flatMap(b=>{const C=b.newPath&&!fe(b.newPath)?b.newPath:b.oldPath&&!fe(b.oldPath)?b.oldPath:"unknown file",E=ke(C,N);return b.hunks.map((H,L)=>({filePath:E,hunkIndex:L,hunk:H}))});return Bt(kc(de,I,N),{hunks:j})},[de,e,I,Jt,Dn]),_i=S.useCallback(()=>{!en||!o||o(e?`${Me.name} diff`:k("diffViewer.allDiffLabel"),en,Ye)},[e,o,k,Me.name,Ye,en]),[Pn,Mr]=S.useState(null),[tn,nn]=S.useState(null),[Mt,Ni]=S.useState(null),Tn=S.useRef(!1),[At,rn]=S.useState(null);S.useEffect(()=>{nn(null),rn(null)},[I]),S.useEffect(()=>{if(!At)return;const N=window.setTimeout(()=>rn(null),5e3);return()=>window.clearTimeout(N)},[At]);const Et=we??n??(e?.startsWith("/")?null:V),Ar=!!(a&&Et&&_==null&&p==null),Er=S.useCallback(async(N,j,b,C,E,H)=>{const L=N==="revert-worktree"?l?.[b.hunks[E]?.content]:void 0;if(!a||!Et&&!L||Tn.current)return;const $=L?.patch??(de?Sc(de,b,C,E):null);if(!$){nn({key:j,message:k("diffViewer.hunkActionUnavailable")});return}Tn.current=!0,Mr(j),nn(null);try{await a(L??{mode:N,patch:$,cwd:Et,path:ir(Et,H)??H}),Ni({key:j,mode:N,diff:de}),L||nt(R=>R+1)}catch(R){nn({key:j,message:R instanceof Error?R.message:String(R)})}finally{Tn.current=!1,Mr(R=>R===j?null:R),rn(R=>R===j?null:R)}},[a,l,Et,de,k]),Ln=S.useMemo(()=>{const N=new Map,j=new Map;for(const b of I){const C=`${b.oldRevision}-${b.newRevision}-${b.newPath}`,E=b.newPath&&!fe(b.newPath)?b.newPath:b.oldPath&&!fe(b.oldPath)?b.oldPath:"unknown file",H=v?[]:b.hunks.flatMap(R=>R.changes.filter(B=>B.type==="delete").map(B=>({content:B.content,lineNumber:B.lineNumber}))),L=v?[]:b.hunks.flatMap(R=>R.changes.filter(B=>B.type==="insert").map(B=>({content:B.content,lineNumber:B.lineNumber}))),$=v?[]:El(H,L);for(const[R,B]of b.hunks.entries()){const Z=new Set(B.changes.filter(X=>X.type==="delete").map(X=>X.lineNumber)),Se=new Set(B.changes.filter(X=>X.type==="insert").map(X=>X.lineNumber)),q=$.filter(X=>Z.has(X.oldLineNumber)||Se.has(X.newLineNumber)),U=Xe?.[R]??B,ot=ce==="split"?Ec(U):U,at=Ol(ot,ce);N.set(B,{hunkSections:v?[]:Cc(B),movedCandidates:q,movedOldLines:new Set(q.map(X=>X.oldLineNumber)),movedNewLines:new Set(q.map(X=>X.newLineNumber)),displayHunk:ot,rowModel:at}),j.set(Gn(E,R),{fileKey:C,hunkIndex:R,rowModel:at})}}return{byHunk:N,byHunkId:j}},[I,v,ce,Xe]),$r=Ln.byHunkId,Dr=S.useMemo(()=>I.reduce((N,j)=>N+j.hunks.length,0),[I]),Si=S.useMemo(()=>Ac(de??""),[de]);S.useEffect(()=>{_r(null)},[I]);const $t=!!o,[_e,Pr]=S.useState(null),[Tr,sn]=S.useState(null),Lr=typeof window<"u"&&typeof window.matchMedia=="function"&&window.matchMedia("(max-width: 767px)").matches;S.useEffect(()=>{Pr(null)},[I,ce,g,$t,Xe]),S.useLayoutEffect(()=>{if(!_e){sn(null);return}const N=St.current?.querySelector(".diff-line-ref-selected"),j=N?.closest("[data-diff-file-anchor]");if(!N||!j){sn(null);return}const b=N.getBoundingClientRect(),C=typeof window>"u"?0:window.innerHeight;if(C>0&&(b.bottom<0||b.top>C)){sn(null);return}sn(b.top-j.getBoundingClientRect().top+b.height/2)},[_e,I,ce,d]);const Rr=S.useCallback((N,j)=>{if(!$t||j.button!==0||_l())return;const b=j.currentTarget,C=b.closest("[data-diff-file-anchor]")?.dataset.diffFileAnchor,E=Number(b.closest("[data-diff-hunk-index]")?.dataset.diffHunkIndex);if(!C||!Number.isInteger(E))return;const H=Gn(C,E),L=$r.get(H);if(!L)return;const $=b.dataset.changeKey??b.parentElement?.querySelector("[data-change-key]")?.dataset.changeKey,R=$?L.rowModel.rowIndexByChangeKey.get($):void 0;R!==void 0&&Pr(B=>{const Z=Il(B,H,R);return Z?{...Z,fileKey:L.fileKey,hunkIndex:E}:null})},[$r,$t]),Or=S.useMemo(()=>$t?{onClick:Rr}:void 0,[Rr,$t]),Ir=N=>{let j=0;return h.jsx(h.Fragment,{children:I.map((b,C)=>{const E=`${b.oldRevision}-${b.newRevision}-${b.newPath}`,H=Si[C]?.includes("\")??!1,L=yi.get(E)??{additions:0,deletions:0},$=b.newPath&&!fe(b.newPath)?b.newPath:b.oldPath&&!fe(b.oldPath)?b.oldPath:"unknown file",R={repoRoot:Jt,selectedFilePath:e,referenceFilePath:Dn},B=ke($,R),Z=ke(b.oldPath||$,R),Se=ke(b.newPath||$,R),q=js($,{name:"unknown file",dir:""}),U=b.type==="rename"&&b.oldPath&&b.newPath&&b.oldPath!==b.newPath?`${b.oldPath} → ${b.newPath}`:null,ot=!N||I.length>1,at=[`diff --git ${Ce("a",Z)} ${Ce("b",Se)}`,...b.hunks.flatMap(K=>[K.content,...K.changes.map(gt)])].join(`
36
36
  `),X=Bt(at,{hunks:b.hunks.map((K,Q)=>({filePath:B,hunkIndex:Q,hunk:K}))}),z=`diff:file:${$}`,Ae=u===z||f===z,se=(()=>{if(!_e||_e.fileKey!==E)return null;const K=b.hunks[_e.hunkIndex],Q=K?Ln.byHunk.get(K)?.rowModel:void 0;if(!K||!Q)return null;const Dt=Hl(Xe?.[_e.hunkIndex]??K,Q,_e),Pt=Vl(Dt);if(Dt.length===0||!Pt)return null;const on=Gl($,_e.hunkIndex,_e);return{lineLabel:Pt,referenceKey:on,text:zl(B,_e.hunkIndex,K.content,`diff --git ${Ce("a",Z)} ${Ce("b",Se)}`,Dt)}})(),Hr=!!(se&&u===se.referenceKey),Br=!!(se&&f===se.referenceKey),ji={"--termdock-diff-gutter-width":`${Lc(Xe??b.hunks)}ch`};return h.jsxs("div",{"data-diff-file-anchor":$,className:m?"relative overflow-hidden bg-surface":"relative mt-3 border border-border/20 bg-surface",style:ji,children:[ot&&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:U??(b.newPath||b.oldPath),children:[h.jsx("div",{className:"truncate font-mono text-[11px] text-foreground",children:U??q.name}),!U&&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,z),...xe(X,z),className:`rounded-full px-2 py-0.5 text-[10px] font-semibold active:scale-95 ${Ae?"bg-surface-elevated text-foreground":"bg-primary/10 text-primary hover:bg-primary/20"}`,title:k("diffViewer.insertFileDiff"),children:k(f===z?"rightSidebar.copied":u===z?"rightSidebar.inserted":"diffViewer.insertFileShort")}),h.jsx("span",{className:"text-[10px] font-medium uppercase tracking-[0.12em] text-muted-foreground",children:b.type})]})]}),b.hunks.length===0?h.jsxs("div",{className:"bg-surface-2 px-3 py-5 text-center text-xs text-muted-foreground",children:[h.jsx(Fn,{size:18,className:"mx-auto mb-2 text-muted-foreground/80"}),k("diffViewer.binaryOrEmpty")]}):h.jsx(Yl,{enabled:ce==="split"&&!d,label:k("rightSidebar.horizontalScrollHint"),className:`termdock-native-select overflow-x-auto termdock-diff-scroll ${ce==="split"?"diff-split":""} ${d?"termdock-diff-wrap":""}`,children:h.jsxs("div",{className:"termdock-diff-canvas min-w-full",children:[b.hunks.map((K,Q)=>{const Dt=j;j+=1;const Pt=`diff --git ${Ce("a",Z)} ${Ce("b",Se)}`,on=Bt([Pt,K.content,...K.changes.map(gt)].join(`
37
- `),{hunks:[{filePath:B,hunkIndex:Q,hunk:K}]}),Rn=xc(K),Ee=Dc(xr,Nr,$,K.content,Rn),lt=`diff:hunk:${$}:${Q}`,xi=u===lt||f===lt,an=`stage:${$}:${Q}`,Fe=`revert:${$}:${Q}`,zr=Mt?.diff===de,Vr=Pn!==null||zr||Zt,Gr=zr&&(Mt?.key===an||Mt?.key===Fe),Mi=Ar&&(!i||i.unstaged||i.untracked),On=tn&&(tn.key===an||tn.key===Fe)?tn.message:null,ct=Ln.byHunk.get(K),Ai=Gn($,Q),Ei=ct?.hunkSections??[],In=ct?.movedCandidates??[],$i=ct?.movedOldLines??new Set,Di=ct?.movedNewLines??new Set,Pi=ct?.displayHunk??K,Ti=ct?.rowModel,Wr=Y=>{const ee=Xe&&Ie?Ns(Xe,Q,Y,Ie.length):0;if(!ee)return null;const Je=k(Y==="before"?"diffViewer.expandAbove":"diffViewer.expandBelow",{count:Math.min(_s,ee)});return h.jsxs("button",{type:"button",onClick:()=>wi(Q,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":Je,children:[Y==="before"?h.jsx(Xr,{size:13}):h.jsx(Yr,{size:13}),Je]})},Li=Ei.reduce((Y,ee)=>{const Je=oi(ee),Tt=Pc(xr,Nr,$,K.content,Rn,ee.index,Je),ie=Tt.current??Tt.stale;if(!ie&&!o)return Y;const Lt=Tc(ee);if(!Lt)return Y;const He=`diff:section:${$}:${Q}:${ee.index}`,Be=o?jc(B,Q,K,ee,Pt):"",Rt=u===He||f===He,Kr=o?h.jsx("button",{type:"button",onClick:()=>o(`${q.name} hunk ${Q+1}.${ee.index+1}`,Be,He),...xe(Be,He),className:`shrink-0 rounded px-1.5 py-0.5 text-[10px] font-medium transition active:scale-95 ${Rt?"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:k(f===He?"rightSidebar.copied":u===He?"rightSidebar.inserted":"diffViewer.insertHunkShort")}):null;return Y[Lt]=h.jsx("div",{"data-diff-section-anchor":$,"data-diff-section-audit":$,"data-diff-hunk-index":Q,"data-diff-section-index":ee.index,"data-diff-section-fingerprint":Je,className:ie?`mx-2 my-1 min-w-0 rounded-md border px-2 py-1.5 text-[11px] leading-relaxed ${d?"max-w-full overflow-hidden":"w-max"} ${Tt.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||Kr||T)&&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"}),Kr,T&&h.jsx("button",{type:"button",onClick:()=>T(ie.id),className:"ml-auto shrink-0 rounded p-0.5 text-muted-foreground/60 transition hover:bg-surface-2 hover:text-foreground",title:k("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},{}),Ri=({changes:Y,defaultGenerate:ee})=>{const Je=ee(),Tt=Y.some(Be=>{const Rt=Mc(Be);return Rt===null?!1:Be?.type==="delete"?$i.has(Rt):Be?.type==="insert"&&Di.has(Rt)}),ie=Y.find(Be=>!!Be),Lt=ie===void 0?void 0:Ti?.rowIndexByChangeKey.get(me(ie)),He=Lt!==void 0&&Fl(_e,Ai,Lt);return`${Je}${Tt?" diff-line-moved":""}${He?" diff-line-ref-selected":""}`};return h.jsxs("div",{className:`diff-hunk scroll-mt-16 ${Dt===gi?"diff-hunk--jump-target":""}`,"data-diff-hunk-anchor":$,"data-diff-hunk-index":Q,"data-diff-hunk-fingerprint":Rn,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 ${d?"max-w-full flex-wrap overflow-hidden":"w-max whitespace-nowrap"}`,children:[o&&h.jsx("button",{type:"button",onClick:()=>o(`${q.name} hunk ${Q+1}`,on,lt),...xe(on,lt),className:`inline-flex h-6 shrink-0 items-center rounded-full px-2 text-[10px] font-semibold active:scale-95 ${xi?"bg-surface-elevated text-foreground":"bg-primary/15 text-primary hover:bg-primary/25"}`,title:k("diffViewer.insertHunkDiff"),children:k(f===lt?"rightSidebar.copied":u===lt?"rightSidebar.inserted":"diffViewer.insertHunkShort")}),Mi&&h.jsx("button",{type:"button",disabled:Vr,onClick:()=>{Er("stage",an,b,C,Q,$)},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:k("diffViewer.stageHunkTitle"),children:Pn===an?k("diffViewer.hunkActionApplying"):Gr&&Mt?.mode==="stage"?k("diffViewer.hunkActionStaged"):k("diffViewer.stageHunk")}),(Ar||a&&l?.[K.content])&&h.jsx("button",{type:"button",disabled:Vr,onClick:()=>{if(At!==Fe){rn(Fe);return}Er("revert-worktree",Fe,b,C,Q,$)},className:`inline-flex h-6 shrink-0 items-center rounded-full px-2 text-[10px] font-semibold transition active:scale-95 disabled:opacity-50 ${At===Fe?"bg-destructive/15 text-destructive hover:bg-destructive/25":"bg-surface-2 text-muted-foreground hover:bg-surface-elevated hover:text-foreground"}`,title:k("diffViewer.revertHunkTitle"),children:Pn===Fe?k("diffViewer.hunkActionApplying"):Gr&&Mt?.mode==="revert-worktree"?k("diffViewer.hunkActionReverted"):k(At===Fe?"diffViewer.revertHunkConfirm":"diffViewer.revertHunk")}),h.jsx("span",{className:"min-w-0 flex-1 truncate",children:K.content}),In.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:In.map(Y=>`-${Y.oldLineNumber} -> +${Y.newLineNumber}`).join(", "),children:["moved ",In.length]})]}),On&&h.jsx("div",{className:"mt-1 truncate text-[10px] text-destructive",title:On,children:k("diffViewer.hunkActionFailed",{message:On})}),(Ee.current||Ee.stale)&&(()=>{const Y=Ee.current??Ee.stale,ee=Hc(Y?.injectedAt,W);return h.jsxs("div",{className:`mt-1 min-w-0 rounded-md border px-2 py-1.5 text-[11px] leading-relaxed ${d?"max-w-full overflow-hidden":"w-max"} ${Ee.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:Ee.current?k("diffViewer.auditExplanation"):k("diffViewer.auditStale")}),h.jsx("span",{className:"font-mono text-[10px] text-muted-foreground",children:Ee.fingerprint}),ee&&h.jsx("span",{className:"truncate text-[10px] text-muted-foreground/70",children:k("diffViewer.auditGeneratedAt",{time:ee})}),T&&h.jsx("button",{type:"button",onClick:()=>Y&&T(Y.id),className:"ml-auto shrink-0 rounded p-0.5 text-muted-foreground/60 transition hover:bg-surface-2 hover:text-foreground",title:k("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:Ee.current?.explanation??Ee.stale?.explanation})]})})()]}),Wr("before"),h.jsx(pl,{viewType:ce,diffType:b.type,hunks:[Pi],tokens:pi.get(E),generateLineClassName:Ri,widgets:Li,codeEvents:Or,gutterEvents:Or,children:Y=>Y.map(ee=>h.jsx(Zs,{hunk:ee},ee.content))}),Wr("after")]},K.content)}),H&&h.jsx("div",{className:"diff-decoration bg-surface-2 px-3 py-1.5 text-[10px] text-muted-foreground",children:k("diffViewer.noFinalNewline")})]})}),se&&Tr!==null&&o&&h.jsxs("button",{type:"button",onClick:()=>o(`${q.name} ${se.lineLabel}`,se.text,se.referenceKey),...xe(se.text,se.referenceKey),style:{top:Tr},className:`${yl(Lr,Hr||Br)} right-2`,title:k("diffViewer.insertLineDiff"),children:[h.jsx(Ui,{size:Lr?13:11}),Br?k("rightSidebar.copied"):Hr?k("rightSidebar.inserted"):k("rightSidebar.insertLineRef",{lineLabel:se.lineLabel})]})]},E)})})},ki=Oe.length>0&&be?.cacheKey===Cr;if(Zt&&!(ki||_!==void 0&&Oe.length>0))return m?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(Ur,{size:18,className:"animate-spin"}),h.jsx("span",{children:k("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(Ur,{size:20,className:"animate-spin"}),h.jsx("span",{children:k("diffViewer.loading")})]});if(xt)return m?h.jsx("div",{className:"bg-destructive/5 px-3 py-3 text-xs text-destructive",children:xt}):h.jsx("div",{className:"mx-3 mt-3 border border-destructive/20 bg-destructive/5 px-4 py-4 text-sm text-destructive",children:xt});if(jt&&!de)return m?h.jsx("div",{className:"bg-[rgb(var(--warning-rgb)_/_0.12)] px-3 py-3 text-xs text-[color:var(--warning)]",children:jt}):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:jt});if(Ne){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:k("rightSidebar.imagePreviewHint")}),Ne.size!==null&&h.jsxs("span",{children:[Ne.size.toLocaleString()," bytes"]}),h.jsx("span",{children:Ne.mimeType}),Ne.dimensions&&h.jsxs("span",{children:[Ne.dimensions.width," × ",Ne.dimensions.height]})]}),h.jsx("div",{className:"flex min-h-64 items-center justify-center",children:h.jsx("img",{src:Ne.objectUrl,alt:Me.name,className:"max-h-[70vh] max-w-full rounded border border-border/15 bg-surface object-contain shadow-sm",onLoad:j=>{const b=j.currentTarget;Nt(C=>C&&{...C,dimensions:{width:b.naturalWidth,height:b.naturalHeight}})},onError:()=>le(k("rightSidebar.imageLoadFailed"))})})]});return m?h.jsxs("div",{className:"termdock-native-select overflow-hidden bg-surface",children:[xe.popoverNode,N]}):h.jsxs("div",{className:"termdock-diff px-3 py-2",children:[xe.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:Me.name}),h.jsx("div",{className:"mt-0.5 flex min-w-0 items-center gap-2 text-[11px] text-muted-foreground",children:Me.dir&&h.jsx("span",{className:"min-w-0 truncate",children:Me.dir})})]}),h.jsx("div",{className:"mt-3 overflow-hidden border border-border/20 bg-surface",children:N})]})}const Fr=jt?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:jt}):null;if(I.length===0)return m?h.jsxs("div",{className:"bg-surface-2 px-3 py-5 text-center text-xs text-muted-foreground",children:[h.jsx(Fn,{size:20,className:"mx-auto mb-2 text-muted-foreground/80"}),k(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(Fn,{size:24,className:"mx-auto mb-2 text-muted-foreground/80"}),k(e?"diffViewer.noFileChanges":"diffViewer.noUnstagedChanges")]});if(m)return h.jsxs("div",{ref:St,onMouseEnter:()=>{kt.current=!0},onMouseLeave:()=>{kt.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":ce,"data-diff-inline-mode":x,children:[xe.popoverNode,Fr,Ir(!0)]});const Ci=u===Ye||f===Ye;return h.jsxs("div",{ref:St,onMouseEnter:()=>{kt.current=!0},onMouseLeave:()=>{kt.current=!1},className:"termdock-diff termdock-native-select px-3 py-2","data-diff-viewer":!0,"data-diff-view-type":ce,"data-diff-inline-mode":x,children:[xe.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:Me.name}),h.jsxs("div",{className:"mt-0.5 flex min-w-0 items-center gap-2 text-[11px] text-muted-foreground",children:[Me.dir&&h.jsx("span",{className:"min-w-0 truncate",children:Me.dir}),h.jsxs("span",{children:[I.length," file",I.length>1?"s":""]}),h.jsxs("span",{className:"text-[color:var(--diff-insert-strong)]",children:["+",qt.additions]}),h.jsxs("span",{className:"text-[color:var(--diff-delete-strong)]",children:["-",qt.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:()=>Yt(-1),disabled:Dr<2,"aria-label":k("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:`${k("diffViewer.prevHunk")} (Shift+F7)`,children:h.jsx(Xr,{size:13})}),h.jsx("button",{type:"button",onClick:()=>Yt(1),disabled:Dr<2,"aria-label":k("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:`${k("diffViewer.nextHunk")} (F7)`,children:h.jsx(Yr,{size:13})})]}),h.jsxs("select",{value:ui,disabled:yr,onChange:N=>di(N.target.value),"aria-label":k("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:k("diffViewer.whitespace"),children:[h.jsx("option",{value:"default",children:k("diffViewer.whitespaceDefault")}),h.jsx("option",{value:"trim",children:k("diffViewer.whitespaceTrim")}),h.jsx("option",{value:"ignore",children:k("diffViewer.whitespaceIgnore")}),h.jsx("option",{value:"ignore-blank-lines",children:k("diffViewer.whitespaceIgnoreBlankLines")})]}),h.jsxs("select",{value:String(fi),disabled:yr,onChange:N=>hi(N.target.value==="all"?"all":Number(N.target.value)),"aria-label":k("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:k("diffViewer.context"),children:[[3,10,25].map(N=>h.jsx("option",{value:String(N),children:k("diffViewer.contextLines",{count:N})},N)),h.jsx("option",{value:"all",children:k("diffViewer.contextAll")})]}),h.jsxs("div",{className:"inline-flex h-7 shrink-0 overflow-hidden rounded-full bg-surface-2 p-0.5","aria-label":k("diffViewer.view"),children:[h.jsx("button",{type:"button",onClick:()=>pr("unified"),"aria-pressed":ce==="unified",className:`inline-flex h-6 items-center rounded-full px-2 text-[10px] font-semibold transition active:scale-95 ${ce==="unified"?"bg-surface-elevated text-foreground shadow-sm":"text-muted-foreground hover:text-foreground"}`,title:k("diffViewer.unifiedMode"),children:k("diffViewer.unified")}),h.jsx("button",{type:"button",onClick:()=>pr("split"),disabled:!Ge,"aria-pressed":ce==="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 ${ce==="split"?"bg-surface-elevated text-foreground shadow-sm":"text-muted-foreground hover:text-foreground"}`,title:k(Ge?"diffViewer.splitMode":"diffViewer.unifiedMode"),children:k("diffViewer.split")})]}),o&&h.jsx("button",{type:"button",onClick:_i,...xe(en,Ye),className:`inline-flex h-8 shrink-0 items-center rounded-full px-3 text-[11px] font-semibold transition active:scale-95 ${Ci?"bg-surface-elevated text-foreground":"bg-primary/15 text-primary hover:bg-primary/25"}`,title:k("diffViewer.insertAllDiff"),children:k(f===Ye?"rightSidebar.copied":u===Ye?"rightSidebar.inserted":"diffViewer.insertAllShort")})]})]})}),Fr,Ir(!1)]})}export{Zc as D,si as S,yl as a,Yc as b,Bc as c,Kc as g,_l as h,Jc as i,Xc as l,Vn as r,Uc as s,ac as u};
37
+ `),{hunks:[{filePath:B,hunkIndex:Q,hunk:K}]}),Rn=xc(K),Ee=Dc(xr,Nr,$,K.content,Rn),lt=`diff:hunk:${$}:${Q}`,xi=u===lt||f===lt,an=`stage:${$}:${Q}`,Fe=`revert:${$}:${Q}`,zr=Mt?.diff===de,Vr=Pn!==null||zr||Zt,Gr=zr&&(Mt?.key===an||Mt?.key===Fe),Mi=Ar&&(!i||i.unstaged||i.untracked),On=tn&&(tn.key===an||tn.key===Fe)?tn.message:null,ct=Ln.byHunk.get(K),Ai=Gn($,Q),Ei=ct?.hunkSections??[],In=ct?.movedCandidates??[],$i=ct?.movedOldLines??new Set,Di=ct?.movedNewLines??new Set,Pi=ct?.displayHunk??K,Ti=ct?.rowModel,Wr=Y=>{const ee=Xe&&Ie?Ns(Xe,Q,Y,Ie.length):0;if(!ee)return null;const Je=k(Y==="before"?"diffViewer.expandAbove":"diffViewer.expandBelow",{count:Math.min(_s,ee)});return h.jsxs("button",{type:"button",onClick:()=>wi(Q,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":Je,children:[Y==="before"?h.jsx(Xr,{size:13}):h.jsx(Yr,{size:13}),Je]})},Li=Ei.reduce((Y,ee)=>{const Je=oi(ee),Tt=Pc(xr,Nr,$,K.content,Rn,ee.index,Je),ie=Tt.current??Tt.stale;if(!ie&&!o)return Y;const Lt=Tc(ee);if(!Lt)return Y;const He=`diff:section:${$}:${Q}:${ee.index}`,Be=o?jc(B,Q,K,ee,Pt):"",Rt=u===He||f===He,Kr=o?h.jsx("button",{type:"button",onClick:()=>o(`${q.name} hunk ${Q+1}.${ee.index+1}`,Be,He),...xe(Be,He),className:`shrink-0 rounded px-1.5 py-0.5 text-[10px] font-medium transition active:scale-95 ${Rt?"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:k(f===He?"rightSidebar.copied":u===He?"rightSidebar.inserted":"diffViewer.insertHunkShort")}):null;return Y[Lt]=h.jsx("div",{"data-diff-section-anchor":$,"data-diff-section-audit":$,"data-diff-hunk-index":Q,"data-diff-section-index":ee.index,"data-diff-section-fingerprint":Je,className:ie?`mx-2 my-1 min-w-0 rounded-md border px-2 py-1.5 text-[11px] leading-relaxed ${d?"max-w-full overflow-hidden":"w-max"} ${Tt.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||Kr||T)&&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"}),Kr,T&&h.jsx("button",{type:"button",onClick:()=>T(ie.id),className:"ml-auto shrink-0 rounded p-0.5 text-muted-foreground/60 transition hover:bg-surface-2 hover:text-foreground",title:k("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},{}),Ri=({changes:Y,defaultGenerate:ee})=>{const Je=ee(),Tt=Y.some(Be=>{const Rt=Mc(Be);return Rt===null?!1:Be?.type==="delete"?$i.has(Rt):Be?.type==="insert"&&Di.has(Rt)}),ie=Y.find(Be=>!!Be),Lt=ie===void 0?void 0:Ti?.rowIndexByChangeKey.get(me(ie)),He=Lt!==void 0&&Fl(_e,Ai,Lt);return`${Je}${Tt?" diff-line-moved":""}${He?" diff-line-ref-selected":""}`};return h.jsxs("div",{className:`diff-hunk scroll-mt-16 ${Dt===gi?"diff-hunk--jump-target":""}`,"data-diff-hunk-anchor":$,"data-diff-hunk-index":Q,"data-diff-hunk-fingerprint":Rn,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 ${d?"max-w-full flex-wrap overflow-hidden":"w-max whitespace-nowrap"}`,children:[o&&h.jsx("button",{type:"button",onClick:()=>o(`${q.name} hunk ${Q+1}`,on,lt),...xe(on,lt),className:`inline-flex h-6 shrink-0 items-center rounded-full px-2 text-[10px] font-semibold active:scale-95 ${xi?"bg-surface-elevated text-foreground":"bg-primary/15 text-primary hover:bg-primary/25"}`,title:k("diffViewer.insertHunkDiff"),children:k(f===lt?"rightSidebar.copied":u===lt?"rightSidebar.inserted":"diffViewer.insertHunkShort")}),Mi&&h.jsx("button",{type:"button",disabled:Vr,onClick:()=>{Er("stage",an,b,C,Q,$)},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:k("diffViewer.stageHunkTitle"),children:Pn===an?k("diffViewer.hunkActionApplying"):Gr&&Mt?.mode==="stage"?k("diffViewer.hunkActionStaged"):k("diffViewer.stageHunk")}),(Ar||a&&l?.[K.content])&&h.jsx("button",{type:"button",disabled:Vr,onClick:()=>{if(At!==Fe){rn(Fe);return}Er("revert-worktree",Fe,b,C,Q,$)},className:`inline-flex h-6 shrink-0 items-center rounded-full px-2 text-[10px] font-semibold transition active:scale-95 disabled:opacity-50 ${At===Fe?"bg-destructive/15 text-destructive hover:bg-destructive/25":"bg-surface-2 text-muted-foreground hover:bg-surface-elevated hover:text-foreground"}`,title:k("diffViewer.revertHunkTitle"),children:Pn===Fe?k("diffViewer.hunkActionApplying"):Gr&&Mt?.mode==="revert-worktree"?k("diffViewer.hunkActionReverted"):k(At===Fe?"diffViewer.revertHunkConfirm":"diffViewer.revertHunk")}),h.jsx("span",{className:"min-w-0 flex-1 truncate",children:K.content}),In.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:In.map(Y=>`-${Y.oldLineNumber} -> +${Y.newLineNumber}`).join(", "),children:["moved ",In.length]})]}),On&&h.jsx("div",{className:"mt-1 truncate text-[10px] text-destructive",title:On,children:k("diffViewer.hunkActionFailed",{message:On})}),(Ee.current||Ee.stale)&&(()=>{const Y=Ee.current??Ee.stale,ee=Hc(Y?.injectedAt,W);return h.jsxs("div",{className:`mt-1 min-w-0 rounded-md border px-2 py-1.5 text-[11px] leading-relaxed ${d?"max-w-full overflow-hidden":"w-max"} ${Ee.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:Ee.current?k("diffViewer.auditExplanation"):k("diffViewer.auditStale")}),h.jsx("span",{className:"font-mono text-[10px] text-muted-foreground",children:Ee.fingerprint}),ee&&h.jsx("span",{className:"truncate text-[10px] text-muted-foreground/70",children:k("diffViewer.auditGeneratedAt",{time:ee})}),T&&h.jsx("button",{type:"button",onClick:()=>Y&&T(Y.id),className:"ml-auto shrink-0 rounded p-0.5 text-muted-foreground/60 transition hover:bg-surface-2 hover:text-foreground",title:k("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:Ee.current?.explanation??Ee.stale?.explanation})]})})()]}),Wr("before"),h.jsx(pl,{viewType:ce,diffType:b.type,hunks:[Pi],tokens:pi.get(E),generateLineClassName:Ri,widgets:Li,codeEvents:Or,gutterEvents:Or,children:Y=>Y.map(ee=>h.jsx(Zs,{hunk:ee},ee.content))}),Wr("after")]},K.content)}),H&&h.jsx("div",{className:"diff-decoration bg-surface-2 px-3 py-1.5 text-[10px] text-muted-foreground",children:k("diffViewer.noFinalNewline")})]})}),se&&Tr!==null&&o&&h.jsxs("button",{type:"button",onClick:()=>o(`${q.name} ${se.lineLabel}`,se.text,se.referenceKey),...xe(se.text,se.referenceKey),style:{top:Tr},className:`${yl(Lr,Hr||Br)} right-2`,title:k("diffViewer.insertLineDiff"),children:[h.jsx(Ui,{size:Lr?13:11}),Br?k("rightSidebar.copied"):Hr?k("rightSidebar.inserted"):k("rightSidebar.insertLineRef",{lineLabel:se.lineLabel})]})]},E)})})},ki=Oe.length>0&&be?.cacheKey===Cr;if(Zt&&!(ki||_!==void 0&&Oe.length>0))return m?h.jsxs("div",{role:"status","aria-live":"polite",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(Ur,{size:18,className:"animate-spin"}),h.jsx("span",{children:k("diffViewer.loading")})]}):h.jsxs("div",{role:"status","aria-live":"polite",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(Ur,{size:20,className:"animate-spin"}),h.jsx("span",{children:k("diffViewer.loading")})]});if(xt)return m?h.jsx("div",{className:"bg-destructive/5 px-3 py-3 text-xs text-destructive",children:xt}):h.jsx("div",{className:"mx-3 mt-3 border border-destructive/20 bg-destructive/5 px-4 py-4 text-sm text-destructive",children:xt});if(jt&&!de)return m?h.jsx("div",{className:"bg-[rgb(var(--warning-rgb)_/_0.12)] px-3 py-3 text-xs text-[color:var(--warning)]",children:jt}):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:jt});if(Ne){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:k("rightSidebar.imagePreviewHint")}),Ne.size!==null&&h.jsxs("span",{children:[Ne.size.toLocaleString()," bytes"]}),h.jsx("span",{children:Ne.mimeType}),Ne.dimensions&&h.jsxs("span",{children:[Ne.dimensions.width," × ",Ne.dimensions.height]})]}),h.jsx("div",{className:"flex min-h-64 items-center justify-center",children:h.jsx("img",{src:Ne.objectUrl,alt:Me.name,className:"max-h-[70vh] max-w-full rounded border border-border/15 bg-surface object-contain shadow-sm",onLoad:j=>{const b=j.currentTarget;Nt(C=>C&&{...C,dimensions:{width:b.naturalWidth,height:b.naturalHeight}})},onError:()=>le(k("rightSidebar.imageLoadFailed"))})})]});return m?h.jsxs("div",{className:"termdock-native-select overflow-hidden bg-surface",children:[xe.popoverNode,N]}):h.jsxs("div",{className:"termdock-diff px-3 py-2",children:[xe.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:Me.name}),h.jsx("div",{className:"mt-0.5 flex min-w-0 items-center gap-2 text-[11px] text-muted-foreground",children:Me.dir&&h.jsx("span",{className:"min-w-0 truncate",children:Me.dir})})]}),h.jsx("div",{className:"mt-3 overflow-hidden border border-border/20 bg-surface",children:N})]})}const Fr=jt?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:jt}):null;if(I.length===0)return m?h.jsxs("div",{className:"bg-surface-2 px-3 py-5 text-center text-xs text-muted-foreground",children:[h.jsx(Fn,{size:20,className:"mx-auto mb-2 text-muted-foreground/80"}),k(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(Fn,{size:24,className:"mx-auto mb-2 text-muted-foreground/80"}),k(e?"diffViewer.noFileChanges":"diffViewer.noUnstagedChanges")]});if(m)return h.jsxs("div",{ref:St,onMouseEnter:()=>{kt.current=!0},onMouseLeave:()=>{kt.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":ce,"data-diff-inline-mode":x,children:[xe.popoverNode,Fr,Ir(!0)]});const Ci=u===Ye||f===Ye;return h.jsxs("div",{ref:St,onMouseEnter:()=>{kt.current=!0},onMouseLeave:()=>{kt.current=!1},className:"termdock-diff termdock-native-select px-3 py-2","data-diff-viewer":!0,"data-diff-view-type":ce,"data-diff-inline-mode":x,children:[xe.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:Me.name}),h.jsxs("div",{className:"mt-0.5 flex min-w-0 items-center gap-2 text-[11px] text-muted-foreground",children:[Me.dir&&h.jsx("span",{className:"min-w-0 truncate",children:Me.dir}),h.jsxs("span",{children:[I.length," file",I.length>1?"s":""]}),h.jsxs("span",{className:"text-[color:var(--diff-insert-strong)]",children:["+",qt.additions]}),h.jsxs("span",{className:"text-[color:var(--diff-delete-strong)]",children:["-",qt.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:()=>Yt(-1),disabled:Dr<2,"aria-label":k("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:`${k("diffViewer.prevHunk")} (Shift+F7)`,children:h.jsx(Xr,{size:13})}),h.jsx("button",{type:"button",onClick:()=>Yt(1),disabled:Dr<2,"aria-label":k("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:`${k("diffViewer.nextHunk")} (F7)`,children:h.jsx(Yr,{size:13})})]}),h.jsxs("select",{value:ui,disabled:yr,onChange:N=>di(N.target.value),"aria-label":k("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:k("diffViewer.whitespace"),children:[h.jsx("option",{value:"default",children:k("diffViewer.whitespaceDefault")}),h.jsx("option",{value:"trim",children:k("diffViewer.whitespaceTrim")}),h.jsx("option",{value:"ignore",children:k("diffViewer.whitespaceIgnore")}),h.jsx("option",{value:"ignore-blank-lines",children:k("diffViewer.whitespaceIgnoreBlankLines")})]}),h.jsxs("select",{value:String(fi),disabled:yr,onChange:N=>hi(N.target.value==="all"?"all":Number(N.target.value)),"aria-label":k("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:k("diffViewer.context"),children:[[3,10,25].map(N=>h.jsx("option",{value:String(N),children:k("diffViewer.contextLines",{count:N})},N)),h.jsx("option",{value:"all",children:k("diffViewer.contextAll")})]}),h.jsxs("div",{className:"inline-flex h-7 shrink-0 overflow-hidden rounded-full bg-surface-2 p-0.5","aria-label":k("diffViewer.view"),children:[h.jsx("button",{type:"button",onClick:()=>pr("unified"),"aria-pressed":ce==="unified",className:`inline-flex h-6 items-center rounded-full px-2 text-[10px] font-semibold transition active:scale-95 ${ce==="unified"?"bg-surface-elevated text-foreground shadow-sm":"text-muted-foreground hover:text-foreground"}`,title:k("diffViewer.unifiedMode"),children:k("diffViewer.unified")}),h.jsx("button",{type:"button",onClick:()=>pr("split"),disabled:!Ge,"aria-pressed":ce==="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 ${ce==="split"?"bg-surface-elevated text-foreground shadow-sm":"text-muted-foreground hover:text-foreground"}`,title:k(Ge?"diffViewer.splitMode":"diffViewer.unifiedMode"),children:k("diffViewer.split")})]}),o&&h.jsx("button",{type:"button",onClick:_i,...xe(en,Ye),className:`inline-flex h-8 shrink-0 items-center rounded-full px-3 text-[11px] font-semibold transition active:scale-95 ${Ci?"bg-surface-elevated text-foreground":"bg-primary/15 text-primary hover:bg-primary/25"}`,title:k("diffViewer.insertAllDiff"),children:k(f===Ye?"rightSidebar.copied":u===Ye?"rightSidebar.inserted":"diffViewer.insertAllShort")})]})]})}),Fr,Ir(!1)]})}export{Zc as D,si as S,yl as a,Yc as b,Bc as c,Kc as g,_l as h,Jc as i,Xc as l,Vn as r,Uc as s,ac as u};