@tequila99/githuman 0.7.0 → 0.9.0

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 (392) hide show
  1. package/README.md +75 -0
  2. package/dist/cli/config.js +13 -1
  3. package/dist/cli/server-runtime.js +3 -0
  4. package/dist/server/app.js +37 -4
  5. package/dist/server/config/agents.js +2 -1
  6. package/dist/server/config/openapi.js +4 -0
  7. package/dist/server/db/migrations.js +61 -0
  8. package/dist/server/errors/note-assets.js +3 -0
  9. package/dist/server/errors/notes.js +3 -0
  10. package/dist/server/hooks/notes/same-origin.js +37 -0
  11. package/dist/server/hooks/terminal/local-origin.js +2 -1
  12. package/dist/server/repositories/notes-catalog.repo.js +129 -0
  13. package/dist/server/repositories/notes.repo.js +444 -0
  14. package/dist/server/routes/agent.js +1 -0
  15. package/dist/server/routes/notes.js +213 -0
  16. package/dist/server/routes/terminal.js +2 -1
  17. package/dist/server/services/agent/context-builder.js +13 -0
  18. package/dist/server/services/git.service.js +15 -11
  19. package/dist/server/services/notes-external-assets.service.js +177 -0
  20. package/dist/server/services/notes-identity.service.js +811 -0
  21. package/dist/server/services/notes-operations.service.js +296 -0
  22. package/dist/server/services/notes-watcher.service.js +44 -0
  23. package/dist/server/services/notes-writer.service.js +116 -0
  24. package/dist/server/services/notes.service.js +150 -0
  25. package/dist/server/services/terminal/backend.js +6 -3
  26. package/dist/server/services/terminal/channel.js +6 -3
  27. package/dist/server/services/terminal/registry.js +10 -5
  28. package/dist/server/services/terminal/session.js +10 -5
  29. package/dist/server/services/terminal/tokens.js +4 -2
  30. package/dist/server/utils/hash.js +4 -0
  31. package/dist/server/utils/note-asset-format.js +19 -0
  32. package/dist/server/utils/remote-asset-request.js +193 -0
  33. package/dist/server/utils/request-abort.js +20 -0
  34. package/dist/server/utils/system-error.js +14 -0
  35. package/dist/shared/agents/schemas.js +14 -0
  36. package/dist/shared/events/types.js +1 -0
  37. package/dist/shared/notes/asset-formats.js +57 -0
  38. package/dist/shared/notes/constants.js +7 -0
  39. package/dist/shared/notes/document.js +118 -0
  40. package/dist/shared/notes/external-assets.js +153 -0
  41. package/dist/shared/notes/identity.js +24 -0
  42. package/dist/shared/notes/links.js +44 -0
  43. package/dist/shared/notes/note-path.js +17 -0
  44. package/dist/shared/notes/reference-path.js +55 -0
  45. package/dist/shared/notes/references.js +190 -0
  46. package/dist/shared/notes/schemas.js +222 -0
  47. package/dist/shared/notes/types.js +1 -0
  48. package/dist/shared/utils/heading-slug.js +7 -0
  49. package/dist/shared/utils/is-uuid.js +5 -0
  50. package/dist/shared/utils/safe-decode.js +9 -0
  51. package/dist/shared/utils/web-url.js +15 -0
  52. package/dist/web/assets/AppPage-DdmqiV2R.js +1 -0
  53. package/dist/web/assets/ClosePopup-lpH_1Ju2.js +1 -0
  54. package/dist/web/assets/CreateButton-Dnpwobd9.js +93 -0
  55. package/dist/web/assets/CreateReviewFabButton-KvKPEJzI.js +1 -0
  56. package/dist/web/assets/{ErrorNotFound-CYOZg8yN.js → ErrorNotFound-Cq0wNQMu.js} +1 -1
  57. package/dist/web/assets/IndexPage-DE-IkAhK.js +1 -0
  58. package/dist/web/assets/IndexPage-F8MMAAkn.css +1 -0
  59. package/dist/web/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
  60. package/dist/web/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
  61. package/dist/web/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
  62. package/dist/web/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
  63. package/dist/web/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
  64. package/dist/web/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
  65. package/dist/web/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
  66. package/dist/web/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
  67. package/dist/web/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
  68. package/dist/web/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
  69. package/dist/web/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
  70. package/dist/web/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
  71. package/dist/web/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
  72. package/dist/web/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
  73. package/dist/web/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
  74. package/dist/web/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
  75. package/dist/web/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
  76. package/dist/web/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
  77. package/dist/web/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
  78. package/dist/web/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
  79. package/dist/web/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
  80. package/dist/web/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
  81. package/dist/web/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
  82. package/dist/web/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
  83. package/dist/web/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
  84. package/dist/web/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
  85. package/dist/web/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
  86. package/dist/web/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
  87. package/dist/web/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
  88. package/dist/web/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
  89. package/dist/web/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
  90. package/dist/web/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
  91. package/dist/web/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
  92. package/dist/web/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
  93. package/dist/web/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
  94. package/dist/web/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
  95. package/dist/web/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
  96. package/dist/web/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
  97. package/dist/web/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
  98. package/dist/web/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
  99. package/dist/web/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
  100. package/dist/web/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
  101. package/dist/web/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
  102. package/dist/web/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
  103. package/dist/web/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
  104. package/dist/web/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
  105. package/dist/web/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
  106. package/dist/web/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
  107. package/dist/web/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
  108. package/dist/web/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
  109. package/dist/web/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
  110. package/dist/web/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
  111. package/dist/web/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
  112. package/dist/web/assets/KaTeX_Size3-Regular-gV2CO0n9.woff2 +0 -0
  113. package/dist/web/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
  114. package/dist/web/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
  115. package/dist/web/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
  116. package/dist/web/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
  117. package/dist/web/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
  118. package/dist/web/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
  119. package/dist/web/assets/MainLayout-DM30ynlR.css +1 -0
  120. package/dist/web/assets/MainLayout-wWA8ckBg.js +6 -0
  121. package/dist/web/assets/NoteVisualEditor-Bj13_oEl.js +1054 -0
  122. package/dist/web/assets/NoteVisualEditor-IH3s3d3W.css +1 -0
  123. package/dist/web/assets/NotesPage-FidBg83M.js +4 -0
  124. package/dist/web/assets/NotesPage-KaCEnfdz.css +1 -0
  125. package/dist/web/assets/PanelResize-C51WwwLD.css +1 -0
  126. package/dist/web/assets/PanelResize-DY0Nzmql.js +1 -0
  127. package/dist/web/assets/{PdfPreview-CIiKnzQN.js → PdfPreview-C7HomxEg.js} +1 -1
  128. package/dist/web/assets/QBtn-DoggJe1Q.js +1 -0
  129. package/dist/web/assets/QFab-C-YZWgmW.js +1 -0
  130. package/dist/web/assets/QForm-DpEhYVCa.js +4 -0
  131. package/dist/web/assets/QInput-DJgTh2Qy.js +1 -0
  132. package/dist/web/assets/QResizeObserver-DeRFR_WF.js +1 -0
  133. package/dist/web/assets/QScrollArea-BSSZoaV5.js +1 -0
  134. package/dist/web/assets/QSelect-2iOBkp1K.js +1 -0
  135. package/dist/web/assets/QSpace-B5NneHAd.js +1 -0
  136. package/dist/web/assets/QVirtualScroll-CZJMBpmR.js +1 -0
  137. package/dist/web/assets/ReviewDetailPage-BI1iAhSf.js +1 -0
  138. package/dist/web/assets/ReviewsPage-RyST0FlH.js +1 -0
  139. package/dist/web/assets/{StatusSwitcher-DTD5inU1.css → StatusSwitcher-BCv_9MtI.css} +1 -1
  140. package/dist/web/assets/StatusSwitcher-DAeNzNP7.js +1 -0
  141. package/dist/web/assets/{TerminalView-Ch-ndYr6.js → TerminalView-BAzJgUTq.js} +2 -2
  142. package/dist/web/assets/{TerminalView-BurzSD2L.css → TerminalView-C1jFlfLH.css} +1 -1
  143. package/dist/web/assets/_baseMerge-BzZFQ6mI.js +1 -0
  144. package/dist/web/assets/{abnfDiagram-O67JEVCF-Cab71FlB.js → abnfDiagram-O67JEVCF-BNZQ7duT.js} +1 -1
  145. package/dist/web/assets/agent-store-DP6Vrw6L.js +113 -0
  146. package/dist/web/assets/apl-gfMMiTNf.js +1 -0
  147. package/dist/web/assets/app-info-store-u6ZVFjv5.js +1 -0
  148. package/dist/web/assets/architecture-7GRP2DOG-BSdnjp9Z.js +1 -0
  149. package/dist/web/assets/{architectureDiagram-NJMV4G6O-Dl1WKOEi.js → architectureDiagram-NJMV4G6O-Bkj0kfFn.js} +1 -1
  150. package/dist/web/assets/asciiarmor-C_eisQCp.js +1 -0
  151. package/dist/web/assets/asn1-DCl_8MCW.js +1 -0
  152. package/dist/web/assets/asterisk-BEn0Cwpx.js +1 -0
  153. package/dist/web/assets/{blockDiagram-BEXU5L5S-CZ3Lxybj.js → blockDiagram-BEXU5L5S-CXO3zN2c.js} +1 -1
  154. package/dist/web/assets/brainfuck-D5EjA2JK.js +1 -0
  155. package/dist/web/assets/{c4Diagram-YGBWAQC7-ULi06PEd.js → c4Diagram-YGBWAQC7-BHfMeZNf.js} +1 -1
  156. package/dist/web/assets/ccount-CcG1m-Yh.js +1 -0
  157. package/dist/web/assets/channel-DmoOM6AB.js +1 -0
  158. package/dist/web/assets/{chunk-3FUC2YCW-B1f60wx3.js → chunk-3FUC2YCW-z1WbH7Gi.js} +1 -1
  159. package/dist/web/assets/{chunk-5DYCD2WN-f6Pcl3dF.js → chunk-5DYCD2WN-K9HPch97.js} +1 -1
  160. package/dist/web/assets/{chunk-742MDFTN-szX1QirW.js → chunk-742MDFTN-Bhjp9fC-.js} +1 -1
  161. package/dist/web/assets/{chunk-7INBJB4K-CP_ynmAQ.js → chunk-7INBJB4K-Do0EmU14.js} +1 -1
  162. package/dist/web/assets/{chunk-7M6MHVWA-DPL74uZE.js → chunk-7M6MHVWA-veeEjsOh.js} +5 -5
  163. package/dist/web/assets/{chunk-7PRAP22T-DH9TawZY.js → chunk-7PRAP22T-CPqB5tCK.js} +1 -1
  164. package/dist/web/assets/{chunk-GTNCS2PH-CKAuGvnf.js → chunk-GTNCS2PH-Civ1V52P.js} +1 -1
  165. package/dist/web/assets/{chunk-GWA4HPMP-DTbHCHSN.js → chunk-GWA4HPMP-C7LzAlyZ.js} +1 -1
  166. package/dist/web/assets/{chunk-MBY4JIJT-ClgvJMtC.js → chunk-MBY4JIJT-DfmJy0o_.js} +1 -1
  167. package/dist/web/assets/{chunk-NETBCI7D-Dq5Z7z8S.js → chunk-NETBCI7D-BZIKmMvL.js} +1 -1
  168. package/dist/web/assets/{chunk-O7XYJQB3-C0By5mcm.js → chunk-O7XYJQB3-DcHeu6b7.js} +1 -1
  169. package/dist/web/assets/{chunk-UA2S7LBM-BtquYpxe.js → chunk-UA2S7LBM-0SR2og6x.js} +1 -1
  170. package/dist/web/assets/{chunk-WEXAMYUT-BlZL42XJ.js → chunk-WEXAMYUT-CJMSoM-Z.js} +1 -1
  171. package/dist/web/assets/{chunk-Z7XXMR3K-BbtQbAvv.js → chunk-Z7XXMR3K-q6fce66x.js} +1 -1
  172. package/dist/web/assets/{chunk-ZIGJFQKS-tC_YdRrm.js → chunk-ZIGJFQKS-DsPzen4Y.js} +1 -1
  173. package/dist/web/assets/{classDiagram-v2-NBCMYWYE-CvlA_A4N.js → classDiagram-v2-NBCMYWYE-Cpm_bvzb.js} +4 -4
  174. package/dist/web/assets/clike-D_6L3tnO.js +1 -0
  175. package/dist/web/assets/clojure-BflJGmDX.js +1 -0
  176. package/dist/web/assets/cmake-84nbDH0I.js +1 -0
  177. package/dist/web/assets/cobol-DHLQUbN7.js +1 -0
  178. package/dist/web/assets/coffeescript-De_zI4J0.js +1 -0
  179. package/dist/web/assets/commonlisp-DgAKBe0r.js +1 -0
  180. package/dist/web/assets/core-Bumj8M77.js +12 -0
  181. package/dist/web/assets/crystal-Bsdphhtm.js +1 -0
  182. package/dist/web/assets/css-CnaYoQib.js +1 -0
  183. package/dist/web/assets/{cynefin-OW5HDTMX-DFbhKkIi.js → cynefin-OW5HDTMX-ZTr5XZMW.js} +1 -1
  184. package/dist/web/assets/{cynefinDiagram-VND7K2PF-DHGaLNQN.js → cynefinDiagram-VND7K2PF-ByUmUx58.js} +1 -1
  185. package/dist/web/assets/cypher-p9eYesGn.js +1 -0
  186. package/dist/web/assets/d-DWkQyNnU.js +1 -0
  187. package/dist/web/assets/dagre-6A5THRUB-mQOy0E3r.js +4 -0
  188. package/dist/web/assets/{diagram-22UHCM2B-Djjo5ftL.js → diagram-22UHCM2B-BW0LPtyk.js} +8 -8
  189. package/dist/web/assets/{diagram-3UASUU5V-BcP7pJru.js → diagram-3UASUU5V-jo148ec5.js} +1 -1
  190. package/dist/web/assets/{diagram-ATOU4E4O-o_vsc8em.js → diagram-ATOU4E4O-CJt4F0i4.js} +1 -1
  191. package/dist/web/assets/{diagram-CDSNMT55-eyN9Aru8.js → diagram-CDSNMT55-DEShJv56.js} +1 -1
  192. package/dist/web/assets/{diagram-MLGK6HIB-Dfjipnvb.js → diagram-MLGK6HIB-DOFOADfs.js} +1 -1
  193. package/dist/web/assets/{diagram-MPIPVDR6-C2chocRe.js → diagram-MPIPVDR6-ux537BMl.js} +1 -1
  194. package/dist/web/assets/diff-ChtP43wD.js +1 -0
  195. package/dist/web/assets/dist-3B0OaUZ-.js +1 -0
  196. package/dist/web/assets/dist-7xWvOKEv.js +1 -0
  197. package/dist/web/assets/dist-BThMRW5U.js +23 -0
  198. package/dist/web/assets/dist-BWa3ecCV.js +2 -0
  199. package/dist/web/assets/dist-BY24_62d.js +1 -0
  200. package/dist/web/assets/dist-BbdrgL5V.js +11 -0
  201. package/dist/web/assets/dist-Bo7anpPj.js +9 -0
  202. package/dist/web/assets/dist-Bu9yRqTU.js +1 -0
  203. package/dist/web/assets/dist-Bvnostf5.js +1 -0
  204. package/dist/web/assets/dist-C3sBgvRy.js +1 -0
  205. package/dist/web/assets/dist-CK1va5C_.js +1 -0
  206. package/dist/web/assets/dist-CLv-grWO.js +1 -0
  207. package/dist/web/assets/dist-CqGqStPp.js +1 -0
  208. package/dist/web/assets/dist-D1EUrS6y.js +6 -0
  209. package/dist/web/assets/dist-D2Ce45aH.js +13 -0
  210. package/dist/web/assets/dist-D7Llw4iH.js +1 -0
  211. package/dist/web/assets/dist-DL0dBIkt.js +1 -0
  212. package/dist/web/assets/dist-DUt0feNB.js +1 -0
  213. package/dist/web/assets/dist-DZQ2IsS9.js +1 -0
  214. package/dist/web/assets/dist-DpKJcdvz.js +1 -0
  215. package/dist/web/assets/dist-DuZv0LJj.js +1 -0
  216. package/dist/web/assets/dist-LFPPEX39.js +1 -0
  217. package/dist/web/assets/dist-lC0EKTFH.js +1 -0
  218. package/dist/web/assets/dockerfile-DJkHQgkl.js +1 -0
  219. package/dist/web/assets/dtd-DTF72YNO.js +1 -0
  220. package/dist/web/assets/dylan-BCDoL_-p.js +1 -0
  221. package/dist/web/assets/ebnf-D4c0_ac3.js +1 -0
  222. package/dist/web/assets/{ebnfDiagram-ZINNZB2B-CE58dwC-.js → ebnfDiagram-ZINNZB2B-DEybuZle.js} +1 -1
  223. package/dist/web/assets/ecl-BVIeWmwY.js +1 -0
  224. package/dist/web/assets/eiffel-BEjRio4Q.js +1 -0
  225. package/dist/web/assets/{elk-276RUBZZ-KyTn9aJi.js → elk-276RUBZZ-CZXZRpGb.js} +1 -1
  226. package/dist/web/assets/elm-Cshzl8qu.js +1 -0
  227. package/dist/web/assets/{erDiagram-OPXOYQCR-D9aOi7ZD.js → erDiagram-OPXOYQCR-BgRqGAt5.js} +1 -1
  228. package/dist/web/assets/erlang-BV0c4Hdn.js +1 -0
  229. package/dist/web/assets/eventmodeling-NTZA5JFV-ZuRq6Sae.js +1 -0
  230. package/dist/web/assets/factor-LKH5gN8L.js +1 -0
  231. package/dist/web/assets/fcl-ClOhbFR7.js +1 -0
  232. package/dist/web/assets/flowDiagram-KWPJA3E3-DRyHAdLb.js +1 -0
  233. package/dist/web/assets/forth-D6RzAl64.js +1 -0
  234. package/dist/web/assets/fortran-Bt6PBEDR.js +1 -0
  235. package/dist/web/assets/{ganttDiagram-FUAMR5RP-DRAI6xWM.js → ganttDiagram-FUAMR5RP-CBJwX1gk.js} +1 -1
  236. package/dist/web/assets/gas-BHEdbvp9.js +1 -0
  237. package/dist/web/assets/gherkin-oBAE_ms0.js +1 -0
  238. package/dist/web/assets/{gitGraph-4MIJSDKK-D1lAB6tr.js → gitGraph-4MIJSDKK-Dw-XA3G1.js} +1 -1
  239. package/dist/web/assets/{gitGraphDiagram-X574FWY7-77GVnwya.js → gitGraphDiagram-X574FWY7-BpGccoWp.js} +1 -1
  240. package/dist/web/assets/graphlib-C64HifUL.js +1 -0
  241. package/dist/web/assets/groovy-CUpZ7dEl.js +1 -0
  242. package/dist/web/assets/haskell-BRsoo5mP.js +1 -0
  243. package/dist/web/assets/haxe-DjVOVvNP.js +1 -0
  244. package/dist/web/assets/http-CLVgA2GD.js +1 -0
  245. package/dist/web/assets/i18n-sfJvmpVb.js +1 -0
  246. package/dist/web/assets/idl-BUZw3wgd.js +1 -0
  247. package/dist/web/assets/index-B2CzafCr.js +2 -0
  248. package/dist/web/assets/{info-A6RAGUB7-Di1qRpwO.js → info-A6RAGUB7-Dj5RfJsg.js} +1 -1
  249. package/dist/web/assets/{infoDiagram-VRGFBTTK-gceHneJ0.js → infoDiagram-VRGFBTTK-DyVSH991.js} +1 -1
  250. package/dist/web/assets/{init-app-IHgDyoRH.js → init-app-DSS44aRI.js} +1 -1
  251. package/dist/web/assets/{is-DssfAlMe.js → is-CE4jkrGQ.js} +1 -1
  252. package/dist/web/assets/isArrayLikeObject-BbaDyxId.js +1 -0
  253. package/dist/web/assets/{ishikawaDiagram-OU5B5YK6-B9QDQoSG.js → ishikawaDiagram-OU5B5YK6-Cu0n2oqT.js} +1 -1
  254. package/dist/web/assets/javascript-Bu8mWwtz.js +1 -0
  255. package/dist/web/assets/{journeyDiagram-ZHPQQLJL-CVTMW0pg.js → journeyDiagram-ZHPQQLJL-Bz1Ot6Zg.js} +1 -1
  256. package/dist/web/assets/julia-CQfgDRfP.js +1 -0
  257. package/dist/web/assets/{kanban-definition-PNTS6WVX-TNoWYrUr.js → kanban-definition-PNTS6WVX-C42vuY7H.js} +1 -1
  258. package/dist/web/assets/{line-B_1CHIjZ.js → line-C5WKurbS.js} +1 -1
  259. package/dist/web/assets/livescript-BXxG0Yva.js +1 -0
  260. package/dist/web/assets/lua-DPCEkfD_.js +1 -0
  261. package/dist/web/assets/markdown-DBTEhbhQ.js +15 -0
  262. package/dist/web/assets/mathematica-u8YMmbU0.js +1 -0
  263. package/dist/web/assets/mbox-BEMVcqjs.js +1 -0
  264. package/dist/web/assets/{mermaid-parser.core-LAeoGxkL.js → mermaid-parser.core-B7l8qh8B.js} +3 -3
  265. package/dist/web/assets/{mermaid.core-DMppSzfM.js → mermaid.core-Drs2mjGg.js} +7 -7
  266. package/dist/web/assets/{mindmap-definition-NLK3R4M7-DJ-6nTWg.js → mindmap-definition-NLK3R4M7-BV1FNwCn.js} +1 -1
  267. package/dist/web/assets/mirc-C9zpzAZU.js +1 -0
  268. package/dist/web/assets/mllike-B45xgp2S.js +1 -0
  269. package/dist/web/assets/modelica-CqHI_q-D.js +1 -0
  270. package/dist/web/assets/mscgen-qgSLujhx.js +1 -0
  271. package/dist/web/assets/mumps-BSzj6Xyz.js +1 -0
  272. package/dist/web/assets/nginx-8H7HVH4w.js +1 -0
  273. package/dist/web/assets/nsis-viPvXFiq.js +1 -0
  274. package/dist/web/assets/ntriples-B9h1VB_g.js +1 -0
  275. package/dist/web/assets/octave-D2Q8cUp1.js +1 -0
  276. package/dist/web/assets/oz-BwTct_5T.js +1 -0
  277. package/dist/web/assets/{packet-AYTQ26CC-B4tvN4nf.js → packet-AYTQ26CC-BPmUY1Ig.js} +1 -1
  278. package/dist/web/assets/pascal-Dp_KdFgX.js +1 -0
  279. package/dist/web/assets/{pegDiagram-GJSIUBJH-BwQ6jaVw.js → pegDiagram-GJSIUBJH-D6NPxPdr.js} +1 -1
  280. package/dist/web/assets/perl-BkSkiI9m.js +1 -0
  281. package/dist/web/assets/{pie-WAS4IAKB-ZwlyCxls.js → pie-WAS4IAKB-CTp2jNAc.js} +1 -1
  282. package/dist/web/assets/{pieDiagram-5QR66LMP-BDYLBnB1.js → pieDiagram-5QR66LMP-BVkABrg7.js} +1 -1
  283. package/dist/web/assets/pig-AF4Hwhju.js +1 -0
  284. package/dist/web/assets/pinia-BVWaJ8NX.js +1 -0
  285. package/dist/web/assets/powershell-BcIto6Sf.js +1 -0
  286. package/dist/web/assets/properties-C357ku5U.js +1 -0
  287. package/dist/web/assets/protobuf-D1ij_kNL.js +1 -0
  288. package/dist/web/assets/pug-3K-JMW4g.js +1 -0
  289. package/dist/web/assets/puppet-BZyAS7I4.js +1 -0
  290. package/dist/web/assets/purify.es--06brOip.js +3 -0
  291. package/dist/web/assets/python-B_1Jd8HM.js +1 -0
  292. package/dist/web/assets/q-B9NhS7L_.js +1 -0
  293. package/dist/web/assets/{quadrantDiagram-O4NWA36T-CkmLCxOG.js → quadrantDiagram-O4NWA36T-LZCjVd08.js} +1 -1
  294. package/dist/web/assets/r-CxDmU1I4.js +1 -0
  295. package/dist/web/assets/{radar-RG4KPBEZ-Ca7H5QOY.js → radar-RG4KPBEZ-CCiUrmsg.js} +1 -1
  296. package/dist/web/assets/{railroad-74A4TZTK-CX3Z2QYJ.js → railroad-74A4TZTK-CZn8VJbK.js} +1 -1
  297. package/dist/web/assets/railroad-abnf-HS5TGJTU-B-9tG9pW.js +1 -0
  298. package/dist/web/assets/railroad-ebnf-LZEXJU2U-D7lUyGOq.js +1 -0
  299. package/dist/web/assets/railroad-peg-WCYAUIDC-ja94t32K.js +1 -0
  300. package/dist/web/assets/{railroadDiagram-XR7U4H2S-D8ii6sM4.js → railroadDiagram-XR7U4H2S-nopy-mdw.js} +1 -1
  301. package/dist/web/assets/{requirementDiagram-PLB6GJNP-iHY-tE7c.js → requirementDiagram-PLB6GJNP-BOeMzf-x.js} +1 -1
  302. package/dist/web/assets/rpm-gpDK5sbt.js +1 -0
  303. package/dist/web/assets/ruby-ChfNwlCY.js +1 -0
  304. package/dist/web/assets/{safe-storage-BCP757jk.js → safe-storage-aRoyeFxv.js} +1 -1
  305. package/dist/web/assets/{sankeyDiagram-IPEJSGJF-CBprSUZk.js → sankeyDiagram-IPEJSGJF-Bbk0AQUe.js} +1 -1
  306. package/dist/web/assets/sas-C2OyD2Y6.js +1 -0
  307. package/dist/web/assets/scheme-D9qYN0V5.js +1 -0
  308. package/dist/web/assets/{sequenceDiagram-PO4LG4MO-BkphpOQ_.js → sequenceDiagram-PO4LG4MO-ZpubjKFc.js} +1 -1
  309. package/dist/web/assets/shell-DwuoZtxw.js +1 -0
  310. package/dist/web/assets/sieve-tLWDfEkZ.js +1 -0
  311. package/dist/web/assets/simple-mode-DXiLM1-G.js +1 -0
  312. package/dist/web/assets/smalltalk-BLp5-jwC.js +1 -0
  313. package/dist/web/assets/solr-B78wSQJQ.js +1 -0
  314. package/dist/web/assets/sparql-Dz-mlCAC.js +1 -0
  315. package/dist/web/assets/spreadsheet-CTIncYxj.js +1 -0
  316. package/dist/web/assets/sql-DuQMFDvy.js +1 -0
  317. package/dist/web/assets/{stateDiagram-v2-GCMORJYK-HN1RwAPZ.js → stateDiagram-v2-GCMORJYK-DNjDh9yZ.js} +2 -2
  318. package/dist/web/assets/stex-DNzd62Q_.js +1 -0
  319. package/dist/web/assets/stylus-BOVgKnng.js +1 -0
  320. package/dist/web/assets/swift-DKB6_1j6.js +1 -0
  321. package/dist/web/assets/{swimlanes-2SLR337P-Cc8jyETz.js → swimlanes-2SLR337P-C-_UzZF_.js} +1 -1
  322. package/dist/web/assets/swimlanesDiagram-TC7HE7FX-CVSZNvS2.js +8 -0
  323. package/dist/web/assets/tcl-BGfruO1u.js +1 -0
  324. package/dist/web/assets/textile-C4jVoHG1.js +1 -0
  325. package/dist/web/assets/theme-CeQhGDjh.js +1 -0
  326. package/dist/web/assets/tiddlywiki-VlUiK86J.js +1 -0
  327. package/dist/web/assets/tiki-AK6FwT8q.js +1 -0
  328. package/dist/web/assets/{timeline-definition-EJHVYXUP-Bas0Ksw6.js → timeline-definition-EJHVYXUP-BiaJyHdJ.js} +1 -1
  329. package/dist/web/assets/toml-BPTmHmyx.js +1 -0
  330. package/dist/web/assets/{treeView-Q6P3EWNA-Ck-xt3KO.js → treeView-Q6P3EWNA-CENjlerX.js} +1 -1
  331. package/dist/web/assets/{treemap-WGGIJYW6-k9Ay9d-c.js → treemap-WGGIJYW6-CBpdf3L2.js} +1 -1
  332. package/dist/web/assets/troff-C2dAgh7P.js +1 -0
  333. package/dist/web/assets/ttcn-PPSTk1ow.js +1 -0
  334. package/dist/web/assets/ttcn-cfg-2b4Gb5sE.js +1 -0
  335. package/dist/web/assets/turtle-Cx3rYX2g.js +1 -0
  336. package/dist/web/assets/use-add-agent-context-SApxn9fW.js +1 -0
  337. package/dist/web/assets/{use-app-theme-BfRqhHi_.js → use-app-theme-DP8Ymwwb.js} +1 -1
  338. package/dist/web/assets/use-dark-BHObfh0O.js +1 -0
  339. package/dist/web/assets/use-panel-width-CTXD_csP.js +1 -0
  340. package/dist/web/assets/use-router-link-BGc0noIO.js +1 -0
  341. package/dist/web/assets/use-server-events-C13Sw-rU.js +1 -0
  342. package/dist/web/assets/use-virtual-scroll-BSXYZjZ5.js +1 -0
  343. package/dist/web/assets/{usecaseDiagram-POWQR4AR-BlzYgvXB.js → usecaseDiagram-POWQR4AR-CcJ83_Ve.js} +1 -1
  344. package/dist/web/assets/vb-BthdM_4N.js +1 -0
  345. package/dist/web/assets/vbscript-D9f6rSsU.js +1 -0
  346. package/dist/web/assets/velocity-CqftRsjg.js +1 -0
  347. package/dist/web/assets/{vennDiagram-UO4OBE2U-gjloIQdf.js → vennDiagram-UO4OBE2U-DBjzpbFr.js} +1 -1
  348. package/dist/web/assets/verilog-CjI9Y6RI.js +1 -0
  349. package/dist/web/assets/vhdl-kS471soi.js +1 -0
  350. package/dist/web/assets/{wardley-WFR3VGLG-BnsYd7B2.js → wardley-WFR3VGLG-DmlbUWUM.js} +1 -1
  351. package/dist/web/assets/{wardleyDiagram-VNRHLVJA-ktflnFLZ.js → wardleyDiagram-VNRHLVJA-CWSZCqf4.js} +1 -1
  352. package/dist/web/assets/webidl-D5jiJvOU.js +1 -0
  353. package/dist/web/assets/window-store-DNnKUhxs.js +1 -0
  354. package/dist/web/assets/xquery-BKJx4mf9.js +1 -0
  355. package/dist/web/assets/{xychartDiagram-PMCCYNJV-Ch5MYgz0.js → xychartDiagram-PMCCYNJV-CMnNSaZv.js} +1 -1
  356. package/dist/web/assets/yacas-CXXgtw0p.js +1 -0
  357. package/dist/web/assets/z80-Co3PbHdE.js +1 -0
  358. package/dist/web/index.html +6 -3
  359. package/package.json +10 -2
  360. package/dist/web/assets/AppPage-BGcEFW_o.js +0 -93
  361. package/dist/web/assets/CreateReviewFabButton-CdUXVriU.js +0 -1
  362. package/dist/web/assets/IndexPage-CYFIGWy9.css +0 -1
  363. package/dist/web/assets/IndexPage-OqgW0yH8.js +0 -1
  364. package/dist/web/assets/MainLayout-Bi0JE3ER.js +0 -11
  365. package/dist/web/assets/MainLayout-DPkSlqMr.css +0 -1
  366. package/dist/web/assets/QBtn-CzrOO1zA.js +0 -1
  367. package/dist/web/assets/QScrollArea-C4BKutrt.js +0 -1
  368. package/dist/web/assets/QSelect-BXUaq4ky.js +0 -1
  369. package/dist/web/assets/QSpace-BMpRu3a-.js +0 -13
  370. package/dist/web/assets/ReviewDetailPage-DlR7Vxkw.js +0 -1
  371. package/dist/web/assets/ReviewsPage-DM8XtlUK.js +0 -1
  372. package/dist/web/assets/StatusSwitcher-Blg5JmAa.js +0 -1
  373. package/dist/web/assets/agent-store-CDuiBhST.js +0 -1
  374. package/dist/web/assets/app-info-store-BmD_P8q2.js +0 -1
  375. package/dist/web/assets/architecture-7GRP2DOG-DMgDJZyQ.js +0 -1
  376. package/dist/web/assets/channel-BnUyOMnk.js +0 -1
  377. package/dist/web/assets/core-C37KF-j0.js +0 -12
  378. package/dist/web/assets/dagre-6A5THRUB-Bk3Po5o5.js +0 -4
  379. package/dist/web/assets/eventmodeling-NTZA5JFV-7YdTAmVS.js +0 -1
  380. package/dist/web/assets/flowDiagram-KWPJA3E3-eOIiY2oF.js +0 -1
  381. package/dist/web/assets/graphlib-DS17s2tU.js +0 -1
  382. package/dist/web/assets/i18n-C5Xnmkwe.js +0 -1
  383. package/dist/web/assets/index-BqedItFI.js +0 -2
  384. package/dist/web/assets/pinia-BKoxNmoW.js +0 -1
  385. package/dist/web/assets/railroad-abnf-HS5TGJTU-DZSn8MK2.js +0 -1
  386. package/dist/web/assets/railroad-ebnf-LZEXJU2U-BVTJtDBq.js +0 -1
  387. package/dist/web/assets/railroad-peg-WCYAUIDC-DMzsNGzj.js +0 -1
  388. package/dist/web/assets/swimlanesDiagram-TC7HE7FX-BxXXHQ70.js +0 -8
  389. package/dist/web/assets/theme-CPoPdFci.js +0 -1
  390. package/dist/web/assets/use-panel-width-C9dWftsJ.js +0 -1
  391. package/dist/web/assets/use-server-events-znzHKZZx.js +0 -1
  392. package/dist/web/assets/use-virtual-scroll-CIwaJCUj.js +0 -1
