@thxgg/steward 0.1.5 → 0.1.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.output/nitro.json +15 -0
- package/.output/public/_nuxt/2EtD6e53.js +1 -0
- package/.output/public/_nuxt/2UxHyX5q.js +1 -0
- package/.output/public/_nuxt/3e1v2bzS.js +1 -0
- package/.output/public/_nuxt/4A_iFExJ.js +1 -0
- package/.output/public/_nuxt/5X7smno1.js +1 -0
- package/.output/public/_nuxt/5i3qLPDT.js +1 -0
- package/.output/public/_nuxt/83L43bj1.js +1 -0
- package/.output/public/_nuxt/85-TOEBH.js +1 -0
- package/.output/public/_nuxt/B0m2ddpp.js +1 -0
- package/.output/public/_nuxt/B1dDrJ26.js +1 -0
- package/.output/public/_nuxt/B1yitclQ.js +1 -0
- package/.output/public/_nuxt/B3hkJjmY.js +1 -0
- package/.output/public/_nuxt/B6aJPvgy.js +1 -0
- package/.output/public/_nuxt/B7c-h3xW.js +1 -0
- package/.output/public/_nuxt/B7mTdjB0.js +1 -0
- package/.output/public/_nuxt/B93PlW-d.js +1 -0
- package/.output/public/_nuxt/BBf5iR-q.js +1 -0
- package/.output/public/_nuxt/BEDo0Tqx.js +1 -0
- package/.output/public/_nuxt/BERRCDM3.js +1 -0
- package/.output/public/_nuxt/BETggiCN.js +1 -0
- package/.output/public/_nuxt/BEwlwnbL.js +1 -0
- package/.output/public/_nuxt/BFfxhgS-.js +1 -0
- package/.output/public/_nuxt/BGHnOYBU.js +1 -0
- package/.output/public/_nuxt/BGJmEYvX.js +1 -0
- package/.output/public/_nuxt/BH7IYjvW.js +1 -0
- package/.output/public/_nuxt/BIGW1oBm.js +1 -0
- package/.output/public/_nuxt/BJDFO7_C.js +1 -0
- package/.output/public/_nuxt/BLmx8bSh.js +1 -0
- package/.output/public/_nuxt/BLtJtn59.js +1 -0
- package/.output/public/_nuxt/BM1_JUlF.js +1 -0
- package/.output/public/_nuxt/BMWR74SV.js +1 -0
- package/.output/public/_nuxt/BNzFoVmP.js +1 -0
- package/.output/public/_nuxt/BPQ3VLAy.js +1 -0
- package/.output/public/_nuxt/BQ8w6xss.js +1 -0
- package/.output/public/_nuxt/BR5kRUq4.js +1 -0
- package/.output/public/_nuxt/BRDbaJqY.js +4 -0
- package/.output/public/_nuxt/BRHolxvo.js +1 -0
- package/.output/public/_nuxt/BRZ36xJF.js +1 -0
- package/.output/public/_nuxt/BTJTHyun.js +1 -0
- package/.output/public/_nuxt/BTifaqeh.js +1 -0
- package/.output/public/_nuxt/BUw7H-hv.js +1 -0
- package/.output/public/_nuxt/BV7otONQ.js +1 -0
- package/.output/public/_nuxt/BVQ-GDCI.js +1 -0
- package/.output/public/_nuxt/BWvSN4gD.js +1 -0
- package/.output/public/_nuxt/BXkSAIEj.js +1 -0
- package/.output/public/_nuxt/BYV0-3_D.js +1 -0
- package/.output/public/_nuxt/BYunw83y.js +1 -0
- package/.output/public/_nuxt/BZvkOJ9d.js +1 -0
- package/.output/public/_nuxt/B_m7g4N7.js +1 -0
- package/.output/public/_nuxt/Ba13S78F.js +1 -0
- package/.output/public/_nuxt/BcOcwvcX.js +1 -0
- package/.output/public/_nuxt/BcVCzyr7.js +1 -0
- package/.output/public/_nuxt/BdImnpbu.js +1 -0
- package/.output/public/_nuxt/BdnUsdx6.js +1 -0
- package/.output/public/_nuxt/BfHTSMKl.js +1 -0
- package/.output/public/_nuxt/BfjtVDDH.js +1 -0
- package/.output/public/_nuxt/BgDCqdQA.js +1 -0
- package/.output/public/_nuxt/BhOHFoWU.js +1 -0
- package/.output/public/_nuxt/BhRPY-oY.js +1 -0
- package/.output/public/_nuxt/Bhrxn6JZ.js +1 -0
- package/.output/public/_nuxt/BkioyH1T.js +1 -0
- package/.output/public/_nuxt/Bkuqu6BP.js +1 -0
- package/.output/public/_nuxt/BmXAJ9_W.js +1 -0
- package/.output/public/_nuxt/Bmn6On1c.js +1 -0
- package/.output/public/_nuxt/Bo1Fdv48.js +76 -0
- package/.output/public/_nuxt/Bp3cYrEr.js +1 -0
- package/.output/public/_nuxt/Bp6g37R7.js +1 -0
- package/.output/public/_nuxt/BqTXFGrv.js +1 -0
- package/.output/public/_nuxt/BqYA7rlc.js +1 -0
- package/.output/public/_nuxt/BqmZq_gb.js +1 -0
- package/.output/public/_nuxt/Br6cN0cg.js +1 -0
- package/.output/public/_nuxt/Bri1ZtcQ.js +1 -0
- package/.output/public/_nuxt/BrzmwbiE.js +1 -0
- package/.output/public/_nuxt/BsS91CYL.js +1 -0
- package/.output/public/_nuxt/BspZqrRM.js +1 -0
- package/.output/public/_nuxt/BtCnVYZw.js +1 -0
- package/.output/public/_nuxt/BtOb2qkB.js +1 -0
- package/.output/public/_nuxt/BthQWCQV.js +1 -0
- package/.output/public/_nuxt/BtqSS_iP.js +1 -0
- package/.output/public/_nuxt/BtvRca6l.js +1 -0
- package/.output/public/_nuxt/Buea-lGh.js +1 -0
- package/.output/public/_nuxt/Bv_4Rxtq.js +1 -0
- package/.output/public/_nuxt/BvzEVeQv.js +1 -0
- package/.output/public/_nuxt/Bw305WKR.js +1 -0
- package/.output/public/_nuxt/BxgE0vQu.js +1 -0
- package/.output/public/_nuxt/BzJJZx-M.js +1 -0
- package/.output/public/_nuxt/BzTr9Aqm.js +1 -0
- package/.output/public/_nuxt/C-HG3fhB.js +1 -0
- package/.output/public/_nuxt/C-SQnVFl.js +1 -0
- package/.output/public/_nuxt/C-sUppwS.js +1 -0
- package/.output/public/_nuxt/C0HS_06l.js +1 -0
- package/.output/public/_nuxt/C0hk2d4L.js +1 -0
- package/.output/public/_nuxt/C151Ov-r.js +1 -0
- package/.output/public/_nuxt/C2t-YnRu.js +1 -0
- package/.output/public/_nuxt/C39BiMTA.js +1 -0
- package/.output/public/_nuxt/C3B-1QV4.js +1 -0
- package/.output/public/_nuxt/C3Wv6jpd.js +1 -0
- package/.output/public/_nuxt/C3mMm8J8.js +1 -0
- package/.output/public/_nuxt/C47S-Tmv.js +1 -0
- package/.output/public/_nuxt/C4EeE6gA.js +1 -0
- package/.output/public/_nuxt/C4IJs8-o.js +1 -0
- package/.output/public/_nuxt/C4gqWexZ.js +1 -0
- package/.output/public/_nuxt/C5YyOfLZ.js +1 -0
- package/.output/public/_nuxt/C7zT0LnQ.js +1 -0
- package/.output/public/_nuxt/C8M2exoo.js +1 -0
- package/.output/public/_nuxt/C8lEn-DE.js +1 -0
- package/.output/public/_nuxt/C98Dy4si.js +1 -0
- package/.output/public/_nuxt/C9XAeP06.js +1 -0
- package/.output/public/_nuxt/C9dUb6Cb.js +1 -0
- package/.output/public/_nuxt/C9oPPf7i.js +1 -0
- package/.output/public/_nuxt/C9tS-k6U.js +1 -0
- package/.output/public/_nuxt/CDVJQ6XC.js +1 -0
- package/.output/public/_nuxt/CDx5xZoG.js +1 -0
- package/.output/public/_nuxt/CEJOILWG.js +1 -0
- package/.output/public/_nuxt/CEL-wOlO.js +1 -0
- package/.output/public/_nuxt/CEu0bR-o.js +1 -0
- package/.output/public/_nuxt/CF10PKvl.js +1 -0
- package/.output/public/_nuxt/CFHQjOhq.js +1 -0
- package/.output/public/_nuxt/CFsNy2aC.js +1 -0
- package/.output/public/_nuxt/CG6Dc4jp.js +1 -0
- package/.output/public/_nuxt/CG8Ifv2g.js +1 -0
- package/.output/public/_nuxt/CGscLIrv.js +1 -0
- package/.output/public/_nuxt/CH1njM8p.js +1 -0
- package/.output/public/_nuxt/CHLpvVh8.js +1 -0
- package/.output/public/_nuxt/CHM0blh-.js +1 -0
- package/.output/public/_nuxt/CJc9bBzg.js +1 -0
- package/.output/public/_nuxt/CKIfxQSi.js +1 -0
- package/.output/public/_nuxt/CLZrNe3w.js +1 -0
- package/.output/public/_nuxt/CLxacb5B.js +1 -0
- package/.output/public/_nuxt/CMTm3GFP.js +1 -0
- package/.output/public/_nuxt/CMjwMIkn.js +1 -0
- package/.output/public/_nuxt/CO1LY3CK.js +1 -0
- package/.output/public/_nuxt/COcwbKMJ.js +1 -0
- package/.output/public/_nuxt/COkxafJQ.js +1 -0
- package/.output/public/_nuxt/COt5Ahok.js +1 -0
- package/.output/public/_nuxt/CQ8jqdy-.js +1 -0
- package/.output/public/_nuxt/CS3Unz2-.js +1 -0
- package/.output/public/_nuxt/CSXwinHm.js +1 -0
- package/.output/public/_nuxt/CTRr51gU.js +1 -0
- package/.output/public/_nuxt/CVO1_9PV.js +1 -0
- package/.output/public/_nuxt/CVdnzihN.js +1 -0
- package/.output/public/_nuxt/CW8IKDeL.js +1 -0
- package/.output/public/_nuxt/CXZktZb0.js +1 -0
- package/.output/public/_nuxt/CXtECtnM.js +1 -0
- package/.output/public/_nuxt/CYsAdtH9.js +1 -0
- package/.output/public/_nuxt/CZhp0h8q.js +1 -0
- package/.output/public/_nuxt/CafNBF8u.js +1 -0
- package/.output/public/_nuxt/CbFg5uaA.js +1 -0
- package/.output/public/_nuxt/CbfX1IO0.js +1 -0
- package/.output/public/_nuxt/CeAyd5Ju.js +1 -0
- package/.output/public/_nuxt/CeZK1NFH.js +1 -0
- package/.output/public/_nuxt/CenWIFCC.js +1 -0
- package/.output/public/_nuxt/CfQXZHmo.js +1 -0
- package/.output/public/_nuxt/Cg-RD9OK.js +1 -0
- package/.output/public/_nuxt/ChMvpjG-.js +1 -0
- package/.output/public/_nuxt/Cj5Yp3dK.js +1 -0
- package/.output/public/_nuxt/CjoLj4QM.js +1 -0
- package/.output/public/_nuxt/CkByrt1z.js +1 -0
- package/.output/public/_nuxt/CkXjmgJE.js +1 -0
- package/.output/public/_nuxt/CklMAg4u.js +1 -0
- package/.output/public/_nuxt/Cl0AqbOI.js +1 -0
- package/.output/public/_nuxt/Cm3UrAx6.js +1 -0
- package/.output/public/_nuxt/CmIQRyeF.js +1 -0
- package/.output/public/_nuxt/Cmh6b_Ma.js +1 -0
- package/.output/public/_nuxt/Cn7AkR1O.js +1 -0
- package/.output/public/_nuxt/CnnebwVN.js +1 -0
- package/.output/public/_nuxt/CnnmHF94.js +1 -0
- package/.output/public/_nuxt/CnsnAmq5.js +1 -0
- package/.output/public/_nuxt/Co6uUVPk.js +1 -0
- package/.output/public/_nuxt/CoDkCxhg.js +1 -0
- package/.output/public/_nuxt/Cp-IABpG.js +1 -0
- package/.output/public/_nuxt/CpOuai2O.js +1 -0
- package/.output/public/_nuxt/Cq5zzVJU.js +1 -0
- package/.output/public/_nuxt/CquLrc37.js +1 -0
- package/.output/public/_nuxt/CsfeWuGM.js +1 -0
- package/.output/public/_nuxt/Csfq5Kiy.js +1 -0
- package/.output/public/_nuxt/CuPHTKiy.js +1 -0
- package/.output/public/_nuxt/CufHLc7y.js +1 -0
- package/.output/public/_nuxt/Cuk6v7N8.js +1 -0
- package/.output/public/_nuxt/Cvjx9yec.js +1 -0
- package/.output/public/_nuxt/CwoSXNpI.js +1 -0
- package/.output/public/_nuxt/CxGSJlkm.js +1 -0
- package/.output/public/_nuxt/CxLEBnE3.js +1 -0
- package/.output/public/_nuxt/CxbxFI8M.js +1 -0
- package/.output/public/_nuxt/CyktbL80.js +1 -0
- package/.output/public/_nuxt/CylS5w8V.js +1 -0
- package/.output/public/_nuxt/CzTSHFRz.js +1 -0
- package/.output/public/_nuxt/D-2ljcwZ.js +1 -0
- package/.output/public/_nuxt/D0YGMca9.js +1 -0
- package/.output/public/_nuxt/D0r3Knsf.js +1 -0
- package/.output/public/_nuxt/D0zW6lUK.js +1 -0
- package/.output/public/_nuxt/D17OF-Vu.js +1 -0
- package/.output/public/_nuxt/D1j8_8rp.js +1 -0
- package/.output/public/_nuxt/D3lLCCz7.js +1 -0
- package/.output/public/_nuxt/D4_iv3hh.js +1 -0
- package/.output/public/_nuxt/D4h5O-jR.js +1 -0
- package/.output/public/_nuxt/D5-asLiD.js +1 -0
- package/.output/public/_nuxt/D53aC0YG.js +1 -0
- package/.output/public/_nuxt/D5KoaKCx.js +1 -0
- package/.output/public/_nuxt/D7o27uSR.js +1 -0
- package/.output/public/_nuxt/D7oLnXFd.js +1 -0
- package/.output/public/_nuxt/D82EKSYY.js +1 -0
- package/.output/public/_nuxt/D87Tk5Gz.js +1 -0
- package/.output/public/_nuxt/D8_7TLub.js +1 -0
- package/.output/public/_nuxt/D93ZcfNL.js +1 -0
- package/.output/public/_nuxt/D97Zzqfu.js +1 -0
- package/.output/public/_nuxt/DAi9KRSo.js +1 -0
- package/.output/public/_nuxt/DEthMvLe.js +1 -0
- package/.output/public/_nuxt/DFQXde-d.js +1 -0
- package/.output/public/_nuxt/DFWUc33u.js +1 -0
- package/.output/public/_nuxt/DFXneXwc.js +1 -0
- package/.output/public/_nuxt/DGP4VlC8.js +1 -0
- package/.output/public/_nuxt/DGztddWO.js +1 -0
- package/.output/public/_nuxt/DH5Ifo-i.js +1 -0
- package/.output/public/_nuxt/DHCkPAjA.js +1 -0
- package/.output/public/_nuxt/DHJKELXO.js +1 -0
- package/.output/public/_nuxt/DHQR4-dF.js +1 -0
- package/.output/public/_nuxt/DJjDtW9f.js +1 -0
- package/.output/public/_nuxt/DM8c43g1.js +1 -0
- package/.output/public/_nuxt/DMwsHuHA.js +1 -0
- package/.output/public/_nuxt/DMzUqQB5.js +1 -0
- package/.output/public/_nuxt/DPfMkruS.js +1 -0
- package/.output/public/_nuxt/DQwYQDb2.js +1 -0
- package/.output/public/_nuxt/DQyhUUbL.js +1 -0
- package/.output/public/_nuxt/DRg8JJMk.js +1 -0
- package/.output/public/_nuxt/DRw_LuNl.js +1 -0
- package/.output/public/_nuxt/DU1UobuO.js +1 -0
- package/.output/public/_nuxt/DUszq2jm.js +1 -0
- package/.output/public/_nuxt/DV7GczEv.js +1 -0
- package/.output/public/_nuxt/DVFEvuxE.js +1 -0
- package/.output/public/_nuxt/DVMEJ2y_.js +1 -0
- package/.output/public/_nuxt/DVxCFoDh.js +1 -0
- package/.output/public/_nuxt/DWedfzmr.js +1 -0
- package/.output/public/_nuxt/DWrx1Km3.js +1 -0
- package/.output/public/_nuxt/DXbdFlpD.js +1 -0
- package/.output/public/_nuxt/DXmwc3jG.js +1 -0
- package/.output/public/_nuxt/DXvB9xmW.js +1 -0
- package/.output/public/_nuxt/DYDTtHLR.js +1 -0
- package/.output/public/_nuxt/DYoxhk2S.js +1 -0
- package/.output/public/_nuxt/DZf3V79B.js +1 -0
- package/.output/public/_nuxt/DZu-aV2c.js +1 -0
- package/.output/public/_nuxt/DZxFcAj9.js +1 -0
- package/.output/public/_nuxt/D_Q5rh1f.js +1 -0
- package/.output/public/_nuxt/Da5cRb03.js +1 -0
- package/.output/public/_nuxt/DcaNXYhu.js +1 -0
- package/.output/public/_nuxt/Dd19v3D-.js +1 -0
- package/.output/public/_nuxt/DdkO51Og.js +1 -0
- package/.output/public/_nuxt/Ddv68eIx.js +1 -0
- package/.output/public/_nuxt/Des-eS-w.js +1 -0
- package/.output/public/_nuxt/Df6bDoY_.js +1 -0
- package/.output/public/_nuxt/Dg5xB15N.js +1 -0
- package/.output/public/_nuxt/DhQtydpF.js +3 -0
- package/.output/public/_nuxt/DhmSosst.js +1 -0
- package/.output/public/_nuxt/DkFqJrB1.js +1 -0
- package/.output/public/_nuxt/DkwncUOv.js +1 -0
- package/.output/public/_nuxt/DlAUqK2U.js +1 -0
- package/.output/public/_nuxt/DnULxvSX.js +1 -0
- package/.output/public/_nuxt/Dpen1YoG.js +1 -0
- package/.output/public/_nuxt/Dph4kLrZ.js +1 -0
- package/.output/public/_nuxt/DqQDbK_p.js +1 -0
- package/.output/public/_nuxt/DqwNpetd.js +1 -0
- package/.output/public/_nuxt/DsOJ9woJ.js +1 -0
- package/.output/public/_nuxt/Dspwwk_N.js +1 -0
- package/.output/public/_nuxt/DsumFeuD.js +1 -0
- package/.output/public/_nuxt/Dv7Oe6Be.js +1 -0
- package/.output/public/_nuxt/Dx-B1_4e.js +1 -0
- package/.output/public/_nuxt/DxNHbxmM.js +1 -0
- package/.output/public/_nuxt/DxSwrfjg.js +1 -0
- package/.output/public/_nuxt/DyxjwDmM.js +1 -0
- package/.output/public/_nuxt/Dzze3sRP.js +1 -0
- package/.output/public/_nuxt/E3gJ1_iC.js +1 -0
- package/.output/public/_nuxt/GsRaNv29.js +1 -0
- package/.output/public/_nuxt/IF9eRakj.js +1 -0
- package/.output/public/_nuxt/IeuSbFQv.js +1 -0
- package/.output/public/_nuxt/L9t79GZl.js +1 -0
- package/.output/public/_nuxt/MzD3tlZU.js +1 -0
- package/.output/public/_nuxt/P80f7IUj.js +1 -0
- package/.output/public/_nuxt/Pmp26Uib.js +1 -0
- package/.output/public/_nuxt/QIJgUcNo.js +1 -0
- package/.output/public/_nuxt/RNghxpo_.js +1 -0
- package/.output/public/_nuxt/TsXTqZ29.js +1 -0
- package/.output/public/_nuxt/VCDPK7BO.js +1 -0
- package/.output/public/_nuxt/VOosw3JB.js +1 -0
- package/.output/public/_nuxt/W9tJ9s81.js +1 -0
- package/.output/public/_nuxt/X6fIXIFO.js +1 -0
- package/.output/public/_nuxt/YqXBG_HV.js +1 -0
- package/.output/public/_nuxt/Yzrsuije.js +1 -0
- package/.output/public/_nuxt/_prd_.DYvuV73Q.css +1 -0
- package/.output/public/_nuxt/_ykCGR6B.js +1 -0
- package/.output/public/_nuxt/bCR0ucgS.js +1 -0
- package/.output/public/_nuxt/bN70gL4F.js +1 -0
- package/.output/public/_nuxt/builds/latest.json +1 -0
- package/.output/public/_nuxt/builds/meta/6683a0d9-9c02-4098-b750-bbbc0305261e.json +1 -0
- package/.output/public/_nuxt/dwOrl1Do.js +1 -0
- package/.output/public/_nuxt/entry.Dk19PK4d.css +1 -0
- package/.output/public/_nuxt/error-404.o50T1Yh0.css +1 -0
- package/.output/public/_nuxt/error-500.DdcU-NLM.css +1 -0
- package/.output/public/_nuxt/fKv21gyL.js +1 -0
- package/.output/public/_nuxt/fuZLfV_i.js +1 -0
- package/.output/public/_nuxt/g9-lgVsj.js +1 -0
- package/.output/public/_nuxt/gcz8RCvz.js +1 -0
- package/.output/public/_nuxt/hJgmCMqR.js +1 -0
- package/.output/public/_nuxt/hegEt444.js +1 -0
- package/.output/public/_nuxt/k_qm7-4y.js +1 -0
- package/.output/public/_nuxt/lXgVvXCa.js +1 -0
- package/.output/public/_nuxt/m17aaUwq.js +1 -0
- package/.output/public/_nuxt/mWjccvbQ.js +1 -0
- package/.output/public/_nuxt/mjskCLCv.js +1 -0
- package/.output/public/_nuxt/n2N0HUVH.js +1 -0
- package/.output/public/_nuxt/qdsjHGoJ.js +1 -0
- package/.output/public/_nuxt/rGO070M0.js +1 -0
- package/.output/public/_nuxt/u5AG7uiY.js +1 -0
- package/.output/public/_nuxt/uYugtg8r.js +1 -0
- package/.output/public/_nuxt/vGWfd6FD.js +1 -0
- package/.output/public/_nuxt/wDzz0qaB.js +1 -0
- package/.output/public/_nuxt/yv6CvBhz.js +1 -0
- package/.output/server/chunks/_/error-500.mjs +19 -0
- package/.output/server/chunks/_/error-500.mjs.map +1 -0
- package/.output/server/chunks/_/git-api.mjs +100 -0
- package/.output/server/chunks/_/git-api.mjs.map +1 -0
- package/.output/server/chunks/_/git.mjs +303 -0
- package/.output/server/chunks/_/git.mjs.map +1 -0
- package/.output/server/chunks/_/watcher.mjs +129 -0
- package/.output/server/chunks/_/watcher.mjs.map +1 -0
- package/.output/server/chunks/build/Column-styles.fAtZNsCt.mjs +8 -0
- package/.output/server/chunks/build/Column-styles.fAtZNsCt.mjs.map +1 -0
- package/.output/server/chunks/build/DiffViewer-styles-1.mjs-ZdBUa15f.mjs +4 -0
- package/.output/server/chunks/build/DiffViewer-styles-1.mjs-ZdBUa15f.mjs.map +1 -0
- package/.output/server/chunks/build/DiffViewer-styles-2.mjs-X6QKNjM0.mjs +4 -0
- package/.output/server/chunks/build/DiffViewer-styles-2.mjs-X6QKNjM0.mjs.map +1 -0
- package/.output/server/chunks/build/DiffViewer-styles.0AbHFl6N.mjs +8 -0
- package/.output/server/chunks/build/DiffViewer-styles.0AbHFl6N.mjs.map +1 -0
- package/.output/server/chunks/build/DiffViewer-styles.CoMVrk_N.mjs +8 -0
- package/.output/server/chunks/build/DiffViewer-styles.CoMVrk_N.mjs.map +1 -0
- package/.output/server/chunks/build/DiffViewer-styles.cLfMOdMh.mjs +10 -0
- package/.output/server/chunks/build/DiffViewer-styles.cLfMOdMh.mjs.map +1 -0
- package/.output/server/chunks/build/Viewer-styles.CshnetGw.mjs +8 -0
- package/.output/server/chunks/build/Viewer-styles.CshnetGw.mjs.map +1 -0
- package/.output/server/chunks/build/_plugin-vue_export-helper-1tPrXgE0.mjs +10 -0
- package/.output/server/chunks/build/_plugin-vue_export-helper-1tPrXgE0.mjs.map +1 -0
- package/.output/server/chunks/build/_prd_-CnwhMRyf.mjs +4225 -0
- package/.output/server/chunks/build/_prd_-CnwhMRyf.mjs.map +1 -0
- package/.output/server/chunks/build/client.precomputed.mjs +4 -0
- package/.output/server/chunks/build/client.precomputed.mjs.map +1 -0
- package/.output/server/chunks/build/default-DGOIWqjD.mjs +2222 -0
- package/.output/server/chunks/build/default-DGOIWqjD.mjs.map +1 -0
- package/.output/server/chunks/build/error-404-Bf6kdO80.mjs +98 -0
- package/.output/server/chunks/build/error-404-Bf6kdO80.mjs.map +1 -0
- package/.output/server/chunks/build/error-404-styles.DjEXIT5C.mjs +8 -0
- package/.output/server/chunks/build/error-404-styles.DjEXIT5C.mjs.map +1 -0
- package/.output/server/chunks/build/error-500-D_bcARXN.mjs +76 -0
- package/.output/server/chunks/build/error-500-D_bcARXN.mjs.map +1 -0
- package/.output/server/chunks/build/error-500-styles.DObwArFs.mjs +8 -0
- package/.output/server/chunks/build/error-500-styles.DObwArFs.mjs.map +1 -0
- package/.output/server/chunks/build/index-CTpuP9Mj.mjs +76 -0
- package/.output/server/chunks/build/index-CTpuP9Mj.mjs.map +1 -0
- package/.output/server/chunks/build/index-D21S97KB.mjs +256 -0
- package/.output/server/chunks/build/index-D21S97KB.mjs.map +1 -0
- package/.output/server/chunks/build/nuxt-link-SvT1nf8Z.mjs +290 -0
- package/.output/server/chunks/build/nuxt-link-SvT1nf8Z.mjs.map +1 -0
- package/.output/server/chunks/build/server.mjs +1257 -0
- package/.output/server/chunks/build/server.mjs.map +1 -0
- package/.output/server/chunks/build/styles.mjs +17 -0
- package/.output/server/chunks/build/styles.mjs.map +1 -0
- package/.output/server/chunks/build/usePrd-YhvN6Ary.mjs +563 -0
- package/.output/server/chunks/build/usePrd-YhvN6Ary.mjs.map +1 -0
- package/.output/server/chunks/nitro/nitro.mjs +8056 -0
- package/.output/server/chunks/nitro/nitro.mjs.map +1 -0
- package/.output/server/chunks/routes/api/browse.get.mjs +55 -0
- package/.output/server/chunks/routes/api/browse.get.mjs.map +1 -0
- package/.output/server/chunks/routes/api/index.get.mjs +17 -0
- package/.output/server/chunks/routes/api/index.get.mjs.map +1 -0
- package/.output/server/chunks/routes/api/index.post.mjs +46 -0
- package/.output/server/chunks/routes/api/index.post.mjs.map +1 -0
- package/.output/server/chunks/routes/api/repos/_repoId/git/commits.get.mjs +111 -0
- package/.output/server/chunks/routes/api/repos/_repoId/git/commits.get.mjs.map +1 -0
- package/.output/server/chunks/routes/api/repos/_repoId/git/diff.get.mjs +86 -0
- package/.output/server/chunks/routes/api/repos/_repoId/git/diff.get.mjs.map +1 -0
- package/.output/server/chunks/routes/api/repos/_repoId/git/file-content.get.mjs +95 -0
- package/.output/server/chunks/routes/api/repos/_repoId/git/file-content.get.mjs.map +1 -0
- package/.output/server/chunks/routes/api/repos/_repoId/git/file-diff.get.mjs +112 -0
- package/.output/server/chunks/routes/api/repos/_repoId/git/file-diff.get.mjs.map +1 -0
- package/.output/server/chunks/routes/api/repos/_repoId/prd/_prdSlug/progress.get.mjs +44 -0
- package/.output/server/chunks/routes/api/repos/_repoId/prd/_prdSlug/progress.get.mjs.map +1 -0
- package/.output/server/chunks/routes/api/repos/_repoId/prd/_prdSlug/tasks/_taskId/commits.get.mjs +121 -0
- package/.output/server/chunks/routes/api/repos/_repoId/prd/_prdSlug/tasks/_taskId/commits.get.mjs.map +1 -0
- package/.output/server/chunks/routes/api/repos/_repoId/prd/_prdSlug/tasks.get.mjs +44 -0
- package/.output/server/chunks/routes/api/repos/_repoId/prd/_prdSlug/tasks.get.mjs.map +1 -0
- package/.output/server/chunks/routes/api/repos/_repoId/prd/_prdSlug_.get.mjs +81 -0
- package/.output/server/chunks/routes/api/repos/_repoId/prd/_prdSlug_.get.mjs.map +1 -0
- package/.output/server/chunks/routes/api/repos/_repoId/prds.get.mjs +76 -0
- package/.output/server/chunks/routes/api/repos/_repoId/prds.get.mjs.map +1 -0
- package/.output/server/chunks/routes/api/repos/_repoId/refresh-git-repos.post.mjs +44 -0
- package/.output/server/chunks/routes/api/repos/_repoId/refresh-git-repos.post.mjs.map +1 -0
- package/.output/server/chunks/routes/api/repos/_repoId_.delete.mjs +34 -0
- package/.output/server/chunks/routes/api/repos/_repoId_.delete.mjs.map +1 -0
- package/.output/server/chunks/routes/api/watch.get.mjs +67 -0
- package/.output/server/chunks/routes/api/watch.get.mjs.map +1 -0
- package/.output/server/chunks/routes/renderer.mjs +500 -0
- package/.output/server/chunks/routes/renderer.mjs.map +1 -0
- package/.output/server/chunks/virtual/_virtual_spa-template.mjs +4 -0
- package/.output/server/chunks/virtual/_virtual_spa-template.mjs.map +1 -0
- package/.output/server/index.mjs +11 -0
- package/.output/server/index.mjs.map +1 -0
- package/.output/server/node_modules/@babel/parser/lib/index.js +14582 -0
- package/.output/server/node_modules/@babel/parser/package.json +50 -0
- package/.output/server/node_modules/@floating-ui/core/dist/floating-ui.core.mjs +1055 -0
- package/.output/server/node_modules/@floating-ui/core/package.json +63 -0
- package/.output/server/node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs +777 -0
- package/.output/server/node_modules/@floating-ui/dom/package.json +71 -0
- package/.output/server/node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs +161 -0
- package/.output/server/node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs +139 -0
- package/.output/server/node_modules/@floating-ui/utils/package.json +70 -0
- package/.output/server/node_modules/@floating-ui/vue/dist/floating-ui.vue.mjs +190 -0
- package/.output/server/node_modules/@floating-ui/vue/package.json +71 -0
- package/.output/server/node_modules/@internationalized/date/dist/BuddhistCalendar.mjs +48 -0
- package/.output/server/node_modules/@internationalized/date/dist/CalendarDate.mjs +252 -0
- package/.output/server/node_modules/@internationalized/date/dist/DateFormatter.mjs +140 -0
- package/.output/server/node_modules/@internationalized/date/dist/EthiopicCalendar.mjs +167 -0
- package/.output/server/node_modules/@internationalized/date/dist/GregorianCalendar.mjs +140 -0
- package/.output/server/node_modules/@internationalized/date/dist/HebrewCalendar.mjs +150 -0
- package/.output/server/node_modules/@internationalized/date/dist/IndianCalendar.mjs +101 -0
- package/.output/server/node_modules/@internationalized/date/dist/IslamicCalendar.mjs +161 -0
- package/.output/server/node_modules/@internationalized/date/dist/JapaneseCalendar.mjs +174 -0
- package/.output/server/node_modules/@internationalized/date/dist/PersianCalendar.mjs +82 -0
- package/.output/server/node_modules/@internationalized/date/dist/TaiwanCalendar.mjs +75 -0
- package/.output/server/node_modules/@internationalized/date/dist/conversion.mjs +218 -0
- package/.output/server/node_modules/@internationalized/date/dist/createCalendar.mjs +64 -0
- package/.output/server/node_modules/@internationalized/date/dist/import.mjs +45 -0
- package/.output/server/node_modules/@internationalized/date/dist/manipulation.mjs +344 -0
- package/.output/server/node_modules/@internationalized/date/dist/queries.mjs +320 -0
- package/.output/server/node_modules/@internationalized/date/dist/string.mjs +175 -0
- package/.output/server/node_modules/@internationalized/date/dist/utils.mjs +17 -0
- package/.output/server/node_modules/@internationalized/date/dist/weekStartData.mjs +113 -0
- package/.output/server/node_modules/@internationalized/date/package.json +35 -0
- package/.output/server/node_modules/@internationalized/number/dist/NumberFormatter.mjs +152 -0
- package/.output/server/node_modules/@internationalized/number/dist/NumberParser.mjs +273 -0
- package/.output/server/node_modules/@internationalized/number/dist/import.mjs +19 -0
- package/.output/server/node_modules/@internationalized/number/package.json +35 -0
- package/.output/server/node_modules/@shikijs/core/dist/index.mjs +2446 -0
- package/.output/server/node_modules/@shikijs/core/package.json +56 -0
- package/.output/server/node_modules/@shikijs/engine-javascript/dist/engine-compile.mjs +52 -0
- package/.output/server/node_modules/@shikijs/engine-javascript/dist/engine-raw.mjs +22 -0
- package/.output/server/node_modules/@shikijs/engine-javascript/dist/index.mjs +4 -0
- package/.output/server/node_modules/@shikijs/engine-javascript/dist/shared/engine-javascript.hzpS1_41.mjs +93 -0
- package/.output/server/node_modules/@shikijs/engine-javascript/package.json +39 -0
- package/.output/server/node_modules/@shikijs/engine-oniguruma/dist/index.mjs +448 -0
- package/.output/server/node_modules/@shikijs/engine-oniguruma/dist/wasm-inlined.mjs +8 -0
- package/.output/server/node_modules/@shikijs/engine-oniguruma/package.json +42 -0
- package/.output/server/node_modules/@shikijs/langs/dist/abap.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/actionscript-3.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/ada.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/angular-expression.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/angular-html.mjs +16 -0
- package/.output/server/node_modules/@shikijs/langs/dist/angular-inline-style.mjs +8 -0
- package/.output/server/node_modules/@shikijs/langs/dist/angular-inline-template.mjs +10 -0
- package/.output/server/node_modules/@shikijs/langs/dist/angular-let-declaration.mjs +8 -0
- package/.output/server/node_modules/@shikijs/langs/dist/angular-template-blocks.mjs +10 -0
- package/.output/server/node_modules/@shikijs/langs/dist/angular-template.mjs +8 -0
- package/.output/server/node_modules/@shikijs/langs/dist/angular-ts.mjs +18 -0
- package/.output/server/node_modules/@shikijs/langs/dist/apache.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/apex.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/apl.mjs +16 -0
- package/.output/server/node_modules/@shikijs/langs/dist/applescript.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/ara.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/asciidoc.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/asm.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/astro.mjs +18 -0
- package/.output/server/node_modules/@shikijs/langs/dist/awk.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/ballerina.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/bat.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/beancount.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/berry.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/bibtex.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/bicep.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/blade.mjs +20 -0
- package/.output/server/node_modules/@shikijs/langs/dist/bsl.mjs +8 -0
- package/.output/server/node_modules/@shikijs/langs/dist/c.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/c3.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/cadence.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/cairo.mjs +8 -0
- package/.output/server/node_modules/@shikijs/langs/dist/clarity.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/clojure.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/cmake.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/cobol.mjs +10 -0
- package/.output/server/node_modules/@shikijs/langs/dist/codeowners.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/codeql.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/coffee.mjs +8 -0
- package/.output/server/node_modules/@shikijs/langs/dist/common-lisp.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/coq.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/cpp-macro.mjs +12 -0
- package/.output/server/node_modules/@shikijs/langs/dist/cpp.mjs +14 -0
- package/.output/server/node_modules/@shikijs/langs/dist/crystal.mjs +18 -0
- package/.output/server/node_modules/@shikijs/langs/dist/csharp.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/css.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/csv.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/cue.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/cypher.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/d.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/dart.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/dax.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/desktop.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/diff.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/docker.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/dotenv.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/dream-maker.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/edge.mjs +12 -0
- package/.output/server/node_modules/@shikijs/langs/dist/elixir.mjs +8 -0
- package/.output/server/node_modules/@shikijs/langs/dist/elm.mjs +8 -0
- package/.output/server/node_modules/@shikijs/langs/dist/emacs-lisp.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/erb.mjs +10 -0
- package/.output/server/node_modules/@shikijs/langs/dist/erlang.mjs +8 -0
- package/.output/server/node_modules/@shikijs/langs/dist/es-tag-css.mjs +12 -0
- package/.output/server/node_modules/@shikijs/langs/dist/es-tag-glsl.mjs +12 -0
- package/.output/server/node_modules/@shikijs/langs/dist/es-tag-html.mjs +12 -0
- package/.output/server/node_modules/@shikijs/langs/dist/es-tag-sql.mjs +10 -0
- package/.output/server/node_modules/@shikijs/langs/dist/es-tag-xml.mjs +8 -0
- package/.output/server/node_modules/@shikijs/langs/dist/fennel.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/fish.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/fluent.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/fortran-fixed-form.mjs +8 -0
- package/.output/server/node_modules/@shikijs/langs/dist/fortran-free-form.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/fsharp.mjs +8 -0
- package/.output/server/node_modules/@shikijs/langs/dist/gdresource.mjs +10 -0
- package/.output/server/node_modules/@shikijs/langs/dist/gdscript.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/gdshader.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/genie.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/gherkin.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/git-commit.mjs +8 -0
- package/.output/server/node_modules/@shikijs/langs/dist/git-rebase.mjs +8 -0
- package/.output/server/node_modules/@shikijs/langs/dist/gleam.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/glimmer-js.mjs +14 -0
- package/.output/server/node_modules/@shikijs/langs/dist/glimmer-ts.mjs +14 -0
- package/.output/server/node_modules/@shikijs/langs/dist/glsl.mjs +8 -0
- package/.output/server/node_modules/@shikijs/langs/dist/gn.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/gnuplot.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/go.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/graphql.mjs +14 -0
- package/.output/server/node_modules/@shikijs/langs/dist/groovy.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/hack.mjs +10 -0
- package/.output/server/node_modules/@shikijs/langs/dist/haml.mjs +10 -0
- package/.output/server/node_modules/@shikijs/langs/dist/handlebars.mjs +14 -0
- package/.output/server/node_modules/@shikijs/langs/dist/haskell.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/haxe.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/hcl.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/hjson.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/hlsl.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/html-derivative.mjs +8 -0
- package/.output/server/node_modules/@shikijs/langs/dist/html.mjs +10 -0
- package/.output/server/node_modules/@shikijs/langs/dist/http.mjs +14 -0
- package/.output/server/node_modules/@shikijs/langs/dist/hurl.mjs +12 -0
- package/.output/server/node_modules/@shikijs/langs/dist/hxml.mjs +8 -0
- package/.output/server/node_modules/@shikijs/langs/dist/hy.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/imba.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/ini.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/java.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/javascript.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/jinja-html.mjs +8 -0
- package/.output/server/node_modules/@shikijs/langs/dist/jinja.mjs +8 -0
- package/.output/server/node_modules/@shikijs/langs/dist/jison.mjs +8 -0
- package/.output/server/node_modules/@shikijs/langs/dist/json.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/json5.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/jsonc.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/jsonl.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/jsonnet.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/jssm.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/jsx.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/julia.mjs +16 -0
- package/.output/server/node_modules/@shikijs/langs/dist/kdl.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/kotlin.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/kusto.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/latex.mjs +8 -0
- package/.output/server/node_modules/@shikijs/langs/dist/lean.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/less.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/liquid.mjs +14 -0
- package/.output/server/node_modules/@shikijs/langs/dist/llvm.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/log.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/logo.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/lua.mjs +8 -0
- package/.output/server/node_modules/@shikijs/langs/dist/luau.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/make.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/markdown-nix.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/markdown-vue.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/markdown.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/marko.mjs +14 -0
- package/.output/server/node_modules/@shikijs/langs/dist/matlab.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/mdc.mjs +12 -0
- package/.output/server/node_modules/@shikijs/langs/dist/mdx.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/mermaid.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/mipsasm.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/mojo.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/moonbit.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/move.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/narrat.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/nextflow.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/nginx.mjs +8 -0
- package/.output/server/node_modules/@shikijs/langs/dist/nim.mjs +20 -0
- package/.output/server/node_modules/@shikijs/langs/dist/nix.mjs +8 -0
- package/.output/server/node_modules/@shikijs/langs/dist/nushell.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/objective-c.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/objective-cpp.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/ocaml.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/odin.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/openscad.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/pascal.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/perl.mjs +16 -0
- package/.output/server/node_modules/@shikijs/langs/dist/php.mjs +18 -0
- package/.output/server/node_modules/@shikijs/langs/dist/pkl.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/plsql.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/po.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/polar.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/postcss.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/powerquery.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/powershell.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/prisma.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/prolog.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/proto.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/pug.mjs +12 -0
- package/.output/server/node_modules/@shikijs/langs/dist/puppet.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/purescript.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/python.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/qml.mjs +8 -0
- package/.output/server/node_modules/@shikijs/langs/dist/qmldir.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/qss.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/r.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/racket.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/raku.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/razor.mjs +10 -0
- package/.output/server/node_modules/@shikijs/langs/dist/reg.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/regexp.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/rel.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/riscv.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/ron.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/rosmsg.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/rst.mjs +22 -0
- package/.output/server/node_modules/@shikijs/langs/dist/ruby.mjs +30 -0
- package/.output/server/node_modules/@shikijs/langs/dist/rust.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/sas.mjs +8 -0
- package/.output/server/node_modules/@shikijs/langs/dist/sass.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/scala.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/scheme.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/scss.mjs +8 -0
- package/.output/server/node_modules/@shikijs/langs/dist/sdbl.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/shaderlab.mjs +8 -0
- package/.output/server/node_modules/@shikijs/langs/dist/shellscript.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/shellsession.mjs +8 -0
- package/.output/server/node_modules/@shikijs/langs/dist/smalltalk.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/solidity.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/soy.mjs +8 -0
- package/.output/server/node_modules/@shikijs/langs/dist/sparql.mjs +8 -0
- package/.output/server/node_modules/@shikijs/langs/dist/splunk.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/sql.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/ssh-config.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/stata.mjs +8 -0
- package/.output/server/node_modules/@shikijs/langs/dist/stylus.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/surrealql.mjs +8 -0
- package/.output/server/node_modules/@shikijs/langs/dist/svelte.mjs +14 -0
- package/.output/server/node_modules/@shikijs/langs/dist/swift.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/system-verilog.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/systemd.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/talonscript.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/tasl.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/tcl.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/templ.mjs +12 -0
- package/.output/server/node_modules/@shikijs/langs/dist/terraform.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/tex.mjs +8 -0
- package/.output/server/node_modules/@shikijs/langs/dist/toml.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/ts-tags.mjs +18 -0
- package/.output/server/node_modules/@shikijs/langs/dist/tsv.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/tsx.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/turtle.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/twig.mjs +18 -0
- package/.output/server/node_modules/@shikijs/langs/dist/typescript.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/typespec.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/typst.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/v.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/vala.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/vb.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/verilog.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/vhdl.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/viml.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/vue-directives.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/vue-html.mjs +8 -0
- package/.output/server/node_modules/@shikijs/langs/dist/vue-interpolations.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/vue-sfc-style-variable-injection.mjs +8 -0
- package/.output/server/node_modules/@shikijs/langs/dist/vue-vine.mjs +18 -0
- package/.output/server/node_modules/@shikijs/langs/dist/vue.mjs +26 -0
- package/.output/server/node_modules/@shikijs/langs/dist/vyper.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/wasm.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/wenyan.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/wgsl.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/wikitext.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/wit.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/wolfram.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/xml.mjs +8 -0
- package/.output/server/node_modules/@shikijs/langs/dist/xsl.mjs +8 -0
- package/.output/server/node_modules/@shikijs/langs/dist/yaml.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/zenscript.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/dist/zig.mjs +5 -0
- package/.output/server/node_modules/@shikijs/langs/package.json +380 -0
- package/.output/server/node_modules/@shikijs/themes/dist/andromeeda.mjs +2 -0
- package/.output/server/node_modules/@shikijs/themes/dist/aurora-x.mjs +2 -0
- package/.output/server/node_modules/@shikijs/themes/dist/ayu-dark.mjs +2 -0
- package/.output/server/node_modules/@shikijs/themes/dist/ayu-light.mjs +2 -0
- package/.output/server/node_modules/@shikijs/themes/dist/ayu-mirage.mjs +2 -0
- package/.output/server/node_modules/@shikijs/themes/dist/catppuccin-frappe.mjs +2 -0
- package/.output/server/node_modules/@shikijs/themes/dist/catppuccin-latte.mjs +2 -0
- package/.output/server/node_modules/@shikijs/themes/dist/catppuccin-macchiato.mjs +2 -0
- package/.output/server/node_modules/@shikijs/themes/dist/catppuccin-mocha.mjs +2 -0
- package/.output/server/node_modules/@shikijs/themes/dist/dark-plus.mjs +2 -0
- package/.output/server/node_modules/@shikijs/themes/dist/dracula-soft.mjs +2 -0
- package/.output/server/node_modules/@shikijs/themes/dist/dracula.mjs +2 -0
- package/.output/server/node_modules/@shikijs/themes/dist/everforest-dark.mjs +2 -0
- package/.output/server/node_modules/@shikijs/themes/dist/everforest-light.mjs +2 -0
- package/.output/server/node_modules/@shikijs/themes/dist/github-dark-default.mjs +2 -0
- package/.output/server/node_modules/@shikijs/themes/dist/github-dark-dimmed.mjs +2 -0
- package/.output/server/node_modules/@shikijs/themes/dist/github-dark-high-contrast.mjs +2 -0
- package/.output/server/node_modules/@shikijs/themes/dist/github-dark.mjs +2 -0
- package/.output/server/node_modules/@shikijs/themes/dist/github-light-default.mjs +2 -0
- package/.output/server/node_modules/@shikijs/themes/dist/github-light-high-contrast.mjs +2 -0
- package/.output/server/node_modules/@shikijs/themes/dist/github-light.mjs +2 -0
- package/.output/server/node_modules/@shikijs/themes/dist/gruvbox-dark-hard.mjs +2 -0
- package/.output/server/node_modules/@shikijs/themes/dist/gruvbox-dark-medium.mjs +2 -0
- package/.output/server/node_modules/@shikijs/themes/dist/gruvbox-dark-soft.mjs +2 -0
- package/.output/server/node_modules/@shikijs/themes/dist/gruvbox-light-hard.mjs +2 -0
- package/.output/server/node_modules/@shikijs/themes/dist/gruvbox-light-medium.mjs +2 -0
- package/.output/server/node_modules/@shikijs/themes/dist/gruvbox-light-soft.mjs +2 -0
- package/.output/server/node_modules/@shikijs/themes/dist/horizon.mjs +2 -0
- package/.output/server/node_modules/@shikijs/themes/dist/houston.mjs +2 -0
- package/.output/server/node_modules/@shikijs/themes/dist/kanagawa-dragon.mjs +2 -0
- package/.output/server/node_modules/@shikijs/themes/dist/kanagawa-lotus.mjs +2 -0
- package/.output/server/node_modules/@shikijs/themes/dist/kanagawa-wave.mjs +2 -0
- package/.output/server/node_modules/@shikijs/themes/dist/laserwave.mjs +2 -0
- package/.output/server/node_modules/@shikijs/themes/dist/light-plus.mjs +2 -0
- package/.output/server/node_modules/@shikijs/themes/dist/material-theme-darker.mjs +2 -0
- package/.output/server/node_modules/@shikijs/themes/dist/material-theme-lighter.mjs +2 -0
- package/.output/server/node_modules/@shikijs/themes/dist/material-theme-ocean.mjs +2 -0
- package/.output/server/node_modules/@shikijs/themes/dist/material-theme-palenight.mjs +2 -0
- package/.output/server/node_modules/@shikijs/themes/dist/material-theme.mjs +2 -0
- package/.output/server/node_modules/@shikijs/themes/dist/min-dark.mjs +2 -0
- package/.output/server/node_modules/@shikijs/themes/dist/min-light.mjs +2 -0
- package/.output/server/node_modules/@shikijs/themes/dist/monokai.mjs +2 -0
- package/.output/server/node_modules/@shikijs/themes/dist/night-owl-light.mjs +2 -0
- package/.output/server/node_modules/@shikijs/themes/dist/night-owl.mjs +2 -0
- package/.output/server/node_modules/@shikijs/themes/dist/nord.mjs +2 -0
- package/.output/server/node_modules/@shikijs/themes/dist/one-dark-pro.mjs +2 -0
- package/.output/server/node_modules/@shikijs/themes/dist/one-light.mjs +2 -0
- package/.output/server/node_modules/@shikijs/themes/dist/plastic.mjs +2 -0
- package/.output/server/node_modules/@shikijs/themes/dist/poimandres.mjs +2 -0
- package/.output/server/node_modules/@shikijs/themes/dist/red.mjs +2 -0
- package/.output/server/node_modules/@shikijs/themes/dist/rose-pine-dawn.mjs +2 -0
- package/.output/server/node_modules/@shikijs/themes/dist/rose-pine-moon.mjs +2 -0
- package/.output/server/node_modules/@shikijs/themes/dist/rose-pine.mjs +2 -0
- package/.output/server/node_modules/@shikijs/themes/dist/slack-dark.mjs +2 -0
- package/.output/server/node_modules/@shikijs/themes/dist/slack-ochin.mjs +2 -0
- package/.output/server/node_modules/@shikijs/themes/dist/snazzy-light.mjs +2 -0
- package/.output/server/node_modules/@shikijs/themes/dist/solarized-dark.mjs +2 -0
- package/.output/server/node_modules/@shikijs/themes/dist/solarized-light.mjs +2 -0
- package/.output/server/node_modules/@shikijs/themes/dist/synthwave-84.mjs +2 -0
- package/.output/server/node_modules/@shikijs/themes/dist/tokyo-night.mjs +2 -0
- package/.output/server/node_modules/@shikijs/themes/dist/vesper.mjs +2 -0
- package/.output/server/node_modules/@shikijs/themes/dist/vitesse-black.mjs +2 -0
- package/.output/server/node_modules/@shikijs/themes/dist/vitesse-dark.mjs +2 -0
- package/.output/server/node_modules/@shikijs/themes/dist/vitesse-light.mjs +2 -0
- package/.output/server/node_modules/@shikijs/themes/package.json +102 -0
- package/.output/server/node_modules/@shikijs/types/dist/index.mjs +8 -0
- package/.output/server/node_modules/@shikijs/types/package.json +36 -0
- package/.output/server/node_modules/@shikijs/vscode-textmate/dist/index.js +3216 -0
- package/.output/server/node_modules/@shikijs/vscode-textmate/package.json +46 -0
- package/.output/server/node_modules/@swc/helpers/cjs/_check_private_redeclaration.cjs +8 -0
- package/.output/server/node_modules/@swc/helpers/cjs/_class_private_field_init.cjs +9 -0
- package/.output/server/node_modules/@swc/helpers/esm/_check_private_redeclaration.js +6 -0
- package/.output/server/node_modules/@swc/helpers/esm/_class_private_field_init.js +7 -0
- package/.output/server/node_modules/@swc/helpers/package.json +694 -0
- package/.output/server/node_modules/@tanstack/virtual-core/dist/esm/index.js +887 -0
- package/.output/server/node_modules/@tanstack/virtual-core/dist/esm/utils.js +73 -0
- package/.output/server/node_modules/@tanstack/virtual-core/package.json +56 -0
- package/.output/server/node_modules/@tanstack/vue-virtual/dist/esm/index.js +66 -0
- package/.output/server/node_modules/@tanstack/vue-virtual/package.json +68 -0
- package/.output/server/node_modules/@vue/compiler-core/dist/compiler-core.cjs.prod.js +6763 -0
- package/.output/server/node_modules/@vue/compiler-core/package.json +58 -0
- package/.output/server/node_modules/@vue/compiler-dom/dist/compiler-dom.cjs.prod.js +689 -0
- package/.output/server/node_modules/@vue/compiler-dom/package.json +57 -0
- package/.output/server/node_modules/@vue/compiler-ssr/dist/compiler-ssr.cjs.js +1413 -0
- package/.output/server/node_modules/@vue/compiler-ssr/package.json +34 -0
- package/.output/server/node_modules/@vue/devtools-api/lib/cjs/api/api.js +2 -0
- package/.output/server/node_modules/@vue/devtools-api/lib/cjs/api/app.js +2 -0
- package/.output/server/node_modules/@vue/devtools-api/lib/cjs/api/component.js +2 -0
- package/.output/server/node_modules/@vue/devtools-api/lib/cjs/api/context.js +2 -0
- package/.output/server/node_modules/@vue/devtools-api/lib/cjs/api/hooks.js +2 -0
- package/.output/server/node_modules/@vue/devtools-api/lib/cjs/api/index.js +22 -0
- package/.output/server/node_modules/@vue/devtools-api/lib/cjs/api/util.js +2 -0
- package/.output/server/node_modules/@vue/devtools-api/lib/cjs/const.js +5 -0
- package/.output/server/node_modules/@vue/devtools-api/lib/cjs/env.js +17 -0
- package/.output/server/node_modules/@vue/devtools-api/lib/cjs/index.js +45 -0
- package/.output/server/node_modules/@vue/devtools-api/lib/cjs/plugin.js +2 -0
- package/.output/server/node_modules/@vue/devtools-api/lib/cjs/proxy.js +111 -0
- package/.output/server/node_modules/@vue/devtools-api/lib/cjs/time.js +28 -0
- package/.output/server/node_modules/@vue/devtools-api/package.json +37 -0
- package/.output/server/node_modules/@vue/reactivity/dist/reactivity.cjs.prod.js +1870 -0
- package/.output/server/node_modules/@vue/reactivity/package.json +55 -0
- package/.output/server/node_modules/@vue/runtime-core/dist/runtime-core.cjs.prod.js +6798 -0
- package/.output/server/node_modules/@vue/runtime-core/package.json +52 -0
- package/.output/server/node_modules/@vue/runtime-dom/dist/runtime-dom.cjs.prod.js +1750 -0
- package/.output/server/node_modules/@vue/runtime-dom/package.json +60 -0
- package/.output/server/node_modules/@vue/server-renderer/dist/server-renderer.cjs.prod.js +879 -0
- package/.output/server/node_modules/@vue/server-renderer/package.json +55 -0
- package/.output/server/node_modules/@vue/shared/dist/shared.cjs.prod.js +604 -0
- package/.output/server/node_modules/@vue/shared/package.json +47 -0
- package/.output/server/node_modules/@vueuse/core/dist/index.js +8596 -0
- package/.output/server/node_modules/@vueuse/core/package.json +49 -0
- package/.output/server/node_modules/@vueuse/shared/dist/index.js +2066 -0
- package/.output/server/node_modules/@vueuse/shared/package.json +42 -0
- package/.output/server/node_modules/aria-hidden/dist/es5/index.js +174 -0
- package/.output/server/node_modules/aria-hidden/package.json +71 -0
- package/.output/server/node_modules/ccount/index.js +27 -0
- package/.output/server/node_modules/ccount/package.json +71 -0
- package/.output/server/node_modules/character-entities-html4/index.js +259 -0
- package/.output/server/node_modules/character-entities-html4/package.json +79 -0
- package/.output/server/node_modules/character-entities-legacy/index.js +113 -0
- package/.output/server/node_modules/character-entities-legacy/package.json +77 -0
- package/.output/server/node_modules/chokidar/handler.js +632 -0
- package/.output/server/node_modules/chokidar/index.js +822 -0
- package/.output/server/node_modules/chokidar/package.json +63 -0
- package/.output/server/node_modules/class-variance-authority/dist/index.mjs +56 -0
- package/.output/server/node_modules/class-variance-authority/package.json +63 -0
- package/.output/server/node_modules/clsx/dist/clsx.mjs +1 -0
- package/.output/server/node_modules/clsx/package.json +60 -0
- package/.output/server/node_modules/comma-separated-tokens/index.js +74 -0
- package/.output/server/node_modules/comma-separated-tokens/package.json +72 -0
- package/.output/server/node_modules/defu/dist/defu.mjs +69 -0
- package/.output/server/node_modules/defu/package.json +43 -0
- package/.output/server/node_modules/devalue/index.js +4 -0
- package/.output/server/node_modules/devalue/package.json +37 -0
- package/.output/server/node_modules/devalue/src/base64.js +110 -0
- package/.output/server/node_modules/devalue/src/constants.js +7 -0
- package/.output/server/node_modules/devalue/src/parse.js +246 -0
- package/.output/server/node_modules/devalue/src/stringify.js +350 -0
- package/.output/server/node_modules/devalue/src/uneval.js +490 -0
- package/.output/server/node_modules/devalue/src/utils.js +148 -0
- package/.output/server/node_modules/dompurify/dist/purify.es.mjs +1386 -0
- package/.output/server/node_modules/dompurify/package.json +171 -0
- package/.output/server/node_modules/entities/dist/commonjs/decode-codepoint.js +77 -0
- package/.output/server/node_modules/entities/dist/commonjs/decode.js +568 -0
- package/.output/server/node_modules/entities/dist/commonjs/generated/decode-data-html.js +7 -0
- package/.output/server/node_modules/entities/dist/commonjs/generated/decode-data-xml.js +7 -0
- package/.output/server/node_modules/entities/dist/commonjs/internal/bin-trie-flags.js +21 -0
- package/.output/server/node_modules/entities/dist/commonjs/internal/decode-shared.js +31 -0
- package/.output/server/node_modules/entities/dist/commonjs/package.json +3 -0
- package/.output/server/node_modules/entities/package.json +120 -0
- package/.output/server/node_modules/estree-walker/dist/umd/estree-walker.js +344 -0
- package/.output/server/node_modules/estree-walker/package.json +37 -0
- package/.output/server/node_modules/hast-util-to-html/index.js +8 -0
- package/.output/server/node_modules/hast-util-to-html/lib/handle/comment.js +52 -0
- package/.output/server/node_modules/hast-util-to-html/lib/handle/doctype.js +27 -0
- package/.output/server/node_modules/hast-util-to-html/lib/handle/element.js +265 -0
- package/.output/server/node_modules/hast-util-to-html/lib/handle/index.js +47 -0
- package/.output/server/node_modules/hast-util-to-html/lib/handle/raw.js +27 -0
- package/.output/server/node_modules/hast-util-to-html/lib/handle/root.js +22 -0
- package/.output/server/node_modules/hast-util-to-html/lib/handle/text.js +38 -0
- package/.output/server/node_modules/hast-util-to-html/lib/index.js +257 -0
- package/.output/server/node_modules/hast-util-to-html/lib/omission/closing.js +358 -0
- package/.output/server/node_modules/hast-util-to-html/lib/omission/omission.js +44 -0
- package/.output/server/node_modules/hast-util-to-html/lib/omission/opening.js +148 -0
- package/.output/server/node_modules/hast-util-to-html/lib/omission/util/siblings.js +50 -0
- package/.output/server/node_modules/hast-util-to-html/package.json +106 -0
- package/.output/server/node_modules/hast-util-whitespace/index.js +1 -0
- package/.output/server/node_modules/hast-util-whitespace/lib/index.js +34 -0
- package/.output/server/node_modules/hast-util-whitespace/package.json +83 -0
- package/.output/server/node_modules/hookable/dist/index.mjs +266 -0
- package/.output/server/node_modules/hookable/package.json +52 -0
- package/.output/server/node_modules/html-void-elements/index.js +27 -0
- package/.output/server/node_modules/html-void-elements/package.json +79 -0
- package/.output/server/node_modules/lucide-vue-next/dist/cjs/lucide-vue-next.js +24066 -0
- package/.output/server/node_modules/lucide-vue-next/package.json +64 -0
- package/.output/server/node_modules/marked/lib/marked.esm.js +72 -0
- package/.output/server/node_modules/marked/package.json +103 -0
- package/.output/server/node_modules/ohash/dist/crypto/node/index.mjs +5 -0
- package/.output/server/node_modules/ohash/dist/index.mjs +10 -0
- package/.output/server/node_modules/ohash/dist/shared/ohash.D__AXeF1.mjs +13 -0
- package/.output/server/node_modules/ohash/package.json +57 -0
- package/.output/server/node_modules/oniguruma-parser/dist/parser/node-utils.js +2 -0
- package/.output/server/node_modules/oniguruma-parser/dist/parser/parse.js +2 -0
- package/.output/server/node_modules/oniguruma-parser/dist/tokenizer/tokenize.js +34 -0
- package/.output/server/node_modules/oniguruma-parser/dist/traverser/traverse.js +2 -0
- package/.output/server/node_modules/oniguruma-parser/dist/utils.js +2 -0
- package/.output/server/node_modules/oniguruma-parser/package.json +64 -0
- package/.output/server/node_modules/oniguruma-to-es/dist/esm/index.js +1876 -0
- package/.output/server/node_modules/oniguruma-to-es/dist/esm/package.json +1 -0
- package/.output/server/node_modules/oniguruma-to-es/package.json +61 -0
- package/.output/server/node_modules/perfect-debounce/dist/index.mjs +89 -0
- package/.output/server/node_modules/perfect-debounce/package.json +41 -0
- package/.output/server/node_modules/property-information/index.js +17 -0
- package/.output/server/node_modules/property-information/lib/aria.js +61 -0
- package/.output/server/node_modules/property-information/lib/find.js +97 -0
- package/.output/server/node_modules/property-information/lib/hast-to-react.js +30 -0
- package/.output/server/node_modules/property-information/lib/html.js +322 -0
- package/.output/server/node_modules/property-information/lib/normalize.js +12 -0
- package/.output/server/node_modules/property-information/lib/svg.js +567 -0
- package/.output/server/node_modules/property-information/lib/util/case-insensitive-transform.js +13 -0
- package/.output/server/node_modules/property-information/lib/util/case-sensitive-transform.js +11 -0
- package/.output/server/node_modules/property-information/lib/util/create.js +69 -0
- package/.output/server/node_modules/property-information/lib/util/defined-info.js +60 -0
- package/.output/server/node_modules/property-information/lib/util/info.js +32 -0
- package/.output/server/node_modules/property-information/lib/util/merge.js +27 -0
- package/.output/server/node_modules/property-information/lib/util/schema.js +29 -0
- package/.output/server/node_modules/property-information/lib/util/types.js +13 -0
- package/.output/server/node_modules/property-information/lib/xlink.js +17 -0
- package/.output/server/node_modules/property-information/lib/xml.js +9 -0
- package/.output/server/node_modules/property-information/lib/xmlns.js +9 -0
- package/.output/server/node_modules/property-information/package.json +121 -0
- package/.output/server/node_modules/readdirp/index.js +272 -0
- package/.output/server/node_modules/readdirp/package.json +66 -0
- package/.output/server/node_modules/regex/package.json +60 -0
- package/.output/server/node_modules/regex/src/atomic.js +224 -0
- package/.output/server/node_modules/regex/src/internals.js +2 -0
- package/.output/server/node_modules/regex/src/subclass.js +98 -0
- package/.output/server/node_modules/regex/src/utils-internals.js +33 -0
- package/.output/server/node_modules/regex-recursion/package.json +47 -0
- package/.output/server/node_modules/regex-recursion/src/index.js +365 -0
- package/.output/server/node_modules/regex-utilities/package.json +35 -0
- package/.output/server/node_modules/regex-utilities/src/index.js +170 -0
- package/.output/server/node_modules/reka-ui/dist/Accordion/AccordionContent.js +66 -0
- package/.output/server/node_modules/reka-ui/dist/Accordion/AccordionHeader.js +53 -0
- package/.output/server/node_modules/reka-ui/dist/Accordion/AccordionItem.js +116 -0
- package/.output/server/node_modules/reka-ui/dist/Accordion/AccordionRoot.js +96 -0
- package/.output/server/node_modules/reka-ui/dist/Accordion/AccordionTrigger.js +68 -0
- package/.output/server/node_modules/reka-ui/dist/AlertDialog/AlertDialogAction.js +37 -0
- package/.output/server/node_modules/reka-ui/dist/AlertDialog/AlertDialogCancel.js +42 -0
- package/.output/server/node_modules/reka-ui/dist/AlertDialog/AlertDialogContent.js +73 -0
- package/.output/server/node_modules/reka-ui/dist/AlertDialog/AlertDialogDescription.js +37 -0
- package/.output/server/node_modules/reka-ui/dist/AlertDialog/AlertDialogOverlay.js +40 -0
- package/.output/server/node_modules/reka-ui/dist/AlertDialog/AlertDialogPortal.js +42 -0
- package/.output/server/node_modules/reka-ui/dist/AlertDialog/AlertDialogRoot.js +40 -0
- package/.output/server/node_modules/reka-ui/dist/AlertDialog/AlertDialogTitle.js +37 -0
- package/.output/server/node_modules/reka-ui/dist/AlertDialog/AlertDialogTrigger.js +37 -0
- package/.output/server/node_modules/reka-ui/dist/AspectRatio/AspectRatio.js +56 -0
- package/.output/server/node_modules/reka-ui/dist/Avatar/AvatarFallback.js +59 -0
- package/.output/server/node_modules/reka-ui/dist/Avatar/AvatarImage.js +76 -0
- package/.output/server/node_modules/reka-ui/dist/Avatar/AvatarRoot.js +42 -0
- package/.output/server/node_modules/reka-ui/dist/Avatar/utils.js +49 -0
- package/.output/server/node_modules/reka-ui/dist/Calendar/CalendarCell.js +53 -0
- package/.output/server/node_modules/reka-ui/dist/Calendar/CalendarCellTrigger.js +176 -0
- package/.output/server/node_modules/reka-ui/dist/Calendar/CalendarGrid.js +51 -0
- package/.output/server/node_modules/reka-ui/dist/Calendar/CalendarGridBody.js +35 -0
- package/.output/server/node_modules/reka-ui/dist/Calendar/CalendarGridHead.js +35 -0
- package/.output/server/node_modules/reka-ui/dist/Calendar/CalendarGridRow.js +35 -0
- package/.output/server/node_modules/reka-ui/dist/Calendar/CalendarHeadCell.js +35 -0
- package/.output/server/node_modules/reka-ui/dist/Calendar/CalendarHeader.js +35 -0
- package/.output/server/node_modules/reka-ui/dist/Calendar/CalendarHeading.js +37 -0
- package/.output/server/node_modules/reka-ui/dist/Calendar/CalendarNext.js +58 -0
- package/.output/server/node_modules/reka-ui/dist/Calendar/CalendarPrev.js +58 -0
- package/.output/server/node_modules/reka-ui/dist/Calendar/CalendarRoot.js +317 -0
- package/.output/server/node_modules/reka-ui/dist/Calendar/useCalendar.js +267 -0
- package/.output/server/node_modules/reka-ui/dist/Checkbox/CheckboxGroupRoot.js +115 -0
- package/.output/server/node_modules/reka-ui/dist/Checkbox/CheckboxIndicator.js +59 -0
- package/.output/server/node_modules/reka-ui/dist/Checkbox/CheckboxRoot.js +157 -0
- package/.output/server/node_modules/reka-ui/dist/Checkbox/utils.js +11 -0
- package/.output/server/node_modules/reka-ui/dist/Collapsible/CollapsibleContent.js +113 -0
- package/.output/server/node_modules/reka-ui/dist/Collapsible/CollapsibleRoot.js +86 -0
- package/.output/server/node_modules/reka-ui/dist/Collapsible/CollapsibleTrigger.js +59 -0
- package/.output/server/node_modules/reka-ui/dist/Collection/Collection.js +79 -0
- package/.output/server/node_modules/reka-ui/dist/Combobox/ComboboxAnchor.js +50 -0
- package/.output/server/node_modules/reka-ui/dist/Combobox/ComboboxArrow.js +55 -0
- package/.output/server/node_modules/reka-ui/dist/Combobox/ComboboxCancel.js +50 -0
- package/.output/server/node_modules/reka-ui/dist/Combobox/ComboboxContent.js +144 -0
- package/.output/server/node_modules/reka-ui/dist/Combobox/ComboboxContentImpl.js +214 -0
- package/.output/server/node_modules/reka-ui/dist/Combobox/ComboboxEmpty.js +37 -0
- package/.output/server/node_modules/reka-ui/dist/Combobox/ComboboxGroup.js +58 -0
- package/.output/server/node_modules/reka-ui/dist/Combobox/ComboboxInput.js +134 -0
- package/.output/server/node_modules/reka-ui/dist/Combobox/ComboboxItem.js +88 -0
- package/.output/server/node_modules/reka-ui/dist/Combobox/ComboboxItemIndicator.js +35 -0
- package/.output/server/node_modules/reka-ui/dist/Combobox/ComboboxLabel.js +48 -0
- package/.output/server/node_modules/reka-ui/dist/Combobox/ComboboxPortal.js +42 -0
- package/.output/server/node_modules/reka-ui/dist/Combobox/ComboboxRoot.js +259 -0
- package/.output/server/node_modules/reka-ui/dist/Combobox/ComboboxSeparator.js +36 -0
- package/.output/server/node_modules/reka-ui/dist/Combobox/ComboboxTrigger.js +68 -0
- package/.output/server/node_modules/reka-ui/dist/Combobox/ComboboxViewport.js +64 -0
- package/.output/server/node_modules/reka-ui/dist/Combobox/ComboboxVirtualizer.js +45 -0
- package/.output/server/node_modules/reka-ui/dist/ConfigProvider/ConfigProvider.js +58 -0
- package/.output/server/node_modules/reka-ui/dist/ContextMenu/ContextMenuArrow.js +51 -0
- package/.output/server/node_modules/reka-ui/dist/ContextMenu/ContextMenuCheckboxItem.js +55 -0
- package/.output/server/node_modules/reka-ui/dist/ContextMenu/ContextMenuContent.js +136 -0
- package/.output/server/node_modules/reka-ui/dist/ContextMenu/ContextMenuGroup.js +36 -0
- package/.output/server/node_modules/reka-ui/dist/ContextMenu/ContextMenuItem.js +51 -0
- package/.output/server/node_modules/reka-ui/dist/ContextMenu/ContextMenuItemIndicator.js +40 -0
- package/.output/server/node_modules/reka-ui/dist/ContextMenu/ContextMenuLabel.js +36 -0
- package/.output/server/node_modules/reka-ui/dist/ContextMenu/ContextMenuPortal.js +42 -0
- package/.output/server/node_modules/reka-ui/dist/ContextMenu/ContextMenuRadioGroup.js +47 -0
- package/.output/server/node_modules/reka-ui/dist/ContextMenu/ContextMenuRadioItem.js +55 -0
- package/.output/server/node_modules/reka-ui/dist/ContextMenu/ContextMenuRoot.js +74 -0
- package/.output/server/node_modules/reka-ui/dist/ContextMenu/ContextMenuSeparator.js +36 -0
- package/.output/server/node_modules/reka-ui/dist/ContextMenu/ContextMenuSub.js +47 -0
- package/.output/server/node_modules/reka-ui/dist/ContextMenu/ContextMenuSubContent.js +126 -0
- package/.output/server/node_modules/reka-ui/dist/ContextMenu/ContextMenuSubTrigger.js +44 -0
- package/.output/server/node_modules/reka-ui/dist/ContextMenu/ContextMenuTrigger.js +124 -0
- package/.output/server/node_modules/reka-ui/dist/ContextMenu/utils.js +8 -0
- package/.output/server/node_modules/reka-ui/dist/DateField/DateFieldInput.js +90 -0
- package/.output/server/node_modules/reka-ui/dist/DateField/DateFieldRoot.js +284 -0
- package/.output/server/node_modules/reka-ui/dist/DatePicker/DatePickerAnchor.js +38 -0
- package/.output/server/node_modules/reka-ui/dist/DatePicker/DatePickerArrow.js +46 -0
- package/.output/server/node_modules/reka-ui/dist/DatePicker/DatePickerCalendar.js +60 -0
- package/.output/server/node_modules/reka-ui/dist/DatePicker/DatePickerCell.js +38 -0
- package/.output/server/node_modules/reka-ui/dist/DatePicker/DatePickerCellTrigger.js +42 -0
- package/.output/server/node_modules/reka-ui/dist/DatePicker/DatePickerClose.js +34 -0
- package/.output/server/node_modules/reka-ui/dist/DatePicker/DatePickerContent.js +147 -0
- package/.output/server/node_modules/reka-ui/dist/DatePicker/DatePickerField.js +56 -0
- package/.output/server/node_modules/reka-ui/dist/DatePicker/DatePickerGrid.js +34 -0
- package/.output/server/node_modules/reka-ui/dist/DatePicker/DatePickerGridBody.js +34 -0
- package/.output/server/node_modules/reka-ui/dist/DatePicker/DatePickerGridHead.js +34 -0
- package/.output/server/node_modules/reka-ui/dist/DatePicker/DatePickerGridRow.js +34 -0
- package/.output/server/node_modules/reka-ui/dist/DatePicker/DatePickerHeadCell.js +34 -0
- package/.output/server/node_modules/reka-ui/dist/DatePicker/DatePickerHeader.js +34 -0
- package/.output/server/node_modules/reka-ui/dist/DatePicker/DatePickerHeading.js +34 -0
- package/.output/server/node_modules/reka-ui/dist/DatePicker/DatePickerInput.js +38 -0
- package/.output/server/node_modules/reka-ui/dist/DatePicker/DatePickerNext.js +38 -0
- package/.output/server/node_modules/reka-ui/dist/DatePicker/DatePickerPrev.js +38 -0
- package/.output/server/node_modules/reka-ui/dist/DatePicker/DatePickerRoot.js +245 -0
- package/.output/server/node_modules/reka-ui/dist/DatePicker/DatePickerTrigger.js +41 -0
- package/.output/server/node_modules/reka-ui/dist/DateRangeField/DateRangeFieldInput.js +96 -0
- package/.output/server/node_modules/reka-ui/dist/DateRangeField/DateRangeFieldRoot.js +342 -0
- package/.output/server/node_modules/reka-ui/dist/DateRangePicker/DateRangePickerAnchor.js +38 -0
- package/.output/server/node_modules/reka-ui/dist/DateRangePicker/DateRangePickerArrow.js +46 -0
- package/.output/server/node_modules/reka-ui/dist/DateRangePicker/DateRangePickerCalendar.js +66 -0
- package/.output/server/node_modules/reka-ui/dist/DateRangePicker/DateRangePickerCell.js +38 -0
- package/.output/server/node_modules/reka-ui/dist/DateRangePicker/DateRangePickerCellTrigger.js +42 -0
- package/.output/server/node_modules/reka-ui/dist/DateRangePicker/DateRangePickerClose.js +34 -0
- package/.output/server/node_modules/reka-ui/dist/DateRangePicker/DateRangePickerContent.js +147 -0
- package/.output/server/node_modules/reka-ui/dist/DateRangePicker/DateRangePickerField.js +57 -0
- package/.output/server/node_modules/reka-ui/dist/DateRangePicker/DateRangePickerGrid.js +34 -0
- package/.output/server/node_modules/reka-ui/dist/DateRangePicker/DateRangePickerGridBody.js +34 -0
- package/.output/server/node_modules/reka-ui/dist/DateRangePicker/DateRangePickerGridHead.js +34 -0
- package/.output/server/node_modules/reka-ui/dist/DateRangePicker/DateRangePickerGridRow.js +34 -0
- package/.output/server/node_modules/reka-ui/dist/DateRangePicker/DateRangePickerHeadCell.js +34 -0
- package/.output/server/node_modules/reka-ui/dist/DateRangePicker/DateRangePickerHeader.js +34 -0
- package/.output/server/node_modules/reka-ui/dist/DateRangePicker/DateRangePickerHeading.js +34 -0
- package/.output/server/node_modules/reka-ui/dist/DateRangePicker/DateRangePickerInput.js +42 -0
- package/.output/server/node_modules/reka-ui/dist/DateRangePicker/DateRangePickerNext.js +38 -0
- package/.output/server/node_modules/reka-ui/dist/DateRangePicker/DateRangePickerPrev.js +38 -0
- package/.output/server/node_modules/reka-ui/dist/DateRangePicker/DateRangePickerRoot.js +284 -0
- package/.output/server/node_modules/reka-ui/dist/DateRangePicker/DateRangePickerTrigger.js +41 -0
- package/.output/server/node_modules/reka-ui/dist/Dialog/DialogClose.js +42 -0
- package/.output/server/node_modules/reka-ui/dist/Dialog/DialogContent.js +79 -0
- package/.output/server/node_modules/reka-ui/dist/Dialog/DialogContentImpl.js +111 -0
- package/.output/server/node_modules/reka-ui/dist/Dialog/DialogContentModal.js +85 -0
- package/.output/server/node_modules/reka-ui/dist/Dialog/DialogContentNonModal.js +87 -0
- package/.output/server/node_modules/reka-ui/dist/Dialog/DialogDescription.js +39 -0
- package/.output/server/node_modules/reka-ui/dist/Dialog/DialogOverlay.js +52 -0
- package/.output/server/node_modules/reka-ui/dist/Dialog/DialogOverlayImpl.js +48 -0
- package/.output/server/node_modules/reka-ui/dist/Dialog/DialogPortal.js +42 -0
- package/.output/server/node_modules/reka-ui/dist/Dialog/DialogRoot.js +71 -0
- package/.output/server/node_modules/reka-ui/dist/Dialog/DialogTitle.js +39 -0
- package/.output/server/node_modules/reka-ui/dist/Dialog/DialogTrigger.js +58 -0
- package/.output/server/node_modules/reka-ui/dist/Dialog/utils.js +26 -0
- package/.output/server/node_modules/reka-ui/dist/DismissableLayer/DismissableLayer.js +130 -0
- package/.output/server/node_modules/reka-ui/dist/DismissableLayer/DismissableLayerBranch.js +43 -0
- package/.output/server/node_modules/reka-ui/dist/DismissableLayer/utils.js +122 -0
- package/.output/server/node_modules/reka-ui/dist/DropdownMenu/DropdownMenuArrow.js +51 -0
- package/.output/server/node_modules/reka-ui/dist/DropdownMenu/DropdownMenuCheckboxItem.js +55 -0
- package/.output/server/node_modules/reka-ui/dist/DropdownMenu/DropdownMenuContent.js +158 -0
- package/.output/server/node_modules/reka-ui/dist/DropdownMenu/DropdownMenuGroup.js +36 -0
- package/.output/server/node_modules/reka-ui/dist/DropdownMenu/DropdownMenuItem.js +51 -0
- package/.output/server/node_modules/reka-ui/dist/DropdownMenu/DropdownMenuItemIndicator.js +40 -0
- package/.output/server/node_modules/reka-ui/dist/DropdownMenu/DropdownMenuLabel.js +36 -0
- package/.output/server/node_modules/reka-ui/dist/DropdownMenu/DropdownMenuPortal.js +42 -0
- package/.output/server/node_modules/reka-ui/dist/DropdownMenu/DropdownMenuRadioGroup.js +47 -0
- package/.output/server/node_modules/reka-ui/dist/DropdownMenu/DropdownMenuRadioItem.js +52 -0
- package/.output/server/node_modules/reka-ui/dist/DropdownMenu/DropdownMenuRoot.js +82 -0
- package/.output/server/node_modules/reka-ui/dist/DropdownMenu/DropdownMenuSeparator.js +36 -0
- package/.output/server/node_modules/reka-ui/dist/DropdownMenu/DropdownMenuSub.js +47 -0
- package/.output/server/node_modules/reka-ui/dist/DropdownMenu/DropdownMenuSubContent.js +126 -0
- package/.output/server/node_modules/reka-ui/dist/DropdownMenu/DropdownMenuSubTrigger.js +44 -0
- package/.output/server/node_modules/reka-ui/dist/DropdownMenu/DropdownMenuTrigger.js +95 -0
- package/.output/server/node_modules/reka-ui/dist/Editable/EditableArea.js +53 -0
- package/.output/server/node_modules/reka-ui/dist/Editable/EditableCancelTrigger.js +52 -0
- package/.output/server/node_modules/reka-ui/dist/Editable/EditableEditTrigger.js +52 -0
- package/.output/server/node_modules/reka-ui/dist/Editable/EditableInput.js +90 -0
- package/.output/server/node_modules/reka-ui/dist/Editable/EditablePreview.js +62 -0
- package/.output/server/node_modules/reka-ui/dist/Editable/EditableRoot.js +224 -0
- package/.output/server/node_modules/reka-ui/dist/Editable/EditableSubmitTrigger.js +52 -0
- package/.output/server/node_modules/reka-ui/dist/FocusScope/FocusScope.js +154 -0
- package/.output/server/node_modules/reka-ui/dist/FocusScope/stack.js +34 -0
- package/.output/server/node_modules/reka-ui/dist/FocusScope/utils.js +79 -0
- package/.output/server/node_modules/reka-ui/dist/HoverCard/HoverCardArrow.js +51 -0
- package/.output/server/node_modules/reka-ui/dist/HoverCard/HoverCardContent.js +131 -0
- package/.output/server/node_modules/reka-ui/dist/HoverCard/HoverCardContentImpl.js +192 -0
- package/.output/server/node_modules/reka-ui/dist/HoverCard/HoverCardPortal.js +42 -0
- package/.output/server/node_modules/reka-ui/dist/HoverCard/HoverCardRoot.js +88 -0
- package/.output/server/node_modules/reka-ui/dist/HoverCard/HoverCardTrigger.js +70 -0
- package/.output/server/node_modules/reka-ui/dist/HoverCard/utils.js +20 -0
- package/.output/server/node_modules/reka-ui/dist/Label/Label.js +43 -0
- package/.output/server/node_modules/reka-ui/dist/Listbox/ListboxContent.js +79 -0
- package/.output/server/node_modules/reka-ui/dist/Listbox/ListboxFilter.js +104 -0
- package/.output/server/node_modules/reka-ui/dist/Listbox/ListboxGroup.js +39 -0
- package/.output/server/node_modules/reka-ui/dist/Listbox/ListboxGroupLabel.js +41 -0
- package/.output/server/node_modules/reka-ui/dist/Listbox/ListboxItem.js +108 -0
- package/.output/server/node_modules/reka-ui/dist/Listbox/ListboxItemIndicator.js +42 -0
- package/.output/server/node_modules/reka-ui/dist/Listbox/ListboxRoot.js +338 -0
- package/.output/server/node_modules/reka-ui/dist/Listbox/ListboxVirtualizer.js +218 -0
- package/.output/server/node_modules/reka-ui/dist/Listbox/utils.js +22 -0
- package/.output/server/node_modules/reka-ui/dist/Menu/MenuAnchor.js +38 -0
- package/.output/server/node_modules/reka-ui/dist/Menu/MenuArrow.js +46 -0
- package/.output/server/node_modules/reka-ui/dist/Menu/MenuCheckboxItem.js +65 -0
- package/.output/server/node_modules/reka-ui/dist/Menu/MenuContent.js +143 -0
- package/.output/server/node_modules/reka-ui/dist/Menu/MenuContentImpl.js +324 -0
- package/.output/server/node_modules/reka-ui/dist/Menu/MenuGroup.js +34 -0
- package/.output/server/node_modules/reka-ui/dist/Menu/MenuItem.js +90 -0
- package/.output/server/node_modules/reka-ui/dist/Menu/MenuItemImpl.js +100 -0
- package/.output/server/node_modules/reka-ui/dist/Menu/MenuItemIndicator.js +54 -0
- package/.output/server/node_modules/reka-ui/dist/Menu/MenuLabel.js +35 -0
- package/.output/server/node_modules/reka-ui/dist/Menu/MenuPortal.js +42 -0
- package/.output/server/node_modules/reka-ui/dist/Menu/MenuRadioGroup.js +54 -0
- package/.output/server/node_modules/reka-ui/dist/Menu/MenuRadioItem.js +66 -0
- package/.output/server/node_modules/reka-ui/dist/Menu/MenuRoot.js +71 -0
- package/.output/server/node_modules/reka-ui/dist/Menu/MenuRootContentModal.js +135 -0
- package/.output/server/node_modules/reka-ui/dist/Menu/MenuRootContentNonModal.js +129 -0
- package/.output/server/node_modules/reka-ui/dist/Menu/MenuSeparator.js +37 -0
- package/.output/server/node_modules/reka-ui/dist/Menu/MenuSub.js +64 -0
- package/.output/server/node_modules/reka-ui/dist/Menu/MenuSubContent.js +167 -0
- package/.output/server/node_modules/reka-ui/dist/Menu/MenuSubTrigger.js +157 -0
- package/.output/server/node_modules/reka-ui/dist/Menu/utils.js +69 -0
- package/.output/server/node_modules/reka-ui/dist/Menubar/MenubarArrow.js +51 -0
- package/.output/server/node_modules/reka-ui/dist/Menubar/MenubarCheckboxItem.js +55 -0
- package/.output/server/node_modules/reka-ui/dist/Menubar/MenubarContent.js +180 -0
- package/.output/server/node_modules/reka-ui/dist/Menubar/MenubarGroup.js +36 -0
- package/.output/server/node_modules/reka-ui/dist/Menubar/MenubarItem.js +51 -0
- package/.output/server/node_modules/reka-ui/dist/Menubar/MenubarItemIndicator.js +40 -0
- package/.output/server/node_modules/reka-ui/dist/Menubar/MenubarLabel.js +36 -0
- package/.output/server/node_modules/reka-ui/dist/Menubar/MenubarMenu.js +56 -0
- package/.output/server/node_modules/reka-ui/dist/Menubar/MenubarPortal.js +42 -0
- package/.output/server/node_modules/reka-ui/dist/Menubar/MenubarRadioGroup.js +47 -0
- package/.output/server/node_modules/reka-ui/dist/Menubar/MenubarRadioItem.js +52 -0
- package/.output/server/node_modules/reka-ui/dist/Menubar/MenubarRoot.js +100 -0
- package/.output/server/node_modules/reka-ui/dist/Menubar/MenubarSeparator.js +36 -0
- package/.output/server/node_modules/reka-ui/dist/Menubar/MenubarSub.js +47 -0
- package/.output/server/node_modules/reka-ui/dist/Menubar/MenubarSubContent.js +147 -0
- package/.output/server/node_modules/reka-ui/dist/Menubar/MenubarSubTrigger.js +44 -0
- package/.output/server/node_modules/reka-ui/dist/Menubar/MenubarTrigger.js +125 -0
- package/.output/server/node_modules/reka-ui/dist/NavigationMenu/NavigationMenuContent.js +95 -0
- package/.output/server/node_modules/reka-ui/dist/NavigationMenu/NavigationMenuContentImpl.js +166 -0
- package/.output/server/node_modules/reka-ui/dist/NavigationMenu/NavigationMenuIndicator.js +85 -0
- package/.output/server/node_modules/reka-ui/dist/NavigationMenu/NavigationMenuItem.js +121 -0
- package/.output/server/node_modules/reka-ui/dist/NavigationMenu/NavigationMenuLink.js +75 -0
- package/.output/server/node_modules/reka-ui/dist/NavigationMenu/NavigationMenuList.js +57 -0
- package/.output/server/node_modules/reka-ui/dist/NavigationMenu/NavigationMenuRoot.js +183 -0
- package/.output/server/node_modules/reka-ui/dist/NavigationMenu/NavigationMenuSub.js +114 -0
- package/.output/server/node_modules/reka-ui/dist/NavigationMenu/NavigationMenuTrigger.js +150 -0
- package/.output/server/node_modules/reka-ui/dist/NavigationMenu/NavigationMenuViewport.js +158 -0
- package/.output/server/node_modules/reka-ui/dist/NavigationMenu/utils.js +61 -0
- package/.output/server/node_modules/reka-ui/dist/NumberField/NumberFieldDecrement.js +69 -0
- package/.output/server/node_modules/reka-ui/dist/NumberField/NumberFieldIncrement.js +69 -0
- package/.output/server/node_modules/reka-ui/dist/NumberField/NumberFieldInput.js +115 -0
- package/.output/server/node_modules/reka-ui/dist/NumberField/NumberFieldRoot.js +224 -0
- package/.output/server/node_modules/reka-ui/dist/NumberField/utils.js +72 -0
- package/.output/server/node_modules/reka-ui/dist/Pagination/PaginationEllipsis.js +36 -0
- package/.output/server/node_modules/reka-ui/dist/Pagination/PaginationFirst.js +45 -0
- package/.output/server/node_modules/reka-ui/dist/Pagination/PaginationLast.js +45 -0
- package/.output/server/node_modules/reka-ui/dist/Pagination/PaginationList.js +42 -0
- package/.output/server/node_modules/reka-ui/dist/Pagination/PaginationListItem.js +59 -0
- package/.output/server/node_modules/reka-ui/dist/Pagination/PaginationNext.js +45 -0
- package/.output/server/node_modules/reka-ui/dist/Pagination/PaginationPrev.js +45 -0
- package/.output/server/node_modules/reka-ui/dist/Pagination/PaginationRoot.js +96 -0
- package/.output/server/node_modules/reka-ui/dist/Pagination/utils.js +74 -0
- package/.output/server/node_modules/reka-ui/dist/PinInput/PinInputInput.js +210 -0
- package/.output/server/node_modules/reka-ui/dist/PinInput/PinInputRoot.js +149 -0
- package/.output/server/node_modules/reka-ui/dist/Popover/PopoverAnchor.js +48 -0
- package/.output/server/node_modules/reka-ui/dist/Popover/PopoverArrow.js +51 -0
- package/.output/server/node_modules/reka-ui/dist/Popover/PopoverClose.js +48 -0
- package/.output/server/node_modules/reka-ui/dist/Popover/PopoverContent.js +139 -0
- package/.output/server/node_modules/reka-ui/dist/Popover/PopoverContentImpl.js +171 -0
- package/.output/server/node_modules/reka-ui/dist/Popover/PopoverContentModal.js +146 -0
- package/.output/server/node_modules/reka-ui/dist/Popover/PopoverContentNonModal.js +148 -0
- package/.output/server/node_modules/reka-ui/dist/Popover/PopoverPortal.js +42 -0
- package/.output/server/node_modules/reka-ui/dist/Popover/PopoverRoot.js +70 -0
- package/.output/server/node_modules/reka-ui/dist/Popover/PopoverTrigger.js +68 -0
- package/.output/server/node_modules/reka-ui/dist/Popper/PopperAnchor.js +49 -0
- package/.output/server/node_modules/reka-ui/dist/Popper/PopperArrow.js +96 -0
- package/.output/server/node_modules/reka-ui/dist/Popper/PopperContent.js +273 -0
- package/.output/server/node_modules/reka-ui/dist/Popper/PopperRoot.js +27 -0
- package/.output/server/node_modules/reka-ui/dist/Popper/utils.js +52 -0
- package/.output/server/node_modules/reka-ui/dist/Presence/Presence.js +50 -0
- package/.output/server/node_modules/reka-ui/dist/Presence/usePresence.js +122 -0
- package/.output/server/node_modules/reka-ui/dist/Primitive/Primitive.js +33 -0
- package/.output/server/node_modules/reka-ui/dist/Primitive/Slot.js +30 -0
- package/.output/server/node_modules/reka-ui/dist/Primitive/usePrimitiveElement.js +16 -0
- package/.output/server/node_modules/reka-ui/dist/Progress/ProgressIndicator.js +46 -0
- package/.output/server/node_modules/reka-ui/dist/Progress/ProgressRoot.js +124 -0
- package/.output/server/node_modules/reka-ui/dist/RadioGroup/Radio.js +126 -0
- package/.output/server/node_modules/reka-ui/dist/RadioGroup/RadioGroupIndicator.js +57 -0
- package/.output/server/node_modules/reka-ui/dist/RadioGroup/RadioGroupItem.js +132 -0
- package/.output/server/node_modules/reka-ui/dist/RadioGroup/RadioGroupRoot.js +138 -0
- package/.output/server/node_modules/reka-ui/dist/RadioGroup/utils.js +15 -0
- package/.output/server/node_modules/reka-ui/dist/RangeCalendar/RangeCalendarCell.js +53 -0
- package/.output/server/node_modules/reka-ui/dist/RangeCalendar/RangeCalendarCellTrigger.js +237 -0
- package/.output/server/node_modules/reka-ui/dist/RangeCalendar/RangeCalendarGrid.js +52 -0
- package/.output/server/node_modules/reka-ui/dist/RangeCalendar/RangeCalendarGridBody.js +35 -0
- package/.output/server/node_modules/reka-ui/dist/RangeCalendar/RangeCalendarGridHead.js +35 -0
- package/.output/server/node_modules/reka-ui/dist/RangeCalendar/RangeCalendarGridRow.js +35 -0
- package/.output/server/node_modules/reka-ui/dist/RangeCalendar/RangeCalendarHeadCell.js +35 -0
- package/.output/server/node_modules/reka-ui/dist/RangeCalendar/RangeCalendarHeader.js +35 -0
- package/.output/server/node_modules/reka-ui/dist/RangeCalendar/RangeCalendarHeading.js +37 -0
- package/.output/server/node_modules/reka-ui/dist/RangeCalendar/RangeCalendarNext.js +58 -0
- package/.output/server/node_modules/reka-ui/dist/RangeCalendar/RangeCalendarPrev.js +58 -0
- package/.output/server/node_modules/reka-ui/dist/RangeCalendar/RangeCalendarRoot.js +392 -0
- package/.output/server/node_modules/reka-ui/dist/RangeCalendar/useRangeCalendar.js +145 -0
- package/.output/server/node_modules/reka-ui/dist/RovingFocus/RovingFocusGroup.js +145 -0
- package/.output/server/node_modules/reka-ui/dist/RovingFocus/RovingFocusItem.js +110 -0
- package/.output/server/node_modules/reka-ui/dist/RovingFocus/utils.js +47 -0
- package/.output/server/node_modules/reka-ui/dist/ScrollArea/ScrollAreaCorner.js +40 -0
- package/.output/server/node_modules/reka-ui/dist/ScrollArea/ScrollAreaCornerImpl.js +53 -0
- package/.output/server/node_modules/reka-ui/dist/ScrollArea/ScrollAreaRoot.js +128 -0
- package/.output/server/node_modules/reka-ui/dist/ScrollArea/ScrollAreaScrollbar.js +99 -0
- package/.output/server/node_modules/reka-ui/dist/ScrollArea/ScrollAreaScrollbarAuto.js +52 -0
- package/.output/server/node_modules/reka-ui/dist/ScrollArea/ScrollAreaScrollbarGlimpse.js +126 -0
- package/.output/server/node_modules/reka-ui/dist/ScrollArea/ScrollAreaScrollbarHover.js +65 -0
- package/.output/server/node_modules/reka-ui/dist/ScrollArea/ScrollAreaScrollbarImpl.js +123 -0
- package/.output/server/node_modules/reka-ui/dist/ScrollArea/ScrollAreaScrollbarScroll.js +88 -0
- package/.output/server/node_modules/reka-ui/dist/ScrollArea/ScrollAreaScrollbarVisible.js +107 -0
- package/.output/server/node_modules/reka-ui/dist/ScrollArea/ScrollAreaScrollbarX.js +45 -0
- package/.output/server/node_modules/reka-ui/dist/ScrollArea/ScrollAreaScrollbarY.js +46 -0
- package/.output/server/node_modules/reka-ui/dist/ScrollArea/ScrollAreaThumb.js +98 -0
- package/.output/server/node_modules/reka-ui/dist/ScrollArea/ScrollAreaViewport.js +76 -0
- package/.output/server/node_modules/reka-ui/dist/ScrollArea/utils.js +72 -0
- package/.output/server/node_modules/reka-ui/dist/Select/BubbleSelect.js +95 -0
- package/.output/server/node_modules/reka-ui/dist/Select/SelectArrow.js +51 -0
- package/.output/server/node_modules/reka-ui/dist/Select/SelectContent.js +160 -0
- package/.output/server/node_modules/reka-ui/dist/Select/SelectContentImpl.js +311 -0
- package/.output/server/node_modules/reka-ui/dist/Select/SelectGroup.js +39 -0
- package/.output/server/node_modules/reka-ui/dist/Select/SelectIcon.js +38 -0
- package/.output/server/node_modules/reka-ui/dist/Select/SelectItem.js +153 -0
- package/.output/server/node_modules/reka-ui/dist/Select/SelectItemAlignedPosition.js +162 -0
- package/.output/server/node_modules/reka-ui/dist/Select/SelectItemIndicator.js +40 -0
- package/.output/server/node_modules/reka-ui/dist/Select/SelectItemText.js +66 -0
- package/.output/server/node_modules/reka-ui/dist/Select/SelectLabel.js +41 -0
- package/.output/server/node_modules/reka-ui/dist/Select/SelectPopperPosition.js +118 -0
- package/.output/server/node_modules/reka-ui/dist/Select/SelectPortal.js +42 -0
- package/.output/server/node_modules/reka-ui/dist/Select/SelectProvider.js +29 -0
- package/.output/server/node_modules/reka-ui/dist/Select/SelectRoot.js +185 -0
- package/.output/server/node_modules/reka-ui/dist/Select/SelectScrollButtonImpl.js +62 -0
- package/.output/server/node_modules/reka-ui/dist/Select/SelectScrollDownButton.js +62 -0
- package/.output/server/node_modules/reka-ui/dist/Select/SelectScrollUpButton.js +61 -0
- package/.output/server/node_modules/reka-ui/dist/Select/SelectSeparator.js +34 -0
- package/.output/server/node_modules/reka-ui/dist/Select/SelectTrigger.js +132 -0
- package/.output/server/node_modules/reka-ui/dist/Select/SelectValue.js +72 -0
- package/.output/server/node_modules/reka-ui/dist/Select/SelectViewport.js +97 -0
- package/.output/server/node_modules/reka-ui/dist/Select/utils.js +30 -0
- package/.output/server/node_modules/reka-ui/dist/Separator/Separator.js +43 -0
- package/.output/server/node_modules/reka-ui/dist/Slider/SliderHorizontal.js +106 -0
- package/.output/server/node_modules/reka-ui/dist/Slider/SliderImpl.js +78 -0
- package/.output/server/node_modules/reka-ui/dist/Slider/SliderRange.js +58 -0
- package/.output/server/node_modules/reka-ui/dist/Slider/SliderRoot.js +217 -0
- package/.output/server/node_modules/reka-ui/dist/Slider/SliderThumb.js +40 -0
- package/.output/server/node_modules/reka-ui/dist/Slider/SliderThumbImpl.js +103 -0
- package/.output/server/node_modules/reka-ui/dist/Slider/SliderTrack.js +48 -0
- package/.output/server/node_modules/reka-ui/dist/Slider/SliderVertical.js +101 -0
- package/.output/server/node_modules/reka-ui/dist/Slider/utils.js +129 -0
- package/.output/server/node_modules/reka-ui/dist/Splitter/SplitterGroup.js +409 -0
- package/.output/server/node_modules/reka-ui/dist/Splitter/SplitterPanel.js +151 -0
- package/.output/server/node_modules/reka-ui/dist/Splitter/SplitterResizeHandle.js +154 -0
- package/.output/server/node_modules/reka-ui/dist/Stepper/StepperDescription.js +39 -0
- package/.output/server/node_modules/reka-ui/dist/Stepper/StepperIndicator.js +38 -0
- package/.output/server/node_modules/reka-ui/dist/Stepper/StepperItem.js +94 -0
- package/.output/server/node_modules/reka-ui/dist/Stepper/StepperRoot.js +172 -0
- package/.output/server/node_modules/reka-ui/dist/Stepper/StepperSeparator.js +52 -0
- package/.output/server/node_modules/reka-ui/dist/Stepper/StepperTitle.js +39 -0
- package/.output/server/node_modules/reka-ui/dist/Stepper/StepperTrigger.js +115 -0
- package/.output/server/node_modules/reka-ui/dist/Switch/SwitchRoot.js +133 -0
- package/.output/server/node_modules/reka-ui/dist/Switch/SwitchThumb.js +48 -0
- package/.output/server/node_modules/reka-ui/dist/Tabs/TabsContent.js +88 -0
- package/.output/server/node_modules/reka-ui/dist/Tabs/TabsIndicator.js +70 -0
- package/.output/server/node_modules/reka-ui/dist/Tabs/TabsList.js +68 -0
- package/.output/server/node_modules/reka-ui/dist/Tabs/TabsRoot.js +109 -0
- package/.output/server/node_modules/reka-ui/dist/Tabs/TabsTrigger.js +93 -0
- package/.output/server/node_modules/reka-ui/dist/Tabs/utils.js +11 -0
- package/.output/server/node_modules/reka-ui/dist/TagsInput/TagsInputClear.js +47 -0
- package/.output/server/node_modules/reka-ui/dist/TagsInput/TagsInputInput.js +151 -0
- package/.output/server/node_modules/reka-ui/dist/TagsInput/TagsInputItem.js +78 -0
- package/.output/server/node_modules/reka-ui/dist/TagsInput/TagsInputItemDelete.js +61 -0
- package/.output/server/node_modules/reka-ui/dist/TagsInput/TagsInputItemText.js +41 -0
- package/.output/server/node_modules/reka-ui/dist/TagsInput/TagsInputRoot.js +256 -0
- package/.output/server/node_modules/reka-ui/dist/Teleport/Teleport.js +49 -0
- package/.output/server/node_modules/reka-ui/dist/TimeField/TimeFieldInput.js +92 -0
- package/.output/server/node_modules/reka-ui/dist/TimeField/TimeFieldRoot.js +320 -0
- package/.output/server/node_modules/reka-ui/dist/Toast/FocusProxy.js +36 -0
- package/.output/server/node_modules/reka-ui/dist/Toast/ToastAction.js +53 -0
- package/.output/server/node_modules/reka-ui/dist/Toast/ToastAnnounce.js +32 -0
- package/.output/server/node_modules/reka-ui/dist/Toast/ToastAnnounceExclude.js +46 -0
- package/.output/server/node_modules/reka-ui/dist/Toast/ToastClose.js +47 -0
- package/.output/server/node_modules/reka-ui/dist/Toast/ToastDescription.js +36 -0
- package/.output/server/node_modules/reka-ui/dist/Toast/ToastPortal.js +42 -0
- package/.output/server/node_modules/reka-ui/dist/Toast/ToastProvider.js +80 -0
- package/.output/server/node_modules/reka-ui/dist/Toast/ToastRoot.js +140 -0
- package/.output/server/node_modules/reka-ui/dist/Toast/ToastRootImpl.js +234 -0
- package/.output/server/node_modules/reka-ui/dist/Toast/ToastTitle.js +36 -0
- package/.output/server/node_modules/reka-ui/dist/Toast/ToastViewport.js +178 -0
- package/.output/server/node_modules/reka-ui/dist/Toast/utils.js +47 -0
- package/.output/server/node_modules/reka-ui/dist/Toggle/Toggle.js +110 -0
- package/.output/server/node_modules/reka-ui/dist/ToggleGroup/ToggleGroupItem.js +63 -0
- package/.output/server/node_modules/reka-ui/dist/ToggleGroup/ToggleGroupRoot.js +128 -0
- package/.output/server/node_modules/reka-ui/dist/Toolbar/ToolbarButton.js +51 -0
- package/.output/server/node_modules/reka-ui/dist/Toolbar/ToolbarLink.js +49 -0
- package/.output/server/node_modules/reka-ui/dist/Toolbar/ToolbarRoot.js +81 -0
- package/.output/server/node_modules/reka-ui/dist/Toolbar/ToolbarSeparator.js +46 -0
- package/.output/server/node_modules/reka-ui/dist/Toolbar/ToolbarToggleGroup.js +89 -0
- package/.output/server/node_modules/reka-ui/dist/Toolbar/ToolbarToggleItem.js +48 -0
- package/.output/server/node_modules/reka-ui/dist/Tooltip/TooltipArrow.js +47 -0
- package/.output/server/node_modules/reka-ui/dist/Tooltip/TooltipContent.js +104 -0
- package/.output/server/node_modules/reka-ui/dist/Tooltip/TooltipContentHoverable.js +100 -0
- package/.output/server/node_modules/reka-ui/dist/Tooltip/TooltipContentImpl.js +148 -0
- package/.output/server/node_modules/reka-ui/dist/Tooltip/TooltipPortal.js +42 -0
- package/.output/server/node_modules/reka-ui/dist/Tooltip/TooltipProvider.js +78 -0
- package/.output/server/node_modules/reka-ui/dist/Tooltip/TooltipRoot.js +132 -0
- package/.output/server/node_modules/reka-ui/dist/Tooltip/TooltipTrigger.js +114 -0
- package/.output/server/node_modules/reka-ui/dist/Tooltip/utils.js +6 -0
- package/.output/server/node_modules/reka-ui/dist/Tree/TreeItem.js +175 -0
- package/.output/server/node_modules/reka-ui/dist/Tree/TreeRoot.js +243 -0
- package/.output/server/node_modules/reka-ui/dist/Tree/TreeVirtualizer.js +168 -0
- package/.output/server/node_modules/reka-ui/dist/Tree/utils.js +12 -0
- package/.output/server/node_modules/reka-ui/dist/Viewport/Viewport.js +62 -0
- package/.output/server/node_modules/reka-ui/dist/VisuallyHidden/VisuallyHidden.js +66 -0
- package/.output/server/node_modules/reka-ui/dist/VisuallyHidden/VisuallyHiddenInput.js +86 -0
- package/.output/server/node_modules/reka-ui/dist/VisuallyHidden/VisuallyHiddenInputBubble.js +73 -0
- package/.output/server/node_modules/reka-ui/dist/component/Arrow.js +69 -0
- package/.output/server/node_modules/reka-ui/dist/component/BaseSeparator.js +61 -0
- package/.output/server/node_modules/reka-ui/dist/composables/useWindowSplitterBehavior.js +48 -0
- package/.output/server/node_modules/reka-ui/dist/composables/useWindowSplitterPanelGroupBehavior.js +94 -0
- package/.output/server/node_modules/reka-ui/dist/date/calendar.js +156 -0
- package/.output/server/node_modules/reka-ui/dist/date/comparators.js +194 -0
- package/.output/server/node_modules/reka-ui/dist/date/index.js +0 -0
- package/.output/server/node_modules/reka-ui/dist/date/parser.js +135 -0
- package/.output/server/node_modules/reka-ui/dist/date/parts.js +27 -0
- package/.output/server/node_modules/reka-ui/dist/date/placeholders.js +493 -0
- package/.output/server/node_modules/reka-ui/dist/date/segment.js +41 -0
- package/.output/server/node_modules/reka-ui/dist/date/useDateField.js +720 -0
- package/.output/server/node_modules/reka-ui/dist/date/utils.js +85 -0
- package/.output/server/node_modules/reka-ui/dist/index.js +466 -0
- package/.output/server/node_modules/reka-ui/dist/index2.js +0 -0
- package/.output/server/node_modules/reka-ui/dist/shared/arrays.js +42 -0
- package/.output/server/node_modules/reka-ui/dist/shared/browser.js +6 -0
- package/.output/server/node_modules/reka-ui/dist/shared/clamp.js +66 -0
- package/.output/server/node_modules/reka-ui/dist/shared/createContext.js +35 -0
- package/.output/server/node_modules/reka-ui/dist/shared/getActiveElement.js +11 -0
- package/.output/server/node_modules/reka-ui/dist/shared/handleAndDispatchCustomEvent.js +15 -0
- package/.output/server/node_modules/reka-ui/dist/shared/isValueEqualOrExist.js +22 -0
- package/.output/server/node_modules/reka-ui/dist/shared/nullish.js +8 -0
- package/.output/server/node_modules/reka-ui/dist/shared/renderSlotFragments.js +14 -0
- package/.output/server/node_modules/reka-ui/dist/shared/useArrowNavigation.js +64 -0
- package/.output/server/node_modules/reka-ui/dist/shared/useBodyScrollLock.js +95 -0
- package/.output/server/node_modules/reka-ui/dist/shared/useDateFormatter.js +140 -0
- package/.output/server/node_modules/reka-ui/dist/shared/useDirection.js +17 -0
- package/.output/server/node_modules/reka-ui/dist/shared/useEmitAsProps.js +26 -0
- package/.output/server/node_modules/reka-ui/dist/shared/useFilter.js +58 -0
- package/.output/server/node_modules/reka-ui/dist/shared/useFocusGuards.js +37 -0
- package/.output/server/node_modules/reka-ui/dist/shared/useFormControl.js +11 -0
- package/.output/server/node_modules/reka-ui/dist/shared/useForwardExpose.js +57 -0
- package/.output/server/node_modules/reka-ui/dist/shared/useForwardProps.js +37 -0
- package/.output/server/node_modules/reka-ui/dist/shared/useForwardPropsEmits.js +29 -0
- package/.output/server/node_modules/reka-ui/dist/shared/useGraceArea.js +200 -0
- package/.output/server/node_modules/reka-ui/dist/shared/useHideOthers.js +26 -0
- package/.output/server/node_modules/reka-ui/dist/shared/useId.js +24 -0
- package/.output/server/node_modules/reka-ui/dist/shared/useIsUsingKeyboard.js +27 -0
- package/.output/server/node_modules/reka-ui/dist/shared/useKbd.js +43 -0
- package/.output/server/node_modules/reka-ui/dist/shared/useLocale.js +17 -0
- package/.output/server/node_modules/reka-ui/dist/shared/useNonce.js +12 -0
- package/.output/server/node_modules/reka-ui/dist/shared/useSelectionBehavior.js +53 -0
- package/.output/server/node_modules/reka-ui/dist/shared/useSingleOrMultipleValue.js +63 -0
- package/.output/server/node_modules/reka-ui/dist/shared/useSize.js +48 -0
- package/.output/server/node_modules/reka-ui/dist/shared/useStateMachine.js +32 -0
- package/.output/server/node_modules/reka-ui/dist/shared/useTypeahead.js +70 -0
- package/.output/server/node_modules/reka-ui/dist/shared/withDefault.js +25 -0
- package/.output/server/node_modules/reka-ui/dist/utils/assert.js +11 -0
- package/.output/server/node_modules/reka-ui/dist/utils/calculate.js +113 -0
- package/.output/server/node_modules/reka-ui/dist/utils/callPanelCallbacks.js +25 -0
- package/.output/server/node_modules/reka-ui/dist/utils/compare.js +17 -0
- package/.output/server/node_modules/reka-ui/dist/utils/constants.js +6 -0
- package/.output/server/node_modules/reka-ui/dist/utils/debounce.js +15 -0
- package/.output/server/node_modules/reka-ui/dist/utils/dom.js +38 -0
- package/.output/server/node_modules/reka-ui/dist/utils/events.js +36 -0
- package/.output/server/node_modules/reka-ui/dist/utils/layout.js +137 -0
- package/.output/server/node_modules/reka-ui/dist/utils/pivot.js +11 -0
- package/.output/server/node_modules/reka-ui/dist/utils/rects.js +9 -0
- package/.output/server/node_modules/reka-ui/dist/utils/registry.js +183 -0
- package/.output/server/node_modules/reka-ui/dist/utils/resizePanel.js +22 -0
- package/.output/server/node_modules/reka-ui/dist/utils/stackingOrder.js +94 -0
- package/.output/server/node_modules/reka-ui/dist/utils/storage.js +61 -0
- package/.output/server/node_modules/reka-ui/dist/utils/style.js +62 -0
- package/.output/server/node_modules/reka-ui/dist/utils/validation.js +53 -0
- package/.output/server/node_modules/reka-ui/package.json +121 -0
- package/.output/server/node_modules/shiki/dist/bundle-full.mjs +27 -0
- package/.output/server/node_modules/shiki/dist/bundle-web.mjs +366 -0
- package/.output/server/node_modules/shiki/dist/index.mjs +6 -0
- package/.output/server/node_modules/shiki/dist/langs.mjs +1412 -0
- package/.output/server/node_modules/shiki/dist/themes.mjs +389 -0
- package/.output/server/node_modules/shiki/dist/wasm.mjs +2 -0
- package/.output/server/node_modules/shiki/package.json +70 -0
- package/.output/server/node_modules/source-map-js/lib/array-set.js +121 -0
- package/.output/server/node_modules/source-map-js/lib/base64-vlq.js +140 -0
- package/.output/server/node_modules/source-map-js/lib/base64.js +67 -0
- package/.output/server/node_modules/source-map-js/lib/binary-search.js +111 -0
- package/.output/server/node_modules/source-map-js/lib/mapping-list.js +79 -0
- package/.output/server/node_modules/source-map-js/lib/quick-sort.js +132 -0
- package/.output/server/node_modules/source-map-js/lib/source-map-consumer.js +1188 -0
- package/.output/server/node_modules/source-map-js/lib/source-map-generator.js +444 -0
- package/.output/server/node_modules/source-map-js/lib/source-node.js +413 -0
- package/.output/server/node_modules/source-map-js/lib/util.js +594 -0
- package/.output/server/node_modules/source-map-js/package.json +71 -0
- package/.output/server/node_modules/source-map-js/source-map.js +8 -0
- package/.output/server/node_modules/space-separated-tokens/index.js +24 -0
- package/.output/server/node_modules/space-separated-tokens/package.json +67 -0
- package/.output/server/node_modules/stringify-entities/index.js +6 -0
- package/.output/server/node_modules/stringify-entities/lib/constant/dangerous.js +16 -0
- package/.output/server/node_modules/stringify-entities/lib/core.js +117 -0
- package/.output/server/node_modules/stringify-entities/lib/index.js +36 -0
- package/.output/server/node_modules/stringify-entities/lib/util/format-basic.js +9 -0
- package/.output/server/node_modules/stringify-entities/lib/util/format-smart.js +69 -0
- package/.output/server/node_modules/stringify-entities/lib/util/to-decimal.js +16 -0
- package/.output/server/node_modules/stringify-entities/lib/util/to-hexadecimal.js +16 -0
- package/.output/server/node_modules/stringify-entities/lib/util/to-named.js +57 -0
- package/.output/server/node_modules/stringify-entities/package.json +86 -0
- package/.output/server/node_modules/tailwind-merge/dist/bundle-mjs.mjs +3282 -0
- package/.output/server/node_modules/tailwind-merge/package.json +93 -0
- package/.output/server/node_modules/ufo/dist/index.mjs +645 -0
- package/.output/server/node_modules/ufo/package.json +48 -0
- package/.output/server/node_modules/unhead/dist/index.mjs +9 -0
- package/.output/server/node_modules/unhead/dist/parser.mjs +508 -0
- package/.output/server/node_modules/unhead/dist/plugins.mjs +101 -0
- package/.output/server/node_modules/unhead/dist/scripts.mjs +30 -0
- package/.output/server/node_modules/unhead/dist/server.mjs +180 -0
- package/.output/server/node_modules/unhead/dist/shared/unhead.B578PsDV.mjs +266 -0
- package/.output/server/node_modules/unhead/dist/shared/unhead.BFfcxOoW.mjs +180 -0
- package/.output/server/node_modules/unhead/dist/shared/unhead.BPM0-cfG.mjs +44 -0
- package/.output/server/node_modules/unhead/dist/shared/unhead.BYvz9V1x.mjs +43 -0
- package/.output/server/node_modules/unhead/dist/shared/unhead.CApf5sj3.mjs +148 -0
- package/.output/server/node_modules/unhead/dist/shared/unhead.CbpEuj3y.mjs +71 -0
- package/.output/server/node_modules/unhead/dist/shared/unhead.DQc16pHI.mjs +196 -0
- package/.output/server/node_modules/unhead/dist/shared/unhead.ckV6dpEQ.mjs +166 -0
- package/.output/server/node_modules/unhead/dist/shared/unhead.eK9_7LaY.mjs +198 -0
- package/.output/server/node_modules/unhead/dist/shared/unhead.yem5I2v_.mjs +38 -0
- package/.output/server/node_modules/unhead/dist/utils.mjs +5 -0
- package/.output/server/node_modules/unhead/package.json +105 -0
- package/.output/server/node_modules/vue/dist/vue.cjs.js +80 -0
- package/.output/server/node_modules/vue/dist/vue.cjs.prod.js +66 -0
- package/.output/server/node_modules/vue/index.js +7 -0
- package/.output/server/node_modules/vue/index.mjs +1 -0
- package/.output/server/node_modules/vue/package.json +112 -0
- package/.output/server/node_modules/vue/server-renderer/index.mjs +1 -0
- package/.output/server/node_modules/vue-bundle-renderer/dist/runtime.mjs +301 -0
- package/.output/server/node_modules/vue-bundle-renderer/package.json +55 -0
- package/.output/server/node_modules/vue-demi/lib/index.mjs +34 -0
- package/.output/server/node_modules/vue-demi/package.json +47 -0
- package/.output/server/node_modules/vue-router/dist/devtools-EWN81iOl.mjs +1220 -0
- package/.output/server/node_modules/vue-router/dist/vue-router.mjs +1557 -0
- package/.output/server/node_modules/vue-router/package.json +153 -0
- package/.output/server/node_modules/vue-router/vue-router.node.mjs +2 -0
- package/.output/server/node_modules/vue-sonner/lib/vue-sonner.js +801 -0
- package/.output/server/node_modules/vue-sonner/package.json +80 -0
- package/.output/server/node_modules/zwitch/index.js +118 -0
- package/.output/server/node_modules/zwitch/package.json +72 -0
- package/.output/server/package.json +78 -0
- package/README.md +1 -2
- package/dist/host/src/index.js +2 -2
- package/dist/host/src/ui.js +62 -22
- package/dist/server/utils/repos.js +2 -2
- package/package.json +17 -15
- package/app/app.vue +0 -14
- package/app/assets/css/main.css +0 -129
- package/app/components/CommandPalette.vue +0 -182
- package/app/components/ShortcutsHelp.vue +0 -85
- package/app/components/git/ChangesMinimap.vue +0 -143
- package/app/components/git/CommitList.vue +0 -224
- package/app/components/git/DiffPanel.vue +0 -402
- package/app/components/git/DiffViewer.vue +0 -803
- package/app/components/layout/RepoSelector.vue +0 -358
- package/app/components/layout/Sidebar.vue +0 -91
- package/app/components/prd/Meta.vue +0 -69
- package/app/components/prd/Viewer.vue +0 -285
- package/app/components/tasks/Board.vue +0 -86
- package/app/components/tasks/Card.vue +0 -108
- package/app/components/tasks/Column.vue +0 -108
- package/app/components/tasks/Detail.vue +0 -291
- package/app/components/ui/badge/Badge.vue +0 -26
- package/app/components/ui/badge/index.ts +0 -26
- package/app/components/ui/button/Button.vue +0 -29
- package/app/components/ui/button/index.ts +0 -38
- package/app/components/ui/card/Card.vue +0 -22
- package/app/components/ui/card/CardAction.vue +0 -17
- package/app/components/ui/card/CardContent.vue +0 -17
- package/app/components/ui/card/CardDescription.vue +0 -17
- package/app/components/ui/card/CardFooter.vue +0 -17
- package/app/components/ui/card/CardHeader.vue +0 -17
- package/app/components/ui/card/CardTitle.vue +0 -17
- package/app/components/ui/card/index.ts +0 -7
- package/app/components/ui/combobox/Combobox.vue +0 -19
- package/app/components/ui/combobox/ComboboxAnchor.vue +0 -23
- package/app/components/ui/combobox/ComboboxEmpty.vue +0 -21
- package/app/components/ui/combobox/ComboboxGroup.vue +0 -27
- package/app/components/ui/combobox/ComboboxInput.vue +0 -42
- package/app/components/ui/combobox/ComboboxItem.vue +0 -24
- package/app/components/ui/combobox/ComboboxItemIndicator.vue +0 -23
- package/app/components/ui/combobox/ComboboxList.vue +0 -33
- package/app/components/ui/combobox/ComboboxSeparator.vue +0 -21
- package/app/components/ui/combobox/ComboboxTrigger.vue +0 -24
- package/app/components/ui/combobox/ComboboxViewport.vue +0 -23
- package/app/components/ui/combobox/index.ts +0 -13
- package/app/components/ui/command/Command.vue +0 -103
- package/app/components/ui/command/CommandDialog.vue +0 -33
- package/app/components/ui/command/CommandEmpty.vue +0 -27
- package/app/components/ui/command/CommandGroup.vue +0 -45
- package/app/components/ui/command/CommandInput.vue +0 -54
- package/app/components/ui/command/CommandItem.vue +0 -76
- package/app/components/ui/command/CommandList.vue +0 -25
- package/app/components/ui/command/CommandSeparator.vue +0 -21
- package/app/components/ui/command/CommandShortcut.vue +0 -17
- package/app/components/ui/command/index.ts +0 -25
- package/app/components/ui/dialog/Dialog.vue +0 -19
- package/app/components/ui/dialog/DialogClose.vue +0 -15
- package/app/components/ui/dialog/DialogContent.vue +0 -53
- package/app/components/ui/dialog/DialogDescription.vue +0 -23
- package/app/components/ui/dialog/DialogFooter.vue +0 -15
- package/app/components/ui/dialog/DialogHeader.vue +0 -17
- package/app/components/ui/dialog/DialogOverlay.vue +0 -21
- package/app/components/ui/dialog/DialogScrollContent.vue +0 -59
- package/app/components/ui/dialog/DialogTitle.vue +0 -23
- package/app/components/ui/dialog/DialogTrigger.vue +0 -15
- package/app/components/ui/dialog/index.ts +0 -10
- package/app/components/ui/input/Input.vue +0 -33
- package/app/components/ui/input/index.ts +0 -1
- package/app/components/ui/scroll-area/ScrollArea.vue +0 -33
- package/app/components/ui/scroll-area/ScrollBar.vue +0 -32
- package/app/components/ui/scroll-area/index.ts +0 -2
- package/app/components/ui/separator/Separator.vue +0 -29
- package/app/components/ui/separator/index.ts +0 -1
- package/app/components/ui/sheet/Sheet.vue +0 -19
- package/app/components/ui/sheet/SheetClose.vue +0 -15
- package/app/components/ui/sheet/SheetContent.vue +0 -62
- package/app/components/ui/sheet/SheetDescription.vue +0 -21
- package/app/components/ui/sheet/SheetFooter.vue +0 -16
- package/app/components/ui/sheet/SheetHeader.vue +0 -15
- package/app/components/ui/sheet/SheetOverlay.vue +0 -21
- package/app/components/ui/sheet/SheetTitle.vue +0 -21
- package/app/components/ui/sheet/SheetTrigger.vue +0 -15
- package/app/components/ui/sheet/index.ts +0 -8
- package/app/components/ui/tabs/Tabs.vue +0 -24
- package/app/components/ui/tabs/TabsContent.vue +0 -21
- package/app/components/ui/tabs/TabsList.vue +0 -24
- package/app/components/ui/tabs/TabsTrigger.vue +0 -26
- package/app/components/ui/tabs/index.ts +0 -4
- package/app/components/ui/tooltip/Tooltip.vue +0 -19
- package/app/components/ui/tooltip/TooltipContent.vue +0 -34
- package/app/components/ui/tooltip/TooltipProvider.vue +0 -14
- package/app/components/ui/tooltip/TooltipTrigger.vue +0 -15
- package/app/components/ui/tooltip/index.ts +0 -4
- package/app/composables/useFileWatch.ts +0 -78
- package/app/composables/useGit.ts +0 -180
- package/app/composables/useKeyboard.ts +0 -180
- package/app/composables/usePrd.ts +0 -86
- package/app/composables/useRepos.ts +0 -108
- package/app/composables/useThemeMode.ts +0 -38
- package/app/composables/useToast.ts +0 -31
- package/app/layouts/default.vue +0 -197
- package/app/lib/utils.ts +0 -7
- package/app/pages/[repo]/[prd].vue +0 -263
- package/app/pages/index.vue +0 -257
- package/app/types/git.ts +0 -81
- package/app/types/index.ts +0 -29
- package/app/types/prd.ts +0 -49
- package/app/types/repo.ts +0 -37
- package/app/types/task.ts +0 -134
- package/components.json +0 -21
- package/nuxt.config.ts +0 -34
- package/server/api/browse.get.ts +0 -52
- package/server/api/repos/[repoId]/git/commits.get.ts +0 -103
- package/server/api/repos/[repoId]/git/diff.get.ts +0 -77
- package/server/api/repos/[repoId]/git/file-content.get.ts +0 -66
- package/server/api/repos/[repoId]/git/file-diff.get.ts +0 -109
- package/server/api/repos/[repoId]/prd/[prdSlug]/progress.get.ts +0 -36
- package/server/api/repos/[repoId]/prd/[prdSlug]/tasks/[taskId]/commits.get.ts +0 -146
- package/server/api/repos/[repoId]/prd/[prdSlug]/tasks.get.ts +0 -36
- package/server/api/repos/[repoId]/prd/[prdSlug].get.ts +0 -97
- package/server/api/repos/[repoId]/prds.get.ts +0 -85
- package/server/api/repos/[repoId]/refresh-git-repos.post.ts +0 -42
- package/server/api/repos/[repoId].delete.ts +0 -27
- package/server/api/repos/index.get.ts +0 -5
- package/server/api/repos/index.post.ts +0 -39
- package/server/api/watch.get.ts +0 -63
- package/server/plugins/migrate-legacy-state.ts +0 -19
- package/server/tsconfig.json +0 -3
- package/server/utils/db.ts +0 -169
- package/server/utils/git.ts +0 -478
- package/server/utils/prd-state.ts +0 -335
- package/server/utils/repos.ts +0 -322
- package/server/utils/watcher.ts +0 -179
- package/tsconfig.json +0 -4
- /package/{public → .output/public}/favicon.ico +0 -0
- /package/{public → .output/public}/robots.txt +0 -0
|
@@ -0,0 +1,4225 @@
|
|
|
1
|
+
import { _ as __nuxt_component_0$4 } from './nuxt-link-SvT1nf8Z.mjs';
|
|
2
|
+
import { defineComponent, computed, ref, watch, inject, mergeProps, unref, withCtx, createVNode, createTextVNode, isRef, openBlock, createBlock, toDisplayString, createCommentVNode, renderSlot, useModel, resolveDynamicComponent, Fragment, renderList, mergeModels, readonly, useSSRContext } from 'vue';
|
|
3
|
+
import { ssrRenderAttrs, ssrRenderComponent, ssrInterpolate, ssrRenderAttr, ssrRenderSlot, ssrRenderList, ssrRenderVNode, ssrRenderClass, ssrRenderStyle } from 'vue/server-renderer';
|
|
4
|
+
import { Loader2, AlertCircle, RefreshCw, FileText, LayoutGrid, User, Calendar, CircleDot, ExternalLink, Circle, CheckCircle2, Clock, ArrowLeft, Tag, AlertTriangle, ListOrdered, CheckSquare, Check, Link2, Diff, PlayCircle, X, Keyboard, FileDiff, FileCode, GitCommit, Plus, Minus, FolderGit2, ArrowDown, ArrowUp, ArrowRight, FileWarning, ChevronDown, Link, Link2Off, FileEdit, FileX, FilePlus } from 'lucide-vue-next';
|
|
5
|
+
import { cva } from 'class-variance-authority';
|
|
6
|
+
import { reactiveOmit } from '@vueuse/core';
|
|
7
|
+
import { useForwardPropsEmits, TabsRoot, TabsList as TabsList$1, useForwardProps, TabsTrigger as TabsTrigger$1, TabsContent as TabsContent$1, Primitive, DialogRoot, DialogPortal, DialogContent, DialogClose, DialogTitle, DialogDescription, Separator as Separator$1, DialogOverlay, TooltipProvider as TooltipProvider$1, TooltipRoot, TooltipTrigger as TooltipTrigger$1, TooltipPortal, TooltipContent as TooltipContent$1, TooltipArrow, ScrollAreaRoot, ScrollAreaViewport, ScrollAreaCorner, ScrollAreaScrollbar, ScrollAreaThumb, DialogTrigger } from 'reka-ui';
|
|
8
|
+
import { u as useRepos, a as usePrd, b as useToast, c as cn } from './usePrd-YhvN6Ary.mjs';
|
|
9
|
+
import { marked } from 'marked';
|
|
10
|
+
import { codeToHtml } from 'shiki';
|
|
11
|
+
import DOMPurify from 'dompurify';
|
|
12
|
+
import { _ as _export_sfc } from './_plugin-vue_export-helper-1tPrXgE0.mjs';
|
|
13
|
+
import { codeToHtml as codeToHtml$1 } from 'shiki/bundle/web';
|
|
14
|
+
import { B as Button } from './index-CTpuP9Mj.mjs';
|
|
15
|
+
import { b as useRoute } from './server.mjs';
|
|
16
|
+
import '../nitro/nitro.mjs';
|
|
17
|
+
import 'node:http';
|
|
18
|
+
import 'node:https';
|
|
19
|
+
import 'node:events';
|
|
20
|
+
import 'node:buffer';
|
|
21
|
+
import 'node:fs';
|
|
22
|
+
import 'node:path';
|
|
23
|
+
import 'node:crypto';
|
|
24
|
+
import 'node:os';
|
|
25
|
+
import 'node:url';
|
|
26
|
+
import 'clsx';
|
|
27
|
+
import 'tailwind-merge';
|
|
28
|
+
import 'vue-sonner';
|
|
29
|
+
import '@vue/shared';
|
|
30
|
+
import 'perfect-debounce';
|
|
31
|
+
import '../routes/renderer.mjs';
|
|
32
|
+
import 'vue-bundle-renderer/runtime';
|
|
33
|
+
import 'unhead/server';
|
|
34
|
+
import 'devalue';
|
|
35
|
+
import 'unhead/utils';
|
|
36
|
+
import 'vue-router';
|
|
37
|
+
|
|
38
|
+
const _sfc_main$C = /* @__PURE__ */ defineComponent({
|
|
39
|
+
__name: "Badge",
|
|
40
|
+
__ssrInlineRender: true,
|
|
41
|
+
props: {
|
|
42
|
+
asChild: { type: Boolean },
|
|
43
|
+
as: {},
|
|
44
|
+
variant: {},
|
|
45
|
+
class: {}
|
|
46
|
+
},
|
|
47
|
+
setup(__props) {
|
|
48
|
+
const props = __props;
|
|
49
|
+
const delegatedProps = reactiveOmit(props, "class");
|
|
50
|
+
return (_ctx, _push, _parent, _attrs) => {
|
|
51
|
+
_push(ssrRenderComponent(unref(Primitive), mergeProps({
|
|
52
|
+
"data-slot": "badge",
|
|
53
|
+
class: unref(cn)(unref(badgeVariants)({ variant: __props.variant }), props.class)
|
|
54
|
+
}, unref(delegatedProps), _attrs), {
|
|
55
|
+
default: withCtx((_, _push2, _parent2, _scopeId) => {
|
|
56
|
+
if (_push2) {
|
|
57
|
+
ssrRenderSlot(_ctx.$slots, "default", {}, null, _push2, _parent2, _scopeId);
|
|
58
|
+
} else {
|
|
59
|
+
return [
|
|
60
|
+
renderSlot(_ctx.$slots, "default")
|
|
61
|
+
];
|
|
62
|
+
}
|
|
63
|
+
}),
|
|
64
|
+
_: 3
|
|
65
|
+
}, _parent));
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
});
|
|
69
|
+
const _sfc_setup$C = _sfc_main$C.setup;
|
|
70
|
+
_sfc_main$C.setup = (props, ctx) => {
|
|
71
|
+
const ssrContext = useSSRContext();
|
|
72
|
+
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/ui/badge/Badge.vue");
|
|
73
|
+
return _sfc_setup$C ? _sfc_setup$C(props, ctx) : void 0;
|
|
74
|
+
};
|
|
75
|
+
const Badge = Object.assign(_sfc_main$C, { __name: "UiBadge" });
|
|
76
|
+
const badgeVariants = cva(
|
|
77
|
+
"inline-flex items-center justify-center rounded-full border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden",
|
|
78
|
+
{
|
|
79
|
+
variants: {
|
|
80
|
+
variant: {
|
|
81
|
+
default: "border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90",
|
|
82
|
+
secondary: "border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90",
|
|
83
|
+
destructive: "border-transparent bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",
|
|
84
|
+
outline: "text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground"
|
|
85
|
+
}
|
|
86
|
+
},
|
|
87
|
+
defaultVariants: {
|
|
88
|
+
variant: "default"
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
);
|
|
92
|
+
const _sfc_main$B = /* @__PURE__ */ defineComponent({
|
|
93
|
+
__name: "Meta",
|
|
94
|
+
__ssrInlineRender: true,
|
|
95
|
+
props: {
|
|
96
|
+
metadata: {}
|
|
97
|
+
},
|
|
98
|
+
setup(__props) {
|
|
99
|
+
const props = __props;
|
|
100
|
+
const statusVariant = computed(() => {
|
|
101
|
+
const status = props.metadata.status?.toLowerCase();
|
|
102
|
+
if (!status) return "secondary";
|
|
103
|
+
if (status.includes("complete") || status.includes("done")) return "default";
|
|
104
|
+
if (status.includes("progress") || status.includes("active")) return "default";
|
|
105
|
+
if (status.includes("draft")) return "secondary";
|
|
106
|
+
if (status.includes("blocked") || status.includes("paused")) return "destructive";
|
|
107
|
+
return "secondary";
|
|
108
|
+
});
|
|
109
|
+
const hasMetadata = computed(() => {
|
|
110
|
+
return props.metadata.author || props.metadata.date || props.metadata.status || props.metadata.shortcutStory;
|
|
111
|
+
});
|
|
112
|
+
return (_ctx, _push, _parent, _attrs) => {
|
|
113
|
+
if (unref(hasMetadata)) {
|
|
114
|
+
_push(`<div${ssrRenderAttrs(mergeProps({ class: "flex flex-wrap items-center gap-3 text-sm" }, _attrs))}>`);
|
|
115
|
+
if (__props.metadata.author) {
|
|
116
|
+
_push(`<div class="flex items-center gap-1.5 text-muted-foreground">`);
|
|
117
|
+
_push(ssrRenderComponent(unref(User), { class: "size-3.5" }, null, _parent));
|
|
118
|
+
_push(`<span>${ssrInterpolate(__props.metadata.author)}</span></div>`);
|
|
119
|
+
} else {
|
|
120
|
+
_push(`<!---->`);
|
|
121
|
+
}
|
|
122
|
+
if (__props.metadata.date) {
|
|
123
|
+
_push(`<div class="flex items-center gap-1.5 text-muted-foreground">`);
|
|
124
|
+
_push(ssrRenderComponent(unref(Calendar), { class: "size-3.5" }, null, _parent));
|
|
125
|
+
_push(`<span>${ssrInterpolate(__props.metadata.date)}</span></div>`);
|
|
126
|
+
} else {
|
|
127
|
+
_push(`<!---->`);
|
|
128
|
+
}
|
|
129
|
+
if (__props.metadata.status) {
|
|
130
|
+
_push(ssrRenderComponent(unref(Badge), {
|
|
131
|
+
variant: unref(statusVariant),
|
|
132
|
+
class: "gap-1"
|
|
133
|
+
}, {
|
|
134
|
+
default: withCtx((_, _push2, _parent2, _scopeId) => {
|
|
135
|
+
if (_push2) {
|
|
136
|
+
_push2(ssrRenderComponent(unref(CircleDot), { class: "size-3" }, null, _parent2, _scopeId));
|
|
137
|
+
_push2(` ${ssrInterpolate(__props.metadata.status)}`);
|
|
138
|
+
} else {
|
|
139
|
+
return [
|
|
140
|
+
createVNode(unref(CircleDot), { class: "size-3" }),
|
|
141
|
+
createTextVNode(" " + toDisplayString(__props.metadata.status), 1)
|
|
142
|
+
];
|
|
143
|
+
}
|
|
144
|
+
}),
|
|
145
|
+
_: 1
|
|
146
|
+
}, _parent));
|
|
147
|
+
} else {
|
|
148
|
+
_push(`<!---->`);
|
|
149
|
+
}
|
|
150
|
+
if (__props.metadata.shortcutStory && __props.metadata.shortcutUrl) {
|
|
151
|
+
_push(`<a${ssrRenderAttr("href", __props.metadata.shortcutUrl)} target="_blank" rel="noopener noreferrer" class="inline-flex items-center gap-1.5 text-primary hover:underline">`);
|
|
152
|
+
_push(ssrRenderComponent(unref(ExternalLink), { class: "size-3.5" }, null, _parent));
|
|
153
|
+
_push(`<span>${ssrInterpolate(__props.metadata.shortcutStory)}</span></a>`);
|
|
154
|
+
} else if (__props.metadata.shortcutStory) {
|
|
155
|
+
_push(`<span class="flex items-center gap-1.5 text-muted-foreground">`);
|
|
156
|
+
_push(ssrRenderComponent(unref(ExternalLink), { class: "size-3.5" }, null, _parent));
|
|
157
|
+
_push(`<span>${ssrInterpolate(__props.metadata.shortcutStory)}</span></span>`);
|
|
158
|
+
} else {
|
|
159
|
+
_push(`<!---->`);
|
|
160
|
+
}
|
|
161
|
+
_push(`</div>`);
|
|
162
|
+
} else {
|
|
163
|
+
_push(`<!---->`);
|
|
164
|
+
}
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
});
|
|
168
|
+
const _sfc_setup$B = _sfc_main$B.setup;
|
|
169
|
+
_sfc_main$B.setup = (props, ctx) => {
|
|
170
|
+
const ssrContext = useSSRContext();
|
|
171
|
+
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/prd/Meta.vue");
|
|
172
|
+
return _sfc_setup$B ? _sfc_setup$B(props, ctx) : void 0;
|
|
173
|
+
};
|
|
174
|
+
const __nuxt_component_1$2 = Object.assign(_sfc_main$B, { __name: "PrdMeta" });
|
|
175
|
+
const _sfc_main$A = /* @__PURE__ */ defineComponent({
|
|
176
|
+
__name: "Viewer",
|
|
177
|
+
__ssrInlineRender: true,
|
|
178
|
+
props: {
|
|
179
|
+
content: {}
|
|
180
|
+
},
|
|
181
|
+
setup(__props) {
|
|
182
|
+
const props = __props;
|
|
183
|
+
const renderedHtml = ref("");
|
|
184
|
+
const isLoading = ref(true);
|
|
185
|
+
const purifyConfig = {
|
|
186
|
+
ADD_TAGS: ["style"],
|
|
187
|
+
ADD_ATTR: ["style", "class", "target", "rel"]
|
|
188
|
+
};
|
|
189
|
+
const renderer = new marked.Renderer();
|
|
190
|
+
renderer.link = ({ href, title, text }) => {
|
|
191
|
+
const titleAttr = title ? ` title="${title}"` : "";
|
|
192
|
+
return `<a href="${href}"${titleAttr} target="_blank" rel="noopener noreferrer">${text}</a>`;
|
|
193
|
+
};
|
|
194
|
+
async function highlightCode(code, lang) {
|
|
195
|
+
try {
|
|
196
|
+
return await codeToHtml(code, {
|
|
197
|
+
lang: lang || "text",
|
|
198
|
+
themes: {
|
|
199
|
+
light: "github-light",
|
|
200
|
+
dark: "github-dark"
|
|
201
|
+
}
|
|
202
|
+
});
|
|
203
|
+
} catch {
|
|
204
|
+
return `<pre><code class="language-${lang}">${escapeHtml(code)}</code></pre>`;
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
function escapeHtml(text) {
|
|
208
|
+
return text.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, """).replace(/'/g, "'");
|
|
209
|
+
}
|
|
210
|
+
async function renderMarkdown(content) {
|
|
211
|
+
const codeBlockRegex = /```(\w*)\n([\s\S]*?)```/g;
|
|
212
|
+
const placeholders = [];
|
|
213
|
+
let placeholderIndex = 0;
|
|
214
|
+
const contentWithPlaceholders = content.replace(codeBlockRegex, (_, lang, code) => {
|
|
215
|
+
const placeholder = `CODEBLOCK${placeholderIndex++}PLACEHOLDER`;
|
|
216
|
+
placeholders.push({ placeholder, lang: lang || "text", code: code.trim() });
|
|
217
|
+
return placeholder;
|
|
218
|
+
});
|
|
219
|
+
marked.setOptions({
|
|
220
|
+
renderer,
|
|
221
|
+
gfm: true,
|
|
222
|
+
breaks: false
|
|
223
|
+
});
|
|
224
|
+
let html = await marked.parse(contentWithPlaceholders);
|
|
225
|
+
const highlightPromises = placeholders.map(async ({ placeholder, lang, code }) => {
|
|
226
|
+
const highlighted = await highlightCode(code, lang);
|
|
227
|
+
return { placeholder, highlighted };
|
|
228
|
+
});
|
|
229
|
+
const results = await Promise.all(highlightPromises);
|
|
230
|
+
for (const { placeholder, highlighted } of results) {
|
|
231
|
+
html = html.replace(`<p>${placeholder}</p>`, highlighted);
|
|
232
|
+
html = html.replace(placeholder, highlighted);
|
|
233
|
+
}
|
|
234
|
+
return DOMPurify.sanitize(html, purifyConfig);
|
|
235
|
+
}
|
|
236
|
+
watch(() => props.content, async (newContent) => {
|
|
237
|
+
if (newContent) {
|
|
238
|
+
isLoading.value = true;
|
|
239
|
+
try {
|
|
240
|
+
renderedHtml.value = await renderMarkdown(newContent);
|
|
241
|
+
} finally {
|
|
242
|
+
isLoading.value = false;
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
}, { immediate: true });
|
|
246
|
+
return (_ctx, _push, _parent, _attrs) => {
|
|
247
|
+
_push(`<div${ssrRenderAttrs(mergeProps({ class: "prd-viewer" }, _attrs))}>`);
|
|
248
|
+
if (unref(isLoading)) {
|
|
249
|
+
_push(`<div class="flex items-center justify-center py-8"><div class="size-6 animate-spin rounded-full border-2 border-primary border-t-transparent"></div></div>`);
|
|
250
|
+
} else {
|
|
251
|
+
_push(`<div class="prose prose-sm dark:prose-invert max-w-none">${unref(renderedHtml) ?? ""}</div>`);
|
|
252
|
+
}
|
|
253
|
+
_push(`</div>`);
|
|
254
|
+
};
|
|
255
|
+
}
|
|
256
|
+
});
|
|
257
|
+
const _sfc_setup$A = _sfc_main$A.setup;
|
|
258
|
+
_sfc_main$A.setup = (props, ctx) => {
|
|
259
|
+
const ssrContext = useSSRContext();
|
|
260
|
+
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/prd/Viewer.vue");
|
|
261
|
+
return _sfc_setup$A ? _sfc_setup$A(props, ctx) : void 0;
|
|
262
|
+
};
|
|
263
|
+
const __nuxt_component_2 = Object.assign(_sfc_main$A, { __name: "PrdViewer" });
|
|
264
|
+
const _sfc_main$z = /* @__PURE__ */ defineComponent({
|
|
265
|
+
__name: "Card",
|
|
266
|
+
__ssrInlineRender: true,
|
|
267
|
+
props: {
|
|
268
|
+
class: {}
|
|
269
|
+
},
|
|
270
|
+
setup(__props) {
|
|
271
|
+
const props = __props;
|
|
272
|
+
return (_ctx, _push, _parent, _attrs) => {
|
|
273
|
+
_push(`<div${ssrRenderAttrs(mergeProps({
|
|
274
|
+
"data-slot": "card",
|
|
275
|
+
class: unref(cn)(
|
|
276
|
+
"bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 shadow-sm",
|
|
277
|
+
props.class
|
|
278
|
+
)
|
|
279
|
+
}, _attrs))}>`);
|
|
280
|
+
ssrRenderSlot(_ctx.$slots, "default", {}, null, _push, _parent);
|
|
281
|
+
_push(`</div>`);
|
|
282
|
+
};
|
|
283
|
+
}
|
|
284
|
+
});
|
|
285
|
+
const _sfc_setup$z = _sfc_main$z.setup;
|
|
286
|
+
_sfc_main$z.setup = (props, ctx) => {
|
|
287
|
+
const ssrContext = useSSRContext();
|
|
288
|
+
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/ui/card/Card.vue");
|
|
289
|
+
return _sfc_setup$z ? _sfc_setup$z(props, ctx) : void 0;
|
|
290
|
+
};
|
|
291
|
+
const Card = Object.assign(_sfc_main$z, { __name: "UiCard" });
|
|
292
|
+
const _sfc_main$y = /* @__PURE__ */ defineComponent({
|
|
293
|
+
__name: "CardAction",
|
|
294
|
+
__ssrInlineRender: true,
|
|
295
|
+
props: {
|
|
296
|
+
class: {}
|
|
297
|
+
},
|
|
298
|
+
setup(__props) {
|
|
299
|
+
const props = __props;
|
|
300
|
+
return (_ctx, _push, _parent, _attrs) => {
|
|
301
|
+
_push(`<div${ssrRenderAttrs(mergeProps({
|
|
302
|
+
"data-slot": "card-action",
|
|
303
|
+
class: unref(cn)("col-start-2 row-span-2 row-start-1 self-start justify-self-end", props.class)
|
|
304
|
+
}, _attrs))}>`);
|
|
305
|
+
ssrRenderSlot(_ctx.$slots, "default", {}, null, _push, _parent);
|
|
306
|
+
_push(`</div>`);
|
|
307
|
+
};
|
|
308
|
+
}
|
|
309
|
+
});
|
|
310
|
+
const _sfc_setup$y = _sfc_main$y.setup;
|
|
311
|
+
_sfc_main$y.setup = (props, ctx) => {
|
|
312
|
+
const ssrContext = useSSRContext();
|
|
313
|
+
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/ui/card/CardAction.vue");
|
|
314
|
+
return _sfc_setup$y ? _sfc_setup$y(props, ctx) : void 0;
|
|
315
|
+
};
|
|
316
|
+
Object.assign(_sfc_main$y, { __name: "UiCardAction" });
|
|
317
|
+
const _sfc_main$x = /* @__PURE__ */ defineComponent({
|
|
318
|
+
__name: "CardContent",
|
|
319
|
+
__ssrInlineRender: true,
|
|
320
|
+
props: {
|
|
321
|
+
class: {}
|
|
322
|
+
},
|
|
323
|
+
setup(__props) {
|
|
324
|
+
const props = __props;
|
|
325
|
+
return (_ctx, _push, _parent, _attrs) => {
|
|
326
|
+
_push(`<div${ssrRenderAttrs(mergeProps({
|
|
327
|
+
"data-slot": "card-content",
|
|
328
|
+
class: unref(cn)("px-6", props.class)
|
|
329
|
+
}, _attrs))}>`);
|
|
330
|
+
ssrRenderSlot(_ctx.$slots, "default", {}, null, _push, _parent);
|
|
331
|
+
_push(`</div>`);
|
|
332
|
+
};
|
|
333
|
+
}
|
|
334
|
+
});
|
|
335
|
+
const _sfc_setup$x = _sfc_main$x.setup;
|
|
336
|
+
_sfc_main$x.setup = (props, ctx) => {
|
|
337
|
+
const ssrContext = useSSRContext();
|
|
338
|
+
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/ui/card/CardContent.vue");
|
|
339
|
+
return _sfc_setup$x ? _sfc_setup$x(props, ctx) : void 0;
|
|
340
|
+
};
|
|
341
|
+
const CardContent = Object.assign(_sfc_main$x, { __name: "UiCardContent" });
|
|
342
|
+
const _sfc_main$w = /* @__PURE__ */ defineComponent({
|
|
343
|
+
__name: "CardDescription",
|
|
344
|
+
__ssrInlineRender: true,
|
|
345
|
+
props: {
|
|
346
|
+
class: {}
|
|
347
|
+
},
|
|
348
|
+
setup(__props) {
|
|
349
|
+
const props = __props;
|
|
350
|
+
return (_ctx, _push, _parent, _attrs) => {
|
|
351
|
+
_push(`<p${ssrRenderAttrs(mergeProps({
|
|
352
|
+
"data-slot": "card-description",
|
|
353
|
+
class: unref(cn)("text-muted-foreground text-sm", props.class)
|
|
354
|
+
}, _attrs))}>`);
|
|
355
|
+
ssrRenderSlot(_ctx.$slots, "default", {}, null, _push, _parent);
|
|
356
|
+
_push(`</p>`);
|
|
357
|
+
};
|
|
358
|
+
}
|
|
359
|
+
});
|
|
360
|
+
const _sfc_setup$w = _sfc_main$w.setup;
|
|
361
|
+
_sfc_main$w.setup = (props, ctx) => {
|
|
362
|
+
const ssrContext = useSSRContext();
|
|
363
|
+
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/ui/card/CardDescription.vue");
|
|
364
|
+
return _sfc_setup$w ? _sfc_setup$w(props, ctx) : void 0;
|
|
365
|
+
};
|
|
366
|
+
Object.assign(_sfc_main$w, { __name: "UiCardDescription" });
|
|
367
|
+
const _sfc_main$v = /* @__PURE__ */ defineComponent({
|
|
368
|
+
__name: "CardFooter",
|
|
369
|
+
__ssrInlineRender: true,
|
|
370
|
+
props: {
|
|
371
|
+
class: {}
|
|
372
|
+
},
|
|
373
|
+
setup(__props) {
|
|
374
|
+
const props = __props;
|
|
375
|
+
return (_ctx, _push, _parent, _attrs) => {
|
|
376
|
+
_push(`<div${ssrRenderAttrs(mergeProps({
|
|
377
|
+
"data-slot": "card-footer",
|
|
378
|
+
class: unref(cn)("flex items-center px-6 [.border-t]:pt-6", props.class)
|
|
379
|
+
}, _attrs))}>`);
|
|
380
|
+
ssrRenderSlot(_ctx.$slots, "default", {}, null, _push, _parent);
|
|
381
|
+
_push(`</div>`);
|
|
382
|
+
};
|
|
383
|
+
}
|
|
384
|
+
});
|
|
385
|
+
const _sfc_setup$v = _sfc_main$v.setup;
|
|
386
|
+
_sfc_main$v.setup = (props, ctx) => {
|
|
387
|
+
const ssrContext = useSSRContext();
|
|
388
|
+
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/ui/card/CardFooter.vue");
|
|
389
|
+
return _sfc_setup$v ? _sfc_setup$v(props, ctx) : void 0;
|
|
390
|
+
};
|
|
391
|
+
Object.assign(_sfc_main$v, { __name: "UiCardFooter" });
|
|
392
|
+
const _sfc_main$u = /* @__PURE__ */ defineComponent({
|
|
393
|
+
__name: "CardHeader",
|
|
394
|
+
__ssrInlineRender: true,
|
|
395
|
+
props: {
|
|
396
|
+
class: {}
|
|
397
|
+
},
|
|
398
|
+
setup(__props) {
|
|
399
|
+
const props = __props;
|
|
400
|
+
return (_ctx, _push, _parent, _attrs) => {
|
|
401
|
+
_push(`<div${ssrRenderAttrs(mergeProps({
|
|
402
|
+
"data-slot": "card-header",
|
|
403
|
+
class: unref(cn)("@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-1.5 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6", props.class)
|
|
404
|
+
}, _attrs))}>`);
|
|
405
|
+
ssrRenderSlot(_ctx.$slots, "default", {}, null, _push, _parent);
|
|
406
|
+
_push(`</div>`);
|
|
407
|
+
};
|
|
408
|
+
}
|
|
409
|
+
});
|
|
410
|
+
const _sfc_setup$u = _sfc_main$u.setup;
|
|
411
|
+
_sfc_main$u.setup = (props, ctx) => {
|
|
412
|
+
const ssrContext = useSSRContext();
|
|
413
|
+
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/ui/card/CardHeader.vue");
|
|
414
|
+
return _sfc_setup$u ? _sfc_setup$u(props, ctx) : void 0;
|
|
415
|
+
};
|
|
416
|
+
Object.assign(_sfc_main$u, { __name: "UiCardHeader" });
|
|
417
|
+
const _sfc_main$t = /* @__PURE__ */ defineComponent({
|
|
418
|
+
__name: "CardTitle",
|
|
419
|
+
__ssrInlineRender: true,
|
|
420
|
+
props: {
|
|
421
|
+
class: {}
|
|
422
|
+
},
|
|
423
|
+
setup(__props) {
|
|
424
|
+
const props = __props;
|
|
425
|
+
return (_ctx, _push, _parent, _attrs) => {
|
|
426
|
+
_push(`<h3${ssrRenderAttrs(mergeProps({
|
|
427
|
+
"data-slot": "card-title",
|
|
428
|
+
class: unref(cn)("leading-none font-semibold", props.class)
|
|
429
|
+
}, _attrs))}>`);
|
|
430
|
+
ssrRenderSlot(_ctx.$slots, "default", {}, null, _push, _parent);
|
|
431
|
+
_push(`</h3>`);
|
|
432
|
+
};
|
|
433
|
+
}
|
|
434
|
+
});
|
|
435
|
+
const _sfc_setup$t = _sfc_main$t.setup;
|
|
436
|
+
_sfc_main$t.setup = (props, ctx) => {
|
|
437
|
+
const ssrContext = useSSRContext();
|
|
438
|
+
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/ui/card/CardTitle.vue");
|
|
439
|
+
return _sfc_setup$t ? _sfc_setup$t(props, ctx) : void 0;
|
|
440
|
+
};
|
|
441
|
+
Object.assign(_sfc_main$t, { __name: "UiCardTitle" });
|
|
442
|
+
const _sfc_main$s = /* @__PURE__ */ defineComponent({
|
|
443
|
+
__name: "Card",
|
|
444
|
+
__ssrInlineRender: true,
|
|
445
|
+
props: {
|
|
446
|
+
task: {},
|
|
447
|
+
blockedBy: {}
|
|
448
|
+
},
|
|
449
|
+
emits: ["click"],
|
|
450
|
+
setup(__props, { emit: __emit }) {
|
|
451
|
+
const props = __props;
|
|
452
|
+
const emit = __emit;
|
|
453
|
+
const categoryConfig = computed(() => {
|
|
454
|
+
switch (props.task.category) {
|
|
455
|
+
case "setup":
|
|
456
|
+
return { label: "Setup", variant: "secondary" };
|
|
457
|
+
case "feature":
|
|
458
|
+
return { label: "Feature", variant: "default" };
|
|
459
|
+
case "integration":
|
|
460
|
+
return { label: "Integration", variant: "outline" };
|
|
461
|
+
case "testing":
|
|
462
|
+
return { label: "Testing", variant: "secondary" };
|
|
463
|
+
case "documentation":
|
|
464
|
+
return { label: "Docs", variant: "secondary" };
|
|
465
|
+
default:
|
|
466
|
+
return { label: props.task.category, variant: "secondary" };
|
|
467
|
+
}
|
|
468
|
+
});
|
|
469
|
+
const priorityConfig = computed(() => {
|
|
470
|
+
switch (props.task.priority) {
|
|
471
|
+
case "critical":
|
|
472
|
+
return { icon: ArrowUp, class: "text-destructive", label: "Critical" };
|
|
473
|
+
case "high":
|
|
474
|
+
return { icon: ArrowUp, class: "text-orange-500", label: "High" };
|
|
475
|
+
case "medium":
|
|
476
|
+
return { icon: Minus, class: "text-muted-foreground", label: "Medium" };
|
|
477
|
+
case "low":
|
|
478
|
+
return { icon: ArrowDown, class: "text-muted-foreground", label: "Low" };
|
|
479
|
+
default:
|
|
480
|
+
return { icon: Minus, class: "text-muted-foreground", label: "Unknown" };
|
|
481
|
+
}
|
|
482
|
+
});
|
|
483
|
+
const isBlocked = computed(() => {
|
|
484
|
+
return props.blockedBy && props.blockedBy.length > 0;
|
|
485
|
+
});
|
|
486
|
+
const taskNumber = computed(() => {
|
|
487
|
+
const match = props.task.id.match(/(\d+)$/);
|
|
488
|
+
const value = match?.[1];
|
|
489
|
+
return value ? parseInt(value, 10) : 0;
|
|
490
|
+
});
|
|
491
|
+
const blockedCount = computed(() => {
|
|
492
|
+
return props.blockedBy?.length ?? 0;
|
|
493
|
+
});
|
|
494
|
+
function handleClick() {
|
|
495
|
+
emit("click", props.task);
|
|
496
|
+
}
|
|
497
|
+
return (_ctx, _push, _parent, _attrs) => {
|
|
498
|
+
_push(ssrRenderComponent(unref(Card), mergeProps({
|
|
499
|
+
class: ["cursor-pointer py-0 gap-0 transition-all hover:shadow-md hover:border-primary/50", { "opacity-60": unref(isBlocked) }],
|
|
500
|
+
onClick: handleClick
|
|
501
|
+
}, _attrs), {
|
|
502
|
+
default: withCtx((_, _push2, _parent2, _scopeId) => {
|
|
503
|
+
if (_push2) {
|
|
504
|
+
_push2(ssrRenderComponent(unref(CardContent), { class: "p-2.5" }, {
|
|
505
|
+
default: withCtx((_2, _push3, _parent3, _scopeId2) => {
|
|
506
|
+
if (_push3) {
|
|
507
|
+
_push3(`<div class="flex items-center justify-between gap-2 mb-1.5"${_scopeId2}>`);
|
|
508
|
+
_push3(ssrRenderComponent(unref(Badge), {
|
|
509
|
+
variant: unref(categoryConfig).variant,
|
|
510
|
+
class: "text-xs"
|
|
511
|
+
}, {
|
|
512
|
+
default: withCtx((_3, _push4, _parent4, _scopeId3) => {
|
|
513
|
+
if (_push4) {
|
|
514
|
+
_push4(`${ssrInterpolate(unref(categoryConfig).label)}`);
|
|
515
|
+
} else {
|
|
516
|
+
return [
|
|
517
|
+
createTextVNode(toDisplayString(unref(categoryConfig).label), 1)
|
|
518
|
+
];
|
|
519
|
+
}
|
|
520
|
+
}),
|
|
521
|
+
_: 1
|
|
522
|
+
}, _parent3, _scopeId2));
|
|
523
|
+
ssrRenderVNode(_push3, createVNode(resolveDynamicComponent(unref(priorityConfig).icon), {
|
|
524
|
+
class: ["size-4", unref(priorityConfig).class],
|
|
525
|
+
title: unref(priorityConfig).label
|
|
526
|
+
}, null), _parent3, _scopeId2);
|
|
527
|
+
_push3(`</div><h4 class="text-sm font-medium leading-snug"${_scopeId2}><span class="text-muted-foreground"${_scopeId2}>#${ssrInterpolate(unref(taskNumber))}</span> ${ssrInterpolate(__props.task.title)}</h4>`);
|
|
528
|
+
if (unref(isBlocked)) {
|
|
529
|
+
_push3(`<div class="mt-2 flex items-center gap-1.5 text-xs text-destructive"${_scopeId2}>`);
|
|
530
|
+
_push3(ssrRenderComponent(unref(AlertCircle), { class: "size-3.5" }, null, _parent3, _scopeId2));
|
|
531
|
+
_push3(`<span${_scopeId2}>Blocked by ${ssrInterpolate(unref(blockedCount))} task${ssrInterpolate(unref(blockedCount) === 1 ? "" : "s")}</span></div>`);
|
|
532
|
+
} else {
|
|
533
|
+
_push3(`<!---->`);
|
|
534
|
+
}
|
|
535
|
+
} else {
|
|
536
|
+
return [
|
|
537
|
+
createVNode("div", { class: "flex items-center justify-between gap-2 mb-1.5" }, [
|
|
538
|
+
createVNode(unref(Badge), {
|
|
539
|
+
variant: unref(categoryConfig).variant,
|
|
540
|
+
class: "text-xs"
|
|
541
|
+
}, {
|
|
542
|
+
default: withCtx(() => [
|
|
543
|
+
createTextVNode(toDisplayString(unref(categoryConfig).label), 1)
|
|
544
|
+
]),
|
|
545
|
+
_: 1
|
|
546
|
+
}, 8, ["variant"]),
|
|
547
|
+
(openBlock(), createBlock(resolveDynamicComponent(unref(priorityConfig).icon), {
|
|
548
|
+
class: ["size-4", unref(priorityConfig).class],
|
|
549
|
+
title: unref(priorityConfig).label
|
|
550
|
+
}, null, 8, ["class", "title"]))
|
|
551
|
+
]),
|
|
552
|
+
createVNode("h4", { class: "text-sm font-medium leading-snug" }, [
|
|
553
|
+
createVNode("span", { class: "text-muted-foreground" }, "#" + toDisplayString(unref(taskNumber)), 1),
|
|
554
|
+
createTextVNode(" " + toDisplayString(__props.task.title), 1)
|
|
555
|
+
]),
|
|
556
|
+
unref(isBlocked) ? (openBlock(), createBlock("div", {
|
|
557
|
+
key: 0,
|
|
558
|
+
class: "mt-2 flex items-center gap-1.5 text-xs text-destructive"
|
|
559
|
+
}, [
|
|
560
|
+
createVNode(unref(AlertCircle), { class: "size-3.5" }),
|
|
561
|
+
createVNode("span", null, "Blocked by " + toDisplayString(unref(blockedCount)) + " task" + toDisplayString(unref(blockedCount) === 1 ? "" : "s"), 1)
|
|
562
|
+
])) : createCommentVNode("", true)
|
|
563
|
+
];
|
|
564
|
+
}
|
|
565
|
+
}),
|
|
566
|
+
_: 1
|
|
567
|
+
}, _parent2, _scopeId));
|
|
568
|
+
} else {
|
|
569
|
+
return [
|
|
570
|
+
createVNode(unref(CardContent), { class: "p-2.5" }, {
|
|
571
|
+
default: withCtx(() => [
|
|
572
|
+
createVNode("div", { class: "flex items-center justify-between gap-2 mb-1.5" }, [
|
|
573
|
+
createVNode(unref(Badge), {
|
|
574
|
+
variant: unref(categoryConfig).variant,
|
|
575
|
+
class: "text-xs"
|
|
576
|
+
}, {
|
|
577
|
+
default: withCtx(() => [
|
|
578
|
+
createTextVNode(toDisplayString(unref(categoryConfig).label), 1)
|
|
579
|
+
]),
|
|
580
|
+
_: 1
|
|
581
|
+
}, 8, ["variant"]),
|
|
582
|
+
(openBlock(), createBlock(resolveDynamicComponent(unref(priorityConfig).icon), {
|
|
583
|
+
class: ["size-4", unref(priorityConfig).class],
|
|
584
|
+
title: unref(priorityConfig).label
|
|
585
|
+
}, null, 8, ["class", "title"]))
|
|
586
|
+
]),
|
|
587
|
+
createVNode("h4", { class: "text-sm font-medium leading-snug" }, [
|
|
588
|
+
createVNode("span", { class: "text-muted-foreground" }, "#" + toDisplayString(unref(taskNumber)), 1),
|
|
589
|
+
createTextVNode(" " + toDisplayString(__props.task.title), 1)
|
|
590
|
+
]),
|
|
591
|
+
unref(isBlocked) ? (openBlock(), createBlock("div", {
|
|
592
|
+
key: 0,
|
|
593
|
+
class: "mt-2 flex items-center gap-1.5 text-xs text-destructive"
|
|
594
|
+
}, [
|
|
595
|
+
createVNode(unref(AlertCircle), { class: "size-3.5" }),
|
|
596
|
+
createVNode("span", null, "Blocked by " + toDisplayString(unref(blockedCount)) + " task" + toDisplayString(unref(blockedCount) === 1 ? "" : "s"), 1)
|
|
597
|
+
])) : createCommentVNode("", true)
|
|
598
|
+
]),
|
|
599
|
+
_: 1
|
|
600
|
+
})
|
|
601
|
+
];
|
|
602
|
+
}
|
|
603
|
+
}),
|
|
604
|
+
_: 1
|
|
605
|
+
}, _parent));
|
|
606
|
+
};
|
|
607
|
+
}
|
|
608
|
+
});
|
|
609
|
+
const _sfc_setup$s = _sfc_main$s.setup;
|
|
610
|
+
_sfc_main$s.setup = (props, ctx) => {
|
|
611
|
+
const ssrContext = useSSRContext();
|
|
612
|
+
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/tasks/Card.vue");
|
|
613
|
+
return _sfc_setup$s ? _sfc_setup$s(props, ctx) : void 0;
|
|
614
|
+
};
|
|
615
|
+
const __nuxt_component_0$3 = Object.assign(_sfc_main$s, { __name: "TasksCard" });
|
|
616
|
+
const _sfc_main$r = /* @__PURE__ */ defineComponent({
|
|
617
|
+
__name: "Column",
|
|
618
|
+
__ssrInlineRender: true,
|
|
619
|
+
props: {
|
|
620
|
+
status: {},
|
|
621
|
+
tasks: {},
|
|
622
|
+
blockedByMap: {}
|
|
623
|
+
},
|
|
624
|
+
emits: ["taskClick"],
|
|
625
|
+
setup(__props, { emit: __emit }) {
|
|
626
|
+
const props = __props;
|
|
627
|
+
const emit = __emit;
|
|
628
|
+
const statusConfig = computed(() => {
|
|
629
|
+
switch (props.status) {
|
|
630
|
+
case "pending":
|
|
631
|
+
return {
|
|
632
|
+
label: "Pending",
|
|
633
|
+
icon: Circle,
|
|
634
|
+
headerClass: "bg-muted/50",
|
|
635
|
+
iconClass: "text-muted-foreground"
|
|
636
|
+
};
|
|
637
|
+
case "in_progress":
|
|
638
|
+
return {
|
|
639
|
+
label: "In Progress",
|
|
640
|
+
icon: PlayCircle,
|
|
641
|
+
headerClass: "bg-blue-500/10",
|
|
642
|
+
iconClass: "text-blue-500"
|
|
643
|
+
};
|
|
644
|
+
case "completed":
|
|
645
|
+
return {
|
|
646
|
+
label: "Completed",
|
|
647
|
+
icon: CheckCircle2,
|
|
648
|
+
headerClass: "bg-green-500/10",
|
|
649
|
+
iconClass: "text-green-500"
|
|
650
|
+
};
|
|
651
|
+
default:
|
|
652
|
+
return {
|
|
653
|
+
label: props.status,
|
|
654
|
+
icon: Circle,
|
|
655
|
+
headerClass: "bg-muted/50",
|
|
656
|
+
iconClass: "text-muted-foreground"
|
|
657
|
+
};
|
|
658
|
+
}
|
|
659
|
+
});
|
|
660
|
+
function getBlockedBy(taskId) {
|
|
661
|
+
return props.blockedByMap?.get(taskId) ?? [];
|
|
662
|
+
}
|
|
663
|
+
function handleTaskClick(task) {
|
|
664
|
+
emit("taskClick", task);
|
|
665
|
+
}
|
|
666
|
+
return (_ctx, _push, _parent, _attrs) => {
|
|
667
|
+
const _component_TasksCard = __nuxt_component_0$3;
|
|
668
|
+
_push(`<div${ssrRenderAttrs(mergeProps({ class: "flex h-full min-w-56 flex-1 flex-col overflow-hidden rounded-lg border border-border bg-card" }, _attrs))} data-v-a1317eba><div class="${ssrRenderClass([unref(statusConfig).headerClass, "flex items-center gap-2 rounded-t-lg border-b border-border px-3 py-2"])}" data-v-a1317eba>`);
|
|
669
|
+
ssrRenderVNode(_push, createVNode(resolveDynamicComponent(unref(statusConfig).icon), {
|
|
670
|
+
class: ["size-4", unref(statusConfig).iconClass]
|
|
671
|
+
}, null), _parent);
|
|
672
|
+
_push(`<h3 class="text-sm font-medium" data-v-a1317eba>${ssrInterpolate(unref(statusConfig).label)}</h3><span class="ml-auto text-xs text-muted-foreground" data-v-a1317eba>${ssrInterpolate(__props.tasks.length)}</span></div><div class="scrollbar-hide min-h-0 flex-1 overflow-y-auto p-1.5" data-v-a1317eba><div class="space-y-1.5" data-v-a1317eba><!--[-->`);
|
|
673
|
+
ssrRenderList(__props.tasks, (task) => {
|
|
674
|
+
_push(ssrRenderComponent(_component_TasksCard, {
|
|
675
|
+
key: task.id,
|
|
676
|
+
task,
|
|
677
|
+
"blocked-by": getBlockedBy(task.id),
|
|
678
|
+
onClick: handleTaskClick
|
|
679
|
+
}, null, _parent));
|
|
680
|
+
});
|
|
681
|
+
_push(`<!--]-->`);
|
|
682
|
+
if (__props.tasks.length === 0) {
|
|
683
|
+
_push(`<div class="py-8 text-center text-sm text-muted-foreground" data-v-a1317eba> No tasks </div>`);
|
|
684
|
+
} else {
|
|
685
|
+
_push(`<!---->`);
|
|
686
|
+
}
|
|
687
|
+
_push(`</div></div></div>`);
|
|
688
|
+
};
|
|
689
|
+
}
|
|
690
|
+
});
|
|
691
|
+
const _sfc_setup$r = _sfc_main$r.setup;
|
|
692
|
+
_sfc_main$r.setup = (props, ctx) => {
|
|
693
|
+
const ssrContext = useSSRContext();
|
|
694
|
+
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/tasks/Column.vue");
|
|
695
|
+
return _sfc_setup$r ? _sfc_setup$r(props, ctx) : void 0;
|
|
696
|
+
};
|
|
697
|
+
const __nuxt_component_0$2 = /* @__PURE__ */ Object.assign(_export_sfc(_sfc_main$r, [["__scopeId", "data-v-a1317eba"]]), { __name: "TasksColumn" });
|
|
698
|
+
const _sfc_main$q = /* @__PURE__ */ defineComponent({
|
|
699
|
+
__name: "Board",
|
|
700
|
+
__ssrInlineRender: true,
|
|
701
|
+
props: {
|
|
702
|
+
tasks: {}
|
|
703
|
+
},
|
|
704
|
+
emits: ["taskClick"],
|
|
705
|
+
setup(__props, { emit: __emit }) {
|
|
706
|
+
const props = __props;
|
|
707
|
+
const emit = __emit;
|
|
708
|
+
function getTaskNumber(task) {
|
|
709
|
+
const match = task.id.match(/(\d+)$/);
|
|
710
|
+
const value = match?.[1];
|
|
711
|
+
return value ? parseInt(value, 10) : 0;
|
|
712
|
+
}
|
|
713
|
+
const pendingTasks = computed(
|
|
714
|
+
() => props.tasks.filter((t) => t.status === "pending").sort((a, b) => getTaskNumber(a) - getTaskNumber(b))
|
|
715
|
+
);
|
|
716
|
+
const inProgressTasks = computed(
|
|
717
|
+
() => props.tasks.filter((t) => t.status === "in_progress").sort((a, b) => getTaskNumber(a) - getTaskNumber(b))
|
|
718
|
+
);
|
|
719
|
+
const completedTasks = computed(
|
|
720
|
+
() => props.tasks.filter((t) => t.status === "completed").sort((a, b) => {
|
|
721
|
+
const aTime = a.completedAt ? new Date(a.completedAt).getTime() : 0;
|
|
722
|
+
const bTime = b.completedAt ? new Date(b.completedAt).getTime() : 0;
|
|
723
|
+
return bTime - aTime;
|
|
724
|
+
})
|
|
725
|
+
);
|
|
726
|
+
const blockedByMap = computed(() => {
|
|
727
|
+
const map = /* @__PURE__ */ new Map();
|
|
728
|
+
const completedIds = new Set(completedTasks.value.map((t) => t.id));
|
|
729
|
+
for (const task of props.tasks) {
|
|
730
|
+
if (task.dependencies.length > 0) {
|
|
731
|
+
const blockers = task.dependencies.filter((depId) => !completedIds.has(depId));
|
|
732
|
+
if (blockers.length > 0) {
|
|
733
|
+
map.set(task.id, blockers);
|
|
734
|
+
}
|
|
735
|
+
}
|
|
736
|
+
}
|
|
737
|
+
return map;
|
|
738
|
+
});
|
|
739
|
+
const columns = [
|
|
740
|
+
{ status: "pending", tasks: pendingTasks },
|
|
741
|
+
{ status: "in_progress", tasks: inProgressTasks },
|
|
742
|
+
{ status: "completed", tasks: completedTasks }
|
|
743
|
+
];
|
|
744
|
+
function handleTaskClick(task) {
|
|
745
|
+
emit("taskClick", task);
|
|
746
|
+
}
|
|
747
|
+
return (_ctx, _push, _parent, _attrs) => {
|
|
748
|
+
const _component_TasksColumn = __nuxt_component_0$2;
|
|
749
|
+
_push(`<div${ssrRenderAttrs(mergeProps({ class: "flex h-full gap-3 overflow-x-auto pb-2" }, _attrs))}><!--[-->`);
|
|
750
|
+
ssrRenderList(columns, (column) => {
|
|
751
|
+
_push(ssrRenderComponent(_component_TasksColumn, {
|
|
752
|
+
key: column.status,
|
|
753
|
+
status: column.status,
|
|
754
|
+
tasks: column.tasks.value,
|
|
755
|
+
"blocked-by-map": unref(blockedByMap),
|
|
756
|
+
onTaskClick: handleTaskClick
|
|
757
|
+
}, null, _parent));
|
|
758
|
+
});
|
|
759
|
+
_push(`<!--]--></div>`);
|
|
760
|
+
};
|
|
761
|
+
}
|
|
762
|
+
});
|
|
763
|
+
const _sfc_setup$q = _sfc_main$q.setup;
|
|
764
|
+
_sfc_main$q.setup = (props, ctx) => {
|
|
765
|
+
const ssrContext = useSSRContext();
|
|
766
|
+
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/tasks/Board.vue");
|
|
767
|
+
return _sfc_setup$q ? _sfc_setup$q(props, ctx) : void 0;
|
|
768
|
+
};
|
|
769
|
+
const __nuxt_component_3 = Object.assign(_sfc_main$q, { __name: "TasksBoard" });
|
|
770
|
+
const _sfc_main$p = /* @__PURE__ */ defineComponent({
|
|
771
|
+
__name: "ChangesMinimap",
|
|
772
|
+
__ssrInlineRender: true,
|
|
773
|
+
props: {
|
|
774
|
+
files: {},
|
|
775
|
+
selectedFile: {}
|
|
776
|
+
},
|
|
777
|
+
emits: ["select"],
|
|
778
|
+
setup(__props, { emit: __emit }) {
|
|
779
|
+
const props = __props;
|
|
780
|
+
const maxChanges = computed(() => {
|
|
781
|
+
if (props.files.length === 0) return 1;
|
|
782
|
+
return Math.max(...props.files.map((f) => f.additions + f.deletions), 1);
|
|
783
|
+
});
|
|
784
|
+
function getStatusConfig(status) {
|
|
785
|
+
switch (status) {
|
|
786
|
+
case "added":
|
|
787
|
+
return { icon: FilePlus, class: "text-green-600 dark:text-green-400" };
|
|
788
|
+
case "deleted":
|
|
789
|
+
return { icon: FileX, class: "text-red-600 dark:text-red-400" };
|
|
790
|
+
case "renamed":
|
|
791
|
+
return { icon: ArrowRight, class: "text-blue-600 dark:text-blue-400" };
|
|
792
|
+
case "modified":
|
|
793
|
+
default:
|
|
794
|
+
return { icon: FileEdit, class: "text-yellow-600 dark:text-yellow-400" };
|
|
795
|
+
}
|
|
796
|
+
}
|
|
797
|
+
function getBarWidths(file) {
|
|
798
|
+
const total = file.additions + file.deletions;
|
|
799
|
+
if (total === 0) return { additions: 0, deletions: 0, total: 0 };
|
|
800
|
+
const totalWidth = total / maxChanges.value * 100;
|
|
801
|
+
const additionsWidth = file.additions / total * totalWidth;
|
|
802
|
+
const deletionsWidth = file.deletions / total * totalWidth;
|
|
803
|
+
return {
|
|
804
|
+
additions: additionsWidth,
|
|
805
|
+
deletions: deletionsWidth,
|
|
806
|
+
total: totalWidth
|
|
807
|
+
};
|
|
808
|
+
}
|
|
809
|
+
function getDisplayName(file) {
|
|
810
|
+
if (file.status === "renamed" && file.oldPath) {
|
|
811
|
+
return `${file.oldPath} → ${file.path}`;
|
|
812
|
+
}
|
|
813
|
+
return file.path;
|
|
814
|
+
}
|
|
815
|
+
function getShortName(path) {
|
|
816
|
+
return path.split("/").pop() || path;
|
|
817
|
+
}
|
|
818
|
+
return (_ctx, _push, _parent, _attrs) => {
|
|
819
|
+
_push(`<div${ssrRenderAttrs(mergeProps({ class: "space-y-0.5 p-2" }, _attrs))}><!--[-->`);
|
|
820
|
+
ssrRenderList(__props.files, (file) => {
|
|
821
|
+
_push(`<button class="${ssrRenderClass([{
|
|
822
|
+
"bg-muted": __props.selectedFile === file.path
|
|
823
|
+
}, "group flex w-full items-center gap-2 rounded px-2 py-1.5 text-left text-sm transition-colors hover:bg-muted/50"])}">`);
|
|
824
|
+
ssrRenderVNode(_push, createVNode(resolveDynamicComponent(getStatusConfig(file.status).icon), {
|
|
825
|
+
class: ["size-4 shrink-0", getStatusConfig(file.status).class]
|
|
826
|
+
}, null), _parent);
|
|
827
|
+
_push(`<div class="min-w-0 flex-1"><div class="${ssrRenderClass([{
|
|
828
|
+
"font-medium": __props.selectedFile === file.path
|
|
829
|
+
}, "truncate text-xs"])}"${ssrRenderAttr("title", getDisplayName(file))}>`);
|
|
830
|
+
if (file.status === "renamed" && file.oldPath) {
|
|
831
|
+
_push(`<!--[--><span class="text-muted-foreground">${ssrInterpolate(getShortName(file.oldPath))}</span>`);
|
|
832
|
+
_push(ssrRenderComponent(unref(ArrowRight), { class: "mx-1 inline size-3 text-muted-foreground" }, null, _parent));
|
|
833
|
+
_push(`<span>${ssrInterpolate(getShortName(file.path))}</span><!--]-->`);
|
|
834
|
+
} else {
|
|
835
|
+
_push(`<!--[-->${ssrInterpolate(file.path)}<!--]-->`);
|
|
836
|
+
}
|
|
837
|
+
_push(`</div><div class="mt-1 flex h-1.5 w-full overflow-hidden rounded-full bg-muted">`);
|
|
838
|
+
if (getBarWidths(file).additions > 0) {
|
|
839
|
+
_push(`<div class="bg-green-500 dark:bg-green-400" style="${ssrRenderStyle({ width: `${getBarWidths(file).additions}%` })}"></div>`);
|
|
840
|
+
} else {
|
|
841
|
+
_push(`<!---->`);
|
|
842
|
+
}
|
|
843
|
+
if (getBarWidths(file).deletions > 0) {
|
|
844
|
+
_push(`<div class="bg-red-500 dark:bg-red-400" style="${ssrRenderStyle({ width: `${getBarWidths(file).deletions}%` })}"></div>`);
|
|
845
|
+
} else {
|
|
846
|
+
_push(`<!---->`);
|
|
847
|
+
}
|
|
848
|
+
_push(`</div></div><div class="flex shrink-0 items-center gap-1 text-xs">`);
|
|
849
|
+
if (file.additions > 0) {
|
|
850
|
+
_push(`<span class="text-green-600 dark:text-green-400"> +${ssrInterpolate(file.additions)}</span>`);
|
|
851
|
+
} else {
|
|
852
|
+
_push(`<!---->`);
|
|
853
|
+
}
|
|
854
|
+
if (file.deletions > 0) {
|
|
855
|
+
_push(`<span class="text-red-600 dark:text-red-400"> -${ssrInterpolate(file.deletions)}</span>`);
|
|
856
|
+
} else {
|
|
857
|
+
_push(`<!---->`);
|
|
858
|
+
}
|
|
859
|
+
_push(`</div></button>`);
|
|
860
|
+
});
|
|
861
|
+
_push(`<!--]-->`);
|
|
862
|
+
if (__props.files.length === 0) {
|
|
863
|
+
_push(`<div class="py-4 text-center text-sm text-muted-foreground"> No files changed </div>`);
|
|
864
|
+
} else {
|
|
865
|
+
_push(`<!---->`);
|
|
866
|
+
}
|
|
867
|
+
_push(`</div>`);
|
|
868
|
+
};
|
|
869
|
+
}
|
|
870
|
+
});
|
|
871
|
+
const _sfc_setup$p = _sfc_main$p.setup;
|
|
872
|
+
_sfc_main$p.setup = (props, ctx) => {
|
|
873
|
+
const ssrContext = useSSRContext();
|
|
874
|
+
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/git/ChangesMinimap.vue");
|
|
875
|
+
return _sfc_setup$p ? _sfc_setup$p(props, ctx) : void 0;
|
|
876
|
+
};
|
|
877
|
+
const __nuxt_component_0$1 = Object.assign(_sfc_main$p, { __name: "GitChangesMinimap" });
|
|
878
|
+
const LINE_LIMIT = 1e4;
|
|
879
|
+
const _sfc_main$o = /* @__PURE__ */ defineComponent({
|
|
880
|
+
__name: "DiffViewer",
|
|
881
|
+
__ssrInlineRender: true,
|
|
882
|
+
props: {
|
|
883
|
+
hunks: {},
|
|
884
|
+
filePath: {},
|
|
885
|
+
binary: { type: Boolean },
|
|
886
|
+
oldPath: {},
|
|
887
|
+
fileContent: {},
|
|
888
|
+
showFullFile: { type: Boolean },
|
|
889
|
+
isLoadingContent: { type: Boolean }
|
|
890
|
+
},
|
|
891
|
+
setup(__props) {
|
|
892
|
+
const props = __props;
|
|
893
|
+
const showAll = ref(false);
|
|
894
|
+
const syncScrollEnabled = ref(true);
|
|
895
|
+
ref(null);
|
|
896
|
+
ref(null);
|
|
897
|
+
ref(false);
|
|
898
|
+
const totalLines = computed(() => {
|
|
899
|
+
let count = 0;
|
|
900
|
+
for (const hunk of props.hunks) {
|
|
901
|
+
count += hunk.lines.length;
|
|
902
|
+
}
|
|
903
|
+
return count;
|
|
904
|
+
});
|
|
905
|
+
const isLargeFile = computed(() => totalLines.value > LINE_LIMIT);
|
|
906
|
+
const isEmpty = computed(() => props.hunks.length === 0 && !props.binary);
|
|
907
|
+
const changedLines = computed(() => {
|
|
908
|
+
const added = /* @__PURE__ */ new Set();
|
|
909
|
+
const removed = /* @__PURE__ */ new Set();
|
|
910
|
+
for (const hunk of props.hunks) {
|
|
911
|
+
for (const line of hunk.lines) {
|
|
912
|
+
if (line.type === "add" && line.newNumber !== void 0) {
|
|
913
|
+
added.add(line.newNumber);
|
|
914
|
+
}
|
|
915
|
+
if (line.type === "remove" && line.oldNumber !== void 0) {
|
|
916
|
+
removed.add(line.oldNumber);
|
|
917
|
+
}
|
|
918
|
+
}
|
|
919
|
+
}
|
|
920
|
+
return { added, removed };
|
|
921
|
+
});
|
|
922
|
+
const fullFileLines = computed(() => {
|
|
923
|
+
if (!props.fileContent) return [];
|
|
924
|
+
return props.fileContent.split("\n");
|
|
925
|
+
});
|
|
926
|
+
function detectLanguage(path) {
|
|
927
|
+
const ext = path.split(".").pop()?.toLowerCase() || "";
|
|
928
|
+
const langMap = {
|
|
929
|
+
ts: "typescript",
|
|
930
|
+
tsx: "tsx",
|
|
931
|
+
js: "javascript",
|
|
932
|
+
jsx: "jsx",
|
|
933
|
+
vue: "vue",
|
|
934
|
+
svelte: "svelte",
|
|
935
|
+
py: "python",
|
|
936
|
+
rb: "ruby",
|
|
937
|
+
rs: "rust",
|
|
938
|
+
go: "go",
|
|
939
|
+
java: "java",
|
|
940
|
+
kt: "kotlin",
|
|
941
|
+
swift: "swift",
|
|
942
|
+
c: "c",
|
|
943
|
+
cpp: "cpp",
|
|
944
|
+
h: "c",
|
|
945
|
+
hpp: "cpp",
|
|
946
|
+
cs: "csharp",
|
|
947
|
+
php: "php",
|
|
948
|
+
html: "html",
|
|
949
|
+
css: "css",
|
|
950
|
+
scss: "scss",
|
|
951
|
+
sass: "sass",
|
|
952
|
+
less: "less",
|
|
953
|
+
json: "json",
|
|
954
|
+
yaml: "yaml",
|
|
955
|
+
yml: "yaml",
|
|
956
|
+
toml: "toml",
|
|
957
|
+
xml: "xml",
|
|
958
|
+
md: "markdown",
|
|
959
|
+
mdx: "mdx",
|
|
960
|
+
sh: "bash",
|
|
961
|
+
bash: "bash",
|
|
962
|
+
zsh: "bash",
|
|
963
|
+
fish: "fish",
|
|
964
|
+
ps1: "powershell",
|
|
965
|
+
sql: "sql",
|
|
966
|
+
graphql: "graphql",
|
|
967
|
+
gql: "graphql",
|
|
968
|
+
dockerfile: "dockerfile",
|
|
969
|
+
makefile: "makefile"
|
|
970
|
+
};
|
|
971
|
+
return langMap[ext] || "text";
|
|
972
|
+
}
|
|
973
|
+
const language = computed(() => detectLanguage(props.filePath));
|
|
974
|
+
const highlightedLines = ref(/* @__PURE__ */ new Map());
|
|
975
|
+
const isLoading = ref(true);
|
|
976
|
+
const displayItems = computed(() => {
|
|
977
|
+
const items = [];
|
|
978
|
+
for (let hunkIndex = 0; hunkIndex < props.hunks.length; hunkIndex++) {
|
|
979
|
+
const hunk = props.hunks[hunkIndex];
|
|
980
|
+
if (hunkIndex > 0) {
|
|
981
|
+
items.push({ type: "separator", hunkIndex });
|
|
982
|
+
}
|
|
983
|
+
const hunkLines = hunk.lines;
|
|
984
|
+
let i = 0;
|
|
985
|
+
while (i < hunkLines.length) {
|
|
986
|
+
const line = hunkLines[i];
|
|
987
|
+
if (line.type === "context") {
|
|
988
|
+
items.push({
|
|
989
|
+
type: "line",
|
|
990
|
+
pair: {
|
|
991
|
+
id: `${hunkIndex}-${i}`,
|
|
992
|
+
left: {
|
|
993
|
+
lineNum: line.oldNumber,
|
|
994
|
+
content: line.content,
|
|
995
|
+
type: "context"
|
|
996
|
+
},
|
|
997
|
+
right: {
|
|
998
|
+
lineNum: line.newNumber,
|
|
999
|
+
content: line.content,
|
|
1000
|
+
type: "context"
|
|
1001
|
+
}
|
|
1002
|
+
}
|
|
1003
|
+
});
|
|
1004
|
+
i++;
|
|
1005
|
+
} else if (line.type === "remove") {
|
|
1006
|
+
const removeLines = [];
|
|
1007
|
+
const addLines = [];
|
|
1008
|
+
while (i < hunkLines.length && hunkLines[i].type === "remove") {
|
|
1009
|
+
removeLines.push(hunkLines[i]);
|
|
1010
|
+
i++;
|
|
1011
|
+
}
|
|
1012
|
+
while (i < hunkLines.length && hunkLines[i].type === "add") {
|
|
1013
|
+
addLines.push(hunkLines[i]);
|
|
1014
|
+
i++;
|
|
1015
|
+
}
|
|
1016
|
+
const maxLen = Math.max(removeLines.length, addLines.length);
|
|
1017
|
+
for (let j = 0; j < maxLen; j++) {
|
|
1018
|
+
const removeLine = removeLines[j];
|
|
1019
|
+
const addLine = addLines[j];
|
|
1020
|
+
items.push({
|
|
1021
|
+
type: "line",
|
|
1022
|
+
pair: {
|
|
1023
|
+
id: `${hunkIndex}-${i - maxLen + j}`,
|
|
1024
|
+
left: removeLine ? {
|
|
1025
|
+
lineNum: removeLine.oldNumber,
|
|
1026
|
+
content: removeLine.content,
|
|
1027
|
+
type: "remove"
|
|
1028
|
+
} : { content: "", type: "empty" },
|
|
1029
|
+
right: addLine ? {
|
|
1030
|
+
lineNum: addLine.newNumber,
|
|
1031
|
+
content: addLine.content,
|
|
1032
|
+
type: "add"
|
|
1033
|
+
} : { content: "", type: "empty" }
|
|
1034
|
+
}
|
|
1035
|
+
});
|
|
1036
|
+
}
|
|
1037
|
+
} else if (line.type === "add") {
|
|
1038
|
+
items.push({
|
|
1039
|
+
type: "line",
|
|
1040
|
+
pair: {
|
|
1041
|
+
id: `${hunkIndex}-${i}`,
|
|
1042
|
+
left: { content: "", type: "empty" },
|
|
1043
|
+
right: {
|
|
1044
|
+
lineNum: line.newNumber,
|
|
1045
|
+
content: line.content,
|
|
1046
|
+
type: "add"
|
|
1047
|
+
}
|
|
1048
|
+
}
|
|
1049
|
+
});
|
|
1050
|
+
i++;
|
|
1051
|
+
} else {
|
|
1052
|
+
i++;
|
|
1053
|
+
}
|
|
1054
|
+
}
|
|
1055
|
+
}
|
|
1056
|
+
return items;
|
|
1057
|
+
});
|
|
1058
|
+
async function highlightLine(content, lang) {
|
|
1059
|
+
if (!content.trim()) {
|
|
1060
|
+
return "";
|
|
1061
|
+
}
|
|
1062
|
+
try {
|
|
1063
|
+
const html = await codeToHtml$1(content, {
|
|
1064
|
+
lang,
|
|
1065
|
+
themes: {
|
|
1066
|
+
light: "catppuccin-latte",
|
|
1067
|
+
dark: "catppuccin-mocha"
|
|
1068
|
+
}
|
|
1069
|
+
});
|
|
1070
|
+
const codeMatch = html.match(/<code[^>]*>([\s\S]*?)<\/code>/);
|
|
1071
|
+
return codeMatch ? codeMatch[1] || "" : escapeHtml(content);
|
|
1072
|
+
} catch {
|
|
1073
|
+
return escapeHtml(content);
|
|
1074
|
+
}
|
|
1075
|
+
}
|
|
1076
|
+
async function highlightFullContent(content, lang) {
|
|
1077
|
+
if (!content) {
|
|
1078
|
+
return [];
|
|
1079
|
+
}
|
|
1080
|
+
try {
|
|
1081
|
+
const html = await codeToHtml$1(content, {
|
|
1082
|
+
lang,
|
|
1083
|
+
themes: {
|
|
1084
|
+
light: "catppuccin-latte",
|
|
1085
|
+
dark: "catppuccin-mocha"
|
|
1086
|
+
}
|
|
1087
|
+
});
|
|
1088
|
+
const codeMatch = html.match(/<code[^>]*>([\s\S]*?)<\/code>/);
|
|
1089
|
+
if (!codeMatch || !codeMatch[1]) {
|
|
1090
|
+
return content.split("\n").map(escapeHtml);
|
|
1091
|
+
}
|
|
1092
|
+
const highlightedContent = codeMatch[1];
|
|
1093
|
+
return highlightedContent.split("\n");
|
|
1094
|
+
} catch {
|
|
1095
|
+
return content.split("\n").map(escapeHtml);
|
|
1096
|
+
}
|
|
1097
|
+
}
|
|
1098
|
+
function escapeHtml(text) {
|
|
1099
|
+
return text.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, """).replace(/'/g, "'");
|
|
1100
|
+
}
|
|
1101
|
+
const highlightedFullFile = ref([]);
|
|
1102
|
+
const isLoadingFullFile = ref(false);
|
|
1103
|
+
watch(
|
|
1104
|
+
() => [props.fileContent, props.filePath],
|
|
1105
|
+
async ([content]) => {
|
|
1106
|
+
if (!content) {
|
|
1107
|
+
highlightedFullFile.value = [];
|
|
1108
|
+
return;
|
|
1109
|
+
}
|
|
1110
|
+
isLoadingFullFile.value = true;
|
|
1111
|
+
const lang = language.value;
|
|
1112
|
+
highlightedFullFile.value = await highlightFullContent(content, lang);
|
|
1113
|
+
isLoadingFullFile.value = false;
|
|
1114
|
+
},
|
|
1115
|
+
{ immediate: true }
|
|
1116
|
+
);
|
|
1117
|
+
watch(
|
|
1118
|
+
() => [props.hunks, props.filePath, highlightedFullFile.value],
|
|
1119
|
+
async () => {
|
|
1120
|
+
isLoading.value = true;
|
|
1121
|
+
const lang = language.value;
|
|
1122
|
+
const newHighlighted = /* @__PURE__ */ new Map();
|
|
1123
|
+
const fullFileLines2 = highlightedFullFile.value;
|
|
1124
|
+
const linesToHighlight = [];
|
|
1125
|
+
for (const item of displayItems.value) {
|
|
1126
|
+
if (item.type === "line" && item.pair) {
|
|
1127
|
+
if (item.pair.left.content && item.pair.left.type !== "empty") {
|
|
1128
|
+
const key = `${item.pair.id}-old`;
|
|
1129
|
+
if (item.pair.left.type === "context" && item.pair.left.lineNum && fullFileLines2.length > 0) {
|
|
1130
|
+
const lineIndex = item.pair.right.lineNum ? item.pair.right.lineNum - 1 : -1;
|
|
1131
|
+
if (lineIndex >= 0 && lineIndex < fullFileLines2.length) {
|
|
1132
|
+
newHighlighted.set(key, fullFileLines2[lineIndex] || "");
|
|
1133
|
+
} else {
|
|
1134
|
+
linesToHighlight.push({ key, content: item.pair.left.content });
|
|
1135
|
+
}
|
|
1136
|
+
} else {
|
|
1137
|
+
linesToHighlight.push({ key, content: item.pair.left.content });
|
|
1138
|
+
}
|
|
1139
|
+
}
|
|
1140
|
+
if (item.pair.right.content && item.pair.right.type !== "empty") {
|
|
1141
|
+
const key = `${item.pair.id}-new`;
|
|
1142
|
+
const lineNum = item.pair.right.lineNum;
|
|
1143
|
+
if (lineNum && fullFileLines2.length > 0 && lineNum <= fullFileLines2.length) {
|
|
1144
|
+
newHighlighted.set(key, fullFileLines2[lineNum - 1] || "");
|
|
1145
|
+
} else {
|
|
1146
|
+
linesToHighlight.push({ key, content: item.pair.right.content });
|
|
1147
|
+
}
|
|
1148
|
+
}
|
|
1149
|
+
}
|
|
1150
|
+
}
|
|
1151
|
+
const batchSize = 50;
|
|
1152
|
+
for (let i = 0; i < linesToHighlight.length; i += batchSize) {
|
|
1153
|
+
const batch = linesToHighlight.slice(i, i + batchSize);
|
|
1154
|
+
const results = await Promise.all(
|
|
1155
|
+
batch.map(async ({ key, content }) => {
|
|
1156
|
+
const result = await highlightLine(content, lang);
|
|
1157
|
+
return { key, result };
|
|
1158
|
+
})
|
|
1159
|
+
);
|
|
1160
|
+
for (const { key, result } of results) {
|
|
1161
|
+
newHighlighted.set(key, result);
|
|
1162
|
+
}
|
|
1163
|
+
}
|
|
1164
|
+
highlightedLines.value = newHighlighted;
|
|
1165
|
+
isLoading.value = false;
|
|
1166
|
+
},
|
|
1167
|
+
{ immediate: true }
|
|
1168
|
+
);
|
|
1169
|
+
function getHighlightedContent(pairId, side) {
|
|
1170
|
+
return highlightedLines.value.get(`${pairId}-${side}`) || "";
|
|
1171
|
+
}
|
|
1172
|
+
function getFullFileLineType(lineNum) {
|
|
1173
|
+
if (changedLines.value.added.has(lineNum)) return "add";
|
|
1174
|
+
return "context";
|
|
1175
|
+
}
|
|
1176
|
+
return (_ctx, _push, _parent, _attrs) => {
|
|
1177
|
+
_push(`<div${ssrRenderAttrs(mergeProps({ class: "diff-viewer" }, _attrs))} data-v-2678ccde>`);
|
|
1178
|
+
if ((unref(isLoading) || __props.isLoadingContent || unref(isLoadingFullFile)) && !__props.binary) {
|
|
1179
|
+
_push(`<div class="flex items-center justify-center py-8" data-v-2678ccde><div class="size-6 animate-spin rounded-full border-2 border-primary border-t-transparent" data-v-2678ccde></div></div>`);
|
|
1180
|
+
} else if (__props.binary) {
|
|
1181
|
+
_push(`<div class="flex flex-col items-center justify-center gap-3 py-12 text-muted-foreground" data-v-2678ccde>`);
|
|
1182
|
+
_push(ssrRenderComponent(unref(FileWarning), { class: "size-10 opacity-50" }, null, _parent));
|
|
1183
|
+
_push(`<div class="text-center" data-v-2678ccde><p class="font-medium" data-v-2678ccde>Binary file</p><p class="text-sm" data-v-2678ccde>This file cannot be displayed as a diff</p></div></div>`);
|
|
1184
|
+
} else if (unref(isEmpty) && !__props.showFullFile) {
|
|
1185
|
+
_push(`<div class="flex flex-col items-center justify-center gap-3 py-12 text-muted-foreground" data-v-2678ccde>`);
|
|
1186
|
+
_push(ssrRenderComponent(unref(AlertTriangle), { class: "size-10 opacity-50" }, null, _parent));
|
|
1187
|
+
_push(`<div class="text-center" data-v-2678ccde><p class="font-medium" data-v-2678ccde>No changes</p><p class="text-sm" data-v-2678ccde>This file was touched but has no content changes</p></div></div>`);
|
|
1188
|
+
} else if (unref(isLargeFile) && !unref(showAll) && !__props.showFullFile) {
|
|
1189
|
+
_push(`<div class="diff-container" data-v-2678ccde><div class="flex flex-col items-center justify-center gap-3 border-b border-border bg-muted/30 py-6" data-v-2678ccde>`);
|
|
1190
|
+
_push(ssrRenderComponent(unref(AlertTriangle), { class: "size-8 text-yellow-500" }, null, _parent));
|
|
1191
|
+
_push(`<div class="text-center" data-v-2678ccde><p class="font-medium" data-v-2678ccde>Large file</p><p class="text-sm text-muted-foreground" data-v-2678ccde> This file has ${ssrInterpolate(unref(totalLines).toLocaleString())} lines (threshold: ${ssrInterpolate(LINE_LIMIT.toLocaleString())}) </p></div>`);
|
|
1192
|
+
_push(ssrRenderComponent(unref(Button), {
|
|
1193
|
+
variant: "outline",
|
|
1194
|
+
size: "sm",
|
|
1195
|
+
onClick: ($event) => showAll.value = true
|
|
1196
|
+
}, {
|
|
1197
|
+
default: withCtx((_, _push2, _parent2, _scopeId) => {
|
|
1198
|
+
if (_push2) {
|
|
1199
|
+
_push2(ssrRenderComponent(unref(ChevronDown), { class: "mr-2 size-4" }, null, _parent2, _scopeId));
|
|
1200
|
+
_push2(` Show full diff `);
|
|
1201
|
+
} else {
|
|
1202
|
+
return [
|
|
1203
|
+
createVNode(unref(ChevronDown), { class: "mr-2 size-4" }),
|
|
1204
|
+
createTextVNode(" Show full diff ")
|
|
1205
|
+
];
|
|
1206
|
+
}
|
|
1207
|
+
}),
|
|
1208
|
+
_: 1
|
|
1209
|
+
}, _parent));
|
|
1210
|
+
_push(`</div></div>`);
|
|
1211
|
+
} else if (__props.showFullFile && __props.fileContent) {
|
|
1212
|
+
_push(`<div class="diff-container" data-v-2678ccde><div class="full-file-view" data-v-2678ccde><!--[-->`);
|
|
1213
|
+
ssrRenderList(unref(fullFileLines), (line, index) => {
|
|
1214
|
+
_push(`<div class="${ssrRenderClass([{
|
|
1215
|
+
"diff-add": getFullFileLineType(index + 1) === "add"
|
|
1216
|
+
}, "full-file-line"])}" data-v-2678ccde><div class="diff-gutter" data-v-2678ccde><span class="line-number" data-v-2678ccde>${ssrInterpolate(index + 1)}</span></div><div class="diff-content" data-v-2678ccde><span class="diff-code" data-v-2678ccde>${(unref(highlightedFullFile)[index] || escapeHtml(line)) ?? ""}</span></div></div>`);
|
|
1217
|
+
});
|
|
1218
|
+
_push(`<!--]--></div></div>`);
|
|
1219
|
+
} else {
|
|
1220
|
+
_push(`<div class="diff-container" data-v-2678ccde><div class="diff-toolbar" data-v-2678ccde>`);
|
|
1221
|
+
_push(ssrRenderComponent(unref(Button), {
|
|
1222
|
+
variant: "ghost",
|
|
1223
|
+
size: "sm",
|
|
1224
|
+
class: ["h-7 gap-1.5 text-xs", { "text-primary": unref(syncScrollEnabled) }],
|
|
1225
|
+
onClick: ($event) => syncScrollEnabled.value = !unref(syncScrollEnabled)
|
|
1226
|
+
}, {
|
|
1227
|
+
default: withCtx((_, _push2, _parent2, _scopeId) => {
|
|
1228
|
+
if (_push2) {
|
|
1229
|
+
ssrRenderVNode(_push2, createVNode(resolveDynamicComponent(unref(syncScrollEnabled) ? unref(Link) : unref(Link2Off)), { class: "size-3.5" }, null), _parent2, _scopeId);
|
|
1230
|
+
_push2(` ${ssrInterpolate(unref(syncScrollEnabled) ? "Sync scroll" : "Scroll unlocked")}`);
|
|
1231
|
+
} else {
|
|
1232
|
+
return [
|
|
1233
|
+
(openBlock(), createBlock(resolveDynamicComponent(unref(syncScrollEnabled) ? unref(Link) : unref(Link2Off)), { class: "size-3.5" })),
|
|
1234
|
+
createTextVNode(" " + toDisplayString(unref(syncScrollEnabled) ? "Sync scroll" : "Scroll unlocked"), 1)
|
|
1235
|
+
];
|
|
1236
|
+
}
|
|
1237
|
+
}),
|
|
1238
|
+
_: 1
|
|
1239
|
+
}, _parent));
|
|
1240
|
+
_push(`</div><div class="diff-split" data-v-2678ccde><div class="diff-column diff-column-left" data-v-2678ccde><div class="diff-column-content" data-v-2678ccde><!--[-->`);
|
|
1241
|
+
ssrRenderList(unref(displayItems), (item) => {
|
|
1242
|
+
_push(`<!--[-->`);
|
|
1243
|
+
if (item.type === "separator") {
|
|
1244
|
+
_push(`<div class="diff-separator-half" data-v-2678ccde><div class="separator-line" data-v-2678ccde></div><span class="separator-text" data-v-2678ccde>···</span></div>`);
|
|
1245
|
+
} else if (item.pair) {
|
|
1246
|
+
_push(`<div class="${ssrRenderClass([{
|
|
1247
|
+
"diff-remove": item.pair.left.type === "remove",
|
|
1248
|
+
"diff-empty": item.pair.left.type === "empty",
|
|
1249
|
+
"diff-context": item.pair.left.type === "context"
|
|
1250
|
+
}, "diff-line"])}" data-v-2678ccde><div class="diff-gutter" data-v-2678ccde>`);
|
|
1251
|
+
if (item.pair.left.lineNum) {
|
|
1252
|
+
_push(`<span class="line-number" data-v-2678ccde>${ssrInterpolate(item.pair.left.lineNum)}</span>`);
|
|
1253
|
+
} else {
|
|
1254
|
+
_push(`<!---->`);
|
|
1255
|
+
}
|
|
1256
|
+
_push(`</div><div class="diff-content" data-v-2678ccde>`);
|
|
1257
|
+
if (item.pair.left.type !== "empty") {
|
|
1258
|
+
_push(`<span class="diff-code" data-v-2678ccde>${(getHighlightedContent(item.pair.id, "old") || escapeHtml(item.pair.left.content)) ?? ""}</span>`);
|
|
1259
|
+
} else {
|
|
1260
|
+
_push(`<!---->`);
|
|
1261
|
+
}
|
|
1262
|
+
_push(`</div></div>`);
|
|
1263
|
+
} else {
|
|
1264
|
+
_push(`<!---->`);
|
|
1265
|
+
}
|
|
1266
|
+
_push(`<!--]-->`);
|
|
1267
|
+
});
|
|
1268
|
+
_push(`<!--]--></div></div><div class="diff-column diff-column-right" data-v-2678ccde><div class="diff-column-content" data-v-2678ccde><!--[-->`);
|
|
1269
|
+
ssrRenderList(unref(displayItems), (item) => {
|
|
1270
|
+
_push(`<!--[-->`);
|
|
1271
|
+
if (item.type === "separator") {
|
|
1272
|
+
_push(`<div class="diff-separator-half" data-v-2678ccde><span class="separator-text" data-v-2678ccde>···</span><div class="separator-line" data-v-2678ccde></div></div>`);
|
|
1273
|
+
} else if (item.pair) {
|
|
1274
|
+
_push(`<div class="${ssrRenderClass([{
|
|
1275
|
+
"diff-add": item.pair.right.type === "add",
|
|
1276
|
+
"diff-empty": item.pair.right.type === "empty",
|
|
1277
|
+
"diff-context": item.pair.right.type === "context"
|
|
1278
|
+
}, "diff-line"])}" data-v-2678ccde><div class="diff-gutter" data-v-2678ccde>`);
|
|
1279
|
+
if (item.pair.right.lineNum) {
|
|
1280
|
+
_push(`<span class="line-number" data-v-2678ccde>${ssrInterpolate(item.pair.right.lineNum)}</span>`);
|
|
1281
|
+
} else {
|
|
1282
|
+
_push(`<!---->`);
|
|
1283
|
+
}
|
|
1284
|
+
_push(`</div><div class="diff-content" data-v-2678ccde>`);
|
|
1285
|
+
if (item.pair.right.type !== "empty") {
|
|
1286
|
+
_push(`<span class="diff-code" data-v-2678ccde>${(getHighlightedContent(item.pair.id, "new") || escapeHtml(item.pair.right.content)) ?? ""}</span>`);
|
|
1287
|
+
} else {
|
|
1288
|
+
_push(`<!---->`);
|
|
1289
|
+
}
|
|
1290
|
+
_push(`</div></div>`);
|
|
1291
|
+
} else {
|
|
1292
|
+
_push(`<!---->`);
|
|
1293
|
+
}
|
|
1294
|
+
_push(`<!--]-->`);
|
|
1295
|
+
});
|
|
1296
|
+
_push(`<!--]--></div></div></div></div>`);
|
|
1297
|
+
}
|
|
1298
|
+
_push(`</div>`);
|
|
1299
|
+
};
|
|
1300
|
+
}
|
|
1301
|
+
});
|
|
1302
|
+
const _sfc_setup$o = _sfc_main$o.setup;
|
|
1303
|
+
_sfc_main$o.setup = (props, ctx) => {
|
|
1304
|
+
const ssrContext = useSSRContext();
|
|
1305
|
+
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/git/DiffViewer.vue");
|
|
1306
|
+
return _sfc_setup$o ? _sfc_setup$o(props, ctx) : void 0;
|
|
1307
|
+
};
|
|
1308
|
+
const __nuxt_component_1$1 = /* @__PURE__ */ Object.assign(_export_sfc(_sfc_main$o, [["__scopeId", "data-v-2678ccde"]]), { __name: "GitDiffViewer" });
|
|
1309
|
+
const _sfc_main$n = /* @__PURE__ */ defineComponent({
|
|
1310
|
+
__name: "ScrollBar",
|
|
1311
|
+
__ssrInlineRender: true,
|
|
1312
|
+
props: {
|
|
1313
|
+
orientation: { default: "vertical" },
|
|
1314
|
+
forceMount: { type: Boolean },
|
|
1315
|
+
asChild: { type: Boolean },
|
|
1316
|
+
as: {},
|
|
1317
|
+
class: {}
|
|
1318
|
+
},
|
|
1319
|
+
setup(__props) {
|
|
1320
|
+
const props = __props;
|
|
1321
|
+
const delegatedProps = reactiveOmit(props, "class");
|
|
1322
|
+
return (_ctx, _push, _parent, _attrs) => {
|
|
1323
|
+
_push(ssrRenderComponent(unref(ScrollAreaScrollbar), mergeProps({ "data-slot": "scroll-area-scrollbar" }, unref(delegatedProps), {
|
|
1324
|
+
class: unref(cn)(
|
|
1325
|
+
"flex touch-none p-px transition-colors select-none",
|
|
1326
|
+
__props.orientation === "vertical" && "h-full w-2.5 border-l border-l-transparent",
|
|
1327
|
+
__props.orientation === "horizontal" && "h-2.5 flex-col border-t border-t-transparent",
|
|
1328
|
+
props.class
|
|
1329
|
+
)
|
|
1330
|
+
}, _attrs), {
|
|
1331
|
+
default: withCtx((_, _push2, _parent2, _scopeId) => {
|
|
1332
|
+
if (_push2) {
|
|
1333
|
+
_push2(ssrRenderComponent(unref(ScrollAreaThumb), {
|
|
1334
|
+
"data-slot": "scroll-area-thumb",
|
|
1335
|
+
class: "bg-border relative flex-1 rounded-full"
|
|
1336
|
+
}, null, _parent2, _scopeId));
|
|
1337
|
+
} else {
|
|
1338
|
+
return [
|
|
1339
|
+
createVNode(unref(ScrollAreaThumb), {
|
|
1340
|
+
"data-slot": "scroll-area-thumb",
|
|
1341
|
+
class: "bg-border relative flex-1 rounded-full"
|
|
1342
|
+
})
|
|
1343
|
+
];
|
|
1344
|
+
}
|
|
1345
|
+
}),
|
|
1346
|
+
_: 1
|
|
1347
|
+
}, _parent));
|
|
1348
|
+
};
|
|
1349
|
+
}
|
|
1350
|
+
});
|
|
1351
|
+
const _sfc_setup$n = _sfc_main$n.setup;
|
|
1352
|
+
_sfc_main$n.setup = (props, ctx) => {
|
|
1353
|
+
const ssrContext = useSSRContext();
|
|
1354
|
+
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/ui/scroll-area/ScrollBar.vue");
|
|
1355
|
+
return _sfc_setup$n ? _sfc_setup$n(props, ctx) : void 0;
|
|
1356
|
+
};
|
|
1357
|
+
const ScrollBar = Object.assign(_sfc_main$n, { __name: "UiScrollAreaScrollBar" });
|
|
1358
|
+
const _sfc_main$m = /* @__PURE__ */ defineComponent({
|
|
1359
|
+
__name: "ScrollArea",
|
|
1360
|
+
__ssrInlineRender: true,
|
|
1361
|
+
props: {
|
|
1362
|
+
type: {},
|
|
1363
|
+
dir: {},
|
|
1364
|
+
scrollHideDelay: {},
|
|
1365
|
+
asChild: { type: Boolean },
|
|
1366
|
+
as: {},
|
|
1367
|
+
class: {}
|
|
1368
|
+
},
|
|
1369
|
+
setup(__props) {
|
|
1370
|
+
const props = __props;
|
|
1371
|
+
const delegatedProps = reactiveOmit(props, "class");
|
|
1372
|
+
return (_ctx, _push, _parent, _attrs) => {
|
|
1373
|
+
_push(ssrRenderComponent(unref(ScrollAreaRoot), mergeProps({ "data-slot": "scroll-area" }, unref(delegatedProps), {
|
|
1374
|
+
class: unref(cn)("relative", props.class)
|
|
1375
|
+
}, _attrs), {
|
|
1376
|
+
default: withCtx((_, _push2, _parent2, _scopeId) => {
|
|
1377
|
+
if (_push2) {
|
|
1378
|
+
_push2(ssrRenderComponent(unref(ScrollAreaViewport), {
|
|
1379
|
+
"data-slot": "scroll-area-viewport",
|
|
1380
|
+
class: "focus-visible:ring-ring/50 size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:outline-1"
|
|
1381
|
+
}, {
|
|
1382
|
+
default: withCtx((_2, _push3, _parent3, _scopeId2) => {
|
|
1383
|
+
if (_push3) {
|
|
1384
|
+
ssrRenderSlot(_ctx.$slots, "default", {}, null, _push3, _parent3, _scopeId2);
|
|
1385
|
+
} else {
|
|
1386
|
+
return [
|
|
1387
|
+
renderSlot(_ctx.$slots, "default")
|
|
1388
|
+
];
|
|
1389
|
+
}
|
|
1390
|
+
}),
|
|
1391
|
+
_: 3
|
|
1392
|
+
}, _parent2, _scopeId));
|
|
1393
|
+
_push2(ssrRenderComponent(ScrollBar, null, null, _parent2, _scopeId));
|
|
1394
|
+
_push2(ssrRenderComponent(unref(ScrollAreaCorner), null, null, _parent2, _scopeId));
|
|
1395
|
+
} else {
|
|
1396
|
+
return [
|
|
1397
|
+
createVNode(unref(ScrollAreaViewport), {
|
|
1398
|
+
"data-slot": "scroll-area-viewport",
|
|
1399
|
+
class: "focus-visible:ring-ring/50 size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:outline-1"
|
|
1400
|
+
}, {
|
|
1401
|
+
default: withCtx(() => [
|
|
1402
|
+
renderSlot(_ctx.$slots, "default")
|
|
1403
|
+
]),
|
|
1404
|
+
_: 3
|
|
1405
|
+
}),
|
|
1406
|
+
createVNode(ScrollBar),
|
|
1407
|
+
createVNode(unref(ScrollAreaCorner))
|
|
1408
|
+
];
|
|
1409
|
+
}
|
|
1410
|
+
}),
|
|
1411
|
+
_: 3
|
|
1412
|
+
}, _parent));
|
|
1413
|
+
};
|
|
1414
|
+
}
|
|
1415
|
+
});
|
|
1416
|
+
const _sfc_setup$m = _sfc_main$m.setup;
|
|
1417
|
+
_sfc_main$m.setup = (props, ctx) => {
|
|
1418
|
+
const ssrContext = useSSRContext();
|
|
1419
|
+
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/ui/scroll-area/ScrollArea.vue");
|
|
1420
|
+
return _sfc_setup$m ? _sfc_setup$m(props, ctx) : void 0;
|
|
1421
|
+
};
|
|
1422
|
+
const ScrollArea = Object.assign(_sfc_main$m, { __name: "UiScrollArea" });
|
|
1423
|
+
const _sfc_main$l = /* @__PURE__ */ defineComponent({
|
|
1424
|
+
__name: "Tooltip",
|
|
1425
|
+
__ssrInlineRender: true,
|
|
1426
|
+
props: {
|
|
1427
|
+
defaultOpen: { type: Boolean },
|
|
1428
|
+
open: { type: Boolean },
|
|
1429
|
+
delayDuration: {},
|
|
1430
|
+
disableHoverableContent: { type: Boolean },
|
|
1431
|
+
disableClosingTrigger: { type: Boolean },
|
|
1432
|
+
disabled: { type: Boolean },
|
|
1433
|
+
ignoreNonKeyboardFocus: { type: Boolean }
|
|
1434
|
+
},
|
|
1435
|
+
emits: ["update:open"],
|
|
1436
|
+
setup(__props, { emit: __emit }) {
|
|
1437
|
+
const props = __props;
|
|
1438
|
+
const emits = __emit;
|
|
1439
|
+
const forwarded = useForwardPropsEmits(props, emits);
|
|
1440
|
+
return (_ctx, _push, _parent, _attrs) => {
|
|
1441
|
+
_push(ssrRenderComponent(unref(TooltipRoot), mergeProps({ "data-slot": "tooltip" }, unref(forwarded), _attrs), {
|
|
1442
|
+
default: withCtx((slotProps, _push2, _parent2, _scopeId) => {
|
|
1443
|
+
if (_push2) {
|
|
1444
|
+
ssrRenderSlot(_ctx.$slots, "default", slotProps, null, _push2, _parent2, _scopeId);
|
|
1445
|
+
} else {
|
|
1446
|
+
return [
|
|
1447
|
+
renderSlot(_ctx.$slots, "default", slotProps)
|
|
1448
|
+
];
|
|
1449
|
+
}
|
|
1450
|
+
}),
|
|
1451
|
+
_: 3
|
|
1452
|
+
}, _parent));
|
|
1453
|
+
};
|
|
1454
|
+
}
|
|
1455
|
+
});
|
|
1456
|
+
const _sfc_setup$l = _sfc_main$l.setup;
|
|
1457
|
+
_sfc_main$l.setup = (props, ctx) => {
|
|
1458
|
+
const ssrContext = useSSRContext();
|
|
1459
|
+
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/ui/tooltip/Tooltip.vue");
|
|
1460
|
+
return _sfc_setup$l ? _sfc_setup$l(props, ctx) : void 0;
|
|
1461
|
+
};
|
|
1462
|
+
const Tooltip = Object.assign(_sfc_main$l, { __name: "UiTooltip" });
|
|
1463
|
+
const _sfc_main$k = /* @__PURE__ */ defineComponent({
|
|
1464
|
+
...{
|
|
1465
|
+
inheritAttrs: false
|
|
1466
|
+
},
|
|
1467
|
+
__name: "TooltipContent",
|
|
1468
|
+
__ssrInlineRender: true,
|
|
1469
|
+
props: {
|
|
1470
|
+
forceMount: { type: Boolean },
|
|
1471
|
+
ariaLabel: {},
|
|
1472
|
+
asChild: { type: Boolean },
|
|
1473
|
+
as: {},
|
|
1474
|
+
side: {},
|
|
1475
|
+
sideOffset: { default: 4 },
|
|
1476
|
+
align: {},
|
|
1477
|
+
alignOffset: {},
|
|
1478
|
+
avoidCollisions: { type: Boolean },
|
|
1479
|
+
collisionBoundary: {},
|
|
1480
|
+
collisionPadding: {},
|
|
1481
|
+
arrowPadding: {},
|
|
1482
|
+
sticky: {},
|
|
1483
|
+
hideWhenDetached: { type: Boolean },
|
|
1484
|
+
positionStrategy: {},
|
|
1485
|
+
updatePositionStrategy: {},
|
|
1486
|
+
class: {}
|
|
1487
|
+
},
|
|
1488
|
+
emits: ["escapeKeyDown", "pointerDownOutside"],
|
|
1489
|
+
setup(__props, { emit: __emit }) {
|
|
1490
|
+
const props = __props;
|
|
1491
|
+
const emits = __emit;
|
|
1492
|
+
const delegatedProps = reactiveOmit(props, "class");
|
|
1493
|
+
const forwarded = useForwardPropsEmits(delegatedProps, emits);
|
|
1494
|
+
return (_ctx, _push, _parent, _attrs) => {
|
|
1495
|
+
_push(ssrRenderComponent(unref(TooltipPortal), _attrs, {
|
|
1496
|
+
default: withCtx((_, _push2, _parent2, _scopeId) => {
|
|
1497
|
+
if (_push2) {
|
|
1498
|
+
_push2(ssrRenderComponent(unref(TooltipContent$1), mergeProps({ "data-slot": "tooltip-content" }, { ...unref(forwarded), ..._ctx.$attrs }, {
|
|
1499
|
+
class: unref(cn)("bg-foreground text-background animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-fit rounded-md px-3 py-1.5 text-xs text-balance", props.class)
|
|
1500
|
+
}), {
|
|
1501
|
+
default: withCtx((_2, _push3, _parent3, _scopeId2) => {
|
|
1502
|
+
if (_push3) {
|
|
1503
|
+
ssrRenderSlot(_ctx.$slots, "default", {}, null, _push3, _parent3, _scopeId2);
|
|
1504
|
+
_push3(ssrRenderComponent(unref(TooltipArrow), { class: "bg-foreground fill-foreground z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px]" }, null, _parent3, _scopeId2));
|
|
1505
|
+
} else {
|
|
1506
|
+
return [
|
|
1507
|
+
renderSlot(_ctx.$slots, "default"),
|
|
1508
|
+
createVNode(unref(TooltipArrow), { class: "bg-foreground fill-foreground z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px]" })
|
|
1509
|
+
];
|
|
1510
|
+
}
|
|
1511
|
+
}),
|
|
1512
|
+
_: 3
|
|
1513
|
+
}, _parent2, _scopeId));
|
|
1514
|
+
} else {
|
|
1515
|
+
return [
|
|
1516
|
+
createVNode(unref(TooltipContent$1), mergeProps({ "data-slot": "tooltip-content" }, { ...unref(forwarded), ..._ctx.$attrs }, {
|
|
1517
|
+
class: unref(cn)("bg-foreground text-background animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-fit rounded-md px-3 py-1.5 text-xs text-balance", props.class)
|
|
1518
|
+
}), {
|
|
1519
|
+
default: withCtx(() => [
|
|
1520
|
+
renderSlot(_ctx.$slots, "default"),
|
|
1521
|
+
createVNode(unref(TooltipArrow), { class: "bg-foreground fill-foreground z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px]" })
|
|
1522
|
+
]),
|
|
1523
|
+
_: 3
|
|
1524
|
+
}, 16, ["class"])
|
|
1525
|
+
];
|
|
1526
|
+
}
|
|
1527
|
+
}),
|
|
1528
|
+
_: 3
|
|
1529
|
+
}, _parent));
|
|
1530
|
+
};
|
|
1531
|
+
}
|
|
1532
|
+
});
|
|
1533
|
+
const _sfc_setup$k = _sfc_main$k.setup;
|
|
1534
|
+
_sfc_main$k.setup = (props, ctx) => {
|
|
1535
|
+
const ssrContext = useSSRContext();
|
|
1536
|
+
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/ui/tooltip/TooltipContent.vue");
|
|
1537
|
+
return _sfc_setup$k ? _sfc_setup$k(props, ctx) : void 0;
|
|
1538
|
+
};
|
|
1539
|
+
const TooltipContent = Object.assign(_sfc_main$k, { __name: "UiTooltipContent" });
|
|
1540
|
+
const _sfc_main$j = /* @__PURE__ */ defineComponent({
|
|
1541
|
+
__name: "TooltipProvider",
|
|
1542
|
+
__ssrInlineRender: true,
|
|
1543
|
+
props: {
|
|
1544
|
+
delayDuration: { default: 0 },
|
|
1545
|
+
skipDelayDuration: {},
|
|
1546
|
+
disableHoverableContent: { type: Boolean },
|
|
1547
|
+
disableClosingTrigger: { type: Boolean },
|
|
1548
|
+
disabled: { type: Boolean },
|
|
1549
|
+
ignoreNonKeyboardFocus: { type: Boolean }
|
|
1550
|
+
},
|
|
1551
|
+
setup(__props) {
|
|
1552
|
+
const props = __props;
|
|
1553
|
+
return (_ctx, _push, _parent, _attrs) => {
|
|
1554
|
+
_push(ssrRenderComponent(unref(TooltipProvider$1), mergeProps(props, _attrs), {
|
|
1555
|
+
default: withCtx((_, _push2, _parent2, _scopeId) => {
|
|
1556
|
+
if (_push2) {
|
|
1557
|
+
ssrRenderSlot(_ctx.$slots, "default", {}, null, _push2, _parent2, _scopeId);
|
|
1558
|
+
} else {
|
|
1559
|
+
return [
|
|
1560
|
+
renderSlot(_ctx.$slots, "default")
|
|
1561
|
+
];
|
|
1562
|
+
}
|
|
1563
|
+
}),
|
|
1564
|
+
_: 3
|
|
1565
|
+
}, _parent));
|
|
1566
|
+
};
|
|
1567
|
+
}
|
|
1568
|
+
});
|
|
1569
|
+
const _sfc_setup$j = _sfc_main$j.setup;
|
|
1570
|
+
_sfc_main$j.setup = (props, ctx) => {
|
|
1571
|
+
const ssrContext = useSSRContext();
|
|
1572
|
+
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/ui/tooltip/TooltipProvider.vue");
|
|
1573
|
+
return _sfc_setup$j ? _sfc_setup$j(props, ctx) : void 0;
|
|
1574
|
+
};
|
|
1575
|
+
const TooltipProvider = Object.assign(_sfc_main$j, { __name: "UiTooltipProvider" });
|
|
1576
|
+
const _sfc_main$i = /* @__PURE__ */ defineComponent({
|
|
1577
|
+
__name: "TooltipTrigger",
|
|
1578
|
+
__ssrInlineRender: true,
|
|
1579
|
+
props: {
|
|
1580
|
+
reference: {},
|
|
1581
|
+
asChild: { type: Boolean },
|
|
1582
|
+
as: {}
|
|
1583
|
+
},
|
|
1584
|
+
setup(__props) {
|
|
1585
|
+
const props = __props;
|
|
1586
|
+
return (_ctx, _push, _parent, _attrs) => {
|
|
1587
|
+
_push(ssrRenderComponent(unref(TooltipTrigger$1), mergeProps({ "data-slot": "tooltip-trigger" }, props, _attrs), {
|
|
1588
|
+
default: withCtx((_, _push2, _parent2, _scopeId) => {
|
|
1589
|
+
if (_push2) {
|
|
1590
|
+
ssrRenderSlot(_ctx.$slots, "default", {}, null, _push2, _parent2, _scopeId);
|
|
1591
|
+
} else {
|
|
1592
|
+
return [
|
|
1593
|
+
renderSlot(_ctx.$slots, "default")
|
|
1594
|
+
];
|
|
1595
|
+
}
|
|
1596
|
+
}),
|
|
1597
|
+
_: 3
|
|
1598
|
+
}, _parent));
|
|
1599
|
+
};
|
|
1600
|
+
}
|
|
1601
|
+
});
|
|
1602
|
+
const _sfc_setup$i = _sfc_main$i.setup;
|
|
1603
|
+
_sfc_main$i.setup = (props, ctx) => {
|
|
1604
|
+
const ssrContext = useSSRContext();
|
|
1605
|
+
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/ui/tooltip/TooltipTrigger.vue");
|
|
1606
|
+
return _sfc_setup$i ? _sfc_setup$i(props, ctx) : void 0;
|
|
1607
|
+
};
|
|
1608
|
+
const TooltipTrigger = Object.assign(_sfc_main$i, { __name: "UiTooltipTrigger" });
|
|
1609
|
+
function useGit() {
|
|
1610
|
+
const { showError } = useToast();
|
|
1611
|
+
function getErrorMessage(error) {
|
|
1612
|
+
if (error && typeof error === "object") {
|
|
1613
|
+
const fetchError = error;
|
|
1614
|
+
return fetchError.data?.message || fetchError.data?.statusMessage || fetchError.message || "Unknown error";
|
|
1615
|
+
}
|
|
1616
|
+
return "Unknown error";
|
|
1617
|
+
}
|
|
1618
|
+
const isLoadingCommits = ref(false);
|
|
1619
|
+
const isLoadingDiff = ref(false);
|
|
1620
|
+
const isLoadingFileDiff = ref(false);
|
|
1621
|
+
const isLoadingFileContent = ref(false);
|
|
1622
|
+
async function fetchCommits(repoId, shas, repoPath) {
|
|
1623
|
+
if (!repoId || shas.length === 0) {
|
|
1624
|
+
return { commits: [], failedShas: [] };
|
|
1625
|
+
}
|
|
1626
|
+
isLoadingCommits.value = true;
|
|
1627
|
+
try {
|
|
1628
|
+
const query = { shas: shas.join(",") };
|
|
1629
|
+
if (repoPath) {
|
|
1630
|
+
query.repo = repoPath;
|
|
1631
|
+
}
|
|
1632
|
+
const commits = await $fetch(
|
|
1633
|
+
`/api/repos/${repoId}/git/commits`,
|
|
1634
|
+
{ query }
|
|
1635
|
+
);
|
|
1636
|
+
const returnedShortShas = commits.map((c) => c.shortSha);
|
|
1637
|
+
const failedShas = shas.filter((sha) => {
|
|
1638
|
+
return !returnedShortShas.some((shortSha) => shortSha.startsWith(sha) || sha.startsWith(shortSha));
|
|
1639
|
+
});
|
|
1640
|
+
return { commits, failedShas };
|
|
1641
|
+
} catch (error) {
|
|
1642
|
+
showError("Failed to fetch commits", getErrorMessage(error));
|
|
1643
|
+
return { commits: [], failedShas: shas };
|
|
1644
|
+
} finally {
|
|
1645
|
+
isLoadingCommits.value = false;
|
|
1646
|
+
}
|
|
1647
|
+
}
|
|
1648
|
+
async function fetchDiff(repoId, commitSha, repoPath) {
|
|
1649
|
+
if (!repoId || !commitSha) {
|
|
1650
|
+
return [];
|
|
1651
|
+
}
|
|
1652
|
+
isLoadingDiff.value = true;
|
|
1653
|
+
try {
|
|
1654
|
+
const query = { commit: commitSha };
|
|
1655
|
+
if (repoPath) {
|
|
1656
|
+
query.repo = repoPath;
|
|
1657
|
+
}
|
|
1658
|
+
const files = await $fetch(
|
|
1659
|
+
`/api/repos/${repoId}/git/diff`,
|
|
1660
|
+
{ query }
|
|
1661
|
+
);
|
|
1662
|
+
return files;
|
|
1663
|
+
} catch (error) {
|
|
1664
|
+
showError("Failed to fetch diff", getErrorMessage(error));
|
|
1665
|
+
return [];
|
|
1666
|
+
} finally {
|
|
1667
|
+
isLoadingDiff.value = false;
|
|
1668
|
+
}
|
|
1669
|
+
}
|
|
1670
|
+
async function fetchFileDiff(repoId, commitSha, filePath, repoPath) {
|
|
1671
|
+
if (!repoId || !commitSha || !filePath) {
|
|
1672
|
+
return [];
|
|
1673
|
+
}
|
|
1674
|
+
isLoadingFileDiff.value = true;
|
|
1675
|
+
try {
|
|
1676
|
+
const query = { commit: commitSha, file: filePath };
|
|
1677
|
+
if (repoPath) {
|
|
1678
|
+
query.repo = repoPath;
|
|
1679
|
+
}
|
|
1680
|
+
const hunks = await $fetch(
|
|
1681
|
+
`/api/repos/${repoId}/git/file-diff`,
|
|
1682
|
+
{ query }
|
|
1683
|
+
);
|
|
1684
|
+
return hunks;
|
|
1685
|
+
} catch (error) {
|
|
1686
|
+
showError("Failed to fetch file diff", getErrorMessage(error));
|
|
1687
|
+
return [];
|
|
1688
|
+
} finally {
|
|
1689
|
+
isLoadingFileDiff.value = false;
|
|
1690
|
+
}
|
|
1691
|
+
}
|
|
1692
|
+
async function fetchFileContent(repoId, commitSha, filePath, repoPath) {
|
|
1693
|
+
if (!repoId || !commitSha || !filePath) {
|
|
1694
|
+
return null;
|
|
1695
|
+
}
|
|
1696
|
+
isLoadingFileContent.value = true;
|
|
1697
|
+
try {
|
|
1698
|
+
const query = { commit: commitSha, file: filePath };
|
|
1699
|
+
if (repoPath) {
|
|
1700
|
+
query.repo = repoPath;
|
|
1701
|
+
}
|
|
1702
|
+
const result = await $fetch(
|
|
1703
|
+
`/api/repos/${repoId}/git/file-content`,
|
|
1704
|
+
{ query }
|
|
1705
|
+
);
|
|
1706
|
+
return result.content;
|
|
1707
|
+
} catch (error) {
|
|
1708
|
+
showError("Failed to fetch file content", getErrorMessage(error));
|
|
1709
|
+
return null;
|
|
1710
|
+
} finally {
|
|
1711
|
+
isLoadingFileContent.value = false;
|
|
1712
|
+
}
|
|
1713
|
+
}
|
|
1714
|
+
return {
|
|
1715
|
+
// Functions
|
|
1716
|
+
fetchCommits,
|
|
1717
|
+
fetchDiff,
|
|
1718
|
+
fetchFileDiff,
|
|
1719
|
+
fetchFileContent,
|
|
1720
|
+
// Loading states
|
|
1721
|
+
isLoadingCommits: readonly(isLoadingCommits),
|
|
1722
|
+
isLoadingDiff: readonly(isLoadingDiff),
|
|
1723
|
+
isLoadingFileDiff: readonly(isLoadingFileDiff),
|
|
1724
|
+
isLoadingFileContent: readonly(isLoadingFileContent)
|
|
1725
|
+
};
|
|
1726
|
+
}
|
|
1727
|
+
const _sfc_main$h = /* @__PURE__ */ defineComponent({
|
|
1728
|
+
__name: "DiffPanel",
|
|
1729
|
+
__ssrInlineRender: true,
|
|
1730
|
+
props: {
|
|
1731
|
+
repoId: {},
|
|
1732
|
+
commitSha: {},
|
|
1733
|
+
repoPath: {}
|
|
1734
|
+
},
|
|
1735
|
+
emits: ["close"],
|
|
1736
|
+
setup(__props, { emit: __emit }) {
|
|
1737
|
+
const props = __props;
|
|
1738
|
+
const { fetchDiff, fetchFileDiff, fetchFileContent, isLoadingDiff, isLoadingFileDiff, isLoadingFileContent } = useGit();
|
|
1739
|
+
const files = ref([]);
|
|
1740
|
+
const selectedFile = ref();
|
|
1741
|
+
const hunks = ref([]);
|
|
1742
|
+
const fileContent = ref(null);
|
|
1743
|
+
const error = ref(null);
|
|
1744
|
+
const fileDiffError = ref(null);
|
|
1745
|
+
const viewMode = ref("changes");
|
|
1746
|
+
const selectedFileDiff = computed(() => files.value.find((f) => f.path === selectedFile.value));
|
|
1747
|
+
async function loadDiff() {
|
|
1748
|
+
error.value = null;
|
|
1749
|
+
files.value = [];
|
|
1750
|
+
selectedFile.value = void 0;
|
|
1751
|
+
hunks.value = [];
|
|
1752
|
+
const result = await fetchDiff(props.repoId, props.commitSha, props.repoPath);
|
|
1753
|
+
if (result.length === 0 && !isLoadingDiff.value) {
|
|
1754
|
+
error.value = null;
|
|
1755
|
+
}
|
|
1756
|
+
files.value = result;
|
|
1757
|
+
if (result.length > 0) {
|
|
1758
|
+
selectedFile.value = result[0].path;
|
|
1759
|
+
}
|
|
1760
|
+
}
|
|
1761
|
+
async function loadFileDiff() {
|
|
1762
|
+
if (!selectedFile.value) {
|
|
1763
|
+
hunks.value = [];
|
|
1764
|
+
fileContent.value = null;
|
|
1765
|
+
return;
|
|
1766
|
+
}
|
|
1767
|
+
fileDiffError.value = null;
|
|
1768
|
+
const result = await fetchFileDiff(props.repoId, props.commitSha, selectedFile.value, props.repoPath);
|
|
1769
|
+
hunks.value = result;
|
|
1770
|
+
if (viewMode.value === "full") {
|
|
1771
|
+
const content = await fetchFileContent(props.repoId, props.commitSha, selectedFile.value, props.repoPath);
|
|
1772
|
+
fileContent.value = content;
|
|
1773
|
+
}
|
|
1774
|
+
}
|
|
1775
|
+
function toggleViewMode() {
|
|
1776
|
+
viewMode.value = viewMode.value === "changes" ? "full" : "changes";
|
|
1777
|
+
}
|
|
1778
|
+
watch(viewMode, async (mode) => {
|
|
1779
|
+
if (mode === "full" && selectedFile.value && !fileContent.value) {
|
|
1780
|
+
const content = await fetchFileContent(props.repoId, props.commitSha, selectedFile.value, props.repoPath);
|
|
1781
|
+
fileContent.value = content;
|
|
1782
|
+
}
|
|
1783
|
+
});
|
|
1784
|
+
function handleFileSelect(path) {
|
|
1785
|
+
selectedFile.value = path;
|
|
1786
|
+
}
|
|
1787
|
+
function retry() {
|
|
1788
|
+
loadDiff();
|
|
1789
|
+
}
|
|
1790
|
+
function retryFileDiff() {
|
|
1791
|
+
loadFileDiff();
|
|
1792
|
+
}
|
|
1793
|
+
watch(selectedFile, () => {
|
|
1794
|
+
loadFileDiff();
|
|
1795
|
+
});
|
|
1796
|
+
watch(
|
|
1797
|
+
() => [props.repoId, props.commitSha, props.repoPath],
|
|
1798
|
+
() => {
|
|
1799
|
+
loadDiff();
|
|
1800
|
+
},
|
|
1801
|
+
{ immediate: true }
|
|
1802
|
+
);
|
|
1803
|
+
const panelRef = ref(null);
|
|
1804
|
+
const diffViewerRef = ref(null);
|
|
1805
|
+
return (_ctx, _push, _parent, _attrs) => {
|
|
1806
|
+
const _component_GitChangesMinimap = __nuxt_component_0$1;
|
|
1807
|
+
const _component_GitDiffViewer = __nuxt_component_1$1;
|
|
1808
|
+
_push(`<div${ssrRenderAttrs(mergeProps({
|
|
1809
|
+
ref_key: "panelRef",
|
|
1810
|
+
ref: panelRef,
|
|
1811
|
+
class: "flex h-full flex-col overflow-hidden",
|
|
1812
|
+
tabindex: "-1"
|
|
1813
|
+
}, _attrs))}>`);
|
|
1814
|
+
if (unref(error)) {
|
|
1815
|
+
_push(`<div class="flex flex-1 flex-col items-center justify-center gap-4 p-8">`);
|
|
1816
|
+
_push(ssrRenderComponent(unref(AlertCircle), { class: "size-12 text-destructive" }, null, _parent));
|
|
1817
|
+
_push(`<div class="text-center"><p class="font-medium">Failed to load diff</p><p class="text-sm text-muted-foreground">${ssrInterpolate(unref(error))}</p></div>`);
|
|
1818
|
+
_push(ssrRenderComponent(unref(Button), {
|
|
1819
|
+
variant: "outline",
|
|
1820
|
+
size: "sm",
|
|
1821
|
+
onClick: retry
|
|
1822
|
+
}, {
|
|
1823
|
+
default: withCtx((_, _push2, _parent2, _scopeId) => {
|
|
1824
|
+
if (_push2) {
|
|
1825
|
+
_push2(ssrRenderComponent(unref(RefreshCw), { class: "mr-2 size-4" }, null, _parent2, _scopeId));
|
|
1826
|
+
_push2(` Retry `);
|
|
1827
|
+
} else {
|
|
1828
|
+
return [
|
|
1829
|
+
createVNode(unref(RefreshCw), { class: "mr-2 size-4" }),
|
|
1830
|
+
createTextVNode(" Retry ")
|
|
1831
|
+
];
|
|
1832
|
+
}
|
|
1833
|
+
}),
|
|
1834
|
+
_: 1
|
|
1835
|
+
}, _parent));
|
|
1836
|
+
_push(`</div>`);
|
|
1837
|
+
} else if (unref(isLoadingDiff) && unref(files).length === 0) {
|
|
1838
|
+
_push(`<div class="flex flex-1 items-center justify-center">`);
|
|
1839
|
+
_push(ssrRenderComponent(unref(Loader2), { class: "size-8 animate-spin text-muted-foreground" }, null, _parent));
|
|
1840
|
+
_push(`</div>`);
|
|
1841
|
+
} else if (unref(files).length === 0) {
|
|
1842
|
+
_push(`<div class="flex flex-1 flex-col items-center justify-center gap-2 p-8 text-center text-muted-foreground"><p>No files changed in this commit</p></div>`);
|
|
1843
|
+
} else {
|
|
1844
|
+
_push(`<div class="flex min-h-0 flex-1 overflow-hidden"><div class="flex w-56 shrink-0 flex-col border-r border-border"><div class="flex items-center justify-between border-b border-border px-3 py-2"><span class="text-xs font-medium text-muted-foreground">${ssrInterpolate(unref(files).length)} file${ssrInterpolate(unref(files).length !== 1 ? "s" : "")} changed </span>`);
|
|
1845
|
+
_push(ssrRenderComponent(unref(TooltipProvider), null, {
|
|
1846
|
+
default: withCtx((_, _push2, _parent2, _scopeId) => {
|
|
1847
|
+
if (_push2) {
|
|
1848
|
+
_push2(ssrRenderComponent(unref(Tooltip), null, {
|
|
1849
|
+
default: withCtx((_2, _push3, _parent3, _scopeId2) => {
|
|
1850
|
+
if (_push3) {
|
|
1851
|
+
_push3(ssrRenderComponent(unref(TooltipTrigger), { "as-child": "" }, {
|
|
1852
|
+
default: withCtx((_3, _push4, _parent4, _scopeId3) => {
|
|
1853
|
+
if (_push4) {
|
|
1854
|
+
_push4(`<button class="text-muted-foreground/50 transition-colors hover:text-muted-foreground"${_scopeId3}>`);
|
|
1855
|
+
_push4(ssrRenderComponent(unref(Keyboard), { class: "size-3.5" }, null, _parent4, _scopeId3));
|
|
1856
|
+
_push4(`</button>`);
|
|
1857
|
+
} else {
|
|
1858
|
+
return [
|
|
1859
|
+
createVNode("button", { class: "text-muted-foreground/50 transition-colors hover:text-muted-foreground" }, [
|
|
1860
|
+
createVNode(unref(Keyboard), { class: "size-3.5" })
|
|
1861
|
+
])
|
|
1862
|
+
];
|
|
1863
|
+
}
|
|
1864
|
+
}),
|
|
1865
|
+
_: 1
|
|
1866
|
+
}, _parent3, _scopeId2));
|
|
1867
|
+
_push3(ssrRenderComponent(unref(TooltipContent), {
|
|
1868
|
+
side: "bottom",
|
|
1869
|
+
align: "end",
|
|
1870
|
+
class: "max-w-xs"
|
|
1871
|
+
}, {
|
|
1872
|
+
default: withCtx((_3, _push4, _parent4, _scopeId3) => {
|
|
1873
|
+
if (_push4) {
|
|
1874
|
+
_push4(`<div class="space-y-1 text-xs"${_scopeId3}><div class="flex justify-between gap-4"${_scopeId3}><span class="text-muted-foreground"${_scopeId3}>Navigate files</span><span class="font-mono"${_scopeId3}>j/k or ↑/↓</span></div><div class="flex justify-between gap-4"${_scopeId3}><span class="text-muted-foreground"${_scopeId3}>Jump to hunk</span><span class="font-mono"${_scopeId3}>[ / ]</span></div><div class="flex justify-between gap-4"${_scopeId3}><span class="text-muted-foreground"${_scopeId3}>Close</span><span class="font-mono"${_scopeId3}>Esc</span></div></div>`);
|
|
1875
|
+
} else {
|
|
1876
|
+
return [
|
|
1877
|
+
createVNode("div", { class: "space-y-1 text-xs" }, [
|
|
1878
|
+
createVNode("div", { class: "flex justify-between gap-4" }, [
|
|
1879
|
+
createVNode("span", { class: "text-muted-foreground" }, "Navigate files"),
|
|
1880
|
+
createVNode("span", { class: "font-mono" }, "j/k or ↑/↓")
|
|
1881
|
+
]),
|
|
1882
|
+
createVNode("div", { class: "flex justify-between gap-4" }, [
|
|
1883
|
+
createVNode("span", { class: "text-muted-foreground" }, "Jump to hunk"),
|
|
1884
|
+
createVNode("span", { class: "font-mono" }, "[ / ]")
|
|
1885
|
+
]),
|
|
1886
|
+
createVNode("div", { class: "flex justify-between gap-4" }, [
|
|
1887
|
+
createVNode("span", { class: "text-muted-foreground" }, "Close"),
|
|
1888
|
+
createVNode("span", { class: "font-mono" }, "Esc")
|
|
1889
|
+
])
|
|
1890
|
+
])
|
|
1891
|
+
];
|
|
1892
|
+
}
|
|
1893
|
+
}),
|
|
1894
|
+
_: 1
|
|
1895
|
+
}, _parent3, _scopeId2));
|
|
1896
|
+
} else {
|
|
1897
|
+
return [
|
|
1898
|
+
createVNode(unref(TooltipTrigger), { "as-child": "" }, {
|
|
1899
|
+
default: withCtx(() => [
|
|
1900
|
+
createVNode("button", { class: "text-muted-foreground/50 transition-colors hover:text-muted-foreground" }, [
|
|
1901
|
+
createVNode(unref(Keyboard), { class: "size-3.5" })
|
|
1902
|
+
])
|
|
1903
|
+
]),
|
|
1904
|
+
_: 1
|
|
1905
|
+
}),
|
|
1906
|
+
createVNode(unref(TooltipContent), {
|
|
1907
|
+
side: "bottom",
|
|
1908
|
+
align: "end",
|
|
1909
|
+
class: "max-w-xs"
|
|
1910
|
+
}, {
|
|
1911
|
+
default: withCtx(() => [
|
|
1912
|
+
createVNode("div", { class: "space-y-1 text-xs" }, [
|
|
1913
|
+
createVNode("div", { class: "flex justify-between gap-4" }, [
|
|
1914
|
+
createVNode("span", { class: "text-muted-foreground" }, "Navigate files"),
|
|
1915
|
+
createVNode("span", { class: "font-mono" }, "j/k or ↑/↓")
|
|
1916
|
+
]),
|
|
1917
|
+
createVNode("div", { class: "flex justify-between gap-4" }, [
|
|
1918
|
+
createVNode("span", { class: "text-muted-foreground" }, "Jump to hunk"),
|
|
1919
|
+
createVNode("span", { class: "font-mono" }, "[ / ]")
|
|
1920
|
+
]),
|
|
1921
|
+
createVNode("div", { class: "flex justify-between gap-4" }, [
|
|
1922
|
+
createVNode("span", { class: "text-muted-foreground" }, "Close"),
|
|
1923
|
+
createVNode("span", { class: "font-mono" }, "Esc")
|
|
1924
|
+
])
|
|
1925
|
+
])
|
|
1926
|
+
]),
|
|
1927
|
+
_: 1
|
|
1928
|
+
})
|
|
1929
|
+
];
|
|
1930
|
+
}
|
|
1931
|
+
}),
|
|
1932
|
+
_: 1
|
|
1933
|
+
}, _parent2, _scopeId));
|
|
1934
|
+
} else {
|
|
1935
|
+
return [
|
|
1936
|
+
createVNode(unref(Tooltip), null, {
|
|
1937
|
+
default: withCtx(() => [
|
|
1938
|
+
createVNode(unref(TooltipTrigger), { "as-child": "" }, {
|
|
1939
|
+
default: withCtx(() => [
|
|
1940
|
+
createVNode("button", { class: "text-muted-foreground/50 transition-colors hover:text-muted-foreground" }, [
|
|
1941
|
+
createVNode(unref(Keyboard), { class: "size-3.5" })
|
|
1942
|
+
])
|
|
1943
|
+
]),
|
|
1944
|
+
_: 1
|
|
1945
|
+
}),
|
|
1946
|
+
createVNode(unref(TooltipContent), {
|
|
1947
|
+
side: "bottom",
|
|
1948
|
+
align: "end",
|
|
1949
|
+
class: "max-w-xs"
|
|
1950
|
+
}, {
|
|
1951
|
+
default: withCtx(() => [
|
|
1952
|
+
createVNode("div", { class: "space-y-1 text-xs" }, [
|
|
1953
|
+
createVNode("div", { class: "flex justify-between gap-4" }, [
|
|
1954
|
+
createVNode("span", { class: "text-muted-foreground" }, "Navigate files"),
|
|
1955
|
+
createVNode("span", { class: "font-mono" }, "j/k or ↑/↓")
|
|
1956
|
+
]),
|
|
1957
|
+
createVNode("div", { class: "flex justify-between gap-4" }, [
|
|
1958
|
+
createVNode("span", { class: "text-muted-foreground" }, "Jump to hunk"),
|
|
1959
|
+
createVNode("span", { class: "font-mono" }, "[ / ]")
|
|
1960
|
+
]),
|
|
1961
|
+
createVNode("div", { class: "flex justify-between gap-4" }, [
|
|
1962
|
+
createVNode("span", { class: "text-muted-foreground" }, "Close"),
|
|
1963
|
+
createVNode("span", { class: "font-mono" }, "Esc")
|
|
1964
|
+
])
|
|
1965
|
+
])
|
|
1966
|
+
]),
|
|
1967
|
+
_: 1
|
|
1968
|
+
})
|
|
1969
|
+
]),
|
|
1970
|
+
_: 1
|
|
1971
|
+
})
|
|
1972
|
+
];
|
|
1973
|
+
}
|
|
1974
|
+
}),
|
|
1975
|
+
_: 1
|
|
1976
|
+
}, _parent));
|
|
1977
|
+
_push(`</div><div class="min-h-0 flex-1 overflow-y-auto">`);
|
|
1978
|
+
_push(ssrRenderComponent(_component_GitChangesMinimap, {
|
|
1979
|
+
files: unref(files),
|
|
1980
|
+
"selected-file": unref(selectedFile),
|
|
1981
|
+
onSelect: handleFileSelect
|
|
1982
|
+
}, null, _parent));
|
|
1983
|
+
_push(`</div></div><div class="flex min-h-0 flex-1 flex-col overflow-hidden">`);
|
|
1984
|
+
if (unref(selectedFile)) {
|
|
1985
|
+
_push(`<div class="flex items-center gap-2 border-b border-border px-4 py-2">`);
|
|
1986
|
+
if (unref(selectedFileDiff)?.oldPath) {
|
|
1987
|
+
_push(`<span class="min-w-0 flex-1 truncate font-mono text-sm"><span class="text-muted-foreground">${ssrInterpolate(unref(selectedFileDiff).oldPath)}</span><span class="mx-2 text-muted-foreground">→</span><span>${ssrInterpolate(unref(selectedFile))}</span></span>`);
|
|
1988
|
+
} else {
|
|
1989
|
+
_push(`<span class="min-w-0 flex-1 truncate font-mono text-sm">${ssrInterpolate(unref(selectedFile))}</span>`);
|
|
1990
|
+
}
|
|
1991
|
+
if (unref(selectedFileDiff)?.binary) {
|
|
1992
|
+
_push(`<span class="rounded bg-yellow-500/10 px-1.5 py-0.5 text-xs text-yellow-600 dark:text-yellow-400"> binary </span>`);
|
|
1993
|
+
} else {
|
|
1994
|
+
_push(`<!---->`);
|
|
1995
|
+
}
|
|
1996
|
+
if (!unref(selectedFileDiff)?.binary) {
|
|
1997
|
+
_push(ssrRenderComponent(unref(TooltipProvider), null, {
|
|
1998
|
+
default: withCtx((_, _push2, _parent2, _scopeId) => {
|
|
1999
|
+
if (_push2) {
|
|
2000
|
+
_push2(ssrRenderComponent(unref(Tooltip), null, {
|
|
2001
|
+
default: withCtx((_2, _push3, _parent3, _scopeId2) => {
|
|
2002
|
+
if (_push3) {
|
|
2003
|
+
_push3(ssrRenderComponent(unref(TooltipTrigger), { "as-child": "" }, {
|
|
2004
|
+
default: withCtx((_3, _push4, _parent4, _scopeId3) => {
|
|
2005
|
+
if (_push4) {
|
|
2006
|
+
_push4(ssrRenderComponent(unref(Button), {
|
|
2007
|
+
variant: "ghost",
|
|
2008
|
+
size: "sm",
|
|
2009
|
+
class: "h-7 shrink-0 gap-1.5 text-xs",
|
|
2010
|
+
onClick: toggleViewMode
|
|
2011
|
+
}, {
|
|
2012
|
+
default: withCtx((_4, _push5, _parent5, _scopeId4) => {
|
|
2013
|
+
if (_push5) {
|
|
2014
|
+
ssrRenderVNode(_push5, createVNode(resolveDynamicComponent(unref(viewMode) === "changes" ? unref(FileDiff) : unref(FileCode)), { class: "size-3.5" }, null), _parent5, _scopeId4);
|
|
2015
|
+
_push5(` ${ssrInterpolate(unref(viewMode) === "changes" ? "Changes" : "Full file")}`);
|
|
2016
|
+
} else {
|
|
2017
|
+
return [
|
|
2018
|
+
(openBlock(), createBlock(resolveDynamicComponent(unref(viewMode) === "changes" ? unref(FileDiff) : unref(FileCode)), { class: "size-3.5" })),
|
|
2019
|
+
createTextVNode(" " + toDisplayString(unref(viewMode) === "changes" ? "Changes" : "Full file"), 1)
|
|
2020
|
+
];
|
|
2021
|
+
}
|
|
2022
|
+
}),
|
|
2023
|
+
_: 1
|
|
2024
|
+
}, _parent4, _scopeId3));
|
|
2025
|
+
} else {
|
|
2026
|
+
return [
|
|
2027
|
+
createVNode(unref(Button), {
|
|
2028
|
+
variant: "ghost",
|
|
2029
|
+
size: "sm",
|
|
2030
|
+
class: "h-7 shrink-0 gap-1.5 text-xs",
|
|
2031
|
+
onClick: toggleViewMode
|
|
2032
|
+
}, {
|
|
2033
|
+
default: withCtx(() => [
|
|
2034
|
+
(openBlock(), createBlock(resolveDynamicComponent(unref(viewMode) === "changes" ? unref(FileDiff) : unref(FileCode)), { class: "size-3.5" })),
|
|
2035
|
+
createTextVNode(" " + toDisplayString(unref(viewMode) === "changes" ? "Changes" : "Full file"), 1)
|
|
2036
|
+
]),
|
|
2037
|
+
_: 1
|
|
2038
|
+
})
|
|
2039
|
+
];
|
|
2040
|
+
}
|
|
2041
|
+
}),
|
|
2042
|
+
_: 1
|
|
2043
|
+
}, _parent3, _scopeId2));
|
|
2044
|
+
_push3(ssrRenderComponent(unref(TooltipContent), null, {
|
|
2045
|
+
default: withCtx((_3, _push4, _parent4, _scopeId3) => {
|
|
2046
|
+
if (_push4) {
|
|
2047
|
+
_push4(`${ssrInterpolate(unref(viewMode) === "changes" ? "Show full file with changes" : "Show changes only")}`);
|
|
2048
|
+
} else {
|
|
2049
|
+
return [
|
|
2050
|
+
createTextVNode(toDisplayString(unref(viewMode) === "changes" ? "Show full file with changes" : "Show changes only"), 1)
|
|
2051
|
+
];
|
|
2052
|
+
}
|
|
2053
|
+
}),
|
|
2054
|
+
_: 1
|
|
2055
|
+
}, _parent3, _scopeId2));
|
|
2056
|
+
} else {
|
|
2057
|
+
return [
|
|
2058
|
+
createVNode(unref(TooltipTrigger), { "as-child": "" }, {
|
|
2059
|
+
default: withCtx(() => [
|
|
2060
|
+
createVNode(unref(Button), {
|
|
2061
|
+
variant: "ghost",
|
|
2062
|
+
size: "sm",
|
|
2063
|
+
class: "h-7 shrink-0 gap-1.5 text-xs",
|
|
2064
|
+
onClick: toggleViewMode
|
|
2065
|
+
}, {
|
|
2066
|
+
default: withCtx(() => [
|
|
2067
|
+
(openBlock(), createBlock(resolveDynamicComponent(unref(viewMode) === "changes" ? unref(FileDiff) : unref(FileCode)), { class: "size-3.5" })),
|
|
2068
|
+
createTextVNode(" " + toDisplayString(unref(viewMode) === "changes" ? "Changes" : "Full file"), 1)
|
|
2069
|
+
]),
|
|
2070
|
+
_: 1
|
|
2071
|
+
})
|
|
2072
|
+
]),
|
|
2073
|
+
_: 1
|
|
2074
|
+
}),
|
|
2075
|
+
createVNode(unref(TooltipContent), null, {
|
|
2076
|
+
default: withCtx(() => [
|
|
2077
|
+
createTextVNode(toDisplayString(unref(viewMode) === "changes" ? "Show full file with changes" : "Show changes only"), 1)
|
|
2078
|
+
]),
|
|
2079
|
+
_: 1
|
|
2080
|
+
})
|
|
2081
|
+
];
|
|
2082
|
+
}
|
|
2083
|
+
}),
|
|
2084
|
+
_: 1
|
|
2085
|
+
}, _parent2, _scopeId));
|
|
2086
|
+
} else {
|
|
2087
|
+
return [
|
|
2088
|
+
createVNode(unref(Tooltip), null, {
|
|
2089
|
+
default: withCtx(() => [
|
|
2090
|
+
createVNode(unref(TooltipTrigger), { "as-child": "" }, {
|
|
2091
|
+
default: withCtx(() => [
|
|
2092
|
+
createVNode(unref(Button), {
|
|
2093
|
+
variant: "ghost",
|
|
2094
|
+
size: "sm",
|
|
2095
|
+
class: "h-7 shrink-0 gap-1.5 text-xs",
|
|
2096
|
+
onClick: toggleViewMode
|
|
2097
|
+
}, {
|
|
2098
|
+
default: withCtx(() => [
|
|
2099
|
+
(openBlock(), createBlock(resolveDynamicComponent(unref(viewMode) === "changes" ? unref(FileDiff) : unref(FileCode)), { class: "size-3.5" })),
|
|
2100
|
+
createTextVNode(" " + toDisplayString(unref(viewMode) === "changes" ? "Changes" : "Full file"), 1)
|
|
2101
|
+
]),
|
|
2102
|
+
_: 1
|
|
2103
|
+
})
|
|
2104
|
+
]),
|
|
2105
|
+
_: 1
|
|
2106
|
+
}),
|
|
2107
|
+
createVNode(unref(TooltipContent), null, {
|
|
2108
|
+
default: withCtx(() => [
|
|
2109
|
+
createTextVNode(toDisplayString(unref(viewMode) === "changes" ? "Show full file with changes" : "Show changes only"), 1)
|
|
2110
|
+
]),
|
|
2111
|
+
_: 1
|
|
2112
|
+
})
|
|
2113
|
+
]),
|
|
2114
|
+
_: 1
|
|
2115
|
+
})
|
|
2116
|
+
];
|
|
2117
|
+
}
|
|
2118
|
+
}),
|
|
2119
|
+
_: 1
|
|
2120
|
+
}, _parent));
|
|
2121
|
+
} else {
|
|
2122
|
+
_push(`<!---->`);
|
|
2123
|
+
}
|
|
2124
|
+
_push(`</div>`);
|
|
2125
|
+
} else {
|
|
2126
|
+
_push(`<!---->`);
|
|
2127
|
+
}
|
|
2128
|
+
if (unref(isLoadingFileDiff)) {
|
|
2129
|
+
_push(`<div class="flex flex-1 items-center justify-center">`);
|
|
2130
|
+
_push(ssrRenderComponent(unref(Loader2), { class: "size-6 animate-spin text-muted-foreground" }, null, _parent));
|
|
2131
|
+
_push(`</div>`);
|
|
2132
|
+
} else if (unref(fileDiffError)) {
|
|
2133
|
+
_push(`<div class="flex flex-1 flex-col items-center justify-center gap-4 p-8">`);
|
|
2134
|
+
_push(ssrRenderComponent(unref(AlertCircle), { class: "size-8 text-destructive" }, null, _parent));
|
|
2135
|
+
_push(`<div class="text-center"><p class="text-sm font-medium">Failed to load file diff</p><p class="text-xs text-muted-foreground">${ssrInterpolate(unref(fileDiffError))}</p></div>`);
|
|
2136
|
+
_push(ssrRenderComponent(unref(Button), {
|
|
2137
|
+
variant: "outline",
|
|
2138
|
+
size: "sm",
|
|
2139
|
+
onClick: retryFileDiff
|
|
2140
|
+
}, {
|
|
2141
|
+
default: withCtx((_, _push2, _parent2, _scopeId) => {
|
|
2142
|
+
if (_push2) {
|
|
2143
|
+
_push2(ssrRenderComponent(unref(RefreshCw), { class: "mr-2 size-4" }, null, _parent2, _scopeId));
|
|
2144
|
+
_push2(` Retry `);
|
|
2145
|
+
} else {
|
|
2146
|
+
return [
|
|
2147
|
+
createVNode(unref(RefreshCw), { class: "mr-2 size-4" }),
|
|
2148
|
+
createTextVNode(" Retry ")
|
|
2149
|
+
];
|
|
2150
|
+
}
|
|
2151
|
+
}),
|
|
2152
|
+
_: 1
|
|
2153
|
+
}, _parent));
|
|
2154
|
+
_push(`</div>`);
|
|
2155
|
+
} else if (unref(selectedFile)) {
|
|
2156
|
+
_push(ssrRenderComponent(unref(ScrollArea), { class: "h-0 flex-1 overflow-hidden" }, {
|
|
2157
|
+
default: withCtx((_, _push2, _parent2, _scopeId) => {
|
|
2158
|
+
if (_push2) {
|
|
2159
|
+
_push2(`<div${_scopeId}>`);
|
|
2160
|
+
_push2(ssrRenderComponent(_component_GitDiffViewer, {
|
|
2161
|
+
hunks: unref(hunks),
|
|
2162
|
+
"file-path": unref(selectedFile),
|
|
2163
|
+
binary: unref(selectedFileDiff)?.binary,
|
|
2164
|
+
"old-path": unref(selectedFileDiff)?.oldPath,
|
|
2165
|
+
"file-content": unref(fileContent),
|
|
2166
|
+
"show-full-file": unref(viewMode) === "full",
|
|
2167
|
+
"is-loading-content": unref(isLoadingFileContent)
|
|
2168
|
+
}, null, _parent2, _scopeId));
|
|
2169
|
+
_push2(`</div>`);
|
|
2170
|
+
} else {
|
|
2171
|
+
return [
|
|
2172
|
+
createVNode("div", {
|
|
2173
|
+
ref_key: "diffViewerRef",
|
|
2174
|
+
ref: diffViewerRef
|
|
2175
|
+
}, [
|
|
2176
|
+
createVNode(_component_GitDiffViewer, {
|
|
2177
|
+
hunks: unref(hunks),
|
|
2178
|
+
"file-path": unref(selectedFile),
|
|
2179
|
+
binary: unref(selectedFileDiff)?.binary,
|
|
2180
|
+
"old-path": unref(selectedFileDiff)?.oldPath,
|
|
2181
|
+
"file-content": unref(fileContent),
|
|
2182
|
+
"show-full-file": unref(viewMode) === "full",
|
|
2183
|
+
"is-loading-content": unref(isLoadingFileContent)
|
|
2184
|
+
}, null, 8, ["hunks", "file-path", "binary", "old-path", "file-content", "show-full-file", "is-loading-content"])
|
|
2185
|
+
], 512)
|
|
2186
|
+
];
|
|
2187
|
+
}
|
|
2188
|
+
}),
|
|
2189
|
+
_: 1
|
|
2190
|
+
}, _parent));
|
|
2191
|
+
} else {
|
|
2192
|
+
_push(`<div class="flex flex-1 items-center justify-center text-sm text-muted-foreground"> Select a file to view changes </div>`);
|
|
2193
|
+
}
|
|
2194
|
+
_push(`</div></div>`);
|
|
2195
|
+
}
|
|
2196
|
+
_push(`</div>`);
|
|
2197
|
+
};
|
|
2198
|
+
}
|
|
2199
|
+
});
|
|
2200
|
+
const _sfc_setup$h = _sfc_main$h.setup;
|
|
2201
|
+
_sfc_main$h.setup = (props, ctx) => {
|
|
2202
|
+
const ssrContext = useSSRContext();
|
|
2203
|
+
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/git/DiffPanel.vue");
|
|
2204
|
+
return _sfc_setup$h ? _sfc_setup$h(props, ctx) : void 0;
|
|
2205
|
+
};
|
|
2206
|
+
const __nuxt_component_0 = Object.assign(_sfc_main$h, { __name: "GitDiffPanel" });
|
|
2207
|
+
const _sfc_main$g = /* @__PURE__ */ defineComponent({
|
|
2208
|
+
__name: "CommitList",
|
|
2209
|
+
__ssrInlineRender: true,
|
|
2210
|
+
props: {
|
|
2211
|
+
commits: {},
|
|
2212
|
+
repoId: {}
|
|
2213
|
+
},
|
|
2214
|
+
emits: ["select"],
|
|
2215
|
+
setup(__props, { emit: __emit }) {
|
|
2216
|
+
const props = __props;
|
|
2217
|
+
const { fetchCommits, isLoadingCommits } = useGit();
|
|
2218
|
+
const commitDetails = ref(/* @__PURE__ */ new Map());
|
|
2219
|
+
const failedCommits = ref(/* @__PURE__ */ new Set());
|
|
2220
|
+
const hasMultipleRepos = computed(() => {
|
|
2221
|
+
const repos = new Set(props.commits.map((c) => c.repo).filter(Boolean));
|
|
2222
|
+
return repos.size > 1;
|
|
2223
|
+
});
|
|
2224
|
+
watch(
|
|
2225
|
+
() => ({ commits: props.commits, repoId: props.repoId }),
|
|
2226
|
+
async ({ commits, repoId }) => {
|
|
2227
|
+
if (commits.length === 0 || !repoId) {
|
|
2228
|
+
commitDetails.value = /* @__PURE__ */ new Map();
|
|
2229
|
+
failedCommits.value = /* @__PURE__ */ new Set();
|
|
2230
|
+
return;
|
|
2231
|
+
}
|
|
2232
|
+
const commitsByRepo = /* @__PURE__ */ new Map();
|
|
2233
|
+
for (const commit of commits) {
|
|
2234
|
+
const repoPath = commit.repo || "";
|
|
2235
|
+
if (!commitsByRepo.has(repoPath)) {
|
|
2236
|
+
commitsByRepo.set(repoPath, []);
|
|
2237
|
+
}
|
|
2238
|
+
commitsByRepo.get(repoPath).push(commit.sha);
|
|
2239
|
+
}
|
|
2240
|
+
const results = await Promise.all(
|
|
2241
|
+
Array.from(commitsByRepo.entries()).map(async ([repoPath, shas]) => {
|
|
2242
|
+
const result = await fetchCommits(repoId, shas, repoPath || void 0);
|
|
2243
|
+
return {
|
|
2244
|
+
commits: result.commits.map((c) => ({ ...c, repoPath })),
|
|
2245
|
+
failedShas: result.failedShas
|
|
2246
|
+
};
|
|
2247
|
+
})
|
|
2248
|
+
);
|
|
2249
|
+
const detailsMap = /* @__PURE__ */ new Map();
|
|
2250
|
+
const failed = /* @__PURE__ */ new Set();
|
|
2251
|
+
for (const { commits: repoCommits, failedShas } of results) {
|
|
2252
|
+
for (const commit of repoCommits) {
|
|
2253
|
+
detailsMap.set(commit.shortSha, commit);
|
|
2254
|
+
}
|
|
2255
|
+
for (const sha of failedShas) {
|
|
2256
|
+
failed.add(sha);
|
|
2257
|
+
}
|
|
2258
|
+
}
|
|
2259
|
+
commitDetails.value = detailsMap;
|
|
2260
|
+
failedCommits.value = failed;
|
|
2261
|
+
},
|
|
2262
|
+
{ immediate: true }
|
|
2263
|
+
);
|
|
2264
|
+
function formatRelativeDate(isoDate) {
|
|
2265
|
+
const date = new Date(isoDate);
|
|
2266
|
+
const now = /* @__PURE__ */ new Date();
|
|
2267
|
+
const diffMs = now.getTime() - date.getTime();
|
|
2268
|
+
const diffSeconds = Math.floor(diffMs / 1e3);
|
|
2269
|
+
const diffMinutes = Math.floor(diffSeconds / 60);
|
|
2270
|
+
const diffHours = Math.floor(diffMinutes / 60);
|
|
2271
|
+
const diffDays = Math.floor(diffHours / 24);
|
|
2272
|
+
if (diffSeconds < 60) {
|
|
2273
|
+
return "just now";
|
|
2274
|
+
} else if (diffMinutes < 60) {
|
|
2275
|
+
return `${diffMinutes} minute${diffMinutes === 1 ? "" : "s"} ago`;
|
|
2276
|
+
} else if (diffHours < 24) {
|
|
2277
|
+
return `${diffHours} hour${diffHours === 1 ? "" : "s"} ago`;
|
|
2278
|
+
} else if (diffDays < 7) {
|
|
2279
|
+
return `${diffDays} day${diffDays === 1 ? "" : "s"} ago`;
|
|
2280
|
+
} else {
|
|
2281
|
+
return date.toLocaleDateString();
|
|
2282
|
+
}
|
|
2283
|
+
}
|
|
2284
|
+
function getDetails(sha) {
|
|
2285
|
+
const direct = commitDetails.value.get(sha);
|
|
2286
|
+
if (direct) return direct;
|
|
2287
|
+
for (const [key, commit] of commitDetails.value) {
|
|
2288
|
+
if (key.startsWith(sha) || sha.startsWith(key)) {
|
|
2289
|
+
return commit;
|
|
2290
|
+
}
|
|
2291
|
+
}
|
|
2292
|
+
return void 0;
|
|
2293
|
+
}
|
|
2294
|
+
function isFailed(sha) {
|
|
2295
|
+
if (failedCommits.value.has(sha)) return true;
|
|
2296
|
+
for (const failedSha of failedCommits.value) {
|
|
2297
|
+
if (failedSha.startsWith(sha) || sha.startsWith(failedSha)) {
|
|
2298
|
+
return true;
|
|
2299
|
+
}
|
|
2300
|
+
}
|
|
2301
|
+
return false;
|
|
2302
|
+
}
|
|
2303
|
+
return (_ctx, _push, _parent, _attrs) => {
|
|
2304
|
+
_push(`<div${ssrRenderAttrs(mergeProps({ class: "space-y-2" }, _attrs))}>`);
|
|
2305
|
+
if (unref(isLoadingCommits)) {
|
|
2306
|
+
_push(`<!--[-->`);
|
|
2307
|
+
ssrRenderList(Math.min(__props.commits.length, 3), (i) => {
|
|
2308
|
+
_push(`<div class="animate-pulse rounded-lg border bg-muted/50 p-3"><div class="flex items-start gap-3"><div class="h-5 w-5 rounded bg-muted"></div><div class="flex-1 space-y-2"><div class="h-4 w-20 rounded bg-muted"></div><div class="h-4 w-3/4 rounded bg-muted"></div><div class="h-3 w-1/2 rounded bg-muted"></div></div></div></div>`);
|
|
2309
|
+
});
|
|
2310
|
+
_push(`<!--]-->`);
|
|
2311
|
+
} else if (__props.commits.length === 0) {
|
|
2312
|
+
_push(`<div class="rounded-lg border border-dashed p-4 text-center text-sm text-muted-foreground"> No commits recorded for this task </div>`);
|
|
2313
|
+
} else {
|
|
2314
|
+
_push(`<!--[-->`);
|
|
2315
|
+
ssrRenderList(__props.commits, (commit) => {
|
|
2316
|
+
_push(`<button class="w-full rounded-lg border bg-card p-3 text-left transition-colors hover:bg-muted/50 focus:outline-none focus:ring-2 focus:ring-ring"><div class="flex items-start gap-3">`);
|
|
2317
|
+
_push(ssrRenderComponent(unref(GitCommit), { class: "mt-0.5 size-5 shrink-0 text-muted-foreground" }, null, _parent));
|
|
2318
|
+
_push(`<div class="min-w-0 flex-1"><div class="flex flex-wrap items-center gap-2"><code class="font-mono text-xs font-medium text-primary">${ssrInterpolate(getDetails(commit.sha)?.shortSha || commit.sha.substring(0, 7))}</code>`);
|
|
2319
|
+
if (getDetails(commit.sha)) {
|
|
2320
|
+
_push(`<!--[--><span class="flex items-center gap-1 text-xs text-muted-foreground">`);
|
|
2321
|
+
_push(ssrRenderComponent(unref(FileText), { class: "size-3" }, null, _parent));
|
|
2322
|
+
_push(` ${ssrInterpolate(getDetails(commit.sha).filesChanged)}</span><span class="flex items-center gap-0.5 text-xs text-green-600 dark:text-green-400">`);
|
|
2323
|
+
_push(ssrRenderComponent(unref(Plus), { class: "size-3" }, null, _parent));
|
|
2324
|
+
_push(`${ssrInterpolate(getDetails(commit.sha).additions)}</span><span class="flex items-center gap-0.5 text-xs text-red-600 dark:text-red-400">`);
|
|
2325
|
+
_push(ssrRenderComponent(unref(Minus), { class: "size-3" }, null, _parent));
|
|
2326
|
+
_push(`${ssrInterpolate(getDetails(commit.sha).deletions)}</span><!--]-->`);
|
|
2327
|
+
} else {
|
|
2328
|
+
_push(`<!---->`);
|
|
2329
|
+
}
|
|
2330
|
+
if (commit.repo && unref(hasMultipleRepos)) {
|
|
2331
|
+
_push(ssrRenderComponent(unref(Badge), {
|
|
2332
|
+
variant: "secondary",
|
|
2333
|
+
class: "gap-1 text-xs"
|
|
2334
|
+
}, {
|
|
2335
|
+
default: withCtx((_, _push2, _parent2, _scopeId) => {
|
|
2336
|
+
if (_push2) {
|
|
2337
|
+
_push2(ssrRenderComponent(unref(FolderGit2), { class: "size-3" }, null, _parent2, _scopeId));
|
|
2338
|
+
_push2(` ${ssrInterpolate(commit.repo)}`);
|
|
2339
|
+
} else {
|
|
2340
|
+
return [
|
|
2341
|
+
createVNode(unref(FolderGit2), { class: "size-3" }),
|
|
2342
|
+
createTextVNode(" " + toDisplayString(commit.repo), 1)
|
|
2343
|
+
];
|
|
2344
|
+
}
|
|
2345
|
+
}),
|
|
2346
|
+
_: 2
|
|
2347
|
+
}, _parent));
|
|
2348
|
+
} else {
|
|
2349
|
+
_push(`<!---->`);
|
|
2350
|
+
}
|
|
2351
|
+
_push(`</div><p class="mt-1 truncate text-sm">`);
|
|
2352
|
+
if (getDetails(commit.sha)) {
|
|
2353
|
+
_push(`<!--[-->${ssrInterpolate(getDetails(commit.sha).message)}<!--]-->`);
|
|
2354
|
+
} else if (isFailed(commit.sha)) {
|
|
2355
|
+
_push(`<span class="flex items-center gap-1 text-muted-foreground">`);
|
|
2356
|
+
_push(ssrRenderComponent(unref(AlertCircle), { class: "size-3" }, null, _parent));
|
|
2357
|
+
_push(` Commit unavailable </span>`);
|
|
2358
|
+
} else {
|
|
2359
|
+
_push(`<span class="text-muted-foreground">Loading...</span>`);
|
|
2360
|
+
}
|
|
2361
|
+
_push(`</p>`);
|
|
2362
|
+
if (getDetails(commit.sha)) {
|
|
2363
|
+
_push(`<p class="mt-1 text-xs text-muted-foreground">${ssrInterpolate(getDetails(commit.sha).author)} · ${ssrInterpolate(formatRelativeDate(getDetails(commit.sha).date))}</p>`);
|
|
2364
|
+
} else {
|
|
2365
|
+
_push(`<!---->`);
|
|
2366
|
+
}
|
|
2367
|
+
_push(`</div></div></button>`);
|
|
2368
|
+
});
|
|
2369
|
+
_push(`<!--]-->`);
|
|
2370
|
+
}
|
|
2371
|
+
_push(`</div>`);
|
|
2372
|
+
};
|
|
2373
|
+
}
|
|
2374
|
+
});
|
|
2375
|
+
const _sfc_setup$g = _sfc_main$g.setup;
|
|
2376
|
+
_sfc_main$g.setup = (props, ctx) => {
|
|
2377
|
+
const ssrContext = useSSRContext();
|
|
2378
|
+
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/git/CommitList.vue");
|
|
2379
|
+
return _sfc_setup$g ? _sfc_setup$g(props, ctx) : void 0;
|
|
2380
|
+
};
|
|
2381
|
+
const __nuxt_component_1 = Object.assign(_sfc_main$g, { __name: "GitCommitList" });
|
|
2382
|
+
const _sfc_main$f = /* @__PURE__ */ defineComponent({
|
|
2383
|
+
__name: "Sheet",
|
|
2384
|
+
__ssrInlineRender: true,
|
|
2385
|
+
props: {
|
|
2386
|
+
open: { type: Boolean },
|
|
2387
|
+
defaultOpen: { type: Boolean },
|
|
2388
|
+
modal: { type: Boolean }
|
|
2389
|
+
},
|
|
2390
|
+
emits: ["update:open"],
|
|
2391
|
+
setup(__props, { emit: __emit }) {
|
|
2392
|
+
const props = __props;
|
|
2393
|
+
const emits = __emit;
|
|
2394
|
+
const forwarded = useForwardPropsEmits(props, emits);
|
|
2395
|
+
return (_ctx, _push, _parent, _attrs) => {
|
|
2396
|
+
_push(ssrRenderComponent(unref(DialogRoot), mergeProps({ "data-slot": "sheet" }, unref(forwarded), _attrs), {
|
|
2397
|
+
default: withCtx((slotProps, _push2, _parent2, _scopeId) => {
|
|
2398
|
+
if (_push2) {
|
|
2399
|
+
ssrRenderSlot(_ctx.$slots, "default", slotProps, null, _push2, _parent2, _scopeId);
|
|
2400
|
+
} else {
|
|
2401
|
+
return [
|
|
2402
|
+
renderSlot(_ctx.$slots, "default", slotProps)
|
|
2403
|
+
];
|
|
2404
|
+
}
|
|
2405
|
+
}),
|
|
2406
|
+
_: 3
|
|
2407
|
+
}, _parent));
|
|
2408
|
+
};
|
|
2409
|
+
}
|
|
2410
|
+
});
|
|
2411
|
+
const _sfc_setup$f = _sfc_main$f.setup;
|
|
2412
|
+
_sfc_main$f.setup = (props, ctx) => {
|
|
2413
|
+
const ssrContext = useSSRContext();
|
|
2414
|
+
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/ui/sheet/Sheet.vue");
|
|
2415
|
+
return _sfc_setup$f ? _sfc_setup$f(props, ctx) : void 0;
|
|
2416
|
+
};
|
|
2417
|
+
const Sheet = Object.assign(_sfc_main$f, { __name: "UiSheet" });
|
|
2418
|
+
const _sfc_main$e = /* @__PURE__ */ defineComponent({
|
|
2419
|
+
__name: "SheetClose",
|
|
2420
|
+
__ssrInlineRender: true,
|
|
2421
|
+
props: {
|
|
2422
|
+
asChild: { type: Boolean },
|
|
2423
|
+
as: {}
|
|
2424
|
+
},
|
|
2425
|
+
setup(__props) {
|
|
2426
|
+
const props = __props;
|
|
2427
|
+
return (_ctx, _push, _parent, _attrs) => {
|
|
2428
|
+
_push(ssrRenderComponent(unref(DialogClose), mergeProps({ "data-slot": "sheet-close" }, props, _attrs), {
|
|
2429
|
+
default: withCtx((_, _push2, _parent2, _scopeId) => {
|
|
2430
|
+
if (_push2) {
|
|
2431
|
+
ssrRenderSlot(_ctx.$slots, "default", {}, null, _push2, _parent2, _scopeId);
|
|
2432
|
+
} else {
|
|
2433
|
+
return [
|
|
2434
|
+
renderSlot(_ctx.$slots, "default")
|
|
2435
|
+
];
|
|
2436
|
+
}
|
|
2437
|
+
}),
|
|
2438
|
+
_: 3
|
|
2439
|
+
}, _parent));
|
|
2440
|
+
};
|
|
2441
|
+
}
|
|
2442
|
+
});
|
|
2443
|
+
const _sfc_setup$e = _sfc_main$e.setup;
|
|
2444
|
+
_sfc_main$e.setup = (props, ctx) => {
|
|
2445
|
+
const ssrContext = useSSRContext();
|
|
2446
|
+
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/ui/sheet/SheetClose.vue");
|
|
2447
|
+
return _sfc_setup$e ? _sfc_setup$e(props, ctx) : void 0;
|
|
2448
|
+
};
|
|
2449
|
+
const SheetClose = Object.assign(_sfc_main$e, { __name: "UiSheetClose" });
|
|
2450
|
+
const _sfc_main$d = /* @__PURE__ */ defineComponent({
|
|
2451
|
+
__name: "SheetOverlay",
|
|
2452
|
+
__ssrInlineRender: true,
|
|
2453
|
+
props: {
|
|
2454
|
+
forceMount: { type: Boolean },
|
|
2455
|
+
asChild: { type: Boolean },
|
|
2456
|
+
as: {},
|
|
2457
|
+
class: {}
|
|
2458
|
+
},
|
|
2459
|
+
setup(__props) {
|
|
2460
|
+
const props = __props;
|
|
2461
|
+
const delegatedProps = reactiveOmit(props, "class");
|
|
2462
|
+
return (_ctx, _push, _parent, _attrs) => {
|
|
2463
|
+
_push(ssrRenderComponent(unref(DialogOverlay), mergeProps({
|
|
2464
|
+
"data-slot": "sheet-overlay",
|
|
2465
|
+
class: unref(cn)("data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/80", props.class)
|
|
2466
|
+
}, unref(delegatedProps), _attrs), {
|
|
2467
|
+
default: withCtx((_, _push2, _parent2, _scopeId) => {
|
|
2468
|
+
if (_push2) {
|
|
2469
|
+
ssrRenderSlot(_ctx.$slots, "default", {}, null, _push2, _parent2, _scopeId);
|
|
2470
|
+
} else {
|
|
2471
|
+
return [
|
|
2472
|
+
renderSlot(_ctx.$slots, "default")
|
|
2473
|
+
];
|
|
2474
|
+
}
|
|
2475
|
+
}),
|
|
2476
|
+
_: 3
|
|
2477
|
+
}, _parent));
|
|
2478
|
+
};
|
|
2479
|
+
}
|
|
2480
|
+
});
|
|
2481
|
+
const _sfc_setup$d = _sfc_main$d.setup;
|
|
2482
|
+
_sfc_main$d.setup = (props, ctx) => {
|
|
2483
|
+
const ssrContext = useSSRContext();
|
|
2484
|
+
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/ui/sheet/SheetOverlay.vue");
|
|
2485
|
+
return _sfc_setup$d ? _sfc_setup$d(props, ctx) : void 0;
|
|
2486
|
+
};
|
|
2487
|
+
const SheetOverlay = Object.assign(_sfc_main$d, { __name: "UiSheetOverlay" });
|
|
2488
|
+
const _sfc_main$c = /* @__PURE__ */ defineComponent({
|
|
2489
|
+
...{
|
|
2490
|
+
inheritAttrs: false
|
|
2491
|
+
},
|
|
2492
|
+
__name: "SheetContent",
|
|
2493
|
+
__ssrInlineRender: true,
|
|
2494
|
+
props: {
|
|
2495
|
+
class: {},
|
|
2496
|
+
side: { default: "right" },
|
|
2497
|
+
forceMount: { type: Boolean },
|
|
2498
|
+
disableOutsidePointerEvents: { type: Boolean },
|
|
2499
|
+
asChild: { type: Boolean },
|
|
2500
|
+
as: {}
|
|
2501
|
+
},
|
|
2502
|
+
emits: ["escapeKeyDown", "pointerDownOutside", "focusOutside", "interactOutside", "openAutoFocus", "closeAutoFocus"],
|
|
2503
|
+
setup(__props, { emit: __emit }) {
|
|
2504
|
+
const props = __props;
|
|
2505
|
+
const emits = __emit;
|
|
2506
|
+
const delegatedProps = reactiveOmit(props, "class", "side");
|
|
2507
|
+
const forwarded = useForwardPropsEmits(delegatedProps, emits);
|
|
2508
|
+
return (_ctx, _push, _parent, _attrs) => {
|
|
2509
|
+
_push(ssrRenderComponent(unref(DialogPortal), _attrs, {
|
|
2510
|
+
default: withCtx((_, _push2, _parent2, _scopeId) => {
|
|
2511
|
+
if (_push2) {
|
|
2512
|
+
_push2(ssrRenderComponent(SheetOverlay, null, null, _parent2, _scopeId));
|
|
2513
|
+
_push2(ssrRenderComponent(unref(DialogContent), mergeProps({
|
|
2514
|
+
"data-slot": "sheet-content",
|
|
2515
|
+
class: unref(cn)(
|
|
2516
|
+
"bg-background data-[state=open]:animate-in data-[state=closed]:animate-out fixed z-50 flex flex-col gap-4 shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500",
|
|
2517
|
+
__props.side === "right" && "data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right inset-y-0 right-0 h-full w-3/4 border-l sm:max-w-sm",
|
|
2518
|
+
__props.side === "left" && "data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left inset-y-0 left-0 h-full w-3/4 border-r sm:max-w-sm",
|
|
2519
|
+
__props.side === "top" && "data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top inset-x-0 top-0 h-auto border-b",
|
|
2520
|
+
__props.side === "bottom" && "data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom inset-x-0 bottom-0 h-auto border-t",
|
|
2521
|
+
props.class
|
|
2522
|
+
)
|
|
2523
|
+
}, { ..._ctx.$attrs, ...unref(forwarded) }), {
|
|
2524
|
+
default: withCtx((_2, _push3, _parent3, _scopeId2) => {
|
|
2525
|
+
if (_push3) {
|
|
2526
|
+
ssrRenderSlot(_ctx.$slots, "default", {}, null, _push3, _parent3, _scopeId2);
|
|
2527
|
+
_push3(ssrRenderComponent(unref(DialogClose), { class: "ring-offset-background focus:ring-ring data-[state=open]:bg-secondary absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none" }, {
|
|
2528
|
+
default: withCtx((_3, _push4, _parent4, _scopeId3) => {
|
|
2529
|
+
if (_push4) {
|
|
2530
|
+
_push4(ssrRenderComponent(unref(X), { class: "size-4" }, null, _parent4, _scopeId3));
|
|
2531
|
+
_push4(`<span class="sr-only"${_scopeId3}>Close</span>`);
|
|
2532
|
+
} else {
|
|
2533
|
+
return [
|
|
2534
|
+
createVNode(unref(X), { class: "size-4" }),
|
|
2535
|
+
createVNode("span", { class: "sr-only" }, "Close")
|
|
2536
|
+
];
|
|
2537
|
+
}
|
|
2538
|
+
}),
|
|
2539
|
+
_: 1
|
|
2540
|
+
}, _parent3, _scopeId2));
|
|
2541
|
+
} else {
|
|
2542
|
+
return [
|
|
2543
|
+
renderSlot(_ctx.$slots, "default"),
|
|
2544
|
+
createVNode(unref(DialogClose), { class: "ring-offset-background focus:ring-ring data-[state=open]:bg-secondary absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none" }, {
|
|
2545
|
+
default: withCtx(() => [
|
|
2546
|
+
createVNode(unref(X), { class: "size-4" }),
|
|
2547
|
+
createVNode("span", { class: "sr-only" }, "Close")
|
|
2548
|
+
]),
|
|
2549
|
+
_: 1
|
|
2550
|
+
})
|
|
2551
|
+
];
|
|
2552
|
+
}
|
|
2553
|
+
}),
|
|
2554
|
+
_: 3
|
|
2555
|
+
}, _parent2, _scopeId));
|
|
2556
|
+
} else {
|
|
2557
|
+
return [
|
|
2558
|
+
createVNode(SheetOverlay),
|
|
2559
|
+
createVNode(unref(DialogContent), mergeProps({
|
|
2560
|
+
"data-slot": "sheet-content",
|
|
2561
|
+
class: unref(cn)(
|
|
2562
|
+
"bg-background data-[state=open]:animate-in data-[state=closed]:animate-out fixed z-50 flex flex-col gap-4 shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500",
|
|
2563
|
+
__props.side === "right" && "data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right inset-y-0 right-0 h-full w-3/4 border-l sm:max-w-sm",
|
|
2564
|
+
__props.side === "left" && "data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left inset-y-0 left-0 h-full w-3/4 border-r sm:max-w-sm",
|
|
2565
|
+
__props.side === "top" && "data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top inset-x-0 top-0 h-auto border-b",
|
|
2566
|
+
__props.side === "bottom" && "data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom inset-x-0 bottom-0 h-auto border-t",
|
|
2567
|
+
props.class
|
|
2568
|
+
)
|
|
2569
|
+
}, { ..._ctx.$attrs, ...unref(forwarded) }), {
|
|
2570
|
+
default: withCtx(() => [
|
|
2571
|
+
renderSlot(_ctx.$slots, "default"),
|
|
2572
|
+
createVNode(unref(DialogClose), { class: "ring-offset-background focus:ring-ring data-[state=open]:bg-secondary absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none" }, {
|
|
2573
|
+
default: withCtx(() => [
|
|
2574
|
+
createVNode(unref(X), { class: "size-4" }),
|
|
2575
|
+
createVNode("span", { class: "sr-only" }, "Close")
|
|
2576
|
+
]),
|
|
2577
|
+
_: 1
|
|
2578
|
+
})
|
|
2579
|
+
]),
|
|
2580
|
+
_: 3
|
|
2581
|
+
}, 16, ["class"])
|
|
2582
|
+
];
|
|
2583
|
+
}
|
|
2584
|
+
}),
|
|
2585
|
+
_: 3
|
|
2586
|
+
}, _parent));
|
|
2587
|
+
};
|
|
2588
|
+
}
|
|
2589
|
+
});
|
|
2590
|
+
const _sfc_setup$c = _sfc_main$c.setup;
|
|
2591
|
+
_sfc_main$c.setup = (props, ctx) => {
|
|
2592
|
+
const ssrContext = useSSRContext();
|
|
2593
|
+
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/ui/sheet/SheetContent.vue");
|
|
2594
|
+
return _sfc_setup$c ? _sfc_setup$c(props, ctx) : void 0;
|
|
2595
|
+
};
|
|
2596
|
+
const SheetContent = Object.assign(_sfc_main$c, { __name: "UiSheetContent" });
|
|
2597
|
+
const _sfc_main$b = /* @__PURE__ */ defineComponent({
|
|
2598
|
+
__name: "SheetDescription",
|
|
2599
|
+
__ssrInlineRender: true,
|
|
2600
|
+
props: {
|
|
2601
|
+
asChild: { type: Boolean },
|
|
2602
|
+
as: {},
|
|
2603
|
+
class: {}
|
|
2604
|
+
},
|
|
2605
|
+
setup(__props) {
|
|
2606
|
+
const props = __props;
|
|
2607
|
+
const delegatedProps = reactiveOmit(props, "class");
|
|
2608
|
+
return (_ctx, _push, _parent, _attrs) => {
|
|
2609
|
+
_push(ssrRenderComponent(unref(DialogDescription), mergeProps({
|
|
2610
|
+
"data-slot": "sheet-description",
|
|
2611
|
+
class: unref(cn)("text-muted-foreground text-sm", props.class)
|
|
2612
|
+
}, unref(delegatedProps), _attrs), {
|
|
2613
|
+
default: withCtx((_, _push2, _parent2, _scopeId) => {
|
|
2614
|
+
if (_push2) {
|
|
2615
|
+
ssrRenderSlot(_ctx.$slots, "default", {}, null, _push2, _parent2, _scopeId);
|
|
2616
|
+
} else {
|
|
2617
|
+
return [
|
|
2618
|
+
renderSlot(_ctx.$slots, "default")
|
|
2619
|
+
];
|
|
2620
|
+
}
|
|
2621
|
+
}),
|
|
2622
|
+
_: 3
|
|
2623
|
+
}, _parent));
|
|
2624
|
+
};
|
|
2625
|
+
}
|
|
2626
|
+
});
|
|
2627
|
+
const _sfc_setup$b = _sfc_main$b.setup;
|
|
2628
|
+
_sfc_main$b.setup = (props, ctx) => {
|
|
2629
|
+
const ssrContext = useSSRContext();
|
|
2630
|
+
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/ui/sheet/SheetDescription.vue");
|
|
2631
|
+
return _sfc_setup$b ? _sfc_setup$b(props, ctx) : void 0;
|
|
2632
|
+
};
|
|
2633
|
+
const SheetDescription = Object.assign(_sfc_main$b, { __name: "UiSheetDescription" });
|
|
2634
|
+
const _sfc_main$a = /* @__PURE__ */ defineComponent({
|
|
2635
|
+
__name: "SheetFooter",
|
|
2636
|
+
__ssrInlineRender: true,
|
|
2637
|
+
props: {
|
|
2638
|
+
class: {}
|
|
2639
|
+
},
|
|
2640
|
+
setup(__props) {
|
|
2641
|
+
const props = __props;
|
|
2642
|
+
return (_ctx, _push, _parent, _attrs) => {
|
|
2643
|
+
_push(`<div${ssrRenderAttrs(mergeProps({
|
|
2644
|
+
"data-slot": "sheet-footer",
|
|
2645
|
+
class: unref(cn)("mt-auto flex flex-col gap-2 p-4", props.class)
|
|
2646
|
+
}, _attrs))}>`);
|
|
2647
|
+
ssrRenderSlot(_ctx.$slots, "default", {}, null, _push, _parent);
|
|
2648
|
+
_push(`</div>`);
|
|
2649
|
+
};
|
|
2650
|
+
}
|
|
2651
|
+
});
|
|
2652
|
+
const _sfc_setup$a = _sfc_main$a.setup;
|
|
2653
|
+
_sfc_main$a.setup = (props, ctx) => {
|
|
2654
|
+
const ssrContext = useSSRContext();
|
|
2655
|
+
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/ui/sheet/SheetFooter.vue");
|
|
2656
|
+
return _sfc_setup$a ? _sfc_setup$a(props, ctx) : void 0;
|
|
2657
|
+
};
|
|
2658
|
+
const SheetFooter = Object.assign(_sfc_main$a, { __name: "UiSheetFooter" });
|
|
2659
|
+
const _sfc_main$9 = /* @__PURE__ */ defineComponent({
|
|
2660
|
+
__name: "SheetHeader",
|
|
2661
|
+
__ssrInlineRender: true,
|
|
2662
|
+
props: {
|
|
2663
|
+
class: {}
|
|
2664
|
+
},
|
|
2665
|
+
setup(__props) {
|
|
2666
|
+
const props = __props;
|
|
2667
|
+
return (_ctx, _push, _parent, _attrs) => {
|
|
2668
|
+
_push(`<div${ssrRenderAttrs(mergeProps({
|
|
2669
|
+
"data-slot": "sheet-header",
|
|
2670
|
+
class: unref(cn)("flex flex-col gap-1.5 p-4", props.class)
|
|
2671
|
+
}, _attrs))}>`);
|
|
2672
|
+
ssrRenderSlot(_ctx.$slots, "default", {}, null, _push, _parent);
|
|
2673
|
+
_push(`</div>`);
|
|
2674
|
+
};
|
|
2675
|
+
}
|
|
2676
|
+
});
|
|
2677
|
+
const _sfc_setup$9 = _sfc_main$9.setup;
|
|
2678
|
+
_sfc_main$9.setup = (props, ctx) => {
|
|
2679
|
+
const ssrContext = useSSRContext();
|
|
2680
|
+
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/ui/sheet/SheetHeader.vue");
|
|
2681
|
+
return _sfc_setup$9 ? _sfc_setup$9(props, ctx) : void 0;
|
|
2682
|
+
};
|
|
2683
|
+
const SheetHeader = Object.assign(_sfc_main$9, { __name: "UiSheetHeader" });
|
|
2684
|
+
const _sfc_main$8 = /* @__PURE__ */ defineComponent({
|
|
2685
|
+
__name: "SheetTitle",
|
|
2686
|
+
__ssrInlineRender: true,
|
|
2687
|
+
props: {
|
|
2688
|
+
asChild: { type: Boolean },
|
|
2689
|
+
as: {},
|
|
2690
|
+
class: {}
|
|
2691
|
+
},
|
|
2692
|
+
setup(__props) {
|
|
2693
|
+
const props = __props;
|
|
2694
|
+
const delegatedProps = reactiveOmit(props, "class");
|
|
2695
|
+
return (_ctx, _push, _parent, _attrs) => {
|
|
2696
|
+
_push(ssrRenderComponent(unref(DialogTitle), mergeProps({
|
|
2697
|
+
"data-slot": "sheet-title",
|
|
2698
|
+
class: unref(cn)("text-foreground font-semibold", props.class)
|
|
2699
|
+
}, unref(delegatedProps), _attrs), {
|
|
2700
|
+
default: withCtx((_, _push2, _parent2, _scopeId) => {
|
|
2701
|
+
if (_push2) {
|
|
2702
|
+
ssrRenderSlot(_ctx.$slots, "default", {}, null, _push2, _parent2, _scopeId);
|
|
2703
|
+
} else {
|
|
2704
|
+
return [
|
|
2705
|
+
renderSlot(_ctx.$slots, "default")
|
|
2706
|
+
];
|
|
2707
|
+
}
|
|
2708
|
+
}),
|
|
2709
|
+
_: 3
|
|
2710
|
+
}, _parent));
|
|
2711
|
+
};
|
|
2712
|
+
}
|
|
2713
|
+
});
|
|
2714
|
+
const _sfc_setup$8 = _sfc_main$8.setup;
|
|
2715
|
+
_sfc_main$8.setup = (props, ctx) => {
|
|
2716
|
+
const ssrContext = useSSRContext();
|
|
2717
|
+
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/ui/sheet/SheetTitle.vue");
|
|
2718
|
+
return _sfc_setup$8 ? _sfc_setup$8(props, ctx) : void 0;
|
|
2719
|
+
};
|
|
2720
|
+
const SheetTitle = Object.assign(_sfc_main$8, { __name: "UiSheetTitle" });
|
|
2721
|
+
const _sfc_main$7 = /* @__PURE__ */ defineComponent({
|
|
2722
|
+
__name: "SheetTrigger",
|
|
2723
|
+
__ssrInlineRender: true,
|
|
2724
|
+
props: {
|
|
2725
|
+
asChild: { type: Boolean },
|
|
2726
|
+
as: {}
|
|
2727
|
+
},
|
|
2728
|
+
setup(__props) {
|
|
2729
|
+
const props = __props;
|
|
2730
|
+
return (_ctx, _push, _parent, _attrs) => {
|
|
2731
|
+
_push(ssrRenderComponent(unref(DialogTrigger), mergeProps({ "data-slot": "sheet-trigger" }, props, _attrs), {
|
|
2732
|
+
default: withCtx((_, _push2, _parent2, _scopeId) => {
|
|
2733
|
+
if (_push2) {
|
|
2734
|
+
ssrRenderSlot(_ctx.$slots, "default", {}, null, _push2, _parent2, _scopeId);
|
|
2735
|
+
} else {
|
|
2736
|
+
return [
|
|
2737
|
+
renderSlot(_ctx.$slots, "default")
|
|
2738
|
+
];
|
|
2739
|
+
}
|
|
2740
|
+
}),
|
|
2741
|
+
_: 3
|
|
2742
|
+
}, _parent));
|
|
2743
|
+
};
|
|
2744
|
+
}
|
|
2745
|
+
});
|
|
2746
|
+
const _sfc_setup$7 = _sfc_main$7.setup;
|
|
2747
|
+
_sfc_main$7.setup = (props, ctx) => {
|
|
2748
|
+
const ssrContext = useSSRContext();
|
|
2749
|
+
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/ui/sheet/SheetTrigger.vue");
|
|
2750
|
+
return _sfc_setup$7 ? _sfc_setup$7(props, ctx) : void 0;
|
|
2751
|
+
};
|
|
2752
|
+
Object.assign(_sfc_main$7, { __name: "UiSheetTrigger" });
|
|
2753
|
+
const _sfc_main$6 = /* @__PURE__ */ defineComponent({
|
|
2754
|
+
__name: "Separator",
|
|
2755
|
+
__ssrInlineRender: true,
|
|
2756
|
+
props: {
|
|
2757
|
+
orientation: { default: "horizontal" },
|
|
2758
|
+
decorative: { type: Boolean, default: true },
|
|
2759
|
+
asChild: { type: Boolean },
|
|
2760
|
+
as: {},
|
|
2761
|
+
class: {}
|
|
2762
|
+
},
|
|
2763
|
+
setup(__props) {
|
|
2764
|
+
const props = __props;
|
|
2765
|
+
const delegatedProps = reactiveOmit(props, "class");
|
|
2766
|
+
return (_ctx, _push, _parent, _attrs) => {
|
|
2767
|
+
_push(ssrRenderComponent(unref(Separator$1), mergeProps({ "data-slot": "separator" }, unref(delegatedProps), {
|
|
2768
|
+
class: unref(cn)(
|
|
2769
|
+
"bg-border shrink-0 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px",
|
|
2770
|
+
props.class
|
|
2771
|
+
)
|
|
2772
|
+
}, _attrs), null, _parent));
|
|
2773
|
+
};
|
|
2774
|
+
}
|
|
2775
|
+
});
|
|
2776
|
+
const _sfc_setup$6 = _sfc_main$6.setup;
|
|
2777
|
+
_sfc_main$6.setup = (props, ctx) => {
|
|
2778
|
+
const ssrContext = useSSRContext();
|
|
2779
|
+
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/ui/separator/Separator.vue");
|
|
2780
|
+
return _sfc_setup$6 ? _sfc_setup$6(props, ctx) : void 0;
|
|
2781
|
+
};
|
|
2782
|
+
const Separator = Object.assign(_sfc_main$6, { __name: "UiSeparator" });
|
|
2783
|
+
const _sfc_main$5 = /* @__PURE__ */ defineComponent({
|
|
2784
|
+
__name: "Detail",
|
|
2785
|
+
__ssrInlineRender: true,
|
|
2786
|
+
props: /* @__PURE__ */ mergeModels({
|
|
2787
|
+
task: {},
|
|
2788
|
+
taskTitles: {},
|
|
2789
|
+
commits: {},
|
|
2790
|
+
repoId: {}
|
|
2791
|
+
}, {
|
|
2792
|
+
"open": { type: Boolean, ...{ default: false } },
|
|
2793
|
+
"openModifiers": {}
|
|
2794
|
+
}),
|
|
2795
|
+
emits: ["update:open"],
|
|
2796
|
+
setup(__props) {
|
|
2797
|
+
const props = __props;
|
|
2798
|
+
const open = useModel(__props, "open");
|
|
2799
|
+
const categoryConfig = computed(() => {
|
|
2800
|
+
if (!props.task) return { label: "", variant: "secondary" };
|
|
2801
|
+
switch (props.task.category) {
|
|
2802
|
+
case "setup":
|
|
2803
|
+
return { label: "Setup", variant: "secondary" };
|
|
2804
|
+
case "feature":
|
|
2805
|
+
return { label: "Feature", variant: "default" };
|
|
2806
|
+
case "integration":
|
|
2807
|
+
return { label: "Integration", variant: "outline" };
|
|
2808
|
+
case "testing":
|
|
2809
|
+
return { label: "Testing", variant: "secondary" };
|
|
2810
|
+
case "documentation":
|
|
2811
|
+
return { label: "Docs", variant: "secondary" };
|
|
2812
|
+
default:
|
|
2813
|
+
return { label: props.task.category, variant: "secondary" };
|
|
2814
|
+
}
|
|
2815
|
+
});
|
|
2816
|
+
const priorityConfig = computed(() => {
|
|
2817
|
+
if (!props.task) return { label: "", class: "" };
|
|
2818
|
+
switch (props.task.priority) {
|
|
2819
|
+
case "critical":
|
|
2820
|
+
return { label: "Critical", class: "text-destructive" };
|
|
2821
|
+
case "high":
|
|
2822
|
+
return { label: "High", class: "text-orange-500" };
|
|
2823
|
+
case "medium":
|
|
2824
|
+
return { label: "Medium", class: "text-muted-foreground" };
|
|
2825
|
+
case "low":
|
|
2826
|
+
return { label: "Low", class: "text-muted-foreground" };
|
|
2827
|
+
default:
|
|
2828
|
+
return { label: props.task.priority, class: "text-muted-foreground" };
|
|
2829
|
+
}
|
|
2830
|
+
});
|
|
2831
|
+
const statusConfig = computed(() => {
|
|
2832
|
+
if (!props.task) return { label: "", icon: Circle, class: "" };
|
|
2833
|
+
switch (props.task.status) {
|
|
2834
|
+
case "pending":
|
|
2835
|
+
return { label: "Pending", icon: Circle, class: "text-muted-foreground" };
|
|
2836
|
+
case "in_progress":
|
|
2837
|
+
return { label: "In Progress", icon: Clock, class: "text-blue-500" };
|
|
2838
|
+
case "completed":
|
|
2839
|
+
return { label: "Completed", icon: CheckCircle2, class: "text-green-500" };
|
|
2840
|
+
default:
|
|
2841
|
+
return { label: props.task.status, icon: Circle, class: "text-muted-foreground" };
|
|
2842
|
+
}
|
|
2843
|
+
});
|
|
2844
|
+
function formatDate(isoString) {
|
|
2845
|
+
if (!isoString) return "";
|
|
2846
|
+
try {
|
|
2847
|
+
return new Date(isoString).toLocaleString();
|
|
2848
|
+
} catch {
|
|
2849
|
+
return isoString;
|
|
2850
|
+
}
|
|
2851
|
+
}
|
|
2852
|
+
function getTaskTitle(taskId) {
|
|
2853
|
+
return props.taskTitles?.get(taskId) ?? taskId;
|
|
2854
|
+
}
|
|
2855
|
+
const hasCommits = computed(() => props.commits && props.commits.length > 0 && props.repoId);
|
|
2856
|
+
const viewMode = ref("details");
|
|
2857
|
+
const selectedCommitSha = ref(null);
|
|
2858
|
+
const selectedCommitRepo = ref(null);
|
|
2859
|
+
function handleCommitSelect(sha, repo) {
|
|
2860
|
+
selectedCommitSha.value = sha;
|
|
2861
|
+
selectedCommitRepo.value = repo || null;
|
|
2862
|
+
viewMode.value = "diff";
|
|
2863
|
+
}
|
|
2864
|
+
function handleBackToDetails() {
|
|
2865
|
+
viewMode.value = "details";
|
|
2866
|
+
selectedCommitSha.value = null;
|
|
2867
|
+
selectedCommitRepo.value = null;
|
|
2868
|
+
}
|
|
2869
|
+
watch(() => props.task, () => {
|
|
2870
|
+
viewMode.value = "details";
|
|
2871
|
+
selectedCommitSha.value = null;
|
|
2872
|
+
selectedCommitRepo.value = null;
|
|
2873
|
+
});
|
|
2874
|
+
watch(open, (isOpen) => {
|
|
2875
|
+
if (!isOpen) {
|
|
2876
|
+
viewMode.value = "details";
|
|
2877
|
+
selectedCommitSha.value = null;
|
|
2878
|
+
selectedCommitRepo.value = null;
|
|
2879
|
+
}
|
|
2880
|
+
});
|
|
2881
|
+
return (_ctx, _push, _parent, _attrs) => {
|
|
2882
|
+
const _component_GitDiffPanel = __nuxt_component_0;
|
|
2883
|
+
const _component_GitCommitList = __nuxt_component_1;
|
|
2884
|
+
_push(ssrRenderComponent(unref(Sheet), mergeProps({
|
|
2885
|
+
open: open.value,
|
|
2886
|
+
"onUpdate:open": ($event) => open.value = $event
|
|
2887
|
+
}, _attrs), {
|
|
2888
|
+
default: withCtx((_, _push2, _parent2, _scopeId) => {
|
|
2889
|
+
if (_push2) {
|
|
2890
|
+
_push2(ssrRenderComponent(unref(SheetContent), {
|
|
2891
|
+
class: ["flex h-full w-full flex-col overflow-hidden sm:max-w-lg", { "sm:!max-w-none !max-w-none": unref(viewMode) === "diff" }]
|
|
2892
|
+
}, {
|
|
2893
|
+
default: withCtx((_2, _push3, _parent3, _scopeId2) => {
|
|
2894
|
+
if (_push3) {
|
|
2895
|
+
if (__props.task) {
|
|
2896
|
+
_push3(ssrRenderComponent(unref(SheetHeader), { class: "px-6 pr-12" }, {
|
|
2897
|
+
default: withCtx((_3, _push4, _parent4, _scopeId3) => {
|
|
2898
|
+
if (_push4) {
|
|
2899
|
+
_push4(`<div class="flex items-center gap-2"${_scopeId3}>`);
|
|
2900
|
+
if (unref(viewMode) === "diff") {
|
|
2901
|
+
_push4(ssrRenderComponent(unref(Button), {
|
|
2902
|
+
variant: "ghost",
|
|
2903
|
+
size: "icon",
|
|
2904
|
+
class: "size-8 shrink-0",
|
|
2905
|
+
onClick: handleBackToDetails
|
|
2906
|
+
}, {
|
|
2907
|
+
default: withCtx((_4, _push5, _parent5, _scopeId4) => {
|
|
2908
|
+
if (_push5) {
|
|
2909
|
+
_push5(ssrRenderComponent(unref(ArrowLeft), { class: "size-4" }, null, _parent5, _scopeId4));
|
|
2910
|
+
} else {
|
|
2911
|
+
return [
|
|
2912
|
+
createVNode(unref(ArrowLeft), { class: "size-4" })
|
|
2913
|
+
];
|
|
2914
|
+
}
|
|
2915
|
+
}),
|
|
2916
|
+
_: 1
|
|
2917
|
+
}, _parent4, _scopeId3));
|
|
2918
|
+
} else {
|
|
2919
|
+
_push4(`<!---->`);
|
|
2920
|
+
}
|
|
2921
|
+
_push4(ssrRenderComponent(unref(SheetTitle), { class: "text-left text-lg" }, {
|
|
2922
|
+
default: withCtx((_4, _push5, _parent5, _scopeId4) => {
|
|
2923
|
+
if (_push5) {
|
|
2924
|
+
_push5(`${ssrInterpolate(unref(viewMode) === "diff" ? "Commit Changes" : __props.task.title)}`);
|
|
2925
|
+
} else {
|
|
2926
|
+
return [
|
|
2927
|
+
createTextVNode(toDisplayString(unref(viewMode) === "diff" ? "Commit Changes" : __props.task.title), 1)
|
|
2928
|
+
];
|
|
2929
|
+
}
|
|
2930
|
+
}),
|
|
2931
|
+
_: 1
|
|
2932
|
+
}, _parent4, _scopeId3));
|
|
2933
|
+
_push4(`</div>`);
|
|
2934
|
+
_push4(ssrRenderComponent(unref(SheetDescription), { class: "sr-only" }, {
|
|
2935
|
+
default: withCtx((_4, _push5, _parent5, _scopeId4) => {
|
|
2936
|
+
if (_push5) {
|
|
2937
|
+
_push5(`Task details`);
|
|
2938
|
+
} else {
|
|
2939
|
+
return [
|
|
2940
|
+
createTextVNode("Task details")
|
|
2941
|
+
];
|
|
2942
|
+
}
|
|
2943
|
+
}),
|
|
2944
|
+
_: 1
|
|
2945
|
+
}, _parent4, _scopeId3));
|
|
2946
|
+
} else {
|
|
2947
|
+
return [
|
|
2948
|
+
createVNode("div", { class: "flex items-center gap-2" }, [
|
|
2949
|
+
unref(viewMode) === "diff" ? (openBlock(), createBlock(unref(Button), {
|
|
2950
|
+
key: 0,
|
|
2951
|
+
variant: "ghost",
|
|
2952
|
+
size: "icon",
|
|
2953
|
+
class: "size-8 shrink-0",
|
|
2954
|
+
onClick: handleBackToDetails
|
|
2955
|
+
}, {
|
|
2956
|
+
default: withCtx(() => [
|
|
2957
|
+
createVNode(unref(ArrowLeft), { class: "size-4" })
|
|
2958
|
+
]),
|
|
2959
|
+
_: 1
|
|
2960
|
+
})) : createCommentVNode("", true),
|
|
2961
|
+
createVNode(unref(SheetTitle), { class: "text-left text-lg" }, {
|
|
2962
|
+
default: withCtx(() => [
|
|
2963
|
+
createTextVNode(toDisplayString(unref(viewMode) === "diff" ? "Commit Changes" : __props.task.title), 1)
|
|
2964
|
+
]),
|
|
2965
|
+
_: 1
|
|
2966
|
+
})
|
|
2967
|
+
]),
|
|
2968
|
+
createVNode(unref(SheetDescription), { class: "sr-only" }, {
|
|
2969
|
+
default: withCtx(() => [
|
|
2970
|
+
createTextVNode("Task details")
|
|
2971
|
+
]),
|
|
2972
|
+
_: 1
|
|
2973
|
+
})
|
|
2974
|
+
];
|
|
2975
|
+
}
|
|
2976
|
+
}),
|
|
2977
|
+
_: 1
|
|
2978
|
+
}, _parent3, _scopeId2));
|
|
2979
|
+
} else {
|
|
2980
|
+
_push3(`<!---->`);
|
|
2981
|
+
}
|
|
2982
|
+
if (__props.task && unref(viewMode) === "diff" && unref(selectedCommitSha) && __props.repoId) {
|
|
2983
|
+
_push3(`<div class="min-h-0 flex-1 overflow-hidden"${_scopeId2}>`);
|
|
2984
|
+
_push3(ssrRenderComponent(_component_GitDiffPanel, {
|
|
2985
|
+
"repo-id": __props.repoId,
|
|
2986
|
+
"commit-sha": unref(selectedCommitSha),
|
|
2987
|
+
"repo-path": unref(selectedCommitRepo) || void 0,
|
|
2988
|
+
class: "h-full",
|
|
2989
|
+
onClose: handleBackToDetails
|
|
2990
|
+
}, null, _parent3, _scopeId2));
|
|
2991
|
+
_push3(`</div>`);
|
|
2992
|
+
} else if (__props.task) {
|
|
2993
|
+
_push3(`<div class="min-h-0 flex-1 space-y-4 overflow-y-auto px-6"${_scopeId2}><div class="flex flex-wrap items-center gap-2"${_scopeId2}>`);
|
|
2994
|
+
_push3(ssrRenderComponent(unref(Badge), {
|
|
2995
|
+
variant: unref(categoryConfig).variant
|
|
2996
|
+
}, {
|
|
2997
|
+
default: withCtx((_3, _push4, _parent4, _scopeId3) => {
|
|
2998
|
+
if (_push4) {
|
|
2999
|
+
_push4(ssrRenderComponent(unref(Tag), { class: "mr-1 size-3" }, null, _parent4, _scopeId3));
|
|
3000
|
+
_push4(` ${ssrInterpolate(unref(categoryConfig).label)}`);
|
|
3001
|
+
} else {
|
|
3002
|
+
return [
|
|
3003
|
+
createVNode(unref(Tag), { class: "mr-1 size-3" }),
|
|
3004
|
+
createTextVNode(" " + toDisplayString(unref(categoryConfig).label), 1)
|
|
3005
|
+
];
|
|
3006
|
+
}
|
|
3007
|
+
}),
|
|
3008
|
+
_: 1
|
|
3009
|
+
}, _parent3, _scopeId2));
|
|
3010
|
+
_push3(ssrRenderComponent(unref(Badge), {
|
|
3011
|
+
variant: "outline",
|
|
3012
|
+
class: unref(priorityConfig).class
|
|
3013
|
+
}, {
|
|
3014
|
+
default: withCtx((_3, _push4, _parent4, _scopeId3) => {
|
|
3015
|
+
if (_push4) {
|
|
3016
|
+
_push4(ssrRenderComponent(unref(AlertTriangle), { class: "mr-1 size-3" }, null, _parent4, _scopeId3));
|
|
3017
|
+
_push4(` ${ssrInterpolate(unref(priorityConfig).label)}`);
|
|
3018
|
+
} else {
|
|
3019
|
+
return [
|
|
3020
|
+
createVNode(unref(AlertTriangle), { class: "mr-1 size-3" }),
|
|
3021
|
+
createTextVNode(" " + toDisplayString(unref(priorityConfig).label), 1)
|
|
3022
|
+
];
|
|
3023
|
+
}
|
|
3024
|
+
}),
|
|
3025
|
+
_: 1
|
|
3026
|
+
}, _parent3, _scopeId2));
|
|
3027
|
+
_push3(ssrRenderComponent(unref(Badge), {
|
|
3028
|
+
variant: "outline",
|
|
3029
|
+
class: unref(statusConfig).class
|
|
3030
|
+
}, {
|
|
3031
|
+
default: withCtx((_3, _push4, _parent4, _scopeId3) => {
|
|
3032
|
+
if (_push4) {
|
|
3033
|
+
ssrRenderVNode(_push4, createVNode(resolveDynamicComponent(unref(statusConfig).icon), { class: "mr-1 size-3" }, null), _parent4, _scopeId3);
|
|
3034
|
+
_push4(` ${ssrInterpolate(unref(statusConfig).label)}`);
|
|
3035
|
+
} else {
|
|
3036
|
+
return [
|
|
3037
|
+
(openBlock(), createBlock(resolveDynamicComponent(unref(statusConfig).icon), { class: "mr-1 size-3" })),
|
|
3038
|
+
createTextVNode(" " + toDisplayString(unref(statusConfig).label), 1)
|
|
3039
|
+
];
|
|
3040
|
+
}
|
|
3041
|
+
}),
|
|
3042
|
+
_: 1
|
|
3043
|
+
}, _parent3, _scopeId2));
|
|
3044
|
+
_push3(`</div><div class="space-y-2"${_scopeId2}><h4 class="text-sm font-medium"${_scopeId2}>Description</h4><p class="text-sm text-muted-foreground leading-relaxed"${_scopeId2}>${ssrInterpolate(__props.task.description)}</p></div>`);
|
|
3045
|
+
_push3(ssrRenderComponent(unref(Separator), null, null, _parent3, _scopeId2));
|
|
3046
|
+
if (__props.task.steps.length > 0) {
|
|
3047
|
+
_push3(`<div class="space-y-2"${_scopeId2}><h4 class="flex items-center gap-2 text-sm font-medium"${_scopeId2}>`);
|
|
3048
|
+
_push3(ssrRenderComponent(unref(ListOrdered), { class: "size-4" }, null, _parent3, _scopeId2));
|
|
3049
|
+
_push3(` Steps </h4><ol class="ml-4 list-decimal space-y-1 text-sm text-muted-foreground"${_scopeId2}><!--[-->`);
|
|
3050
|
+
ssrRenderList(__props.task.steps, (step, index) => {
|
|
3051
|
+
_push3(`<li class="pl-1"${_scopeId2}>${ssrInterpolate(step)}</li>`);
|
|
3052
|
+
});
|
|
3053
|
+
_push3(`<!--]--></ol></div>`);
|
|
3054
|
+
} else {
|
|
3055
|
+
_push3(`<!---->`);
|
|
3056
|
+
}
|
|
3057
|
+
if (__props.task.steps.length > 0 && __props.task.passes.length > 0) {
|
|
3058
|
+
_push3(ssrRenderComponent(unref(Separator), null, null, _parent3, _scopeId2));
|
|
3059
|
+
} else {
|
|
3060
|
+
_push3(`<!---->`);
|
|
3061
|
+
}
|
|
3062
|
+
if (__props.task.passes.length > 0) {
|
|
3063
|
+
_push3(`<div class="space-y-2"${_scopeId2}><h4 class="flex items-center gap-2 text-sm font-medium"${_scopeId2}>`);
|
|
3064
|
+
_push3(ssrRenderComponent(unref(CheckSquare), { class: "size-4" }, null, _parent3, _scopeId2));
|
|
3065
|
+
_push3(` Pass Criteria </h4><ul class="space-y-1.5 text-sm text-muted-foreground"${_scopeId2}><!--[-->`);
|
|
3066
|
+
ssrRenderList(__props.task.passes, (pass, index) => {
|
|
3067
|
+
_push3(`<li class="flex items-start gap-2"${_scopeId2}><div class="${ssrRenderClass([__props.task.status === "completed" ? "border-primary bg-primary text-primary-foreground" : "border-muted-foreground/50", "mt-0.5 flex size-4 shrink-0 items-center justify-center rounded border"])}"${_scopeId2}>`);
|
|
3068
|
+
if (__props.task.status === "completed") {
|
|
3069
|
+
_push3(ssrRenderComponent(unref(Check), { class: "size-3" }, null, _parent3, _scopeId2));
|
|
3070
|
+
} else {
|
|
3071
|
+
_push3(`<!---->`);
|
|
3072
|
+
}
|
|
3073
|
+
_push3(`</div><span${_scopeId2}>${ssrInterpolate(pass)}</span></li>`);
|
|
3074
|
+
});
|
|
3075
|
+
_push3(`<!--]--></ul></div>`);
|
|
3076
|
+
} else {
|
|
3077
|
+
_push3(`<!---->`);
|
|
3078
|
+
}
|
|
3079
|
+
if (__props.task.dependencies.length > 0) {
|
|
3080
|
+
_push3(ssrRenderComponent(unref(Separator), null, null, _parent3, _scopeId2));
|
|
3081
|
+
} else {
|
|
3082
|
+
_push3(`<!---->`);
|
|
3083
|
+
}
|
|
3084
|
+
if (__props.task.dependencies.length > 0) {
|
|
3085
|
+
_push3(`<div class="space-y-2"${_scopeId2}><h4 class="flex items-center gap-2 text-sm font-medium"${_scopeId2}>`);
|
|
3086
|
+
_push3(ssrRenderComponent(unref(Link2), { class: "size-4" }, null, _parent3, _scopeId2));
|
|
3087
|
+
_push3(` Dependencies </h4><ul class="space-y-1 text-sm text-muted-foreground"${_scopeId2}><!--[-->`);
|
|
3088
|
+
ssrRenderList(__props.task.dependencies, (depId) => {
|
|
3089
|
+
_push3(`<li class="flex items-center gap-2"${_scopeId2}><span class="font-mono text-xs"${_scopeId2}>${ssrInterpolate(depId)}</span><span${_scopeId2}>${ssrInterpolate(getTaskTitle(depId))}</span></li>`);
|
|
3090
|
+
});
|
|
3091
|
+
_push3(`<!--]--></ul></div>`);
|
|
3092
|
+
} else {
|
|
3093
|
+
_push3(`<!---->`);
|
|
3094
|
+
}
|
|
3095
|
+
if (unref(hasCommits)) {
|
|
3096
|
+
_push3(`<!--[-->`);
|
|
3097
|
+
_push3(ssrRenderComponent(unref(Separator), null, null, _parent3, _scopeId2));
|
|
3098
|
+
_push3(`<div class="space-y-2"${_scopeId2}><h4 class="flex items-center gap-2 text-sm font-medium"${_scopeId2}>`);
|
|
3099
|
+
_push3(ssrRenderComponent(unref(Diff), { class: "size-4" }, null, _parent3, _scopeId2));
|
|
3100
|
+
_push3(` Changes </h4>`);
|
|
3101
|
+
_push3(ssrRenderComponent(_component_GitCommitList, {
|
|
3102
|
+
commits: __props.commits,
|
|
3103
|
+
"repo-id": __props.repoId,
|
|
3104
|
+
onSelect: handleCommitSelect
|
|
3105
|
+
}, null, _parent3, _scopeId2));
|
|
3106
|
+
_push3(`</div><!--]-->`);
|
|
3107
|
+
} else {
|
|
3108
|
+
_push3(`<!---->`);
|
|
3109
|
+
}
|
|
3110
|
+
if (__props.task.startedAt || __props.task.completedAt) {
|
|
3111
|
+
_push3(`<div class="space-y-2"${_scopeId2}>`);
|
|
3112
|
+
_push3(ssrRenderComponent(unref(Separator), null, null, _parent3, _scopeId2));
|
|
3113
|
+
_push3(`<div class="flex flex-col gap-1 text-xs text-muted-foreground"${_scopeId2}>`);
|
|
3114
|
+
if (__props.task.startedAt) {
|
|
3115
|
+
_push3(`<div class="flex items-center gap-2"${_scopeId2}>`);
|
|
3116
|
+
_push3(ssrRenderComponent(unref(Calendar), { class: "size-3" }, null, _parent3, _scopeId2));
|
|
3117
|
+
_push3(`<span${_scopeId2}>Started: ${ssrInterpolate(formatDate(__props.task.startedAt))}</span></div>`);
|
|
3118
|
+
} else {
|
|
3119
|
+
_push3(`<!---->`);
|
|
3120
|
+
}
|
|
3121
|
+
if (__props.task.completedAt) {
|
|
3122
|
+
_push3(`<div class="flex items-center gap-2"${_scopeId2}>`);
|
|
3123
|
+
_push3(ssrRenderComponent(unref(CheckCircle2), { class: "size-3" }, null, _parent3, _scopeId2));
|
|
3124
|
+
_push3(`<span${_scopeId2}>Completed: ${ssrInterpolate(formatDate(__props.task.completedAt))}</span></div>`);
|
|
3125
|
+
} else {
|
|
3126
|
+
_push3(`<!---->`);
|
|
3127
|
+
}
|
|
3128
|
+
_push3(`</div></div>`);
|
|
3129
|
+
} else {
|
|
3130
|
+
_push3(`<!---->`);
|
|
3131
|
+
}
|
|
3132
|
+
_push3(`</div>`);
|
|
3133
|
+
} else {
|
|
3134
|
+
_push3(`<!---->`);
|
|
3135
|
+
}
|
|
3136
|
+
_push3(ssrRenderComponent(unref(SheetFooter), { class: "px-6 pb-6" }, {
|
|
3137
|
+
default: withCtx((_3, _push4, _parent4, _scopeId3) => {
|
|
3138
|
+
if (_push4) {
|
|
3139
|
+
_push4(ssrRenderComponent(unref(SheetClose), { "as-child": "" }, {
|
|
3140
|
+
default: withCtx((_4, _push5, _parent5, _scopeId4) => {
|
|
3141
|
+
if (_push5) {
|
|
3142
|
+
_push5(ssrRenderComponent(unref(Button), {
|
|
3143
|
+
variant: "outline",
|
|
3144
|
+
class: "w-full"
|
|
3145
|
+
}, {
|
|
3146
|
+
default: withCtx((_5, _push6, _parent6, _scopeId5) => {
|
|
3147
|
+
if (_push6) {
|
|
3148
|
+
_push6(`Close`);
|
|
3149
|
+
} else {
|
|
3150
|
+
return [
|
|
3151
|
+
createTextVNode("Close")
|
|
3152
|
+
];
|
|
3153
|
+
}
|
|
3154
|
+
}),
|
|
3155
|
+
_: 1
|
|
3156
|
+
}, _parent5, _scopeId4));
|
|
3157
|
+
} else {
|
|
3158
|
+
return [
|
|
3159
|
+
createVNode(unref(Button), {
|
|
3160
|
+
variant: "outline",
|
|
3161
|
+
class: "w-full"
|
|
3162
|
+
}, {
|
|
3163
|
+
default: withCtx(() => [
|
|
3164
|
+
createTextVNode("Close")
|
|
3165
|
+
]),
|
|
3166
|
+
_: 1
|
|
3167
|
+
})
|
|
3168
|
+
];
|
|
3169
|
+
}
|
|
3170
|
+
}),
|
|
3171
|
+
_: 1
|
|
3172
|
+
}, _parent4, _scopeId3));
|
|
3173
|
+
} else {
|
|
3174
|
+
return [
|
|
3175
|
+
createVNode(unref(SheetClose), { "as-child": "" }, {
|
|
3176
|
+
default: withCtx(() => [
|
|
3177
|
+
createVNode(unref(Button), {
|
|
3178
|
+
variant: "outline",
|
|
3179
|
+
class: "w-full"
|
|
3180
|
+
}, {
|
|
3181
|
+
default: withCtx(() => [
|
|
3182
|
+
createTextVNode("Close")
|
|
3183
|
+
]),
|
|
3184
|
+
_: 1
|
|
3185
|
+
})
|
|
3186
|
+
]),
|
|
3187
|
+
_: 1
|
|
3188
|
+
})
|
|
3189
|
+
];
|
|
3190
|
+
}
|
|
3191
|
+
}),
|
|
3192
|
+
_: 1
|
|
3193
|
+
}, _parent3, _scopeId2));
|
|
3194
|
+
} else {
|
|
3195
|
+
return [
|
|
3196
|
+
__props.task ? (openBlock(), createBlock(unref(SheetHeader), {
|
|
3197
|
+
key: 0,
|
|
3198
|
+
class: "px-6 pr-12"
|
|
3199
|
+
}, {
|
|
3200
|
+
default: withCtx(() => [
|
|
3201
|
+
createVNode("div", { class: "flex items-center gap-2" }, [
|
|
3202
|
+
unref(viewMode) === "diff" ? (openBlock(), createBlock(unref(Button), {
|
|
3203
|
+
key: 0,
|
|
3204
|
+
variant: "ghost",
|
|
3205
|
+
size: "icon",
|
|
3206
|
+
class: "size-8 shrink-0",
|
|
3207
|
+
onClick: handleBackToDetails
|
|
3208
|
+
}, {
|
|
3209
|
+
default: withCtx(() => [
|
|
3210
|
+
createVNode(unref(ArrowLeft), { class: "size-4" })
|
|
3211
|
+
]),
|
|
3212
|
+
_: 1
|
|
3213
|
+
})) : createCommentVNode("", true),
|
|
3214
|
+
createVNode(unref(SheetTitle), { class: "text-left text-lg" }, {
|
|
3215
|
+
default: withCtx(() => [
|
|
3216
|
+
createTextVNode(toDisplayString(unref(viewMode) === "diff" ? "Commit Changes" : __props.task.title), 1)
|
|
3217
|
+
]),
|
|
3218
|
+
_: 1
|
|
3219
|
+
})
|
|
3220
|
+
]),
|
|
3221
|
+
createVNode(unref(SheetDescription), { class: "sr-only" }, {
|
|
3222
|
+
default: withCtx(() => [
|
|
3223
|
+
createTextVNode("Task details")
|
|
3224
|
+
]),
|
|
3225
|
+
_: 1
|
|
3226
|
+
})
|
|
3227
|
+
]),
|
|
3228
|
+
_: 1
|
|
3229
|
+
})) : createCommentVNode("", true),
|
|
3230
|
+
__props.task && unref(viewMode) === "diff" && unref(selectedCommitSha) && __props.repoId ? (openBlock(), createBlock("div", {
|
|
3231
|
+
key: 1,
|
|
3232
|
+
class: "min-h-0 flex-1 overflow-hidden"
|
|
3233
|
+
}, [
|
|
3234
|
+
createVNode(_component_GitDiffPanel, {
|
|
3235
|
+
"repo-id": __props.repoId,
|
|
3236
|
+
"commit-sha": unref(selectedCommitSha),
|
|
3237
|
+
"repo-path": unref(selectedCommitRepo) || void 0,
|
|
3238
|
+
class: "h-full",
|
|
3239
|
+
onClose: handleBackToDetails
|
|
3240
|
+
}, null, 8, ["repo-id", "commit-sha", "repo-path"])
|
|
3241
|
+
])) : __props.task ? (openBlock(), createBlock("div", {
|
|
3242
|
+
key: 2,
|
|
3243
|
+
class: "min-h-0 flex-1 space-y-4 overflow-y-auto px-6"
|
|
3244
|
+
}, [
|
|
3245
|
+
createVNode("div", { class: "flex flex-wrap items-center gap-2" }, [
|
|
3246
|
+
createVNode(unref(Badge), {
|
|
3247
|
+
variant: unref(categoryConfig).variant
|
|
3248
|
+
}, {
|
|
3249
|
+
default: withCtx(() => [
|
|
3250
|
+
createVNode(unref(Tag), { class: "mr-1 size-3" }),
|
|
3251
|
+
createTextVNode(" " + toDisplayString(unref(categoryConfig).label), 1)
|
|
3252
|
+
]),
|
|
3253
|
+
_: 1
|
|
3254
|
+
}, 8, ["variant"]),
|
|
3255
|
+
createVNode(unref(Badge), {
|
|
3256
|
+
variant: "outline",
|
|
3257
|
+
class: unref(priorityConfig).class
|
|
3258
|
+
}, {
|
|
3259
|
+
default: withCtx(() => [
|
|
3260
|
+
createVNode(unref(AlertTriangle), { class: "mr-1 size-3" }),
|
|
3261
|
+
createTextVNode(" " + toDisplayString(unref(priorityConfig).label), 1)
|
|
3262
|
+
]),
|
|
3263
|
+
_: 1
|
|
3264
|
+
}, 8, ["class"]),
|
|
3265
|
+
createVNode(unref(Badge), {
|
|
3266
|
+
variant: "outline",
|
|
3267
|
+
class: unref(statusConfig).class
|
|
3268
|
+
}, {
|
|
3269
|
+
default: withCtx(() => [
|
|
3270
|
+
(openBlock(), createBlock(resolveDynamicComponent(unref(statusConfig).icon), { class: "mr-1 size-3" })),
|
|
3271
|
+
createTextVNode(" " + toDisplayString(unref(statusConfig).label), 1)
|
|
3272
|
+
]),
|
|
3273
|
+
_: 1
|
|
3274
|
+
}, 8, ["class"])
|
|
3275
|
+
]),
|
|
3276
|
+
createVNode("div", { class: "space-y-2" }, [
|
|
3277
|
+
createVNode("h4", { class: "text-sm font-medium" }, "Description"),
|
|
3278
|
+
createVNode("p", { class: "text-sm text-muted-foreground leading-relaxed" }, toDisplayString(__props.task.description), 1)
|
|
3279
|
+
]),
|
|
3280
|
+
createVNode(unref(Separator)),
|
|
3281
|
+
__props.task.steps.length > 0 ? (openBlock(), createBlock("div", {
|
|
3282
|
+
key: 0,
|
|
3283
|
+
class: "space-y-2"
|
|
3284
|
+
}, [
|
|
3285
|
+
createVNode("h4", { class: "flex items-center gap-2 text-sm font-medium" }, [
|
|
3286
|
+
createVNode(unref(ListOrdered), { class: "size-4" }),
|
|
3287
|
+
createTextVNode(" Steps ")
|
|
3288
|
+
]),
|
|
3289
|
+
createVNode("ol", { class: "ml-4 list-decimal space-y-1 text-sm text-muted-foreground" }, [
|
|
3290
|
+
(openBlock(true), createBlock(Fragment, null, renderList(__props.task.steps, (step, index) => {
|
|
3291
|
+
return openBlock(), createBlock("li", {
|
|
3292
|
+
key: index,
|
|
3293
|
+
class: "pl-1"
|
|
3294
|
+
}, toDisplayString(step), 1);
|
|
3295
|
+
}), 128))
|
|
3296
|
+
])
|
|
3297
|
+
])) : createCommentVNode("", true),
|
|
3298
|
+
__props.task.steps.length > 0 && __props.task.passes.length > 0 ? (openBlock(), createBlock(unref(Separator), { key: 1 })) : createCommentVNode("", true),
|
|
3299
|
+
__props.task.passes.length > 0 ? (openBlock(), createBlock("div", {
|
|
3300
|
+
key: 2,
|
|
3301
|
+
class: "space-y-2"
|
|
3302
|
+
}, [
|
|
3303
|
+
createVNode("h4", { class: "flex items-center gap-2 text-sm font-medium" }, [
|
|
3304
|
+
createVNode(unref(CheckSquare), { class: "size-4" }),
|
|
3305
|
+
createTextVNode(" Pass Criteria ")
|
|
3306
|
+
]),
|
|
3307
|
+
createVNode("ul", { class: "space-y-1.5 text-sm text-muted-foreground" }, [
|
|
3308
|
+
(openBlock(true), createBlock(Fragment, null, renderList(__props.task.passes, (pass, index) => {
|
|
3309
|
+
return openBlock(), createBlock("li", {
|
|
3310
|
+
key: index,
|
|
3311
|
+
class: "flex items-start gap-2"
|
|
3312
|
+
}, [
|
|
3313
|
+
createVNode("div", {
|
|
3314
|
+
class: ["mt-0.5 flex size-4 shrink-0 items-center justify-center rounded border", __props.task.status === "completed" ? "border-primary bg-primary text-primary-foreground" : "border-muted-foreground/50"]
|
|
3315
|
+
}, [
|
|
3316
|
+
__props.task.status === "completed" ? (openBlock(), createBlock(unref(Check), {
|
|
3317
|
+
key: 0,
|
|
3318
|
+
class: "size-3"
|
|
3319
|
+
})) : createCommentVNode("", true)
|
|
3320
|
+
], 2),
|
|
3321
|
+
createVNode("span", null, toDisplayString(pass), 1)
|
|
3322
|
+
]);
|
|
3323
|
+
}), 128))
|
|
3324
|
+
])
|
|
3325
|
+
])) : createCommentVNode("", true),
|
|
3326
|
+
__props.task.dependencies.length > 0 ? (openBlock(), createBlock(unref(Separator), { key: 3 })) : createCommentVNode("", true),
|
|
3327
|
+
__props.task.dependencies.length > 0 ? (openBlock(), createBlock("div", {
|
|
3328
|
+
key: 4,
|
|
3329
|
+
class: "space-y-2"
|
|
3330
|
+
}, [
|
|
3331
|
+
createVNode("h4", { class: "flex items-center gap-2 text-sm font-medium" }, [
|
|
3332
|
+
createVNode(unref(Link2), { class: "size-4" }),
|
|
3333
|
+
createTextVNode(" Dependencies ")
|
|
3334
|
+
]),
|
|
3335
|
+
createVNode("ul", { class: "space-y-1 text-sm text-muted-foreground" }, [
|
|
3336
|
+
(openBlock(true), createBlock(Fragment, null, renderList(__props.task.dependencies, (depId) => {
|
|
3337
|
+
return openBlock(), createBlock("li", {
|
|
3338
|
+
key: depId,
|
|
3339
|
+
class: "flex items-center gap-2"
|
|
3340
|
+
}, [
|
|
3341
|
+
createVNode("span", { class: "font-mono text-xs" }, toDisplayString(depId), 1),
|
|
3342
|
+
createVNode("span", null, toDisplayString(getTaskTitle(depId)), 1)
|
|
3343
|
+
]);
|
|
3344
|
+
}), 128))
|
|
3345
|
+
])
|
|
3346
|
+
])) : createCommentVNode("", true),
|
|
3347
|
+
unref(hasCommits) ? (openBlock(), createBlock(Fragment, { key: 5 }, [
|
|
3348
|
+
createVNode(unref(Separator)),
|
|
3349
|
+
createVNode("div", { class: "space-y-2" }, [
|
|
3350
|
+
createVNode("h4", { class: "flex items-center gap-2 text-sm font-medium" }, [
|
|
3351
|
+
createVNode(unref(Diff), { class: "size-4" }),
|
|
3352
|
+
createTextVNode(" Changes ")
|
|
3353
|
+
]),
|
|
3354
|
+
createVNode(_component_GitCommitList, {
|
|
3355
|
+
commits: __props.commits,
|
|
3356
|
+
"repo-id": __props.repoId,
|
|
3357
|
+
onSelect: handleCommitSelect
|
|
3358
|
+
}, null, 8, ["commits", "repo-id"])
|
|
3359
|
+
])
|
|
3360
|
+
], 64)) : createCommentVNode("", true),
|
|
3361
|
+
__props.task.startedAt || __props.task.completedAt ? (openBlock(), createBlock("div", {
|
|
3362
|
+
key: 6,
|
|
3363
|
+
class: "space-y-2"
|
|
3364
|
+
}, [
|
|
3365
|
+
createVNode(unref(Separator)),
|
|
3366
|
+
createVNode("div", { class: "flex flex-col gap-1 text-xs text-muted-foreground" }, [
|
|
3367
|
+
__props.task.startedAt ? (openBlock(), createBlock("div", {
|
|
3368
|
+
key: 0,
|
|
3369
|
+
class: "flex items-center gap-2"
|
|
3370
|
+
}, [
|
|
3371
|
+
createVNode(unref(Calendar), { class: "size-3" }),
|
|
3372
|
+
createVNode("span", null, "Started: " + toDisplayString(formatDate(__props.task.startedAt)), 1)
|
|
3373
|
+
])) : createCommentVNode("", true),
|
|
3374
|
+
__props.task.completedAt ? (openBlock(), createBlock("div", {
|
|
3375
|
+
key: 1,
|
|
3376
|
+
class: "flex items-center gap-2"
|
|
3377
|
+
}, [
|
|
3378
|
+
createVNode(unref(CheckCircle2), { class: "size-3" }),
|
|
3379
|
+
createVNode("span", null, "Completed: " + toDisplayString(formatDate(__props.task.completedAt)), 1)
|
|
3380
|
+
])) : createCommentVNode("", true)
|
|
3381
|
+
])
|
|
3382
|
+
])) : createCommentVNode("", true)
|
|
3383
|
+
])) : createCommentVNode("", true),
|
|
3384
|
+
createVNode(unref(SheetFooter), { class: "px-6 pb-6" }, {
|
|
3385
|
+
default: withCtx(() => [
|
|
3386
|
+
createVNode(unref(SheetClose), { "as-child": "" }, {
|
|
3387
|
+
default: withCtx(() => [
|
|
3388
|
+
createVNode(unref(Button), {
|
|
3389
|
+
variant: "outline",
|
|
3390
|
+
class: "w-full"
|
|
3391
|
+
}, {
|
|
3392
|
+
default: withCtx(() => [
|
|
3393
|
+
createTextVNode("Close")
|
|
3394
|
+
]),
|
|
3395
|
+
_: 1
|
|
3396
|
+
})
|
|
3397
|
+
]),
|
|
3398
|
+
_: 1
|
|
3399
|
+
})
|
|
3400
|
+
]),
|
|
3401
|
+
_: 1
|
|
3402
|
+
})
|
|
3403
|
+
];
|
|
3404
|
+
}
|
|
3405
|
+
}),
|
|
3406
|
+
_: 1
|
|
3407
|
+
}, _parent2, _scopeId));
|
|
3408
|
+
} else {
|
|
3409
|
+
return [
|
|
3410
|
+
createVNode(unref(SheetContent), {
|
|
3411
|
+
class: ["flex h-full w-full flex-col overflow-hidden sm:max-w-lg", { "sm:!max-w-none !max-w-none": unref(viewMode) === "diff" }]
|
|
3412
|
+
}, {
|
|
3413
|
+
default: withCtx(() => [
|
|
3414
|
+
__props.task ? (openBlock(), createBlock(unref(SheetHeader), {
|
|
3415
|
+
key: 0,
|
|
3416
|
+
class: "px-6 pr-12"
|
|
3417
|
+
}, {
|
|
3418
|
+
default: withCtx(() => [
|
|
3419
|
+
createVNode("div", { class: "flex items-center gap-2" }, [
|
|
3420
|
+
unref(viewMode) === "diff" ? (openBlock(), createBlock(unref(Button), {
|
|
3421
|
+
key: 0,
|
|
3422
|
+
variant: "ghost",
|
|
3423
|
+
size: "icon",
|
|
3424
|
+
class: "size-8 shrink-0",
|
|
3425
|
+
onClick: handleBackToDetails
|
|
3426
|
+
}, {
|
|
3427
|
+
default: withCtx(() => [
|
|
3428
|
+
createVNode(unref(ArrowLeft), { class: "size-4" })
|
|
3429
|
+
]),
|
|
3430
|
+
_: 1
|
|
3431
|
+
})) : createCommentVNode("", true),
|
|
3432
|
+
createVNode(unref(SheetTitle), { class: "text-left text-lg" }, {
|
|
3433
|
+
default: withCtx(() => [
|
|
3434
|
+
createTextVNode(toDisplayString(unref(viewMode) === "diff" ? "Commit Changes" : __props.task.title), 1)
|
|
3435
|
+
]),
|
|
3436
|
+
_: 1
|
|
3437
|
+
})
|
|
3438
|
+
]),
|
|
3439
|
+
createVNode(unref(SheetDescription), { class: "sr-only" }, {
|
|
3440
|
+
default: withCtx(() => [
|
|
3441
|
+
createTextVNode("Task details")
|
|
3442
|
+
]),
|
|
3443
|
+
_: 1
|
|
3444
|
+
})
|
|
3445
|
+
]),
|
|
3446
|
+
_: 1
|
|
3447
|
+
})) : createCommentVNode("", true),
|
|
3448
|
+
__props.task && unref(viewMode) === "diff" && unref(selectedCommitSha) && __props.repoId ? (openBlock(), createBlock("div", {
|
|
3449
|
+
key: 1,
|
|
3450
|
+
class: "min-h-0 flex-1 overflow-hidden"
|
|
3451
|
+
}, [
|
|
3452
|
+
createVNode(_component_GitDiffPanel, {
|
|
3453
|
+
"repo-id": __props.repoId,
|
|
3454
|
+
"commit-sha": unref(selectedCommitSha),
|
|
3455
|
+
"repo-path": unref(selectedCommitRepo) || void 0,
|
|
3456
|
+
class: "h-full",
|
|
3457
|
+
onClose: handleBackToDetails
|
|
3458
|
+
}, null, 8, ["repo-id", "commit-sha", "repo-path"])
|
|
3459
|
+
])) : __props.task ? (openBlock(), createBlock("div", {
|
|
3460
|
+
key: 2,
|
|
3461
|
+
class: "min-h-0 flex-1 space-y-4 overflow-y-auto px-6"
|
|
3462
|
+
}, [
|
|
3463
|
+
createVNode("div", { class: "flex flex-wrap items-center gap-2" }, [
|
|
3464
|
+
createVNode(unref(Badge), {
|
|
3465
|
+
variant: unref(categoryConfig).variant
|
|
3466
|
+
}, {
|
|
3467
|
+
default: withCtx(() => [
|
|
3468
|
+
createVNode(unref(Tag), { class: "mr-1 size-3" }),
|
|
3469
|
+
createTextVNode(" " + toDisplayString(unref(categoryConfig).label), 1)
|
|
3470
|
+
]),
|
|
3471
|
+
_: 1
|
|
3472
|
+
}, 8, ["variant"]),
|
|
3473
|
+
createVNode(unref(Badge), {
|
|
3474
|
+
variant: "outline",
|
|
3475
|
+
class: unref(priorityConfig).class
|
|
3476
|
+
}, {
|
|
3477
|
+
default: withCtx(() => [
|
|
3478
|
+
createVNode(unref(AlertTriangle), { class: "mr-1 size-3" }),
|
|
3479
|
+
createTextVNode(" " + toDisplayString(unref(priorityConfig).label), 1)
|
|
3480
|
+
]),
|
|
3481
|
+
_: 1
|
|
3482
|
+
}, 8, ["class"]),
|
|
3483
|
+
createVNode(unref(Badge), {
|
|
3484
|
+
variant: "outline",
|
|
3485
|
+
class: unref(statusConfig).class
|
|
3486
|
+
}, {
|
|
3487
|
+
default: withCtx(() => [
|
|
3488
|
+
(openBlock(), createBlock(resolveDynamicComponent(unref(statusConfig).icon), { class: "mr-1 size-3" })),
|
|
3489
|
+
createTextVNode(" " + toDisplayString(unref(statusConfig).label), 1)
|
|
3490
|
+
]),
|
|
3491
|
+
_: 1
|
|
3492
|
+
}, 8, ["class"])
|
|
3493
|
+
]),
|
|
3494
|
+
createVNode("div", { class: "space-y-2" }, [
|
|
3495
|
+
createVNode("h4", { class: "text-sm font-medium" }, "Description"),
|
|
3496
|
+
createVNode("p", { class: "text-sm text-muted-foreground leading-relaxed" }, toDisplayString(__props.task.description), 1)
|
|
3497
|
+
]),
|
|
3498
|
+
createVNode(unref(Separator)),
|
|
3499
|
+
__props.task.steps.length > 0 ? (openBlock(), createBlock("div", {
|
|
3500
|
+
key: 0,
|
|
3501
|
+
class: "space-y-2"
|
|
3502
|
+
}, [
|
|
3503
|
+
createVNode("h4", { class: "flex items-center gap-2 text-sm font-medium" }, [
|
|
3504
|
+
createVNode(unref(ListOrdered), { class: "size-4" }),
|
|
3505
|
+
createTextVNode(" Steps ")
|
|
3506
|
+
]),
|
|
3507
|
+
createVNode("ol", { class: "ml-4 list-decimal space-y-1 text-sm text-muted-foreground" }, [
|
|
3508
|
+
(openBlock(true), createBlock(Fragment, null, renderList(__props.task.steps, (step, index) => {
|
|
3509
|
+
return openBlock(), createBlock("li", {
|
|
3510
|
+
key: index,
|
|
3511
|
+
class: "pl-1"
|
|
3512
|
+
}, toDisplayString(step), 1);
|
|
3513
|
+
}), 128))
|
|
3514
|
+
])
|
|
3515
|
+
])) : createCommentVNode("", true),
|
|
3516
|
+
__props.task.steps.length > 0 && __props.task.passes.length > 0 ? (openBlock(), createBlock(unref(Separator), { key: 1 })) : createCommentVNode("", true),
|
|
3517
|
+
__props.task.passes.length > 0 ? (openBlock(), createBlock("div", {
|
|
3518
|
+
key: 2,
|
|
3519
|
+
class: "space-y-2"
|
|
3520
|
+
}, [
|
|
3521
|
+
createVNode("h4", { class: "flex items-center gap-2 text-sm font-medium" }, [
|
|
3522
|
+
createVNode(unref(CheckSquare), { class: "size-4" }),
|
|
3523
|
+
createTextVNode(" Pass Criteria ")
|
|
3524
|
+
]),
|
|
3525
|
+
createVNode("ul", { class: "space-y-1.5 text-sm text-muted-foreground" }, [
|
|
3526
|
+
(openBlock(true), createBlock(Fragment, null, renderList(__props.task.passes, (pass, index) => {
|
|
3527
|
+
return openBlock(), createBlock("li", {
|
|
3528
|
+
key: index,
|
|
3529
|
+
class: "flex items-start gap-2"
|
|
3530
|
+
}, [
|
|
3531
|
+
createVNode("div", {
|
|
3532
|
+
class: ["mt-0.5 flex size-4 shrink-0 items-center justify-center rounded border", __props.task.status === "completed" ? "border-primary bg-primary text-primary-foreground" : "border-muted-foreground/50"]
|
|
3533
|
+
}, [
|
|
3534
|
+
__props.task.status === "completed" ? (openBlock(), createBlock(unref(Check), {
|
|
3535
|
+
key: 0,
|
|
3536
|
+
class: "size-3"
|
|
3537
|
+
})) : createCommentVNode("", true)
|
|
3538
|
+
], 2),
|
|
3539
|
+
createVNode("span", null, toDisplayString(pass), 1)
|
|
3540
|
+
]);
|
|
3541
|
+
}), 128))
|
|
3542
|
+
])
|
|
3543
|
+
])) : createCommentVNode("", true),
|
|
3544
|
+
__props.task.dependencies.length > 0 ? (openBlock(), createBlock(unref(Separator), { key: 3 })) : createCommentVNode("", true),
|
|
3545
|
+
__props.task.dependencies.length > 0 ? (openBlock(), createBlock("div", {
|
|
3546
|
+
key: 4,
|
|
3547
|
+
class: "space-y-2"
|
|
3548
|
+
}, [
|
|
3549
|
+
createVNode("h4", { class: "flex items-center gap-2 text-sm font-medium" }, [
|
|
3550
|
+
createVNode(unref(Link2), { class: "size-4" }),
|
|
3551
|
+
createTextVNode(" Dependencies ")
|
|
3552
|
+
]),
|
|
3553
|
+
createVNode("ul", { class: "space-y-1 text-sm text-muted-foreground" }, [
|
|
3554
|
+
(openBlock(true), createBlock(Fragment, null, renderList(__props.task.dependencies, (depId) => {
|
|
3555
|
+
return openBlock(), createBlock("li", {
|
|
3556
|
+
key: depId,
|
|
3557
|
+
class: "flex items-center gap-2"
|
|
3558
|
+
}, [
|
|
3559
|
+
createVNode("span", { class: "font-mono text-xs" }, toDisplayString(depId), 1),
|
|
3560
|
+
createVNode("span", null, toDisplayString(getTaskTitle(depId)), 1)
|
|
3561
|
+
]);
|
|
3562
|
+
}), 128))
|
|
3563
|
+
])
|
|
3564
|
+
])) : createCommentVNode("", true),
|
|
3565
|
+
unref(hasCommits) ? (openBlock(), createBlock(Fragment, { key: 5 }, [
|
|
3566
|
+
createVNode(unref(Separator)),
|
|
3567
|
+
createVNode("div", { class: "space-y-2" }, [
|
|
3568
|
+
createVNode("h4", { class: "flex items-center gap-2 text-sm font-medium" }, [
|
|
3569
|
+
createVNode(unref(Diff), { class: "size-4" }),
|
|
3570
|
+
createTextVNode(" Changes ")
|
|
3571
|
+
]),
|
|
3572
|
+
createVNode(_component_GitCommitList, {
|
|
3573
|
+
commits: __props.commits,
|
|
3574
|
+
"repo-id": __props.repoId,
|
|
3575
|
+
onSelect: handleCommitSelect
|
|
3576
|
+
}, null, 8, ["commits", "repo-id"])
|
|
3577
|
+
])
|
|
3578
|
+
], 64)) : createCommentVNode("", true),
|
|
3579
|
+
__props.task.startedAt || __props.task.completedAt ? (openBlock(), createBlock("div", {
|
|
3580
|
+
key: 6,
|
|
3581
|
+
class: "space-y-2"
|
|
3582
|
+
}, [
|
|
3583
|
+
createVNode(unref(Separator)),
|
|
3584
|
+
createVNode("div", { class: "flex flex-col gap-1 text-xs text-muted-foreground" }, [
|
|
3585
|
+
__props.task.startedAt ? (openBlock(), createBlock("div", {
|
|
3586
|
+
key: 0,
|
|
3587
|
+
class: "flex items-center gap-2"
|
|
3588
|
+
}, [
|
|
3589
|
+
createVNode(unref(Calendar), { class: "size-3" }),
|
|
3590
|
+
createVNode("span", null, "Started: " + toDisplayString(formatDate(__props.task.startedAt)), 1)
|
|
3591
|
+
])) : createCommentVNode("", true),
|
|
3592
|
+
__props.task.completedAt ? (openBlock(), createBlock("div", {
|
|
3593
|
+
key: 1,
|
|
3594
|
+
class: "flex items-center gap-2"
|
|
3595
|
+
}, [
|
|
3596
|
+
createVNode(unref(CheckCircle2), { class: "size-3" }),
|
|
3597
|
+
createVNode("span", null, "Completed: " + toDisplayString(formatDate(__props.task.completedAt)), 1)
|
|
3598
|
+
])) : createCommentVNode("", true)
|
|
3599
|
+
])
|
|
3600
|
+
])) : createCommentVNode("", true)
|
|
3601
|
+
])) : createCommentVNode("", true),
|
|
3602
|
+
createVNode(unref(SheetFooter), { class: "px-6 pb-6" }, {
|
|
3603
|
+
default: withCtx(() => [
|
|
3604
|
+
createVNode(unref(SheetClose), { "as-child": "" }, {
|
|
3605
|
+
default: withCtx(() => [
|
|
3606
|
+
createVNode(unref(Button), {
|
|
3607
|
+
variant: "outline",
|
|
3608
|
+
class: "w-full"
|
|
3609
|
+
}, {
|
|
3610
|
+
default: withCtx(() => [
|
|
3611
|
+
createTextVNode("Close")
|
|
3612
|
+
]),
|
|
3613
|
+
_: 1
|
|
3614
|
+
})
|
|
3615
|
+
]),
|
|
3616
|
+
_: 1
|
|
3617
|
+
})
|
|
3618
|
+
]),
|
|
3619
|
+
_: 1
|
|
3620
|
+
})
|
|
3621
|
+
]),
|
|
3622
|
+
_: 1
|
|
3623
|
+
}, 8, ["class"])
|
|
3624
|
+
];
|
|
3625
|
+
}
|
|
3626
|
+
}),
|
|
3627
|
+
_: 1
|
|
3628
|
+
}, _parent));
|
|
3629
|
+
};
|
|
3630
|
+
}
|
|
3631
|
+
});
|
|
3632
|
+
const _sfc_setup$5 = _sfc_main$5.setup;
|
|
3633
|
+
_sfc_main$5.setup = (props, ctx) => {
|
|
3634
|
+
const ssrContext = useSSRContext();
|
|
3635
|
+
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/tasks/Detail.vue");
|
|
3636
|
+
return _sfc_setup$5 ? _sfc_setup$5(props, ctx) : void 0;
|
|
3637
|
+
};
|
|
3638
|
+
const __nuxt_component_4 = Object.assign(_sfc_main$5, { __name: "TasksDetail" });
|
|
3639
|
+
const _sfc_main$4 = /* @__PURE__ */ defineComponent({
|
|
3640
|
+
__name: "Tabs",
|
|
3641
|
+
__ssrInlineRender: true,
|
|
3642
|
+
props: {
|
|
3643
|
+
defaultValue: {},
|
|
3644
|
+
orientation: {},
|
|
3645
|
+
dir: {},
|
|
3646
|
+
activationMode: {},
|
|
3647
|
+
modelValue: {},
|
|
3648
|
+
unmountOnHide: { type: Boolean },
|
|
3649
|
+
asChild: { type: Boolean },
|
|
3650
|
+
as: {},
|
|
3651
|
+
class: {}
|
|
3652
|
+
},
|
|
3653
|
+
emits: ["update:modelValue"],
|
|
3654
|
+
setup(__props, { emit: __emit }) {
|
|
3655
|
+
const props = __props;
|
|
3656
|
+
const emits = __emit;
|
|
3657
|
+
const delegatedProps = reactiveOmit(props, "class");
|
|
3658
|
+
const forwarded = useForwardPropsEmits(delegatedProps, emits);
|
|
3659
|
+
return (_ctx, _push, _parent, _attrs) => {
|
|
3660
|
+
_push(ssrRenderComponent(unref(TabsRoot), mergeProps({ "data-slot": "tabs" }, unref(forwarded), {
|
|
3661
|
+
class: unref(cn)("flex flex-col gap-2", props.class)
|
|
3662
|
+
}, _attrs), {
|
|
3663
|
+
default: withCtx((slotProps, _push2, _parent2, _scopeId) => {
|
|
3664
|
+
if (_push2) {
|
|
3665
|
+
ssrRenderSlot(_ctx.$slots, "default", slotProps, null, _push2, _parent2, _scopeId);
|
|
3666
|
+
} else {
|
|
3667
|
+
return [
|
|
3668
|
+
renderSlot(_ctx.$slots, "default", slotProps)
|
|
3669
|
+
];
|
|
3670
|
+
}
|
|
3671
|
+
}),
|
|
3672
|
+
_: 3
|
|
3673
|
+
}, _parent));
|
|
3674
|
+
};
|
|
3675
|
+
}
|
|
3676
|
+
});
|
|
3677
|
+
const _sfc_setup$4 = _sfc_main$4.setup;
|
|
3678
|
+
_sfc_main$4.setup = (props, ctx) => {
|
|
3679
|
+
const ssrContext = useSSRContext();
|
|
3680
|
+
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/ui/tabs/Tabs.vue");
|
|
3681
|
+
return _sfc_setup$4 ? _sfc_setup$4(props, ctx) : void 0;
|
|
3682
|
+
};
|
|
3683
|
+
const Tabs = Object.assign(_sfc_main$4, { __name: "UiTabs" });
|
|
3684
|
+
const _sfc_main$3 = /* @__PURE__ */ defineComponent({
|
|
3685
|
+
__name: "TabsContent",
|
|
3686
|
+
__ssrInlineRender: true,
|
|
3687
|
+
props: {
|
|
3688
|
+
value: {},
|
|
3689
|
+
forceMount: { type: Boolean },
|
|
3690
|
+
asChild: { type: Boolean },
|
|
3691
|
+
as: {},
|
|
3692
|
+
class: {}
|
|
3693
|
+
},
|
|
3694
|
+
setup(__props) {
|
|
3695
|
+
const props = __props;
|
|
3696
|
+
const delegatedProps = reactiveOmit(props, "class");
|
|
3697
|
+
return (_ctx, _push, _parent, _attrs) => {
|
|
3698
|
+
_push(ssrRenderComponent(unref(TabsContent$1), mergeProps({
|
|
3699
|
+
"data-slot": "tabs-content",
|
|
3700
|
+
class: unref(cn)("flex-1 outline-none", props.class)
|
|
3701
|
+
}, unref(delegatedProps), _attrs), {
|
|
3702
|
+
default: withCtx((_, _push2, _parent2, _scopeId) => {
|
|
3703
|
+
if (_push2) {
|
|
3704
|
+
ssrRenderSlot(_ctx.$slots, "default", {}, null, _push2, _parent2, _scopeId);
|
|
3705
|
+
} else {
|
|
3706
|
+
return [
|
|
3707
|
+
renderSlot(_ctx.$slots, "default")
|
|
3708
|
+
];
|
|
3709
|
+
}
|
|
3710
|
+
}),
|
|
3711
|
+
_: 3
|
|
3712
|
+
}, _parent));
|
|
3713
|
+
};
|
|
3714
|
+
}
|
|
3715
|
+
});
|
|
3716
|
+
const _sfc_setup$3 = _sfc_main$3.setup;
|
|
3717
|
+
_sfc_main$3.setup = (props, ctx) => {
|
|
3718
|
+
const ssrContext = useSSRContext();
|
|
3719
|
+
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/ui/tabs/TabsContent.vue");
|
|
3720
|
+
return _sfc_setup$3 ? _sfc_setup$3(props, ctx) : void 0;
|
|
3721
|
+
};
|
|
3722
|
+
const TabsContent = Object.assign(_sfc_main$3, { __name: "UiTabsContent" });
|
|
3723
|
+
const _sfc_main$2 = /* @__PURE__ */ defineComponent({
|
|
3724
|
+
__name: "TabsList",
|
|
3725
|
+
__ssrInlineRender: true,
|
|
3726
|
+
props: {
|
|
3727
|
+
loop: { type: Boolean },
|
|
3728
|
+
asChild: { type: Boolean },
|
|
3729
|
+
as: {},
|
|
3730
|
+
class: {}
|
|
3731
|
+
},
|
|
3732
|
+
setup(__props) {
|
|
3733
|
+
const props = __props;
|
|
3734
|
+
const delegatedProps = reactiveOmit(props, "class");
|
|
3735
|
+
return (_ctx, _push, _parent, _attrs) => {
|
|
3736
|
+
_push(ssrRenderComponent(unref(TabsList$1), mergeProps({ "data-slot": "tabs-list" }, unref(delegatedProps), {
|
|
3737
|
+
class: unref(cn)(
|
|
3738
|
+
"bg-muted text-muted-foreground inline-flex h-9 w-fit items-center justify-center rounded-lg p-[3px]",
|
|
3739
|
+
props.class
|
|
3740
|
+
)
|
|
3741
|
+
}, _attrs), {
|
|
3742
|
+
default: withCtx((_, _push2, _parent2, _scopeId) => {
|
|
3743
|
+
if (_push2) {
|
|
3744
|
+
ssrRenderSlot(_ctx.$slots, "default", {}, null, _push2, _parent2, _scopeId);
|
|
3745
|
+
} else {
|
|
3746
|
+
return [
|
|
3747
|
+
renderSlot(_ctx.$slots, "default")
|
|
3748
|
+
];
|
|
3749
|
+
}
|
|
3750
|
+
}),
|
|
3751
|
+
_: 3
|
|
3752
|
+
}, _parent));
|
|
3753
|
+
};
|
|
3754
|
+
}
|
|
3755
|
+
});
|
|
3756
|
+
const _sfc_setup$2 = _sfc_main$2.setup;
|
|
3757
|
+
_sfc_main$2.setup = (props, ctx) => {
|
|
3758
|
+
const ssrContext = useSSRContext();
|
|
3759
|
+
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/ui/tabs/TabsList.vue");
|
|
3760
|
+
return _sfc_setup$2 ? _sfc_setup$2(props, ctx) : void 0;
|
|
3761
|
+
};
|
|
3762
|
+
const TabsList = Object.assign(_sfc_main$2, { __name: "UiTabsList" });
|
|
3763
|
+
const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
|
3764
|
+
__name: "TabsTrigger",
|
|
3765
|
+
__ssrInlineRender: true,
|
|
3766
|
+
props: {
|
|
3767
|
+
value: {},
|
|
3768
|
+
disabled: { type: Boolean },
|
|
3769
|
+
asChild: { type: Boolean },
|
|
3770
|
+
as: {},
|
|
3771
|
+
class: {}
|
|
3772
|
+
},
|
|
3773
|
+
setup(__props) {
|
|
3774
|
+
const props = __props;
|
|
3775
|
+
const delegatedProps = reactiveOmit(props, "class");
|
|
3776
|
+
const forwardedProps = useForwardProps(delegatedProps);
|
|
3777
|
+
return (_ctx, _push, _parent, _attrs) => {
|
|
3778
|
+
_push(ssrRenderComponent(unref(TabsTrigger$1), mergeProps({
|
|
3779
|
+
"data-slot": "tabs-trigger",
|
|
3780
|
+
class: unref(cn)(
|
|
3781
|
+
"data-[state=active]:bg-background dark:data-[state=active]:text-foreground focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring dark:data-[state=active]:border-input dark:data-[state=active]:bg-input/30 text-foreground dark:text-muted-foreground inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-2 py-1 text-sm font-medium whitespace-nowrap transition-[color,box-shadow] focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:shadow-sm [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
|
|
3782
|
+
props.class
|
|
3783
|
+
)
|
|
3784
|
+
}, unref(forwardedProps), _attrs), {
|
|
3785
|
+
default: withCtx((_, _push2, _parent2, _scopeId) => {
|
|
3786
|
+
if (_push2) {
|
|
3787
|
+
ssrRenderSlot(_ctx.$slots, "default", {}, null, _push2, _parent2, _scopeId);
|
|
3788
|
+
} else {
|
|
3789
|
+
return [
|
|
3790
|
+
renderSlot(_ctx.$slots, "default")
|
|
3791
|
+
];
|
|
3792
|
+
}
|
|
3793
|
+
}),
|
|
3794
|
+
_: 3
|
|
3795
|
+
}, _parent));
|
|
3796
|
+
};
|
|
3797
|
+
}
|
|
3798
|
+
});
|
|
3799
|
+
const _sfc_setup$1 = _sfc_main$1.setup;
|
|
3800
|
+
_sfc_main$1.setup = (props, ctx) => {
|
|
3801
|
+
const ssrContext = useSSRContext();
|
|
3802
|
+
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/ui/tabs/TabsTrigger.vue");
|
|
3803
|
+
return _sfc_setup$1 ? _sfc_setup$1(props, ctx) : void 0;
|
|
3804
|
+
};
|
|
3805
|
+
const TabsTrigger = Object.assign(_sfc_main$1, { __name: "UiTabsTrigger" });
|
|
3806
|
+
const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
3807
|
+
__name: "[prd]",
|
|
3808
|
+
__ssrInlineRender: true,
|
|
3809
|
+
setup(__props) {
|
|
3810
|
+
const route = useRoute();
|
|
3811
|
+
const { selectRepo } = useRepos();
|
|
3812
|
+
const { fetchDocument, fetchTasks, fetchProgress, fetchTaskCommits } = usePrd();
|
|
3813
|
+
const { showError } = useToast();
|
|
3814
|
+
const repoId = computed(() => route.params.repo);
|
|
3815
|
+
const prdSlug = computed(() => route.params.prd);
|
|
3816
|
+
const document = ref(null);
|
|
3817
|
+
const tasksFile = ref(null);
|
|
3818
|
+
const progressFile = ref(null);
|
|
3819
|
+
const isLoading = ref(true);
|
|
3820
|
+
const error = ref(null);
|
|
3821
|
+
const activeTab = ref("document");
|
|
3822
|
+
watch(activeTab, (tab) => {
|
|
3823
|
+
});
|
|
3824
|
+
const selectedTask = ref(null);
|
|
3825
|
+
const detailOpen = ref(false);
|
|
3826
|
+
const taskTitles = computed(() => {
|
|
3827
|
+
const map = /* @__PURE__ */ new Map();
|
|
3828
|
+
if (tasksFile.value?.tasks) {
|
|
3829
|
+
for (const task of tasksFile.value.tasks) {
|
|
3830
|
+
map.set(task.id, task.title);
|
|
3831
|
+
}
|
|
3832
|
+
}
|
|
3833
|
+
return map;
|
|
3834
|
+
});
|
|
3835
|
+
const fileChangeEvent = inject("fileChangeEvent", ref(null));
|
|
3836
|
+
async function loadDocument() {
|
|
3837
|
+
const doc = await fetchDocument(prdSlug.value);
|
|
3838
|
+
if (doc) {
|
|
3839
|
+
document.value = doc;
|
|
3840
|
+
}
|
|
3841
|
+
}
|
|
3842
|
+
async function loadTasksAndProgress() {
|
|
3843
|
+
const [tasks, progress] = await Promise.all([
|
|
3844
|
+
fetchTasks(prdSlug.value),
|
|
3845
|
+
fetchProgress(prdSlug.value)
|
|
3846
|
+
]);
|
|
3847
|
+
tasksFile.value = tasks;
|
|
3848
|
+
progressFile.value = progress;
|
|
3849
|
+
}
|
|
3850
|
+
async function loadData() {
|
|
3851
|
+
isLoading.value = true;
|
|
3852
|
+
error.value = null;
|
|
3853
|
+
try {
|
|
3854
|
+
selectRepo(repoId.value);
|
|
3855
|
+
const [doc, tasks, progress] = await Promise.all([
|
|
3856
|
+
fetchDocument(prdSlug.value),
|
|
3857
|
+
fetchTasks(prdSlug.value),
|
|
3858
|
+
fetchProgress(prdSlug.value)
|
|
3859
|
+
]);
|
|
3860
|
+
if (!doc) {
|
|
3861
|
+
error.value = `PRD "${prdSlug.value}" not found in this repository.`;
|
|
3862
|
+
return;
|
|
3863
|
+
}
|
|
3864
|
+
document.value = doc;
|
|
3865
|
+
tasksFile.value = tasks;
|
|
3866
|
+
progressFile.value = progress;
|
|
3867
|
+
if (!tasks) {
|
|
3868
|
+
activeTab.value = "document";
|
|
3869
|
+
}
|
|
3870
|
+
} catch (err) {
|
|
3871
|
+
const fetchErr = err;
|
|
3872
|
+
if (fetchErr.statusCode === 404) {
|
|
3873
|
+
error.value = `PRD "${prdSlug.value}" not found. Check if the file exists in docs/prd/.`;
|
|
3874
|
+
} else if (fetchErr.statusCode === 500) {
|
|
3875
|
+
error.value = "Server error while loading the PRD. Check the file format.";
|
|
3876
|
+
showError("Server error", fetchErr.data?.message || "Failed to read PRD file");
|
|
3877
|
+
} else {
|
|
3878
|
+
error.value = "Failed to load PRD document. Please try again.";
|
|
3879
|
+
showError("Load failed", "Could not fetch the PRD document");
|
|
3880
|
+
}
|
|
3881
|
+
} finally {
|
|
3882
|
+
isLoading.value = false;
|
|
3883
|
+
}
|
|
3884
|
+
}
|
|
3885
|
+
watch(
|
|
3886
|
+
() => fileChangeEvent.value,
|
|
3887
|
+
(event) => {
|
|
3888
|
+
if (!event) return;
|
|
3889
|
+
if (event.category === "prd") {
|
|
3890
|
+
loadDocument();
|
|
3891
|
+
} else if (event.category === "tasks" || event.category === "progress") {
|
|
3892
|
+
loadTasksAndProgress();
|
|
3893
|
+
}
|
|
3894
|
+
}
|
|
3895
|
+
);
|
|
3896
|
+
watch([repoId, prdSlug], loadData);
|
|
3897
|
+
async function handleTaskClick(task) {
|
|
3898
|
+
selectedTask.value = task;
|
|
3899
|
+
detailOpen.value = true;
|
|
3900
|
+
selectedTaskCommits.value = await fetchTaskCommits(prdSlug.value, task.id);
|
|
3901
|
+
}
|
|
3902
|
+
const selectedTaskCommits = ref([]);
|
|
3903
|
+
return (_ctx, _push, _parent, _attrs) => {
|
|
3904
|
+
const _component_NuxtLink = __nuxt_component_0$4;
|
|
3905
|
+
const _component_PrdMeta = __nuxt_component_1$2;
|
|
3906
|
+
const _component_PrdViewer = __nuxt_component_2;
|
|
3907
|
+
const _component_TasksBoard = __nuxt_component_3;
|
|
3908
|
+
const _component_TasksDetail = __nuxt_component_4;
|
|
3909
|
+
_push(`<div${ssrRenderAttrs(mergeProps({ class: "h-full p-4 md:p-6" }, _attrs))}>`);
|
|
3910
|
+
if (unref(isLoading)) {
|
|
3911
|
+
_push(`<div class="flex h-full items-center justify-center"><div class="flex flex-col items-center gap-4">`);
|
|
3912
|
+
_push(ssrRenderComponent(unref(Loader2), { class: "size-8 animate-spin text-primary" }, null, _parent));
|
|
3913
|
+
_push(`<p class="text-sm text-muted-foreground">Loading PRD...</p></div></div>`);
|
|
3914
|
+
} else if (unref(error)) {
|
|
3915
|
+
_push(`<div class="flex h-full items-center justify-center"><div class="flex max-w-md flex-col items-center gap-4 text-center">`);
|
|
3916
|
+
_push(ssrRenderComponent(unref(AlertCircle), { class: "size-12 text-destructive" }, null, _parent));
|
|
3917
|
+
_push(`<h2 class="text-lg font-semibold">Error Loading PRD</h2><p class="text-sm text-muted-foreground">${ssrInterpolate(unref(error))}</p><div class="flex gap-3">`);
|
|
3918
|
+
_push(ssrRenderComponent(unref(Button), {
|
|
3919
|
+
variant: "outline",
|
|
3920
|
+
size: "sm",
|
|
3921
|
+
onClick: loadData
|
|
3922
|
+
}, {
|
|
3923
|
+
default: withCtx((_, _push2, _parent2, _scopeId) => {
|
|
3924
|
+
if (_push2) {
|
|
3925
|
+
_push2(ssrRenderComponent(unref(RefreshCw), { class: "mr-2 size-4" }, null, _parent2, _scopeId));
|
|
3926
|
+
_push2(` Retry `);
|
|
3927
|
+
} else {
|
|
3928
|
+
return [
|
|
3929
|
+
createVNode(unref(RefreshCw), { class: "mr-2 size-4" }),
|
|
3930
|
+
createTextVNode(" Retry ")
|
|
3931
|
+
];
|
|
3932
|
+
}
|
|
3933
|
+
}),
|
|
3934
|
+
_: 1
|
|
3935
|
+
}, _parent));
|
|
3936
|
+
_push(ssrRenderComponent(_component_NuxtLink, { to: "/" }, {
|
|
3937
|
+
default: withCtx((_, _push2, _parent2, _scopeId) => {
|
|
3938
|
+
if (_push2) {
|
|
3939
|
+
_push2(ssrRenderComponent(unref(Button), {
|
|
3940
|
+
variant: "ghost",
|
|
3941
|
+
size: "sm"
|
|
3942
|
+
}, {
|
|
3943
|
+
default: withCtx((_2, _push3, _parent3, _scopeId2) => {
|
|
3944
|
+
if (_push3) {
|
|
3945
|
+
_push3(` Go back home `);
|
|
3946
|
+
} else {
|
|
3947
|
+
return [
|
|
3948
|
+
createTextVNode(" Go back home ")
|
|
3949
|
+
];
|
|
3950
|
+
}
|
|
3951
|
+
}),
|
|
3952
|
+
_: 1
|
|
3953
|
+
}, _parent2, _scopeId));
|
|
3954
|
+
} else {
|
|
3955
|
+
return [
|
|
3956
|
+
createVNode(unref(Button), {
|
|
3957
|
+
variant: "ghost",
|
|
3958
|
+
size: "sm"
|
|
3959
|
+
}, {
|
|
3960
|
+
default: withCtx(() => [
|
|
3961
|
+
createTextVNode(" Go back home ")
|
|
3962
|
+
]),
|
|
3963
|
+
_: 1
|
|
3964
|
+
})
|
|
3965
|
+
];
|
|
3966
|
+
}
|
|
3967
|
+
}),
|
|
3968
|
+
_: 1
|
|
3969
|
+
}, _parent));
|
|
3970
|
+
_push(`</div></div></div>`);
|
|
3971
|
+
} else if (unref(document)) {
|
|
3972
|
+
_push(`<div class="mx-auto max-w-6xl space-y-6"><div class="space-y-2"><h1 class="text-2xl font-bold tracking-tight">${ssrInterpolate(unref(document).name)}</h1>`);
|
|
3973
|
+
_push(ssrRenderComponent(_component_PrdMeta, {
|
|
3974
|
+
metadata: unref(document).metadata
|
|
3975
|
+
}, null, _parent));
|
|
3976
|
+
_push(`</div>`);
|
|
3977
|
+
_push(ssrRenderComponent(unref(Tabs), {
|
|
3978
|
+
modelValue: unref(activeTab),
|
|
3979
|
+
"onUpdate:modelValue": ($event) => isRef(activeTab) ? activeTab.value = $event : null,
|
|
3980
|
+
class: "w-full"
|
|
3981
|
+
}, {
|
|
3982
|
+
default: withCtx((_, _push2, _parent2, _scopeId) => {
|
|
3983
|
+
if (_push2) {
|
|
3984
|
+
_push2(ssrRenderComponent(unref(TabsList), null, {
|
|
3985
|
+
default: withCtx((_2, _push3, _parent3, _scopeId2) => {
|
|
3986
|
+
if (_push3) {
|
|
3987
|
+
_push3(ssrRenderComponent(unref(TabsTrigger), {
|
|
3988
|
+
value: "document",
|
|
3989
|
+
class: "gap-2"
|
|
3990
|
+
}, {
|
|
3991
|
+
default: withCtx((_3, _push4, _parent4, _scopeId3) => {
|
|
3992
|
+
if (_push4) {
|
|
3993
|
+
_push4(ssrRenderComponent(unref(FileText), { class: "size-4" }, null, _parent4, _scopeId3));
|
|
3994
|
+
_push4(` Document `);
|
|
3995
|
+
} else {
|
|
3996
|
+
return [
|
|
3997
|
+
createVNode(unref(FileText), { class: "size-4" }),
|
|
3998
|
+
createTextVNode(" Document ")
|
|
3999
|
+
];
|
|
4000
|
+
}
|
|
4001
|
+
}),
|
|
4002
|
+
_: 1
|
|
4003
|
+
}, _parent3, _scopeId2));
|
|
4004
|
+
_push3(ssrRenderComponent(unref(TabsTrigger), {
|
|
4005
|
+
value: "board",
|
|
4006
|
+
class: "gap-2",
|
|
4007
|
+
disabled: !unref(tasksFile)
|
|
4008
|
+
}, {
|
|
4009
|
+
default: withCtx((_3, _push4, _parent4, _scopeId3) => {
|
|
4010
|
+
if (_push4) {
|
|
4011
|
+
_push4(ssrRenderComponent(unref(LayoutGrid), { class: "size-4" }, null, _parent4, _scopeId3));
|
|
4012
|
+
_push4(` Task Board `);
|
|
4013
|
+
if (unref(tasksFile)) {
|
|
4014
|
+
_push4(`<span class="text-xs text-muted-foreground"${_scopeId3}> (${ssrInterpolate(unref(tasksFile).tasks.length)}) </span>`);
|
|
4015
|
+
} else {
|
|
4016
|
+
_push4(`<!---->`);
|
|
4017
|
+
}
|
|
4018
|
+
} else {
|
|
4019
|
+
return [
|
|
4020
|
+
createVNode(unref(LayoutGrid), { class: "size-4" }),
|
|
4021
|
+
createTextVNode(" Task Board "),
|
|
4022
|
+
unref(tasksFile) ? (openBlock(), createBlock("span", {
|
|
4023
|
+
key: 0,
|
|
4024
|
+
class: "text-xs text-muted-foreground"
|
|
4025
|
+
}, " (" + toDisplayString(unref(tasksFile).tasks.length) + ") ", 1)) : createCommentVNode("", true)
|
|
4026
|
+
];
|
|
4027
|
+
}
|
|
4028
|
+
}),
|
|
4029
|
+
_: 1
|
|
4030
|
+
}, _parent3, _scopeId2));
|
|
4031
|
+
} else {
|
|
4032
|
+
return [
|
|
4033
|
+
createVNode(unref(TabsTrigger), {
|
|
4034
|
+
value: "document",
|
|
4035
|
+
class: "gap-2"
|
|
4036
|
+
}, {
|
|
4037
|
+
default: withCtx(() => [
|
|
4038
|
+
createVNode(unref(FileText), { class: "size-4" }),
|
|
4039
|
+
createTextVNode(" Document ")
|
|
4040
|
+
]),
|
|
4041
|
+
_: 1
|
|
4042
|
+
}),
|
|
4043
|
+
createVNode(unref(TabsTrigger), {
|
|
4044
|
+
value: "board",
|
|
4045
|
+
class: "gap-2",
|
|
4046
|
+
disabled: !unref(tasksFile)
|
|
4047
|
+
}, {
|
|
4048
|
+
default: withCtx(() => [
|
|
4049
|
+
createVNode(unref(LayoutGrid), { class: "size-4" }),
|
|
4050
|
+
createTextVNode(" Task Board "),
|
|
4051
|
+
unref(tasksFile) ? (openBlock(), createBlock("span", {
|
|
4052
|
+
key: 0,
|
|
4053
|
+
class: "text-xs text-muted-foreground"
|
|
4054
|
+
}, " (" + toDisplayString(unref(tasksFile).tasks.length) + ") ", 1)) : createCommentVNode("", true)
|
|
4055
|
+
]),
|
|
4056
|
+
_: 1
|
|
4057
|
+
}, 8, ["disabled"])
|
|
4058
|
+
];
|
|
4059
|
+
}
|
|
4060
|
+
}),
|
|
4061
|
+
_: 1
|
|
4062
|
+
}, _parent2, _scopeId));
|
|
4063
|
+
_push2(ssrRenderComponent(unref(TabsContent), {
|
|
4064
|
+
value: "document",
|
|
4065
|
+
class: "mt-4"
|
|
4066
|
+
}, {
|
|
4067
|
+
default: withCtx((_2, _push3, _parent3, _scopeId2) => {
|
|
4068
|
+
if (_push3) {
|
|
4069
|
+
_push3(`<div class="rounded-lg border border-border bg-card p-4 md:p-6"${_scopeId2}>`);
|
|
4070
|
+
_push3(ssrRenderComponent(_component_PrdViewer, {
|
|
4071
|
+
content: unref(document).content
|
|
4072
|
+
}, null, _parent3, _scopeId2));
|
|
4073
|
+
_push3(`</div>`);
|
|
4074
|
+
} else {
|
|
4075
|
+
return [
|
|
4076
|
+
createVNode("div", { class: "rounded-lg border border-border bg-card p-4 md:p-6" }, [
|
|
4077
|
+
createVNode(_component_PrdViewer, {
|
|
4078
|
+
content: unref(document).content
|
|
4079
|
+
}, null, 8, ["content"])
|
|
4080
|
+
])
|
|
4081
|
+
];
|
|
4082
|
+
}
|
|
4083
|
+
}),
|
|
4084
|
+
_: 1
|
|
4085
|
+
}, _parent2, _scopeId));
|
|
4086
|
+
_push2(ssrRenderComponent(unref(TabsContent), {
|
|
4087
|
+
value: "board",
|
|
4088
|
+
class: "mt-4"
|
|
4089
|
+
}, {
|
|
4090
|
+
default: withCtx((_2, _push3, _parent3, _scopeId2) => {
|
|
4091
|
+
if (_push3) {
|
|
4092
|
+
if (unref(tasksFile)) {
|
|
4093
|
+
_push3(`<div class="h-[calc(100vh-280px)] min-h-[400px]"${_scopeId2}>`);
|
|
4094
|
+
_push3(ssrRenderComponent(_component_TasksBoard, {
|
|
4095
|
+
tasks: unref(tasksFile).tasks,
|
|
4096
|
+
onTaskClick: handleTaskClick
|
|
4097
|
+
}, null, _parent3, _scopeId2));
|
|
4098
|
+
_push3(`</div>`);
|
|
4099
|
+
} else {
|
|
4100
|
+
_push3(`<div class="py-12 text-center"${_scopeId2}>`);
|
|
4101
|
+
_push3(ssrRenderComponent(unref(LayoutGrid), { class: "mx-auto size-12 text-muted-foreground/50" }, null, _parent3, _scopeId2));
|
|
4102
|
+
_push3(`<p class="mt-4 text-muted-foreground"${_scopeId2}> No tasks found for this PRD </p><p class="mt-1 text-sm text-muted-foreground/70"${_scopeId2}> Task state has not been generated for this PRD yet. </p></div>`);
|
|
4103
|
+
}
|
|
4104
|
+
} else {
|
|
4105
|
+
return [
|
|
4106
|
+
unref(tasksFile) ? (openBlock(), createBlock("div", {
|
|
4107
|
+
key: 0,
|
|
4108
|
+
class: "h-[calc(100vh-280px)] min-h-[400px]"
|
|
4109
|
+
}, [
|
|
4110
|
+
createVNode(_component_TasksBoard, {
|
|
4111
|
+
tasks: unref(tasksFile).tasks,
|
|
4112
|
+
onTaskClick: handleTaskClick
|
|
4113
|
+
}, null, 8, ["tasks"])
|
|
4114
|
+
])) : (openBlock(), createBlock("div", {
|
|
4115
|
+
key: 1,
|
|
4116
|
+
class: "py-12 text-center"
|
|
4117
|
+
}, [
|
|
4118
|
+
createVNode(unref(LayoutGrid), { class: "mx-auto size-12 text-muted-foreground/50" }),
|
|
4119
|
+
createVNode("p", { class: "mt-4 text-muted-foreground" }, " No tasks found for this PRD "),
|
|
4120
|
+
createVNode("p", { class: "mt-1 text-sm text-muted-foreground/70" }, " Task state has not been generated for this PRD yet. ")
|
|
4121
|
+
]))
|
|
4122
|
+
];
|
|
4123
|
+
}
|
|
4124
|
+
}),
|
|
4125
|
+
_: 1
|
|
4126
|
+
}, _parent2, _scopeId));
|
|
4127
|
+
} else {
|
|
4128
|
+
return [
|
|
4129
|
+
createVNode(unref(TabsList), null, {
|
|
4130
|
+
default: withCtx(() => [
|
|
4131
|
+
createVNode(unref(TabsTrigger), {
|
|
4132
|
+
value: "document",
|
|
4133
|
+
class: "gap-2"
|
|
4134
|
+
}, {
|
|
4135
|
+
default: withCtx(() => [
|
|
4136
|
+
createVNode(unref(FileText), { class: "size-4" }),
|
|
4137
|
+
createTextVNode(" Document ")
|
|
4138
|
+
]),
|
|
4139
|
+
_: 1
|
|
4140
|
+
}),
|
|
4141
|
+
createVNode(unref(TabsTrigger), {
|
|
4142
|
+
value: "board",
|
|
4143
|
+
class: "gap-2",
|
|
4144
|
+
disabled: !unref(tasksFile)
|
|
4145
|
+
}, {
|
|
4146
|
+
default: withCtx(() => [
|
|
4147
|
+
createVNode(unref(LayoutGrid), { class: "size-4" }),
|
|
4148
|
+
createTextVNode(" Task Board "),
|
|
4149
|
+
unref(tasksFile) ? (openBlock(), createBlock("span", {
|
|
4150
|
+
key: 0,
|
|
4151
|
+
class: "text-xs text-muted-foreground"
|
|
4152
|
+
}, " (" + toDisplayString(unref(tasksFile).tasks.length) + ") ", 1)) : createCommentVNode("", true)
|
|
4153
|
+
]),
|
|
4154
|
+
_: 1
|
|
4155
|
+
}, 8, ["disabled"])
|
|
4156
|
+
]),
|
|
4157
|
+
_: 1
|
|
4158
|
+
}),
|
|
4159
|
+
createVNode(unref(TabsContent), {
|
|
4160
|
+
value: "document",
|
|
4161
|
+
class: "mt-4"
|
|
4162
|
+
}, {
|
|
4163
|
+
default: withCtx(() => [
|
|
4164
|
+
createVNode("div", { class: "rounded-lg border border-border bg-card p-4 md:p-6" }, [
|
|
4165
|
+
createVNode(_component_PrdViewer, {
|
|
4166
|
+
content: unref(document).content
|
|
4167
|
+
}, null, 8, ["content"])
|
|
4168
|
+
])
|
|
4169
|
+
]),
|
|
4170
|
+
_: 1
|
|
4171
|
+
}),
|
|
4172
|
+
createVNode(unref(TabsContent), {
|
|
4173
|
+
value: "board",
|
|
4174
|
+
class: "mt-4"
|
|
4175
|
+
}, {
|
|
4176
|
+
default: withCtx(() => [
|
|
4177
|
+
unref(tasksFile) ? (openBlock(), createBlock("div", {
|
|
4178
|
+
key: 0,
|
|
4179
|
+
class: "h-[calc(100vh-280px)] min-h-[400px]"
|
|
4180
|
+
}, [
|
|
4181
|
+
createVNode(_component_TasksBoard, {
|
|
4182
|
+
tasks: unref(tasksFile).tasks,
|
|
4183
|
+
onTaskClick: handleTaskClick
|
|
4184
|
+
}, null, 8, ["tasks"])
|
|
4185
|
+
])) : (openBlock(), createBlock("div", {
|
|
4186
|
+
key: 1,
|
|
4187
|
+
class: "py-12 text-center"
|
|
4188
|
+
}, [
|
|
4189
|
+
createVNode(unref(LayoutGrid), { class: "mx-auto size-12 text-muted-foreground/50" }),
|
|
4190
|
+
createVNode("p", { class: "mt-4 text-muted-foreground" }, " No tasks found for this PRD "),
|
|
4191
|
+
createVNode("p", { class: "mt-1 text-sm text-muted-foreground/70" }, " Task state has not been generated for this PRD yet. ")
|
|
4192
|
+
]))
|
|
4193
|
+
]),
|
|
4194
|
+
_: 1
|
|
4195
|
+
})
|
|
4196
|
+
];
|
|
4197
|
+
}
|
|
4198
|
+
}),
|
|
4199
|
+
_: 1
|
|
4200
|
+
}, _parent));
|
|
4201
|
+
_push(`</div>`);
|
|
4202
|
+
} else {
|
|
4203
|
+
_push(`<!---->`);
|
|
4204
|
+
}
|
|
4205
|
+
_push(ssrRenderComponent(_component_TasksDetail, {
|
|
4206
|
+
open: unref(detailOpen),
|
|
4207
|
+
"onUpdate:open": ($event) => isRef(detailOpen) ? detailOpen.value = $event : null,
|
|
4208
|
+
task: unref(selectedTask),
|
|
4209
|
+
"task-titles": unref(taskTitles),
|
|
4210
|
+
commits: unref(selectedTaskCommits),
|
|
4211
|
+
"repo-id": unref(repoId)
|
|
4212
|
+
}, null, _parent));
|
|
4213
|
+
_push(`</div>`);
|
|
4214
|
+
};
|
|
4215
|
+
}
|
|
4216
|
+
});
|
|
4217
|
+
const _sfc_setup = _sfc_main.setup;
|
|
4218
|
+
_sfc_main.setup = (props, ctx) => {
|
|
4219
|
+
const ssrContext = useSSRContext();
|
|
4220
|
+
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("pages/[repo]/[prd].vue");
|
|
4221
|
+
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
|
|
4222
|
+
};
|
|
4223
|
+
|
|
4224
|
+
export { _sfc_main as default };
|
|
4225
|
+
//# sourceMappingURL=_prd_-CnwhMRyf.mjs.map
|