@@ -0,0 +1,222 @@
1
+ import { Type } from '@sinclair/typebox';
2
+ import { Nullable } from "../utils/schemas.js";
3
+ import { NOTE_ASSET_ID_PATTERN } from "./asset-formats.js";
4
+ // Relative paths are resolved within the configured notes root.
5
+ const Path = Type.String({
6
+ minLength: 1,
7
+ maxLength: 1024,
8
+ description: 'Path relative to the notes root.'
9
+ });
10
+ const Id = Type.String({
11
+ format: 'uuid',
12
+ description: 'Stable note or storage UUID.'
13
+ });
14
+ export const NotePresenceSchema = Type.Union([Type.Literal('present'), Type.Literal('missing'), Type.Literal('deleted')], { description: 'Whether the file is available.' });
15
+ export const NoteRecordSchema = Type.Object({
16
+ id: Id,
17
+ path: Path,
18
+ presence: NotePresenceSchema,
19
+ version: Type.String({ description: 'Last indexed content version.' }),
20
+ createdAt: Type.String({
21
+ description: 'Creation or first registration time.'
22
+ }),
23
+ updatedAt: Type.String({
24
+ description: 'Last observed content change time.'
25
+ })
26
+ }, { description: 'Persistent identity of a note, including absent files.' });
27
+ export const NoteIssueSchema = Type.Object({
28
+ id: Type.String({ description: 'Diagnostic identifier.' }),
29
+ kind: Type.Union([
30
+ Type.Literal('identity'),
31
+ Type.Literal('rewrite'),
32
+ Type.Literal('metadata')
33
+ ], { description: 'Diagnostic category.' }),
34
+ message: Type.String({ description: 'Actionable diagnostic.' }),
35
+ noteId: Nullable(Id),
36
+ candidateId: Nullable(Id)
37
+ }, { description: 'Identity or file update requiring attention.' });
38
+ export const NoteMutationSchema = Type.Object({
39
+ operationId: Id,
40
+ complete: Type.Boolean({
41
+ description: 'Whether all relative links were updated.'
42
+ })
43
+ }, { description: 'Result of a recoverable file operation.' });
44
+ export const NoteIdQuery = Type.Object({ id: Id, storageId: Id }, { description: 'A note within a specific storage.' });
45
+ export const NoteResolveBody = Type.Object({
46
+ sourceId: Id,
47
+ storageId: Id,
48
+ text: Type.String({
49
+ maxLength: 1000000,
50
+ description: 'Current source, including an unsaved draft.'
51
+ }),
52
+ href: Type.String({ description: 'Clicked internal address.' }),
53
+ occurrence: Type.Optional(Type.Integer({
54
+ minimum: 0,
55
+ description: 'Ordinal among identical displayed addresses.'
56
+ }))
57
+ }, { description: 'Resolve a note link without losing its identity.' });
58
+ export const ResolveIdentityBody = Type.Object({
59
+ issueId: Type.String({ description: 'Pending identity diagnostic ID.' }),
60
+ candidateId: Type.Optional(Id),
61
+ restore: Type.Boolean({
62
+ description: 'Whether the candidate is the previous note.'
63
+ })
64
+ }, { description: 'Confirm a restored or moved file, or keep it as a new note.' });
65
+ export const NoteGraphSchema = Type.Object({
66
+ storageId: Id,
67
+ nodes: Type.Array(NoteRecordSchema, {
68
+ description: 'Notes and absent targets.'
69
+ }),
70
+ edges: Type.Array(Type.Object({ sourceId: Id, targetId: Id }, { description: 'A directed note relationship.' }), { description: 'Resolved relationships, including absent targets.' })
71
+ }, { description: 'Portable graph data without a visualization.' });
72
+ export const NoteResolutionSchema = Type.Object({ id: Id, anchor: Type.String({ description: 'Decoded heading fragment.' }) }, { description: 'Resolved target identity.' });
73
+ export const NoteDescriptorSchema = Type.Object({
74
+ note: NoteRecordSchema,
75
+ backlinks: Type.Array(NoteRecordSchema, {
76
+ description: 'Present notes linking to this identity.'
77
+ })
78
+ }, { description: 'A note identity and its backlinks.' });
79
+ export const NoteQuery = Type.Object({ path: Path }, { description: 'Relative path within notes storage.' });
80
+ export const NoteSchema = Type.Object({
81
+ id: Type.Optional(Id),
82
+ storageId: Type.Optional(Id),
83
+ path: Path,
84
+ text: Type.String({ description: 'Full Markdown including frontmatter.' }),
85
+ version: Type.String({
86
+ description: 'Opaque content version for conditional writes.'
87
+ })
88
+ }, { description: 'A note and its disk version.' });
89
+ export const NoteEntrySchema = Type.Object({
90
+ path: Path,
91
+ id: Type.Optional(Id),
92
+ presence: Type.Optional(NotePresenceSchema),
93
+ folder: Type.Boolean({ description: 'Whether this entry is a directory.' }),
94
+ tags: Type.Array(Type.String(), {
95
+ description: 'Tags from YAML frontmatter.'
96
+ }),
97
+ error: Nullable(Type.String({ description: 'Metadata or file read error, if present.' }))
98
+ }, { description: 'Entry in the notes tree.' });
99
+ export const NotesIndexSchema = Type.Object({
100
+ entries: Type.Array(NoteEntrySchema, { description: 'Notes and folders.' }),
101
+ storageId: Type.Optional(Id),
102
+ revision: Type.Optional(Type.String({
103
+ description: 'Opaque catalog and filesystem revision for mutations.'
104
+ })),
105
+ issues: Type.Optional(Type.Array(NoteIssueSchema, {
106
+ description: 'Pending identity or rewrite diagnostics.'
107
+ })),
108
+ storage: Type.String({ description: 'Configured notes directory.' }),
109
+ warning: Nullable(Type.String({ description: 'Storage visibility warning, if present.' }))
110
+ }, { description: 'Project notes index.' });
111
+ export const CreateNoteBody = Type.Object({
112
+ path: Path,
113
+ text: Type.String({
114
+ maxLength: 1000000,
115
+ description: 'Initial Markdown text.'
116
+ })
117
+ }, { description: 'New note contents and relative path.' });
118
+ export const SaveNoteBody = Type.Object({
119
+ id: Type.Optional(Id),
120
+ storageId: Type.Optional(Id),
121
+ path: Path,
122
+ text: Type.String({
123
+ maxLength: 1000000,
124
+ description: 'New Markdown text.'
125
+ }),
126
+ version: Type.String({ description: 'Expected current version.' })
127
+ }, { description: 'Note update guarded by its current version.' });
128
+ export const RenameNoteBody = Type.Object({
129
+ path: Path,
130
+ id: Type.Optional(Id),
131
+ revision: Type.Optional(Type.String({ description: 'Expected catalog revision.' })),
132
+ target: Type.Optional(Path),
133
+ name: Type.String({
134
+ minLength: 1,
135
+ maxLength: 255,
136
+ description: 'New entry name without parent directories.'
137
+ }),
138
+ folder: Type.Boolean({ description: 'Whether the entry is a directory.' })
139
+ }, { description: 'Rename a note or directory within its current parent.' });
140
+ export const CreateFolderBody = Type.Object({ path: Path }, { description: 'New notes folder.' });
141
+ export const UploadNoteAssetBody = Type.Object({
142
+ file: Type.Any({
143
+ isFile: true,
144
+ description: 'Raster image file, at most 10 MB.'
145
+ })
146
+ }, {
147
+ additionalProperties: false,
148
+ description: 'Multipart image attachment upload.'
149
+ });
150
+ export const NoteAssetSchema = Type.Object({
151
+ url: Type.String({
152
+ description: 'Origin-relative permanent attachment URL.'
153
+ })
154
+ }, { description: 'Stored note attachment.' });
155
+ export const NoteAssetParams = Type.Object({
156
+ id: Type.String({
157
+ pattern: NOTE_ASSET_ID_PATTERN,
158
+ description: 'Content hash and attachment extension.'
159
+ })
160
+ }, { description: 'Stored attachment identifier.' });
161
+ export const NoteAssetContentSchema = Type.String({
162
+ description: 'Image or PDF attachment bytes.',
163
+ format: 'binary'
164
+ });
165
+ // External resources use bounded URLs and a fixed format class.
166
+ const ExternalAssetUrl = Type.String({
167
+ minLength: 1,
168
+ maxLength: 8192,
169
+ description: 'Public HTTP or HTTPS resource URL.'
170
+ });
171
+ const ExternalAssetKind = Type.Union([Type.Literal('image'), Type.Literal('pdf')], { description: 'Expected attachment class.' });
172
+ export const InspectExternalAssetBody = Type.Object({ url: ExternalAssetUrl }, {
173
+ additionalProperties: false,
174
+ description: 'Inspect a remote attachment without downloading its body.'
175
+ });
176
+ export const PreviewExternalAssetBody = Type.Object({ url: ExternalAssetUrl }, {
177
+ additionalProperties: false,
178
+ description: 'Read a bounded remote image preview.'
179
+ });
180
+ export const ExternalAssetInspectionSchema = Type.Object({
181
+ size: Nullable(Type.Integer({
182
+ minimum: 0,
183
+ description: 'Size reported by the source, or null when unknown.'
184
+ }))
185
+ }, { description: 'Optional remote size information.' });
186
+ export const ImportExternalAssetBody = Type.Object({
187
+ url: ExternalAssetUrl,
188
+ kind: ExternalAssetKind,
189
+ allowLargePdf: Type.Boolean({
190
+ description: 'User confirmed this PDF may exceed 50 MB.'
191
+ }),
192
+ remainingBytes: Type.Integer({
193
+ minimum: 1,
194
+ maximum: 200000000,
195
+ description: 'Remaining useful bytes in the current operation.'
196
+ })
197
+ }, {
198
+ additionalProperties: false,
199
+ description: 'Import one selected external attachment.'
200
+ });
201
+ export const ExternalAssetResultSchema = Type.Union([
202
+ Type.Object({
203
+ status: Type.Literal('stored', {
204
+ description: 'Resource stored successfully.'
205
+ }),
206
+ url: Type.String({ description: 'Permanent internal attachment URL.' }),
207
+ bytes: Type.Integer({ description: 'Actual stored byte count.' }),
208
+ format: Type.String({ description: 'Detected storage extension.' })
209
+ }, { description: 'Successful attachment import.' }),
210
+ Type.Object({
211
+ status: Type.Literal('confirmation-required', {
212
+ description: 'User must confirm a large PDF.'
213
+ }),
214
+ size: Nullable(Type.Integer({ description: 'Advertised size, or null.' }))
215
+ }, { description: 'Import paused for a large PDF confirmation.' }),
216
+ Type.Object({
217
+ status: Type.Literal('rejected', {
218
+ description: 'Resource exceeded a limit.'
219
+ }),
220
+ reason: Type.Union([Type.Literal('operation-limit'), Type.Literal('file-too-large')], { description: 'The limit that prevented this download.' })
221
+ }, { description: 'Import rejected without storing a file.' })
222
+ ], { description: 'Outcome of importing one external attachment.' });
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,7 @@
1
+ export function headingSlug(text) {
2
+ return text
3
+ .toLowerCase()
4
+ .replace(/[^\p{L}\p{N}_\s-]/gu, '')
5
+ .trim()
6
+ .replace(/\s+/g, '-');
7
+ }
@@ -0,0 +1,5 @@
1
+ // Require the standard UUID layout, version and variant fields.
2
+ const UUID_PATTERN = /^[\da-f]{8}-[\da-f]{4}-[1-8][\da-f]{3}-[89ab][\da-f]{3}-[\da-f]{12}$/i;
3
+ export function isUuid(value) {
4
+ return typeof value === 'string' && UUID_PATTERN.test(value);
5
+ }
@@ -0,0 +1,9 @@
1
+ // Malformed escapes such as "%E0" throw URIError. Keep the raw text instead.
2
+ export function safeDecodeURIComponent(text) {
3
+ try {
4
+ return decodeURIComponent(text);
5
+ }
6
+ catch {
7
+ return text;
8
+ }
9
+ }
@@ -0,0 +1,15 @@
1
+ import { safeDecodeURIComponent } from "./safe-decode.js";
2
+ /** True for `http:`/`https:` URLs without embedded credentials. */
3
+ export function isCredentialFreeWebUrl(url) {
4
+ return ((url.protocol === 'http:' || url.protocol === 'https:') &&
5
+ !url.username &&
6
+ !url.password);
7
+ }
8
+ /** Decoded last path segment; empty for a path that ends with a slash. */
9
+ export function webUrlLastSegment(url) {
10
+ return safeDecodeURIComponent(url.pathname.split('/').at(-1) ?? '');
11
+ }
12
+ /** Decoded file name of the URL path, or the host name when the path has none. */
13
+ export function webUrlFileName(url) {
14
+ return webUrlLastSegment(url) || url.hostname;
15
+ }
@@ -0,0 +1 @@
1
+ import{J as e,L as t,P as n,S as r,_ as i,b as a,l as o,s}from"./runtime-core.esm-bundler-BKFI1w28.js";import{_ as c,m as l,o as u,p as d}from"./use-router-link-BGc0noIO.js";import{t as f}from"./create-BSmXD9Zr.js";function p(e,t,n){let r=new Map,i=0;function a(e){let t=r.get(e);if(t)return r.delete(e),r.set(e,t),t.value}function o(a,o){s(a);let c=t(o);r.set(a,{value:o,weight:c}),i+=c;for(let[t,a]of r){if(i<=e||r.size<=1)break;r.delete(t),i-=a.weight,n?.(t,a.value)}}function s(e){let t=r.get(e);t&&(r.delete(e),i-=t.weight,n?.(e,t.value))}function c(){for(let e of r.keys())s(e)}return{get:a,set:o,remove:s,clear:c,size:()=>r.size}}var m=f({name:`QPage`,props:{padding:Boolean,styleFn:Function},setup(e,{slots:t}){let n=d(),i=r(c,l);if(i===l)return console.error(`QPage needs to be a deep child of QLayout`),l;if(r(`_q_pc_`,l)===l)return console.error(`QPage needs to be child of QPageContainer`),l;let o=s(()=>{let t=(i.header.space?i.header.size:0)+(i.footer.space?i.footer.size:0);if(typeof e.styleFn==`function`){let r=i.isContainer.value?i.containerHeight.value:n.screen.height;return e.styleFn(t,r)}return{minHeight:i.isContainer.value?i.containerHeight.value-t+`px`:n.screen.height===0?t===0?`100vh`:`calc(100vh - ${t}px)`:n.screen.height-t+`px`}}),f=s(()=>`q-page${e.padding?` q-layout-padding`:``}`);return()=>a(`main`,{class:f.value,style:o.value},u(t.default))}}),h=i({__name:`AppPage`,setup(r){function i(e,t){return{height:`${t-e}px`}}return(r,a)=>(n(),o(m,{"style-fn":i},{default:e(()=>[t(r.$slots,`default`)]),_:3}))}});export{p as n,h as t};
@@ -0,0 +1 @@
1
+ import{F as e,K as t,O as n,S as r,b as i,ct as a,ot as o,s,v as c}from"./runtime-core.esm-bundler-BKFI1w28.js";import{l,o as u,p as ee,r as d,s as f,t as p,v as m,w as te,x as h}from"./use-router-link-BGc0noIO.js";import{a as g,c as _,i as v,l as y,o as b,r as x,s as S,u as C}from"./event-rR76ioXz.js";import{s as w}from"./is-CE4jkrGQ.js";import{n as T,t as E}from"./create-BSmXD9Zr.js";import{p as ne}from"./QInput-DJgTh2Qy.js";import{p as re}from"./QBtn-DoggJe1Q.js";import{n as D,t as ie}from"./use-dark-BHObfh0O.js";import{$ as ae,B as oe,F as O,G as se,H as ce,I as le,J as ue,K as de,L as fe,M as pe,N as me,P as he,Q as ge,R as _e,U as ve,V as ye,W as k,X as be,Y as A,Z as xe,et as j,l as Se,q as Ce,tt as M,u as we,x as Te,z as N}from"./index-B2CzafCr.js";var P=E({name:`QItemSection`,props:{avatar:Boolean,thumbnail:Boolean,side:Boolean,top:Boolean,noWrap:Boolean},setup(e,{slots:t}){let n=s(()=>`q-item__section column q-item__section--${e.avatar||e.side||e.thumbnail?`side`:`main`}`+(e.top?` q-item__section--top justify-start`:` justify-center`)+(e.avatar?` q-item__section--avatar`:``)+(e.thumbnail?` q-item__section--thumbnail`:``)+(e.noWrap?` q-item__section--nowrap`:``));return()=>i(`div`,{class:n.value},u(t.default))}}),Ee=E({name:`QItem`,props:{...D,...d,tag:{type:String,default:`div`},active:{type:Boolean,default:null},clickable:{type:Boolean,default:null},onClick:Function,dense:Boolean,insetLevel:Number,role:String,tabindex:[String,Number],focused:Boolean,manualFocus:Boolean},emits:[`keyup`],setup(e,{slots:t,emit:n}){let o=ee(),c=ie(e,o),{hasLink:l,linkAttrs:u,linkClass:d,linkTag:te,navigateOnClick:g}=p(),_=a(null),v=a(null),y=s(()=>(e.clickable===null?e.onClick!==void 0:e.clickable)||l.value||e.tag===`label`),b=s(()=>!e.disable&&y.value),x=r(m,null),S=s(()=>{if(e.role!==void 0)return e.role;let t=x===null?null:x.value;if(t===`menu`||t===`menubar`)return y.value?`menuitem`:void 0;if(!l.value)return b.value?`button`:t===`list`?`listitem`:void 0}),w=s(()=>`q-item q-item-type row no-wrap`+(e.dense?` q-item--dense`:``)+(c()?` q-item--dark`:``)+(l.value&&e.active===null?d.value:e.active?` q-item--active${e.activeClass===void 0?``:` ${e.activeClass}`}`:``)+(e.disable?` disabled`:``)+(b.value?` q-item--clickable q-link cursor-pointer `+(e.manualFocus?`q-manual-focusable`:`q-focusable q-hoverable`)+(e.focused?` q-manual-focusable--focused`:``):``)),T=s(()=>e.insetLevel===void 0?null:{[`padding`+(o.lang.rtl?`Right`:`Left`)]:16+e.insetLevel*56+`px`});function E(e){b.value&&(v.value!==null&&!e.qAvoidFocus&&(!e.qKeyEvent&&document.activeElement===_.value?v.value.focus({preventScroll:!0}):document.activeElement===v.value&&_.value.focus({preventScroll:!0})),g(e))}function ne(e){if(b.value&&h(e,[13,32])){C(e),e.qKeyEvent=!0;let t=new MouseEvent(`click`,e);t.qKeyEvent=!0,_.value.dispatchEvent(t)}n(`keyup`,e)}function re(e){b.value&&e.keyCode===32&&C(e)}function D(){let e=f(t.default,[]);return b.value&&e.unshift(i(`div`,{class:`q-focus-helper`,tabindex:-1,ref:v})),e}return()=>{let t={ref:_,class:w.value,style:T.value,role:S.value,onKeyup:ne};return b.value?(t.onClick=E,t.onKeydown=re,t.tabindex=e.tabindex||`0`,Object.assign(t,u.value)):y.value&&(t[`aria-disabled`]=`true`),i(te.value,t,D())}}}),De=[`ul`,`ol`],F=E({name:`QList`,props:{...D,bordered:Boolean,dense:Boolean,separator:Boolean,padding:Boolean,role:String,tag:{type:String,default:`div`}},setup(t,{slots:n}){let r=ee(),a=ie(t,r),o=s(()=>t.role===void 0?De.includes(t.tag)?null:`list`:t.role);e(m,s(()=>t.role===void 0?`list`:t.role));let c=s(()=>`q-list`+(t.bordered?` q-list--bordered`:``)+(t.dense?` q-list--dense`:``)+(t.separator?` q-list--separator`:``)+(a()?` q-list--dark`:``)+(t.padding?` q-list--padding`:``));return()=>i(t.tag,{class:c.value,role:o.value},u(n.default))}}),I={left:!0,right:!0,up:!0,down:!0,horizontal:!0,vertical:!0},Oe=Object.keys(I);I.all=!0;function ke(e){let t={};for(let n of Oe)e[n]&&(t[n]=!0);return Object.keys(t).length===0?I:(t.horizontal?t.left=t.right=!0:t.left&&t.right&&(t.horizontal=!0),t.vertical?t.up=t.down=!0:t.up&&t.down&&(t.vertical=!0),t.horizontal&&t.vertical&&(t.all=!0),t)}var L=[`INPUT`,`TEXTAREA`];function R(e,t){return t.event===void 0&&e.target!==void 0&&!e.target.draggable&&typeof t.handler==`function`&&!L.includes(e.target.nodeName.toUpperCase())&&(e.qClonedBy===void 0||!e.qClonedBy.includes(t.uid))}var{passive:z,passiveCapture:B,notPassiveCapture:V}=v,Ae=0;function H(e,t,n){let r=b(e),i,a=r.left-t.event.x,o=r.top-t.event.y,s=Math.abs(a),c=Math.abs(o),l=t.direction;l.horizontal&&!l.vertical?i=a<0?`left`:`right`:!l.horizontal&&l.vertical?i=o<0?`up`:`down`:l.up&&o<0?(i=`up`,s>c&&(l.left&&a<0?i=`left`:l.right&&a>0&&(i=`right`))):l.down&&o>0?(i=`down`,s>c&&(l.left&&a<0?i=`left`:l.right&&a>0&&(i=`right`))):l.left&&a<0?(i=`left`,s<c&&(l.up&&o<0?i=`up`:l.down&&o>0&&(i=`down`))):l.right&&a>0&&(i=`right`,s<c&&(l.up&&o<0?i=`up`:l.down&&o>0&&(i=`down`)));let u=!1;if(i===void 0&&n===!1){if(t.event.isFirst||t.event.lastDir===void 0)return{};i=t.event.lastDir,u=!0,i===`left`||i===`right`?(r.left-=a,s=0,a=0):(r.top-=o,c=0,o=0)}return{synthetic:u,payload:{evt:e,touch:t.event.mouse!==!0,mouse:t.event.mouse===!0,position:r,direction:i,isFirst:t.event.isFirst,isFinal:n===!0,duration:Date.now()-t.event.time,distance:{x:s,y:c},offset:{x:a,y:o},delta:{x:r.left-t.event.lastX,y:r.top-t.event.lastY}}}}function U(e,t,n){t.modifiers=n,t.direction=ke(n),t.stop=n.stop===!0,t.prevent=n.prevent===!0,t.mouseAllDir=n.mouseAllDir===!0||n.mousealldir===!0,t.preserveCursor=n.preserveCursor===!0||n.preservecursor===!0;let r=n.mouse?n.mouseCapture||n.mousecapture?B:z:null;r!==t.mouseOpts&&(t.mouseOpts!==null&&e.removeEventListener(`mousedown`,W,t.mouseOpts),r!==null&&e.addEventListener(`mousedown`,W,r),t.mouseOpts=r);let i=w.has.touch?n.capture?B:z:null;i!==t.touchOpts&&(t.touchOpts!==null&&e.removeEventListener(`touchstart`,G,t.touchOpts),i!==null&&e.addEventListener(`touchstart`,G,i),t.touchOpts=i)}function W(e){let t=e.currentTarget.__qtouchpan;R(e,t)&&x(e)&&(t.target=document,document.addEventListener(`mousemove`,t,V),document.addEventListener(`mouseup`,t,B),Ne(t,e,!0))}function G(e){let t=e.currentTarget.__qtouchpan;if(R(e,t)){let{target:n}=e;t.target=n,n.addEventListener(`touchmove`,t,V),n.addEventListener(`touchcancel`,t,B),n.addEventListener(`touchend`,t,B),Ne(t,e,!1)}}function je(e){e.type===`mousemove`||e.type===`touchmove`?q(this,e):J(this,e)}function Me(e,t,n){n?C(t):(e.stop&&y(t),e.prevent&&S(t))}function Ne(e,t,n){if(w.is.firefox&&_(e.el,!0),e.lastEvt=t,n||e.stop){if(!e.direction.all&&(!n||!e.mouseAllDir)){let n=t.type.includes(`mouse`)?new MouseEvent(t.type,t):new TouchEvent(t.type,t);t.defaultPrevented&&S(n),t.cancelBubble&&y(n),Object.assign(n,{qKeyEvent:t.qKeyEvent,qClickOutside:t.qClickOutside,qAnchorHandled:t.qAnchorHandled,qClonedBy:t.qClonedBy===void 0?[e.uid]:t.qClonedBy.concat(e.uid)}),e.initialEvent={target:t.target,event:n}}y(t)}let{left:r,top:i}=b(t);e.event={x:r,y:i,time:Date.now(),mouse:n,detected:!1,isFirst:!0,isFinal:!1,lastX:r,lastY:i,lastDir:void 0}}function K(e,t,n){Me(e,t,n),e.styled=!0,e.preserveCursor||(e.cursor=document.documentElement.style.cursor||``,document.documentElement.style.cursor=`grabbing`),n&&document.body.classList.add(`no-pointer-events--children`),document.body.classList.add(`non-selectable`),M()}function Pe(e,t){e.styled=!1,e.cursor!==void 0&&(document.documentElement.style.cursor=e.cursor,e.cursor=void 0),document.body.classList.remove(`non-selectable`),t&&document.body.classList.remove(`no-pointer-events--children`)}function q(e,t){let{event:n}=e;if(n===void 0)return;let r=b(t),i=r.left-n.x,a=r.top-n.y;if(i===0&&a===0)return;e.lastEvt=t;let{mouse:o}=n;if(n.detected){n.isFirst||Me(e,t,o);let{payload:r,synthetic:i}=H(t,e,!1);r!==void 0&&(e.handler(r)===!1?J(e,t):(!e.styled&&n.isFirst&&K(e,t,o),n.lastX=r.position.left,n.lastY=r.position.top,n.lastDir=i?void 0:r.direction,n.isFirst=!1));return}let{direction:s}=e;if(s.all||o&&e.mouseAllDir){K(e,t,o),n.detected=!0,q(e,t);return}let c=Math.abs(i),l=Math.abs(a);c!==l&&(s.horizontal&&c>l||s.vertical&&c<l||s.up&&c<l&&a<0||s.down&&c<l&&a>0||s.left&&c>l&&i<0||s.right&&c>l&&i>0?(n.detected=!0,q(e,t)):J(e,t,!0))}function J(e,t,n){let{event:r,target:i}=e;if(r===void 0)return;let{mouse:a}=r;if(a?(i.removeEventListener(`mousemove`,e,V),i.removeEventListener(`mouseup`,e,B)):(i.removeEventListener(`touchmove`,e,V),i.removeEventListener(`touchcancel`,e,B),i.removeEventListener(`touchend`,e,B)),w.is.firefox&&_(e.el,!1),n)e.styled&&Pe(e,a),!r.detected&&e.initialEvent!==void 0&&e.initialEvent.target.dispatchEvent(e.initialEvent.event);else if(r.detected){t===void 0&&(t=e.lastEvt),r.isFirst&&e.handler(H(t,e).payload);let{payload:n}=H(t,e,!0),{handler:i}=e;e.styled?(Pe(e,a),a?setTimeout(i,50,n):i(n)):i(n)}e.event=void 0,e.initialEvent=void 0,e.lastEvt=void 0,e.target=null}var Fe=T({name:`touch-pan`,beforeMount(e,{value:t,modifiers:n}){let r={handleEvent:je,el:e,uid:`qvtp_`+Ae++,handler:t,modifiers:void 0,direction:void 0,stop:!1,prevent:!1,mouseAllDir:!1,preserveCursor:!1,mouseOpts:null,touchOpts:null,target:null,event:void 0,initialEvent:void 0,lastEvt:void 0,styled:!1,cursor:void 0};e.__qtouchpan=r,U(e,r,n),r.touchOpts!==null&&e.addEventListener(`touchmove`,g,V)},updated(e,{oldValue:t,value:n,modifiers:r}){let i=e.__qtouchpan;i!==void 0&&(t!==n&&(typeof n!=`function`&&J(i),i.handler=n),r!==i.modifiers&&U(e,i,r))},beforeUnmount(e){let t=e.__qtouchpan;t!==void 0&&(J(t),t.mouseOpts!==null&&e.removeEventListener(`mousedown`,W,t.mouseOpts),t.touchOpts!==null&&(e.removeEventListener(`touchstart`,G,t.touchOpts),e.removeEventListener(`touchmove`,g,V)),e.__qtouchpan=void 0)}}),Ie={hover:Boolean,hoverDelay:{type:Number,default:0},hoverHideDelay:{type:Number,default:150}};function Le({props:e,canShow:t,show:n,canHide:r,hide:i}){let{removeTimeout:a,registerTimeout:o}=ye();function s(r){e.hover===!0&&r.pointerType!==`touch`&&(a(),t(r)&&(e.hoverDelay>0?o(()=>{n(r)},e.hoverDelay):n(r)))}function c(t){a(),r(t)&&o(()=>{i(t)},e.hoverHideDelay)}function l(t){e.hover===!0&&t.pointerType!==`touch`&&c(t)}function u(e){e.pointerType!==`touch`&&a()}return{clearHoverTimer:a,hoverShow:s,hoverHide:l,scheduleHoverHide:c,onHoverContentEnter:u}}var Y=null,{notPassiveCapture:X,passiveCapture:Re}=v,Z=[];function Q(e){Y!==null&&(clearTimeout(Y),Y=null);let t=e.target;if(t===void 0||t.nodeType===8||t.classList.contains(`no-pointer-events`))return;let n=null,r=!1;for(let e=A.length-1;e>=0;e--){let t=A[e].$,i=t.type.name;if(i!==`QTooltip`){if(i===`QDialog`){if(t.props.seamless!==!0){if(r===!1)return;n=new Set(A.slice(e+1).map(e=>e.contentEl));break}continue}r=!0}}for(let r=Z.length-1;r>=0;r--){let i=Z[r];if(n!==null&&!n.has(i.innerRef.value))return;if((i.anchorEl.value===null||!i.anchorEl.value.contains(t)&&!O(i.anchorEl.value,t))&&(t===document.body||i.innerRef.value!==null&&!i.innerRef.value.contains(t)&&!O(i.innerRef.value,t)))e.qClickOutside=!0,i.onClickOutside(e);else return}}function ze(e){e.pointerType!==`touch`&&(Y!==null&&clearTimeout(Y),Y=setTimeout(()=>{Y=null,Q(e)},0))}function Be(e){Z.push(e),Z.length===1&&(document.addEventListener(`pointerdown`,ze,Re),document.addEventListener(`mousedown`,Q,X),document.addEventListener(`touchstart`,Q,X))}function Ve(e){let t=Z.indexOf(e);t!==-1&&(Z.splice(t,1),Z.length===0&&(Y!==null&&(clearTimeout(Y),Y=null),document.removeEventListener(`pointerdown`,ze,Re),document.removeEventListener(`mousedown`,Q,X),document.removeEventListener(`touchstart`,Q,X)))}var He=`a[href], button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex^="-"])`,Ue=E({name:`QMenu`,inheritAttrs:!1,props:{...j,...ge,...D,...k,persistent:Boolean,autoClose:Boolean,separateClosePopup:Boolean,noEscDismiss:Boolean,noRouteDismiss:Boolean,noRefocus:Boolean,noFocus:Boolean,fit:Boolean,cover:Boolean,square:Boolean,anchor:{type:String,validator:N},self:{type:String,validator:N},offset:{type:Array,validator:_e},touchPosition:Boolean,...Ie,maxHeight:{type:String,default:null},maxWidth:{type:String,default:null}},emits:[...xe,`click`,`escapeKey`],setup(e,{slots:r,emit:d,attrs:f}){let p,m=!1,h=c(),{proxy:g}=h,_=ee(),v=a(null),y=o(!1),b=s(()=>!e.persistent&&!e.noRouteDismiss),x=ie(e,_),{registerTick:S,removeTick:w}=ce(),{registerTransitionEnd:T}=oe(e),{transitionProps:E,transitionStyle:D}=ve(e),{anchorEl:O,canShow:ge,anchorEvents:_e}=ae({showing:y,getPopupRole:()=>f.role}),{show:ye,hide:k}=be({showing:y,canShow:ge,canHide(e){return m&&P()?e?.type!==`click`:!0},handleShow:je,handleHide:Me,handleRouteChange:Ne,hideOnRouteChange:b,processOnMount:!0}),{clearHoverTimer:A,hoverShow:xe,scheduleHoverHide:j,onHoverContentEnter:Ce}=Le({props:e,canShow:()=>!y.value,show:ye,canHide:e=>y.value&&!W(e.relatedTarget),hide:k});Object.assign(_e,{hoverShow:xe,hoverHide:G});let{showPortal:M,hidePortal:N,portalIsOpening:P,renderPortal:Ee}=se(h,v,Ie,`menu`),{captureRefocusTarget:De,clearRefocusTarget:F,restoreFocus:I,restoreFocusSync:Oe,adoptRefocusTarget:ke}=Te(e,()=>!e.noFocus&&!m&&P()),L={anchorEl:O,innerRef:v,onClickOutside(t){if(!e.persistent&&y.value)return k(t),(t.type===`touchstart`||t.target.classList.contains(`q-dialog__backdrop`))&&C(t),!0}},R=s(()=>fe(e.anchor||(e.cover?`center middle`:`bottom start`),_.lang.rtl)),z=s(()=>e.cover?R.value:fe(e.self||`top start`,_.lang.rtl)),B=he({props:e,$q:_,anchorEl:O,innerRef:v,showing:y,anchorOrigin:R,selfOrigin:z}),V=s(()=>`q-menu scroll`+(B.viaCssAnchor?``:` q-position-engine`)+(e.square?` q-menu--square`:``)+(x()?` q-menu--dark q-dark`:``)),Ae=s(()=>e.autoClose?{onClick:Pe}:{}),H=s(()=>y.value&&!e.persistent);t(H,e=>{e?(pe(J),Be(L)):(me(J),Ve(L))});function U(){ne(()=>{let e=v.value;e&&e.contains!==void 0&&!e.contains(document.activeElement)&&(e=e.querySelector(`[autofocus][tabindex], [data-autofocus][tabindex]`)||e.querySelector(`[autofocus] [tabindex], [data-autofocus] [tabindex]`)||e.querySelector(`[autofocus], [data-autofocus]`)||e,e.focus({preventScroll:!0}))})}function W(e){if(e==null)return!1;if(O.value!==null&&O.value.contains(e)||v.value!==null&&v.value.contains(e))return!0;let t=ue(e);for(;t!=null;){if(t===g)return!0;t=l(t)}return!1}function G(e){if(e.pointerType===`touch`)return;j(e);let t=l(g);for(;t!=null;)t.$options.name===`QMenu`&&t.$props.hover===!0&&t.__qHoverHide?.(e),t=l(t)}function je(t){m=e.hover&&t?.type===`pointerenter`,A(),De(m),Se(q),M(!1,m),B.handleShow(!m&&(e.touchPosition||e.contextMenu)?t:void 0),!e.noFocus&&!m&&document.activeElement.blur(),S(()=>{B.handleTick(),!e.noFocus&&!m&&U()}),T(()=>{_.platform.is.ios&&(p=e.autoClose,v.value.click()),B.viaCssAnchor||B.track(),M(!0),d(`show`,t)})}function Me(e){m=!1,w(),N(),K(!0),e===void 0||!e.qClickOutside?I(e):F(),T(()=>{N(!0),B.releaseAnchor(!1),d(`hide`,e)})}function Ne(){F()}function K(e){A(),B.releaseAnchor(e),(e||y.value)&&(we(q),Ve(L),me(J)),e||F()}function Pe(e){p?p=!1:(de(g,e),d(`click`,e))}function q(t){H.value&&!e.noFocus&&!m&&!re(v.value,t.target)&&!le(v.value,t.target)&&U()}function J(t){e.noEscDismiss||(d(`escapeKey`),k(t))}function Fe(e){if(e.keyCode!==9||e.defaultPrevented||!H.value||v.value===null)return;let t=v.value,n=t.querySelectorAll(He),r=n.length===0?null:n[e.shiftKey?0:n.length-1];(r===null||document.activeElement===r||e.shiftKey&&document.activeElement===t)&&(we(q),Oe(e),k(e))}function Ie(){return i(te,E(),()=>y.value?i(`div`,{...f,ref:v,tabindex:-1,onKeydown:[].concat(f.onKeydown||[],Fe),...e.hover?{onPointerenter:[].concat(f.onPointerenter||[],Ce),onPointerleave:[].concat(f.onPointerleave||[],G)}:{},class:[V.value,f.class],style:[f.style,D(),B.positionStyle.value],...Ae.value},u(r.default)):null)}return n(()=>{K(!1)}),Object.assign(g,{focus:U,updatePosition:B.updatePosition,__adoptRefocusTarget:ke}),g.__qHoverHide=j,Ee}});function We(e){return e===!1?0:e===!0||e===void 0?1:Number.parseInt(e,10)||0}function $(e){let t=e.currentTarget,n=t.__qclosepopup;n!==0&&setTimeout(()=>{let r=ue(t);r!==void 0&&Ce(r,e,n)},0)}function Ge(e){h(e,13)&&$(e)}var Ke=T({name:`close-popup`,beforeMount(e,{value:t}){e.__qclosepopup=We(t),e.addEventListener(`click`,$),e.addEventListener(`keyup`,Ge)},updated(e,{value:t,oldValue:n}){t!==n&&e.__qclosepopup!==void 0&&(e.__qclosepopup=We(t))},beforeUnmount(e){e.__qclosepopup!==void 0&&(e.removeEventListener(`click`,$),e.removeEventListener(`keyup`,Ge),e.__qclosepopup=void 0)}});export{Fe as a,P as c,Ie as i,Ue as n,F as o,Le as r,Ee as s,Ke as t};
@@ -0,0 +1,93 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/typescript-Utq2Cl8c.js","assets/typescript-j_1H8WHN.js","assets/javascript-Yelw-5ZN.js","assets/javascript-BzbQS41l.js","assets/vue-CSBlZ1UP.js","assets/css-LbU1hoFO.js","assets/html-BcACZWSP.js","assets/json-B88Oqtu5.js","assets/json-CaljABEy.js","assets/css-CdtkT07m.js","assets/scss-DHtrkMkT.js","assets/html-DDNsd9lV.js","assets/core-Bumj8M77.js","assets/rolldown-runtime-Dd_uD5pT.js","assets/ccount-CcG1m-Yh.js","assets/engine-oniguruma-B4iNeJbd.js"])))=>i.map(i=>d[i]);
2
+ import{P as e,_ as t,ct as n,l as r,ot as i,pt as a,s as o,w as s}from"./runtime-core.esm-bundler-BKFI1w28.js";import{t as c}from"./QBtn-DoggJe1Q.js";import{O as l}from"./index-B2CzafCr.js";import{n as u}from"./vue-i18n.runtime-BpRrzZrT.js";import{n as d}from"./pinia-DCsnCHsH.js";import{d as f,f as p,l as m,o as h,s as g,u as _}from"./use-server-events-C13Sw-rU.js";import{n as v}from"./AppPage-DdmqiV2R.js";function y(e){if(e.length<2||e[0]!==`"`||e[e.length-1]!==`"`)return e;let t=e.slice(1,-1),n=[];for(let e=0;e<t.length;e++){let r=t[e];r===`\\`&&/^[0-7]{3}$/.test(t.slice(e+1,e+4))?(n.push(parseInt(t.slice(e+1,e+4),8)),e+=3):r===`\\`&&t[e+1]===`"`?(n.push(34),e+=1):r===`\\`&&t[e+1]===`\\`?(n.push(92),e+=1):n.push((r??``).charCodeAt(0))}return new TextDecoder(`utf-8`).decode(new Uint8Array(n))}function b(e){return e.newPath||e.oldPath}function x(e,t){return`${e}:${t}`}var S={typescript:()=>l(()=>import(`./typescript-Utq2Cl8c.js`),__vite__mapDeps([0,1])),tsx:()=>l(()=>import(`./tsx-udAQXfEw.js`),[]),javascript:()=>l(()=>import(`./javascript-Yelw-5ZN.js`),__vite__mapDeps([2,3])),jsx:()=>l(()=>import(`./jsx-Bz0zcwM4.js`),[]),vue:()=>l(()=>import(`./vue-CSBlZ1UP.js`),__vite__mapDeps([4,5,3,6,7,1])),json:()=>l(()=>import(`./json-CaljABEy.js`),__vite__mapDeps([8,7])),markdown:()=>l(()=>import(`./markdown-BYOwaDjH.js`),[]),css:()=>l(()=>import(`./css-CdtkT07m.js`),__vite__mapDeps([9,5])),scss:()=>l(()=>import(`./scss-DHtrkMkT.js`),__vite__mapDeps([10,5])),html:()=>l(()=>import(`./html-DDNsd9lV.js`),__vite__mapDeps([11,6,5,3])),yaml:()=>l(()=>import(`./yaml-rwi0_p6S.js`),[]),bash:()=>l(()=>import(`./bash-CLZ0U2zV.js`),[]),python:()=>l(()=>import(`./python-gzcpVVnB.js`),[]),go:()=>l(()=>import(`./go-rLFTqkRN.js`),[]),rust:()=>l(()=>import(`./rust-Cfkwpbl8.js`),[]),java:()=>l(()=>import(`./java-BXcb2rRD.js`),[]),kotlin:()=>l(()=>import(`./kotlin-DhhofPvG.js`),[])},C={light:()=>l(()=>import(`./github-light-EUqPIrTm.js`),[]),dark:()=>l(()=>import(`./github-dark-C-LZuMrd.js`),[])},w={light:`github-light`,dark:`github-dark`},T=null,E=new Set,D=new Map;function O(e){return S[e]!==void 0}async function k(e,t){try{await e.loadLanguage(S[t]()),E.add(t)}finally{D.delete(t)}}async function A(e){T||=(async()=>{let[{createHighlighterCore:e},{createOnigurumaEngine:t}]=await Promise.all([l(()=>import(`./core-Bumj8M77.js`),__vite__mapDeps([12,13,14])),l(()=>import(`./engine-oniguruma-B4iNeJbd.js`),__vite__mapDeps([15,13]))]);return e({themes:[C.light(),C.dark()],langs:[],engine:t(()=>l(()=>import(`./wasm-BnjxR4X6.js`),[]))})})();let t=await T;if(!E.has(e)){let n=D.get(e);n||(n=k(t,e),D.set(e,n)),await n}return t}async function ee(e,t,n={}){if(!O(e)||t.length===0)return`failed`;let r=n.documents??[{length:t.length,skip:0}];if(r.reduce((e,t)=>e+t.length,0)!==t.length)return`failed`;let{signal:i}=n;try{let a=await A(e),o=0,s=0,c=!0;for(let l of r){let r,u=Math.max(1,n.sliceSize??l.length);for(let d=0;d<l.length;d+=u){if(c||await n.yieldBetween?.(),c=!1,i?.aborted)return`aborted`;let f=Math.min(d+u,l.length),p=a.codeToTokensWithThemes(t.slice(o+d,o+f).join(`
3
+ `),{lang:e,themes:w,...r?{grammarState:r}:{}});r=a.getLastGrammarState(p);let m=Math.max(d,l.skip);f<=m||(n.onSlice?.(p.slice(m-d).map(e=>e.map(e=>({content:e.content,colorLight:e.variants.light?.color,colorDark:e.variants.dark?.color}))),s),s+=f-m)}o+=l.length}return`done`}catch{return`failed`}}var j=null,M=!1,N=1,P=new Map;function F(){return typeof Worker<`u`&&!M}function I(){let e=new Worker(new URL(`/assets/highlight.worker-BHCdEX06.js`,``+import.meta.url),{type:`module`});return e.addEventListener(`message`,e=>{let t=e.data,n=P.get(t.id);n&&(t.type===`slice`?n.onSlice(t.tokens,t.start):(P.delete(t.id),n.finish(t.ok?`done`:`failed`)))}),e.addEventListener(`error`,t=>{console.error(`The highlight worker failed, the main thread does the work now`,t),M=!0;for(let e of P.values())e.finish(`failed`);P.clear(),e.terminate(),j=null}),e}function L(e,t){e.postMessage(t)}function te(e,t,n){let{signal:r}=n;if(r?.aborted)return Promise.resolve(`aborted`);if(!j)try{j=I()}catch(e){return console.error(`The highlight worker did not start`,e),M=!0,Promise.resolve(`unsent`)}let i=j;return new Promise(a=>{let o=N++,s=()=>{P.delete(o)&&(j&&L(j,{type:`cancel`,id:o}),a(`aborted`))};P.set(o,{onSlice:(e,t)=>n.onSlice?.(e,t),finish:e=>{r?.removeEventListener(`abort`,s),a(e)}});try{L(i,{type:`tokenize`,id:o,lang:e,lines:Array.from(t),...n.documents?{documents:n.documents.map(e=>({...e}))}:{},sliceSize:n.sliceSize})}catch(e){console.error(`The highlight worker did not get the request`,e),P.delete(o),a(`unsent`);return}r?.addEventListener(`abort`,s,{once:!0})})}function R(){return typeof MessageChannel>`u`?new Promise(e=>setTimeout(e,0)):new Promise(e=>{let{port1:t,port2:n}=new MessageChannel;t.addEventListener(`message`,()=>{t.close(),e()},{once:!0}),t.start(),n.postMessage(null)})}var z=`import { ref, type Ref } from 'vue'
4
+ import * as path from 'node:path'
5
+ // A comment with a TODO and a URL: https://example.com
6
+ /** JSDoc with a {@link link} and @param tag */
7
+ export interface Item<T extends object = {}> {
8
+ readonly id: number
9
+ name?: string | null
10
+ tags: Array<Record<string, T>>
11
+ }
12
+ export enum Mode { Fast = 1, Slow = 'slow' }
13
+ @decorator()
14
+ export default class Store<T> extends Base implements Item {
15
+ private static count = 0n
16
+ #secret: unknown = /ab+c/gi.test('x')
17
+ constructor(public readonly id: number, protected items: Map<string, T> = new Map()) {
18
+ super()
19
+ }
20
+ async *load(this: Store<T>, ...rest: string[]): AsyncGenerator<number, void> {
21
+ const value = (await fetch(\`/api/\${this.id}?q=\${rest.join(',')}\`)).json() as unknown as T
22
+ for (const [key, item] of this.items) {
23
+ if (key === 'a' && item !== undefined) continue
24
+ else if (!key) { throw new TypeError("bad \${key}") }
25
+ switch (typeof item) { case 'string': break; default: yield 1.5e3 }
26
+ }
27
+ try { return } catch (err: unknown) { console.error(err) } finally { void 0 }
28
+ }
29
+ }
30
+ export const handler = <K extends keyof Item>(key: K): Item[K] | undefined => items.get(key)?.[key] ?? null
31
+ type Mapped = { [P in keyof Item]?: Item[P] extends string ? P : never }
32
+ `,B=`@use 'sass:math';
33
+ $gap: 8px;
34
+ // A comment
35
+ .card:not(.card--open) > .title, a[href^='http']::after {
36
+ --accent: #1976d2;
37
+ margin: math.div($gap, 2) auto calc(100% - #{$gap});
38
+ background: linear-gradient(to right, rgba(0, 0, 0, 0.5), var(--accent) 50%);
39
+ font: 600 1.2rem/1.4 'Inter', sans-serif !important;
40
+ @media (min-width: 600px) and (prefers-color-scheme: dark) { display: none; }
41
+ &:hover { transition: color .2s ease-in-out; }
42
+ }
43
+ @mixin box($size: 10px) { width: $size; height: $size; }
44
+ `,V={vue:`<script setup lang="ts">
45
+ import { computed, ref } from 'vue'
46
+ const props = withDefaults(defineProps<{ title: string; items?: string[] }>(), { items: () => [] })
47
+ const emit = defineEmits<{ (e: 'pick', value: string): void }>()
48
+ const count = ref(0)
49
+ const label = computed(() => \`\${props.title}: \${count.value}\`)
50
+ <\/script>
51
+
52
+ <template>
53
+ <q-list v-if="items.length > 0" class="list" @click="emit('pick', label)">
54
+ <q-item v-for="(item, index) in items" :key="item" :class="{ active: index === 0 }">
55
+ {{ item }} <!-- row -->
56
+ </q-item>
57
+ </q-list>
58
+ <p v-else>{{ $t('empty') }}</p>
59
+ </template>
60
+
61
+ <style scoped lang="scss">
62
+ .list { margin: 0 auto; &:hover { color: var(--accent); } }
63
+ </style>
64
+ `,css:B,scss:B,html:`<!doctype html>
65
+ <html lang="en">
66
+ <head><meta charset="utf-8" /><title>Sample</title></head>
67
+ <body class="app" data-id="1">
68
+ <!-- A comment -->
69
+ <a href="https://example.com" @click.prevent="open(item)" :class="{ active: on }">Link &amp; text</a>
70
+ <input v-model="text" disabled />
71
+ </body>
72
+ </html>
73
+ `,markdown:`# Title
74
+
75
+ Some *emphasis*, **strong** text, \`inline code\` and a [link](https://example.com).
76
+
77
+ - First item
78
+ - Second item with ![image](a.png)
79
+
80
+ > A quote
81
+
82
+ 1. Step one
83
+ 2. Step two
84
+
85
+ | Name | Value |
86
+ | ---- | ----- |
87
+ | a | 1 |
88
+
89
+ \`\`\`ts
90
+ const answer: number = 42
91
+ \`\`\`
92
+ `,typescript:z,javascript:z,tsx:z,jsx:z};function ne(e){return(V[e]??`x`).split(`
93
+ `)}var re=2e4,H=100,ie={ts:`typescript`,tsx:`tsx`,js:`javascript`,jsx:`jsx`,mjs:`javascript`,cjs:`javascript`,vue:`vue`,json:`json`,md:`markdown`,css:`css`,scss:`scss`,html:`html`,yml:`yaml`,yaml:`yaml`,sh:`bash`,py:`python`,go:`go`,rs:`rust`,java:`java`,kt:`kotlin`,kts:`kotlin`};function U(e){let t=e.split(`.`);return t.length<2?`text`:ie[t.pop().toLowerCase()]??`text`}function ae(e){return O(U(e))}function W(e,t,n,r,i){return ee(e,t,{documents:n,sliceSize:H,yieldBetween:R,signal:r,onSlice:i})}async function G(e,t,n,r,i){let a=[],o=(e,t)=>{a.splice(t,e.length,...e),r?.(a.slice())};if(!F())return K(await W(e,t,i,n,o),a);let s=await te(e,t,{sliceSize:H,documents:i,signal:n,onSlice:o});return(s===`unsent`||s===`failed`&&!F())&&(s=await W(e,t,i,n,o)),K(s,a)}function K(e,t){return e===`done`?t:e===`aborted`?void 0:null}var q=new Set;async function oe(e){await G(e,ne(e)).catch(()=>null)===null&&q.delete(e)}function se(e){if(!F())return;let t=new Set(e.map(U).filter(O));for(let e of t)q.has(e)||(q.add(e),oe(e))}var J=v(re,e=>e?.length??1),Y=Promise.resolve();function ce(e){let t=Y.then(()=>new Promise(e=>setTimeout(e,0))).then(e);return Y=t.catch(()=>void 0),t}function le(e,t,n,r,i,a){return ce(async()=>{let o=J.get(e);if(o!==void 0)return o;if(r?.aborted)return;let s=n(),c=await G(U(t),s,r,i,a?.());if(c!==void 0)return J.set(e,c),c})}function ue(e){return J.get(e)}function X(e){return{...e,oldPath:y(e.oldPath),newPath:y(e.newPath)}}function de(e){let{signature:t,...n}=e;return{...n,hunks:[]}}function Z(e,t,n){let r=new Map(e.map(e=>[b(e),e])),i=new Map;return{files:n.map(e=>{let n=b(e);i.set(n,e.signature);let a=r.get(n);return a&&t.get(n)===e.signature?a:de(e)}),signatures:i}}var Q=d(`diff`,()=>{let e=i([]),t=i([]),r=new Map,a=new Map,s=i(!1),c=i(!1),l=i(null),u=o(()=>s.value&&!c.value),d=o(()=>[...e.value,...t.value].map(e=>e.newPath||e.oldPath)),f=n(new Map),p=n(new Map),m=new Map;function v(n){return n===`staged`?e.value:t.value}function y(e,t){return f.value.get(x(e,b(t)))?.file}function S(e,t){return f.value.get(x(e,b(t)))?.for===t}function C(e,t){let n=p.value.get(x(e,b(t)));return n?.for===t?n.message:void 0}function w(e,t){let n=x(e,b(t));if(!p.value.has(n))return;let r=new Map(p.value);r.delete(n),p.value=r}function T(e,t){return w(e,t),E(e,t)}async function E(e,t){let n=x(e,b(t));if(S(e,t)||m.get(n)===t)return;m.set(n,t);let r=new URLSearchParams({path:t.newPath,oldPath:t.oldPath,status:t.status});try{let i=X(await _(`/api/diff/${e}/file?${r}`));if(!v(e).includes(t))return;f.value=new Map(f.value).set(n,{file:i,for:t}),w(e,t)}catch(r){if(!v(e).includes(t))return;p.value=new Map(p.value).set(n,{message:g(r),for:t})}finally{m.get(n)===t&&m.delete(n)}}function D(){let n=new Set([...e.value.map(e=>x(`staged`,b(e))),...t.value.map(e=>x(`unstaged`,b(e)))]),r=new Map([...f.value].filter(([e])=>n.has(e)));r.size!==f.value.size&&(f.value=r);let i=new Map([...p.value].filter(([e])=>n.has(e)));i.size!==p.value.size&&(p.value=i)}let O=h(k);async function k(){s.value=!0;try{let[n,i]=await Promise.all([_(`/api/diff/staged/files`),_(`/api/diff/unstaged/files`)]),o=Z(e.value,r,n.map(X)),s=Z(t.value,a,i.map(X));e.value=o.files,r=o.signatures,t.value=s.files,a=s.signatures,D(),se([...o.files,...s.files].map(b)),l.value=null}catch(n){c.value||(e.value=[],t.value=[],r=new Map,a=new Map),l.value=g(n)}finally{s.value=!1,c.value=!0}}return{stagedFiles:e,unstagedFiles:t,loading:s,loaded:c,initialLoading:u,error:l,changedPaths:d,hunksOf:y,hunksFresh:S,hunksError:C,clearHunksError:w,ensureHunks:E,retryHunks:T,fetchDiff:O}});function $(e){let{snapshotData:t,...n}=e;return n}var fe=d(`active-review`,()=>{let e=i(null),t=i([]),n=i(!1),r=o(()=>{let e=new Map;for(let n of t.value){let t=e.get(n.filePath);t?t.push(n):e.set(n.filePath,[n])}return e});async function a(){n.value=!0;try{let n=(await _(`/api/reviews`)).filter(e=>e.status===`in_progress`).sort((e,t)=>t.createdAt.localeCompare(e.createdAt));e.value=n[0]??null,t.value=e.value?await _(`/api/reviews/${e.value.id}/comments`):[]}finally{n.value=!1}}function s(n){e.value=$(n),t.value=[]}async function c(t){e.value&&(await f(`/api/reviews/${e.value.id}`,{status:t}),await a())}async function l(n){if(!e.value)throw Error(`No active review`);let r=await p(`/api/reviews/${e.value.id}/comments`,n);return t.value=[...t.value,r],r}async function u(e,n){let r=await f(`/api/comments/${e}`,{content:n});t.value=t.value.map(t=>t.id===e?r:t)}async function d(e){await m(`/api/comments/${e}`),t.value=t.value.filter(t=>t.id!==e)}async function h(e){let n=await f(`/api/comments/${e}/resolve`);t.value=t.value.map(t=>t.id===e?n:t)}async function g(e){let n=await f(`/api/comments/${e}/unresolve`);t.value=t.value.map(t=>t.id===e?n:t)}return{activeReview:e,comments:t,loading:n,commentsByFile:r,refresh:a,setActiveReview:s,setStatus:c,createComment:l,editComment:u,deleteComment:d,resolveComment:h,unresolveComment:g}}),pe=t({__name:`CancelButton`,setup(t){let{t:n}=u();return(t,i)=>(e(),r(c,s({padding:`2px 8px`},t.$attrs,{dense:``,flat:``,color:`warning`,label:a(n)(`reviews.comments.cancel`)}),null,16,[`label`]))}}),me=t({__name:`CreateButton`,setup(t){let{t:n}=u();return(t,i)=>(e(),r(c,s({padding:`2px 8px`,label:a(n)(`reviews.create.submit`)},t.$attrs,{unelevated:``,dense:``,color:`accent`}),null,16,[`label`]))}});export{Q as a,le as c,b as d,y as f,$ as i,U as l,pe as n,ue as o,fe as r,ae as s,me as t,x as u};
@@ -0,0 +1 @@
1
+ import{C as e,J as t,P as n,S as r,U as i,Y as a,_ as o,b as s,c,d as l,h as u,kt as d,l as f,ot as p,pt as m,r as h,s as g,v as _,w as v}from"./runtime-core.esm-bundler-BKFI1w28.js";import{O as y,_ as b,m as x,o as S,p as C}from"./use-router-link-BGc0noIO.js";import{t as w}from"./create-BSmXD9Zr.js";import{t as T}from"./QInput-DJgTh2Qy.js";import{l as E}from"./QBtn-DoggJe1Q.js";import{a as D,c as O,o as k,s as A}from"./index-B2CzafCr.js";import{n as j}from"./vue-i18n.runtime-BpRrzZrT.js";import{n as M,r as N}from"./pinia-DCsnCHsH.js";import{f as P,s as F,u as I}from"./use-server-events-C13Sw-rU.js";import{a as L,t as R}from"./ClosePopup-lpH_1Ju2.js";import{t as z}from"./_plugin-vue_export-helper-BDNMzG2s.js";import{a as B,i as V,n as H,r as U,t as W}from"./CreateButton-Dnpwobd9.js";import{t as G}from"./QFab-C-YZWgmW.js";var K=o({__name:`SearchInput`,props:{modelValue:{},modelModifiers:{}},emits:[`update:modelValue`],setup(e){let r=i(e,`modelValue`);return(e,i)=>(n(),f(T,v({modelValue:r.value,"onUpdate:modelValue":i[0]||=e=>r.value=e},e.$attrs,{dense:``,outlined:``,clearable:``}),{prepend:t(()=>[u(E,{name:`search`,size:`xs`})]),_:1},16,[`modelValue`]))}}),q={position:{type:String,default:`bottom-right`,validator:e=>[`top-right`,`top-left`,`bottom-right`,`bottom-left`,`top`,`right`,`bottom`,`left`].includes(e)},offset:{type:Array,validator:e=>e.length===2},expand:Boolean};function J(){let{props:e}=_(),t=C(),n=r(b,x);if(n===x)return console.error(`QPageSticky needs to be child of QLayout`),x;let i=g(()=>{let t=e.position;return{top:t.includes(`top`),right:t.includes(`right`),bottom:t.includes(`bottom`),left:t.includes(`left`),vertical:t===`top`||t===`bottom`,horizontal:t===`left`||t===`right`}}),a=g(()=>n.header.offset),o=g(()=>n.right.offset),c=g(()=>n.footer.offset),l=g(()=>n.left.offset),u=g(()=>{let n=0,r=0,s=i.value,u=t.lang.rtl?-1:1;s.top&&a.value!==0?r=`${a.value}px`:s.bottom&&c.value!==0&&(r=`${-c.value}px`),s.left&&l.value!==0?n=`${u*l.value}px`:s.right&&o.value!==0&&(n=`${-u*o.value}px`);let d={transform:`translate(${n}, ${r})`};return e.offset&&(d.margin=`${e.offset[1]}px ${e.offset[0]}px`),s.vertical?(l.value!==0&&(d[t.lang.rtl?`right`:`left`]=`${l.value}px`),o.value!==0&&(d[t.lang.rtl?`left`:`right`]=`${o.value}px`)):s.horizontal&&(a.value!==0&&(d.top=`${a.value}px`),c.value!==0&&(d.bottom=`${c.value}px`)),d}),d=g(()=>`q-page-sticky row flex-center fixed-${e.position} q-page-sticky--${e.expand?`expand`:`shrink`}`);function f(t){let n=S(t.default);return s(`div`,{class:d.value,style:u.value},e.expand?n:[s(`div`,n)])}return{$layout:n,getStickyContent:f}}var Y=w({name:`QPageSticky`,props:q,setup(e,{slots:t}){let{getStickyContent:n}=J();return()=>n(t)}});function X(e){let t=new URLSearchParams;e.search&&t.set(`search`,e.search),e.createdFrom&&t.set(`createdFrom`,e.createdFrom),e.createdTo&&t.set(`createdTo`,e.createdTo),e.files&&e.files.length>0&&t.set(`files`,e.files.join(`,`));let n=t.toString();return n?`?${n}`:``}var Z=M(`reviews`,()=>{let e=p([]),t=p(!1),n=p(null);async function r(r={}){t.value=!0,n.value=null;try{e.value=await I(`/api/reviews${X(r)}`)}catch(t){e.value=[],n.value=F(t)}finally{t.value=!1}}async function i(t){let n=await P(`/api/reviews`,t);return e.value=[V(n),...e.value],n}return{reviews:e,loading:t,error:n,fetchReviews:r,createReview:i}}),Q={class:`text-h6`},$=z(o({__name:`ReviewCreateDialog`,props:{modelValue:{type:Boolean,required:!0},modelModifiers:{}},emits:e([`created`,`hide`],[`update:modelValue`]),setup(e,{emit:r}){let o=i(e,`modelValue`),s=r,{t:l}=j(),h=Z(),g=p(``),_=p(!1),v=p(null);function b(){g.value=``,_.value=!1,v.value=null}async function x(){_.value=!0,v.value=null;try{let e=g.value.trim(),t=await h.createReview(e?{name:e}:{});o.value=!1,b(),s(`created`,t)}catch(e){v.value=F(e)}finally{_.value=!1}}function S(){b(),s(`hide`)}return(e,r)=>(n(),f(O,{modelValue:o.value,"onUpdate:modelValue":r[1]||=e=>o.value=e,onHide:S},{default:t(()=>[u(A,{class:`review-create-dialog`},{default:t(()=>[u(k,null,{default:t(()=>[c(`div`,Q,d(m(l)(`reviews.create.title`)),1)]),_:1}),u(k,{class:`q-gutter-y-md`},{default:t(()=>[u(T,{modelValue:g.value,"onUpdate:modelValue":r[0]||=e=>g.value=e,dense:``,outlined:``,label:m(l)(`reviews.create.nameLabel`),hint:m(l)(`reviews.create.nameHint`),error:!!v.value,"error-message":v.value??void 0,onKeyup:y(x,[`enter`])},null,8,[`modelValue`,`label`,`hint`,`error`,`error-message`])]),_:1}),u(D,{align:`right`},{default:t(()=>[a(u(H,null,null,512),[[R]]),u(W,{loading:_.value,onClick:x},null,8,[`loading`])]),_:1})]),_:1})]),_:1},8,[`modelValue`]))}}),[[`__scopeId`,`data-v-095646d6`]]),ee=o({__name:`CreateReviewFabButton`,emits:[`created`],setup(e,{emit:r}){let i=r,o=U(),s=B(),{activeReview:c}=N(o),{changedPaths:d}=N(s),f=p(!1),m=p(!1),_=p([18,18]),v=p(!1),y=g(()=>d.value.length===0||c.value!==null);function b(e){v.value=e.isFirst!==!0&&e.isFinal!==!0,_.value=[_.value[0]-(e.delta?.x??0),_.value[1]-(e.delta?.y??0)]}function x(e){o.setActiveReview(e),i(`created`,e)}return(e,r)=>(n(),l(h,null,[u(Y,{position:`bottom-right`,offset:_.value},{default:t(()=>[a(u(G,{modelValue:m.value,"onUpdate:modelValue":r[0]||=e=>m.value=e,icon:`add`,color:`accent`,disable:y.value||v.value,onClick:r[1]||=e=>f.value=!0},null,8,[`modelValue`,`disable`]),[[L,b,void 0,{prevent:!0,mouse:!0}]])]),_:1},8,[`offset`]),u($,{modelValue:f.value,"onUpdate:modelValue":r[2]||=e=>f.value=e,onCreated:x,onHide:r[3]||=e=>m.value=!1},null,8,[`modelValue`])],64))}});export{Z as n,K as r,ee as t};
@@ -1 +1 @@
1
- import{P as e,c as t,d as n,h as r}from"./runtime-core.esm-bundler-BKFI1w28.js";import{t as i}from"./QBtn-CzrOO1zA.js";import{t as a}from"./_plugin-vue_export-helper-BDNMzG2s.js";var o={},s={class:`fullscreen bg-blue text-white text-center q-pa-md flex flex-center`};function c(a,o){return e(),n(`div`,s,[t(`div`,null,[o[0]||=t(`div`,{style:{"font-size":`30vh`}},`404`,-1),o[1]||=t(`div`,{class:`text-h2`,style:{opacity:`0.4`}},`Oops. Nothing here...`,-1),r(i,{class:`q-mt-xl`,color:`white`,"text-color":`blue`,unelevated:``,to:`/`,label:`Go Home`,"no-caps":``})])])}var l=a(o,[[`render`,c]]);export{l as default};
1
+ import{P as e,c as t,d as n,h as r}from"./runtime-core.esm-bundler-BKFI1w28.js";import{t as i}from"./QBtn-DoggJe1Q.js";import{t as a}from"./_plugin-vue_export-helper-BDNMzG2s.js";var o={},s={class:`fullscreen bg-blue text-white text-center q-pa-md flex flex-center`};function c(a,o){return e(),n(`div`,s,[t(`div`,null,[o[0]||=t(`div`,{style:{"font-size":`30vh`}},`404`,-1),o[1]||=t(`div`,{class:`text-h2`,style:{opacity:`0.4`}},`Oops. Nothing here...`,-1),r(i,{class:`q-mt-xl`,color:`white`,"text-color":`blue`,unelevated:``,to:`/`,label:`Go Home`,"no-caps":``})])])}var l=a(o,[[`render`,c]]);export{l as default};
@@ -0,0 +1 @@
1
+ import{C as e,Dt as t,F as n,I as r,J as i,K as a,M as o,O as s,Ot as c,P as l,R as u,T as d,U as f,W as p,Y as m,_ as h,c as g,ct as _,d as v,ft as y,h as b,j as x,kt as S,l as C,m as w,ot as T,pt as E,r as D,rt as O,s as k,tt as A,u as j}from"./runtime-core.esm-bundler-BKFI1w28.js";import{O as M,k as N,p as P}from"./use-router-link-BGc0noIO.js";import{a as F,i as I,l as L,t as R}from"./QBtn-DoggJe1Q.js";import{i as z,j as B,t as V}from"./index-B2CzafCr.js";import{n as H}from"./vue-i18n.runtime-BpRrzZrT.js";import{n as ee,r as U}from"./pinia-DCsnCHsH.js";import{f as te,n as W,o as ne,s as G,u as re}from"./use-server-events-C13Sw-rU.js";import{t as ie}from"./safe-storage-aRoyeFxv.js";import{f as ae,t as oe}from"./agent-store-DP6Vrw6L.js";import{c as se,n as ce,t as le}from"./QSpace-B5NneHAd.js";import{r as ue}from"./use-virtual-scroll-BSXYZjZ5.js";import{c as K,s as q}from"./ClosePopup-lpH_1Ju2.js";import{t as J}from"./_plugin-vue_export-helper-BDNMzG2s.js";import{n as de,t as fe}from"./QScrollArea-BSSZoaV5.js";import{n as pe,r as me,t as he}from"./QVirtualScroll-CZJMBpmR.js";import{a as Y,d as X,f as ge,r as Z,u as _e}from"./CreateButton-Dnpwobd9.js";import{t as ve}from"./AppPage-DdmqiV2R.js";import{_ as ye,a as be,b as xe,c as Se,d as Ce,f as we,g as Te,h as Ee,i as De,l as Oe,m as ke,n as Ae,o as je,p as Me,r as Ne,s as Pe,t as Fe,u as Ie,v as Le,x as Re,y as ze}from"./StatusSwitcher-DAeNzNP7.js";import{t as Be}from"./PanelResize-DY0Nzmql.js";import{r as Ve,t as He}from"./CreateReviewFabButton-KvKPEJzI.js";import{t as Ue}from"./use-add-agent-context-SApxn9fW.js";var We=8,Ge=12,Ke=20;function Q(e,t){return We+e*Ge+(t?Ke:0)}function qe(e){return e.toSorted((e,t)=>e.type===t.type?e.name.localeCompare(t.name):e.type===`directory`?-1:1).map(e=>({...e,children:e.children?qe(e.children):void 0}))}function Je(e,t){let n=[],r=new Map,i=e=>{let t=r.get(e);return t||(t=new Map,r.set(e,t)),t};for(let r of e){let e=r.split(`/`),a=n,o=``;for(let n=0;n<e.length;n++){let s=e[n];if(!s)continue;let c=n===e.length-1;o=o===``?s:`${o}/${s}`;let l=`${c?`f`:`d`}:${s}`,u=i(a),d=u.get(l);d||(d={name:s,path:c?r:o,type:c?`file`:`directory`,isChanged:c?t.has(r):!1,children:c?void 0:[]},a.push(d),u.set(l,d)),!c&&d.children&&(a=d.children)}}return qe(n)}function Ye(e,t){if(!t.trim())return e;let n=t.toLowerCase(),r=e=>{if(e.type===`file`)return e.path.toLowerCase().includes(n)?e:null;let t=e.children?.map(r).filter(e=>e!==null);return t&&t.length>0?{...e,children:t}:e.name.toLowerCase().includes(n)?e:null};return e.map(r).filter(e=>e!==null)}function Xe(e,t,n){let r=[],i=(e,a)=>{for(let o of e){if(o.type===`file`){r.push({kind:`file`,path:o.path,name:o.name,depth:a});continue}let e=o,s=[e.path],c=[e.name];for(;e.children?.length===1&&e.children[0]?.type===`directory`;)e=e.children[0],s.push(e.path),c.push(e.name);let l=n||!s.some(e=>t.has(e));r.push({kind:`folder`,path:e.path,paths:s,name:c.join(`/`),depth:a,expanded:l}),l&&i(e.children??[],a+1)}};return i(e,0),r}function Ze(){let e=T([]),t=T(!1),n=T(!1),r=T(null),i=k(()=>!n.value),a=0;async function o(i,o=[]){let s=++a;t.value=!0;try{let t=await re(`/api/git/tree/${encodeURIComponent(i)}`);if(s!==a)return;e.value=Je(t.files.map(ge),new Set(o)),r.value=null}catch(e){if(s!==a)return;r.value=G(e)}finally{s===a&&(t.value=!1,n.value=!0)}}function s(){++a,e.value=[],t.value=!1,n.value=!1,r.value=null}return{tree:e,loading:t,initialLoading:i,error:r,fetchTree:o,reset:s}}var Qe=`githuman.diffListMode`;function $e(){return ie.get(Qe)===`tree`?`tree`:`list`}function et(e,t=new Set){for(let n of e)n.type===`directory`&&(t.add(n.path),et(n.children??[],t));return t}function tt(e){return e.type===`file`?e.isChanged:e.children?.some(tt)??!1}var $=ee(`file-explorer`,()=>{let e=Y(),{tree:t,initialLoading:n,error:r,fetchTree:i,reset:o}=Ze(),{lines:s,isBinary:c,loading:l,error:u,fetchContent:d,reset:f}=Re(),p=T(`unstaged`),m=T(!1),h=T(``),g=T(null),_=T(new Set),v=T(new Set),y=T($e()),b=T(new Set),x=T(null),S=T(0),C=k(()=>p.value===`staged`?e.stagedFiles:e.unstagedFiles),w=k(()=>new Map(C.value.map(e=>[X(e),e]))),E=k(()=>y.value===`tree`?Je(C.value.map(X),new Set):[]),D=k(()=>{let e=C.value;if(y.value===`list`)return e;let t=w.value,n=Xe(E.value,new Set,!0).flatMap(e=>e.kind===`file`?t.get(e.path)??[]:[]),r=new Set(n);return[...n,...e.filter(e=>!r.has(e))]}),O=k(()=>D.value.some(e=>v.value.has(X(e)))),A=k(()=>(h.value??``).trim()!==``),j=k(()=>{let e=(h.value??``).trim().toLowerCase();return e?D.value.filter(t=>X(t).toLowerCase().includes(e)):D.value}),M=k(()=>{let e=w.value;return Xe(Ye(E.value,(h.value??``).trim()),b.value,A.value).flatMap(t=>{if(t.kind===`folder`)return[t];let n=e.get(t.path);return n?[{...t,file:n}]:[]})}),N=k(()=>Ye(t.value,h.value??``)),P=k(()=>{let e=0,n=t=>{for(let r of t)r.type===`file`?e++:r.children&&n(r.children)};return n(t.value),e});a(t,e=>{let t=new Set,n=e=>{for(let r of e)r.type===`directory`&&r.children&&(tt(r)&&t.add(r.path),n(r.children))};n(e),_.value=t},{immediate:!0}),a(p,()=>{g.value=null,v.value=new Set,b.value=new Set,x.value=null,S.value++}),a(E,e=>{if(y.value!==`tree`||b.value.size===0)return;let t=et(e),n=[...b.value].filter(e=>t.has(e));n.length<b.value.size&&(b.value=new Set(n))}),a(g,e=>{if(m.value){if(!e){f();return}d(e,`WORKTREE`)}}),a(y,e=>{ie.set(Qe,e),g.value&&!m.value&&U(g.value)});function F(e){let t=new Set(b.value),n=e.some(e=>t.has(e));for(let r of e)n?t.delete(r):t.add(r);b.value=t}function I(e){let t=new Set(_.value);t.has(e)?t.delete(e):t.add(e),_.value=t}function L(e){let t=new Set(v.value);t.has(e)?t.delete(e):t.add(e),v.value=t}function R(e){g.value=e,L(e)}function z(e){g.value=e,v.value.has(e)||(v.value=new Set(v.value).add(e))}function B(){v.value=new Set(D.value.map(X)),S.value++}function V(){v.value=new Set,S.value++}function H(){D.value.length&&(O.value?V():B())}function ee(e){g.value=e,!m.value&&(v.value.has(e)||(v.value=new Set(v.value).add(e)),U(e))}function U(e){let t=D.value.findIndex(t=>X(t)===e);t<0||(x.value={path:e,index:t,seq:(x.value?.seq??0)+1})}let te=0,W=T(!1),G=ne(async()=>{W.value=!0;try{await e.fetchDiff(),m.value&&(await i(`WORKTREE`,e.changedPaths),g.value&&await d(g.value,`WORKTREE`))}finally{W.value=!1}});a(m,e=>{h.value=``,g.value=null,e?G():(o(),f())});async function re(){te=Date.now(),await G()}async function ae(){Date.now()-te<400||await G()}return{source:p,browseMode:m,filter:h,selectedPath:g,expandedFolders:_,expandedFiles:v,diffListMode:y,collapsedDiffFolders:b,scrollRequest:x,layoutVersion:S,tree:t,treeInitialLoading:n,treeError:r,refreshing:W,browseFileLines:s,browseFileIsBinary:c,browseFileLoading:l,browseFileError:u,diffFiles:D,hasExpandedFiles:O,filtering:A,filteredDiffFiles:j,diffTreeRows:M,filteredTree:N,totalTreeFiles:P,toggleFolder:I,toggleDiffFolder:F,toggleFileCard:L,handleCardToggle:R,expandFile:z,expandAllFiles:B,collapseAllFiles:V,toggleAllFiles:H,selectFile:ee,refresh:re,refreshFromServerEvent:ae}}),nt={class:`row items-center no-wrap q-gutter-x-xs`},rt={class:`row items-center no-wrap q-gutter-x-xs`},it=h({__name:`FileExplorerTabs`,props:e({stagedFilesLength:{},unstagedFilesLength:{}},{modelValue:{default:`unstaged`},modelModifiers:{}}),emits:[`update:modelValue`],setup(e){let t=f(e,`modelValue`),{t:n}=H();return(r,a)=>(l(),C(pe,{modelValue:t.value,"onUpdate:modelValue":a[0]||=e=>t.value=e,dense:``,"no-caps":``,align:`left`,"narrow-indicator":``,class:`text-primary q-mb-sm`},{default:i(()=>[b(me,{name:`unstaged`},{default:i(()=>[g(`div`,nt,[g(`span`,null,S(E(n)(`changes.unstaged`)),1),b(de,{color:`warning`,rounded:``},{default:i(()=>[w(S(e.unstagedFilesLength),1)]),_:1})])]),_:1}),b(me,{name:`staged`},{default:i(()=>[g(`div`,rt,[g(`span`,null,S(E(n)(`changes.staged`)),1),b(de,{color:`positive`,rounded:``},{default:i(()=>[w(S(e.stagedFilesLength),1)]),_:1})])]),_:1})]),_:1},8,[`modelValue`]))}}),at={class:`file-tree-node`},ot={class:`row items-center no-wrap q-gutter-x-xs`},st=[`data-tooltip`],ct=[`data-tooltip`],lt={key:2},ut=J(h({__name:`FileTreeNode`,props:{node:{},selectedPath:{},expandedFolders:{},level:{}},emits:[`toggle-folder`,`file-select`],setup(e,{emit:n}){let a=n;return(n,o)=>{let s=u(`FileTreeNode`,!0);return l(),v(`div`,at,[e.node.type===`directory`?m((l(),C(q,{key:0,clickable:``,dense:``,style:c({paddingLeft:`${E(Q)(e.level,!1)}px`}),onClick:o[0]||=t=>a(`toggle-folder`,e.node.path)},{default:i(()=>[b(K,{avatar:``,class:`file-tree-node__icon-section`},{default:i(()=>[g(`div`,ot,[b(L,{name:`chevron_right`,size:`xs`,class:t([`file-tree-node__chevron`,{"file-tree-node__chevron--expanded":e.expandedFolders.has(e.node.path)}])},null,8,[`class`]),b(L,{name:e.expandedFolders.has(e.node.path)?`folder_open`:`folder`,size:`xs`,color:`warning`},null,8,[`name`])])]),_:1}),b(K,{class:`text-mono`},{default:i(()=>[g(`div`,{class:`ellipsis file-tree-node__label`,"data-tooltip":e.node.path},S(e.node.name),9,st)]),_:1}),e.node.children?(l(),C(K,{key:0,side:``,class:`text-caption text-grey-6`},{default:i(()=>[w(S(e.node.children.length),1)]),_:1})):j(``,!0)]),_:1},8,[`style`])),[[I]]):m((l(),C(q,{key:1,clickable:``,dense:``,active:e.node.path===e.selectedPath,"active-class":`file-tree-node--selected`,style:c({paddingLeft:`${E(Q)(e.level,!0)}px`}),onClick:o[1]||=t=>a(`file-select`,e.node.path)},{default:i(()=>[b(K,{avatar:``,class:`file-tree-node__icon-section`},{default:i(()=>[b(L,{name:`insert_drive_file`,size:`xs`,color:`grey-6`})]),_:1}),b(K,{class:`text-mono`},{default:i(()=>[g(`div`,{class:`ellipsis file-tree-node__label`,"data-tooltip":e.node.path},S(e.node.name),9,ct)]),_:1}),e.node.isChanged?(l(),C(K,{key:0,side:``},{default:i(()=>[b(L,{name:`fiber_manual_record`,size:`8px`,color:`warning`})]),_:1})):j(``,!0)]),_:1},8,[`active`,`style`])),[[I]]),e.node.type===`directory`&&e.expandedFolders.has(e.node.path)&&e.node.children?(l(),v(`div`,lt,[(l(!0),v(D,null,r(e.node.children,t=>(l(),C(s,{key:t.path,node:t,"selected-path":e.selectedPath,"expanded-folders":e.expandedFolders,level:e.level+1,onToggleFolder:o[2]||=e=>a(`toggle-folder`,e),onFileSelect:o[3]||=e=>a(`file-select`,e)},null,8,[`node`,`selected-path`,`expanded-folders`,`level`]))),128))])):j(``,!0)])}}}),[[`__scopeId`,`data-v-ef4a1d44`]]);function dt(){let e=P(),{t}=H(),n=se(),r=$(),i=Z();async function a(e,i,a){try{await te(i,{paths:[e]}),await r.refresh()}catch(e){n(t(a),e)}}function o(n){let r=(i.commentsByFile.get(n)??[]).filter(e=>!e.resolved).length;if(r===0)return a(n,`/api/git/stage`,`changes.actions.stageError`);e.dialog({title:t(`changes.actions.stageUnresolvedTitle`),message:t(`changes.actions.stageUnresolvedMessage`,{path:n,count:r}),persistent:!0,ok:{label:t(`changes.actions.stageUnresolvedOk`),flat:!0},cancel:{label:t(`changes.actions.discardConfirmCancel`),flat:!0}}).onOk(()=>{a(n,`/api/git/stage`,`changes.actions.stageError`)})}function s(e){return a(e,`/api/git/unstage`,`changes.actions.unstageError`)}function c(n){e.dialog({title:t(`changes.actions.discardConfirmTitle`),message:t(`changes.actions.discardConfirmMessage`,{path:n}),persistent:!0,ok:{label:t(`changes.actions.discardConfirmOk`),color:`negative`,flat:!0},cancel:{label:t(`changes.actions.discardConfirmCancel`),flat:!0}}).onOk(()=>{a(n,`/api/git/discard`,`changes.actions.discardError`)})}return{stage:o,unstage:s,discard:c}}var ft={class:`file-list-item__path-row row no-wrap items-center`},pt=[`data-tooltip`],mt={class:`text-caption`},ht={class:`text-positive`},gt={class:`text-negative q-ml-xs`},_t=J(h({__name:`FileListItem`,props:{file:{},selected:{type:Boolean},source:{},label:{},depth:{}},emits:[`click`],setup(e){let n={added:`A`,modified:`M`,deleted:`D`,renamed:`R`},r={added:`positive`,modified:`warning`,deleted:`negative`,renamed:`purple`},a=e,{t:o}=H(),{stage:s,unstage:u,discard:d}=dt(),f=Z(),p=k(()=>X(a.file)),h=k(()=>f.commentsByFile.get(p.value)?.length??0);return(a,f)=>m((l(),C(q,{clickable:``,dense:``,class:`file-list-item`,active:e.selected,"active-class":`file-list-item--selected`,"aria-label":e.label===void 0?void 0:p.value,style:c(e.depth===void 0?void 0:{paddingLeft:`${E(Q)(e.depth,!0)}px`}),onClick:f[3]||=e=>a.$emit(`click`)},{default:i(()=>[b(K,{avatar:``,class:`file-list-item__icon-section`},{default:i(()=>[g(`span`,{class:t([`text-caption text-weight-bold text-mono`,`text-${r[e.file.status]}`])},S(n[e.file.status]),3)]),_:1}),b(K,{class:`text-mono`},{default:i(()=>[g(`div`,ft,[g(`span`,{class:`ellipsis file-list-item__path-label`,"data-tooltip":p.value},S(e.label??p.value),9,pt),h.value>0?(l(),C(xe,{key:0,compact:``,class:`file-list-item__badge`,count:h.value},null,8,[`count`])):j(``,!0)])]),_:1}),b(K,{side:``,class:`file-list-item__stats`},{default:i(()=>[g(`span`,mt,[g(`span`,ht,`+`+S(e.file.additions),1),g(`span`,gt,`-`+S(e.file.deletions),1)])]),_:1}),b(K,{side:``,class:`file-list-item__actions`},{default:i(()=>[e.source===`unstaged`?(l(),v(D,{key:0},[m(b(R,{flat:``,dense:``,round:``,size:`sm`,icon:`undo`,"aria-label":E(o)(`changes.actions.discard`),"data-tooltip":E(o)(`changes.actions.discard`),onClick:f[0]||=N(e=>E(d)(p.value),[`stop`])},null,8,[`aria-label`,`data-tooltip`]),[[I]]),m(b(R,{flat:``,dense:``,round:``,size:`sm`,icon:`add`,"aria-label":E(o)(`changes.actions.stage`),"data-tooltip":E(o)(`changes.actions.stage`),onClick:f[1]||=N(e=>E(s)(p.value),[`stop`])},null,8,[`aria-label`,`data-tooltip`]),[[I]])],64)):m((l(),C(R,{key:1,flat:``,dense:``,round:``,size:`sm`,icon:`remove`,"aria-label":E(o)(`changes.actions.unstage`),"data-tooltip":E(o)(`changes.actions.unstage`),onClick:f[2]||=N(e=>E(u)(p.value),[`stop`])},null,8,[`aria-label`,`data-tooltip`])),[[I]])]),_:1})]),_:1},8,[`active`,`aria-label`,`style`])),[[I]])}}),[[`__scopeId`,`data-v-a94df6a5`]]),vt=h({__name:`BrowseModeToggle`,props:{modelValue:{type:Boolean,default:!1},modelModifiers:{}},emits:[`update:modelValue`],setup(e){let t=f(e,`modelValue`),{t:n}=H();return(e,r)=>(l(),C(q,null,{default:i(()=>[b(K,null,{default:i(()=>[b(ue,null,{default:i(()=>[w(S(E(n)(`browse.toggle`)),1)]),_:1})]),_:1}),b(K,{side:``},{default:i(()=>[b(V,{modelValue:t.value,"onUpdate:modelValue":r[0]||=e=>t.value=e,dense:``,size:`xs`},null,8,[`modelValue`])]),_:1})]),_:1}))}}),yt={class:`row items-center no-wrap q-gutter-x-xs`},bt=[`data-tooltip`],xt=J(h({__name:`DiffTreeFolderRow`,props:{name:{},path:{},depth:{},expanded:{type:Boolean},locked:{type:Boolean}},emits:[`toggle`],setup(e){let{t:n}=H();return(r,a)=>m((l(),C(q,{clickable:!e.locked,dense:``,class:`file-list-item diff-tree-folder-row`,style:c({paddingLeft:`${E(Q)(e.depth,!1)}px`}),"aria-expanded":e.locked?void 0:e.expanded,"aria-label":e.locked?void 0:E(n)(`changes.listMode.folder`,{path:e.path}),onClick:a[0]||=e=>r.$emit(`toggle`)},{default:i(()=>[b(K,{avatar:``,class:`diff-tree-folder-row__icons`},{default:i(()=>[g(`div`,yt,[b(L,{name:`chevron_right`,size:`xs`,class:t([`diff-tree-folder-row__chevron`,{"diff-tree-folder-row__chevron--expanded":e.expanded,invisible:e.locked}])},null,8,[`class`]),b(L,{name:e.expanded?`folder_open`:`folder`,size:`xs`,color:`warning`},null,8,[`name`])])]),_:1}),b(K,{class:`text-mono`},{default:i(()=>[g(`span`,{class:`ellipsis`,"data-tooltip":e.path},S(e.name),9,bt)]),_:1})]),_:1},8,[`clickable`,`style`,`aria-expanded`,`aria-label`])),[[I,!e.locked]])}}),[[`__scopeId`,`data-v-e82c6cd4`]]),St={class:`file-list-panel__header q-pa-sm`},Ct={key:1,class:`text-subtitle2 q-mb-sm`},wt={key:0,class:`text-primary`},Tt={class:`row no-wrap items-center q-gutter-x-xs`},Et={key:0,class:`row justify-center q-pa-lg`},Dt={key:0,class:`text-caption text-grey-6 q-px-md q-py-sm`},Ot={key:0,class:`text-caption text-grey-6 q-px-md q-py-sm`},kt=32,At=J(h({__name:`FileListPanel`,setup(e){let{t}=H(),{stagedFiles:n,unstagedFiles:a,initialLoading:o,error:s}=U(Y()),c=$(),{source:u,browseMode:d,filter:f,selectedPath:p,expandedFolders:m,treeInitialLoading:h,treeError:_,filteredDiffFiles:y,diffTreeRows:x,diffListMode:O,filtering:M,filteredTree:N,totalTreeFiles:P}=U(c),I=T(null),L=k(()=>I.value?.getScrollTarget()??null);return(e,T)=>(l(),v(D,null,[g(`div`,St,[E(d)?(l(),v(`div`,Ct,[w(S(E(t)(`browse.allFiles`))+` `,1),E(P)>0||!E(_)?(l(),v(`span`,wt,`(`+S(E(P))+`)`,1)):j(``,!0)])):(l(),C(it,{key:0,modelValue:E(u),"onUpdate:modelValue":T[0]||=e=>A(u)?u.value=e:null,"staged-files-length":E(n).length,"unstaged-files-length":E(a).length},null,8,[`modelValue`,`staged-files-length`,`unstaged-files-length`])),g(`div`,Tt,[b(Ve,{modelValue:E(f),"onUpdate:modelValue":T[1]||=e=>A(f)?f.value=e:null,class:`col`,placeholder:E(d)?E(t)(`browse.searchPlaceholder`):E(t)(`changes.filterPlaceholder`)},null,8,[`modelValue`,`placeholder`]),E(d)?j(``,!0):(l(),C(R,{key:0,flat:``,dense:``,round:``,size:`sm`,icon:`account_tree`,color:E(O)===`tree`?`primary`:void 0,"aria-label":E(t)(`changes.listMode.tree`),"aria-pressed":E(O)===`tree`,onClick:T[2]||=e=>O.value=E(O)===`tree`?`list`:`tree`},{default:i(()=>[b(B,{delay:E(500)},{default:i(()=>[w(S(E(t)(`changes.listMode.tree`)),1)]),_:1},8,[`delay`])]),_:1},8,[`color`,`aria-label`,`aria-pressed`]))])]),b(z),b(fe,{ref_key:`scrollArea`,ref:I,class:`col file-list-panel__scroll`,"content-style":`padding: 4px 0`,"content-active-style":`padding: 4px 0`},{default:i(()=>[(E(d)?E(h):E(o))?(l(),v(`div`,Et,[b(F,{color:`primary`,size:`2em`})])):E(d)?(l(),v(D,{key:1},[E(N).length===0&&(!E(_)||E(f)&&E(P)>0)?(l(),v(`p`,Dt,S(E(f)?E(t)(`browse.noMatchingFiles`):E(t)(`browse.noFiles`)),1)):j(``,!0),(l(!0),v(D,null,r(E(N),e=>(l(),C(ut,{key:e.path,node:e,"selected-path":E(p),"expanded-folders":E(m),level:0,onToggleFolder:E(c).toggleFolder,onFileSelect:E(c).selectFile},null,8,[`node`,`selected-path`,`expanded-folders`,`onToggleFolder`,`onFileSelect`]))),128))],64)):(l(),v(D,{key:2},[E(y).length===0&&(E(f)||!E(s))?(l(),v(`p`,Ot,S(E(f)?E(t)(`browse.noMatchingFiles`):E(t)(`changes.emptyFileList`)),1)):j(``,!0),L.value&&E(O)===`tree`?(l(),C(he,{key:`${E(u)}:tree`,"scroll-target":L.value,items:E(x),"virtual-scroll-item-size":kt},{default:i(({item:e})=>[e.kind===`folder`?(l(),C(xt,{key:`d:${e.path}`,name:e.name,path:e.path,depth:e.depth,expanded:e.expanded,locked:E(M),onToggle:t=>E(c).toggleDiffFolder(e.paths)},null,8,[`name`,`path`,`depth`,`expanded`,`locked`,`onToggle`])):(l(),C(_t,{key:`f:${e.path}`,file:e.file,label:e.name,depth:e.depth,selected:E(p)===e.path,source:E(u),onClick:t=>E(c).selectFile(e.path)},null,8,[`file`,`label`,`depth`,`selected`,`source`,`onClick`]))]),_:1},8,[`scroll-target`,`items`])):L.value?(l(),C(he,{key:`${E(u)}:list`,"scroll-target":L.value,items:E(y),"virtual-scroll-item-size":kt},{default:i(({item:e})=>[(l(),C(_t,{key:E(X)(e),file:e,selected:E(p)===E(X)(e),source:E(u),onClick:t=>E(c).selectFile(E(X)(e))},null,8,[`file`,`selected`,`source`,`onClick`]))]),_:1},8,[`scroll-target`,`items`])):j(``,!0)],64))]),_:1},512),b(z),b(vt,{modelValue:E(d),"onUpdate:modelValue":T[3]||=e=>A(d)?d.value=e:null},null,8,[`modelValue`])],64))}}),[[`__scopeId`,`data-v-bdc095b7`]]),jt=[`wheel`,`pointerdown`,`keydown`,`touchstart`];function Mt(e){let t=e.inputTarget??(typeof document>`u`?null:document),n=e.follow??ye,r=null,i;function o(){r=y(e.request),i?.(),i=void 0}for(let e of jt)t?.addEventListener(e,o,{capture:!0,passive:!0});let s=a([()=>y(e.request),()=>y(e.list),()=>y(e.root)],([t,a,o],s,c)=>{if(!t||t===r||!a||!o)return;let l=!1,u,f=()=>{l=!0,u?.(),u=void 0};i=f,c(()=>{f(),y(e.request)===t&&(r=t),i===f&&(i=void 0)}),d().then(()=>{l||t===r||(a.scrollTo(t.index,`start`),u=n({root:o,target:()=>e.target?e.target(t):document.getElementById(`diff-file-${t.path}`)}))})},{immediate:!0,flush:`post`});O(()=>{s(),i?.();for(let e of jt)t?.removeEventListener(e,o,!0)})}var Nt=[`aria-label`,`aria-expanded`],Pt={class:`text-weight-medium`},Ft={class:`text-positive`},It={class:`text-negative`},Lt={key:0,class:`text-grey-6`},Rt={key:1,class:`text-grey-6`},zt={key:2,class:`text-grey-6`},Bt={key:3,class:`text-grey-6`},Vt=J(h({__name:`DiffStatusBar`,props:{files:{},anyExpanded:{type:Boolean}},emits:[`toggle-all`],setup(e,{emit:t}){let n=e,r=t,{t:a}=H(),o=k(()=>{let e=n.files.reduce((e,t)=>e+t.additions,0),t=n.files.reduce((e,t)=>e+t.deletions,0),r=n.files.filter(e=>e.status===`added`).length,i=n.files.filter(e=>e.status===`modified`).length,a=n.files.filter(e=>e.status===`deleted`).length,o=n.files.filter(e=>e.status===`renamed`).length;return{total:n.files.length,additions:e,deletions:t,added:r,modified:i,deleted:a,renamed:o}});return(t,n)=>(l(),v(`div`,{class:`diff-status-bar row items-center q-gutter-x-md q-pa-sm text-body2 non-selectable`,role:`button`,tabindex:`0`,"aria-label":E(a)(e.anyExpanded?`changes.collapseAll`:`changes.expandAll`),"aria-expanded":e.anyExpanded,onDblclick:n[0]||=e=>r(`toggle-all`),onKeydown:[n[1]||=M(N(e=>!e.repeat&&r(`toggle-all`),[`prevent`]),[`enter`]),n[2]||=M(N(e=>!e.repeat&&r(`toggle-all`),[`prevent`]),[`space`])]},[g(`span`,Pt,S(E(a)(`changes.filesChanged`,{count:o.value.total})),1),g(`span`,Ft,` +`+S(o.value.additions)+` `+S(E(a)(`changes.additions`)),1),g(`span`,It,` -`+S(o.value.deletions)+` `+S(E(a)(`changes.deletions`)),1),o.value.added?(l(),v(`span`,Lt,S(o.value.added)+` `+S(E(a)(`changes.added`)),1)):j(``,!0),o.value.modified?(l(),v(`span`,Rt,S(o.value.modified)+` `+S(E(a)(`changes.modified`)),1)):j(``,!0),o.value.deleted?(l(),v(`span`,zt,S(o.value.deleted)+` `+S(E(a)(`changes.deletedPlural`)),1)):j(``,!0),o.value.renamed?(l(),v(`span`,Bt,S(o.value.renamed)+` `+S(E(a)(`changes.renamed`)),1)):j(``,!0),b(B,{delay:E(500)},{default:i(()=>[w(S(E(a)(e.anyExpanded?`changes.collapseAllHint`:`changes.expandAllHint`)),1)]),_:1},8,[`delay`])],40,Nt))}}),[[`__scopeId`,`data-v-2de87982`]]),Ht=6e3,Ut=40;function Wt(e,t,n){let r=_(n(t())?.clientWidth??0),i=k(()=>JSON.stringify([e.version,r.value])),a=we({get minHeight(){return e.minHeight},get heightOwner(){return e.owner},heightKey:`card-reserve`,get heightVersion(){return i.value},get cacheHeight(){return e.cacheHeight},get keep(){return e.keep},cost:Ut,mountMargin:Ht},t),o;function s(){let e=n(t());e&&(r.value=e.clientWidth,o=Me(e,()=>{r.value=e.clientWidth})),a.start(e)}function c(){a.stop(),o?.(),o=void 0}return O(c),{mounted:a.mounted,height:a.height,start:s,stop:c}}var Gt={key:1,class:`card-shell-placeholder__title text-mono`,"aria-busy":`true`},Kt=J(h({__name:`ChangesFileCard`,props:{file:{}},setup(e){let n=e,r=$(),i=Y(),a=Z(),{expandedFiles:o}=U(r),{activeReview:u,commentsByFile:d}=U(a),f=k(()=>X(n.file)),m=k(()=>_e(r.source,f.value)),h=k(()=>i.hunksOf(r.source,n.file)),g=k(()=>i.hunksFresh(r.source,n.file)),_=k(()=>i.hunksError(r.source,n.file)),y=k(()=>o.value.has(f.value)),b=k(()=>d.value.get(f.value)),w=k(()=>!!u.value),T={key:m.value},D=Ce(`wrap`,()=>Se(f.value),T),O=Ce(`viewMode`,()=>`diff`,T),A=Ie(T),j=Oe(T),M=k(()=>O.value===`full`?j.value:A.value),N=k(()=>46+(y.value?Te(n.file,h.value)+Ee(b.value??[],O.value)+(M.value?90:0):0)),P=k(()=>JSON.stringify([y.value,O.value,D.value,w.value,M.value?[M.value.column,M.value.startKey,M.value.endKey]:null,b.value?.map(e=>[e.id,e.lineType,e.lineNumberEnd,e.content,e.suggestion,e.resolved])])),F=p(`el`),{mounted:I,height:L,start:R,stop:z}=Wt({get minHeight(){return N.value},get owner(){return h.value??n.file},get version(){return P.value},get cacheHeight(){return y.value&&g.value&&O.value===`diff`&&!D.value&&!b.value?.length&&!M.value},get keep(){return!!M.value}},()=>F.value,ze());x(R),s(z);function B(){i.ensureHunks(r.source,n.file)}function V(){i.retryHunks(r.source,n.file)}return(n,a)=>(l(),v(`div`,{ref_key:`el`,ref:F,class:t({"card-shell-placeholder":!E(I)}),style:c(E(I)?void 0:{height:`${E(L)}px`})},[E(I)?(l(),C(Ae,{key:0,file:e.file,"state-key":m.value,detail:h.value,"hunks-loaded":g.value,"hunks-error":_.value,expanded:y.value,"agent-source":E(r).source,commentable:w.value,"comments-editable":w.value,comments:b.value,onLoadHunks:B,onRetryHunks:V,onClearHunksError:a[0]||=t=>E(i).clearHunksError(E(r).source,e.file),onToggle:a[1]||=e=>E(r).handleCardToggle(f.value),onExpand:a[2]||=e=>E(r).expandFile(f.value)},null,8,[`file`,`state-key`,`detail`,`hunks-loaded`,`hunks-error`,`expanded`,`agent-source`,`commentable`,`comments-editable`,`comments`])):(l(),v(`div`,Gt,S(f.value),1))],6))}}),[[`__scopeId`,`data-v-c1bd4d06`]]),qt={key:0,class:`active-review-bar row items-center q-gutter-x-sm q-px-sm no-wrap`},Jt={class:`text-body2 ellipsis`},Yt=J(h({__name:`ActiveReviewBar`,setup(e){let{t}=H(),n=se(),r=Z(),{activeReview:i}=U(r),a=oe(),o=Ue();function s(e){r.setStatus(e).catch(e=>{n(t(`reviews.comments.error`),e)})}return(e,n)=>E(i)?(l(),v(`div`,qt,[b(L,{name:`rate_review`,size:`18px`,color:`primary`}),g(`span`,Jt,S(E(i).name??E(t)(`reviews.list.unnamed`)),1),b(le),E(a).enabled?(l(),C(R,{key:0,flat:``,dense:``,"no-caps":``,size:`sm`,icon:E(ce),label:E(t)(`agent.context.addReview`),onClick:n[0]||=e=>E(o)({kind:`review`,reviewId:E(i).id})},null,8,[`icon`,`label`])):j(``,!0),b(Fe,{status:E(i).status,onChange:s},null,8,[`status`])])):j(``,!0)}}),[[`__scopeId`,`data-v-2b6e4bdd`]]),Xt={key:1,class:`q-pa-md text-grey-6`},Zt=12,Qt=1.5,$t=2,en=J(h({__name:`DiffPanel`,setup(e){let{t}=H(),r=$(),{diffFiles:o}=U(r),{error:s,loading:c}=U(Y()),u=Z(),{activeReview:f}=U(u);ke({create:e=>u.createComment(e),edit:(e,t)=>u.editComment(e,t),remove:e=>u.deleteComment(e),resolve:e=>u.resolveComment(e),unresolve:e=>u.unresolveComment(e)});let p=T(null),m=k(()=>p.value?.getScrollTarget()??null);n(Le,()=>m.value);let h=T(null);return Mt({request:()=>r.scrollRequest,list:h,root:m}),a(()=>r.layoutVersion,async()=>{await d(),h.value?.reset()}),a(o,async(e,t)=>{ae(e,t,(e,t)=>X(e)===X(t))||(await d(),h.value?.reset())}),(e,n)=>(l(),v(D,null,[E(s)?(l(),C(je,{key:0,title:E(t)(`changes.loadError`),message:E(s),loading:E(c),onRetry:n[0]||=e=>E(r).refresh()},null,8,[`title`,`message`,`loading`])):j(``,!0),E(o).length===0&&!E(s)?(l(),v(`div`,Xt,S(E(t)(`changes.emptyDiffPanel`)),1)):E(o).length>0?(l(),v(D,{key:2},[b(Yt),E(f)?(l(),C(z,{key:0})):j(``,!0),b(Vt,{files:E(o),"any-expanded":E(r).hasExpandedFiles,onToggleAll:E(r).toggleAllFiles},null,8,[`files`,`any-expanded`,`onToggleAll`]),b(z),b(fe,{ref_key:`scrollArea`,ref:p,class:`col sticky-header-scroll`,"content-style":`padding: 8px; width: 100%; max-width: 100%`,"content-active-style":`padding: 8px; width: 100%; max-width: 100%`},{default:i(()=>[m.value?(l(),C(he,{key:E(r).source,ref_key:`virtualScroll`,ref:h,"scroll-target":m.value,items:E(o),"virtual-scroll-item-size":E(46),"virtual-scroll-slice-size":Zt,"virtual-scroll-slice-ratio-before":Qt,"virtual-scroll-slice-ratio-after":$t},{default:i(({item:e})=>[(l(),v(`div`,{key:E(X)(e),class:`diff-virtual-slot`},[b(Kt,{file:e},null,8,[`file`])]))]),_:1},8,[`scroll-target`,`items`,`virtual-scroll-item-size`])):j(``,!0)]),_:1},512)],64)):j(``,!0),!E(f)&&E(o).length>0?(l(),C(He,{key:3})):j(``,!0)],64))}}),[[`__scopeId`,`data-v-30baafc5`]]),tn={key:1,class:`q-pa-md text-grey-6`},nn={key:0,class:`row justify-center q-pa-lg`},rn={key:1,class:`q-pa-md text-grey-6`},an={class:`text-caption`},on={key:2,class:`q-pa-md text-grey-6`},sn=h({__name:`FileContentPanel`,setup(e){let{t}=H(),n=$(),{selectedPath:r,browseFileLines:o,browseFileIsBinary:s,browseFileLoading:c,browseFileError:u,treeError:d,refreshing:f}=U(n),{error:p}=U(Y()),m=k(()=>p.value?{title:t(`changes.loadError`),message:p.value}:d.value?{title:t(`browse.treeLoadError`),message:d.value}:null),h=T(!1);return a(r,e=>{h.value=e?Se(e):!1},{immediate:!0}),(e,a)=>(l(),v(D,null,[m.value?(l(),C(je,{key:0,title:m.value.title,message:m.value.message,loading:E(f),onRetry:a[0]||=e=>E(n).refresh()},null,8,[`title`,`message`,`loading`])):j(``,!0),E(r)?(l(),C(Ne,{key:2,class:`col`},{header:i(()=>[b(be,{path:E(r)},{default:i(()=>[b(De,{modelValue:h.value,"onUpdate:modelValue":a[1]||=e=>h.value=e,path:E(r)},null,8,[`modelValue`,`path`])]),_:1},8,[`path`])]),default:i(()=>[E(c)&&E(o).length===0&&!E(u)?(l(),v(`div`,nn,[b(F,{color:`primary`,size:`2em`})])):E(u)?(l(),v(`div`,rn,[w(S(E(t)(`changes.fullFileLoadError`))+` `,1),g(`div`,an,S(E(u)),1),b(R,{flat:``,dense:``,color:`primary`,class:`q-mt-sm`,label:E(t)(`changes.retry`),loading:E(f),onClick:a[2]||=e=>E(n).refresh()},null,8,[`label`,`loading`])])):E(s)?(l(),v(`div`,on,S(E(t)(`changes.binaryFile`)),1)):(l(),C(fe,{key:3,class:`col`,"content-style":`padding: 8px`,"content-active-style":`padding: 8px`},{default:i(()=>[b(Pe,{path:E(r),lines:E(o),wrap:h.value},null,8,[`path`,`lines`,`wrap`])]),_:1}))]),_:1})):(l(),v(`div`,tn,S(E(t)(`browse.selectFile`)),1))],64))}}),cn=h({__name:`FileExplorer`,setup(e){let t=$(),n=Z(),{browseMode:r}=U(t);x(()=>{t.refresh(),n.refresh()});let a=W([`files:changed`],()=>void t.refreshFromServerEvent());o(()=>a.close());let s=W([`review:created`,`review:updated`,`review:deleted`,`comment:created`,`comment:updated`,`comment:deleted`],()=>void n.refresh());return o(()=>s.close()),(e,t)=>(l(),C(Be,null,{panel:i(()=>[b(At)]),content:i(()=>[E(r)?(l(),C(sn,{key:0})):(l(),C(en,{key:1}))]),_:1}))}}),ln=h({__name:`IndexPage`,setup(e){return(e,t)=>(l(),C(ve,null,{default:i(()=>[b(cn)]),_:1}))}});export{ln as default};
@@ -0,0 +1 @@
1
+ .file-tree-node__icon-section[data-v-ef4a1d44]{min-width:0!important;padding-right:6px!important}.file-tree-node__label[data-v-ef4a1d44]{width:100%;min-width:0}.file-tree-node__chevron[data-v-ef4a1d44]{transition:transform .15s}.file-tree-node__chevron--expanded[data-v-ef4a1d44]{transform:rotate(90deg)}.file-tree-node--selected[data-v-ef4a1d44]{font-weight:500}.file-list-item__icon-section[data-v-a94df6a5]{min-width:0!important;padding-right:6px!important}.file-list-item__path-row[data-v-a94df6a5]{width:100%;min-width:0}.file-list-item__path-label[data-v-a94df6a5]{flex:0 auto;min-width:0}.file-list-item__badge[data-v-a94df6a5]{flex:none}.file-list-item--selected[data-v-a94df6a5],[data-v-a94df6a5] .file-list-item--selected{font-weight:500}.file-list-item__actions[data-v-a94df6a5]{gap:2px;flex-direction:row!important;padding:0 0 0 6px!important}.file-list-item__stats[data-v-a94df6a5]{padding-right:0!important}.diff-tree-folder-row__icons[data-v-e82c6cd4]{min-width:0!important;padding-right:6px!important}.diff-tree-folder-row__chevron[data-v-e82c6cd4]{transition:transform .15s}.diff-tree-folder-row__chevron--expanded[data-v-e82c6cd4]{transform:rotate(90deg)}.file-list-panel__scroll[data-v-bdc095b7] .q-scrollarea__content{width:100%}.diff-status-bar[data-v-2de87982]{cursor:pointer}.diff-status-bar[data-v-2de87982]:focus-visible{outline:2px solid var(--q-primary);outline-offset:-2px}.diff-status-bar>span[data-v-2de87982]{white-space:nowrap}.card-shell-placeholder[data-v-c1bd4d06]{border:1px solid #80808033;border-radius:4px}.card-shell-placeholder__title[data-v-c1bd4d06]{background:var(--diff-header-bg);text-overflow:ellipsis;white-space:nowrap;height:44px;padding:6px 12px;overflow:hidden}.active-review-bar[data-v-2b6e4bdd]{min-height:36px}.diff-virtual-slot[data-v-30baafc5]{padding-bottom:8px}.diff-virtual-slot[data-v-30baafc5] .diff-file-card{margin-bottom:0}